Skip to content

Commit 3bd13ae

Browse files
author
Bartosz Golaszewski
committed
gpio: menz127: simplify error path and remove remove()
Use devres to drop all goto labels from probe() and remove the driver remove() callback. While at it: drop the unnecessary dev_info() message as not only should the driver be quiet when successful, the message is also wrong: the device was probed at this point, the driver had been registered earlier. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20241014092227.78886-1-brgl@bgdev.pl Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
1 parent 9a94580 commit 3bd13ae

File tree

1 file changed

+24
-34
lines changed

1 file changed

+24
-34
lines changed

drivers/gpio/gpio-menz127.c

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@ static int men_z127_set_config(struct gpio_chip *gc, unsigned offset,
127127
return -ENOTSUPP;
128128
}
129129

130+
static void men_z127_release_mem(void *data)
131+
{
132+
struct resource *res = data;
133+
134+
mcb_release_mem(res);
135+
}
136+
130137
static int men_z127_probe(struct mcb_device *mdev,
131138
const struct mcb_device_id *id)
132139
{
@@ -140,17 +147,19 @@ static int men_z127_probe(struct mcb_device *mdev,
140147
return -ENOMEM;
141148

142149
men_z127_gpio->mem = mcb_request_mem(mdev, dev_name(dev));
143-
if (IS_ERR(men_z127_gpio->mem)) {
144-
dev_err(dev, "failed to request device memory");
145-
return PTR_ERR(men_z127_gpio->mem);
146-
}
150+
if (IS_ERR(men_z127_gpio->mem))
151+
return dev_err_probe(dev, PTR_ERR(men_z127_gpio->mem),
152+
"failed to request device memory");
147153

148-
men_z127_gpio->reg_base = ioremap(men_z127_gpio->mem->start,
149-
resource_size(men_z127_gpio->mem));
150-
if (men_z127_gpio->reg_base == NULL) {
151-
ret = -ENXIO;
152-
goto err_release;
153-
}
154+
ret = devm_add_action_or_reset(dev, men_z127_release_mem,
155+
men_z127_gpio->mem);
156+
if (ret)
157+
return ret;
158+
159+
men_z127_gpio->reg_base = devm_ioremap(dev, men_z127_gpio->mem->start,
160+
resource_size(men_z127_gpio->mem));
161+
if (men_z127_gpio->reg_base == NULL)
162+
return -ENXIO;
154163

155164
mcb_set_drvdata(mdev, men_z127_gpio);
156165

@@ -161,34 +170,16 @@ static int men_z127_probe(struct mcb_device *mdev,
161170
men_z127_gpio->reg_base + MEN_Z127_GPIODR,
162171
NULL, 0);
163172
if (ret)
164-
goto err_unmap;
173+
return ret;
165174

166175
men_z127_gpio->gc.set_config = men_z127_set_config;
167176

168-
ret = gpiochip_add_data(&men_z127_gpio->gc, men_z127_gpio);
169-
if (ret) {
170-
dev_err(dev, "failed to register MEN 16Z127 GPIO controller");
171-
goto err_unmap;
172-
}
173-
174-
dev_info(dev, "MEN 16Z127 GPIO driver registered");
177+
ret = devm_gpiochip_add_data(dev, &men_z127_gpio->gc, men_z127_gpio);
178+
if (ret)
179+
return dev_err_probe(dev, ret,
180+
"failed to register MEN 16Z127 GPIO controller");
175181

176182
return 0;
177-
178-
err_unmap:
179-
iounmap(men_z127_gpio->reg_base);
180-
err_release:
181-
mcb_release_mem(men_z127_gpio->mem);
182-
return ret;
183-
}
184-
185-
static void men_z127_remove(struct mcb_device *mdev)
186-
{
187-
struct men_z127_gpio *men_z127_gpio = mcb_get_drvdata(mdev);
188-
189-
gpiochip_remove(&men_z127_gpio->gc);
190-
iounmap(men_z127_gpio->reg_base);
191-
mcb_release_mem(men_z127_gpio->mem);
192183
}
193184

194185
static const struct mcb_device_id men_z127_ids[] = {
@@ -202,7 +193,6 @@ static struct mcb_driver men_z127_driver = {
202193
.name = "z127-gpio",
203194
},
204195
.probe = men_z127_probe,
205-
.remove = men_z127_remove,
206196
.id_table = men_z127_ids,
207197
};
208198
module_mcb_driver(men_z127_driver);

0 commit comments

Comments
 (0)