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

pwm: cros-ec: Simplify using devm_pwmchip_add() and dev_err_probe()

Using devm_pwmchip_add() allows to drop pwmchip_remove() from the remove
function which makes this function empty. Then there is no user of
drvdata left and platform_set_drvdata() can be dropped, too.

Further simplify and improve error returning using dev_err_probe().

Link: https://lore.kernel.org/r/20230929161918.2410424-12-u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>

authored by

Uwe Kleine-König and committed by
Thierry Reding
896c4509 9608405b

+8 -25
+8 -25
drivers/pwm/pwm-cros-ec.c
··· 265 265 struct pwm_chip *chip; 266 266 int ret; 267 267 268 - if (!ec) { 269 - dev_err(dev, "no parent EC device\n"); 270 - return -EINVAL; 271 - } 268 + if (!ec) 269 + return dev_err_probe(dev, -EINVAL, "no parent EC device\n"); 272 270 273 271 ec_pwm = devm_kzalloc(dev, sizeof(*ec_pwm), GFP_KERNEL); 274 272 if (!ec_pwm) ··· 287 289 chip->npwm = CROS_EC_PWM_DT_COUNT; 288 290 } else { 289 291 ret = cros_ec_num_pwms(ec_pwm); 290 - if (ret < 0) { 291 - dev_err(dev, "Couldn't find PWMs: %d\n", ret); 292 - return ret; 293 - } 292 + if (ret < 0) 293 + return dev_err_probe(dev, ret, "Couldn't find PWMs\n"); 294 294 chip->npwm = ret; 295 295 } 296 296 ··· 299 303 300 304 dev_dbg(dev, "Probed %u PWMs\n", chip->npwm); 301 305 302 - ret = pwmchip_add(chip); 303 - if (ret < 0) { 304 - dev_err(dev, "cannot register PWM: %d\n", ret); 305 - return ret; 306 - } 306 + ret = devm_pwmchip_add(dev, chip); 307 + if (ret < 0) 308 + return dev_err_probe(dev, ret, "cannot register PWM\n"); 307 309 308 - platform_set_drvdata(pdev, ec_pwm); 309 - 310 - return ret; 311 - } 312 - 313 - static void cros_ec_pwm_remove(struct platform_device *dev) 314 - { 315 - struct cros_ec_pwm_device *ec_pwm = platform_get_drvdata(dev); 316 - struct pwm_chip *chip = &ec_pwm->chip; 317 - 318 - pwmchip_remove(chip); 310 + return 0; 319 311 } 320 312 321 313 #ifdef CONFIG_OF ··· 317 333 318 334 static struct platform_driver cros_ec_pwm_driver = { 319 335 .probe = cros_ec_pwm_probe, 320 - .remove_new = cros_ec_pwm_remove, 321 336 .driver = { 322 337 .name = "cros-ec-pwm", 323 338 .of_match_table = of_match_ptr(cros_ec_pwm_of_match),