]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
pinctrl: intel: Reduce scope of the lock
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 12 Jun 2020 14:49:55 +0000 (17:49 +0300)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 22 Jun 2020 07:58:51 +0000 (10:58 +0300)
In some cases lock covers unneeded calls and operations.
Reduce scope of the lock in such cases.

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

index 9df5a0c0d416f769780005178978cdd913339eda..d0b658ba213679de12b1f8ba67d26c5a94f5eae6 100644 (file)
@@ -460,6 +460,8 @@ static int intel_gpio_request_enable(struct pinctrl_dev *pctldev,
        void __iomem *padcfg0;
        unsigned long flags;
 
+       padcfg0 = intel_get_padcfg(pctrl, pin, PADCFG0);
+
        raw_spin_lock_irqsave(&pctrl->lock, flags);
 
        if (!intel_pad_owned_by_host(pctrl, pin)) {
@@ -472,8 +474,6 @@ static int intel_gpio_request_enable(struct pinctrl_dev *pctldev,
                return 0;
        }
 
-       padcfg0 = intel_get_padcfg(pctrl, pin, PADCFG0);
-
        /*
         * If pin is already configured in GPIO mode, we assume that
         * firmware provides correct settings. In such case we avoid
@@ -503,11 +503,10 @@ static int intel_gpio_set_direction(struct pinctrl_dev *pctldev,
        void __iomem *padcfg0;
        unsigned long flags;
 
-       raw_spin_lock_irqsave(&pctrl->lock, flags);
-
        padcfg0 = intel_get_padcfg(pctrl, pin, PADCFG0);
-       __intel_gpio_set_direction(padcfg0, input);
 
+       raw_spin_lock_irqsave(&pctrl->lock, flags);
+       __intel_gpio_set_direction(padcfg0, input);
        raw_spin_unlock_irqrestore(&pctrl->lock, flags);
 
        return 0;
@@ -622,10 +621,11 @@ static int intel_config_set_pull(struct intel_pinctrl *pctrl, unsigned int pin,
        int ret = 0;
        u32 value;
 
-       raw_spin_lock_irqsave(&pctrl->lock, flags);
-
        community = intel_get_community(pctrl, pin);
        padcfg1 = intel_get_padcfg(pctrl, pin, PADCFG1);
+
+       raw_spin_lock_irqsave(&pctrl->lock, flags);
+
        value = readl(padcfg1);
 
        switch (param) {