Hello Chen, I was tempted to apply this patch while reading throug it until nearly the end ... On Wed, Feb 05, 2025 at 03:01:13PM +0800, Chen Wang wrote: > [...] > +static int pwm_sg2042_probe(struct platform_device *pdev) > +{ > [...] > + rst = devm_reset_control_get_optional_shared_deasserted(dev, NULL); > + if (IS_ERR(rst)) > + return dev_err_probe(dev, PTR_ERR(rst), "Failed to get reset\n"); > + > + chip->ops = &pwm_sg2042_ops; > + chip->atomic = true; > + > + ret = devm_pwmchip_add(dev, chip); > + if (ret < 0) { > + reset_control_assert(rst); This is wrong (well, or unneeded). With devm_reset_control_get_optional_shared_deasserted() the devm cleanup cares for reasserting the reset. > + return dev_err_probe(dev, ret, "Failed to register PWM chip\n"); > + } > + > + return 0; > +} If you want I can apply and squash the following in: diff --git a/drivers/pwm/pwm-sophgo-sg2042.c b/drivers/pwm/pwm-sophgo-sg2042.c index ce8cf8af3402..ff4639d849ce 100644 --- a/drivers/pwm/pwm-sophgo-sg2042.c +++ b/drivers/pwm/pwm-sophgo-sg2042.c @@ -174,10 +174,8 @@ static int pwm_sg2042_probe(struct platform_device *pdev) chip->atomic = true; ret = devm_pwmchip_add(dev, chip); - if (ret < 0) { - reset_control_assert(rst); + if (ret < 0) return dev_err_probe(dev, ret, "Failed to register PWM chip\n"); - } return 0; } ack? Best regards Uwe
Attachment:
signature.asc
Description: PGP signature