aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@kernel.org>2018-03-14 18:14:08 -0400
committerStephen Boyd <sboyd@kernel.org>2018-03-14 18:14:08 -0400
commitcc4d07a41113f60fc514308fb073c567938412fc (patch)
tree84cc7579385160393bdb9a13ee6a66a02d156919
parent84b7bbacd8246c49e519de06a58a2a1c2e987f6f (diff)
parenta5510399e9535b9348adb70c09faa3de51541f9b (diff)
Merge tag 'clk-imx-4.17-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into clk-imx
Pull i.MX clock misc updates from Shawn Guo: - A correction on i.MX6SX CKO clock mux options. - A fix on i.MX7D Video PLL clock tree to include the missing dividers. - Update i.MX6UL/ULL clock driver to add epdc_podf instead of sim_podf clock for i.MX6ULL. * tag 'clk-imx-4.17-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: clk: imx6ull: Add epdc_podf instead of sim_podf clk: imx: imx7d: correct video pll clock tree clk: imx: imx6sx: update cko mux options
-rw-r--r--drivers/clk/imx/clk-imx6sx.c14
-rw-r--r--drivers/clk/imx/clk-imx6ul.c5
-rw-r--r--drivers/clk/imx/clk-imx7d.c84
3 files changed, 55 insertions, 48 deletions
diff --git a/drivers/clk/imx/clk-imx6sx.c b/drivers/clk/imx/clk-imx6sx.c
index e6d389e333d7..bc3f9ebf2d9e 100644
--- a/drivers/clk/imx/clk-imx6sx.c
+++ b/drivers/clk/imx/clk-imx6sx.c
@@ -63,17 +63,17 @@ static const char *lcdif2_sels[] = { "lcdif2_podf", "ipp_di0", "ipp_di1", "ldb_d
63static const char *display_sels[] = { "pll2_bus", "pll2_pfd2_396m", "pll3_usb_otg", "pll3_pfd1_540m", }; 63static const char *display_sels[] = { "pll2_bus", "pll2_pfd2_396m", "pll3_usb_otg", "pll3_pfd1_540m", };
64static const char *csi_sels[] = { "osc", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; 64static const char *csi_sels[] = { "osc", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
65static const char *cko1_sels[] = { 65static const char *cko1_sels[] = {
66 "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div", 66 "dummy", "dummy", "dummy", "dummy",
67 "dummy", "ocram", "dummy", "pxp_axi", "epdc_axi", "lcdif_pix", 67 "vadc", "ocram", "qspi2", "m4", "enet_ahb", "lcdif2_pix",
68 "epdc_pix", "ahb", "ipg", "perclk", "ckil", "pll4_audio_div", 68 "lcdif1_pix", "ahb", "ipg", "perclk", "ckil", "pll4_audio_div",
69}; 69};
70static const char *cko2_sels[] = { 70static const char *cko2_sels[] = {
71 "dummy", "mmdc_p0_fast", "usdhc4", "usdhc1", "dummy", "wrck", 71 "dummy", "mmdc_p0_fast", "usdhc4", "usdhc1", "dummy", "wrck",
72 "ecspi_root", "dummy", "usdhc3", "pcie", "arm", "csi_core", 72 "ecspi_root", "dummy", "usdhc3", "pcie", "arm", "csi_core",
73 "lcdif_axi", "dummy", "osc", "dummy", "gpu2d_ovg_core", 73 "display_axi", "dummy", "osc", "dummy", "dummy",
74 "usdhc2", "ssi1", "ssi2", "ssi3", "gpu2d_core", "dummy", 74 "usdhc2", "ssi1", "ssi2", "ssi3", "gpu_axi_podf", "dummy",
75 "dummy", "dummy", "dummy", "esai_extal", "eim_slow", "uart_serial", 75 "can_podf", "lvds1_out", "qspi1", "esai_extal", "eim_slow",
76 "spdif", "asrc", "dummy", 76 "uart_serial", "spdif", "audio", "dummy",
77}; 77};
78static const char *cko_sels[] = { "cko1", "cko2", }; 78static const char *cko_sels[] = { "cko1", "cko2", };
79static const char *lvds_sels[] = { 79static const char *lvds_sels[] = {
diff --git a/drivers/clk/imx/clk-imx6ul.c b/drivers/clk/imx/clk-imx6ul.c
index 85c118164469..114ecbb94ec5 100644
--- a/drivers/clk/imx/clk-imx6ul.c
+++ b/drivers/clk/imx/clk-imx6ul.c
@@ -308,7 +308,10 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
308 clks[IMX6UL_CLK_SAI2_PODF] = imx_clk_divider("sai2_podf", "sai2_pred", base + 0x2c, 0, 6); 308 clks[IMX6UL_CLK_SAI2_PODF] = imx_clk_divider("sai2_podf", "sai2_pred", base + 0x2c, 0, 6);
309 clks[IMX6UL_CLK_SPDIF_PRED] = imx_clk_divider("spdif_pred", "spdif_sel", base + 0x30, 25, 3); 309 clks[IMX6UL_CLK_SPDIF_PRED] = imx_clk_divider("spdif_pred", "spdif_sel", base + 0x30, 25, 3);
310 clks[IMX6UL_CLK_SPDIF_PODF] = imx_clk_divider("spdif_podf", "spdif_pred", base + 0x30, 22, 3); 310 clks[IMX6UL_CLK_SPDIF_PODF] = imx_clk_divider("spdif_podf", "spdif_pred", base + 0x30, 22, 3);
311 clks[IMX6UL_CLK_SIM_PODF] = imx_clk_divider("sim_podf", "sim_pre_sel", base + 0x34, 12, 3); 311 if (clk_on_imx6ul())
312 clks[IMX6UL_CLK_SIM_PODF] = imx_clk_divider("sim_podf", "sim_pre_sel", base + 0x34, 12, 3);
313 else if (clk_on_imx6ull())
314 clks[IMX6ULL_CLK_EPDC_PODF] = imx_clk_divider("epdc_podf", "epdc_pre_sel", base + 0x34, 12, 3);
312 clks[IMX6UL_CLK_ECSPI_PODF] = imx_clk_divider("ecspi_podf", "ecspi_sel", base + 0x38, 19, 6); 315 clks[IMX6UL_CLK_ECSPI_PODF] = imx_clk_divider("ecspi_podf", "ecspi_sel", base + 0x38, 19, 6);
313 clks[IMX6UL_CLK_LCDIF_PRED] = imx_clk_divider("lcdif_pred", "lcdif_pre_sel", base + 0x38, 12, 3); 316 clks[IMX6UL_CLK_LCDIF_PRED] = imx_clk_divider("lcdif_pred", "lcdif_pre_sel", base + 0x38, 12, 3);
314 clks[IMX6UL_CLK_CSI_PODF] = imx_clk_divider("csi_podf", "csi_sel", base + 0x3c, 11, 3); 317 clks[IMX6UL_CLK_CSI_PODF] = imx_clk_divider("csi_podf", "csi_sel", base + 0x3c, 11, 3);
diff --git a/drivers/clk/imx/clk-imx7d.c b/drivers/clk/imx/clk-imx7d.c
index 617beb234259..89bfa75e46bd 100644
--- a/drivers/clk/imx/clk-imx7d.c
+++ b/drivers/clk/imx/clk-imx7d.c
@@ -51,20 +51,20 @@ static const char *arm_a7_sel[] = { "osc", "pll_arm_main_clk",
51 51
52static const char *arm_m4_sel[] = { "osc", "pll_sys_main_240m_clk", 52static const char *arm_m4_sel[] = { "osc", "pll_sys_main_240m_clk",
53 "pll_enet_250m_clk", "pll_sys_pfd2_270m_clk", 53 "pll_enet_250m_clk", "pll_sys_pfd2_270m_clk",
54 "pll_dram_533m_clk", "pll_audio_post_div", "pll_video_main_clk", 54 "pll_dram_533m_clk", "pll_audio_post_div", "pll_video_post_div",
55 "pll_usb_main_clk", }; 55 "pll_usb_main_clk", };
56 56
57static const char *axi_sel[] = { "osc", "pll_sys_pfd1_332m_clk", 57static const char *axi_sel[] = { "osc", "pll_sys_pfd1_332m_clk",
58 "pll_dram_533m_clk", "pll_enet_250m_clk", "pll_sys_pfd5_clk", 58 "pll_dram_533m_clk", "pll_enet_250m_clk", "pll_sys_pfd5_clk",
59 "pll_audio_post_div", "pll_video_main_clk", "pll_sys_pfd7_clk", }; 59 "pll_audio_post_div", "pll_video_post_div", "pll_sys_pfd7_clk", };
60 60
61static const char *disp_axi_sel[] = { "osc", "pll_sys_pfd1_332m_clk", 61static const char *disp_axi_sel[] = { "osc", "pll_sys_pfd1_332m_clk",
62 "pll_dram_533m_clk", "pll_enet_250m_clk", "pll_sys_pfd6_clk", 62 "pll_dram_533m_clk", "pll_enet_250m_clk", "pll_sys_pfd6_clk",
63 "pll_sys_pfd7_clk", "pll_audio_post_div", "pll_video_main_clk", }; 63 "pll_sys_pfd7_clk", "pll_audio_post_div", "pll_video_post_div", };
64 64
65static const char *enet_axi_sel[] = { "osc", "pll_sys_pfd2_270m_clk", 65static const char *enet_axi_sel[] = { "osc", "pll_sys_pfd2_270m_clk",
66 "pll_dram_533m_clk", "pll_enet_250m_clk", 66 "pll_dram_533m_clk", "pll_enet_250m_clk",
67 "pll_sys_main_240m_clk", "pll_audio_post_div", "pll_video_main_clk", 67 "pll_sys_main_240m_clk", "pll_audio_post_div", "pll_video_post_div",
68 "pll_sys_pfd4_clk", }; 68 "pll_sys_pfd4_clk", };
69 69
70static const char *nand_usdhc_bus_sel[] = { "osc", "pll_sys_pfd2_270m_clk", 70static const char *nand_usdhc_bus_sel[] = { "osc", "pll_sys_pfd2_270m_clk",
@@ -75,7 +75,7 @@ static const char *nand_usdhc_bus_sel[] = { "osc", "pll_sys_pfd2_270m_clk",
75static const char *ahb_channel_sel[] = { "osc", "pll_sys_pfd2_270m_clk", 75static const char *ahb_channel_sel[] = { "osc", "pll_sys_pfd2_270m_clk",
76 "pll_dram_533m_clk", "pll_sys_pfd0_392m_clk", 76 "pll_dram_533m_clk", "pll_sys_pfd0_392m_clk",
77 "pll_enet_125m_clk", "pll_usb_main_clk", "pll_audio_post_div", 77 "pll_enet_125m_clk", "pll_usb_main_clk", "pll_audio_post_div",
78 "pll_video_main_clk", }; 78 "pll_video_post_div", };
79 79
80static const char *dram_phym_sel[] = { "pll_dram_main_clk", 80static const char *dram_phym_sel[] = { "pll_dram_main_clk",
81 "dram_phym_alt_clk", }; 81 "dram_phym_alt_clk", };
@@ -86,7 +86,7 @@ static const char *dram_sel[] = { "pll_dram_main_clk",
86static const char *dram_phym_alt_sel[] = { "osc", "pll_dram_533m_clk", 86static const char *dram_phym_alt_sel[] = { "osc", "pll_dram_533m_clk",
87 "pll_sys_main_clk", "pll_enet_500m_clk", 87 "pll_sys_main_clk", "pll_enet_500m_clk",
88 "pll_usb_main_clk", "pll_sys_pfd7_clk", "pll_audio_post_div", 88 "pll_usb_main_clk", "pll_sys_pfd7_clk", "pll_audio_post_div",
89 "pll_video_main_clk", }; 89 "pll_video_post_div", };
90 90
91static const char *dram_alt_sel[] = { "osc", "pll_dram_533m_clk", 91static const char *dram_alt_sel[] = { "osc", "pll_dram_533m_clk",
92 "pll_sys_main_clk", "pll_enet_500m_clk", 92 "pll_sys_main_clk", "pll_enet_500m_clk",
@@ -108,62 +108,62 @@ static const char *pcie_phy_sel[] = { "osc", "pll_enet_100m_clk",
108 108
109static const char *epdc_pixel_sel[] = { "osc", "pll_sys_pfd1_332m_clk", 109static const char *epdc_pixel_sel[] = { "osc", "pll_sys_pfd1_332m_clk",
110 "pll_dram_533m_clk", "pll_sys_main_clk", "pll_sys_pfd5_clk", 110 "pll_dram_533m_clk", "pll_sys_main_clk", "pll_sys_pfd5_clk",
111 "pll_sys_pfd6_clk", "pll_sys_pfd7_clk", "pll_video_main_clk", }; 111 "pll_sys_pfd6_clk", "pll_sys_pfd7_clk", "pll_video_post_div", };
112 112
113static const char *lcdif_pixel_sel[] = { "osc", "pll_sys_pfd5_clk", 113static const char *lcdif_pixel_sel[] = { "osc", "pll_sys_pfd5_clk",
114 "pll_dram_533m_clk", "ext_clk_3", "pll_sys_pfd4_clk", 114 "pll_dram_533m_clk", "ext_clk_3", "pll_sys_pfd4_clk",
115 "pll_sys_pfd2_270m_clk", "pll_video_main_clk", 115 "pll_sys_pfd2_270m_clk", "pll_video_post_div",
116 "pll_usb_main_clk", }; 116 "pll_usb_main_clk", };
117 117
118static const char *mipi_dsi_sel[] = { "osc", "pll_sys_pfd5_clk", 118static const char *mipi_dsi_sel[] = { "osc", "pll_sys_pfd5_clk",
119 "pll_sys_pfd3_clk", "pll_sys_main_clk", "pll_sys_pfd0_196m_clk", 119 "pll_sys_pfd3_clk", "pll_sys_main_clk", "pll_sys_pfd0_196m_clk",
120 "pll_dram_533m_clk", "pll_video_main_clk", "pll_audio_post_div", }; 120 "pll_dram_533m_clk", "pll_video_post_div", "pll_audio_post_div", };
121 121
122static const char *mipi_csi_sel[] = { "osc", "pll_sys_pfd4_clk", 122static const char *mipi_csi_sel[] = { "osc", "pll_sys_pfd4_clk",
123 "pll_sys_pfd3_clk", "pll_sys_main_clk", "pll_sys_pfd0_196m_clk", 123 "pll_sys_pfd3_clk", "pll_sys_main_clk", "pll_sys_pfd0_196m_clk",
124 "pll_dram_533m_clk", "pll_video_main_clk", "pll_audio_post_div", }; 124 "pll_dram_533m_clk", "pll_video_post_div", "pll_audio_post_div", };
125 125
126static const char *mipi_dphy_sel[] = { "osc", "pll_sys_main_120m_clk", 126static const char *mipi_dphy_sel[] = { "osc", "pll_sys_main_120m_clk",
127 "pll_dram_533m_clk", "pll_sys_pfd5_clk", "ref_1m_clk", "ext_clk_2", 127 "pll_dram_533m_clk", "pll_sys_pfd5_clk", "ref_1m_clk", "ext_clk_2",
128 "pll_video_main_clk", "ext_clk_3", }; 128 "pll_video_post_div", "ext_clk_3", };
129 129
130static const char *sai1_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 130static const char *sai1_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
131 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_main_clk", 131 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_post_div",
132 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_clk_2", }; 132 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_clk_2", };
133 133
134static const char *sai2_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 134static const char *sai2_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
135 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_main_clk", 135 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_post_div",
136 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_clk_2", }; 136 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_clk_2", };
137 137
138static const char *sai3_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 138static const char *sai3_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
139 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_main_clk", 139 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_post_div",
140 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_clk_3", }; 140 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_clk_3", };
141 141
142static const char *spdif_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 142static const char *spdif_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
143 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_main_clk", 143 "pll_audio_post_div", "pll_dram_533m_clk", "pll_video_post_div",
144 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_3_clk", }; 144 "pll_sys_pfd4_clk", "pll_enet_125m_clk", "ext_3_clk", };
145 145
146static const char *enet1_ref_sel[] = { "osc", "pll_enet_125m_clk", 146static const char *enet1_ref_sel[] = { "osc", "pll_enet_125m_clk",
147 "pll_enet_50m_clk", "pll_enet_25m_clk", 147 "pll_enet_50m_clk", "pll_enet_25m_clk",
148 "pll_sys_main_120m_clk", "pll_audio_post_div", "pll_video_main_clk", 148 "pll_sys_main_120m_clk", "pll_audio_post_div", "pll_video_post_div",
149 "ext_clk_4", }; 149 "ext_clk_4", };
150 150
151static const char *enet1_time_sel[] = { "osc", "pll_enet_100m_clk", 151static const char *enet1_time_sel[] = { "osc", "pll_enet_100m_clk",
152 "pll_audio_post_div", "ext_clk_1", "ext_clk_2", "ext_clk_3", 152 "pll_audio_post_div", "ext_clk_1", "ext_clk_2", "ext_clk_3",
153 "ext_clk_4", "pll_video_main_clk", }; 153 "ext_clk_4", "pll_video_post_div", };
154 154
155static const char *enet2_ref_sel[] = { "osc", "pll_enet_125m_clk", 155static const char *enet2_ref_sel[] = { "osc", "pll_enet_125m_clk",
156 "pll_enet_50m_clk", "pll_enet_25m_clk", 156 "pll_enet_50m_clk", "pll_enet_25m_clk",
157 "pll_sys_main_120m_clk", "pll_audio_post_div", "pll_video_main_clk", 157 "pll_sys_main_120m_clk", "pll_audio_post_div", "pll_video_post_div",
158 "ext_clk_4", }; 158 "ext_clk_4", };
159 159
160static const char *enet2_time_sel[] = { "osc", "pll_enet_100m_clk", 160static const char *enet2_time_sel[] = { "osc", "pll_enet_100m_clk",
161 "pll_audio_post_div", "ext_clk_1", "ext_clk_2", "ext_clk_3", 161 "pll_audio_post_div", "ext_clk_1", "ext_clk_2", "ext_clk_3",
162 "ext_clk_4", "pll_video_main_clk", }; 162 "ext_clk_4", "pll_video_post_div", };
163 163
164static const char *enet_phy_ref_sel[] = { "osc", "pll_enet_25m_clk", 164static const char *enet_phy_ref_sel[] = { "osc", "pll_enet_25m_clk",
165 "pll_enet_50m_clk", "pll_enet_125m_clk", 165 "pll_enet_50m_clk", "pll_enet_125m_clk",
166 "pll_dram_533m_clk", "pll_audio_post_div", "pll_video_main_clk", 166 "pll_dram_533m_clk", "pll_audio_post_div", "pll_video_post_div",
167 "pll_sys_pfd3_clk", }; 167 "pll_sys_pfd3_clk", };
168 168
169static const char *eim_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 169static const char *eim_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
@@ -174,7 +174,7 @@ static const char *eim_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
174static const char *nand_sel[] = { "osc", "pll_sys_main_clk", 174static const char *nand_sel[] = { "osc", "pll_sys_main_clk",
175 "pll_dram_533m_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd3_clk", 175 "pll_dram_533m_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd3_clk",
176 "pll_enet_500m_clk", "pll_enet_250m_clk", 176 "pll_enet_500m_clk", "pll_enet_250m_clk",
177 "pll_video_main_clk", }; 177 "pll_video_post_div", };
178 178
179static const char *qspi_sel[] = { "osc", "pll_sys_pfd4_clk", 179static const char *qspi_sel[] = { "osc", "pll_sys_pfd4_clk",
180 "pll_dram_533m_clk", "pll_enet_500m_clk", "pll_sys_pfd3_clk", 180 "pll_dram_533m_clk", "pll_enet_500m_clk", "pll_sys_pfd3_clk",
@@ -204,22 +204,22 @@ static const char *can2_sel[] = { "osc", "pll_sys_main_120m_clk",
204 204
205static const char *i2c1_sel[] = { "osc", "pll_sys_main_120m_clk", 205static const char *i2c1_sel[] = { "osc", "pll_sys_main_120m_clk",
206 "pll_enet_50m_clk", "pll_dram_533m_clk", 206 "pll_enet_50m_clk", "pll_dram_533m_clk",
207 "pll_audio_post_div", "pll_video_main_clk", "pll_usb_main_clk", 207 "pll_audio_post_div", "pll_video_post_div", "pll_usb_main_clk",
208 "pll_sys_pfd2_135m_clk", }; 208 "pll_sys_pfd2_135m_clk", };
209 209
210static const char *i2c2_sel[] = { "osc", "pll_sys_main_120m_clk", 210static const char *i2c2_sel[] = { "osc", "pll_sys_main_120m_clk",
211 "pll_enet_50m_clk", "pll_dram_533m_clk", 211 "pll_enet_50m_clk", "pll_dram_533m_clk",
212 "pll_audio_post_div", "pll_video_main_clk", "pll_usb_main_clk", 212 "pll_audio_post_div", "pll_video_post_div", "pll_usb_main_clk",
213 "pll_sys_pfd2_135m_clk", }; 213 "pll_sys_pfd2_135m_clk", };
214 214
215static const char *i2c3_sel[] = { "osc", "pll_sys_main_120m_clk", 215static const char *i2c3_sel[] = { "osc", "pll_sys_main_120m_clk",
216 "pll_enet_50m_clk", "pll_dram_533m_clk", 216 "pll_enet_50m_clk", "pll_dram_533m_clk",
217 "pll_audio_post_div", "pll_video_main_clk", "pll_usb_main_clk", 217 "pll_audio_post_div", "pll_video_post_div", "pll_usb_main_clk",
218 "pll_sys_pfd2_135m_clk", }; 218 "pll_sys_pfd2_135m_clk", };
219 219
220static const char *i2c4_sel[] = { "osc", "pll_sys_main_120m_clk", 220static const char *i2c4_sel[] = { "osc", "pll_sys_main_120m_clk",
221 "pll_enet_50m_clk", "pll_dram_533m_clk", 221 "pll_enet_50m_clk", "pll_dram_533m_clk",
222 "pll_audio_post_div", "pll_video_main_clk", "pll_usb_main_clk", 222 "pll_audio_post_div", "pll_video_post_div", "pll_usb_main_clk",
223 "pll_sys_pfd2_135m_clk", }; 223 "pll_sys_pfd2_135m_clk", };
224 224
225static const char *uart1_sel[] = { "osc", "pll_sys_main_240m_clk", 225static const char *uart1_sel[] = { "osc", "pll_sys_main_240m_clk",
@@ -279,27 +279,27 @@ static const char *ecspi4_sel[] = { "osc", "pll_sys_main_240m_clk",
279 279
280static const char *pwm1_sel[] = { "osc", "pll_enet_100m_clk", 280static const char *pwm1_sel[] = { "osc", "pll_enet_100m_clk",
281 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div", 281 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div",
282 "ext_clk_1", "ref_1m_clk", "pll_video_main_clk", }; 282 "ext_clk_1", "ref_1m_clk", "pll_video_post_div", };
283 283
284static const char *pwm2_sel[] = { "osc", "pll_enet_100m_clk", 284static const char *pwm2_sel[] = { "osc", "pll_enet_100m_clk",
285 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div", 285 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div",
286 "ext_clk_1", "ref_1m_clk", "pll_video_main_clk", }; 286 "ext_clk_1", "ref_1m_clk", "pll_video_post_div", };
287 287
288static const char *pwm3_sel[] = { "osc", "pll_enet_100m_clk", 288static const char *pwm3_sel[] = { "osc", "pll_enet_100m_clk",
289 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div", 289 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div",
290 "ext_clk_2", "ref_1m_clk", "pll_video_main_clk", }; 290 "ext_clk_2", "ref_1m_clk", "pll_video_post_div", };
291 291
292static const char *pwm4_sel[] = { "osc", "pll_enet_100m_clk", 292static const char *pwm4_sel[] = { "osc", "pll_enet_100m_clk",
293 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div", 293 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div",
294 "ext_clk_2", "ref_1m_clk", "pll_video_main_clk", }; 294 "ext_clk_2", "ref_1m_clk", "pll_video_post_div", };
295 295
296static const char *flextimer1_sel[] = { "osc", "pll_enet_100m_clk", 296static const char *flextimer1_sel[] = { "osc", "pll_enet_100m_clk",
297 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div", 297 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div",
298 "ext_clk_3", "ref_1m_clk", "pll_video_main_clk", }; 298 "ext_clk_3", "ref_1m_clk", "pll_video_post_div", };
299 299
300static const char *flextimer2_sel[] = { "osc", "pll_enet_100m_clk", 300static const char *flextimer2_sel[] = { "osc", "pll_enet_100m_clk",
301 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div", 301 "pll_sys_main_120m_clk", "pll_enet_40m_clk", "pll_audio_post_div",
302 "ext_clk_3", "ref_1m_clk", "pll_video_main_clk", }; 302 "ext_clk_3", "ref_1m_clk", "pll_video_post_div", };
303 303
304static const char *sim1_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 304static const char *sim1_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
305 "pll_sys_main_120m_clk", "pll_dram_533m_clk", 305 "pll_sys_main_120m_clk", "pll_dram_533m_clk",
@@ -308,23 +308,23 @@ static const char *sim1_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
308 308
309static const char *sim2_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 309static const char *sim2_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
310 "pll_sys_main_120m_clk", "pll_dram_533m_clk", 310 "pll_sys_main_120m_clk", "pll_dram_533m_clk",
311 "pll_usb_main_clk", "pll_video_main_clk", "pll_enet_125m_clk", 311 "pll_usb_main_clk", "pll_video_post_div", "pll_enet_125m_clk",
312 "pll_sys_pfd7_clk", }; 312 "pll_sys_pfd7_clk", };
313 313
314static const char *gpt1_sel[] = { "osc", "pll_enet_100m_clk", 314static const char *gpt1_sel[] = { "osc", "pll_enet_100m_clk",
315 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_main_clk", 315 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_post_div",
316 "ref_1m_clk", "pll_audio_post_div", "ext_clk_1", }; 316 "ref_1m_clk", "pll_audio_post_div", "ext_clk_1", };
317 317
318static const char *gpt2_sel[] = { "osc", "pll_enet_100m_clk", 318static const char *gpt2_sel[] = { "osc", "pll_enet_100m_clk",
319 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_main_clk", 319 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_post_div",
320 "ref_1m_clk", "pll_audio_post_div", "ext_clk_2", }; 320 "ref_1m_clk", "pll_audio_post_div", "ext_clk_2", };
321 321
322static const char *gpt3_sel[] = { "osc", "pll_enet_100m_clk", 322static const char *gpt3_sel[] = { "osc", "pll_enet_100m_clk",
323 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_main_clk", 323 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_post_div",
324 "ref_1m_clk", "pll_audio_post_div", "ext_clk_3", }; 324 "ref_1m_clk", "pll_audio_post_div", "ext_clk_3", };
325 325
326static const char *gpt4_sel[] = { "osc", "pll_enet_100m_clk", 326static const char *gpt4_sel[] = { "osc", "pll_enet_100m_clk",
327 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_main_clk", 327 "pll_sys_pfd0_392m_clk", "pll_enet_40m_clk", "pll_video_post_div",
328 "ref_1m_clk", "pll_audio_post_div", "ext_clk_4", }; 328 "ref_1m_clk", "pll_audio_post_div", "ext_clk_4", };
329 329
330static const char *trace_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 330static const char *trace_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
@@ -339,12 +339,12 @@ static const char *wdog_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
339 339
340static const char *csi_mclk_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 340static const char *csi_mclk_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
341 "pll_sys_main_120m_clk", "pll_dram_533m_clk", 341 "pll_sys_main_120m_clk", "pll_dram_533m_clk",
342 "pll_enet_125m_clk", "pll_audio_post_div", "pll_video_main_clk", 342 "pll_enet_125m_clk", "pll_audio_post_div", "pll_video_post_div",
343 "pll_usb_main_clk", }; 343 "pll_usb_main_clk", };
344 344
345static const char *audio_mclk_sel[] = { "osc", "pll_sys_pfd2_135m_clk", 345static const char *audio_mclk_sel[] = { "osc", "pll_sys_pfd2_135m_clk",
346 "pll_sys_main_120m_clk", "pll_dram_533m_clk", 346 "pll_sys_main_120m_clk", "pll_dram_533m_clk",
347 "pll_enet_125m_clk", "pll_audio_post_div", "pll_video_main_clk", 347 "pll_enet_125m_clk", "pll_audio_post_div", "pll_video_post_div",
348 "pll_usb_main_clk", }; 348 "pll_usb_main_clk", };
349 349
350static const char *wrclk_sel[] = { "osc", "pll_enet_40m_clk", 350static const char *wrclk_sel[] = { "osc", "pll_enet_40m_clk",
@@ -358,13 +358,13 @@ static const char *clko1_sel[] = { "osc", "pll_sys_main_clk",
358 358
359static const char *clko2_sel[] = { "osc", "pll_sys_main_240m_clk", 359static const char *clko2_sel[] = { "osc", "pll_sys_main_240m_clk",
360 "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_166m_clk", "pll_sys_pfd4_clk", 360 "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_166m_clk", "pll_sys_pfd4_clk",
361 "pll_audio_post_div", "pll_video_main_clk", "ckil", }; 361 "pll_audio_post_div", "pll_video_post_div", "ckil", };
362 362
363static const char *lvds1_sel[] = { "pll_arm_main_clk", 363static const char *lvds1_sel[] = { "pll_arm_main_clk",
364 "pll_sys_main_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_332m_clk", 364 "pll_sys_main_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_332m_clk",
365 "pll_sys_pfd2_270m_clk", "pll_sys_pfd3_clk", "pll_sys_pfd4_clk", 365 "pll_sys_pfd2_270m_clk", "pll_sys_pfd3_clk", "pll_sys_pfd4_clk",
366 "pll_sys_pfd5_clk", "pll_sys_pfd6_clk", "pll_sys_pfd7_clk", 366 "pll_sys_pfd5_clk", "pll_sys_pfd6_clk", "pll_sys_pfd7_clk",
367 "pll_audio_post_div", "pll_video_main_clk", "pll_enet_500m_clk", 367 "pll_audio_post_div", "pll_video_post_div", "pll_enet_500m_clk",
368 "pll_enet_250m_clk", "pll_enet_125m_clk", "pll_enet_100m_clk", 368 "pll_enet_250m_clk", "pll_enet_125m_clk", "pll_enet_100m_clk",
369 "pll_enet_50m_clk", "pll_enet_40m_clk", "pll_enet_25m_clk", 369 "pll_enet_50m_clk", "pll_enet_40m_clk", "pll_enet_25m_clk",
370 "pll_dram_main_clk", }; 370 "pll_dram_main_clk", };
@@ -450,6 +450,10 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
450 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0xf0, 19, 2, 0, test_div_table, &imx_ccm_lock); 450 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0xf0, 19, 2, 0, test_div_table, &imx_ccm_lock);
451 clks[IMX7D_PLL_AUDIO_POST_DIV] = clk_register_divider_table(NULL, "pll_audio_post_div", "pll_audio_test_div", 451 clks[IMX7D_PLL_AUDIO_POST_DIV] = clk_register_divider_table(NULL, "pll_audio_post_div", "pll_audio_test_div",
452 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0xf0, 22, 2, 0, post_div_table, &imx_ccm_lock); 452 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0xf0, 22, 2, 0, post_div_table, &imx_ccm_lock);
453 clks[IMX7D_PLL_VIDEO_TEST_DIV] = clk_register_divider_table(NULL, "pll_video_test_div", "pll_video_main_clk",
454 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0x130, 19, 2, 0, test_div_table, &imx_ccm_lock);
455 clks[IMX7D_PLL_VIDEO_POST_DIV] = clk_register_divider_table(NULL, "pll_video_post_div", "pll_video_test_div",
456 CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0x130, 22, 2, 0, post_div_table, &imx_ccm_lock);
453 457
454 clks[IMX7D_PLL_SYS_PFD0_392M_CLK] = imx_clk_pfd("pll_sys_pfd0_392m_clk", "pll_sys_main_clk", base + 0xc0, 0); 458 clks[IMX7D_PLL_SYS_PFD0_392M_CLK] = imx_clk_pfd("pll_sys_pfd0_392m_clk", "pll_sys_main_clk", base + 0xc0, 0);
455 clks[IMX7D_PLL_SYS_PFD1_332M_CLK] = imx_clk_pfd("pll_sys_pfd1_332m_clk", "pll_sys_main_clk", base + 0xc0, 1); 459 clks[IMX7D_PLL_SYS_PFD1_332M_CLK] = imx_clk_pfd("pll_sys_pfd1_332m_clk", "pll_sys_main_clk", base + 0xc0, 1);