Thread (23 messages) 23 messages, 9 authors, 2014-01-17
STALE4511d
Revisions (9)
  1. v1 [diff vs current]
  2. v1 [diff vs current]
  3. v1 [diff vs current]
  4. v1 [diff vs current]
  5. v1 [diff vs current]
  6. v1 [diff vs current]
  7. v1 [diff vs current]
  8. v1 current
  9. v1 [diff vs current]

[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help