diff options
author | Bruce Chen <bruce.chen@unisoc.com> | 2019-10-16 20:23:39 +0800 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2019-10-16 16:01:24 +0200 |
commit | e543b3f5bb1d7dc39c2628e2932c625670913436 (patch) | |
tree | b4fc97046447708c78ba55b72a4586ce462db861 /drivers/pinctrl/sprd | |
parent | 45892b4c6cb86808dc6ea09209b3a33748b105cd (diff) | |
download | linux-stable-e543b3f5bb1d7dc39c2628e2932c625670913436.tar.gz linux-stable-e543b3f5bb1d7dc39c2628e2932c625670913436.tar.bz2 linux-stable-e543b3f5bb1d7dc39c2628e2932c625670913436.zip |
pinctrl: sprd: Add CM4 sleep mode support
For the new Spreadtrum pin controller, it expands 6bits to describe the
pin sleep mode with adding one CM4_SLEEP mode, which means the pin sleep
related configuration will be loaded automatically by hardware when the
CM4 system goes into deep sleep mode.
Signed-off-by: Bruce Chen <bruce.chen@unisoc.com>
Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Link: https://lore.kernel.org/r/8ae52263b0625c416461821c457e6789b67170b6.1571228451.git.baolin.wang@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/sprd')
-rw-r--r-- | drivers/pinctrl/sprd/pinctrl-sprd.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/pinctrl/sprd/pinctrl-sprd.c b/drivers/pinctrl/sprd/pinctrl-sprd.c index 8869843d34e3..157712ab05a8 100644 --- a/drivers/pinctrl/sprd/pinctrl-sprd.c +++ b/drivers/pinctrl/sprd/pinctrl-sprd.c @@ -41,7 +41,8 @@ #define PUBCP_SLEEP_MODE BIT(14) #define TGLDSP_SLEEP_MODE BIT(15) #define AGDSP_SLEEP_MODE BIT(16) -#define SLEEP_MODE_MASK GENMASK(3, 0) +#define CM4_SLEEP_MODE BIT(17) +#define SLEEP_MODE_MASK GENMASK(5, 0) #define SLEEP_MODE_SHIFT 13 #define SLEEP_INPUT BIT(1) @@ -81,6 +82,7 @@ enum pin_sleep_mode { PUBCP_SLEEP = BIT(1), TGLDSP_SLEEP = BIT(2), AGDSP_SLEEP = BIT(3), + CM4_SLEEP = BIT(4), }; enum pin_func_sel { @@ -616,6 +618,8 @@ static int sprd_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin_id, val |= TGLDSP_SLEEP_MODE; if (arg & AGDSP_SLEEP) val |= AGDSP_SLEEP_MODE; + if (arg & CM4_SLEEP) + val |= CM4_SLEEP_MODE; mask = SLEEP_MODE_MASK; shift = SLEEP_MODE_SHIFT; |