diff options
author | Nicolin Chen <b42378@freescale.com> | 2013-08-22 03:11:47 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:01:25 -0400 |
commit | 52cac1e1b89c72ffa051b71a174636883e5a432a (patch) | |
tree | 783bb19a84f0b262ad0548fb5f790a4ec2fc5d99 | |
parent | 55f67e77b7aa57e4c95393ab774a91d79fba4ae8 (diff) |
ENGR00276249-2 ARM: imx6q: Add pll4_audio_div to clock tree
There's a pll4_audio_div clock, an extra divider for pll4, missing
in current clock tree, thus add it.
Signed-off-by: Nicolin Chen <b42378@freescale.com>
-rw-r--r-- | Documentation/devicetree/bindings/clock/imx6q-clock.txt | 1 | ||||
-rw-r--r-- | arch/arm/mach-imx/clk-imx6q.c | 10 |
2 files changed, 7 insertions, 4 deletions
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt index f51a2e77f9b3..dd8d8cfe4833 100644 --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt | |||
@@ -219,6 +219,7 @@ clocks and IDs. | |||
219 | ldb_di1_div_7 206 | 219 | ldb_di1_div_7 206 |
220 | ldb_di0_div_sel 207 | 220 | ldb_di0_div_sel 207 |
221 | ldb_di1_div_sel 208 | 221 | ldb_di1_div_sel 208 |
222 | pll4_audio_div 209 | ||
222 | 223 | ||
223 | Examples: | 224 | Examples: |
224 | 225 | ||
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 7960b2a3832a..f39e7706c5c5 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -32,7 +32,7 @@ static const char *periph2_clk2_sels[] = { "pll3_usb_otg", "pll2_bus", }; | |||
32 | static const char *periph_sels[] = { "periph_pre", "periph_clk2", }; | 32 | static const char *periph_sels[] = { "periph_pre", "periph_clk2", }; |
33 | static const char *periph2_sels[] = { "periph2_pre", "periph2_clk2", }; | 33 | static const char *periph2_sels[] = { "periph2_pre", "periph2_clk2", }; |
34 | static const char *axi_sels[] = { "periph", "pll2_pfd2_396m", "periph", "pll3_pfd1_540m", }; | 34 | static const char *axi_sels[] = { "periph", "pll2_pfd2_396m", "periph", "pll3_pfd1_540m", }; |
35 | static const char *audio_sels[] = { "pll4_post_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", }; | 35 | static const char *audio_sels[] = { "pll4_audio_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", }; |
36 | static const char *gpu_axi_sels[] = { "axi", "ahb", }; | 36 | static const char *gpu_axi_sels[] = { "axi", "ahb", }; |
37 | static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", }; | 37 | static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", }; |
38 | static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", }; | 38 | static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", }; |
@@ -48,7 +48,7 @@ static const char *ipu2_di0_sels[] = { "ipu2_di0_pre", "dummy", "dummy", "ldb_di | |||
48 | static const char *ipu2_di1_sels[] = { "ipu2_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; | 48 | static const char *ipu2_di1_sels[] = { "ipu2_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; |
49 | static const char *hsi_tx_sels[] = { "pll3_120m", "pll2_pfd2_396m", }; | 49 | static const char *hsi_tx_sels[] = { "pll3_120m", "pll2_pfd2_396m", }; |
50 | static const char *pcie_axi_sels[] = { "axi", "ahb", }; | 50 | static const char *pcie_axi_sels[] = { "axi", "ahb", }; |
51 | static const char *ssi_sels[] = { "pll3_pfd2_508m", "pll3_pfd3_454m", "pll4_post_div", }; | 51 | static const char *ssi_sels[] = { "pll3_pfd2_508m", "pll3_pfd3_454m", "pll4_audio_div", }; |
52 | static const char *usdhc_sels[] = { "pll2_pfd2_396m", "pll2_pfd0_352m", }; | 52 | static const char *usdhc_sels[] = { "pll2_pfd2_396m", "pll2_pfd0_352m", }; |
53 | static const char *enfc_sels[] = { "pll2_pfd0_352m", "pll2_bus", "pll3_usb_otg", "pll2_pfd2_396m", }; | 53 | static const char *enfc_sels[] = { "pll2_pfd0_352m", "pll2_bus", "pll3_usb_otg", "pll2_pfd2_396m", }; |
54 | static const char *emi_sels[] = { "pll2_pfd2_396m", "pll3_usb_otg", "axi", "pll2_pfd0_352m", }; | 54 | static const char *emi_sels[] = { "pll2_pfd2_396m", "pll3_usb_otg", "axi", "pll2_pfd0_352m", }; |
@@ -57,7 +57,7 @@ static const char *vdo_axi_sels[] = { "axi", "ahb", }; | |||
57 | static const char *vpu_axi_sels[] = { "axi", "pll2_pfd2_396m", "pll2_pfd0_352m", }; | 57 | static const char *vpu_axi_sels[] = { "axi", "pll2_pfd2_396m", "pll2_pfd0_352m", }; |
58 | static const char *cko1_sels[] = { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div", | 58 | static const char *cko1_sels[] = { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div", |
59 | "dummy", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0", | 59 | "dummy", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0", |
60 | "ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_post_div", }; | 60 | "ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_aduio_div", }; |
61 | static const char *cko2_sels[] = { | 61 | static const char *cko2_sels[] = { |
62 | "mmdc_ch0_axi", "mmdc_ch1_axi", "usdhc4", "usdhc1", | 62 | "mmdc_ch0_axi", "mmdc_ch1_axi", "usdhc4", "usdhc1", |
63 | "gpu2d_axi", "dummy", "ecspi_root", "gpu3d_axi", | 63 | "gpu2d_axi", "dummy", "ecspi_root", "gpu3d_axi", |
@@ -104,7 +104,8 @@ enum mx6q_clks { | |||
104 | sata_ref, sata_ref_100m, pcie_ref, pcie_ref_125m, enet_ref, usbphy1_gate, | 104 | sata_ref, sata_ref_100m, pcie_ref, pcie_ref_125m, enet_ref, usbphy1_gate, |
105 | usbphy2_gate, pll4_post_div, pll5_post_div, pll5_video_div, eim_slow, | 105 | usbphy2_gate, pll4_post_div, pll5_post_div, pll5_video_div, eim_slow, |
106 | spdif, cko2_sel, cko2_podf, cko2, cko, vdoa, gpt_3m, video_27m, | 106 | spdif, cko2_sel, cko2_podf, cko2, cko, vdoa, gpt_3m, video_27m, |
107 | ldb_di0_div_7, ldb_di1_div_7, ldb_di0_div_sel, ldb_di1_div_sel, clk_max | 107 | ldb_di0_div_7, ldb_di1_div_7, ldb_di0_div_sel, ldb_di1_div_sel, |
108 | pll4_audio_div, clk_max | ||
108 | }; | 109 | }; |
109 | 110 | ||
110 | static struct clk *clk[clk_max]; | 111 | static struct clk *clk[clk_max]; |
@@ -214,6 +215,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) | |||
214 | clk[video_27m] = imx_clk_fixed_factor("video_27m", "pll3_pfd1_540m", 1, 20); | 215 | clk[video_27m] = imx_clk_fixed_factor("video_27m", "pll3_pfd1_540m", 1, 20); |
215 | 216 | ||
216 | clk[pll4_post_div] = clk_register_divider_table(NULL, "pll4_post_div", "pll4_audio", CLK_SET_RATE_PARENT, base + 0x70, 19, 2, 0, post_div_table, &imx_ccm_lock); | 217 | clk[pll4_post_div] = clk_register_divider_table(NULL, "pll4_post_div", "pll4_audio", CLK_SET_RATE_PARENT, base + 0x70, 19, 2, 0, post_div_table, &imx_ccm_lock); |
218 | clk[pll4_audio_div] = clk_register_divider(NULL, "pll4_audio_div", "pll4_post_div", CLK_SET_RATE_PARENT, base + 0x170, 15, 1, 0, &imx_ccm_lock); | ||
217 | clk[pll5_post_div] = clk_register_divider_table(NULL, "pll5_post_div", "pll5_video", CLK_SET_RATE_PARENT, base + 0xa0, 19, 2, 0, post_div_table, &imx_ccm_lock); | 219 | clk[pll5_post_div] = clk_register_divider_table(NULL, "pll5_post_div", "pll5_video", CLK_SET_RATE_PARENT, base + 0xa0, 19, 2, 0, post_div_table, &imx_ccm_lock); |
218 | clk[pll5_video_div] = clk_register_divider_table(NULL, "pll5_video_div", "pll5_post_div", CLK_SET_RATE_PARENT, base + 0x170, 30, 2, 0, video_div_table, &imx_ccm_lock); | 220 | clk[pll5_video_div] = clk_register_divider_table(NULL, "pll5_video_div", "pll5_post_div", CLK_SET_RATE_PARENT, base + 0x170, 30, 2, 0, video_div_table, &imx_ccm_lock); |
219 | 221 | ||