ARM: etm: Don't require clock control
Arve Hjønnevåg [Sat, 29 Jan 2011 07:12:32 +0000 (23:12 -0800)]
If clk_get fail, assume the etb does not need a separate clock.

Change-Id: Ia0bf3f5391e94a60ea45876aa7afc8a88a7ec3bf
Signed-off-by: Arve Hjønnevåg <arve@android.com>

arch/arm/kernel/etm.c

index 8ff0ecd..cb65339 100644 (file)
@@ -362,13 +362,12 @@ static int etb_probe(struct amba_device *dev, const struct amba_id *id)
        if (ret)
                goto out_unmap;
 
+       /* Get optional clock. Currently used to select clock source on omap3 */
        t->emu_clk = clk_get(&dev->dev, "emu_src_ck");
-       if (IS_ERR(t->emu_clk)) {
+       if (IS_ERR(t->emu_clk))
                dev_dbg(&dev->dev, "Failed to obtain emu_src_ck.\n");
-               return -EFAULT;
-       }
-
-       clk_enable(t->emu_clk);
+       else
+               clk_enable(t->emu_clk);
 
        etb_unlock(t);
        t->etb_bufsz = etb_readl(t, ETBR_DEPTH);
@@ -403,8 +402,10 @@ static int etb_remove(struct amba_device *dev)
        iounmap(t->etb_regs);
        t->etb_regs = NULL;
 
-       clk_disable(t->emu_clk);
-       clk_put(t->emu_clk);
+       if (!IS_ERR(t->emu_clk)) {
+               clk_disable(t->emu_clk);
+               clk_put(t->emu_clk);
+       }
 
        amba_release_regions(dev);