From: mikedunn@newsguy.com (Mike Dunn)
To: linux-arm-kernel@lists.infradead.org
Subject: pxa27x and pinctrl-single
Date: Thu, 06 Jun 2013 17:48:41 -0700 [thread overview]
Message-ID: <51B12DE9.9040908@newsguy.com> (raw)
In-Reply-To: <CAD6h2NSRCti57NZtw0wzE8Th65_3Y8Dkz5zGsbnA2SUPYS263Q@mail.gmail.com>
On 06/06/2013 04:58 PM, Haojian Zhuang wrote:
> On 7 June 2013 01:33, Mike Dunn <mikedunn@newsguy.com> wrote:
>>
[...]
>>
>> Yes, but currently pinctrl-single only supports writing one register for a given
>> pin (with multiple pins sharing a register if bit-per-mux==true). On pxa27x, a
>> pin's alt function is determined by the values written to both the GAFRx and the
>> GPDRx registers, so I think that pinctrl-single may need to allow a device tree
>> to specify multiple reg/value/mask sets for any one pin. I don't have a
>> pxa3xx/mmp developer's manual handy, but from the code it appears that on these
>> arches the direction register is irrelevant to the mux setting.
>>
>
> No, it's not need to access both GAFRx & GPDRx. Let's focus on PXA27x first.
>
> GPIO ?x? Alternate Function Select Bits (where x = 112 through 120)
> A bit-pair in this register determines the corresponding GPIO pin?s
> functionality as one of the alternate functions that is mapped to it or as a
> generic GPIO pin.
>
> 0b00 = The corresponding GPIO pin (GPIO<x>) is used as a general-
> purpose I/O.
> 0b01 = The corresponding GPIO pin (GPIO<x>) is used for its alternate
> function 1.
> 0b10 = The corresponding GPIO pin (GPIO<x>) is used for its alternate
> function 2.
> 0b11 = The corresponding GPIO pin (GPIO<x>) is used for its alternate
> function 3.
>
> We can see that GAFRx configures the pinmux. That's all. We can use
> pinctrl-single
> driver to cover this.
But on the pxa27x there are usually *two* meanings for any one of the 3 alt
functions, depending on the direction. As a random example... gpio28 alt fn
0b01 is AC97_BITCLK if the direction is input, but is I2S_BITCLK if the
direction is output (from PXA27x Developer's Manual, Table 24-2).
>
> I know that you're also talking the implementation in gpio-pxa driver.
> __gpio_is_occupied() checks both GAFRx & GPDRx. Because this GPIO
> pin should be configured as GPIO input. Actually we could also discard the
> checking.
>
> So there's no relationship between GAFRx and GPDRx.
But I am thinking on pxa27x there is... see my example above. Perhaps this is
not true for the later Marvell arches and you are missing this point? Or else I
am stating the obvious to you and I am missing your point. In either case,
thanks for your patience.
Thanks,
Mike
WARNING: multiple messages have this Message-ID (diff)
From: Mike Dunn <mikedunn@newsguy.com>
To: Haojian Zhuang <haojian.zhuang@linaro.org>
Cc: "Manjunathappa, Prakash" <prakash.pm@ti.com>,
"devicetree-discuss@lists.ozlabs.org"
<devicetree-discuss@lists.ozlabs.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: pxa27x and pinctrl-single
Date: Thu, 06 Jun 2013 17:48:41 -0700 [thread overview]
Message-ID: <51B12DE9.9040908@newsguy.com> (raw)
In-Reply-To: <CAD6h2NSRCti57NZtw0wzE8Th65_3Y8Dkz5zGsbnA2SUPYS263Q@mail.gmail.com>
On 06/06/2013 04:58 PM, Haojian Zhuang wrote:
> On 7 June 2013 01:33, Mike Dunn <mikedunn@newsguy.com> wrote:
>>
[...]
>>
>> Yes, but currently pinctrl-single only supports writing one register for a given
>> pin (with multiple pins sharing a register if bit-per-mux==true). On pxa27x, a
>> pin's alt function is determined by the values written to both the GAFRx and the
>> GPDRx registers, so I think that pinctrl-single may need to allow a device tree
>> to specify multiple reg/value/mask sets for any one pin. I don't have a
>> pxa3xx/mmp developer's manual handy, but from the code it appears that on these
>> arches the direction register is irrelevant to the mux setting.
>>
>
> No, it's not need to access both GAFRx & GPDRx. Let's focus on PXA27x first.
>
> GPIO ‘x’ Alternate Function Select Bits (where x = 112 through 120)
> A bit-pair in this register determines the corresponding GPIO pin’s
> functionality as one of the alternate functions that is mapped to it or as a
> generic GPIO pin.
>
> 0b00 = The corresponding GPIO pin (GPIO<x>) is used as a general-
> purpose I/O.
> 0b01 = The corresponding GPIO pin (GPIO<x>) is used for its alternate
> function 1.
> 0b10 = The corresponding GPIO pin (GPIO<x>) is used for its alternate
> function 2.
> 0b11 = The corresponding GPIO pin (GPIO<x>) is used for its alternate
> function 3.
>
> We can see that GAFRx configures the pinmux. That's all. We can use
> pinctrl-single
> driver to cover this.
But on the pxa27x there are usually *two* meanings for any one of the 3 alt
functions, depending on the direction. As a random example... gpio28 alt fn
0b01 is AC97_BITCLK if the direction is input, but is I2S_BITCLK if the
direction is output (from PXA27x Developer's Manual, Table 24-2).
>
> I know that you're also talking the implementation in gpio-pxa driver.
> __gpio_is_occupied() checks both GAFRx & GPDRx. Because this GPIO
> pin should be configured as GPIO input. Actually we could also discard the
> checking.
>
> So there's no relationship between GAFRx and GPDRx.
But I am thinking on pxa27x there is... see my example above. Perhaps this is
not true for the later Marvell arches and you are missing this point? Or else I
am stating the obvious to you and I am missing your point. In either case,
thanks for your patience.
Thanks,
Mike
next prev parent reply other threads:[~2013-06-07 0:48 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 17:23 pxa27x and pinctrl-single Mike Dunn
2013-06-05 17:23 ` Mike Dunn
2013-06-06 0:43 ` Haojian Zhuang
2013-06-06 0:43 ` Haojian Zhuang
2013-06-06 17:33 ` Mike Dunn
2013-06-06 17:33 ` Mike Dunn
2013-06-06 23:58 ` Haojian Zhuang
2013-06-06 23:58 ` Haojian Zhuang
2013-06-07 0:48 ` Mike Dunn [this message]
2013-06-07 0:48 ` Mike Dunn
2013-06-07 1:21 ` Haojian Zhuang
2013-06-07 1:21 ` Haojian Zhuang
2013-06-07 14:50 ` Mike Dunn
2013-06-07 14:50 ` Mike Dunn
2013-06-07 15:16 ` Haojian Zhuang
2013-06-07 15:16 ` Haojian Zhuang
2013-06-07 17:41 ` Mike Dunn
2013-06-07 17:41 ` Mike Dunn
2013-06-08 1:20 ` Haojian Zhuang
2013-06-08 1:20 ` Haojian Zhuang
2013-06-09 18:05 ` Mike Dunn
2013-06-09 18:05 ` Mike Dunn
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=51B12DE9.9040908@newsguy.com \
--to=mikedunn@newsguy.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.