bug of gpio transition in pinmux driver

Haojian Zhuang haojian.zhuang at gmail.com
Thu Nov 24 08:31:37 EST 2011


On Thu, Nov 24, 2011 at 6:16 PM, Linus Walleij <linus.walleij at linaro.org> wrote:
> On Wed, Nov 23, 2011 at 2:13 PM, Haojian Zhuang
> <haojian.zhuang at gmail.com> wrote:
>
>> There's a bug in pinmux driver. We can request gpio via
>> pinmux_request_gpio(@gpio). @gpio is the gpio number.
>>
>> In pinmux_request_gpio():
>>    pin = @gpio - range->base;
>>    pin_request(pin);
>>
>> This pin is the index of pinctrl_pin_desc[]. What's the definition of
>> pinctrl_pin_desc's index? It's the index of PAD, not GPIO. Since the
>> goal of pinmux_request_gpio() is to avoid define too much gpio groups.
>> We need to add the transition between gpio and pad. It's clear that
>> the transition of "pin = @gpio - range->base" can't fit every silicon.
>> Especially, one gpio can be routed to two pads in PXA silicon.
>
> I think this issue is addressed in the patch named
> "pinctrl: add a pin_base for sparse gpio-ranges"
> from Chanho Park.
>
> I have this patch included in linux-next, and the patch named
> "pinctrl: GPIO direction support for muxing" is also
> related.
>
> You can also find this in my "for-next" branch of the
> pinctrl git here:
> http://git.linaro.org/gitweb?p=people/triad/linux-pinctrl.git;a=summary
>

Yes, it's fixed by this patch.

Thanks
Haojian



More information about the linux-arm-kernel mailing list