@@ -995,8 +995,8 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
995
995
void __iomem * conf_reg = byt_gpio_reg (vg , offset , BYT_CONF0_REG );
996
996
void __iomem * val_reg = byt_gpio_reg (vg , offset , BYT_VAL_REG );
997
997
void __iomem * db_reg = byt_gpio_reg (vg , offset , BYT_DEBOUNCE_REG );
998
+ u32 conf , val , db_pulse , debounce ;
998
999
unsigned long flags ;
999
- u32 conf , val , debounce ;
1000
1000
int i , ret = 0 ;
1001
1001
1002
1002
raw_spin_lock_irqsave (& byt_lock , flags );
@@ -1053,50 +1053,46 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
1053
1053
1054
1054
break ;
1055
1055
case PIN_CONFIG_INPUT_DEBOUNCE :
1056
- debounce = readl (db_reg );
1057
-
1058
1056
if (arg )
1059
1057
conf |= BYT_DEBOUNCE_EN ;
1060
1058
else
1061
1059
conf &= ~BYT_DEBOUNCE_EN ;
1062
1060
1063
1061
switch (arg ) {
1064
1062
case 375 :
1065
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1066
- debounce |= BYT_DEBOUNCE_PULSE_375US ;
1063
+ db_pulse = BYT_DEBOUNCE_PULSE_375US ;
1067
1064
break ;
1068
1065
case 750 :
1069
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1070
- debounce |= BYT_DEBOUNCE_PULSE_750US ;
1066
+ db_pulse = BYT_DEBOUNCE_PULSE_750US ;
1071
1067
break ;
1072
1068
case 1500 :
1073
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1074
- debounce |= BYT_DEBOUNCE_PULSE_1500US ;
1069
+ db_pulse = BYT_DEBOUNCE_PULSE_1500US ;
1075
1070
break ;
1076
1071
case 3000 :
1077
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1078
- debounce |= BYT_DEBOUNCE_PULSE_3MS ;
1072
+ db_pulse = BYT_DEBOUNCE_PULSE_3MS ;
1079
1073
break ;
1080
1074
case 6000 :
1081
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1082
- debounce |= BYT_DEBOUNCE_PULSE_6MS ;
1075
+ db_pulse = BYT_DEBOUNCE_PULSE_6MS ;
1083
1076
break ;
1084
1077
case 12000 :
1085
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1086
- debounce |= BYT_DEBOUNCE_PULSE_12MS ;
1078
+ db_pulse = BYT_DEBOUNCE_PULSE_12MS ;
1087
1079
break ;
1088
1080
case 24000 :
1089
- debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;
1090
- debounce |= BYT_DEBOUNCE_PULSE_24MS ;
1081
+ db_pulse = BYT_DEBOUNCE_PULSE_24MS ;
1091
1082
break ;
1092
1083
default :
1093
1084
if (arg )
1094
1085
ret = - EINVAL ;
1095
1086
break ;
1096
1087
}
1097
1088
1098
- if (!ret )
1099
- writel (debounce , db_reg );
1089
+ if (ret )
1090
+ break ;
1091
+
1092
+ debounce = readl (db_reg );
1093
+ debounce = (debounce & ~BYT_DEBOUNCE_PULSE_MASK ) | db_pulse ;
1094
+ writel (debounce , db_reg );
1095
+
1100
1096
break ;
1101
1097
default :
1102
1098
ret = - ENOTSUPP ;
0 commit comments