clk: at91: Migrate to clk_hw based registration and OF APIs
[cascardo/linux.git] / drivers / clk / at91 / clk-usb.c
index d80bdb0..791770a 100644 (file)
@@ -192,13 +192,14 @@ static const struct clk_ops at91sam9n12_usb_ops = {
        .set_rate = at91sam9x5_clk_usb_set_rate,
 };
 
-static struct clk * __init
+static struct clk_hw * __init
 at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name,
                            const char **parent_names, u8 num_parents)
 {
        struct at91sam9x5_clk_usb *usb;
-       struct clk *clk = NULL;
+       struct clk_hw *hw;
        struct clk_init_data init;
+       int ret;
 
        usb = kzalloc(sizeof(*usb), GFP_KERNEL);
        if (!usb)
@@ -214,20 +215,24 @@ at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name,
        usb->hw.init = &init;
        usb->regmap = regmap;
 
-       clk = clk_register(NULL, &usb->hw);
-       if (IS_ERR(clk))
+       hw = &usb->hw;
+       ret = clk_hw_register(NULL, &usb->hw);
+       if (ret) {
                kfree(usb);
+               hw = ERR_PTR(ret);
+       }
 
-       return clk;
+       return hw;
 }
 
-static struct clk * __init
+static struct clk_hw * __init
 at91sam9n12_clk_register_usb(struct regmap *regmap, const char *name,
                             const char *parent_name)
 {
        struct at91sam9x5_clk_usb *usb;
-       struct clk *clk = NULL;
+       struct clk_hw *hw;
        struct clk_init_data init;
+       int ret;
 
        usb = kzalloc(sizeof(*usb), GFP_KERNEL);
        if (!usb)
@@ -242,11 +247,14 @@ at91sam9n12_clk_register_usb(struct regmap *regmap, const char *name,
        usb->hw.init = &init;
        usb->regmap = regmap;
 
-       clk = clk_register(NULL, &usb->hw);
-       if (IS_ERR(clk))
+       hw = &usb->hw;
+       ret = clk_hw_register(NULL, &usb->hw);
+       if (ret) {
                kfree(usb);
+               hw = ERR_PTR(ret);
+       }
 
-       return clk;
+       return hw;
 }
 
 static unsigned long at91rm9200_clk_usb_recalc_rate(struct clk_hw *hw,
@@ -334,13 +342,14 @@ static const struct clk_ops at91rm9200_usb_ops = {
        .set_rate = at91rm9200_clk_usb_set_rate,
 };
 
-static struct clk * __init
+static struct clk_hw * __init
 at91rm9200_clk_register_usb(struct regmap *regmap, const char *name,
                            const char *parent_name, const u32 *divisors)
 {
        struct at91rm9200_clk_usb *usb;
-       struct clk *clk = NULL;
+       struct clk_hw *hw;
        struct clk_init_data init;
+       int ret;
 
        usb = kzalloc(sizeof(*usb), GFP_KERNEL);
        if (!usb)
@@ -356,16 +365,19 @@ at91rm9200_clk_register_usb(struct regmap *regmap, const char *name,
        usb->regmap = regmap;
        memcpy(usb->divisors, divisors, sizeof(usb->divisors));
 
-       clk = clk_register(NULL, &usb->hw);
-       if (IS_ERR(clk))
+       hw = &usb->hw;
+       ret = clk_hw_register(NULL, &usb->hw);
+       if (ret) {
                kfree(usb);
+               hw = ERR_PTR(ret);
+       }
 
-       return clk;
+       return hw;
 }
 
 static void __init of_at91sam9x5_clk_usb_setup(struct device_node *np)
 {
-       struct clk *clk;
+       struct clk_hw *hw;
        unsigned int num_parents;
        const char *parent_names[USB_SOURCE_MAX];
        const char *name = np->name;
@@ -383,19 +395,19 @@ static void __init of_at91sam9x5_clk_usb_setup(struct device_node *np)
        if (IS_ERR(regmap))
                return;
 
-       clk = at91sam9x5_clk_register_usb(regmap, name, parent_names,
-                                         num_parents);
-       if (IS_ERR(clk))
+       hw = at91sam9x5_clk_register_usb(regmap, name, parent_names,
+                                        num_parents);
+       if (IS_ERR(hw))
                return;
 
-       of_clk_add_provider(np, of_clk_src_simple_get, clk);
+       of_clk_add_hw_provider(np, of_clk_hw_simple_get, hw);
 }
 CLK_OF_DECLARE(at91sam9x5_clk_usb, "atmel,at91sam9x5-clk-usb",
               of_at91sam9x5_clk_usb_setup);
 
 static void __init of_at91sam9n12_clk_usb_setup(struct device_node *np)
 {
-       struct clk *clk;
+       struct clk_hw *hw;
        const char *parent_name;
        const char *name = np->name;
        struct regmap *regmap;
@@ -410,18 +422,18 @@ static void __init of_at91sam9n12_clk_usb_setup(struct device_node *np)
        if (IS_ERR(regmap))
                return;
 
-       clk = at91sam9n12_clk_register_usb(regmap, name, parent_name);
-       if (IS_ERR(clk))
+       hw = at91sam9n12_clk_register_usb(regmap, name, parent_name);
+       if (IS_ERR(hw))
                return;
 
-       of_clk_add_provider(np, of_clk_src_simple_get, clk);
+       of_clk_add_hw_provider(np, of_clk_hw_simple_get, hw);
 }
 CLK_OF_DECLARE(at91sam9n12_clk_usb, "atmel,at91sam9n12-clk-usb",
               of_at91sam9n12_clk_usb_setup);
 
 static void __init of_at91rm9200_clk_usb_setup(struct device_node *np)
 {
-       struct clk *clk;
+       struct clk_hw *hw;
        const char *parent_name;
        const char *name = np->name;
        u32 divisors[4] = {0, 0, 0, 0};
@@ -440,12 +452,11 @@ static void __init of_at91rm9200_clk_usb_setup(struct device_node *np)
        regmap = syscon_node_to_regmap(of_get_parent(np));
        if (IS_ERR(regmap))
                return;
-
-       clk = at91rm9200_clk_register_usb(regmap, name, parent_name, divisors);
-       if (IS_ERR(clk))
+       hw = at91rm9200_clk_register_usb(regmap, name, parent_name, divisors);
+       if (IS_ERR(hw))
                return;
 
-       of_clk_add_provider(np, of_clk_src_simple_get, clk);
+       of_clk_add_hw_provider(np, of_clk_hw_simple_get, hw);
 }
 CLK_OF_DECLARE(at91rm9200_clk_usb, "atmel,at91rm9200-clk-usb",
               of_at91rm9200_clk_usb_setup);