svn commit: r234515 - head/sys/mips/atheros

Adrian Chadd adrian at FreeBSD.org
Fri Apr 20 22:44:00 UTC 2012


Author: adrian
Date: Fri Apr 20 22:44:00 2012
New Revision: 234515
URL: http://svn.freebsd.org/changeset/base/234515

Log:
  Allow for a default GPIO pin "high", which is required for some boards
  which tie the USB device enable to a GPIO line.
  
  Submitted by:	Stefan Bethke <stb at lassitu.de>

Modified:
  head/sys/mips/atheros/ar71xx_gpio.c

Modified: head/sys/mips/atheros/ar71xx_gpio.c
==============================================================================
--- head/sys/mips/atheros/ar71xx_gpio.c	Fri Apr 20 22:43:04 2012	(r234514)
+++ head/sys/mips/atheros/ar71xx_gpio.c	Fri Apr 20 22:44:00 2012	(r234515)
@@ -329,7 +329,7 @@ ar71xx_gpio_attach(device_t dev)
 	struct ar71xx_gpio_softc *sc = device_get_softc(dev);
 	int error = 0;
 	int i, j, maxpin;
-	int mask;
+	int mask, pinon;
 	int old = 0;
 
 	KASSERT((device_get_unit(dev) == 0),
@@ -394,6 +394,9 @@ ar71xx_gpio_attach(device_t dev)
 	if (resource_int_value(device_get_name(dev), device_get_unit(dev),
 	    "pinmask", &mask) != 0)
 		mask = 0;
+	if (resource_int_value(device_get_name(dev), device_get_unit(dev),
+	    "pinon", &pinon) != 0)
+		pinon = 0;
 	device_printf(dev, "gpio pinmask=0x%x\n", mask);
 	for (i = 0, j = 0; j < maxpin; j++) {
 		if ((mask & (1 << j)) == 0)
@@ -407,6 +410,11 @@ ar71xx_gpio_attach(device_t dev)
 		i++;
 	}
 	sc->gpio_npins = i;
+	for (i = 0; i < sc->gpio_npins; i++) {
+		j = sc->gpio_pins[i].gp_pin;
+		if ((pinon & (1 << j)) != 0)
+			ar71xx_gpio_pin_set(dev, j, 1);
+	}
 	device_add_child(dev, "gpioc", device_get_unit(dev));
 	device_add_child(dev, "gpiobus", device_get_unit(dev));
 	return (bus_generic_attach(dev));


More information about the svn-src-all mailing list