Date: Mon, 25 Feb 2013 08:04:48 +0000 (UTC) From: Oleksandr Tymoshenko <gonzo@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r247252 - head/sys/arm/ti Message-ID: <201302250804.r1P84mLu085538@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gonzo Date: Mon Feb 25 08:04:47 2013 New Revision: 247252 URL: http://svnweb.freebsd.org/changeset/base/247252 Log: - Fix off-by-one error when returning max pin number - Fix GPIOGET for output pins. Requesting state for output pin is valid operation, get the state from TI_GPIO_DATAOUTX register Modified: head/sys/arm/ti/ti_gpio.c Modified: head/sys/arm/ti/ti_gpio.c ============================================================================== --- head/sys/arm/ti/ti_gpio.c Mon Feb 25 02:41:38 2013 (r247251) +++ head/sys/arm/ti/ti_gpio.c Mon Feb 25 08:04:47 2013 (r247252) @@ -281,7 +281,7 @@ ti_gpio_pin_max(device_t dev, int *maxpi banks++; } - *maxpin = (banks * PINS_PER_BANK); + *maxpin = (banks * PINS_PER_BANK) - 1; TI_GPIO_UNLOCK(sc); @@ -541,13 +541,11 @@ ti_gpio_pin_get(device_t dev, uint32_t p /* Sanity check the pin is not configured as an output */ val = ti_gpio_read_4(sc, bank, TI_GPIO_OE); - if ((val & mask) == mask) { - TI_GPIO_UNLOCK(sc); - return (EINVAL); - } - /* Read the value on the pin */ - *value = (ti_gpio_read_4(sc, bank, TI_GPIO_DATAIN) & mask) ? 1 : 0; + if (val & mask) + *value = (ti_gpio_read_4(sc, bank, TI_GPIO_DATAOUT) & mask) ? 1 : 0; + else + *value = (ti_gpio_read_4(sc, bank, TI_GPIO_DATAIN) & mask) ? 1 : 0; TI_GPIO_UNLOCK(sc); @@ -728,6 +726,7 @@ ti_gpio_attach(device_t dev) /* Finish of the probe call */ device_add_child(dev, "gpioc", device_get_unit(dev)); device_add_child(dev, "gpiobus", device_get_unit(dev)); + return (bus_generic_attach(dev)); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302250804.r1P84mLu085538>