diff options
Diffstat (limited to 'target/linux/gemini/patches-4.19/0001-pinctrl-gemini-Mask-and-set-properly.patch')
-rw-r--r-- | target/linux/gemini/patches-4.19/0001-pinctrl-gemini-Mask-and-set-properly.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/gemini/patches-4.19/0001-pinctrl-gemini-Mask-and-set-properly.patch b/target/linux/gemini/patches-4.19/0001-pinctrl-gemini-Mask-and-set-properly.patch new file mode 100644 index 0000000000..3cc7bad8b8 --- /dev/null +++ b/target/linux/gemini/patches-4.19/0001-pinctrl-gemini-Mask-and-set-properly.patch @@ -0,0 +1,36 @@ +From f8ac3d3472a8dc99c8647a637611d146d88be8cb Mon Sep 17 00:00:00 2001 +From: Linus Walleij <linus.walleij@linaro.org> +Date: Tue, 9 Oct 2018 10:09:14 +0200 +Subject: [PATCH 01/18] pinctrl: gemini: Mask and set properly + +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> +--- + 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 fa7d998e1d5a..1e484a36ff07 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.19.2 + |