lkml.org 
[lkml]   [2019]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 192/220] pinctrl: gemini: Mask and set properly
    Date
    From: Linus Walleij <linus.walleij@linaro.org>

    [ Upstream commit d17f477c5bc6b4a5dd9f51ae263870da132a8e89 ]

    The code was written under the assumption that the
    regmap_update_bits() would mask the bits in the mask and
    set the bits in the value.

    It missed the points that it will not set bits in the value
    unless these are also masked in the mask. Set value bits
    that are not in the mask will simply be ignored.

    Fixes: 06351d133dea ("pinctrl: add a Gemini SoC pin controller")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pinctrl/pinctrl-gemini.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/pinctrl/pinctrl-gemini.c b/drivers/pinctrl/pinctrl-gemini.c
    index fa7d998e1d5a8..1e484a36ff07e 100644
    --- a/drivers/pinctrl/pinctrl-gemini.c
    +++ b/drivers/pinctrl/pinctrl-gemini.c
    @@ -2184,7 +2184,8 @@ static int gemini_pmx_set_mux(struct pinctrl_dev *pctldev,
    func->name, grp->name);

    regmap_read(pmx->map, GLOBAL_MISC_CTRL, &before);
    - regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL, grp->mask,
    + regmap_update_bits(pmx->map, GLOBAL_MISC_CTRL,
    + grp->mask | grp->value,
    grp->value);
    regmap_read(pmx->map, GLOBAL_MISC_CTRL, &after);

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-11-22 12:05    [W:4.080 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site