From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] gpio: mxc_gpio: Fix gpio_get_value() when the GPIO is an output
Date: Sun, 29 Sep 2013 21:25:24 +0200 (CEST) [thread overview]
Message-ID: <213642590.2248385.1380482724389.JavaMail.zimbra@advansee.com> (raw)
In-Reply-To: <CAOMZO5Dbuj_oWZeyin79MxMP7BJscbQ87wHYoHnMvb7ARVd+Bw@mail.gmail.com>
Hi Fabio,
On Sunday, September 29, 2013 8:58:09 PM, Fabio Estevam wrote:
> Hi Beno?t,
>
> On Sun, Sep 29, 2013 at 3:50 PM, Beno?t Th?baudeau
> <benoit.thebaudeau@advansee.com> wrote:
>
> > Can you test again without any GPIO patch, but with SION set for this pin
> > in the
> > IOMUXC? According to the reference manual, SION not being set in the IOMUXC
> > is
> > the only reason that would prevent PSR from reading the pin level in GPIO
> > output
> > mode.
>
> Yes, from the feedback from a colleague the SION bit plays a role here:
>
> "The RM does not describe this clear. The fact should be:
>
> PSR for input, DR for output.
> PSR can be for output only when SION bit is set (now PSR = DR). "
Yes, that's well explained in the i.MX6Q RM:
"
28.4.2.1 GPIO Read Mode
The programming sequence for reading input signals should be as follows:
1. Configure IOMUX to select GPIO mode (Via IOMUX Controller (IOMUXC) ).
2. Configure GPIO direction register to input (GPIO_GDIR[GDIR] set to 0b).
3. Read value from data register/pad status register.
[...]
NOTE
While the GPIO direction is set to input (GPIO_GDIR = 0), a
read access to GPIO_DR does not return GPIO_DR data.
Instead, it returns the GPIO_PSR data, which is the
corresponding input signal value.
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).
"
So:
- in input mode: DR = PSR = pin,
- in output mode: DR is applied to the pin, and the pin level can be read back
through PSR if SION is set (i.e. PSR = DR unless there is a hardware
conflict).
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.
Best regards,
Beno?t
next prev parent reply other threads:[~2013-09-29 19:25 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-28 17:22 [U-Boot] [PATCH] gpio: mxc_gpio: Fix gpio_get_value() when the GPIO is an output Fabio Estevam
2013-09-28 19:04 ` Otavio Salvador
2013-09-29 13:21 ` Benoît Thébaudeau
2013-09-29 17:09 ` Eric Bénard
2013-09-29 17:48 ` Otavio Salvador
2013-09-29 18:19 ` Eric Bénard
2013-09-29 18:22 ` Fabio Estevam
2013-09-29 18:26 ` Eric Bénard
2013-09-29 18:48 ` Fabio Estevam
2013-09-29 18:50 ` Benoît Thébaudeau
2013-09-29 18:58 ` Fabio Estevam
2013-09-29 19:25 ` Benoît Thébaudeau [this message]
2013-09-29 19:42 ` Otavio Salvador
2013-09-29 19:45 ` Benoît Thébaudeau
2013-09-29 19:49 ` Otavio Salvador
2013-09-29 22:24 ` Otavio Salvador
2013-09-30 1:32 ` Fabio Estevam
2013-09-30 11:08 ` Benoît Thébaudeau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=213642590.2248385.1380482724389.JavaMail.zimbra@advansee.com \
--to=benoit.thebaudeau@advansee.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox