From owner-svn-src-all@FreeBSD.ORG Mon Feb 25 08:04:48 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 82D91AE4; Mon, 25 Feb 2013 08:04:48 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 73B3A31B; Mon, 25 Feb 2013 08:04:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1P84miA085539; Mon, 25 Feb 2013 08:04:48 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1P84mLu085538; Mon, 25 Feb 2013 08:04:48 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201302250804.r1P84mLu085538@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Mon, 25 Feb 2013 08:04:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r247252 - head/sys/arm/ti X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Feb 2013 08:04:48 -0000 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)); }