aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2018-07-20 04:37:35 -0400
committerStephen Boyd <sboyd@kernel.org>2018-07-25 18:45:25 -0400
commit0316c018c5a84d4e0b43123057adada3cddb3e00 (patch)
tree714b723c93e0129e8d37664d9f1175c7992e2645
parentce397d215ccd07b8ae3f71db689aedb85d56ab40 (diff)
clk: uniphier: add NAND 200MHz clock
The Denali NAND controller IP needs three clocks: - clk: controller core clock - clk_x: bus interface clock - ecc_clk: clock at which ECC circuitry is run Currently, only the first one (50MHz) is provided. The rest of the two clock ports must be connected to the 200MHz clock line. Add this. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
-rw-r--r--drivers/clk/uniphier/clk-uniphier-sys.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/clk/uniphier/clk-uniphier-sys.c b/drivers/clk/uniphier/clk-uniphier-sys.c
index 4f5ff9fa11fd..a582446735b7 100644
--- a/drivers/clk/uniphier/clk-uniphier-sys.c
+++ b/drivers/clk/uniphier/clk-uniphier-sys.c
@@ -29,18 +29,20 @@
29 UNIPHIER_CLK_FACTOR("sd-200m", -1, "spll", 1, 10), \ 29 UNIPHIER_CLK_FACTOR("sd-200m", -1, "spll", 1, 10), \
30 UNIPHIER_CLK_FACTOR("sd-133m", -1, "spll", 1, 15) 30 UNIPHIER_CLK_FACTOR("sd-133m", -1, "spll", 1, 15)
31 31
32/* Denali driver requires clk_x rate (clk: 50MHz, clk_x & ecc_clk: 200MHz) */
33#define UNIPHIER_LD4_SYS_CLK_NAND(idx) \ 32#define UNIPHIER_LD4_SYS_CLK_NAND(idx) \
34 UNIPHIER_CLK_FACTOR("nand-200m", -1, "spll", 1, 8), \ 33 UNIPHIER_CLK_FACTOR("nand-50m", -1, "spll", 1, 32), \
35 UNIPHIER_CLK_GATE("nand", (idx), "nand-200m", 0x2104, 2) 34 UNIPHIER_CLK_GATE("nand", (idx), "nand-50m", 0x2104, 2)
36 35
37#define UNIPHIER_PRO5_SYS_CLK_NAND(idx) \ 36#define UNIPHIER_PRO5_SYS_CLK_NAND(idx) \
38 UNIPHIER_CLK_FACTOR("nand-200m", -1, "spll", 1, 12), \ 37 UNIPHIER_CLK_FACTOR("nand-50m", -1, "spll", 1, 48), \
39 UNIPHIER_CLK_GATE("nand", (idx), "nand-200m", 0x2104, 2) 38 UNIPHIER_CLK_GATE("nand", (idx), "nand-50m", 0x2104, 2)
40 39
41#define UNIPHIER_LD11_SYS_CLK_NAND(idx) \ 40#define UNIPHIER_LD11_SYS_CLK_NAND(idx) \
42 UNIPHIER_CLK_FACTOR("nand-200m", -1, "spll", 1, 10), \ 41 UNIPHIER_CLK_FACTOR("nand-50m", -1, "spll", 1, 40), \
43 UNIPHIER_CLK_GATE("nand", (idx), "nand-200m", 0x210c, 0) 42 UNIPHIER_CLK_GATE("nand", (idx), "nand-50m", 0x210c, 0)
43
44#define UNIPHIER_SYS_CLK_NAND_4X(idx) \
45 UNIPHIER_CLK_FACTOR("nand-4x", (idx), "nand", 4, 1)
44 46
45#define UNIPHIER_LD11_SYS_CLK_EMMC(idx) \ 47#define UNIPHIER_LD11_SYS_CLK_EMMC(idx) \
46 UNIPHIER_CLK_GATE("emmc", (idx), NULL, 0x210c, 2) 48 UNIPHIER_CLK_GATE("emmc", (idx), NULL, 0x210c, 2)
@@ -94,6 +96,7 @@ const struct uniphier_clk_data uniphier_ld4_sys_clk_data[] = {
94 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 16), 96 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 16),
95 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16), 97 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16),
96 UNIPHIER_LD4_SYS_CLK_NAND(2), 98 UNIPHIER_LD4_SYS_CLK_NAND(2),
99 UNIPHIER_SYS_CLK_NAND_4X(3),
97 UNIPHIER_LD4_SYS_CLK_SD, 100 UNIPHIER_LD4_SYS_CLK_SD,
98 UNIPHIER_CLK_FACTOR("usb2", -1, "upll", 1, 12), 101 UNIPHIER_CLK_FACTOR("usb2", -1, "upll", 1, 12),
99 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* Ether, HSC, MIO */ 102 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* Ether, HSC, MIO */
@@ -109,6 +112,7 @@ const struct uniphier_clk_data uniphier_pro4_sys_clk_data[] = {
109 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 8), 112 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 8),
110 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 32), 113 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 32),
111 UNIPHIER_LD4_SYS_CLK_NAND(2), 114 UNIPHIER_LD4_SYS_CLK_NAND(2),
115 UNIPHIER_SYS_CLK_NAND_4X(3),
112 UNIPHIER_LD4_SYS_CLK_SD, 116 UNIPHIER_LD4_SYS_CLK_SD,
113 UNIPHIER_CLK_FACTOR("usb2", -1, "upll", 1, 12), 117 UNIPHIER_CLK_FACTOR("usb2", -1, "upll", 1, 12),
114 UNIPHIER_PRO4_SYS_CLK_ETHER(6), 118 UNIPHIER_PRO4_SYS_CLK_ETHER(6),
@@ -131,6 +135,7 @@ const struct uniphier_clk_data uniphier_sld8_sys_clk_data[] = {
131 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 20), 135 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 20),
132 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16), 136 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16),
133 UNIPHIER_LD4_SYS_CLK_NAND(2), 137 UNIPHIER_LD4_SYS_CLK_NAND(2),
138 UNIPHIER_SYS_CLK_NAND_4X(3),
134 UNIPHIER_LD4_SYS_CLK_SD, 139 UNIPHIER_LD4_SYS_CLK_SD,
135 UNIPHIER_CLK_FACTOR("usb2", -1, "upll", 1, 12), 140 UNIPHIER_CLK_FACTOR("usb2", -1, "upll", 1, 12),
136 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* Ether, HSC, MIO */ 141 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* Ether, HSC, MIO */
@@ -144,6 +149,7 @@ const struct uniphier_clk_data uniphier_pro5_sys_clk_data[] = {
144 UNIPHIER_CLK_FACTOR("uart", 0, "dapll2", 1, 40), 149 UNIPHIER_CLK_FACTOR("uart", 0, "dapll2", 1, 40),
145 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48), 150 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48),
146 UNIPHIER_PRO5_SYS_CLK_NAND(2), 151 UNIPHIER_PRO5_SYS_CLK_NAND(2),
152 UNIPHIER_SYS_CLK_NAND_4X(3),
147 UNIPHIER_PRO5_SYS_CLK_SD, 153 UNIPHIER_PRO5_SYS_CLK_SD,
148 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* HSC */ 154 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* HSC */
149 UNIPHIER_PRO4_SYS_CLK_GIO(12), /* PCIe, USB3 */ 155 UNIPHIER_PRO4_SYS_CLK_GIO(12), /* PCIe, USB3 */
@@ -159,6 +165,7 @@ const struct uniphier_clk_data uniphier_pxs2_sys_clk_data[] = {
159 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 27), 165 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 27),
160 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48), 166 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48),
161 UNIPHIER_PRO5_SYS_CLK_NAND(2), 167 UNIPHIER_PRO5_SYS_CLK_NAND(2),
168 UNIPHIER_SYS_CLK_NAND_4X(3),
162 UNIPHIER_PRO5_SYS_CLK_SD, 169 UNIPHIER_PRO5_SYS_CLK_SD,
163 UNIPHIER_PRO4_SYS_CLK_ETHER(6), 170 UNIPHIER_PRO4_SYS_CLK_ETHER(6),
164 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* HSC, RLE */ 171 UNIPHIER_LD4_SYS_CLK_STDMAC(8), /* HSC, RLE */
@@ -181,6 +188,7 @@ const struct uniphier_clk_data uniphier_ld11_sys_clk_data[] = {
181 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34), 188 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34),
182 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40), 189 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40),
183 UNIPHIER_LD11_SYS_CLK_NAND(2), 190 UNIPHIER_LD11_SYS_CLK_NAND(2),
191 UNIPHIER_SYS_CLK_NAND_4X(3),
184 UNIPHIER_LD11_SYS_CLK_EMMC(4), 192 UNIPHIER_LD11_SYS_CLK_EMMC(4),
185 /* Index 5 reserved for eMMC PHY */ 193 /* Index 5 reserved for eMMC PHY */
186 UNIPHIER_LD11_SYS_CLK_ETHER(6), 194 UNIPHIER_LD11_SYS_CLK_ETHER(6),
@@ -214,6 +222,7 @@ const struct uniphier_clk_data uniphier_ld20_sys_clk_data[] = {
214 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34), 222 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34),
215 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40), 223 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40),
216 UNIPHIER_LD11_SYS_CLK_NAND(2), 224 UNIPHIER_LD11_SYS_CLK_NAND(2),
225 UNIPHIER_SYS_CLK_NAND_4X(3),
217 UNIPHIER_LD11_SYS_CLK_EMMC(4), 226 UNIPHIER_LD11_SYS_CLK_EMMC(4),
218 /* Index 5 reserved for eMMC PHY */ 227 /* Index 5 reserved for eMMC PHY */
219 UNIPHIER_LD20_SYS_CLK_SD, 228 UNIPHIER_LD20_SYS_CLK_SD,
@@ -256,6 +265,7 @@ const struct uniphier_clk_data uniphier_pxs3_sys_clk_data[] = {
256 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40), 265 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40),
257 UNIPHIER_LD20_SYS_CLK_SD, 266 UNIPHIER_LD20_SYS_CLK_SD,
258 UNIPHIER_LD11_SYS_CLK_NAND(2), 267 UNIPHIER_LD11_SYS_CLK_NAND(2),
268 UNIPHIER_SYS_CLK_NAND_4X(3),
259 UNIPHIER_LD11_SYS_CLK_EMMC(4), 269 UNIPHIER_LD11_SYS_CLK_EMMC(4),
260 UNIPHIER_CLK_GATE("ether0", 6, NULL, 0x210c, 9), 270 UNIPHIER_CLK_GATE("ether0", 6, NULL, 0x210c, 9),
261 UNIPHIER_CLK_GATE("ether1", 7, NULL, 0x210c, 10), 271 UNIPHIER_CLK_GATE("ether1", 7, NULL, 0x210c, 10),