pinctrl: imx25: ensure that a pin with id i is at position i in the info array
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Wed, 23 Sep 2015 14:35:09 +0000 (16:35 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 2 Oct 2015 11:06:02 +0000 (04:06 -0700)
commit9911a2d5e9d14e39692b751929a92cb5a1d9d0e0
treedfec8153af14bbc9a44bff86d1a18375e9c32714
parentd50a9e1b6de45db883f594cea0ecd1379fd3f669
pinctrl: imx25: ensure that a pin with id i is at position i in the info array

The code in pinctrl-imx.c only works correctly if in the
imx_pinctrl_soc_info passed to imx_pinctrl_probe we have:

info->pins[i].number = i
conf_reg(info->pins[i]) = 4 * i

(which conf_reg(pin) being the offset of the pin's configuration
register).

When the imx25 specific part was introduced in b4a87c9b966f ("pinctrl:
pinctrl-imx: add imx25 pinctrl driver") we had:

info->pins[i].number = i + 1
conf_reg(info->pins[i]) = 4 * i

. Commit 34027ca2bbc6 ("pinctrl: imx25: fix numbering for pins") tried
to fix that but made the situation:

info->pins[i-1].number = i
conf_reg(info->pins[i-1]) = 4 * i

which is hardly better but fixed the error seen back then.

So insert another reserved entry in the array to finally yield:

info->pins[i].number = i
conf_reg(info->pins[i]) = 4 * i

Fixes: 34027ca2bbc6 ("pinctrl: imx25: fix numbering for pins")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/freescale/pinctrl-imx25.c