• Uwe Kleine-König's avatar
    pinctrl: imx25: ensure that a pin with id i is at position i in the info array · 9911a2d5
    Uwe Kleine-König authored
    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 b4a87c9b ("pinctrl:
    pinctrl-imx: add imx25 pinctrl driver") we had:
    
    	info->pins[i].number = i + 1
    	conf_reg(info->pins[i]) = 4 * i
    
    . Commit 34027ca2 ("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: 34027ca2 ("pinctrl: imx25: fix numbering for pins")
    Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    9911a2d5
pinctrl-imx25.c 9.63 KB