Module Name:    src
Committed By:   mbalmer
Date:           Sat Jul 23 09:03:38 UTC 2011

Modified Files:
        src/sys/dev/gpio: gpioiic.c

Log Message:
When reading the bits from the I2C bus, also report SCL.  Fixes PR43275.
Fix originally from Maxim Weber, thanks.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/gpio/gpioiic.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/gpio/gpioiic.c
diff -u src/sys/dev/gpio/gpioiic.c:1.2 src/sys/dev/gpio/gpioiic.c:1.3
--- src/sys/dev/gpio/gpioiic.c:1.2	Sun Dec  6 22:33:44 2009
+++ src/sys/dev/gpio/gpioiic.c	Sat Jul 23 09:03:38 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: gpioiic.c,v 1.2 2009/12/06 22:33:44 dyoung Exp $ */
+/* $NetBSD: gpioiic.c,v 1.3 2011/07/23 09:03:38 mbalmer Exp $ */
 /*	$OpenBSD: gpioiic.c,v 1.8 2008/11/24 12:12:12 mbalmer Exp $	*/
 
 /*
@@ -18,7 +18,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gpioiic.c,v 1.2 2009/12/06 22:33:44 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gpioiic.c,v 1.3 2011/07/23 09:03:38 mbalmer Exp $");
 
 /*
  * I2C bus bit-banging through GPIO pins.
@@ -295,7 +295,14 @@
 gpioiic_bb_read_bits(void *cookie)
 {
 	struct gpioiic_softc *sc = cookie;
+	u_int32_t bits = 0;
 
-	return gpio_pin_read(sc->sc_gpio, &sc->sc_map,
-	    GPIOIIC_PIN_SDA) == GPIO_PIN_HIGH ? GPIOIIC_SDA : 0;
+	if (gpio_pin_read(sc->sc_gpio, &sc->sc_map,
+	    GPIOIIC_PIN_SDA) == GPIO_PIN_HIGH)
+		bits |= GPIOIIC_SDA;
+	if (gpio_pin_read(sc->sc_gpio, &sc->sc_map,
+	    GPIOIIC_PIN_SCL) == GPIO_PIN_HIGH)
+		bits |= GPIOIIC_SCL;
+
+	return bits;
 }

Reply via email to