diff options
author | Stephen Boyd <sboyd@kernel.org> | 2018-03-14 18:14:08 -0400 |
---|---|---|
committer | Stephen Boyd <sboyd@kernel.org> | 2018-03-14 18:14:08 -0400 |
commit | cc4d07a41113f60fc514308fb073c567938412fc (patch) | |
tree | 84cc7579385160393bdb9a13ee6a66a02d156919 | |
parent | 84b7bbacd8246c49e519de06a58a2a1c2e987f6f (diff) | |
parent | a5510399e9535b9348adb70c09faa3de51541f9b (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.c | 14 | ||||
-rw-r--r-- | drivers/clk/imx/clk-imx6ul.c | 5 | ||||
-rw-r--r-- | drivers/clk/imx/clk-imx7d.c | 84 |
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 | |||
63 | static const char *display_sels[] = { "pll2_bus", "pll2_pfd2_396m", "pll3_usb_otg", "pll3_pfd1_540m", }; | 63 | static const char *display_sels[] = { "pll2_bus", "pll2_pfd2_396m", "pll3_usb_otg", "pll3_pfd1_540m", }; |
64 | static const char *csi_sels[] = { "osc", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; | 64 | static const char *csi_sels[] = { "osc", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; |
65 | static const char *cko1_sels[] = { | 65 | static 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 | }; |
70 | static const char *cko2_sels[] = { | 70 | static 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 | }; |
78 | static const char *cko_sels[] = { "cko1", "cko2", }; | 78 | static const char *cko_sels[] = { "cko1", "cko2", }; |
79 | static const char *lvds_sels[] = { | 79 | static 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 | ||
52 | static const char *arm_m4_sel[] = { "osc", "pll_sys_main_240m_clk", | 52 | static 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 | ||
57 | static const char *axi_sel[] = { "osc", "pll_sys_pfd1_332m_clk", | 57 | static 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 | ||
61 | static const char *disp_axi_sel[] = { "osc", "pll_sys_pfd1_332m_clk", | 61 | static 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 | ||
65 | static const char *enet_axi_sel[] = { "osc", "pll_sys_pfd2_270m_clk", | 65 | static 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 | ||
70 | static const char *nand_usdhc_bus_sel[] = { "osc", "pll_sys_pfd2_270m_clk", | 70 | static 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", | |||
75 | static const char *ahb_channel_sel[] = { "osc", "pll_sys_pfd2_270m_clk", | 75 | static 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 | ||
80 | static const char *dram_phym_sel[] = { "pll_dram_main_clk", | 80 | static 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", | |||
86 | static const char *dram_phym_alt_sel[] = { "osc", "pll_dram_533m_clk", | 86 | static 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 | ||
91 | static const char *dram_alt_sel[] = { "osc", "pll_dram_533m_clk", | 91 | static 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 | ||
109 | static const char *epdc_pixel_sel[] = { "osc", "pll_sys_pfd1_332m_clk", | 109 | static 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 | ||
113 | static const char *lcdif_pixel_sel[] = { "osc", "pll_sys_pfd5_clk", | 113 | static 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 | ||
118 | static const char *mipi_dsi_sel[] = { "osc", "pll_sys_pfd5_clk", | 118 | static 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 | ||
122 | static const char *mipi_csi_sel[] = { "osc", "pll_sys_pfd4_clk", | 122 | static 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 | ||
126 | static const char *mipi_dphy_sel[] = { "osc", "pll_sys_main_120m_clk", | 126 | static 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 | ||
130 | static const char *sai1_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 130 | static 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 | ||
134 | static const char *sai2_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 134 | static 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 | ||
138 | static const char *sai3_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 138 | static 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 | ||
142 | static const char *spdif_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 142 | static 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 | ||
146 | static const char *enet1_ref_sel[] = { "osc", "pll_enet_125m_clk", | 146 | static 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 | ||
151 | static const char *enet1_time_sel[] = { "osc", "pll_enet_100m_clk", | 151 | static 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 | ||
155 | static const char *enet2_ref_sel[] = { "osc", "pll_enet_125m_clk", | 155 | static 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 | ||
160 | static const char *enet2_time_sel[] = { "osc", "pll_enet_100m_clk", | 160 | static 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 | ||
164 | static const char *enet_phy_ref_sel[] = { "osc", "pll_enet_25m_clk", | 164 | static 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 | ||
169 | static const char *eim_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 169 | static 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", | |||
174 | static const char *nand_sel[] = { "osc", "pll_sys_main_clk", | 174 | static 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 | ||
179 | static const char *qspi_sel[] = { "osc", "pll_sys_pfd4_clk", | 179 | static 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 | ||
205 | static const char *i2c1_sel[] = { "osc", "pll_sys_main_120m_clk", | 205 | static 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 | ||
210 | static const char *i2c2_sel[] = { "osc", "pll_sys_main_120m_clk", | 210 | static 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 | ||
215 | static const char *i2c3_sel[] = { "osc", "pll_sys_main_120m_clk", | 215 | static 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 | ||
220 | static const char *i2c4_sel[] = { "osc", "pll_sys_main_120m_clk", | 220 | static 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 | ||
225 | static const char *uart1_sel[] = { "osc", "pll_sys_main_240m_clk", | 225 | static 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 | ||
280 | static const char *pwm1_sel[] = { "osc", "pll_enet_100m_clk", | 280 | static 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 | ||
284 | static const char *pwm2_sel[] = { "osc", "pll_enet_100m_clk", | 284 | static 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 | ||
288 | static const char *pwm3_sel[] = { "osc", "pll_enet_100m_clk", | 288 | static 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 | ||
292 | static const char *pwm4_sel[] = { "osc", "pll_enet_100m_clk", | 292 | static 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 | ||
296 | static const char *flextimer1_sel[] = { "osc", "pll_enet_100m_clk", | 296 | static 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 | ||
300 | static const char *flextimer2_sel[] = { "osc", "pll_enet_100m_clk", | 300 | static 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 | ||
304 | static const char *sim1_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 304 | static 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 | ||
309 | static const char *sim2_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 309 | static 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 | ||
314 | static const char *gpt1_sel[] = { "osc", "pll_enet_100m_clk", | 314 | static 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 | ||
318 | static const char *gpt2_sel[] = { "osc", "pll_enet_100m_clk", | 318 | static 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 | ||
322 | static const char *gpt3_sel[] = { "osc", "pll_enet_100m_clk", | 322 | static 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 | ||
326 | static const char *gpt4_sel[] = { "osc", "pll_enet_100m_clk", | 326 | static 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 | ||
330 | static const char *trace_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 330 | static 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 | ||
340 | static const char *csi_mclk_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 340 | static 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 | ||
345 | static const char *audio_mclk_sel[] = { "osc", "pll_sys_pfd2_135m_clk", | 345 | static 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 | ||
350 | static const char *wrclk_sel[] = { "osc", "pll_enet_40m_clk", | 350 | static 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 | ||
359 | static const char *clko2_sel[] = { "osc", "pll_sys_main_240m_clk", | 359 | static 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 | ||
363 | static const char *lvds1_sel[] = { "pll_arm_main_clk", | 363 | static 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); |