public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] dm: gpio: mxc: fix mxc_gpio_bank_get_value
Date: Sun, 3 Apr 2016 20:09:35 +0200	[thread overview]
Message-ID: <57015C5F.3080209@denx.de> (raw)
In-Reply-To: <20160317014430.GA27643@linux-7smt.suse>

Hi Peng,

On 17/03/2016 02:44, Peng Fan wrote:
> On Wed, Mar 16, 2016 at 09:48:24AM -0300, Fabio Estevam wrote:
>> Hi Peng,
>>
>> On Tue, Mar 15, 2016 at 10:27 PM, Peng Fan <van.freenix@gmail.com> wrote:
>>
>>> If set the SION bit, we need to change the pinmux settings in device tree,
>>> however device tree are introduced from linux kernel. I would not like
>>> to change the pinmux setting value.
>>>
>>> So I choose to use data register but not PSR register.
>>
>> Haven't checked the kernel driver, but just curious: how does the
>> kernel handle this?
> 
> bgc->gc.get = bgpio_get;
> 
> The get method:
> * @get: returns value for signal "offset"; for output signals this
> *      returns either the value actually sensed, or zero
> 
> 138 static int bgpio_get(struct gpio_chip *gc, unsigned int gpio)
> 139 {
> 140         struct bgpio_chip *bgc = to_bgpio_chip(gc);
> 141
> 142         return !!(bgc->read_reg(bgc->reg_dat) & bgc->pin2mask(bgc, gpio));
> 143 }
> 
> The gpio subsystem use reg_data. The reg_data is GPIO_PSR for gpio-mxc.c:
> 
> 450         err = bgpio_init(&port->bgc, &pdev->dev, 4,
> 451                          port->base + GPIO_PSR,
> 452                          port->base + GPIO_DR, NULL,
> 453                          port->base + GPIO_GDIR, NULL, 0);
> 
> So we know that kernel gpio-mxc use GPIO_PSR for reading data, but
> as the comments for get method "for output signals this returns
> either the value actually sensed, or zero", if no SION bit set, reading
> PSR will return 0 with direction output.
> 

There was already a debate in the past about this point. You can take a
look at the commit:

commit 5dafa4543c399d329c7b01df1afa98437861cac0
Author: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
Date:   Mon Aug 20 10:55:41 2012 +0000

    mxc: Make gpio_get_value() use PSR


There were good reasons to switch to PSR (mxc-gpio used DR before) - we
cannot switch any time back to solve a single issue.

I would like to remain compliant with Linux - your change breaks also
boards that rely on this behavior.


> But in U-Boot, the regulator driver needs to get the value when direction is
> configured as output, we can use data register here or configure SION in pinmux.
> But I prefer using data register here.
> 

Best regards,
Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

  reply	other threads:[~2016-04-03 18:09 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-15  5:48 [U-Boot] [PATCH 1/2] dm: gpio: mxc: fix mxc_gpio_bank_get_value Peng Fan
2016-03-15  5:48 ` [U-Boot] [PATCH 2/2] dm: gpio: mxc: implement xlate function Peng Fan
2016-03-16  3:32   ` Simon Glass
2016-04-11  5:28     ` Peng Fan
2016-04-11 14:56       ` Eric Nelson
2016-03-15 12:53 ` [U-Boot] [PATCH 1/2] dm: gpio: mxc: fix mxc_gpio_bank_get_value Fabio Estevam
2016-03-16  1:27   ` Peng Fan
2016-03-16 12:48     ` Fabio Estevam
2016-03-17  1:44       ` Peng Fan
2016-04-03 18:09         ` Stefano Babic [this message]
2016-04-05  5:04           ` Peng Fan
2016-04-09 18:35             ` Simon Glass

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=57015C5F.3080209@denx.de \
    --to=sbabic@denx.de \
    --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