Module Name: src Committed By: soren Date: Wed Aug 7 19:38:45 UTC 2013
Modified Files: src/sys/dev/i2c: at24cxx.c dbcool_reg.h i2c.c lm75reg.h max6900reg.h pcf8583reg.h sdtemp_reg.h spdmem_i2c.c x1226reg.h Log Message: Allow i2c addr wildcard matching. Use with care! To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/dev/i2c/at24cxx.c cvs rdiff -u -r1.6 -r1.7 src/sys/dev/i2c/dbcool_reg.h cvs rdiff -u -r1.39 -r1.40 src/sys/dev/i2c/i2c.c cvs rdiff -u -r1.3 -r1.4 src/sys/dev/i2c/lm75reg.h src/sys/dev/i2c/x1226reg.h cvs rdiff -u -r1.2 -r1.3 src/sys/dev/i2c/max6900reg.h \ src/sys/dev/i2c/pcf8583reg.h cvs rdiff -u -r1.5 -r1.6 src/sys/dev/i2c/sdtemp_reg.h cvs rdiff -u -r1.7 -r1.8 src/sys/dev/i2c/spdmem_i2c.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/i2c/at24cxx.c diff -u src/sys/dev/i2c/at24cxx.c:1.13 src/sys/dev/i2c/at24cxx.c:1.14 --- src/sys/dev/i2c/at24cxx.c:1.13 Fri Feb 8 15:14:11 2013 +++ src/sys/dev/i2c/at24cxx.c Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: at24cxx.c,v 1.13 2013/02/08 15:14:11 jdc Exp $ */ +/* $NetBSD: at24cxx.c,v 1.14 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.13 2013/02/08 15:14:11 jdc Exp $"); +__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.14 2013/08/07 19:38:45 soren Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -61,7 +61,7 @@ __KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v * larger than 512kb). Be sure to check the datasheet of your EEPROM * because there's much variation between models. */ -#define AT24CXX_ADDRMASK 0x78 +#define AT24CXX_ADDRMASK 0x3f8 #define AT24CXX_ADDR 0x50 #define AT24CXX_WRITE_CYCLE_MS 10 Index: src/sys/dev/i2c/dbcool_reg.h diff -u src/sys/dev/i2c/dbcool_reg.h:1.6 src/sys/dev/i2c/dbcool_reg.h:1.7 --- src/sys/dev/i2c/dbcool_reg.h:1.6 Fri Mar 11 18:38:52 2011 +++ src/sys/dev/i2c/dbcool_reg.h Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: dbcool_reg.h,v 1.6 2011/03/11 18:38:52 pgoyette Exp $ */ +/* $NetBSD: dbcool_reg.h,v 1.7 2013/08/07 19:38:45 soren Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -37,9 +37,9 @@ #define DBCOOLREG_H #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dbcool_reg.h,v 1.6 2011/03/11 18:38:52 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dbcool_reg.h,v 1.7 2013/08/07 19:38:45 soren Exp $"); -#define DBCOOL_ADDRMASK 0x7c +#define DBCOOL_ADDRMASK 0x3fc #define DBCOOL_ADDR 0x2c /* Some chips have multiple addrs */ /* The dBCool chip family register set */ Index: src/sys/dev/i2c/i2c.c diff -u src/sys/dev/i2c/i2c.c:1.39 src/sys/dev/i2c/i2c.c:1.40 --- src/sys/dev/i2c/i2c.c:1.39 Sun Feb 3 16:28:51 2013 +++ src/sys/dev/i2c/i2c.c Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: i2c.c,v 1.39 2013/02/03 16:28:51 jdc Exp $ */ +/* $NetBSD: i2c.c,v 1.40 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i2c.c,v 1.39 2013/02/03 16:28:51 jdc Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i2c.c,v 1.40 2013/08/07 19:38:45 soren Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -110,7 +110,6 @@ iic_search(device_t parent, cfdata_t cf, struct i2c_attach_args ia; ia.ia_tag = sc->sc_tag; - ia.ia_addr = cf->cf_loc[IICCF_ADDR]; ia.ia_size = cf->cf_loc[IICCF_SIZE]; ia.ia_type = sc->sc_type; @@ -118,13 +117,19 @@ iic_search(device_t parent, cfdata_t cf, ia.ia_ncompat = 0; ia.ia_compat = NULL; - if (ia.ia_addr != (i2c_addr_t)-1 && - ia.ia_addr <= I2C_MAX_ADDR && - !sc->sc_devices[ia.ia_addr]) - if (config_match(parent, cf, &ia) > 0) { + for (ia.ia_addr = 0; ia.ia_addr <= I2C_MAX_ADDR; ia.ia_addr++) { + if (sc->sc_devices[ia.ia_addr] != NULL) + continue; + + if (cf->cf_loc[IICCF_ADDR] != -1 && + cf->cf_loc[IICCF_ADDR] != ia.ia_addr) + continue; + + if (config_match(parent, cf, &ia) > 0) sc->sc_devices[ia.ia_addr] = config_attach(parent, cf, &ia, iic_print); } + return 0; } @@ -138,7 +143,7 @@ iic_child_detach(device_t parent, device if (sc->sc_devices[i] == child) { sc->sc_devices[i] = NULL; break; - } + } } static int Index: src/sys/dev/i2c/lm75reg.h diff -u src/sys/dev/i2c/lm75reg.h:1.3 src/sys/dev/i2c/lm75reg.h:1.4 --- src/sys/dev/i2c/lm75reg.h:1.3 Wed May 17 00:10:54 2006 +++ src/sys/dev/i2c/lm75reg.h Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: lm75reg.h,v 1.3 2006/05/17 00:10:54 kiyohara Exp $ */ +/* $NetBSD: lm75reg.h,v 1.4 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -43,9 +43,9 @@ * * 100 1xxx */ -#define LM75_ADDRMASK 0x78 +#define LM75_ADDRMASK 0x3f8 #define LM75_ADDR 0x48 -#define LM77_ADDRMASK 0x7c +#define LM77_ADDRMASK 0x3fc #define LM77_ADDR 0x48 /* Index: src/sys/dev/i2c/x1226reg.h diff -u src/sys/dev/i2c/x1226reg.h:1.3 src/sys/dev/i2c/x1226reg.h:1.4 --- src/sys/dev/i2c/x1226reg.h:1.3 Sun Dec 11 12:21:23 2005 +++ src/sys/dev/i2c/x1226reg.h Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: x1226reg.h,v 1.3 2005/12/11 12:21:23 christos Exp $ */ +/* $NetBSD: x1226reg.h,v 1.4 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2003 Shigeyuki Fukushima. @@ -47,7 +47,7 @@ * * 110 1111 */ -#define X1226_ADDRMASK 0x7f +#define X1226_ADDRMASK 0x3ff #define X1226_ADDR 0x6f /* XICOR X1226 Device Identifier */ Index: src/sys/dev/i2c/max6900reg.h diff -u src/sys/dev/i2c/max6900reg.h:1.2 src/sys/dev/i2c/max6900reg.h:1.3 --- src/sys/dev/i2c/max6900reg.h:1.2 Sun Dec 11 12:21:23 2005 +++ src/sys/dev/i2c/max6900reg.h Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: max6900reg.h,v 1.2 2005/12/11 12:21:23 christos Exp $ */ +/* $NetBSD: max6900reg.h,v 1.3 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -43,7 +43,7 @@ * * 101 0000 */ -#define MAX6900_ADDRMASK 0x7f +#define MAX6900_ADDRMASK 0x3ff #define MAX6900_ADDR 0x50 /* Index: src/sys/dev/i2c/pcf8583reg.h diff -u src/sys/dev/i2c/pcf8583reg.h:1.2 src/sys/dev/i2c/pcf8583reg.h:1.3 --- src/sys/dev/i2c/pcf8583reg.h:1.2 Sun Dec 11 12:21:23 2005 +++ src/sys/dev/i2c/pcf8583reg.h Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: pcf8583reg.h,v 1.2 2005/12/11 12:21:23 christos Exp $ */ +/* $NetBSD: pcf8583reg.h,v 1.3 2013/08/07 19:38:45 soren Exp $ */ /* * Ben Harris, 2000 @@ -20,7 +20,7 @@ * * 101 0000 */ -#define PCF8583_ADDRMASK 0x7f +#define PCF8583_ADDRMASK 0x3ff #define PCF8583_ADDR 0x50 #define PCF8583_REG_CSR 0x00 Index: src/sys/dev/i2c/sdtemp_reg.h diff -u src/sys/dev/i2c/sdtemp_reg.h:1.5 src/sys/dev/i2c/sdtemp_reg.h:1.6 --- src/sys/dev/i2c/sdtemp_reg.h:1.5 Mon Jul 12 03:39:05 2010 +++ src/sys/dev/i2c/sdtemp_reg.h Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: sdtemp_reg.h,v 1.5 2010/07/12 03:39:05 pgoyette Exp $ */ +/* $NetBSD: sdtemp_reg.h,v 1.6 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -36,7 +36,7 @@ * Following definitions derived from JEDEC Standard 21-C section 4.7 * available at http://www.jedec.org/download/search/4_07R15.pdf */ -#define SDTEMP_ADDRMASK 0x78 +#define SDTEMP_ADDRMASK 0x3f8 #define SDTEMP_ADDR 0x18 /* I2C address 001 1xxx */ #define SDTEMP_REG_CAPABILITY 0x00 Index: src/sys/dev/i2c/spdmem_i2c.c diff -u src/sys/dev/i2c/spdmem_i2c.c:1.7 src/sys/dev/i2c/spdmem_i2c.c:1.8 --- src/sys/dev/i2c/spdmem_i2c.c:1.7 Sun Jul 28 06:12:45 2013 +++ src/sys/dev/i2c/spdmem_i2c.c Wed Aug 7 19:38:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: spdmem_i2c.c,v 1.7 2013/07/28 06:12:45 kiyohara Exp $ */ +/* $NetBSD: spdmem_i2c.c,v 1.8 2013/08/07 19:38:45 soren Exp $ */ /* * Copyright (c) 2007 Nicolas Joly @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: spdmem_i2c.c,v 1.7 2013/07/28 06:12:45 kiyohara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: spdmem_i2c.c,v 1.8 2013/08/07 19:38:45 soren Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -49,7 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: spdmem_i2c.c #include <dev/ic/spdmemvar.h> /* Constants for matching i2c bus address */ -#define SPDMEM_I2C_ADDRMASK 0x78 +#define SPDMEM_I2C_ADDRMASK 0x3f8 #define SPDMEM_I2C_ADDR 0x50 struct spdmem_i2c_softc {