diff options
author | Gabriel FERNANDEZ <gabriel.fernandez@st.com> | 2014-07-15 11:20:27 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2014-07-29 01:36:54 -0400 |
commit | 51306d56ba81dc2bded042188706481f0c84d379 (patch) | |
tree | d6f61bcde203dc15a849cd948096bf5cd15c303c | |
parent | fc755c8bc8f155980077cb015020ec0a97ebc5c6 (diff) |
clk: st: STiH407: Support for clockgenC0
The patch added support for DT registration of ClockGenC0
It includes 2 c32 type PLL and a 660 Quadfs.
Signed-off-by: Gabriel Fernandez <gabriel.fernandez@linaro.org>
Signed-off-by: Olivier Bideau <olivier.bideau@st.com>
Acked-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
-rw-r--r-- | drivers/clk/st/clkgen-fsyn.c | 51 | ||||
-rw-r--r-- | drivers/clk/st/clkgen-pll.c | 32 |
2 files changed, 83 insertions, 0 deletions
diff --git a/drivers/clk/st/clkgen-fsyn.c b/drivers/clk/st/clkgen-fsyn.c index 4cd10b2e3b15..84fcf715bf96 100644 --- a/drivers/clk/st/clkgen-fsyn.c +++ b/drivers/clk/st/clkgen-fsyn.c | |||
@@ -255,6 +255,49 @@ static const struct clkgen_quadfs_data st_fs660c32_F_416 = { | |||
255 | .get_rate = clk_fs660c32_dig_get_rate, | 255 | .get_rate = clk_fs660c32_dig_get_rate, |
256 | }; | 256 | }; |
257 | 257 | ||
258 | static const struct clkgen_quadfs_data st_fs660c32_C_407 = { | ||
259 | .nrst_present = true, | ||
260 | .nrst = { CLKGEN_FIELD(0x2f0, 0x1, 0), | ||
261 | CLKGEN_FIELD(0x2f0, 0x1, 1), | ||
262 | CLKGEN_FIELD(0x2f0, 0x1, 2), | ||
263 | CLKGEN_FIELD(0x2f0, 0x1, 3) }, | ||
264 | .npda = CLKGEN_FIELD(0x2f0, 0x1, 12), | ||
265 | .nsb = { CLKGEN_FIELD(0x2f0, 0x1, 8), | ||
266 | CLKGEN_FIELD(0x2f0, 0x1, 9), | ||
267 | CLKGEN_FIELD(0x2f0, 0x1, 10), | ||
268 | CLKGEN_FIELD(0x2f0, 0x1, 11) }, | ||
269 | .nsdiv_present = true, | ||
270 | .nsdiv = { CLKGEN_FIELD(0x304, 0x1, 24), | ||
271 | CLKGEN_FIELD(0x308, 0x1, 24), | ||
272 | CLKGEN_FIELD(0x30c, 0x1, 24), | ||
273 | CLKGEN_FIELD(0x310, 0x1, 24) }, | ||
274 | .mdiv = { CLKGEN_FIELD(0x304, 0x1f, 15), | ||
275 | CLKGEN_FIELD(0x308, 0x1f, 15), | ||
276 | CLKGEN_FIELD(0x30c, 0x1f, 15), | ||
277 | CLKGEN_FIELD(0x310, 0x1f, 15) }, | ||
278 | .en = { CLKGEN_FIELD(0x2fc, 0x1, 0), | ||
279 | CLKGEN_FIELD(0x2fc, 0x1, 1), | ||
280 | CLKGEN_FIELD(0x2fc, 0x1, 2), | ||
281 | CLKGEN_FIELD(0x2fc, 0x1, 3) }, | ||
282 | .ndiv = CLKGEN_FIELD(0x2f4, 0x7, 16), | ||
283 | .pe = { CLKGEN_FIELD(0x304, 0x7fff, 0), | ||
284 | CLKGEN_FIELD(0x308, 0x7fff, 0), | ||
285 | CLKGEN_FIELD(0x30c, 0x7fff, 0), | ||
286 | CLKGEN_FIELD(0x310, 0x7fff, 0) }, | ||
287 | .sdiv = { CLKGEN_FIELD(0x304, 0xf, 20), | ||
288 | CLKGEN_FIELD(0x308, 0xf, 20), | ||
289 | CLKGEN_FIELD(0x30c, 0xf, 20), | ||
290 | CLKGEN_FIELD(0x310, 0xf, 20) }, | ||
291 | .lockstatus_present = true, | ||
292 | .lock_status = CLKGEN_FIELD(0x2A0, 0x1, 24), | ||
293 | .powerup_polarity = 1, | ||
294 | .standby_polarity = 1, | ||
295 | .pll_ops = &st_quadfs_pll_c32_ops, | ||
296 | .rtbl = fs660c32_rtbl, | ||
297 | .rtbl_cnt = ARRAY_SIZE(fs660c32_rtbl), | ||
298 | .get_rate = clk_fs660c32_dig_get_rate, | ||
299 | }; | ||
300 | |||
258 | /** | 301 | /** |
259 | * DOC: A Frequency Synthesizer that multiples its input clock by a fixed factor | 302 | * DOC: A Frequency Synthesizer that multiples its input clock by a fixed factor |
260 | * | 303 | * |
@@ -938,6 +981,14 @@ static struct of_device_id quadfs_of_match[] = { | |||
938 | .compatible = "st,stih416-quadfs660-F", | 981 | .compatible = "st,stih416-quadfs660-F", |
939 | .data = &st_fs660c32_F_416 | 982 | .data = &st_fs660c32_F_416 |
940 | }, | 983 | }, |
984 | { | ||
985 | .compatible = "st,stih407-quadfs660-C", | ||
986 | .data = &st_fs660c32_C_407 | ||
987 | }, | ||
988 | { | ||
989 | .compatible = "st,stih407-quadfs660-D", | ||
990 | .data = &st_fs660c32_D_407 | ||
991 | }, | ||
941 | {} | 992 | {} |
942 | }; | 993 | }; |
943 | 994 | ||
diff --git a/drivers/clk/st/clkgen-pll.c b/drivers/clk/st/clkgen-pll.c index d4ef4f479776..5327a7474c53 100644 --- a/drivers/clk/st/clkgen-pll.c +++ b/drivers/clk/st/clkgen-pll.c | |||
@@ -192,6 +192,30 @@ static const struct clkgen_pll_data st_pll3200c32_407_a0 = { | |||
192 | .ops = &stm_pll3200c32_ops, | 192 | .ops = &stm_pll3200c32_ops, |
193 | }; | 193 | }; |
194 | 194 | ||
195 | static const struct clkgen_pll_data st_pll3200c32_407_c0_0 = { | ||
196 | /* 407 C0 PLL0 */ | ||
197 | .pdn_status = CLKGEN_FIELD(0x2a0, 0x1, 8), | ||
198 | .locked_status = CLKGEN_FIELD(0x2a0, 0x1, 24), | ||
199 | .ndiv = CLKGEN_FIELD(0x2a4, C32_NDIV_MASK, 16), | ||
200 | .idf = CLKGEN_FIELD(0x2a4, C32_IDF_MASK, 0x0), | ||
201 | .num_odfs = 1, | ||
202 | .odf = { CLKGEN_FIELD(0x2b4, C32_ODF_MASK, 0) }, | ||
203 | .odf_gate = { CLKGEN_FIELD(0x2b4, 0x1, 6) }, | ||
204 | .ops = &stm_pll3200c32_ops, | ||
205 | }; | ||
206 | |||
207 | static const struct clkgen_pll_data st_pll3200c32_407_c0_1 = { | ||
208 | /* 407 C0 PLL1 */ | ||
209 | .pdn_status = CLKGEN_FIELD(0x2c8, 0x1, 8), | ||
210 | .locked_status = CLKGEN_FIELD(0x2c8, 0x1, 24), | ||
211 | .ndiv = CLKGEN_FIELD(0x2cc, C32_NDIV_MASK, 16), | ||
212 | .idf = CLKGEN_FIELD(0x2cc, C32_IDF_MASK, 0x0), | ||
213 | .num_odfs = 1, | ||
214 | .odf = { CLKGEN_FIELD(0x2dc, C32_ODF_MASK, 0) }, | ||
215 | .odf_gate = { CLKGEN_FIELD(0x2dc, 0x1, 6) }, | ||
216 | .ops = &stm_pll3200c32_ops, | ||
217 | }; | ||
218 | |||
195 | /** | 219 | /** |
196 | * DOC: Clock Generated by PLL, rate set and enabled by bootloader | 220 | * DOC: Clock Generated by PLL, rate set and enabled by bootloader |
197 | * | 221 | * |
@@ -586,6 +610,14 @@ static struct of_device_id c32_pll_of_match[] = { | |||
586 | .compatible = "st,stih407-plls-c32-a0", | 610 | .compatible = "st,stih407-plls-c32-a0", |
587 | .data = &st_pll3200c32_407_a0, | 611 | .data = &st_pll3200c32_407_a0, |
588 | }, | 612 | }, |
613 | { | ||
614 | .compatible = "st,stih407-plls-c32-c0_0", | ||
615 | .data = &st_pll3200c32_407_c0_0, | ||
616 | }, | ||
617 | { | ||
618 | .compatible = "st,stih407-plls-c32-c0_1", | ||
619 | .data = &st_pll3200c32_407_c0_1, | ||
620 | }, | ||
589 | {} | 621 | {} |
590 | }; | 622 | }; |
591 | 623 | ||