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 {

Reply via email to