Message ID | c79e120b120df9eedddaaf70364d28e15df23d91.1701860672.git.u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | None | expand |
On Wed, 6 Dec 2023 12:44:51 +0100 Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote: Hi, > This prepares the pwm-sun4i driver to further changes of the pwm core > outlined in the commit introducing devm_pwmchip_alloc(). There is no > intended semantical change and the driver should behave as before. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> That looks alright to me, it's really only wrapping the access to struct sun4i_pwm_chip using the newly provided functions. Reviewed-by: Andre Przywara <andre.przywara@arm.com> Cheers, Andre > --- > drivers/pwm/pwm-sun4i.c | 34 +++++++++++++++++++--------------- > 1 file changed, 19 insertions(+), 15 deletions(-) > > diff --git a/drivers/pwm/pwm-sun4i.c b/drivers/pwm/pwm-sun4i.c > index 44edf1ce5739..36a8dc65b19c 100644 > --- a/drivers/pwm/pwm-sun4i.c > +++ b/drivers/pwm/pwm-sun4i.c > @@ -81,7 +81,6 @@ struct sun4i_pwm_data { > }; > > struct sun4i_pwm_chip { > - struct pwm_chip chip; > struct clk *bus_clk; > struct clk *clk; > struct reset_control *rst; > @@ -92,7 +91,7 @@ struct sun4i_pwm_chip { > > static inline struct sun4i_pwm_chip *to_sun4i_pwm_chip(struct pwm_chip *chip) > { > - return container_of(chip, struct sun4i_pwm_chip, chip); > + return pwmchip_get_drvdata(chip); > } > > static inline u32 sun4i_pwm_readl(struct sun4i_pwm_chip *chip, > @@ -384,17 +383,22 @@ MODULE_DEVICE_TABLE(of, sun4i_pwm_dt_ids); > > static int sun4i_pwm_probe(struct platform_device *pdev) > { > + struct pwm_chip *chip; > struct sun4i_pwm_chip *sun4ichip; > + const struct sun4i_pwm_data *data; > int ret; > > - sun4ichip = devm_kzalloc(&pdev->dev, sizeof(*sun4ichip), GFP_KERNEL); > - if (!sun4ichip) > - return -ENOMEM; > - > - sun4ichip->data = of_device_get_match_data(&pdev->dev); > - if (!sun4ichip->data) > + data = of_device_get_match_data(&pdev->dev); > + if (!data) > return -ENODEV; > > + chip = devm_pwmchip_alloc(&pdev->dev, data->npwm, sizeof(*sun4ichip)); > + if (IS_ERR(chip)) > + return PTR_ERR(chip); > + sun4ichip = to_sun4i_pwm_chip(chip); > + > + sun4ichip->data = data; > + > sun4ichip->base = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(sun4ichip->base)) > return PTR_ERR(sun4ichip->base); > @@ -451,19 +455,18 @@ static int sun4i_pwm_probe(struct platform_device *pdev) > goto err_bus; > } > > - sun4ichip->chip.dev = &pdev->dev; > - sun4ichip->chip.ops = &sun4i_pwm_ops; > - sun4ichip->chip.npwm = sun4ichip->data->npwm; > + chip->ops = &sun4i_pwm_ops; > + chip->npwm = sun4ichip->data->npwm; > > spin_lock_init(&sun4ichip->ctrl_lock); > > - ret = pwmchip_add(&sun4ichip->chip); > + ret = pwmchip_add(chip); > if (ret < 0) { > dev_err(&pdev->dev, "failed to add PWM chip: %d\n", ret); > goto err_pwm_add; > } > > - platform_set_drvdata(pdev, sun4ichip); > + platform_set_drvdata(pdev, chip); > > return 0; > > @@ -477,9 +480,10 @@ static int sun4i_pwm_probe(struct platform_device *pdev) > > static void sun4i_pwm_remove(struct platform_device *pdev) > { > - struct sun4i_pwm_chip *sun4ichip = platform_get_drvdata(pdev); > + struct pwm_chip *chip = platform_get_drvdata(pdev); > + struct sun4i_pwm_chip *sun4ichip = to_sun4i_pwm_chip(chip); > > - pwmchip_remove(&sun4ichip->chip); > + pwmchip_remove(chip); > > clk_disable_unprepare(sun4ichip->bus_clk); > reset_control_assert(sun4ichip->rst);
On Wednesday, December 6, 2023 12:44:51 PM CET Uwe Kleine-König wrote: > This prepares the pwm-sun4i driver to further changes of the pwm core > outlined in the commit introducing devm_pwmchip_alloc(). There is no > intended semantical change and the driver should behave as before. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com> Best regards, Jernej
diff --git a/drivers/pwm/pwm-sun4i.c b/drivers/pwm/pwm-sun4i.c index 44edf1ce5739..36a8dc65b19c 100644 --- a/drivers/pwm/pwm-sun4i.c +++ b/drivers/pwm/pwm-sun4i.c @@ -81,7 +81,6 @@ struct sun4i_pwm_data { }; struct sun4i_pwm_chip { - struct pwm_chip chip; struct clk *bus_clk; struct clk *clk; struct reset_control *rst; @@ -92,7 +91,7 @@ struct sun4i_pwm_chip { static inline struct sun4i_pwm_chip *to_sun4i_pwm_chip(struct pwm_chip *chip) { - return container_of(chip, struct sun4i_pwm_chip, chip); + return pwmchip_get_drvdata(chip); } static inline u32 sun4i_pwm_readl(struct sun4i_pwm_chip *chip, @@ -384,17 +383,22 @@ MODULE_DEVICE_TABLE(of, sun4i_pwm_dt_ids); static int sun4i_pwm_probe(struct platform_device *pdev) { + struct pwm_chip *chip; struct sun4i_pwm_chip *sun4ichip; + const struct sun4i_pwm_data *data; int ret; - sun4ichip = devm_kzalloc(&pdev->dev, sizeof(*sun4ichip), GFP_KERNEL); - if (!sun4ichip) - return -ENOMEM; - - sun4ichip->data = of_device_get_match_data(&pdev->dev); - if (!sun4ichip->data) + data = of_device_get_match_data(&pdev->dev); + if (!data) return -ENODEV; + chip = devm_pwmchip_alloc(&pdev->dev, data->npwm, sizeof(*sun4ichip)); + if (IS_ERR(chip)) + return PTR_ERR(chip); + sun4ichip = to_sun4i_pwm_chip(chip); + + sun4ichip->data = data; + sun4ichip->base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(sun4ichip->base)) return PTR_ERR(sun4ichip->base); @@ -451,19 +455,18 @@ static int sun4i_pwm_probe(struct platform_device *pdev) goto err_bus; } - sun4ichip->chip.dev = &pdev->dev; - sun4ichip->chip.ops = &sun4i_pwm_ops; - sun4ichip->chip.npwm = sun4ichip->data->npwm; + chip->ops = &sun4i_pwm_ops; + chip->npwm = sun4ichip->data->npwm; spin_lock_init(&sun4ichip->ctrl_lock); - ret = pwmchip_add(&sun4ichip->chip); + ret = pwmchip_add(chip); if (ret < 0) { dev_err(&pdev->dev, "failed to add PWM chip: %d\n", ret); goto err_pwm_add; } - platform_set_drvdata(pdev, sun4ichip); + platform_set_drvdata(pdev, chip); return 0; @@ -477,9 +480,10 @@ static int sun4i_pwm_probe(struct platform_device *pdev) static void sun4i_pwm_remove(struct platform_device *pdev) { - struct sun4i_pwm_chip *sun4ichip = platform_get_drvdata(pdev); + struct pwm_chip *chip = platform_get_drvdata(pdev); + struct sun4i_pwm_chip *sun4ichip = to_sun4i_pwm_chip(chip); - pwmchip_remove(&sun4ichip->chip); + pwmchip_remove(chip); clk_disable_unprepare(sun4ichip->bus_clk); reset_control_assert(sun4ichip->rst);
This prepares the pwm-sun4i driver to further changes of the pwm core outlined in the commit introducing devm_pwmchip_alloc(). There is no intended semantical change and the driver should behave as before. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- drivers/pwm/pwm-sun4i.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-)