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 /drivers/clk/st | |
| 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>
Diffstat (limited to 'drivers/clk/st')
| -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 | ||
