Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pinctrl: aw9523: use enable for regulator

devm_regulator_get_enable_optional can be used to simplify the logic
here.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://lore.kernel.org/20241001212724.309320-2-rosenp@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Rosen Penev and committed by
Linus Walleij
38e2d33f d1c7bf9c

+5 -16
+5 -16
drivers/pinctrl/pinctrl-aw9523.c
··· 80 80 struct regmap *regmap; 81 81 struct mutex i2c_lock; 82 82 struct gpio_desc *reset_gpio; 83 - struct regulator *vio_vreg; 83 + int vio_vreg; 84 84 struct pinctrl_dev *pctl; 85 85 struct gpio_chip gpio; 86 86 struct aw9523_irq *irq; ··· 972 972 if (IS_ERR(awi->regmap)) 973 973 return PTR_ERR(awi->regmap); 974 974 975 - awi->vio_vreg = devm_regulator_get_optional(dev, "vio"); 976 - if (IS_ERR(awi->vio_vreg)) { 977 - if (PTR_ERR(awi->vio_vreg) == -EPROBE_DEFER) 978 - return -EPROBE_DEFER; 979 - awi->vio_vreg = NULL; 980 - } else { 981 - ret = regulator_enable(awi->vio_vreg); 982 - if (ret) 983 - return ret; 984 - } 975 + awi->vio_vreg = devm_regulator_get_enable_optional(dev, "vio"); 976 + if (awi->vio_vreg && awi->vio_vreg != -ENODEV) 977 + return awi->vio_vreg; 985 978 986 979 mutex_init(&awi->i2c_lock); 987 980 lockdep_set_subclass(&awi->i2c_lock, i2c_adapter_depth(client->adapter)); ··· 1018 1025 return ret; 1019 1026 1020 1027 err_disable_vregs: 1021 - if (awi->vio_vreg) 1022 - regulator_disable(awi->vio_vreg); 1023 1028 mutex_destroy(&awi->i2c_lock); 1024 1029 return ret; 1025 1030 } ··· 1032 1041 * set the pins to hardware defaults before removing the driver 1033 1042 * to leave it in a clean, safe and predictable state. 1034 1043 */ 1035 - if (awi->vio_vreg) { 1036 - regulator_disable(awi->vio_vreg); 1037 - } else { 1044 + if (awi->vio_vreg == -ENODEV) { 1038 1045 mutex_lock(&awi->i2c_lock); 1039 1046 aw9523_hw_init(awi); 1040 1047 mutex_unlock(&awi->i2c_lock);