]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pinctrl: meson: amlogic-a4: use nolock get range
authorXianwei Zhao <xianwei.zhao@amlogic.com>
Thu, 11 Jun 2026 07:10:49 +0000 (07:10 +0000)
committerLinus Walleij <linusw@kernel.org>
Thu, 11 Jun 2026 13:02:54 +0000 (15:02 +0200)
Use pinctrl_find_gpio_range_from_pin_nolock() instead of
pinctrl_find_gpio_range_from_pin() when configuring a pin or
setting a GPIO value.

This avoids taking the lock and allows the code to be safely
called from interrupt context.

Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
drivers/pinctrl/meson/pinctrl-amlogic-a4.c

index 88c5408f51cfe98e951437b9d7103f252b97b4de..de10790d7d85a55b4a7d8576be09e26cd3c97d37 100644 (file)
@@ -300,7 +300,7 @@ static int aml_pmx_set_mux(struct pinctrl_dev *pctldev, unsigned int fselector,
        int i;
 
        for (i = 0; i < group->npins; i++) {
-               range =  pinctrl_find_gpio_range_from_pin(pctldev, group->pins[i]);
+               range =  pinctrl_find_gpio_range_from_pin_nolock(pctldev, group->pins[i]);
                aml_pctl_set_function(info, range, group->pins[i], group->func[i]);
        }
 
@@ -499,7 +499,7 @@ static int aml_pinconf_disable_bias(struct aml_pinctrl *info,
                                    unsigned int pin)
 {
        struct pinctrl_gpio_range *range =
-                        pinctrl_find_gpio_range_from_pin(info->pctl, pin);
+                        pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
        struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
        unsigned int reg, bit = 0;
 
@@ -512,7 +512,7 @@ static int aml_pinconf_enable_bias(struct aml_pinctrl *info, unsigned int pin,
                                   bool pull_up)
 {
        struct pinctrl_gpio_range *range =
-                        pinctrl_find_gpio_range_from_pin(info->pctl, pin);
+                        pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
        struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
        unsigned int reg, bit, val = 0;
        int ret;
@@ -534,7 +534,7 @@ static int aml_pinconf_set_drive_strength(struct aml_pinctrl *info,
                                          u16 drive_strength_ua)
 {
        struct pinctrl_gpio_range *range =
-                        pinctrl_find_gpio_range_from_pin(info->pctl, pin);
+                        pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
        struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
        unsigned int reg, bit, ds_val;
 
@@ -569,7 +569,7 @@ static int aml_pinconf_set_gpio_bit(struct aml_pinctrl *info,
                                    bool arg)
 {
        struct pinctrl_gpio_range *range =
-                        pinctrl_find_gpio_range_from_pin(info->pctl, pin);
+                        pinctrl_find_gpio_range_from_pin_nolock(info->pctl, pin);
        struct aml_gpio_bank *bank = gpio_chip_to_bank(range->gc);
        unsigned int reg, bit;