diff options
author | Amit Pundir <amit.pundir@linaro.org> | 2017-08-01 10:52:52 +0530 |
---|---|---|
committer | Amit Pundir <amit.pundir@linaro.org> | 2017-08-01 11:26:49 +0530 |
commit | b43282fc74615c71e3a58fa92a4fe62f5374acd6 (patch) | |
tree | 54c3e0f148beedd088ddb8e40268cf1c07b3bc08 /drivers/pinctrl/freescale/pinctrl-mxs.c | |
parent | f83fb557207250de93aa8882df19acfc7fe7ace7 (diff) | |
parent | 37f3f1536a86154b0c1cc2586fa6c513e79a440e (diff) |
Merge branch 'linux-linaro-lsk-v3.18' into linux-linaro-lsk-v3.18-androidlsk-v3.18-17.08-android
Conflicts:
arch/arm64/kernel/setup.c
AOSP Change-Id: I98624593273ae4c90ae299f063d26f35a39a0a31
(upstream commit 12d11817eaaf "arm64: Move /proc/cpuinfo handling code")
moved /proc/cpuinfo handling code from
arch/arm64/kernel/{setup.c to cpuinfo.c}.
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Diffstat (limited to 'drivers/pinctrl/freescale/pinctrl-mxs.c')
-rw-r--r-- | drivers/pinctrl/freescale/pinctrl-mxs.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/pinctrl/freescale/pinctrl-mxs.c b/drivers/pinctrl/freescale/pinctrl-mxs.c index f98c6bb0f769..d961f1699c3a 100644 --- a/drivers/pinctrl/freescale/pinctrl-mxs.c +++ b/drivers/pinctrl/freescale/pinctrl-mxs.c @@ -195,6 +195,16 @@ static int mxs_pinctrl_get_func_groups(struct pinctrl_dev *pctldev, return 0; } +static void mxs_pinctrl_rmwl(u32 value, u32 mask, u8 shift, void __iomem *reg) +{ + u32 tmp; + + tmp = readl(reg); + tmp &= ~(mask << shift); + tmp |= value << shift; + writel(tmp, reg); +} + static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, unsigned group) { @@ -212,8 +222,7 @@ static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, reg += bank * 0x20 + pin / 16 * 0x10; shift = pin % 16 * 2; - writel(0x3 << shift, reg + CLR); - writel(g->muxsel[i] << shift, reg + SET); + mxs_pinctrl_rmwl(g->muxsel[i], 0x3, shift, reg); } return 0; @@ -280,8 +289,7 @@ static int mxs_pinconf_group_set(struct pinctrl_dev *pctldev, /* mA */ if (config & MA_PRESENT) { shift = pin % 8 * 4; - writel(0x3 << shift, reg + CLR); - writel(ma << shift, reg + SET); + mxs_pinctrl_rmwl(ma, 0x3, shift, reg); } /* vol */ |