pinctrl: mediatek: fix mode encoding
authorMatthias Brugger <mbrugger@suse.com>
Tue, 8 Jun 2021 15:06:56 +0000 (17:06 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 9 Jun 2021 13:30:45 +0000 (15:30 +0200)
Pin modes are encoded in the SoC data structure. Use that value to set
IES SMT.

Cc: Fabien Parent <fparent@baylibre.com>
Cc: Sean Wang <sean.wang@kernel.org>
Cc: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Cc: linux-mediatek@lists.infradead.org
Fixes: 696beef77521 ("pinctrl: mediatek: move bit assignment")
Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
Link: https://lore.kernel.org/r/20210608150656.29007-1-matthias.bgg@kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/mediatek/pinctrl-mtk-common.c

index 525b1aa..5f7c421 100644 (file)
@@ -134,13 +134,13 @@ static int mtk_pconf_set_ies_smt(struct mtk_pinctrl *pctl, unsigned pin,
                        pin, pctl->devdata->port_align, value, arg);
        }
 
-       bit = BIT(pin & 0xf);
-
        if (arg == PIN_CONFIG_INPUT_ENABLE)
                offset = pctl->devdata->ies_offset;
        else
                offset = pctl->devdata->smt_offset;
 
+       bit = BIT(offset & pctl->devdata->mode_mask);
+
        if (value)
                reg_addr = SET_ADDR(mtk_get_port(pctl, pin) + offset, pctl);
        else