mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
pinctrl: meson: amlogic-a4: use nolock get range
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>
This commit is contained in:
committed by
Linus Walleij
parent
cb70379248
commit
afa0c07131
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user