Module Name:    src
Committed By:   macallan
Date:           Thu Sep  1 00:06:43 UTC 2011

Modified Files:
        src/sys/dev/pci: voyager.c

Log Message:
only attach the i2c bus if the gpio pins we're using are actually
configured as gpio
while there remove some accidentially left in debug code


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/pci/voyager.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/pci/voyager.c
diff -u src/sys/dev/pci/voyager.c:1.1 src/sys/dev/pci/voyager.c:1.2
--- src/sys/dev/pci/voyager.c:1.1	Wed Aug 31 16:47:31 2011
+++ src/sys/dev/pci/voyager.c	Thu Sep  1 00:06:42 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: voyager.c,v 1.1 2011/08/31 16:47:31 macallan Exp $	*/
+/*	$NetBSD: voyager.c,v 1.2 2011/09/01 00:06:42 macallan Exp $	*/
 
 /*
  * Copyright (c) 2009 Michael Lorenz
@@ -26,7 +26,7 @@
  */
  
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: voyager.c,v 1.1 2011/08/31 16:47:31 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: voyager.c,v 1.2 2011/09/01 00:06:42 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -95,6 +95,7 @@
 		0
 	}
 };
+#define GPIO_I2C_BITS ((1 << 6) | (1 << 13))
 
 static int
 voyager_match(device_t parent, cfdata_t match, void *aux)
@@ -120,6 +121,7 @@
 	char devinfo[256];
 	struct voyager_attach_args	vaa;
 	struct i2cbus_attach_args iba;
+	uint32_t reg;
 
 	sc->sc_pc = pa->pa_pc;
 	sc->sc_pcitag = pa->pa_tag;
@@ -154,19 +156,22 @@
 	strcpy(vaa.vaa_name, "voyagerfb");
 	config_found_ia(sc->sc_dev, "voyagerbus", &vaa, voyager_print);
 
-	/* Fill in the i2c tag */
-	sc->sc_i2c.ic_cookie = sc;
-	sc->sc_i2c.ic_acquire_bus = voyager_i2c_acquire_bus;
-	sc->sc_i2c.ic_release_bus = voyager_i2c_release_bus;
-	sc->sc_i2c.ic_send_start = voyager_i2c_send_start;
-	sc->sc_i2c.ic_send_stop = voyager_i2c_send_stop;
-	sc->sc_i2c.ic_initiate_xfer = voyager_i2c_initiate_xfer;
-	sc->sc_i2c.ic_read_byte = voyager_i2c_read_byte;
-	sc->sc_i2c.ic_write_byte = voyager_i2c_write_byte;
-	sc->sc_i2c.ic_exec = NULL;
-	mutex_init(&sc->sc_i2c_lock, MUTEX_DEFAULT, IPL_NONE);
-	iba.iba_tag = &sc->sc_i2c;
-	config_found_ia(self, "i2cbus", &iba, iicbus_print);
+	reg = bus_space_read_4(sc->sc_memt, sc->sc_regh, SM502_GPIO0_CONTROL);
+	if ((reg & GPIO_I2C_BITS) == 0) {
+		/* Fill in the i2c tag */
+		sc->sc_i2c.ic_cookie = sc;
+		sc->sc_i2c.ic_acquire_bus = voyager_i2c_acquire_bus;
+		sc->sc_i2c.ic_release_bus = voyager_i2c_release_bus;
+		sc->sc_i2c.ic_send_start = voyager_i2c_send_start;
+		sc->sc_i2c.ic_send_stop = voyager_i2c_send_stop;
+		sc->sc_i2c.ic_initiate_xfer = voyager_i2c_initiate_xfer;
+		sc->sc_i2c.ic_read_byte = voyager_i2c_read_byte;
+		sc->sc_i2c.ic_write_byte = voyager_i2c_write_byte;
+		sc->sc_i2c.ic_exec = NULL;
+		mutex_init(&sc->sc_i2c_lock, MUTEX_DEFAULT, IPL_NONE);
+		iba.iba_tag = &sc->sc_i2c;
+		config_found_ia(self, "i2cbus", &iba, iicbus_print);
+	}
 }
 
 static int
@@ -189,10 +194,8 @@
 	uint32_t reg;
 
 	reg = bus_space_read_4(sc->sc_memt, sc->sc_regh, SM502_GPIO_DATA0);
-	//printf("%s: %08x ->", __func__, reg);
-	reg &= ~((1 << 6) | (1 << 13));
+	reg &= ~GPIO_I2C_BITS;
 	reg |= bits;
-	//printf("%08x\n", reg);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, SM502_GPIO_DATA0, reg);
 }
 
@@ -203,10 +206,8 @@
 	uint32_t reg;
 
 	reg = bus_space_read_4(sc->sc_memt, sc->sc_regh, SM502_GPIO_DIR0);
-	//printf("%s: %08x ->", __func__, reg);
 	reg &= ~(1 << 13);
 	reg |= bits;
-	//printf("%08x\n", reg);
 	bus_space_write_4(sc->sc_memt, sc->sc_regh, SM502_GPIO_DIR0, reg);
 }
 
@@ -217,7 +218,6 @@
 	uint32_t reg;
 
 	reg = bus_space_read_4(sc->sc_memt, sc->sc_regh, SM502_GPIO_DATA0);
-	//printf("%s: %08x\n", __func__, reg);
 	return reg;
 }
 

Reply via email to