sunxi: driver refresh for 3.13
[openwrt.git] / target / linux / sunxi / patches-3.13 / 251-clk-sunxi-add-clk-output-names-dt-prop.patch
1 From f64111ebaf6776558f0e60d0ea8c7a9c579b9436 Mon Sep 17 00:00:00 2001
2 From: Chen-Yu Tsai <wens@csie.org>
3 Date: Mon, 3 Feb 2014 09:51:37 +0800
4 Subject: [PATCH] clk: sunxi: add clock-output-names dt property support
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 sunxi clock drivers use dt node name as clock name, but clock
10 nodes should be named clk@X, so the names would be the same.
11 Let the drivers read clock names from dt clock-output-names
12 property.
13
14 Signed-off-by: Chen-Yu Tsai <wens@csie.org>
15 Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
16 Acked-by: Mike Turquette <mturquette@linaro.org>
17 Signed-off-by: Emilio López <emilio@elopez.com.ar>
18 ---
19  drivers/clk/sunxi/clk-sunxi.c | 6 ++++++
20  1 file changed, 6 insertions(+)
21
22 diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
23 index abb6c5a..0ed9794 100644
24 --- a/drivers/clk/sunxi/clk-sunxi.c
25 +++ b/drivers/clk/sunxi/clk-sunxi.c
26 @@ -51,6 +51,8 @@ static void __init sun4i_osc_clk_setup(struct device_node *node)
27         if (!gate)
28                 goto err_free_fixed;
29  
30 +       of_property_read_string(node, "clock-output-names", &clk_name);
31 +
32         /* set up gate and fixed rate properties */
33         gate->reg = of_iomap(node, 0);
34         gate->bit_idx = SUNXI_OSC24M_GATE;
35 @@ -601,6 +603,8 @@ static void __init sunxi_mux_clk_setup(struct device_node *node,
36                (parents[i] = of_clk_get_parent_name(node, i)) != NULL)
37                 i++;
38  
39 +       of_property_read_string(node, "clock-output-names", &clk_name);
40 +
41         clk = clk_register_mux(NULL, clk_name, parents, i,
42                                CLK_SET_RATE_NO_REPARENT, reg,
43                                data->shift, SUNXI_MUX_GATE_WIDTH,
44 @@ -660,6 +664,8 @@ static void __init sunxi_divider_clk_setup(struct device_node *node,
45  
46         clk_parent = of_clk_get_parent_name(node, 0);
47  
48 +       of_property_read_string(node, "clock-output-names", &clk_name);
49 +
50         clk = clk_register_divider(NULL, clk_name, clk_parent, 0,
51                                    reg, data->shift, data->width,
52                                    data->pow ? CLK_DIVIDER_POWER_OF_TWO : 0,
53 -- 
54 1.8.5.5
55