pinctrl: baytrail: consolidate common mask operation
authorRaag Jadav <raag.jadav@intel.com>
Tue, 8 Aug 2023 08:49:01 +0000 (14:19 +0530)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 15 Aug 2023 13:06:26 +0000 (16:06 +0300)
Consolidate common mask operation outside of switch cases and
limit IO operations to positive cases.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/pinctrl/intel/pinctrl-baytrail.c

index 27aef62..02ab5fd 100644 (file)
@@ -995,8 +995,8 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
        void __iomem *conf_reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG);
        void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG);
        void __iomem *db_reg = byt_gpio_reg(vg, offset, BYT_DEBOUNCE_REG);
+       u32 conf, val, db_pulse, debounce;
        unsigned long flags;
-       u32 conf, val, debounce;
        int i, ret = 0;
 
        raw_spin_lock_irqsave(&byt_lock, flags);
@@ -1053,8 +1053,6 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
 
                        break;
                case PIN_CONFIG_INPUT_DEBOUNCE:
-                       debounce = readl(db_reg);
-
                        if (arg)
                                conf |= BYT_DEBOUNCE_EN;
                        else
@@ -1062,32 +1060,25 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
 
                        switch (arg) {
                        case 375:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_375US;
+                               db_pulse = BYT_DEBOUNCE_PULSE_375US;
                                break;
                        case 750:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_750US;
+                               db_pulse = BYT_DEBOUNCE_PULSE_750US;
                                break;
                        case 1500:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_1500US;
+                               db_pulse = BYT_DEBOUNCE_PULSE_1500US;
                                break;
                        case 3000:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_3MS;
+                               db_pulse = BYT_DEBOUNCE_PULSE_3MS;
                                break;
                        case 6000:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_6MS;
+                               db_pulse = BYT_DEBOUNCE_PULSE_6MS;
                                break;
                        case 12000:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_12MS;
+                               db_pulse = BYT_DEBOUNCE_PULSE_12MS;
                                break;
                        case 24000:
-                               debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
-                               debounce |= BYT_DEBOUNCE_PULSE_24MS;
+                               db_pulse = BYT_DEBOUNCE_PULSE_24MS;
                                break;
                        default:
                                if (arg)
@@ -1095,8 +1086,13 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
                                break;
                        }
 
-                       if (!ret)
-                               writel(debounce, db_reg);
+                       if (ret)
+                               break;
+
+                       debounce = readl(db_reg);
+                       debounce = (debounce & ~BYT_DEBOUNCE_PULSE_MASK) | db_pulse;
+                       writel(debounce, db_reg);
+
                        break;
                default:
                        ret = -ENOTSUPP;