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

pinctrl: aw9523: use devm_mutex_init

Simplifies probe by removing all gotos and removing mutex_destroy from
_remove.

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

authored by

Rosen Penev and committed by
Linus Walleij
7b2a96de be86c553

+13 -23
+13 -23
drivers/pinctrl/pinctrl-aw9523.c
··· 976 976 if (awi->vio_vreg && awi->vio_vreg != -ENODEV) 977 977 return awi->vio_vreg; 978 978 979 - mutex_init(&awi->i2c_lock); 979 + ret = devm_mutex_init(dev, &awi->i2c_lock); 980 + if (ret) 981 + return ret; 982 + 980 983 lockdep_set_subclass(&awi->i2c_lock, i2c_adapter_depth(client->adapter)); 981 984 982 985 pdesc = devm_kzalloc(dev, sizeof(*pdesc), GFP_KERNEL); 983 - if (!pdesc) { 984 - ret = -ENOMEM; 985 - goto err_disable_vregs; 986 - } 986 + if (!pdesc) 987 + return -ENOMEM; 987 988 988 989 ret = aw9523_hw_init(awi); 989 990 if (ret) 990 - goto err_disable_vregs; 991 + return ret; 991 992 992 993 pdesc->name = dev_name(dev); 993 994 pdesc->owner = THIS_MODULE; ··· 1000 999 1001 1000 ret = aw9523_init_gpiochip(awi, pdesc->npins); 1002 1001 if (ret) 1003 - goto err_disable_vregs; 1002 + return ret; 1004 1003 1005 1004 if (client->irq) { 1006 1005 ret = aw9523_init_irq(awi, client->irq); 1007 1006 if (ret) 1008 - goto err_disable_vregs; 1007 + return ret; 1009 1008 } 1010 1009 1011 1010 awi->pctl = devm_pinctrl_register(dev, pdesc, awi); 1012 - if (IS_ERR(awi->pctl)) { 1013 - ret = dev_err_probe(dev, PTR_ERR(awi->pctl), "Cannot register pinctrl"); 1014 - goto err_disable_vregs; 1015 - } 1011 + if (IS_ERR(awi->pctl)) 1012 + return dev_err_probe(dev, PTR_ERR(awi->pctl), 1013 + "Cannot register pinctrl"); 1016 1014 1017 - ret = devm_gpiochip_add_data(dev, &awi->gpio, awi); 1018 - if (ret) 1019 - goto err_disable_vregs; 1020 - 1021 - return ret; 1022 - 1023 - err_disable_vregs: 1024 - mutex_destroy(&awi->i2c_lock); 1025 - return ret; 1015 + return devm_gpiochip_add_data(dev, &awi->gpio, awi); 1026 1016 } 1027 1017 1028 1018 static void aw9523_remove(struct i2c_client *client) ··· 1031 1039 aw9523_hw_init(awi); 1032 1040 mutex_unlock(&awi->i2c_lock); 1033 1041 } 1034 - 1035 - mutex_destroy(&awi->i2c_lock); 1036 1042 } 1037 1043 1038 1044 static const struct i2c_device_id aw9523_i2c_id_table[] = {