|
@@ -688,3 +688,176 @@ static struct clk *clkset_sclk_audio0_list[] = {
|
|
|
[4] = &clk_sclk_usbphy1,
|
|
|
[5] = &clk_sclk_hdmiphy,
|
|
|
[6] = &clk_mout_mpll.clk,
|
|
|
+ [7] = &clk_mout_epll.clk,
|
|
|
+ [8] = &clk_sclk_vpll.clk,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_sources clkset_sclk_audio0 = {
|
|
|
+ .sources = clkset_sclk_audio0_list,
|
|
|
+ .nr_sources = ARRAY_SIZE(clkset_sclk_audio0_list),
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_clk clk_sclk_audio0 = {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_audio",
|
|
|
+ .devname = "soc-audio.0",
|
|
|
+ .enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 24),
|
|
|
+ },
|
|
|
+ .sources = &clkset_sclk_audio0,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC6, .shift = 0, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV6, .shift = 0, .size = 4 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk *clkset_sclk_audio1_list[] = {
|
|
|
+ [0] = &clk_ext_xtal_mux,
|
|
|
+ [1] = &clk_pcmcdclk1,
|
|
|
+ [2] = &clk_sclk_hdmi27m,
|
|
|
+ [3] = &clk_sclk_usbphy0,
|
|
|
+ [4] = &clk_sclk_usbphy1,
|
|
|
+ [5] = &clk_sclk_hdmiphy,
|
|
|
+ [6] = &clk_mout_mpll.clk,
|
|
|
+ [7] = &clk_mout_epll.clk,
|
|
|
+ [8] = &clk_sclk_vpll.clk,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_sources clkset_sclk_audio1 = {
|
|
|
+ .sources = clkset_sclk_audio1_list,
|
|
|
+ .nr_sources = ARRAY_SIZE(clkset_sclk_audio1_list),
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_clk clk_sclk_audio1 = {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_audio",
|
|
|
+ .devname = "soc-audio.1",
|
|
|
+ .enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 25),
|
|
|
+ },
|
|
|
+ .sources = &clkset_sclk_audio1,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC6, .shift = 4, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV6, .shift = 4, .size = 4 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk *clkset_sclk_audio2_list[] = {
|
|
|
+ [0] = &clk_ext_xtal_mux,
|
|
|
+ [1] = &clk_pcmcdclk0,
|
|
|
+ [2] = &clk_sclk_hdmi27m,
|
|
|
+ [3] = &clk_sclk_usbphy0,
|
|
|
+ [4] = &clk_sclk_usbphy1,
|
|
|
+ [5] = &clk_sclk_hdmiphy,
|
|
|
+ [6] = &clk_mout_mpll.clk,
|
|
|
+ [7] = &clk_mout_epll.clk,
|
|
|
+ [8] = &clk_sclk_vpll.clk,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_sources clkset_sclk_audio2 = {
|
|
|
+ .sources = clkset_sclk_audio2_list,
|
|
|
+ .nr_sources = ARRAY_SIZE(clkset_sclk_audio2_list),
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_clk clk_sclk_audio2 = {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_audio",
|
|
|
+ .devname = "soc-audio.2",
|
|
|
+ .enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 26),
|
|
|
+ },
|
|
|
+ .sources = &clkset_sclk_audio2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC6, .shift = 8, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV6, .shift = 8, .size = 4 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk *clkset_sclk_spdif_list[] = {
|
|
|
+ [0] = &clk_sclk_audio0.clk,
|
|
|
+ [1] = &clk_sclk_audio1.clk,
|
|
|
+ [2] = &clk_sclk_audio2.clk,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_sources clkset_sclk_spdif = {
|
|
|
+ .sources = clkset_sclk_spdif_list,
|
|
|
+ .nr_sources = ARRAY_SIZE(clkset_sclk_spdif_list),
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_clk clk_sclk_spdif = {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_spdif",
|
|
|
+ .enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 27),
|
|
|
+ .ops = &s5p_sclk_spdif_ops,
|
|
|
+ },
|
|
|
+ .sources = &clkset_sclk_spdif,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC6, .shift = 12, .size = 2 },
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk *clkset_group2_list[] = {
|
|
|
+ [0] = &clk_ext_xtal_mux,
|
|
|
+ [1] = &clk_xusbxti,
|
|
|
+ [2] = &clk_sclk_hdmi27m,
|
|
|
+ [3] = &clk_sclk_usbphy0,
|
|
|
+ [4] = &clk_sclk_usbphy1,
|
|
|
+ [5] = &clk_sclk_hdmiphy,
|
|
|
+ [6] = &clk_mout_mpll.clk,
|
|
|
+ [7] = &clk_mout_epll.clk,
|
|
|
+ [8] = &clk_sclk_vpll.clk,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_sources clkset_group2 = {
|
|
|
+ .sources = clkset_group2_list,
|
|
|
+ .nr_sources = ARRAY_SIZE(clkset_group2_list),
|
|
|
+};
|
|
|
+
|
|
|
+static struct clksrc_clk clksrcs[] = {
|
|
|
+ {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_dmc",
|
|
|
+ },
|
|
|
+ .sources = &clkset_group1,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC6, .shift = 24, .size = 2 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV6, .shift = 28, .size = 4 },
|
|
|
+ }, {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_onenand",
|
|
|
+ },
|
|
|
+ .sources = &clkset_sclk_onenand,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC0, .shift = 28, .size = 1 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV6, .shift = 12, .size = 3 },
|
|
|
+ }, {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_fimc",
|
|
|
+ .devname = "s5pv210-fimc.0",
|
|
|
+ .enable = s5pv210_clk_mask1_ctrl,
|
|
|
+ .ctrlbit = (1 << 2),
|
|
|
+ },
|
|
|
+ .sources = &clkset_group2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC3, .shift = 12, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV3, .shift = 12, .size = 4 },
|
|
|
+ }, {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_fimc",
|
|
|
+ .devname = "s5pv210-fimc.1",
|
|
|
+ .enable = s5pv210_clk_mask1_ctrl,
|
|
|
+ .ctrlbit = (1 << 3),
|
|
|
+ },
|
|
|
+ .sources = &clkset_group2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC3, .shift = 16, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV3, .shift = 16, .size = 4 },
|
|
|
+ }, {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_fimc",
|
|
|
+ .devname = "s5pv210-fimc.2",
|
|
|
+ .enable = s5pv210_clk_mask1_ctrl,
|
|
|
+ .ctrlbit = (1 << 4),
|
|
|
+ },
|
|
|
+ .sources = &clkset_group2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC3, .shift = 20, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV3, .shift = 20, .size = 4 },
|
|
|
+ }, {
|
|
|
+ .clk = {
|
|
|
+ .name = "sclk_cam0",
|
|
|
+ .enable = s5pv210_clk_mask0_ctrl,
|
|
|
+ .ctrlbit = (1 << 3),
|
|
|
+ },
|
|
|
+ .sources = &clkset_group2,
|
|
|
+ .reg_src = { .reg = S5P_CLK_SRC1, .shift = 12, .size = 4 },
|
|
|
+ .reg_div = { .reg = S5P_CLK_DIV1, .shift = 12, .size = 4 },
|
|
|
+ }, {
|