|
@@ -426,24 +426,6 @@ static struct clk init_clocks_off[] = {
|
|
.parent = &clk_div_d0_bus.clk,
|
|
.parent = &clk_div_d0_bus.clk,
|
|
.enable = s5pc100_d0_2_ctrl,
|
|
.enable = s5pc100_d0_2_ctrl,
|
|
.ctrlbit = (1 << 1),
|
|
.ctrlbit = (1 << 1),
|
|
- }, {
|
|
|
|
- .name = "hsmmc",
|
|
|
|
- .devname = "s3c-sdhci.2",
|
|
|
|
- .parent = &clk_div_d1_bus.clk,
|
|
|
|
- .enable = s5pc100_d1_0_ctrl,
|
|
|
|
- .ctrlbit = (1 << 7),
|
|
|
|
- }, {
|
|
|
|
- .name = "hsmmc",
|
|
|
|
- .devname = "s3c-sdhci.1",
|
|
|
|
- .parent = &clk_div_d1_bus.clk,
|
|
|
|
- .enable = s5pc100_d1_0_ctrl,
|
|
|
|
- .ctrlbit = (1 << 6),
|
|
|
|
- }, {
|
|
|
|
- .name = "hsmmc",
|
|
|
|
- .devname = "s3c-sdhci.0",
|
|
|
|
- .parent = &clk_div_d1_bus.clk,
|
|
|
|
- .enable = s5pc100_d1_0_ctrl,
|
|
|
|
- .ctrlbit = (1 << 5),
|
|
|
|
}, {
|
|
}, {
|
|
.name = "modemif",
|
|
.name = "modemif",
|
|
.parent = &clk_div_d1_bus.clk,
|
|
.parent = &clk_div_d1_bus.clk,
|
|
@@ -673,24 +655,6 @@ static struct clk init_clocks_off[] = {
|
|
.parent = &clk_div_pclkd1.clk,
|
|
.parent = &clk_div_pclkd1.clk,
|
|
.enable = s5pc100_d1_5_ctrl,
|
|
.enable = s5pc100_d1_5_ctrl,
|
|
.ctrlbit = (1 << 8),
|
|
.ctrlbit = (1 << 8),
|
|
- }, {
|
|
|
|
- .name = "spi_48m",
|
|
|
|
- .devname = "s3c64xx-spi.0",
|
|
|
|
- .parent = &clk_mout_48m.clk,
|
|
|
|
- .enable = s5pc100_sclk0_ctrl,
|
|
|
|
- .ctrlbit = (1 << 7),
|
|
|
|
- }, {
|
|
|
|
- .name = "spi_48m",
|
|
|
|
- .devname = "s3c64xx-spi.1",
|
|
|
|
- .parent = &clk_mout_48m.clk,
|
|
|
|
- .enable = s5pc100_sclk0_ctrl,
|
|
|
|
- .ctrlbit = (1 << 8),
|
|
|
|
- }, {
|
|
|
|
- .name = "spi_48m",
|
|
|
|
- .devname = "s3c64xx-spi.2",
|
|
|
|
- .parent = &clk_mout_48m.clk,
|
|
|
|
- .enable = s5pc100_sclk0_ctrl,
|
|
|
|
- .ctrlbit = (1 << 9),
|
|
|
|
}, {
|
|
}, {
|
|
.name = "mmc_48m",
|
|
.name = "mmc_48m",
|
|
.devname = "s3c-sdhci.0",
|
|
.devname = "s3c-sdhci.0",
|
|
@@ -712,6 +676,54 @@ static struct clk init_clocks_off[] = {
|
|
},
|
|
},
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct clk clk_hsmmc2 = {
|
|
|
|
+ .name = "hsmmc",
|
|
|
|
+ .devname = "s3c-sdhci.2",
|
|
|
|
+ .parent = &clk_div_d1_bus.clk,
|
|
|
|
+ .enable = s5pc100_d1_0_ctrl,
|
|
|
|
+ .ctrlbit = (1 << 7),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk clk_hsmmc1 = {
|
|
|
|
+ .name = "hsmmc",
|
|
|
|
+ .devname = "s3c-sdhci.1",
|
|
|
|
+ .parent = &clk_div_d1_bus.clk,
|
|
|
|
+ .enable = s5pc100_d1_0_ctrl,
|
|
|
|
+ .ctrlbit = (1 << 6),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk clk_hsmmc0 = {
|
|
|
|
+ .name = "hsmmc",
|
|
|
|
+ .devname = "s3c-sdhci.0",
|
|
|
|
+ .parent = &clk_div_d1_bus.clk,
|
|
|
|
+ .enable = s5pc100_d1_0_ctrl,
|
|
|
|
+ .ctrlbit = (1 << 5),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk clk_48m_spi0 = {
|
|
|
|
+ .name = "spi_48m",
|
|
|
|
+ .devname = "s3c64xx-spi.0",
|
|
|
|
+ .parent = &clk_mout_48m.clk,
|
|
|
|
+ .enable = s5pc100_sclk0_ctrl,
|
|
|
|
+ .ctrlbit = (1 << 7),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk clk_48m_spi1 = {
|
|
|
|
+ .name = "spi_48m",
|
|
|
|
+ .devname = "s3c64xx-spi.1",
|
|
|
|
+ .parent = &clk_mout_48m.clk,
|
|
|
|
+ .enable = s5pc100_sclk0_ctrl,
|
|
|
|
+ .ctrlbit = (1 << 8),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk clk_48m_spi2 = {
|
|
|
|
+ .name = "spi_48m",
|
|
|
|
+ .devname = "s3c64xx-spi.2",
|
|
|
|
+ .parent = &clk_mout_48m.clk,
|
|
|
|
+ .enable = s5pc100_sclk0_ctrl,
|
|
|
|
+ .ctrlbit = (1 << 9),
|
|
|
|
+};
|
|
|
|
+
|
|
static struct clk clk_vclk54m = {
|
|
static struct clk clk_vclk54m = {
|
|
.name = "vclk_54m",
|
|
.name = "vclk_54m",
|
|
.rate = 54000000,
|
|
.rate = 54000000,
|
|
@@ -929,39 +941,6 @@ static struct clksrc_clk clk_sclk_spdif = {
|
|
|
|
|
|
static struct clksrc_clk clksrcs[] = {
|
|
static struct clksrc_clk clksrcs[] = {
|
|
{
|
|
{
|
|
- .clk = {
|
|
|
|
- .name = "sclk_spi",
|
|
|
|
- .devname = "s3c64xx-spi.0",
|
|
|
|
- .ctrlbit = (1 << 4),
|
|
|
|
- .enable = s5pc100_sclk0_ctrl,
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- .sources = &clk_src_group1,
|
|
|
|
- .reg_src = { .reg = S5P_CLK_SRC1, .shift = 4, .size = 2 },
|
|
|
|
- .reg_div = { .reg = S5P_CLK_DIV2, .shift = 4, .size = 4 },
|
|
|
|
- }, {
|
|
|
|
- .clk = {
|
|
|
|
- .name = "sclk_spi",
|
|
|
|
- .devname = "s3c64xx-spi.1",
|
|
|
|
- .ctrlbit = (1 << 5),
|
|
|
|
- .enable = s5pc100_sclk0_ctrl,
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- .sources = &clk_src_group1,
|
|
|
|
- .reg_src = { .reg = S5P_CLK_SRC1, .shift = 8, .size = 2 },
|
|
|
|
- .reg_div = { .reg = S5P_CLK_DIV2, .shift = 8, .size = 4 },
|
|
|
|
- }, {
|
|
|
|
- .clk = {
|
|
|
|
- .name = "sclk_spi",
|
|
|
|
- .devname = "s3c64xx-spi.2",
|
|
|
|
- .ctrlbit = (1 << 6),
|
|
|
|
- .enable = s5pc100_sclk0_ctrl,
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- .sources = &clk_src_group1,
|
|
|
|
- .reg_src = { .reg = S5P_CLK_SRC1, .shift = 12, .size = 2 },
|
|
|
|
- .reg_div = { .reg = S5P_CLK_DIV2, .shift = 12, .size = 4 },
|
|
|
|
- }, {
|
|
|
|
.clk = {
|
|
.clk = {
|
|
.name = "sclk_mixer",
|
|
.name = "sclk_mixer",
|
|
.ctrlbit = (1 << 6),
|
|
.ctrlbit = (1 << 6),
|
|
@@ -1013,39 +992,6 @@ static struct clksrc_clk clksrcs[] = {
|
|
.sources = &clk_src_group7,
|
|
.sources = &clk_src_group7,
|
|
.reg_src = { .reg = S5P_CLK_SRC2, .shift = 24, .size = 2 },
|
|
.reg_src = { .reg = S5P_CLK_SRC2, .shift = 24, .size = 2 },
|
|
.reg_div = { .reg = S5P_CLK_DIV3, .shift = 24, .size = 4 },
|
|
.reg_div = { .reg = S5P_CLK_DIV3, .shift = 24, .size = 4 },
|
|
- }, {
|
|
|
|
- .clk = {
|
|
|
|
- .name = "sclk_mmc",
|
|
|
|
- .devname = "s3c-sdhci.0",
|
|
|
|
- .ctrlbit = (1 << 12),
|
|
|
|
- .enable = s5pc100_sclk1_ctrl,
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- .sources = &clk_src_mmc0,
|
|
|
|
- .reg_src = { .reg = S5P_CLK_SRC2, .shift = 0, .size = 2 },
|
|
|
|
- .reg_div = { .reg = S5P_CLK_DIV3, .shift = 0, .size = 4 },
|
|
|
|
- }, {
|
|
|
|
- .clk = {
|
|
|
|
- .name = "sclk_mmc",
|
|
|
|
- .devname = "s3c-sdhci.1",
|
|
|
|
- .ctrlbit = (1 << 13),
|
|
|
|
- .enable = s5pc100_sclk1_ctrl,
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- .sources = &clk_src_mmc12,
|
|
|
|
- .reg_src = { .reg = S5P_CLK_SRC2, .shift = 4, .size = 2 },
|
|
|
|
- .reg_div = { .reg = S5P_CLK_DIV3, .shift = 4, .size = 4 },
|
|
|
|
- }, {
|
|
|
|
- .clk = {
|
|
|
|
- .name = "sclk_mmc",
|
|
|
|
- .devname = "s3c-sdhci.2",
|
|
|
|
- .ctrlbit = (1 << 14),
|
|
|
|
- .enable = s5pc100_sclk1_ctrl,
|
|
|
|
-
|
|
|
|
- },
|
|
|
|
- .sources = &clk_src_mmc12,
|
|
|
|
- .reg_src = { .reg = S5P_CLK_SRC2, .shift = 8, .size = 2 },
|
|
|
|
- .reg_div = { .reg = S5P_CLK_DIV3, .shift = 8, .size = 4 },
|
|
|
|
}, {
|
|
}, {
|
|
.clk = {
|
|
.clk = {
|
|
.name = "sclk_irda",
|
|
.name = "sclk_irda",
|
|
@@ -1100,6 +1046,78 @@ static struct clksrc_clk clk_sclk_uart = {
|
|
.reg_div = { .reg = S5P_CLK_DIV2, .shift = 0, .size = 4 },
|
|
.reg_div = { .reg = S5P_CLK_DIV2, .shift = 0, .size = 4 },
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct clksrc_clk clk_sclk_mmc0 = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "sclk_mmc",
|
|
|
|
+ .devname = "s3c-sdhci.0",
|
|
|
|
+ .ctrlbit = (1 << 12),
|
|
|
|
+ .enable = s5pc100_sclk1_ctrl,
|
|
|
|
+ },
|
|
|
|
+ .sources = &clk_src_mmc0,
|
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC2, .shift = 0, .size = 2 },
|
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV3, .shift = 0, .size = 4 },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clksrc_clk clk_sclk_mmc1 = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "sclk_mmc",
|
|
|
|
+ .devname = "s3c-sdhci.1",
|
|
|
|
+ .ctrlbit = (1 << 13),
|
|
|
|
+ .enable = s5pc100_sclk1_ctrl,
|
|
|
|
+ },
|
|
|
|
+ .sources = &clk_src_mmc12,
|
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC2, .shift = 4, .size = 2 },
|
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV3, .shift = 4, .size = 4 },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clksrc_clk clk_sclk_mmc2 = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "sclk_mmc",
|
|
|
|
+ .devname = "s3c-sdhci.2",
|
|
|
|
+ .ctrlbit = (1 << 14),
|
|
|
|
+ .enable = s5pc100_sclk1_ctrl,
|
|
|
|
+ },
|
|
|
|
+ .sources = &clk_src_mmc12,
|
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC2, .shift = 8, .size = 2 },
|
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV3, .shift = 8, .size = 4 },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clksrc_clk clk_sclk_spi0 = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "sclk_spi",
|
|
|
|
+ .devname = "s3c64xx-spi.0",
|
|
|
|
+ .ctrlbit = (1 << 4),
|
|
|
|
+ .enable = s5pc100_sclk0_ctrl,
|
|
|
|
+ },
|
|
|
|
+ .sources = &clk_src_group1,
|
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC1, .shift = 4, .size = 2 },
|
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV2, .shift = 4, .size = 4 },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clksrc_clk clk_sclk_spi1 = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "sclk_spi",
|
|
|
|
+ .devname = "s3c64xx-spi.1",
|
|
|
|
+ .ctrlbit = (1 << 5),
|
|
|
|
+ .enable = s5pc100_sclk0_ctrl,
|
|
|
|
+ },
|
|
|
|
+ .sources = &clk_src_group1,
|
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC1, .shift = 8, .size = 2 },
|
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV2, .shift = 8, .size = 4 },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clksrc_clk clk_sclk_spi2 = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "sclk_spi",
|
|
|
|
+ .devname = "s3c64xx-spi.2",
|
|
|
|
+ .ctrlbit = (1 << 6),
|
|
|
|
+ .enable = s5pc100_sclk0_ctrl,
|
|
|
|
+ },
|
|
|
|
+ .sources = &clk_src_group1,
|
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC1, .shift = 12, .size = 2 },
|
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV2, .shift = 12, .size = 4 },
|
|
|
|
+};
|
|
|
|
+
|
|
/* Clock initialisation code */
|
|
/* Clock initialisation code */
|
|
static struct clksrc_clk *sysclks[] = {
|
|
static struct clksrc_clk *sysclks[] = {
|
|
&clk_mout_apll,
|
|
&clk_mout_apll,
|
|
@@ -1129,8 +1147,23 @@ static struct clksrc_clk *sysclks[] = {
|
|
&clk_sclk_spdif,
|
|
&clk_sclk_spdif,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct clk *clk_cdev[] = {
|
|
|
|
+ &clk_hsmmc0,
|
|
|
|
+ &clk_hsmmc1,
|
|
|
|
+ &clk_hsmmc2,
|
|
|
|
+ &clk_48m_spi0,
|
|
|
|
+ &clk_48m_spi1,
|
|
|
|
+ &clk_48m_spi2,
|
|
|
|
+};
|
|
|
|
+
|
|
static struct clksrc_clk *clksrc_cdev[] = {
|
|
static struct clksrc_clk *clksrc_cdev[] = {
|
|
&clk_sclk_uart,
|
|
&clk_sclk_uart,
|
|
|
|
+ &clk_sclk_mmc0,
|
|
|
|
+ &clk_sclk_mmc1,
|
|
|
|
+ &clk_sclk_mmc2,
|
|
|
|
+ &clk_sclk_spi0,
|
|
|
|
+ &clk_sclk_spi1,
|
|
|
|
+ &clk_sclk_spi2,
|
|
};
|
|
};
|
|
|
|
|
|
void __init_or_cpufreq s5pc100_setup_clocks(void)
|
|
void __init_or_cpufreq s5pc100_setup_clocks(void)
|
|
@@ -1275,6 +1308,19 @@ static struct clk *clks[] __initdata = {
|
|
static struct clk_lookup s5pc100_clk_lookup[] = {
|
|
static struct clk_lookup s5pc100_clk_lookup[] = {
|
|
CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p),
|
|
CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p),
|
|
CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uart.clk),
|
|
CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uart.clk),
|
|
|
|
+ CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.0", &clk_hsmmc0),
|
|
|
|
+ CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &clk_hsmmc1),
|
|
|
|
+ CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.0", &clk_hsmmc2),
|
|
|
|
+ CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk),
|
|
|
|
+ CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk),
|
|
|
|
+ CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk),
|
|
|
|
+ CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
|
|
|
|
+ CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk1", &clk_48m_spi0),
|
|
|
|
+ CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk2", &clk_sclk_spi0.clk),
|
|
|
|
+ CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk1", &clk_48m_spi1),
|
|
|
|
+ CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk2", &clk_sclk_spi1.clk),
|
|
|
|
+ CLKDEV_INIT("s3c64xx-spi.2", "spi_busclk1", &clk_48m_spi2),
|
|
|
|
+ CLKDEV_INIT("s3c64xx-spi.2", "spi_busclk2", &clk_sclk_spi2.clk),
|
|
};
|
|
};
|
|
|
|
|
|
void __init s5pc100_register_clocks(void)
|
|
void __init s5pc100_register_clocks(void)
|
|
@@ -1295,6 +1341,10 @@ void __init s5pc100_register_clocks(void)
|
|
s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
|
|
s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
|
|
clkdev_add_table(s5pc100_clk_lookup, ARRAY_SIZE(s5pc100_clk_lookup));
|
|
clkdev_add_table(s5pc100_clk_lookup, ARRAY_SIZE(s5pc100_clk_lookup));
|
|
|
|
|
|
|
|
+ s3c24xx_register_clocks(clk_cdev, ARRAY_SIZE(clk_cdev));
|
|
|
|
+ for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
|
|
|
|
+ s3c_disable_clocks(clk_cdev[ptr], 1);
|
|
|
|
+
|
|
s3c24xx_register_clock(&dummy_apb_pclk);
|
|
s3c24xx_register_clock(&dummy_apb_pclk);
|
|
|
|
|
|
s3c_pwmclk_init();
|
|
s3c_pwmclk_init();
|