diff options
author | Stephen Boyd <sboyd@codeaurora.org> | 2016-09-14 14:15:03 -0400 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2016-09-14 14:15:03 -0400 |
commit | 209370566ef8c38dcea40561db2c46fadb0078ce (patch) | |
tree | fd005a988c62d3148c7893cc6a04d006020893e3 | |
parent | 8edeae56a1da30f0d33848fdd3bd8dafbcc2ad87 (diff) | |
parent | 5fad71f58f4c236118358c98f65a7251e9c718f7 (diff) |
Merge tag 'clk-renesas-for-v4.9-tag3' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into clk-next
Pull renesas clk driver updates from Geert Uytterhoeven:
- External crystal selection for RZ/A1,
- CMT clocks for R-Car H3 and M3-W,
- RAVB and Thermal clocks for R-Car M3-W.
* tag 'clk-renesas-for-v4.9-tag3' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers:
clk: renesas: r8a7796: Add CMT clocks
clk: renesas: r8a7795: Add CMT clocks
clk: renesas: r8a7796: Add RAVB clock
clk: renesas: r8a7796: Add THS/TSC clock
clk: renesas: rz: Select EXTAL vs USB clock
-rw-r--r-- | drivers/clk/renesas/clk-rz.c | 24 | ||||
-rw-r--r-- | drivers/clk/renesas/r8a7795-cpg-mssr.c | 4 | ||||
-rw-r--r-- | drivers/clk/renesas/r8a7796-cpg-mssr.c | 6 |
3 files changed, 32 insertions, 2 deletions
diff --git a/drivers/clk/renesas/clk-rz.c b/drivers/clk/renesas/clk-rz.c index f6312c62f16b..5adb934326d1 100644 --- a/drivers/clk/renesas/clk-rz.c +++ b/drivers/clk/renesas/clk-rz.c | |||
@@ -25,10 +25,31 @@ struct rz_cpg { | |||
25 | #define CPG_FRQCR 0x10 | 25 | #define CPG_FRQCR 0x10 |
26 | #define CPG_FRQCR2 0x14 | 26 | #define CPG_FRQCR2 0x14 |
27 | 27 | ||
28 | #define PPR0 0xFCFE3200 | ||
29 | #define PIBC0 0xFCFE7000 | ||
30 | |||
31 | #define MD_CLK(x) ((x >> 2) & 1) /* P0_2 */ | ||
32 | |||
28 | /* ----------------------------------------------------------------------------- | 33 | /* ----------------------------------------------------------------------------- |
29 | * Initialization | 34 | * Initialization |
30 | */ | 35 | */ |
31 | 36 | ||
37 | static u16 __init rz_cpg_read_mode_pins(void) | ||
38 | { | ||
39 | void __iomem *ppr0, *pibc0; | ||
40 | u16 modes; | ||
41 | |||
42 | ppr0 = ioremap_nocache(PPR0, 2); | ||
43 | pibc0 = ioremap_nocache(PIBC0, 2); | ||
44 | BUG_ON(!ppr0 || !pibc0); | ||
45 | iowrite16(4, pibc0); /* enable input buffer */ | ||
46 | modes = ioread16(ppr0); | ||
47 | iounmap(ppr0); | ||
48 | iounmap(pibc0); | ||
49 | |||
50 | return modes; | ||
51 | } | ||
52 | |||
32 | static struct clk * __init | 53 | static struct clk * __init |
33 | rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const char *name) | 54 | rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const char *name) |
34 | { | 55 | { |
@@ -37,8 +58,7 @@ rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const char *na | |||
37 | static const unsigned frqcr_tab[4] = { 3, 2, 0, 1 }; | 58 | static const unsigned frqcr_tab[4] = { 3, 2, 0, 1 }; |
38 | 59 | ||
39 | if (strcmp(name, "pll") == 0) { | 60 | if (strcmp(name, "pll") == 0) { |
40 | /* FIXME: cpg_mode should be read from GPIO. But no GPIO support yet */ | 61 | unsigned int cpg_mode = MD_CLK(rz_cpg_read_mode_pins()); |
41 | unsigned cpg_mode = 0; /* hardcoded to EXTAL for now */ | ||
42 | const char *parent_name = of_clk_get_parent_name(np, cpg_mode); | 62 | const char *parent_name = of_clk_get_parent_name(np, cpg_mode); |
43 | 63 | ||
44 | mult = cpg_mode ? (32 / 4) : 30; | 64 | mult = cpg_mode ? (32 / 4) : 30; |
diff --git a/drivers/clk/renesas/r8a7795-cpg-mssr.c b/drivers/clk/renesas/r8a7795-cpg-mssr.c index e38bf60c0ff4..f255e451e8ca 100644 --- a/drivers/clk/renesas/r8a7795-cpg-mssr.c +++ b/drivers/clk/renesas/r8a7795-cpg-mssr.c | |||
@@ -123,6 +123,10 @@ static const struct mssr_mod_clk r8a7795_mod_clks[] __initconst = { | |||
123 | DEF_MOD("sys-dmac2", 217, R8A7795_CLK_S3D1), | 123 | DEF_MOD("sys-dmac2", 217, R8A7795_CLK_S3D1), |
124 | DEF_MOD("sys-dmac1", 218, R8A7795_CLK_S3D1), | 124 | DEF_MOD("sys-dmac1", 218, R8A7795_CLK_S3D1), |
125 | DEF_MOD("sys-dmac0", 219, R8A7795_CLK_S3D1), | 125 | DEF_MOD("sys-dmac0", 219, R8A7795_CLK_S3D1), |
126 | DEF_MOD("cmt3", 300, R8A7795_CLK_R), | ||
127 | DEF_MOD("cmt2", 301, R8A7795_CLK_R), | ||
128 | DEF_MOD("cmt1", 302, R8A7795_CLK_R), | ||
129 | DEF_MOD("cmt0", 303, R8A7795_CLK_R), | ||
126 | DEF_MOD("scif2", 310, R8A7795_CLK_S3D4), | 130 | DEF_MOD("scif2", 310, R8A7795_CLK_S3D4), |
127 | DEF_MOD("sdif3", 311, R8A7795_CLK_SD3), | 131 | DEF_MOD("sdif3", 311, R8A7795_CLK_SD3), |
128 | DEF_MOD("sdif2", 312, R8A7795_CLK_SD2), | 132 | DEF_MOD("sdif2", 312, R8A7795_CLK_SD2), |
diff --git a/drivers/clk/renesas/r8a7796-cpg-mssr.c b/drivers/clk/renesas/r8a7796-cpg-mssr.c index 891b353e8105..eb347ed265f2 100644 --- a/drivers/clk/renesas/r8a7796-cpg-mssr.c +++ b/drivers/clk/renesas/r8a7796-cpg-mssr.c | |||
@@ -109,6 +109,10 @@ static const struct cpg_core_clk r8a7796_core_clks[] __initconst = { | |||
109 | }; | 109 | }; |
110 | 110 | ||
111 | static const struct mssr_mod_clk r8a7796_mod_clks[] __initconst = { | 111 | static const struct mssr_mod_clk r8a7796_mod_clks[] __initconst = { |
112 | DEF_MOD("cmt3", 300, R8A7796_CLK_R), | ||
113 | DEF_MOD("cmt2", 301, R8A7796_CLK_R), | ||
114 | DEF_MOD("cmt1", 302, R8A7796_CLK_R), | ||
115 | DEF_MOD("cmt0", 303, R8A7796_CLK_R), | ||
112 | DEF_MOD("scif2", 310, R8A7796_CLK_S3D4), | 116 | DEF_MOD("scif2", 310, R8A7796_CLK_S3D4), |
113 | DEF_MOD("sdif3", 311, R8A7796_CLK_SD3), | 117 | DEF_MOD("sdif3", 311, R8A7796_CLK_SD3), |
114 | DEF_MOD("sdif2", 312, R8A7796_CLK_SD2), | 118 | DEF_MOD("sdif2", 312, R8A7796_CLK_SD2), |
@@ -116,6 +120,8 @@ static const struct mssr_mod_clk r8a7796_mod_clks[] __initconst = { | |||
116 | DEF_MOD("sdif0", 314, R8A7796_CLK_SD0), | 120 | DEF_MOD("sdif0", 314, R8A7796_CLK_SD0), |
117 | DEF_MOD("rwdt0", 402, R8A7796_CLK_R), | 121 | DEF_MOD("rwdt0", 402, R8A7796_CLK_R), |
118 | DEF_MOD("intc-ap", 408, R8A7796_CLK_S3D1), | 122 | DEF_MOD("intc-ap", 408, R8A7796_CLK_S3D1), |
123 | DEF_MOD("thermal", 522, R8A7796_CLK_CP), | ||
124 | DEF_MOD("etheravb", 812, R8A7796_CLK_S0D6), | ||
119 | DEF_MOD("gpio7", 905, R8A7796_CLK_S3D4), | 125 | DEF_MOD("gpio7", 905, R8A7796_CLK_S3D4), |
120 | DEF_MOD("gpio6", 906, R8A7796_CLK_S3D4), | 126 | DEF_MOD("gpio6", 906, R8A7796_CLK_S3D4), |
121 | DEF_MOD("gpio5", 907, R8A7796_CLK_S3D4), | 127 | DEF_MOD("gpio5", 907, R8A7796_CLK_S3D4), |