lkml.org 
[lkml]   [2015]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19.y-ckt 086/155] pinctrl: imx25: ensure that a pin with id i is at position i in the info array
    Date
    3.19.8-ckt10 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de>

    commit 9911a2d5e9d14e39692b751929a92cb5a1d9d0e0 upstream.

    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>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/pinctrl/freescale/pinctrl-imx25.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/pinctrl/freescale/pinctrl-imx25.c b/drivers/pinctrl/freescale/pinctrl-imx25.c
    index faf6356..293ed43 100644
    --- a/drivers/pinctrl/freescale/pinctrl-imx25.c
    +++ b/drivers/pinctrl/freescale/pinctrl-imx25.c
    @@ -26,7 +26,8 @@
    #include "pinctrl-imx.h"

    enum imx25_pads {
    - MX25_PAD_RESERVE0 = 1,
    + MX25_PAD_RESERVE0 = 0,
    + MX25_PAD_RESERVE1 = 1,
    MX25_PAD_A10 = 2,
    MX25_PAD_A13 = 3,
    MX25_PAD_A14 = 4,
    @@ -169,6 +170,7 @@ enum imx25_pads {
    /* Pad names for the pinmux subsystem */
    static const struct pinctrl_pin_desc imx25_pinctrl_pads[] = {
    IMX_PINCTRL_PIN(MX25_PAD_RESERVE0),
    + IMX_PINCTRL_PIN(MX25_PAD_RESERVE1),
    IMX_PINCTRL_PIN(MX25_PAD_A10),
    IMX_PINCTRL_PIN(MX25_PAD_A13),
    IMX_PINCTRL_PIN(MX25_PAD_A14),
    --
    1.9.1


    \
     
     \ /
      Last update: 2015-11-13 01:01    [W:4.192 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site