[PATCH 3/4] thermal: rcar: Add missing clock handling
From: geert@linux-m68k.org (Geert Uytterhoeven)
Date: 2014-01-08 12:58:22
Also in:
linux-pm, linux-sh
On Wed, Jan 8, 2014 at 1:23 PM, Ben Dooks [off-list ref] wrote:
quoted
@@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device*pdev) spin_lock_init(&common->lock); common->dev = dev; + common->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(common->clk)) { + dev_err(&pdev->dev, "cannot get clock\n"); + return PTR_ERR(common->clk); + } + + ret = clk_prepare(common->clk); + if (ret < 0) { + dev_err(&pdev->dev, "unable to prepare clock\n"); + return ret; + } + + clk_enable(common->clk); + pm_runtime_enable(dev); pm_runtime_get_sync(dev); irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (irq) { - int ret; + int ret2; /* * platform has IRQ support. * Then, drier use common register */ - ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0, - dev_name(dev), common); - if (ret) { + ret2 = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0, + dev_name(dev), common); + if (ret2) { dev_err(dev, "irq request failed\n "); - return ret; + ret = ret2; + goto error_unpm; }I'd suggest not renaming ret2 and just use the original ret.
I did that because the for loop after that block depends on ret still being
-ENODEV. Upon closer look, I did break that myself by assigning it
the return value of clk_prepare().
So I'll use the original ret, and reset it to -ENODEV before the for loop
(unless we manage to fix it in pm_runtime_*()).
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds