Browse Source

[ARM] 5536/1: Move clk_add_alias() to arch/arm/common/clkdev.c

This can be used for other arm platforms too as discussed
on the linux-arm-kernel list.

Also check the return value with IS_ERR and return PTR_ERR
as suggested by Russell King.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tony Lindgren 16 years ago
parent
commit
c068303920
3 changed files with 31 additions and 17 deletions
  1. 18 0
      arch/arm/common/clkdev.c
  2. 0 17
      arch/arm/mach-pxa/clock.c
  3. 13 0
      include/linux/clk.h

+ 18 - 0
arch/arm/common/clkdev.c

@@ -135,6 +135,24 @@ struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
 }
 }
 EXPORT_SYMBOL(clkdev_alloc);
 EXPORT_SYMBOL(clkdev_alloc);
 
 
+int clk_add_alias(const char *alias, const char *alias_dev_name, char *id,
+	struct device *dev)
+{
+	struct clk *r = clk_get(dev, id);
+	struct clk_lookup *l;
+
+	if (IS_ERR(r))
+		return PTR_ERR(r);
+
+	l = clkdev_alloc(r, alias, alias_dev_name);
+	clk_put(r);
+	if (!l)
+		return -ENODEV;
+	clkdev_add(l);
+	return 0;
+}
+EXPORT_SYMBOL(clk_add_alias);
+
 /*
 /*
  * clkdev_drop - remove a clock dynamically allocated
  * clkdev_drop - remove a clock dynamically allocated
  */
  */

+ 0 - 17
arch/arm/mach-pxa/clock.c

@@ -86,20 +86,3 @@ void clks_register(struct clk_lookup *clks, size_t num)
 	for (i = 0; i < num; i++)
 	for (i = 0; i < num; i++)
 		clkdev_add(&clks[i]);
 		clkdev_add(&clks[i]);
 }
 }
-
-int clk_add_alias(const char *alias, const char *alias_dev_name, char *id,
-	struct device *dev)
-{
-	struct clk *r = clk_get(dev, id);
-	struct clk_lookup *l;
-
-	if (!r)
-		return -ENODEV;
-
-	l = clkdev_alloc(r, alias, alias_dev_name);
-	clk_put(r);
-	if (!l)
-		return -ENODEV;
-	clkdev_add(l);
-	return 0;
-}

+ 13 - 0
include/linux/clk.h

@@ -142,4 +142,17 @@ struct clk *clk_get_parent(struct clk *clk);
  */
  */
 struct clk *clk_get_sys(const char *dev_id, const char *con_id);
 struct clk *clk_get_sys(const char *dev_id, const char *con_id);
 
 
+/**
+ * clk_add_alias - add a new clock alias
+ * @alias: name for clock alias
+ * @alias_dev_name: device name
+ * @id: platform specific clock name
+ * @dev: device
+ *
+ * Allows using generic clock names for drivers by adding a new alias.
+ * Assumes clkdev, see clkdev.h for more info.
+ */
+int clk_add_alias(const char *alias, const char *alias_dev_name, char *id,
+			struct device *dev);
+
 #endif
 #endif