aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKunihiko Hayashi <hayashi.kunihiko@socionext.com>2018-07-19 01:23:48 -0400
committerStephen Boyd <sboyd@kernel.org>2018-07-25 19:26:18 -0400
commitff388ee3651642d7fdc837b4434a1c7d80b243e4 (patch)
tree326bac065aa53dc3a7c94f5bcfc22a6742b3c8f9
parent9d222574ef72216bd8332708750bbe743db9bea3 (diff)
clk: uniphier: add clock frequency support for SPI
Add clock control for SPI controller on UniPhier SoCs. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> 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-peri.c9
-rw-r--r--drivers/clk/uniphier/clk-uniphier-sys.c8
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/clk/uniphier/clk-uniphier-peri.c b/drivers/clk/uniphier/clk-uniphier-peri.c
index 521c80e9a06f..89b3ac378b3f 100644
--- a/drivers/clk/uniphier/clk-uniphier-peri.c
+++ b/drivers/clk/uniphier/clk-uniphier-peri.c
@@ -27,6 +27,12 @@
27#define UNIPHIER_PERI_CLK_FI2C(idx, ch) \ 27#define UNIPHIER_PERI_CLK_FI2C(idx, ch) \
28 UNIPHIER_CLK_GATE("i2c" #ch, (idx), "i2c", 0x24, 24 + (ch)) 28 UNIPHIER_CLK_GATE("i2c" #ch, (idx), "i2c", 0x24, 24 + (ch))
29 29
30#define UNIPHIER_PERI_CLK_SCSSI(idx) \
31 UNIPHIER_CLK_GATE("scssi", (idx), "spi", 0x20, 17)
32
33#define UNIPHIER_PERI_CLK_MCSSI(idx) \
34 UNIPHIER_CLK_GATE("mcssi", (idx), "spi", 0x24, 14)
35
30const struct uniphier_clk_data uniphier_ld4_peri_clk_data[] = { 36const struct uniphier_clk_data uniphier_ld4_peri_clk_data[] = {
31 UNIPHIER_PERI_CLK_UART(0, 0), 37 UNIPHIER_PERI_CLK_UART(0, 0),
32 UNIPHIER_PERI_CLK_UART(1, 1), 38 UNIPHIER_PERI_CLK_UART(1, 1),
@@ -38,6 +44,7 @@ const struct uniphier_clk_data uniphier_ld4_peri_clk_data[] = {
38 UNIPHIER_PERI_CLK_I2C(6, 2), 44 UNIPHIER_PERI_CLK_I2C(6, 2),
39 UNIPHIER_PERI_CLK_I2C(7, 3), 45 UNIPHIER_PERI_CLK_I2C(7, 3),
40 UNIPHIER_PERI_CLK_I2C(8, 4), 46 UNIPHIER_PERI_CLK_I2C(8, 4),
47 UNIPHIER_PERI_CLK_SCSSI(11),
41 { /* sentinel */ } 48 { /* sentinel */ }
42}; 49};
43 50
@@ -53,5 +60,7 @@ const struct uniphier_clk_data uniphier_pro4_peri_clk_data[] = {
53 UNIPHIER_PERI_CLK_FI2C(8, 4), 60 UNIPHIER_PERI_CLK_FI2C(8, 4),
54 UNIPHIER_PERI_CLK_FI2C(9, 5), 61 UNIPHIER_PERI_CLK_FI2C(9, 5),
55 UNIPHIER_PERI_CLK_FI2C(10, 6), 62 UNIPHIER_PERI_CLK_FI2C(10, 6),
63 UNIPHIER_PERI_CLK_SCSSI(11),
64 UNIPHIER_PERI_CLK_MCSSI(12),
56 { /* sentinel */ } 65 { /* sentinel */ }
57}; 66};
diff --git a/drivers/clk/uniphier/clk-uniphier-sys.c b/drivers/clk/uniphier/clk-uniphier-sys.c
index 1c5a998e6c21..2bb5a8570adc 100644
--- a/drivers/clk/uniphier/clk-uniphier-sys.c
+++ b/drivers/clk/uniphier/clk-uniphier-sys.c
@@ -95,6 +95,7 @@ const struct uniphier_clk_data uniphier_ld4_sys_clk_data[] = {
95 UNIPHIER_CLK_FACTOR("vpll27a", -1, "ref", 5625, 512), /* 270 MHz */ 95 UNIPHIER_CLK_FACTOR("vpll27a", -1, "ref", 5625, 512), /* 270 MHz */
96 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 16), 96 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 16),
97 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16), 97 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16),
98 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 32),
98 UNIPHIER_LD4_SYS_CLK_NAND(2), 99 UNIPHIER_LD4_SYS_CLK_NAND(2),
99 UNIPHIER_SYS_CLK_NAND_4X(3), 100 UNIPHIER_SYS_CLK_NAND_4X(3),
100 UNIPHIER_LD4_SYS_CLK_SD, 101 UNIPHIER_LD4_SYS_CLK_SD,
@@ -111,6 +112,7 @@ const struct uniphier_clk_data uniphier_pro4_sys_clk_data[] = {
111 UNIPHIER_CLK_FACTOR("gpll", -1, "ref", 10, 1), /* 250 MHz */ 112 UNIPHIER_CLK_FACTOR("gpll", -1, "ref", 10, 1), /* 250 MHz */
112 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 8), 113 UNIPHIER_CLK_FACTOR("uart", 0, "a2pll", 1, 8),
113 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 32), 114 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 32),
115 UNIPHIER_CLK_FACTOR("spi", 1, "spll", 1, 32),
114 UNIPHIER_LD4_SYS_CLK_NAND(2), 116 UNIPHIER_LD4_SYS_CLK_NAND(2),
115 UNIPHIER_SYS_CLK_NAND_4X(3), 117 UNIPHIER_SYS_CLK_NAND_4X(3),
116 UNIPHIER_LD4_SYS_CLK_SD, 118 UNIPHIER_LD4_SYS_CLK_SD,
@@ -137,6 +139,7 @@ const struct uniphier_clk_data uniphier_sld8_sys_clk_data[] = {
137 UNIPHIER_CLK_FACTOR("vpll27a", -1, "ref", 270, 25), /* 270 MHz */ 139 UNIPHIER_CLK_FACTOR("vpll27a", -1, "ref", 270, 25), /* 270 MHz */
138 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 20), 140 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 20),
139 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16), 141 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 16),
142 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 32),
140 UNIPHIER_LD4_SYS_CLK_NAND(2), 143 UNIPHIER_LD4_SYS_CLK_NAND(2),
141 UNIPHIER_SYS_CLK_NAND_4X(3), 144 UNIPHIER_SYS_CLK_NAND_4X(3),
142 UNIPHIER_LD4_SYS_CLK_SD, 145 UNIPHIER_LD4_SYS_CLK_SD,
@@ -151,6 +154,7 @@ const struct uniphier_clk_data uniphier_pro5_sys_clk_data[] = {
151 UNIPHIER_CLK_FACTOR("dapll2", -1, "dapll1", 144, 125), /* 2949.12 MHz */ 154 UNIPHIER_CLK_FACTOR("dapll2", -1, "dapll1", 144, 125), /* 2949.12 MHz */
152 UNIPHIER_CLK_FACTOR("uart", 0, "dapll2", 1, 40), 155 UNIPHIER_CLK_FACTOR("uart", 0, "dapll2", 1, 40),
153 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48), 156 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48),
157 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 48),
154 UNIPHIER_PRO5_SYS_CLK_NAND(2), 158 UNIPHIER_PRO5_SYS_CLK_NAND(2),
155 UNIPHIER_SYS_CLK_NAND_4X(3), 159 UNIPHIER_SYS_CLK_NAND_4X(3),
156 UNIPHIER_PRO5_SYS_CLK_SD, 160 UNIPHIER_PRO5_SYS_CLK_SD,
@@ -167,6 +171,7 @@ const struct uniphier_clk_data uniphier_pxs2_sys_clk_data[] = {
167 UNIPHIER_CLK_FACTOR("spll", -1, "ref", 96, 1), /* 2400 MHz */ 171 UNIPHIER_CLK_FACTOR("spll", -1, "ref", 96, 1), /* 2400 MHz */
168 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 27), 172 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 27),
169 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48), 173 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 48),
174 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 48),
170 UNIPHIER_PRO5_SYS_CLK_NAND(2), 175 UNIPHIER_PRO5_SYS_CLK_NAND(2),
171 UNIPHIER_SYS_CLK_NAND_4X(3), 176 UNIPHIER_SYS_CLK_NAND_4X(3),
172 UNIPHIER_PRO5_SYS_CLK_SD, 177 UNIPHIER_PRO5_SYS_CLK_SD,
@@ -193,6 +198,7 @@ const struct uniphier_clk_data uniphier_ld11_sys_clk_data[] = {
193 UNIPHIER_CLK_FACTOR("vspll", -1, "ref", 80, 1), /* 2000 MHz */ 198 UNIPHIER_CLK_FACTOR("vspll", -1, "ref", 80, 1), /* 2000 MHz */
194 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34), 199 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34),
195 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40), 200 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40),
201 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 40),
196 UNIPHIER_LD11_SYS_CLK_NAND(2), 202 UNIPHIER_LD11_SYS_CLK_NAND(2),
197 UNIPHIER_SYS_CLK_NAND_4X(3), 203 UNIPHIER_SYS_CLK_NAND_4X(3),
198 UNIPHIER_LD11_SYS_CLK_EMMC(4), 204 UNIPHIER_LD11_SYS_CLK_EMMC(4),
@@ -227,6 +233,7 @@ const struct uniphier_clk_data uniphier_ld20_sys_clk_data[] = {
227 UNIPHIER_CLK_FACTOR("vppll", -1, "ref", 504, 5), /* 2520 MHz */ 233 UNIPHIER_CLK_FACTOR("vppll", -1, "ref", 504, 5), /* 2520 MHz */
228 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34), 234 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34),
229 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40), 235 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40),
236 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 40),
230 UNIPHIER_LD11_SYS_CLK_NAND(2), 237 UNIPHIER_LD11_SYS_CLK_NAND(2),
231 UNIPHIER_SYS_CLK_NAND_4X(3), 238 UNIPHIER_SYS_CLK_NAND_4X(3),
232 UNIPHIER_LD11_SYS_CLK_EMMC(4), 239 UNIPHIER_LD11_SYS_CLK_EMMC(4),
@@ -271,6 +278,7 @@ const struct uniphier_clk_data uniphier_pxs3_sys_clk_data[] = {
271 UNIPHIER_CLK_FACTOR("s2pll", -1, "ref", 88, 1), /* IPP: 2400 MHz */ 278 UNIPHIER_CLK_FACTOR("s2pll", -1, "ref", 88, 1), /* IPP: 2400 MHz */
272 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34), 279 UNIPHIER_CLK_FACTOR("uart", 0, "spll", 1, 34),
273 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40), 280 UNIPHIER_CLK_FACTOR("i2c", 1, "spll", 1, 40),
281 UNIPHIER_CLK_FACTOR("spi", -1, "spll", 1, 40),
274 UNIPHIER_LD20_SYS_CLK_SD, 282 UNIPHIER_LD20_SYS_CLK_SD,
275 UNIPHIER_LD11_SYS_CLK_NAND(2), 283 UNIPHIER_LD11_SYS_CLK_NAND(2),
276 UNIPHIER_SYS_CLK_NAND_4X(3), 284 UNIPHIER_SYS_CLK_NAND_4X(3),