|
@@ -202,10 +202,11 @@ static int msm_config_reg(struct msm_pinctrl *pctrl,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-#define MSM_NO_PULL 0
|
|
|
|
-#define MSM_PULL_DOWN 1
|
|
|
|
-#define MSM_KEEPER 2
|
|
|
|
-#define MSM_PULL_UP 3
|
|
|
|
|
|
+#define MSM_NO_PULL 0
|
|
|
|
+#define MSM_PULL_DOWN 1
|
|
|
|
+#define MSM_KEEPER 2
|
|
|
|
+#define MSM_PULL_UP_NO_KEEPER 2
|
|
|
|
+#define MSM_PULL_UP 3
|
|
|
|
|
|
static unsigned msm_regval_to_drive(u32 val)
|
|
static unsigned msm_regval_to_drive(u32 val)
|
|
{
|
|
{
|
|
@@ -243,10 +244,16 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
|
|
arg = arg == MSM_PULL_DOWN;
|
|
arg = arg == MSM_PULL_DOWN;
|
|
break;
|
|
break;
|
|
case PIN_CONFIG_BIAS_BUS_HOLD:
|
|
case PIN_CONFIG_BIAS_BUS_HOLD:
|
|
|
|
+ if (pctrl->soc->pull_no_keeper)
|
|
|
|
+ return -ENOTSUPP;
|
|
|
|
+
|
|
arg = arg == MSM_KEEPER;
|
|
arg = arg == MSM_KEEPER;
|
|
break;
|
|
break;
|
|
case PIN_CONFIG_BIAS_PULL_UP:
|
|
case PIN_CONFIG_BIAS_PULL_UP:
|
|
- arg = arg == MSM_PULL_UP;
|
|
|
|
|
|
+ if (pctrl->soc->pull_no_keeper)
|
|
|
|
+ arg = arg == MSM_PULL_UP_NO_KEEPER;
|
|
|
|
+ else
|
|
|
|
+ arg = arg == MSM_PULL_UP;
|
|
break;
|
|
break;
|
|
case PIN_CONFIG_DRIVE_STRENGTH:
|
|
case PIN_CONFIG_DRIVE_STRENGTH:
|
|
arg = msm_regval_to_drive(arg);
|
|
arg = msm_regval_to_drive(arg);
|
|
@@ -309,10 +316,16 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
|
|
arg = MSM_PULL_DOWN;
|
|
arg = MSM_PULL_DOWN;
|
|
break;
|
|
break;
|
|
case PIN_CONFIG_BIAS_BUS_HOLD:
|
|
case PIN_CONFIG_BIAS_BUS_HOLD:
|
|
|
|
+ if (pctrl->soc->pull_no_keeper)
|
|
|
|
+ return -ENOTSUPP;
|
|
|
|
+
|
|
arg = MSM_KEEPER;
|
|
arg = MSM_KEEPER;
|
|
break;
|
|
break;
|
|
case PIN_CONFIG_BIAS_PULL_UP:
|
|
case PIN_CONFIG_BIAS_PULL_UP:
|
|
- arg = MSM_PULL_UP;
|
|
|
|
|
|
+ if (pctrl->soc->pull_no_keeper)
|
|
|
|
+ arg = MSM_PULL_UP_NO_KEEPER;
|
|
|
|
+ else
|
|
|
|
+ arg = MSM_PULL_UP;
|
|
break;
|
|
break;
|
|
case PIN_CONFIG_DRIVE_STRENGTH:
|
|
case PIN_CONFIG_DRIVE_STRENGTH:
|
|
/* Check for invalid values */
|
|
/* Check for invalid values */
|