]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/plat-omap/clock.c
OMAP clock: add OMAP chip family-specific clk_register() option
[linux-2.6-omap-h63xx.git] / arch / arm / plat-omap / clock.c
index ab3d87910a17da2ecd73af4379e8afa6a7a430fe..bdf2cd444da7488c4d6f6d235105fbc34af1cd89 100644 (file)
@@ -260,22 +260,6 @@ out:
 }
 EXPORT_SYMBOL(clk_disable);
 
-int clk_get_usecount(struct clk *clk)
-{
-       unsigned long flags;
-       int ret = 0;
-
-       if (clk == NULL || IS_ERR(clk))
-               return 0;
-
-       spin_lock_irqsave(&clockfw_lock, flags);
-       ret = clk->usecount;
-       spin_unlock_irqrestore(&clockfw_lock, flags);
-
-       return ret;
-}
-EXPORT_SYMBOL(clk_get_usecount);
-
 unsigned long clk_get_rate(struct clk *clk)
 {
        unsigned long flags;
@@ -455,10 +439,17 @@ void recalculate_root_clocks(void)
 
 int clk_register(struct clk *clk)
 {
+       int ret;
+
        if (clk == NULL || IS_ERR(clk))
                return -EINVAL;
 
        mutex_lock(&clocks_mutex);
+       if (arch_clock->clk_register) {
+               ret = arch_clock->clk_register(clk);
+               if (ret)
+                       goto cr_out;
+       }
        list_add(&clk->node, &clocks);
        if (!clk->children.next)
                INIT_LIST_HEAD(&clk->children);
@@ -466,9 +457,11 @@ int clk_register(struct clk *clk)
                omap_clk_add_child(clk->parent, clk);
        if (clk->init)
                clk->init(clk);
+       ret = 0;
+cr_out:
        mutex_unlock(&clocks_mutex);
 
-       return 0;
+       return ret;
 }
 EXPORT_SYMBOL(clk_register);