Skip to content

Commit b498c14

Browse files
Uwe Kleine-Königthierryreding
authored andcommitted
pwm: bcm-iproc: Simplify using devm functions
With devm_clk_get_enabled() the call to clk_disable_unprepare() can be dropped from the error path and the remove callback. With devm_pwmchip_add() pwmchip_remove() can be dropped. Then the remove callback is empty and can go away, too. Also use dev_err_probe() for simplified (and improved) error reporting. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Uwe Kleine-König <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
1 parent 8151b37 commit b498c14

File tree

1 file changed

+9
-28
lines changed

1 file changed

+9
-28
lines changed

drivers/pwm/pwm-bcm-iproc.c

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -206,18 +206,10 @@ static int iproc_pwmc_probe(struct platform_device *pdev)
206206
if (IS_ERR(ip->base))
207207
return PTR_ERR(ip->base);
208208

209-
ip->clk = devm_clk_get(&pdev->dev, NULL);
210-
if (IS_ERR(ip->clk)) {
211-
dev_err(&pdev->dev, "failed to get clock: %ld\n",
212-
PTR_ERR(ip->clk));
213-
return PTR_ERR(ip->clk);
214-
}
215-
216-
ret = clk_prepare_enable(ip->clk);
217-
if (ret < 0) {
218-
dev_err(&pdev->dev, "failed to enable clock: %d\n", ret);
219-
return ret;
220-
}
209+
ip->clk = devm_clk_get_enabled(&pdev->dev, NULL);
210+
if (IS_ERR(ip->clk))
211+
return dev_err_probe(&pdev->dev, PTR_ERR(ip->clk),
212+
"failed to get clock\n");
221213

222214
/* Set full drive and normal polarity for all channels */
223215
value = readl(ip->base + IPROC_PWM_CTRL_OFFSET);
@@ -229,22 +221,12 @@ static int iproc_pwmc_probe(struct platform_device *pdev)
229221

230222
writel(value, ip->base + IPROC_PWM_CTRL_OFFSET);
231223

232-
ret = pwmchip_add(&ip->chip);
233-
if (ret < 0) {
234-
dev_err(&pdev->dev, "failed to add PWM chip: %d\n", ret);
235-
clk_disable_unprepare(ip->clk);
236-
}
237-
238-
return ret;
239-
}
240-
241-
static void iproc_pwmc_remove(struct platform_device *pdev)
242-
{
243-
struct iproc_pwmc *ip = platform_get_drvdata(pdev);
224+
ret = devm_pwmchip_add(&pdev->dev, &ip->chip);
225+
if (ret < 0)
226+
return dev_err_probe(&pdev->dev, ret,
227+
"failed to add PWM chip\n");
244228

245-
pwmchip_remove(&ip->chip);
246-
247-
clk_disable_unprepare(ip->clk);
229+
return 0;
248230
}
249231

250232
static const struct of_device_id bcm_iproc_pwmc_dt[] = {
@@ -259,7 +241,6 @@ static struct platform_driver iproc_pwmc_driver = {
259241
.of_match_table = bcm_iproc_pwmc_dt,
260242
},
261243
.probe = iproc_pwmc_probe,
262-
.remove_new = iproc_pwmc_remove,
263244
};
264245
module_platform_driver(iproc_pwmc_driver);
265246

0 commit comments

Comments
 (0)