diff options
| author | Pramod Kumar <pramod.kumar@broadcom.com> | 2018-06-01 20:56:07 -0400 |
|---|---|---|
| committer | Stephen Boyd <sboyd@kernel.org> | 2018-06-02 02:26:37 -0400 |
| commit | 5afa881c6635427e68c73861a2c22d8cac00b984 (patch) | |
| tree | d6759894436561203094b1bce677d02be81eb313 | |
| parent | 48bf9a522c14449cc7c214c6062668ac54e4e88f (diff) | |
clk: bcm: Update and add Stingray clock entries
Update and add Stingray clock definitions and tables so they match the
binding document and the latest ASIC datasheet
Signed-off-by: Pramod Kumar <pramod.kumar@broadcom.com>
Signed-off-by: Ray Jui <ray.jui@broadcom.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
| -rw-r--r-- | drivers/clk/bcm/clk-sr.c | 135 |
1 files changed, 120 insertions, 15 deletions
diff --git a/drivers/clk/bcm/clk-sr.c b/drivers/clk/bcm/clk-sr.c index adc74f4584cf..7b9efc0212a8 100644 --- a/drivers/clk/bcm/clk-sr.c +++ b/drivers/clk/bcm/clk-sr.c | |||
| @@ -56,8 +56,8 @@ static const struct iproc_pll_ctrl sr_genpll0 = { | |||
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | static const struct iproc_clk_ctrl sr_genpll0_clk[] = { | 58 | static const struct iproc_clk_ctrl sr_genpll0_clk[] = { |
| 59 | [BCM_SR_GENPLL0_SATA_CLK] = { | 59 | [BCM_SR_GENPLL0_125M_CLK] = { |
| 60 | .channel = BCM_SR_GENPLL0_SATA_CLK, | 60 | .channel = BCM_SR_GENPLL0_125M_CLK, |
| 61 | .flags = IPROC_CLK_AON, | 61 | .flags = IPROC_CLK_AON, |
| 62 | .enable = ENABLE_VAL(0x4, 6, 0, 12), | 62 | .enable = ENABLE_VAL(0x4, 6, 0, 12), |
| 63 | .mdiv = REG_VAL(0x18, 0, 9), | 63 | .mdiv = REG_VAL(0x18, 0, 9), |
| @@ -102,6 +102,65 @@ static int sr_genpll0_clk_init(struct platform_device *pdev) | |||
| 102 | return 0; | 102 | return 0; |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | static const struct iproc_pll_ctrl sr_genpll2 = { | ||
| 106 | .flags = IPROC_CLK_AON | IPROC_CLK_PLL_HAS_NDIV_FRAC | | ||
| 107 | IPROC_CLK_PLL_NEEDS_SW_CFG, | ||
| 108 | .aon = AON_VAL(0x0, 1, 13, 12), | ||
| 109 | .reset = RESET_VAL(0x0, 12, 11), | ||
| 110 | .dig_filter = DF_VAL(0x0, 4, 3, 0, 4, 7, 3), | ||
| 111 | .sw_ctrl = SW_CTRL_VAL(0x10, 31), | ||
| 112 | .ndiv_int = REG_VAL(0x10, 20, 10), | ||
| 113 | .ndiv_frac = REG_VAL(0x10, 0, 20), | ||
| 114 | .pdiv = REG_VAL(0x14, 0, 4), | ||
| 115 | .status = REG_VAL(0x30, 12, 1), | ||
| 116 | }; | ||
| 117 | |||
| 118 | static const struct iproc_clk_ctrl sr_genpll2_clk[] = { | ||
| 119 | [BCM_SR_GENPLL2_NIC_CLK] = { | ||
| 120 | .channel = BCM_SR_GENPLL2_NIC_CLK, | ||
| 121 | .flags = IPROC_CLK_AON, | ||
| 122 | .enable = ENABLE_VAL(0x4, 6, 0, 12), | ||
| 123 | .mdiv = REG_VAL(0x18, 0, 9), | ||
| 124 | }, | ||
| 125 | [BCM_SR_GENPLL2_TS_500_CLK] = { | ||
| 126 | .channel = BCM_SR_GENPLL2_TS_500_CLK, | ||
| 127 | .flags = IPROC_CLK_AON, | ||
| 128 | .enable = ENABLE_VAL(0x4, 7, 1, 13), | ||
| 129 | .mdiv = REG_VAL(0x18, 10, 9), | ||
| 130 | }, | ||
| 131 | [BCM_SR_GENPLL2_125_NITRO_CLK] = { | ||
| 132 | .channel = BCM_SR_GENPLL2_125_NITRO_CLK, | ||
| 133 | .flags = IPROC_CLK_AON, | ||
| 134 | .enable = ENABLE_VAL(0x4, 8, 2, 14), | ||
| 135 | .mdiv = REG_VAL(0x18, 20, 9), | ||
| 136 | }, | ||
| 137 | [BCM_SR_GENPLL2_CHIMP_CLK] = { | ||
| 138 | .channel = BCM_SR_GENPLL2_CHIMP_CLK, | ||
| 139 | .flags = IPROC_CLK_AON, | ||
| 140 | .enable = ENABLE_VAL(0x4, 9, 3, 15), | ||
| 141 | .mdiv = REG_VAL(0x1c, 0, 9), | ||
| 142 | }, | ||
| 143 | [BCM_SR_GENPLL2_NIC_FLASH_CLK] = { | ||
| 144 | .channel = BCM_SR_GENPLL2_NIC_FLASH_CLK, | ||
| 145 | .flags = IPROC_CLK_AON, | ||
| 146 | .enable = ENABLE_VAL(0x4, 10, 4, 16), | ||
| 147 | .mdiv = REG_VAL(0x1c, 10, 9), | ||
| 148 | }, | ||
| 149 | [BCM_SR_GENPLL2_FS4_CLK] = { | ||
| 150 | .channel = BCM_SR_GENPLL2_FS4_CLK, | ||
| 151 | .enable = ENABLE_VAL(0x4, 11, 5, 17), | ||
| 152 | .mdiv = REG_VAL(0x1c, 20, 9), | ||
| 153 | }, | ||
| 154 | }; | ||
| 155 | |||
| 156 | static int sr_genpll2_clk_init(struct platform_device *pdev) | ||
| 157 | { | ||
| 158 | iproc_pll_clk_setup(pdev->dev.of_node, | ||
| 159 | &sr_genpll2, NULL, 0, sr_genpll2_clk, | ||
| 160 | ARRAY_SIZE(sr_genpll2_clk)); | ||
| 161 | return 0; | ||
| 162 | } | ||
| 163 | |||
| 105 | static const struct iproc_pll_ctrl sr_genpll3 = { | 164 | static const struct iproc_pll_ctrl sr_genpll3 = { |
| 106 | .flags = IPROC_CLK_AON | IPROC_CLK_PLL_HAS_NDIV_FRAC | | 165 | .flags = IPROC_CLK_AON | IPROC_CLK_PLL_HAS_NDIV_FRAC | |
| 107 | IPROC_CLK_PLL_NEEDS_SW_CFG, | 166 | IPROC_CLK_PLL_NEEDS_SW_CFG, |
| @@ -157,6 +216,30 @@ static const struct iproc_clk_ctrl sr_genpll4_clk[] = { | |||
| 157 | .enable = ENABLE_VAL(0x4, 6, 0, 12), | 216 | .enable = ENABLE_VAL(0x4, 6, 0, 12), |
| 158 | .mdiv = REG_VAL(0x18, 0, 9), | 217 | .mdiv = REG_VAL(0x18, 0, 9), |
| 159 | }, | 218 | }, |
| 219 | [BCM_SR_GENPLL4_TPIU_PLL_CLK] = { | ||
| 220 | .channel = BCM_SR_GENPLL4_TPIU_PLL_CLK, | ||
| 221 | .flags = IPROC_CLK_AON, | ||
| 222 | .enable = ENABLE_VAL(0x4, 7, 1, 13), | ||
| 223 | .mdiv = REG_VAL(0x18, 10, 9), | ||
| 224 | }, | ||
| 225 | [BCM_SR_GENPLL4_NOC_CLK] = { | ||
| 226 | .channel = BCM_SR_GENPLL4_NOC_CLK, | ||
| 227 | .flags = IPROC_CLK_AON, | ||
| 228 | .enable = ENABLE_VAL(0x4, 8, 2, 14), | ||
| 229 | .mdiv = REG_VAL(0x18, 20, 9), | ||
| 230 | }, | ||
| 231 | [BCM_SR_GENPLL4_CHCLK_FS4_CLK] = { | ||
| 232 | .channel = BCM_SR_GENPLL4_CHCLK_FS4_CLK, | ||
| 233 | .flags = IPROC_CLK_AON, | ||
| 234 | .enable = ENABLE_VAL(0x4, 9, 3, 15), | ||
| 235 | .mdiv = REG_VAL(0x1c, 0, 9), | ||
| 236 | }, | ||
| 237 | [BCM_SR_GENPLL4_BRIDGE_FSCPU_CLK] = { | ||
| 238 | .channel = BCM_SR_GENPLL4_BRIDGE_FSCPU_CLK, | ||
| 239 | .flags = IPROC_CLK_AON, | ||
| 240 | .enable = ENABLE_VAL(0x4, 10, 4, 16), | ||
| 241 | .mdiv = REG_VAL(0x1c, 10, 9), | ||
| 242 | }, | ||
| 160 | }; | 243 | }; |
| 161 | 244 | ||
| 162 | static int sr_genpll4_clk_init(struct platform_device *pdev) | 245 | static int sr_genpll4_clk_init(struct platform_device *pdev) |
| @@ -181,18 +264,21 @@ static const struct iproc_pll_ctrl sr_genpll5 = { | |||
| 181 | }; | 264 | }; |
| 182 | 265 | ||
| 183 | static const struct iproc_clk_ctrl sr_genpll5_clk[] = { | 266 | static const struct iproc_clk_ctrl sr_genpll5_clk[] = { |
| 184 | [BCM_SR_GENPLL5_FS_CLK] = { | 267 | [BCM_SR_GENPLL5_FS4_HF_CLK] = { |
| 185 | .channel = BCM_SR_GENPLL5_FS_CLK, | 268 | .channel = BCM_SR_GENPLL5_FS4_HF_CLK, |
| 186 | .flags = IPROC_CLK_AON, | ||
| 187 | .enable = ENABLE_VAL(0x4, 6, 0, 12), | 269 | .enable = ENABLE_VAL(0x4, 6, 0, 12), |
| 188 | .mdiv = REG_VAL(0x18, 0, 9), | 270 | .mdiv = REG_VAL(0x18, 0, 9), |
| 189 | }, | 271 | }, |
| 190 | [BCM_SR_GENPLL5_SPU_CLK] = { | 272 | [BCM_SR_GENPLL5_CRYPTO_AE_CLK] = { |
| 191 | .channel = BCM_SR_GENPLL5_SPU_CLK, | 273 | .channel = BCM_SR_GENPLL5_CRYPTO_AE_CLK, |
| 192 | .flags = IPROC_CLK_AON, | 274 | .enable = ENABLE_VAL(0x4, 7, 1, 12), |
| 193 | .enable = ENABLE_VAL(0x4, 6, 0, 12), | ||
| 194 | .mdiv = REG_VAL(0x18, 10, 9), | 275 | .mdiv = REG_VAL(0x18, 10, 9), |
| 195 | }, | 276 | }, |
| 277 | [BCM_SR_GENPLL5_RAID_AE_CLK] = { | ||
| 278 | .channel = BCM_SR_GENPLL5_RAID_AE_CLK, | ||
| 279 | .enable = ENABLE_VAL(0x4, 8, 2, 14), | ||
| 280 | .mdiv = REG_VAL(0x18, 20, 9), | ||
| 281 | }, | ||
| 196 | }; | 282 | }; |
| 197 | 283 | ||
| 198 | static int sr_genpll5_clk_init(struct platform_device *pdev) | 284 | static int sr_genpll5_clk_init(struct platform_device *pdev) |
| @@ -214,24 +300,30 @@ static const struct iproc_pll_ctrl sr_lcpll0 = { | |||
| 214 | }; | 300 | }; |
| 215 | 301 | ||
| 216 | static const struct iproc_clk_ctrl sr_lcpll0_clk[] = { | 302 | static const struct iproc_clk_ctrl sr_lcpll0_clk[] = { |
| 217 | [BCM_SR_LCPLL0_SATA_REF_CLK] = { | 303 | [BCM_SR_LCPLL0_SATA_REFP_CLK] = { |
| 218 | .channel = BCM_SR_LCPLL0_SATA_REF_CLK, | 304 | .channel = BCM_SR_LCPLL0_SATA_REFP_CLK, |
| 219 | .flags = IPROC_CLK_AON, | 305 | .flags = IPROC_CLK_AON, |
| 220 | .enable = ENABLE_VAL(0x0, 7, 1, 13), | 306 | .enable = ENABLE_VAL(0x0, 7, 1, 13), |
| 221 | .mdiv = REG_VAL(0x14, 0, 9), | 307 | .mdiv = REG_VAL(0x14, 0, 9), |
| 222 | }, | 308 | }, |
| 223 | [BCM_SR_LCPLL0_USB_REF_CLK] = { | 309 | [BCM_SR_LCPLL0_SATA_REFN_CLK] = { |
| 224 | .channel = BCM_SR_LCPLL0_USB_REF_CLK, | 310 | .channel = BCM_SR_LCPLL0_SATA_REFN_CLK, |
| 225 | .flags = IPROC_CLK_AON, | 311 | .flags = IPROC_CLK_AON, |
| 226 | .enable = ENABLE_VAL(0x0, 8, 2, 14), | 312 | .enable = ENABLE_VAL(0x0, 8, 2, 14), |
| 227 | .mdiv = REG_VAL(0x14, 10, 9), | 313 | .mdiv = REG_VAL(0x14, 10, 9), |
| 228 | }, | 314 | }, |
| 229 | [BCM_SR_LCPLL0_SATA_REFPN_CLK] = { | 315 | [BCM_SR_LCPLL0_SATA_350_CLK] = { |
| 230 | .channel = BCM_SR_LCPLL0_SATA_REFPN_CLK, | 316 | .channel = BCM_SR_LCPLL0_SATA_350_CLK, |
| 231 | .flags = IPROC_CLK_AON, | 317 | .flags = IPROC_CLK_AON, |
| 232 | .enable = ENABLE_VAL(0x0, 9, 3, 15), | 318 | .enable = ENABLE_VAL(0x0, 9, 3, 15), |
| 233 | .mdiv = REG_VAL(0x14, 20, 9), | 319 | .mdiv = REG_VAL(0x14, 20, 9), |
| 234 | }, | 320 | }, |
| 321 | [BCM_SR_LCPLL0_SATA_500_CLK] = { | ||
| 322 | .channel = BCM_SR_LCPLL0_SATA_500_CLK, | ||
| 323 | .flags = IPROC_CLK_AON, | ||
| 324 | .enable = ENABLE_VAL(0x0, 10, 4, 16), | ||
| 325 | .mdiv = REG_VAL(0x18, 0, 9), | ||
| 326 | }, | ||
| 235 | }; | 327 | }; |
| 236 | 328 | ||
| 237 | static int sr_lcpll0_clk_init(struct platform_device *pdev) | 329 | static int sr_lcpll0_clk_init(struct platform_device *pdev) |
| @@ -259,6 +351,18 @@ static const struct iproc_clk_ctrl sr_lcpll1_clk[] = { | |||
| 259 | .enable = ENABLE_VAL(0x0, 7, 1, 13), | 351 | .enable = ENABLE_VAL(0x0, 7, 1, 13), |
| 260 | .mdiv = REG_VAL(0x14, 0, 9), | 352 | .mdiv = REG_VAL(0x14, 0, 9), |
| 261 | }, | 353 | }, |
| 354 | [BCM_SR_LCPLL1_USB_REF_CLK] = { | ||
| 355 | .channel = BCM_SR_LCPLL1_USB_REF_CLK, | ||
| 356 | .flags = IPROC_CLK_AON, | ||
| 357 | .enable = ENABLE_VAL(0x0, 8, 2, 14), | ||
| 358 | .mdiv = REG_VAL(0x14, 10, 9), | ||
| 359 | }, | ||
| 360 | [BCM_SR_LCPLL1_CRMU_TS_CLK] = { | ||
| 361 | .channel = BCM_SR_LCPLL1_CRMU_TS_CLK, | ||
| 362 | .flags = IPROC_CLK_AON, | ||
| 363 | .enable = ENABLE_VAL(0x0, 9, 3, 15), | ||
| 364 | .mdiv = REG_VAL(0x14, 20, 9), | ||
| 365 | }, | ||
| 262 | }; | 366 | }; |
| 263 | 367 | ||
| 264 | static int sr_lcpll1_clk_init(struct platform_device *pdev) | 368 | static int sr_lcpll1_clk_init(struct platform_device *pdev) |
| @@ -298,6 +402,7 @@ static int sr_lcpll_pcie_clk_init(struct platform_device *pdev) | |||
| 298 | 402 | ||
| 299 | static const struct of_device_id sr_clk_dt_ids[] = { | 403 | static const struct of_device_id sr_clk_dt_ids[] = { |
| 300 | { .compatible = "brcm,sr-genpll0", .data = sr_genpll0_clk_init }, | 404 | { .compatible = "brcm,sr-genpll0", .data = sr_genpll0_clk_init }, |
| 405 | { .compatible = "brcm,sr-genpll2", .data = sr_genpll2_clk_init }, | ||
| 301 | { .compatible = "brcm,sr-genpll4", .data = sr_genpll4_clk_init }, | 406 | { .compatible = "brcm,sr-genpll4", .data = sr_genpll4_clk_init }, |
| 302 | { .compatible = "brcm,sr-genpll5", .data = sr_genpll5_clk_init }, | 407 | { .compatible = "brcm,sr-genpll5", .data = sr_genpll5_clk_init }, |
| 303 | { .compatible = "brcm,sr-lcpll0", .data = sr_lcpll0_clk_init }, | 408 | { .compatible = "brcm,sr-lcpll0", .data = sr_lcpll0_clk_init }, |
