|
@@ -1037,3 +1037,96 @@ static struct clksrc_clk clk_sclk_spi0 = {
|
|
|
.name = "sclk_spi",
|
|
|
.devname = "s5pv210-spi.0",
|
|
|
.enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 16),
|
|
|
+ },
|
|
|
+ .sources = &clkset_group2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC5, .shift = 0, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV5, .shift = 0, .size = 4 },
|
|
|
+ };
|
|
|
+
|
|
|
+static struct clksrc_clk clk_sclk_spi1 = {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_spi",
|
|
|
+ .devname = "s5pv210-spi.1",
|
|
|
+ .enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 17),
|
|
|
+ },
|
|
|
+ .sources = &clkset_group2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC5, .shift = 4, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV5, .shift = 4, .size = 4 },
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+static struct clksrc_clk *clksrc_cdev[] = {
|
|
|
+ &clk_sclk_uart0,
|
|
|
+ &clk_sclk_uart1,
|
|
|
+ &clk_sclk_uart2,
|
|
|
+ &clk_sclk_uart3,
|
|
|
+ &clk_sclk_mmc0,
|
|
|
+ &clk_sclk_mmc1,
|
|
|
+ &clk_sclk_mmc2,
|
|
|
+ &clk_sclk_mmc3,
|
|
|
+ &clk_sclk_spi0,
|
|
|
+ &clk_sclk_spi1,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk *clk_cdev[] = {
|
|
|
+ &clk_hsmmc0,
|
|
|
+ &clk_hsmmc1,
|
|
|
+ &clk_hsmmc2,
|
|
|
+ &clk_hsmmc3,
|
|
|
+};
|
|
|
+
|
|
|
+/* Clock initialisation code */
|
|
|
+static struct clksrc_clk *sysclks[] = {
|
|
|
+ &clk_mout_apll,
|
|
|
+ &clk_mout_epll,
|
|
|
+ &clk_mout_mpll,
|
|
|
+ &clk_armclk,
|
|
|
+ &clk_hclk_msys,
|
|
|
+ &clk_sclk_a2m,
|
|
|
+ &clk_hclk_dsys,
|
|
|
+ &clk_hclk_psys,
|
|
|
+ &clk_pclk_msys,
|
|
|
+ &clk_pclk_dsys,
|
|
|
+ &clk_pclk_psys,
|
|
|
+ &clk_vpllsrc,
|
|
|
+ &clk_sclk_vpll,
|
|
|
+ &clk_mout_dmc0,
|
|
|
+ &clk_sclk_dmc0,
|
|
|
+ &clk_sclk_audio0,
|
|
|
+ &clk_sclk_audio1,
|
|
|
+ &clk_sclk_audio2,
|
|
|
+ &clk_sclk_spdif,
|
|
|
+};
|
|
|
+
|
|
|
+static u32 epll_div[][6] = {
|
|
|
+ { 48000000, 0, 48, 3, 3, 0 },
|
|
|
+ { 96000000, 0, 48, 3, 2, 0 },
|
|
|
+ { 144000000, 1, 72, 3, 2, 0 },
|
|
|
+ { 192000000, 0, 48, 3, 1, 0 },
|
|
|
+ { 288000000, 1, 72, 3, 1, 0 },
|
|
|
+ { 32750000, 1, 65, 3, 4, 35127 },
|
|
|
+ { 32768000, 1, 65, 3, 4, 35127 },
|
|
|
+ { 45158400, 0, 45, 3, 3, 10355 },
|
|
|
+ { 45000000, 0, 45, 3, 3, 10355 },
|
|
|
+ { 45158000, 0, 45, 3, 3, 10355 },
|
|
|
+ { 49125000, 0, 49, 3, 3, 9961 },
|
|
|
+ { 49152000, 0, 49, 3, 3, 9961 },
|
|
|
+ { 67737600, 1, 67, 3, 3, 48366 },
|
|
|
+ { 67738000, 1, 67, 3, 3, 48366 },
|
|
|
+ { 73800000, 1, 73, 3, 3, 47710 },
|
|
|
+ { 73728000, 1, 73, 3, 3, 47710 },
|
|
|
+ { 36000000, 1, 32, 3, 4, 0 },
|
|
|
+ { 60000000, 1, 60, 3, 3, 0 },
|
|
|
+ { 72000000, 1, 72, 3, 3, 0 },
|
|
|
+ { 80000000, 1, 80, 3, 3, 0 },
|
|
|
+ { 84000000, 0, 42, 3, 2, 0 },
|
|
|
+ { 50000000, 0, 50, 3, 3, 0 },
|
|
|
+};
|
|
|
+
|
|
|
+static int s5pv210_epll_set_rate(struct clk *clk, unsigned long rate)
|
|
|
+{
|
|
|
+ unsigned int epll_con, epll_con_k;
|
|
|
+ unsigned int i;
|
|
|
+
|