Re: [PATCH] pinctrl: sprd: Add PIN_CONFIG_BIAS_DISABLE configuration support

2019-10-16 Thread Linus Walleij
On Wed, Oct 9, 2019 at 6:53 AM Baolin Wang  wrote:

> Add PIN_CONFIG_BIAS_DISABLE configuration support for Spreadtrum pin
> controller.
>
> Signed-off-by: Baolin Wang 

Patch applied.

Yours,
Linus Walleij


[PATCH] pinctrl: sprd: Add PIN_CONFIG_BIAS_DISABLE configuration support

2019-10-08 Thread Baolin Wang
Add PIN_CONFIG_BIAS_DISABLE configuration support for Spreadtrum pin
controller.

Signed-off-by: Baolin Wang 
---
 drivers/pinctrl/sprd/pinctrl-sprd.c |   17 +
 1 file changed, 17 insertions(+)

diff --git a/drivers/pinctrl/sprd/pinctrl-sprd.c 
b/drivers/pinctrl/sprd/pinctrl-sprd.c
index 7b95bf5..8869843 100644
--- a/drivers/pinctrl/sprd/pinctrl-sprd.c
+++ b/drivers/pinctrl/sprd/pinctrl-sprd.c
@@ -484,6 +484,13 @@ static int sprd_pinconf_get(struct pinctrl_dev *pctldev, 
unsigned int pin_id,
   SLEEP_PULL_UP_MASK) << 16;
arg |= (reg >> PULL_UP_SHIFT) & PULL_UP_MASK;
break;
+   case PIN_CONFIG_BIAS_DISABLE:
+   if ((reg & (SLEEP_PULL_DOWN | SLEEP_PULL_UP)) ||
+   (reg & (PULL_DOWN | PULL_UP_4_7K | PULL_UP_20K)))
+   return -EINVAL;
+
+   arg = 1;
+   break;
case PIN_CONFIG_SLEEP_HARDWARE_STATE:
arg = 0;
break;
@@ -674,6 +681,16 @@ static int sprd_pinconf_set(struct pinctrl_dev *pctldev, 
unsigned int pin_id,
shift = PULL_UP_SHIFT;
}
break;
+   case PIN_CONFIG_BIAS_DISABLE:
+   if (is_sleep_config == true) {
+   val = shift = 0;
+   mask = SLEEP_PULL_DOWN | SLEEP_PULL_UP;
+   } else {
+   val = shift = 0;
+   mask = PULL_DOWN | PULL_UP_20K |
+   PULL_UP_4_7K;
+   }
+   break;
case PIN_CONFIG_SLEEP_HARDWARE_STATE:
continue;
default:
-- 
1.7.9.5