0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <linux/clkdev.h>
0012 #include <linux/clk/spear.h>
0013 #include <linux/err.h>
0014 #include <linux/io.h>
0015 #include <linux/of_platform.h>
0016 #include <linux/spinlock_types.h>
0017 #include "clk.h"
0018
0019
0020 #define SPEAR1310_PLL_CFG (misc_base + 0x210)
0021
0022 #define SPEAR1310_CLCD_SYNT_CLK_MASK 1
0023 #define SPEAR1310_CLCD_SYNT_CLK_SHIFT 31
0024 #define SPEAR1310_RAS_SYNT2_3_CLK_MASK 2
0025 #define SPEAR1310_RAS_SYNT2_3_CLK_SHIFT 29
0026 #define SPEAR1310_RAS_SYNT_CLK_MASK 2
0027 #define SPEAR1310_RAS_SYNT0_1_CLK_SHIFT 27
0028 #define SPEAR1310_PLL_CLK_MASK 2
0029 #define SPEAR1310_PLL3_CLK_SHIFT 24
0030 #define SPEAR1310_PLL2_CLK_SHIFT 22
0031 #define SPEAR1310_PLL1_CLK_SHIFT 20
0032
0033 #define SPEAR1310_PLL1_CTR (misc_base + 0x214)
0034 #define SPEAR1310_PLL1_FRQ (misc_base + 0x218)
0035 #define SPEAR1310_PLL2_CTR (misc_base + 0x220)
0036 #define SPEAR1310_PLL2_FRQ (misc_base + 0x224)
0037 #define SPEAR1310_PLL3_CTR (misc_base + 0x22C)
0038 #define SPEAR1310_PLL3_FRQ (misc_base + 0x230)
0039 #define SPEAR1310_PLL4_CTR (misc_base + 0x238)
0040 #define SPEAR1310_PLL4_FRQ (misc_base + 0x23C)
0041 #define SPEAR1310_PERIP_CLK_CFG (misc_base + 0x244)
0042
0043 #define SPEAR1310_GPT_OSC24_VAL 0
0044 #define SPEAR1310_GPT_APB_VAL 1
0045 #define SPEAR1310_GPT_CLK_MASK 1
0046 #define SPEAR1310_GPT3_CLK_SHIFT 11
0047 #define SPEAR1310_GPT2_CLK_SHIFT 10
0048 #define SPEAR1310_GPT1_CLK_SHIFT 9
0049 #define SPEAR1310_GPT0_CLK_SHIFT 8
0050 #define SPEAR1310_UART_CLK_PLL5_VAL 0
0051 #define SPEAR1310_UART_CLK_OSC24_VAL 1
0052 #define SPEAR1310_UART_CLK_SYNT_VAL 2
0053 #define SPEAR1310_UART_CLK_MASK 2
0054 #define SPEAR1310_UART_CLK_SHIFT 4
0055
0056 #define SPEAR1310_AUX_CLK_PLL5_VAL 0
0057 #define SPEAR1310_AUX_CLK_SYNT_VAL 1
0058 #define SPEAR1310_CLCD_CLK_MASK 2
0059 #define SPEAR1310_CLCD_CLK_SHIFT 2
0060 #define SPEAR1310_C3_CLK_MASK 1
0061 #define SPEAR1310_C3_CLK_SHIFT 1
0062
0063 #define SPEAR1310_GMAC_CLK_CFG (misc_base + 0x248)
0064 #define SPEAR1310_GMAC_PHY_IF_SEL_MASK 3
0065 #define SPEAR1310_GMAC_PHY_IF_SEL_SHIFT 4
0066 #define SPEAR1310_GMAC_PHY_CLK_MASK 1
0067 #define SPEAR1310_GMAC_PHY_CLK_SHIFT 3
0068 #define SPEAR1310_GMAC_PHY_INPUT_CLK_MASK 2
0069 #define SPEAR1310_GMAC_PHY_INPUT_CLK_SHIFT 1
0070
0071 #define SPEAR1310_I2S_CLK_CFG (misc_base + 0x24C)
0072
0073 #define SPEAR1310_I2S_SCLK_X_MASK 0x1F
0074 #define SPEAR1310_I2S_SCLK_X_SHIFT 27
0075 #define SPEAR1310_I2S_SCLK_Y_MASK 0x1F
0076 #define SPEAR1310_I2S_SCLK_Y_SHIFT 22
0077 #define SPEAR1310_I2S_SCLK_EQ_SEL_SHIFT 21
0078 #define SPEAR1310_I2S_SCLK_SYNTH_ENB 20
0079 #define SPEAR1310_I2S_PRS1_CLK_X_MASK 0xFF
0080 #define SPEAR1310_I2S_PRS1_CLK_X_SHIFT 12
0081 #define SPEAR1310_I2S_PRS1_CLK_Y_MASK 0xFF
0082 #define SPEAR1310_I2S_PRS1_CLK_Y_SHIFT 4
0083 #define SPEAR1310_I2S_PRS1_EQ_SEL_SHIFT 3
0084 #define SPEAR1310_I2S_REF_SEL_MASK 1
0085 #define SPEAR1310_I2S_REF_SHIFT 2
0086 #define SPEAR1310_I2S_SRC_CLK_MASK 2
0087 #define SPEAR1310_I2S_SRC_CLK_SHIFT 0
0088
0089 #define SPEAR1310_C3_CLK_SYNT (misc_base + 0x250)
0090 #define SPEAR1310_UART_CLK_SYNT (misc_base + 0x254)
0091 #define SPEAR1310_GMAC_CLK_SYNT (misc_base + 0x258)
0092 #define SPEAR1310_SDHCI_CLK_SYNT (misc_base + 0x25C)
0093 #define SPEAR1310_CFXD_CLK_SYNT (misc_base + 0x260)
0094 #define SPEAR1310_ADC_CLK_SYNT (misc_base + 0x264)
0095 #define SPEAR1310_AMBA_CLK_SYNT (misc_base + 0x268)
0096 #define SPEAR1310_CLCD_CLK_SYNT (misc_base + 0x270)
0097 #define SPEAR1310_RAS_CLK_SYNT0 (misc_base + 0x280)
0098 #define SPEAR1310_RAS_CLK_SYNT1 (misc_base + 0x288)
0099 #define SPEAR1310_RAS_CLK_SYNT2 (misc_base + 0x290)
0100 #define SPEAR1310_RAS_CLK_SYNT3 (misc_base + 0x298)
0101
0102
0103 #define SPEAR1310_PERIP1_CLK_ENB (misc_base + 0x300)
0104
0105 #define SPEAR1310_RTC_CLK_ENB 31
0106 #define SPEAR1310_ADC_CLK_ENB 30
0107 #define SPEAR1310_C3_CLK_ENB 29
0108 #define SPEAR1310_JPEG_CLK_ENB 28
0109 #define SPEAR1310_CLCD_CLK_ENB 27
0110 #define SPEAR1310_DMA_CLK_ENB 25
0111 #define SPEAR1310_GPIO1_CLK_ENB 24
0112 #define SPEAR1310_GPIO0_CLK_ENB 23
0113 #define SPEAR1310_GPT1_CLK_ENB 22
0114 #define SPEAR1310_GPT0_CLK_ENB 21
0115 #define SPEAR1310_I2S0_CLK_ENB 20
0116 #define SPEAR1310_I2S1_CLK_ENB 19
0117 #define SPEAR1310_I2C0_CLK_ENB 18
0118 #define SPEAR1310_SSP_CLK_ENB 17
0119 #define SPEAR1310_UART_CLK_ENB 15
0120 #define SPEAR1310_PCIE_SATA_2_CLK_ENB 14
0121 #define SPEAR1310_PCIE_SATA_1_CLK_ENB 13
0122 #define SPEAR1310_PCIE_SATA_0_CLK_ENB 12
0123 #define SPEAR1310_UOC_CLK_ENB 11
0124 #define SPEAR1310_UHC1_CLK_ENB 10
0125 #define SPEAR1310_UHC0_CLK_ENB 9
0126 #define SPEAR1310_GMAC_CLK_ENB 8
0127 #define SPEAR1310_CFXD_CLK_ENB 7
0128 #define SPEAR1310_SDHCI_CLK_ENB 6
0129 #define SPEAR1310_SMI_CLK_ENB 5
0130 #define SPEAR1310_FSMC_CLK_ENB 4
0131 #define SPEAR1310_SYSRAM0_CLK_ENB 3
0132 #define SPEAR1310_SYSRAM1_CLK_ENB 2
0133 #define SPEAR1310_SYSROM_CLK_ENB 1
0134 #define SPEAR1310_BUS_CLK_ENB 0
0135
0136 #define SPEAR1310_PERIP2_CLK_ENB (misc_base + 0x304)
0137
0138 #define SPEAR1310_THSENS_CLK_ENB 8
0139 #define SPEAR1310_I2S_REF_PAD_CLK_ENB 7
0140 #define SPEAR1310_ACP_CLK_ENB 6
0141 #define SPEAR1310_GPT3_CLK_ENB 5
0142 #define SPEAR1310_GPT2_CLK_ENB 4
0143 #define SPEAR1310_KBD_CLK_ENB 3
0144 #define SPEAR1310_CPU_DBG_CLK_ENB 2
0145 #define SPEAR1310_DDR_CORE_CLK_ENB 1
0146 #define SPEAR1310_DDR_CTRL_CLK_ENB 0
0147
0148 #define SPEAR1310_RAS_CLK_ENB (misc_base + 0x310)
0149
0150 #define SPEAR1310_SYNT3_CLK_ENB 17
0151 #define SPEAR1310_SYNT2_CLK_ENB 16
0152 #define SPEAR1310_SYNT1_CLK_ENB 15
0153 #define SPEAR1310_SYNT0_CLK_ENB 14
0154 #define SPEAR1310_PCLK3_CLK_ENB 13
0155 #define SPEAR1310_PCLK2_CLK_ENB 12
0156 #define SPEAR1310_PCLK1_CLK_ENB 11
0157 #define SPEAR1310_PCLK0_CLK_ENB 10
0158 #define SPEAR1310_PLL3_CLK_ENB 9
0159 #define SPEAR1310_PLL2_CLK_ENB 8
0160 #define SPEAR1310_C125M_PAD_CLK_ENB 7
0161 #define SPEAR1310_C30M_CLK_ENB 6
0162 #define SPEAR1310_C48M_CLK_ENB 5
0163 #define SPEAR1310_OSC_25M_CLK_ENB 4
0164 #define SPEAR1310_OSC_32K_CLK_ENB 3
0165 #define SPEAR1310_OSC_24M_CLK_ENB 2
0166 #define SPEAR1310_PCLK_CLK_ENB 1
0167 #define SPEAR1310_ACLK_CLK_ENB 0
0168
0169
0170 #define SPEAR1310_RAS_CTRL_REG0 (ras_base + 0x000)
0171 #define SPEAR1310_SSP1_CLK_MASK 3
0172 #define SPEAR1310_SSP1_CLK_SHIFT 26
0173 #define SPEAR1310_TDM_CLK_MASK 1
0174 #define SPEAR1310_TDM2_CLK_SHIFT 24
0175 #define SPEAR1310_TDM1_CLK_SHIFT 23
0176 #define SPEAR1310_I2C_CLK_MASK 1
0177 #define SPEAR1310_I2C7_CLK_SHIFT 22
0178 #define SPEAR1310_I2C6_CLK_SHIFT 21
0179 #define SPEAR1310_I2C5_CLK_SHIFT 20
0180 #define SPEAR1310_I2C4_CLK_SHIFT 19
0181 #define SPEAR1310_I2C3_CLK_SHIFT 18
0182 #define SPEAR1310_I2C2_CLK_SHIFT 17
0183 #define SPEAR1310_I2C1_CLK_SHIFT 16
0184 #define SPEAR1310_GPT64_CLK_MASK 1
0185 #define SPEAR1310_GPT64_CLK_SHIFT 15
0186 #define SPEAR1310_RAS_UART_CLK_MASK 1
0187 #define SPEAR1310_UART5_CLK_SHIFT 14
0188 #define SPEAR1310_UART4_CLK_SHIFT 13
0189 #define SPEAR1310_UART3_CLK_SHIFT 12
0190 #define SPEAR1310_UART2_CLK_SHIFT 11
0191 #define SPEAR1310_UART1_CLK_SHIFT 10
0192 #define SPEAR1310_PCI_CLK_MASK 1
0193 #define SPEAR1310_PCI_CLK_SHIFT 0
0194
0195 #define SPEAR1310_RAS_CTRL_REG1 (ras_base + 0x004)
0196 #define SPEAR1310_PHY_CLK_MASK 0x3
0197 #define SPEAR1310_RMII_PHY_CLK_SHIFT 0
0198 #define SPEAR1310_SMII_RGMII_PHY_CLK_SHIFT 2
0199
0200 #define SPEAR1310_RAS_SW_CLK_CTRL (ras_base + 0x0148)
0201 #define SPEAR1310_CAN1_CLK_ENB 25
0202 #define SPEAR1310_CAN0_CLK_ENB 24
0203 #define SPEAR1310_GPT64_CLK_ENB 23
0204 #define SPEAR1310_SSP1_CLK_ENB 22
0205 #define SPEAR1310_I2C7_CLK_ENB 21
0206 #define SPEAR1310_I2C6_CLK_ENB 20
0207 #define SPEAR1310_I2C5_CLK_ENB 19
0208 #define SPEAR1310_I2C4_CLK_ENB 18
0209 #define SPEAR1310_I2C3_CLK_ENB 17
0210 #define SPEAR1310_I2C2_CLK_ENB 16
0211 #define SPEAR1310_I2C1_CLK_ENB 15
0212 #define SPEAR1310_UART5_CLK_ENB 14
0213 #define SPEAR1310_UART4_CLK_ENB 13
0214 #define SPEAR1310_UART3_CLK_ENB 12
0215 #define SPEAR1310_UART2_CLK_ENB 11
0216 #define SPEAR1310_UART1_CLK_ENB 10
0217 #define SPEAR1310_RS485_1_CLK_ENB 9
0218 #define SPEAR1310_RS485_0_CLK_ENB 8
0219 #define SPEAR1310_TDM2_CLK_ENB 7
0220 #define SPEAR1310_TDM1_CLK_ENB 6
0221 #define SPEAR1310_PCI_CLK_ENB 5
0222 #define SPEAR1310_GMII_CLK_ENB 4
0223 #define SPEAR1310_MII2_CLK_ENB 3
0224 #define SPEAR1310_MII1_CLK_ENB 2
0225 #define SPEAR1310_MII0_CLK_ENB 1
0226 #define SPEAR1310_ESRAM_CLK_ENB 0
0227
0228 static DEFINE_SPINLOCK(_lock);
0229
0230
0231 static struct pll_rate_tbl pll_rtbl[] = {
0232
0233 {.mode = 0, .m = 0x83, .n = 0x04, .p = 0x5},
0234 {.mode = 0, .m = 0x7D, .n = 0x06, .p = 0x3},
0235 {.mode = 0, .m = 0x64, .n = 0x06, .p = 0x1},
0236 {.mode = 0, .m = 0x7D, .n = 0x06, .p = 0x1},
0237 {.mode = 0, .m = 0xA6, .n = 0x06, .p = 0x1},
0238 {.mode = 0, .m = 0xC8, .n = 0x06, .p = 0x1},
0239 {.mode = 0, .m = 0x7D, .n = 0x06, .p = 0x0},
0240 };
0241
0242
0243 static struct pll_rate_tbl pll4_rtbl[] = {
0244 {.mode = 0, .m = 0x7D, .n = 0x06, .p = 0x2},
0245 {.mode = 0, .m = 0xA6, .n = 0x06, .p = 0x2},
0246 {.mode = 0, .m = 0xC8, .n = 0x06, .p = 0x2},
0247 {.mode = 0, .m = 0x7D, .n = 0x06, .p = 0x0},
0248 };
0249
0250
0251 static struct aux_rate_tbl aux_rtbl[] = {
0252
0253 {.xscale = 10, .yscale = 204, .eq = 0},
0254 {.xscale = 4, .yscale = 21, .eq = 0},
0255 {.xscale = 2, .yscale = 6, .eq = 0},
0256 {.xscale = 2, .yscale = 4, .eq = 0},
0257 {.xscale = 1, .yscale = 3, .eq = 1},
0258 {.xscale = 1, .yscale = 2, .eq = 1},
0259 };
0260
0261
0262 static struct aux_rate_tbl gmac_rtbl[] = {
0263
0264 {.xscale = 2, .yscale = 6, .eq = 0},
0265 {.xscale = 2, .yscale = 4, .eq = 0},
0266 {.xscale = 1, .yscale = 3, .eq = 1},
0267 {.xscale = 1, .yscale = 2, .eq = 1},
0268 };
0269
0270
0271 static struct frac_rate_tbl clcd_rtbl[] = {
0272 {.div = 0x14000},
0273 {.div = 0x1284B},
0274 {.div = 0x0D8D3},
0275 {.div = 0x0B72C},
0276 {.div = 0x089EE},
0277 {.div = 0x06f1C},
0278 {.div = 0x06E58},
0279 {.div = 0x06c1B},
0280 {.div = 0x04A12},
0281 {.div = 0x0378E},
0282 };
0283
0284
0285 static const struct aux_clk_masks i2s_prs1_masks = {
0286 .eq_sel_mask = AUX_EQ_SEL_MASK,
0287 .eq_sel_shift = SPEAR1310_I2S_PRS1_EQ_SEL_SHIFT,
0288 .eq1_mask = AUX_EQ1_SEL,
0289 .eq2_mask = AUX_EQ2_SEL,
0290 .xscale_sel_mask = SPEAR1310_I2S_PRS1_CLK_X_MASK,
0291 .xscale_sel_shift = SPEAR1310_I2S_PRS1_CLK_X_SHIFT,
0292 .yscale_sel_mask = SPEAR1310_I2S_PRS1_CLK_Y_MASK,
0293 .yscale_sel_shift = SPEAR1310_I2S_PRS1_CLK_Y_SHIFT,
0294 };
0295
0296
0297 static struct aux_clk_masks i2s_sclk_masks = {
0298 .eq_sel_mask = AUX_EQ_SEL_MASK,
0299 .eq_sel_shift = SPEAR1310_I2S_SCLK_EQ_SEL_SHIFT,
0300 .eq1_mask = AUX_EQ1_SEL,
0301 .eq2_mask = AUX_EQ2_SEL,
0302 .xscale_sel_mask = SPEAR1310_I2S_SCLK_X_MASK,
0303 .xscale_sel_shift = SPEAR1310_I2S_SCLK_X_SHIFT,
0304 .yscale_sel_mask = SPEAR1310_I2S_SCLK_Y_MASK,
0305 .yscale_sel_shift = SPEAR1310_I2S_SCLK_Y_SHIFT,
0306 .enable_bit = SPEAR1310_I2S_SCLK_SYNTH_ENB,
0307 };
0308
0309
0310 static struct aux_rate_tbl i2s_prs1_rtbl[] = {
0311
0312 {.xscale = 1, .yscale = 12, .eq = 0},
0313 {.xscale = 11, .yscale = 96, .eq = 0},
0314 {.xscale = 1, .yscale = 6, .eq = 0},
0315 {.xscale = 11, .yscale = 48, .eq = 0},
0316
0317
0318
0319
0320
0321 {.xscale = 1, .yscale = 3, .eq = 0},
0322
0323
0324 {.xscale = 17, .yscale = 37, .eq = 0},
0325
0326 {.xscale = 1, .yscale = 2, .eq = 0},
0327 };
0328
0329
0330 static struct aux_rate_tbl i2s_sclk_rtbl[] = {
0331
0332 {.xscale = 1, .yscale = 4, .eq = 0},
0333 {.xscale = 1, .yscale = 2, .eq = 0},
0334 };
0335
0336
0337
0338 static struct aux_rate_tbl adc_rtbl[] = {
0339
0340 {.xscale = 1, .yscale = 31, .eq = 0},
0341 {.xscale = 2, .yscale = 21, .eq = 0},
0342 {.xscale = 4, .yscale = 21, .eq = 0},
0343 {.xscale = 10, .yscale = 42, .eq = 0},
0344 };
0345
0346
0347 static struct frac_rate_tbl gen_rtbl[] = {
0348
0349 {.div = 0x14000},
0350 {.div = 0x0A000},
0351 {.div = 0x05000},
0352 {.div = 0x02000},
0353 };
0354
0355
0356 static const char *vco_parents[] = { "osc_24m_clk", "osc_25m_clk", };
0357 static const char *gpt_parents[] = { "osc_24m_clk", "apb_clk", };
0358 static const char *uart0_parents[] = { "pll5_clk", "uart_syn_gclk", };
0359 static const char *c3_parents[] = { "pll5_clk", "c3_syn_gclk", };
0360 static const char *gmac_phy_input_parents[] = { "gmii_pad_clk", "pll2_clk",
0361 "osc_25m_clk", };
0362 static const char *gmac_phy_parents[] = { "phy_input_mclk", "phy_syn_gclk", };
0363 static const char *clcd_synth_parents[] = { "vco1div4_clk", "pll2_clk", };
0364 static const char *clcd_pixel_parents[] = { "pll5_clk", "clcd_syn_clk", };
0365 static const char *i2s_src_parents[] = { "vco1div2_clk", "none", "pll3_clk",
0366 "i2s_src_pad_clk", };
0367 static const char *i2s_ref_parents[] = { "i2s_src_mclk", "i2s_prs1_clk", };
0368 static const char *gen_synth0_1_parents[] = { "vco1div4_clk", "vco3div2_clk",
0369 "pll3_clk", };
0370 static const char *gen_synth2_3_parents[] = { "vco1div4_clk", "vco3div2_clk",
0371 "pll2_clk", };
0372 static const char *rmii_phy_parents[] = { "ras_tx50_clk", "none",
0373 "ras_pll2_clk", "ras_syn0_clk", };
0374 static const char *smii_rgmii_phy_parents[] = { "none", "ras_tx125_clk",
0375 "ras_pll2_clk", "ras_syn0_clk", };
0376 static const char *uart_parents[] = { "ras_apb_clk", "gen_syn3_clk", };
0377 static const char *i2c_parents[] = { "ras_apb_clk", "gen_syn1_clk", };
0378 static const char *ssp1_parents[] = { "ras_apb_clk", "gen_syn1_clk",
0379 "ras_plclk0_clk", };
0380 static const char *pci_parents[] = { "ras_pll3_clk", "gen_syn2_clk", };
0381 static const char *tdm_parents[] = { "ras_pll3_clk", "gen_syn1_clk", };
0382
0383 void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base)
0384 {
0385 struct clk *clk, *clk1;
0386
0387 clk = clk_register_fixed_rate(NULL, "osc_32k_clk", NULL, 0, 32000);
0388 clk_register_clkdev(clk, "osc_32k_clk", NULL);
0389
0390 clk = clk_register_fixed_rate(NULL, "osc_24m_clk", NULL, 0, 24000000);
0391 clk_register_clkdev(clk, "osc_24m_clk", NULL);
0392
0393 clk = clk_register_fixed_rate(NULL, "osc_25m_clk", NULL, 0, 25000000);
0394 clk_register_clkdev(clk, "osc_25m_clk", NULL);
0395
0396 clk = clk_register_fixed_rate(NULL, "gmii_pad_clk", NULL, 0, 125000000);
0397 clk_register_clkdev(clk, "gmii_pad_clk", NULL);
0398
0399 clk = clk_register_fixed_rate(NULL, "i2s_src_pad_clk", NULL, 0,
0400 12288000);
0401 clk_register_clkdev(clk, "i2s_src_pad_clk", NULL);
0402
0403
0404 clk = clk_register_gate(NULL, "rtc-spear", "osc_32k_clk", 0,
0405 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_RTC_CLK_ENB, 0,
0406 &_lock);
0407 clk_register_clkdev(clk, NULL, "e0580000.rtc");
0408
0409
0410
0411 clk = clk_register_mux(NULL, "vco1_mclk", vco_parents,
0412 ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT,
0413 SPEAR1310_PLL_CFG, SPEAR1310_PLL1_CLK_SHIFT,
0414 SPEAR1310_PLL_CLK_MASK, 0, &_lock);
0415 clk_register_clkdev(clk, "vco1_mclk", NULL);
0416 clk = clk_register_vco_pll("vco1_clk", "pll1_clk", NULL, "vco1_mclk",
0417 0, SPEAR1310_PLL1_CTR, SPEAR1310_PLL1_FRQ, pll_rtbl,
0418 ARRAY_SIZE(pll_rtbl), &_lock, &clk1, NULL);
0419 clk_register_clkdev(clk, "vco1_clk", NULL);
0420 clk_register_clkdev(clk1, "pll1_clk", NULL);
0421
0422 clk = clk_register_mux(NULL, "vco2_mclk", vco_parents,
0423 ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT,
0424 SPEAR1310_PLL_CFG, SPEAR1310_PLL2_CLK_SHIFT,
0425 SPEAR1310_PLL_CLK_MASK, 0, &_lock);
0426 clk_register_clkdev(clk, "vco2_mclk", NULL);
0427 clk = clk_register_vco_pll("vco2_clk", "pll2_clk", NULL, "vco2_mclk",
0428 0, SPEAR1310_PLL2_CTR, SPEAR1310_PLL2_FRQ, pll_rtbl,
0429 ARRAY_SIZE(pll_rtbl), &_lock, &clk1, NULL);
0430 clk_register_clkdev(clk, "vco2_clk", NULL);
0431 clk_register_clkdev(clk1, "pll2_clk", NULL);
0432
0433 clk = clk_register_mux(NULL, "vco3_mclk", vco_parents,
0434 ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT,
0435 SPEAR1310_PLL_CFG, SPEAR1310_PLL3_CLK_SHIFT,
0436 SPEAR1310_PLL_CLK_MASK, 0, &_lock);
0437 clk_register_clkdev(clk, "vco3_mclk", NULL);
0438 clk = clk_register_vco_pll("vco3_clk", "pll3_clk", NULL, "vco3_mclk",
0439 0, SPEAR1310_PLL3_CTR, SPEAR1310_PLL3_FRQ, pll_rtbl,
0440 ARRAY_SIZE(pll_rtbl), &_lock, &clk1, NULL);
0441 clk_register_clkdev(clk, "vco3_clk", NULL);
0442 clk_register_clkdev(clk1, "pll3_clk", NULL);
0443
0444 clk = clk_register_vco_pll("vco4_clk", "pll4_clk", NULL, "osc_24m_clk",
0445 0, SPEAR1310_PLL4_CTR, SPEAR1310_PLL4_FRQ, pll4_rtbl,
0446 ARRAY_SIZE(pll4_rtbl), &_lock, &clk1, NULL);
0447 clk_register_clkdev(clk, "vco4_clk", NULL);
0448 clk_register_clkdev(clk1, "pll4_clk", NULL);
0449
0450 clk = clk_register_fixed_rate(NULL, "pll5_clk", "osc_24m_clk", 0,
0451 48000000);
0452 clk_register_clkdev(clk, "pll5_clk", NULL);
0453
0454 clk = clk_register_fixed_rate(NULL, "pll6_clk", "osc_25m_clk", 0,
0455 25000000);
0456 clk_register_clkdev(clk, "pll6_clk", NULL);
0457
0458
0459 clk = clk_register_fixed_factor(NULL, "vco1div2_clk", "vco1_clk", 0, 1,
0460 2);
0461 clk_register_clkdev(clk, "vco1div2_clk", NULL);
0462
0463 clk = clk_register_fixed_factor(NULL, "vco1div4_clk", "vco1_clk", 0, 1,
0464 4);
0465 clk_register_clkdev(clk, "vco1div4_clk", NULL);
0466
0467 clk = clk_register_fixed_factor(NULL, "vco2div2_clk", "vco2_clk", 0, 1,
0468 2);
0469 clk_register_clkdev(clk, "vco2div2_clk", NULL);
0470
0471 clk = clk_register_fixed_factor(NULL, "vco3div2_clk", "vco3_clk", 0, 1,
0472 2);
0473 clk_register_clkdev(clk, "vco3div2_clk", NULL);
0474
0475
0476 clk_register_fixed_factor(NULL, "thermal_clk", "osc_24m_clk", 0, 1,
0477 128);
0478 clk = clk_register_gate(NULL, "thermal_gclk", "thermal_clk", 0,
0479 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_THSENS_CLK_ENB, 0,
0480 &_lock);
0481 clk_register_clkdev(clk, NULL, "spear_thermal");
0482
0483
0484 clk = clk_register_fixed_factor(NULL, "ddr_clk", "pll4_clk", 0, 1,
0485 1);
0486 clk_register_clkdev(clk, "ddr_clk", NULL);
0487
0488
0489 clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk",
0490 CLK_SET_RATE_PARENT, 1, 2);
0491 clk_register_clkdev(clk, "cpu_clk", NULL);
0492
0493 clk = clk_register_fixed_factor(NULL, "wdt_clk", "cpu_clk", 0, 1,
0494 2);
0495 clk_register_clkdev(clk, NULL, "ec800620.wdt");
0496
0497 clk = clk_register_fixed_factor(NULL, "smp_twd_clk", "cpu_clk", 0, 1,
0498 2);
0499 clk_register_clkdev(clk, NULL, "smp_twd");
0500
0501 clk = clk_register_fixed_factor(NULL, "ahb_clk", "pll1_clk", 0, 1,
0502 6);
0503 clk_register_clkdev(clk, "ahb_clk", NULL);
0504
0505 clk = clk_register_fixed_factor(NULL, "apb_clk", "pll1_clk", 0, 1,
0506 12);
0507 clk_register_clkdev(clk, "apb_clk", NULL);
0508
0509
0510 clk = clk_register_mux(NULL, "gpt0_mclk", gpt_parents,
0511 ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT,
0512 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT0_CLK_SHIFT,
0513 SPEAR1310_GPT_CLK_MASK, 0, &_lock);
0514 clk_register_clkdev(clk, "gpt0_mclk", NULL);
0515 clk = clk_register_gate(NULL, "gpt0_clk", "gpt0_mclk", 0,
0516 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GPT0_CLK_ENB, 0,
0517 &_lock);
0518 clk_register_clkdev(clk, NULL, "gpt0");
0519
0520 clk = clk_register_mux(NULL, "gpt1_mclk", gpt_parents,
0521 ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT,
0522 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT1_CLK_SHIFT,
0523 SPEAR1310_GPT_CLK_MASK, 0, &_lock);
0524 clk_register_clkdev(clk, "gpt1_mclk", NULL);
0525 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 0,
0526 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GPT1_CLK_ENB, 0,
0527 &_lock);
0528 clk_register_clkdev(clk, NULL, "gpt1");
0529
0530 clk = clk_register_mux(NULL, "gpt2_mclk", gpt_parents,
0531 ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT,
0532 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT2_CLK_SHIFT,
0533 SPEAR1310_GPT_CLK_MASK, 0, &_lock);
0534 clk_register_clkdev(clk, "gpt2_mclk", NULL);
0535 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 0,
0536 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_GPT2_CLK_ENB, 0,
0537 &_lock);
0538 clk_register_clkdev(clk, NULL, "gpt2");
0539
0540 clk = clk_register_mux(NULL, "gpt3_mclk", gpt_parents,
0541 ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT,
0542 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT3_CLK_SHIFT,
0543 SPEAR1310_GPT_CLK_MASK, 0, &_lock);
0544 clk_register_clkdev(clk, "gpt3_mclk", NULL);
0545 clk = clk_register_gate(NULL, "gpt3_clk", "gpt3_mclk", 0,
0546 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_GPT3_CLK_ENB, 0,
0547 &_lock);
0548 clk_register_clkdev(clk, NULL, "gpt3");
0549
0550
0551 clk = clk_register_aux("uart_syn_clk", "uart_syn_gclk", "vco1div2_clk",
0552 0, SPEAR1310_UART_CLK_SYNT, NULL, aux_rtbl,
0553 ARRAY_SIZE(aux_rtbl), &_lock, &clk1);
0554 clk_register_clkdev(clk, "uart_syn_clk", NULL);
0555 clk_register_clkdev(clk1, "uart_syn_gclk", NULL);
0556
0557 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents,
0558 ARRAY_SIZE(uart0_parents),
0559 CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
0560 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_UART_CLK_SHIFT,
0561 SPEAR1310_UART_CLK_MASK, 0, &_lock);
0562 clk_register_clkdev(clk, "uart0_mclk", NULL);
0563
0564 clk = clk_register_gate(NULL, "uart0_clk", "uart0_mclk",
0565 CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB,
0566 SPEAR1310_UART_CLK_ENB, 0, &_lock);
0567 clk_register_clkdev(clk, NULL, "e0000000.serial");
0568
0569 clk = clk_register_aux("sdhci_syn_clk", "sdhci_syn_gclk",
0570 "vco1div2_clk", 0, SPEAR1310_SDHCI_CLK_SYNT, NULL,
0571 aux_rtbl, ARRAY_SIZE(aux_rtbl), &_lock, &clk1);
0572 clk_register_clkdev(clk, "sdhci_syn_clk", NULL);
0573 clk_register_clkdev(clk1, "sdhci_syn_gclk", NULL);
0574
0575 clk = clk_register_gate(NULL, "sdhci_clk", "sdhci_syn_gclk",
0576 CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB,
0577 SPEAR1310_SDHCI_CLK_ENB, 0, &_lock);
0578 clk_register_clkdev(clk, NULL, "b3000000.sdhci");
0579
0580 clk = clk_register_aux("cfxd_syn_clk", "cfxd_syn_gclk", "vco1div2_clk",
0581 0, SPEAR1310_CFXD_CLK_SYNT, NULL, aux_rtbl,
0582 ARRAY_SIZE(aux_rtbl), &_lock, &clk1);
0583 clk_register_clkdev(clk, "cfxd_syn_clk", NULL);
0584 clk_register_clkdev(clk1, "cfxd_syn_gclk", NULL);
0585
0586 clk = clk_register_gate(NULL, "cfxd_clk", "cfxd_syn_gclk",
0587 CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB,
0588 SPEAR1310_CFXD_CLK_ENB, 0, &_lock);
0589 clk_register_clkdev(clk, NULL, "b2800000.cf");
0590 clk_register_clkdev(clk, NULL, "arasan_xd");
0591
0592 clk = clk_register_aux("c3_syn_clk", "c3_syn_gclk", "vco1div2_clk",
0593 0, SPEAR1310_C3_CLK_SYNT, NULL, aux_rtbl,
0594 ARRAY_SIZE(aux_rtbl), &_lock, &clk1);
0595 clk_register_clkdev(clk, "c3_syn_clk", NULL);
0596 clk_register_clkdev(clk1, "c3_syn_gclk", NULL);
0597
0598 clk = clk_register_mux(NULL, "c3_mclk", c3_parents,
0599 ARRAY_SIZE(c3_parents),
0600 CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
0601 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_C3_CLK_SHIFT,
0602 SPEAR1310_C3_CLK_MASK, 0, &_lock);
0603 clk_register_clkdev(clk, "c3_mclk", NULL);
0604
0605 clk = clk_register_gate(NULL, "c3_clk", "c3_mclk", 0,
0606 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_C3_CLK_ENB, 0,
0607 &_lock);
0608 clk_register_clkdev(clk, NULL, "c3");
0609
0610
0611 clk = clk_register_mux(NULL, "phy_input_mclk", gmac_phy_input_parents,
0612 ARRAY_SIZE(gmac_phy_input_parents),
0613 CLK_SET_RATE_NO_REPARENT, SPEAR1310_GMAC_CLK_CFG,
0614 SPEAR1310_GMAC_PHY_INPUT_CLK_SHIFT,
0615 SPEAR1310_GMAC_PHY_INPUT_CLK_MASK, 0, &_lock);
0616 clk_register_clkdev(clk, "phy_input_mclk", NULL);
0617
0618 clk = clk_register_aux("phy_syn_clk", "phy_syn_gclk", "phy_input_mclk",
0619 0, SPEAR1310_GMAC_CLK_SYNT, NULL, gmac_rtbl,
0620 ARRAY_SIZE(gmac_rtbl), &_lock, &clk1);
0621 clk_register_clkdev(clk, "phy_syn_clk", NULL);
0622 clk_register_clkdev(clk1, "phy_syn_gclk", NULL);
0623
0624 clk = clk_register_mux(NULL, "phy_mclk", gmac_phy_parents,
0625 ARRAY_SIZE(gmac_phy_parents), CLK_SET_RATE_NO_REPARENT,
0626 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GMAC_PHY_CLK_SHIFT,
0627 SPEAR1310_GMAC_PHY_CLK_MASK, 0, &_lock);
0628 clk_register_clkdev(clk, "stmmacphy.0", NULL);
0629
0630
0631 clk = clk_register_mux(NULL, "clcd_syn_mclk", clcd_synth_parents,
0632 ARRAY_SIZE(clcd_synth_parents),
0633 CLK_SET_RATE_NO_REPARENT, SPEAR1310_CLCD_CLK_SYNT,
0634 SPEAR1310_CLCD_SYNT_CLK_SHIFT,
0635 SPEAR1310_CLCD_SYNT_CLK_MASK, 0, &_lock);
0636 clk_register_clkdev(clk, "clcd_syn_mclk", NULL);
0637
0638 clk = clk_register_frac("clcd_syn_clk", "clcd_syn_mclk", 0,
0639 SPEAR1310_CLCD_CLK_SYNT, clcd_rtbl,
0640 ARRAY_SIZE(clcd_rtbl), &_lock);
0641 clk_register_clkdev(clk, "clcd_syn_clk", NULL);
0642
0643 clk = clk_register_mux(NULL, "clcd_pixel_mclk", clcd_pixel_parents,
0644 ARRAY_SIZE(clcd_pixel_parents),
0645 CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
0646 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_CLCD_CLK_SHIFT,
0647 SPEAR1310_CLCD_CLK_MASK, 0, &_lock);
0648 clk_register_clkdev(clk, "clcd_pixel_mclk", NULL);
0649
0650 clk = clk_register_gate(NULL, "clcd_clk", "clcd_pixel_mclk", 0,
0651 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_CLCD_CLK_ENB, 0,
0652 &_lock);
0653 clk_register_clkdev(clk, NULL, "e1000000.clcd");
0654
0655
0656 clk = clk_register_mux(NULL, "i2s_src_mclk", i2s_src_parents,
0657 ARRAY_SIZE(i2s_src_parents), CLK_SET_RATE_NO_REPARENT,
0658 SPEAR1310_I2S_CLK_CFG, SPEAR1310_I2S_SRC_CLK_SHIFT,
0659 SPEAR1310_I2S_SRC_CLK_MASK, 0, &_lock);
0660 clk_register_clkdev(clk, "i2s_src_mclk", NULL);
0661
0662 clk = clk_register_aux("i2s_prs1_clk", NULL, "i2s_src_mclk", 0,
0663 SPEAR1310_I2S_CLK_CFG, &i2s_prs1_masks, i2s_prs1_rtbl,
0664 ARRAY_SIZE(i2s_prs1_rtbl), &_lock, NULL);
0665 clk_register_clkdev(clk, "i2s_prs1_clk", NULL);
0666
0667 clk = clk_register_mux(NULL, "i2s_ref_mclk", i2s_ref_parents,
0668 ARRAY_SIZE(i2s_ref_parents),
0669 CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
0670 SPEAR1310_I2S_CLK_CFG, SPEAR1310_I2S_REF_SHIFT,
0671 SPEAR1310_I2S_REF_SEL_MASK, 0, &_lock);
0672 clk_register_clkdev(clk, "i2s_ref_mclk", NULL);
0673
0674 clk = clk_register_gate(NULL, "i2s_ref_pad_clk", "i2s_ref_mclk", 0,
0675 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_I2S_REF_PAD_CLK_ENB,
0676 0, &_lock);
0677 clk_register_clkdev(clk, "i2s_ref_pad_clk", NULL);
0678
0679 clk = clk_register_aux("i2s_sclk_clk", "i2s_sclk_gclk",
0680 "i2s_ref_mclk", 0, SPEAR1310_I2S_CLK_CFG,
0681 &i2s_sclk_masks, i2s_sclk_rtbl,
0682 ARRAY_SIZE(i2s_sclk_rtbl), &_lock, &clk1);
0683 clk_register_clkdev(clk, "i2s_sclk_clk", NULL);
0684 clk_register_clkdev(clk1, "i2s_sclk_gclk", NULL);
0685
0686
0687 clk = clk_register_gate(NULL, "i2c0_clk", "ahb_clk", 0,
0688 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_I2C0_CLK_ENB, 0,
0689 &_lock);
0690 clk_register_clkdev(clk, NULL, "e0280000.i2c");
0691
0692 clk = clk_register_gate(NULL, "dma_clk", "ahb_clk", 0,
0693 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_DMA_CLK_ENB, 0,
0694 &_lock);
0695 clk_register_clkdev(clk, NULL, "ea800000.dma");
0696 clk_register_clkdev(clk, NULL, "eb000000.dma");
0697
0698 clk = clk_register_gate(NULL, "jpeg_clk", "ahb_clk", 0,
0699 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_JPEG_CLK_ENB, 0,
0700 &_lock);
0701 clk_register_clkdev(clk, NULL, "b2000000.jpeg");
0702
0703 clk = clk_register_gate(NULL, "gmac_clk", "ahb_clk", 0,
0704 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GMAC_CLK_ENB, 0,
0705 &_lock);
0706 clk_register_clkdev(clk, NULL, "e2000000.eth");
0707
0708 clk = clk_register_gate(NULL, "fsmc_clk", "ahb_clk", 0,
0709 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_FSMC_CLK_ENB, 0,
0710 &_lock);
0711 clk_register_clkdev(clk, NULL, "b0000000.flash");
0712
0713 clk = clk_register_gate(NULL, "smi_clk", "ahb_clk", 0,
0714 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_SMI_CLK_ENB, 0,
0715 &_lock);
0716 clk_register_clkdev(clk, NULL, "ea000000.flash");
0717
0718 clk = clk_register_gate(NULL, "usbh0_clk", "ahb_clk", 0,
0719 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_UHC0_CLK_ENB, 0,
0720 &_lock);
0721 clk_register_clkdev(clk, NULL, "e4000000.ohci");
0722 clk_register_clkdev(clk, NULL, "e4800000.ehci");
0723
0724 clk = clk_register_gate(NULL, "usbh1_clk", "ahb_clk", 0,
0725 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_UHC1_CLK_ENB, 0,
0726 &_lock);
0727 clk_register_clkdev(clk, NULL, "e5000000.ohci");
0728 clk_register_clkdev(clk, NULL, "e5800000.ehci");
0729
0730 clk = clk_register_gate(NULL, "uoc_clk", "ahb_clk", 0,
0731 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_UOC_CLK_ENB, 0,
0732 &_lock);
0733 clk_register_clkdev(clk, NULL, "e3800000.otg");
0734
0735 clk = clk_register_gate(NULL, "pcie_sata_0_clk", "ahb_clk", 0,
0736 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_PCIE_SATA_0_CLK_ENB,
0737 0, &_lock);
0738 clk_register_clkdev(clk, NULL, "b1000000.pcie");
0739 clk_register_clkdev(clk, NULL, "b1000000.ahci");
0740
0741 clk = clk_register_gate(NULL, "pcie_sata_1_clk", "ahb_clk", 0,
0742 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_PCIE_SATA_1_CLK_ENB,
0743 0, &_lock);
0744 clk_register_clkdev(clk, NULL, "b1800000.pcie");
0745 clk_register_clkdev(clk, NULL, "b1800000.ahci");
0746
0747 clk = clk_register_gate(NULL, "pcie_sata_2_clk", "ahb_clk", 0,
0748 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_PCIE_SATA_2_CLK_ENB,
0749 0, &_lock);
0750 clk_register_clkdev(clk, NULL, "b4000000.pcie");
0751 clk_register_clkdev(clk, NULL, "b4000000.ahci");
0752
0753 clk = clk_register_gate(NULL, "sysram0_clk", "ahb_clk", 0,
0754 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_SYSRAM0_CLK_ENB, 0,
0755 &_lock);
0756 clk_register_clkdev(clk, "sysram0_clk", NULL);
0757
0758 clk = clk_register_gate(NULL, "sysram1_clk", "ahb_clk", 0,
0759 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_SYSRAM1_CLK_ENB, 0,
0760 &_lock);
0761 clk_register_clkdev(clk, "sysram1_clk", NULL);
0762
0763 clk = clk_register_aux("adc_syn_clk", "adc_syn_gclk", "ahb_clk",
0764 0, SPEAR1310_ADC_CLK_SYNT, NULL, adc_rtbl,
0765 ARRAY_SIZE(adc_rtbl), &_lock, &clk1);
0766 clk_register_clkdev(clk, "adc_syn_clk", NULL);
0767 clk_register_clkdev(clk1, "adc_syn_gclk", NULL);
0768
0769 clk = clk_register_gate(NULL, "adc_clk", "adc_syn_gclk",
0770 CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB,
0771 SPEAR1310_ADC_CLK_ENB, 0, &_lock);
0772 clk_register_clkdev(clk, NULL, "e0080000.adc");
0773
0774
0775 clk = clk_register_gate(NULL, "ssp0_clk", "apb_clk", 0,
0776 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_SSP_CLK_ENB, 0,
0777 &_lock);
0778 clk_register_clkdev(clk, NULL, "e0100000.spi");
0779
0780 clk = clk_register_gate(NULL, "gpio0_clk", "apb_clk", 0,
0781 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GPIO0_CLK_ENB, 0,
0782 &_lock);
0783 clk_register_clkdev(clk, NULL, "e0600000.gpio");
0784
0785 clk = clk_register_gate(NULL, "gpio1_clk", "apb_clk", 0,
0786 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GPIO1_CLK_ENB, 0,
0787 &_lock);
0788 clk_register_clkdev(clk, NULL, "e0680000.gpio");
0789
0790 clk = clk_register_gate(NULL, "i2s0_clk", "apb_clk", 0,
0791 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_I2S0_CLK_ENB, 0,
0792 &_lock);
0793 clk_register_clkdev(clk, NULL, "e0180000.i2s");
0794
0795 clk = clk_register_gate(NULL, "i2s1_clk", "apb_clk", 0,
0796 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_I2S1_CLK_ENB, 0,
0797 &_lock);
0798 clk_register_clkdev(clk, NULL, "e0200000.i2s");
0799
0800 clk = clk_register_gate(NULL, "kbd_clk", "apb_clk", 0,
0801 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_KBD_CLK_ENB, 0,
0802 &_lock);
0803 clk_register_clkdev(clk, NULL, "e0300000.kbd");
0804
0805
0806 clk = clk_register_mux(NULL, "gen_syn0_1_mclk", gen_synth0_1_parents,
0807 ARRAY_SIZE(gen_synth0_1_parents),
0808 CLK_SET_RATE_NO_REPARENT, SPEAR1310_PLL_CFG,
0809 SPEAR1310_RAS_SYNT0_1_CLK_SHIFT,
0810 SPEAR1310_RAS_SYNT_CLK_MASK, 0, &_lock);
0811 clk_register_clkdev(clk, "gen_syn0_1_clk", NULL);
0812
0813 clk = clk_register_mux(NULL, "gen_syn2_3_mclk", gen_synth2_3_parents,
0814 ARRAY_SIZE(gen_synth2_3_parents),
0815 CLK_SET_RATE_NO_REPARENT, SPEAR1310_PLL_CFG,
0816 SPEAR1310_RAS_SYNT2_3_CLK_SHIFT,
0817 SPEAR1310_RAS_SYNT_CLK_MASK, 0, &_lock);
0818 clk_register_clkdev(clk, "gen_syn2_3_clk", NULL);
0819
0820 clk = clk_register_frac("gen_syn0_clk", "gen_syn0_1_clk", 0,
0821 SPEAR1310_RAS_CLK_SYNT0, gen_rtbl, ARRAY_SIZE(gen_rtbl),
0822 &_lock);
0823 clk_register_clkdev(clk, "gen_syn0_clk", NULL);
0824
0825 clk = clk_register_frac("gen_syn1_clk", "gen_syn0_1_clk", 0,
0826 SPEAR1310_RAS_CLK_SYNT1, gen_rtbl, ARRAY_SIZE(gen_rtbl),
0827 &_lock);
0828 clk_register_clkdev(clk, "gen_syn1_clk", NULL);
0829
0830 clk = clk_register_frac("gen_syn2_clk", "gen_syn2_3_clk", 0,
0831 SPEAR1310_RAS_CLK_SYNT2, gen_rtbl, ARRAY_SIZE(gen_rtbl),
0832 &_lock);
0833 clk_register_clkdev(clk, "gen_syn2_clk", NULL);
0834
0835 clk = clk_register_frac("gen_syn3_clk", "gen_syn2_3_clk", 0,
0836 SPEAR1310_RAS_CLK_SYNT3, gen_rtbl, ARRAY_SIZE(gen_rtbl),
0837 &_lock);
0838 clk_register_clkdev(clk, "gen_syn3_clk", NULL);
0839
0840 clk = clk_register_gate(NULL, "ras_osc_24m_clk", "osc_24m_clk", 0,
0841 SPEAR1310_RAS_CLK_ENB, SPEAR1310_OSC_24M_CLK_ENB, 0,
0842 &_lock);
0843 clk_register_clkdev(clk, "ras_osc_24m_clk", NULL);
0844
0845 clk = clk_register_gate(NULL, "ras_osc_25m_clk", "osc_25m_clk", 0,
0846 SPEAR1310_RAS_CLK_ENB, SPEAR1310_OSC_25M_CLK_ENB, 0,
0847 &_lock);
0848 clk_register_clkdev(clk, "ras_osc_25m_clk", NULL);
0849
0850 clk = clk_register_gate(NULL, "ras_osc_32k_clk", "osc_32k_clk", 0,
0851 SPEAR1310_RAS_CLK_ENB, SPEAR1310_OSC_32K_CLK_ENB, 0,
0852 &_lock);
0853 clk_register_clkdev(clk, "ras_osc_32k_clk", NULL);
0854
0855 clk = clk_register_gate(NULL, "ras_pll2_clk", "pll2_clk", 0,
0856 SPEAR1310_RAS_CLK_ENB, SPEAR1310_PLL2_CLK_ENB, 0,
0857 &_lock);
0858 clk_register_clkdev(clk, "ras_pll2_clk", NULL);
0859
0860 clk = clk_register_gate(NULL, "ras_pll3_clk", "pll3_clk", 0,
0861 SPEAR1310_RAS_CLK_ENB, SPEAR1310_PLL3_CLK_ENB, 0,
0862 &_lock);
0863 clk_register_clkdev(clk, "ras_pll3_clk", NULL);
0864
0865 clk = clk_register_gate(NULL, "ras_tx125_clk", "gmii_pad_clk", 0,
0866 SPEAR1310_RAS_CLK_ENB, SPEAR1310_C125M_PAD_CLK_ENB, 0,
0867 &_lock);
0868 clk_register_clkdev(clk, "ras_tx125_clk", NULL);
0869
0870 clk = clk_register_fixed_rate(NULL, "ras_30m_fixed_clk", "pll5_clk", 0,
0871 30000000);
0872 clk = clk_register_gate(NULL, "ras_30m_clk", "ras_30m_fixed_clk", 0,
0873 SPEAR1310_RAS_CLK_ENB, SPEAR1310_C30M_CLK_ENB, 0,
0874 &_lock);
0875 clk_register_clkdev(clk, "ras_30m_clk", NULL);
0876
0877 clk = clk_register_fixed_rate(NULL, "ras_48m_fixed_clk", "pll5_clk", 0,
0878 48000000);
0879 clk = clk_register_gate(NULL, "ras_48m_clk", "ras_48m_fixed_clk", 0,
0880 SPEAR1310_RAS_CLK_ENB, SPEAR1310_C48M_CLK_ENB, 0,
0881 &_lock);
0882 clk_register_clkdev(clk, "ras_48m_clk", NULL);
0883
0884 clk = clk_register_gate(NULL, "ras_ahb_clk", "ahb_clk", 0,
0885 SPEAR1310_RAS_CLK_ENB, SPEAR1310_ACLK_CLK_ENB, 0,
0886 &_lock);
0887 clk_register_clkdev(clk, "ras_ahb_clk", NULL);
0888
0889 clk = clk_register_gate(NULL, "ras_apb_clk", "apb_clk", 0,
0890 SPEAR1310_RAS_CLK_ENB, SPEAR1310_PCLK_CLK_ENB, 0,
0891 &_lock);
0892 clk_register_clkdev(clk, "ras_apb_clk", NULL);
0893
0894 clk = clk_register_fixed_rate(NULL, "ras_plclk0_clk", NULL, 0,
0895 50000000);
0896
0897 clk = clk_register_fixed_rate(NULL, "ras_tx50_clk", NULL, 0, 50000000);
0898
0899 clk = clk_register_gate(NULL, "can0_clk", "apb_clk", 0,
0900 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_CAN0_CLK_ENB, 0,
0901 &_lock);
0902 clk_register_clkdev(clk, NULL, "c_can_platform.0");
0903
0904 clk = clk_register_gate(NULL, "can1_clk", "apb_clk", 0,
0905 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_CAN1_CLK_ENB, 0,
0906 &_lock);
0907 clk_register_clkdev(clk, NULL, "c_can_platform.1");
0908
0909 clk = clk_register_gate(NULL, "ras_smii0_clk", "ras_ahb_clk", 0,
0910 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_MII0_CLK_ENB, 0,
0911 &_lock);
0912 clk_register_clkdev(clk, NULL, "5c400000.eth");
0913
0914 clk = clk_register_gate(NULL, "ras_smii1_clk", "ras_ahb_clk", 0,
0915 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_MII1_CLK_ENB, 0,
0916 &_lock);
0917 clk_register_clkdev(clk, NULL, "5c500000.eth");
0918
0919 clk = clk_register_gate(NULL, "ras_smii2_clk", "ras_ahb_clk", 0,
0920 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_MII2_CLK_ENB, 0,
0921 &_lock);
0922 clk_register_clkdev(clk, NULL, "5c600000.eth");
0923
0924 clk = clk_register_gate(NULL, "ras_rgmii_clk", "ras_ahb_clk", 0,
0925 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_GMII_CLK_ENB, 0,
0926 &_lock);
0927 clk_register_clkdev(clk, NULL, "5c700000.eth");
0928
0929 clk = clk_register_mux(NULL, "smii_rgmii_phy_mclk",
0930 smii_rgmii_phy_parents,
0931 ARRAY_SIZE(smii_rgmii_phy_parents),
0932 CLK_SET_RATE_NO_REPARENT, SPEAR1310_RAS_CTRL_REG1,
0933 SPEAR1310_SMII_RGMII_PHY_CLK_SHIFT,
0934 SPEAR1310_PHY_CLK_MASK, 0, &_lock);
0935 clk_register_clkdev(clk, "stmmacphy.1", NULL);
0936 clk_register_clkdev(clk, "stmmacphy.2", NULL);
0937 clk_register_clkdev(clk, "stmmacphy.4", NULL);
0938
0939 clk = clk_register_mux(NULL, "rmii_phy_mclk", rmii_phy_parents,
0940 ARRAY_SIZE(rmii_phy_parents), CLK_SET_RATE_NO_REPARENT,
0941 SPEAR1310_RAS_CTRL_REG1, SPEAR1310_RMII_PHY_CLK_SHIFT,
0942 SPEAR1310_PHY_CLK_MASK, 0, &_lock);
0943 clk_register_clkdev(clk, "stmmacphy.3", NULL);
0944
0945 clk = clk_register_mux(NULL, "uart1_mclk", uart_parents,
0946 ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT,
0947 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART1_CLK_SHIFT,
0948 SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock);
0949 clk_register_clkdev(clk, "uart1_mclk", NULL);
0950
0951 clk = clk_register_gate(NULL, "uart1_clk", "uart1_mclk", 0,
0952 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_UART1_CLK_ENB, 0,
0953 &_lock);
0954 clk_register_clkdev(clk, NULL, "5c800000.serial");
0955
0956 clk = clk_register_mux(NULL, "uart2_mclk", uart_parents,
0957 ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT,
0958 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART2_CLK_SHIFT,
0959 SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock);
0960 clk_register_clkdev(clk, "uart2_mclk", NULL);
0961
0962 clk = clk_register_gate(NULL, "uart2_clk", "uart2_mclk", 0,
0963 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_UART2_CLK_ENB, 0,
0964 &_lock);
0965 clk_register_clkdev(clk, NULL, "5c900000.serial");
0966
0967 clk = clk_register_mux(NULL, "uart3_mclk", uart_parents,
0968 ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT,
0969 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART3_CLK_SHIFT,
0970 SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock);
0971 clk_register_clkdev(clk, "uart3_mclk", NULL);
0972
0973 clk = clk_register_gate(NULL, "uart3_clk", "uart3_mclk", 0,
0974 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_UART3_CLK_ENB, 0,
0975 &_lock);
0976 clk_register_clkdev(clk, NULL, "5ca00000.serial");
0977
0978 clk = clk_register_mux(NULL, "uart4_mclk", uart_parents,
0979 ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT,
0980 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART4_CLK_SHIFT,
0981 SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock);
0982 clk_register_clkdev(clk, "uart4_mclk", NULL);
0983
0984 clk = clk_register_gate(NULL, "uart4_clk", "uart4_mclk", 0,
0985 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_UART4_CLK_ENB, 0,
0986 &_lock);
0987 clk_register_clkdev(clk, NULL, "5cb00000.serial");
0988
0989 clk = clk_register_mux(NULL, "uart5_mclk", uart_parents,
0990 ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT,
0991 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART5_CLK_SHIFT,
0992 SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock);
0993 clk_register_clkdev(clk, "uart5_mclk", NULL);
0994
0995 clk = clk_register_gate(NULL, "uart5_clk", "uart5_mclk", 0,
0996 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_UART5_CLK_ENB, 0,
0997 &_lock);
0998 clk_register_clkdev(clk, NULL, "5cc00000.serial");
0999
1000 clk = clk_register_mux(NULL, "i2c1_mclk", i2c_parents,
1001 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1002 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C1_CLK_SHIFT,
1003 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1004 clk_register_clkdev(clk, "i2c1_mclk", NULL);
1005
1006 clk = clk_register_gate(NULL, "i2c1_clk", "i2c1_mclk", 0,
1007 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C1_CLK_ENB, 0,
1008 &_lock);
1009 clk_register_clkdev(clk, NULL, "5cd00000.i2c");
1010
1011 clk = clk_register_mux(NULL, "i2c2_mclk", i2c_parents,
1012 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1013 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C2_CLK_SHIFT,
1014 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1015 clk_register_clkdev(clk, "i2c2_mclk", NULL);
1016
1017 clk = clk_register_gate(NULL, "i2c2_clk", "i2c2_mclk", 0,
1018 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C2_CLK_ENB, 0,
1019 &_lock);
1020 clk_register_clkdev(clk, NULL, "5ce00000.i2c");
1021
1022 clk = clk_register_mux(NULL, "i2c3_mclk", i2c_parents,
1023 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1024 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C3_CLK_SHIFT,
1025 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1026 clk_register_clkdev(clk, "i2c3_mclk", NULL);
1027
1028 clk = clk_register_gate(NULL, "i2c3_clk", "i2c3_mclk", 0,
1029 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C3_CLK_ENB, 0,
1030 &_lock);
1031 clk_register_clkdev(clk, NULL, "5cf00000.i2c");
1032
1033 clk = clk_register_mux(NULL, "i2c4_mclk", i2c_parents,
1034 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1035 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C4_CLK_SHIFT,
1036 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1037 clk_register_clkdev(clk, "i2c4_mclk", NULL);
1038
1039 clk = clk_register_gate(NULL, "i2c4_clk", "i2c4_mclk", 0,
1040 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C4_CLK_ENB, 0,
1041 &_lock);
1042 clk_register_clkdev(clk, NULL, "5d000000.i2c");
1043
1044 clk = clk_register_mux(NULL, "i2c5_mclk", i2c_parents,
1045 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1046 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C5_CLK_SHIFT,
1047 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1048 clk_register_clkdev(clk, "i2c5_mclk", NULL);
1049
1050 clk = clk_register_gate(NULL, "i2c5_clk", "i2c5_mclk", 0,
1051 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C5_CLK_ENB, 0,
1052 &_lock);
1053 clk_register_clkdev(clk, NULL, "5d100000.i2c");
1054
1055 clk = clk_register_mux(NULL, "i2c6_mclk", i2c_parents,
1056 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1057 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C6_CLK_SHIFT,
1058 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1059 clk_register_clkdev(clk, "i2c6_mclk", NULL);
1060
1061 clk = clk_register_gate(NULL, "i2c6_clk", "i2c6_mclk", 0,
1062 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C6_CLK_ENB, 0,
1063 &_lock);
1064 clk_register_clkdev(clk, NULL, "5d200000.i2c");
1065
1066 clk = clk_register_mux(NULL, "i2c7_mclk", i2c_parents,
1067 ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT,
1068 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C7_CLK_SHIFT,
1069 SPEAR1310_I2C_CLK_MASK, 0, &_lock);
1070 clk_register_clkdev(clk, "i2c7_mclk", NULL);
1071
1072 clk = clk_register_gate(NULL, "i2c7_clk", "i2c7_mclk", 0,
1073 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_I2C7_CLK_ENB, 0,
1074 &_lock);
1075 clk_register_clkdev(clk, NULL, "5d300000.i2c");
1076
1077 clk = clk_register_mux(NULL, "ssp1_mclk", ssp1_parents,
1078 ARRAY_SIZE(ssp1_parents), CLK_SET_RATE_NO_REPARENT,
1079 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_SSP1_CLK_SHIFT,
1080 SPEAR1310_SSP1_CLK_MASK, 0, &_lock);
1081 clk_register_clkdev(clk, "ssp1_mclk", NULL);
1082
1083 clk = clk_register_gate(NULL, "ssp1_clk", "ssp1_mclk", 0,
1084 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_SSP1_CLK_ENB, 0,
1085 &_lock);
1086 clk_register_clkdev(clk, NULL, "5d400000.spi");
1087
1088 clk = clk_register_mux(NULL, "pci_mclk", pci_parents,
1089 ARRAY_SIZE(pci_parents), CLK_SET_RATE_NO_REPARENT,
1090 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_PCI_CLK_SHIFT,
1091 SPEAR1310_PCI_CLK_MASK, 0, &_lock);
1092 clk_register_clkdev(clk, "pci_mclk", NULL);
1093
1094 clk = clk_register_gate(NULL, "pci_clk", "pci_mclk", 0,
1095 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_PCI_CLK_ENB, 0,
1096 &_lock);
1097 clk_register_clkdev(clk, NULL, "pci");
1098
1099 clk = clk_register_mux(NULL, "tdm1_mclk", tdm_parents,
1100 ARRAY_SIZE(tdm_parents), CLK_SET_RATE_NO_REPARENT,
1101 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_TDM1_CLK_SHIFT,
1102 SPEAR1310_TDM_CLK_MASK, 0, &_lock);
1103 clk_register_clkdev(clk, "tdm1_mclk", NULL);
1104
1105 clk = clk_register_gate(NULL, "tdm1_clk", "tdm1_mclk", 0,
1106 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_TDM1_CLK_ENB, 0,
1107 &_lock);
1108 clk_register_clkdev(clk, NULL, "tdm_hdlc.0");
1109
1110 clk = clk_register_mux(NULL, "tdm2_mclk", tdm_parents,
1111 ARRAY_SIZE(tdm_parents), CLK_SET_RATE_NO_REPARENT,
1112 SPEAR1310_RAS_CTRL_REG0, SPEAR1310_TDM2_CLK_SHIFT,
1113 SPEAR1310_TDM_CLK_MASK, 0, &_lock);
1114 clk_register_clkdev(clk, "tdm2_mclk", NULL);
1115
1116 clk = clk_register_gate(NULL, "tdm2_clk", "tdm2_mclk", 0,
1117 SPEAR1310_RAS_SW_CLK_CTRL, SPEAR1310_TDM2_CLK_ENB, 0,
1118 &_lock);
1119 clk_register_clkdev(clk, NULL, "tdm_hdlc.1");
1120 }