[U-Boot] [PATCH] gpio: mxc_gpio: Fix gpio_get_value() when the GPIO is an output
Otavio Salvador
otavio at ossystems.com.br
Mon Sep 30 00:24:28 CEST 2013
On Sun, Sep 29, 2013 at 4:49 PM, Otavio Salvador
<otavio at ossystems.com.br> wrote:
> On Sun, Sep 29, 2013 at 4:45 PM, Benoît Thébaudeau
> <benoit.thebaudeau at advansee.com> wrote:
>> On Sunday, September 29, 2013 9:42:44 PM, Otavio Salvador wrote:
>>> On Sun, Sep 29, 2013 at 4:25 PM, Benoît Thébaudeau
>>> <benoit.thebaudeau at advansee.com> wrote:
>>> ...
>>> > Hence, gpio_get_value() should be left unchanged (using PSR in all cases),
>>> > and
>>> > SION should be set for all GPIOs in the i.MX6 pin definition header files.
>>>
>>> I just does not follow why this preferred against Fabio's proposed
>>> patch to read from DR?
>>
>> Because in case of a level conflict between the GPIO output and some other
>> hardware on the board, one would expect gpio_get_value() to return the actual
>> pin level, and not the level that the GPIO output tries (but possibly fails) to
>> apply on this pin.
>
> Ahh now I see. I agree :-)
I sent the patch to fix this adding the flag to the GPIO pins.
I tested it and it works fine indeed. The patch is awaiting for
approval as it is a little big. The commitlog is below for reference:
mx6: Add IOMUX_CONFIG_SION flag to all GPIO pins
The IOMUX_CONFIG_SION allows for reading PAD value from PSR register.
The following quote from the datasheet:
,----
| ...
| 28.4.2.2 GPIO Write Mode
| The programming sequence for driving output signals should be as follows:
| 1. Configure IOMUX to select GPIO mode (Via IOMUXC), also enable
SION if need
| to read loopback pad value through PSR
| 2. Configure GPIO direction register to output (GPIO_GDIR[GDIR]
set to 1b).
| 3. Write value to data register (GPIO_DR).
| ...
`----
This fixes the gpio_get_value to properly work when a GPIO is set for
output and has no conflicts.
Thanks for Benoît Thébaudeau <benoit.thebaudeau at advansee.com>, Fabio
Estevam <fabio.estevam at freescale.com> and Eric Bénard
<eric at eukrea.com> for helping to properly trace this down.
Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
Again, thanks for the help on this.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
More information about the U-Boot
mailing list