diff options
author | Sandor Yu <R01008@freescale.com> | 2013-08-02 00:24:41 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:00:56 -0400 |
commit | 686f8a205419109ab0d38d1eb1d6af57442ba36e (patch) | |
tree | 5c6876092c18d460c04fdd7acdadf9f90b1f6e6c | |
parent | 6ef9546e4efb24637bf177238556e4f39a1143e5 (diff) |
ENGR00273848-01 iMX6Q clock: Add imx_clk_mux2 function
Add new imx_clk_mux2 function with flag
CLK_SET_RATE_PARENT for IPU DI clock.
Signed-off-by: Sandor Yu <R01008@freescale.com>
-rw-r--r-- | arch/arm/mach-imx/clk-imx6q.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-imx/clk.h | 7 |
2 files changed, 15 insertions, 8 deletions
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 90067c208b61..da814c13478f 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -388,14 +388,14 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) | |||
388 | clk[ipu2_sel] = imx_clk_mux("ipu2_sel", base + 0x3c, 14, 2, ipu_sels, ARRAY_SIZE(ipu_sels)); | 388 | clk[ipu2_sel] = imx_clk_mux("ipu2_sel", base + 0x3c, 14, 2, ipu_sels, ARRAY_SIZE(ipu_sels)); |
389 | clk[ldb_di0_sel] = imx_clk_mux_flags("ldb_di0_sel", base + 0x2c, 9, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); | 389 | clk[ldb_di0_sel] = imx_clk_mux_flags("ldb_di0_sel", base + 0x2c, 9, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); |
390 | clk[ldb_di1_sel] = imx_clk_mux_flags("ldb_di1_sel", base + 0x2c, 12, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); | 390 | clk[ldb_di1_sel] = imx_clk_mux_flags("ldb_di1_sel", base + 0x2c, 12, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); |
391 | clk[ipu1_di0_pre_sel] = imx_clk_mux("ipu1_di0_pre_sel", base + 0x34, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); | 391 | clk[ipu1_di0_pre_sel] = imx_clk_mux2("ipu1_di0_pre_sel", base + 0x34, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); |
392 | clk[ipu1_di1_pre_sel] = imx_clk_mux("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); | 392 | clk[ipu1_di1_pre_sel] = imx_clk_mux2("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); |
393 | clk[ipu2_di0_pre_sel] = imx_clk_mux("ipu2_di0_pre_sel", base + 0x38, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); | 393 | clk[ipu2_di0_pre_sel] = imx_clk_mux2("ipu2_di0_pre_sel", base + 0x38, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); |
394 | clk[ipu2_di1_pre_sel] = imx_clk_mux("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); | 394 | clk[ipu2_di1_pre_sel] = imx_clk_mux2("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); |
395 | clk[ipu1_di0_sel] = imx_clk_mux("ipu1_di0_sel", base + 0x34, 0, 3, ipu1_di0_sels, ARRAY_SIZE(ipu1_di0_sels)); | 395 | clk[ipu1_di0_sel] = imx_clk_mux2("ipu1_di0_sel", base + 0x34, 0, 3, ipu1_di0_sels, ARRAY_SIZE(ipu1_di0_sels)); |
396 | clk[ipu1_di1_sel] = imx_clk_mux("ipu1_di1_sel", base + 0x34, 9, 3, ipu1_di1_sels, ARRAY_SIZE(ipu1_di1_sels)); | 396 | clk[ipu1_di1_sel] = imx_clk_mux2("ipu1_di1_sel", base + 0x34, 9, 3, ipu1_di1_sels, ARRAY_SIZE(ipu1_di1_sels)); |
397 | clk[ipu2_di0_sel] = imx_clk_mux("ipu2_di0_sel", base + 0x38, 0, 3, ipu2_di0_sels, ARRAY_SIZE(ipu2_di0_sels)); | 397 | clk[ipu2_di0_sel] = imx_clk_mux2("ipu2_di0_sel", base + 0x38, 0, 3, ipu2_di0_sels, ARRAY_SIZE(ipu2_di0_sels)); |
398 | clk[ipu2_di1_sel] = imx_clk_mux("ipu2_di1_sel", base + 0x38, 9, 3, ipu2_di1_sels, ARRAY_SIZE(ipu2_di1_sels)); | 398 | clk[ipu2_di1_sel] = imx_clk_mux2("ipu2_di1_sel", base + 0x38, 9, 3, ipu2_di1_sels, ARRAY_SIZE(ipu2_di1_sels)); |
399 | clk[hsi_tx_sel] = imx_clk_mux("hsi_tx_sel", base + 0x30, 28, 1, hsi_tx_sels, ARRAY_SIZE(hsi_tx_sels)); | 399 | clk[hsi_tx_sel] = imx_clk_mux("hsi_tx_sel", base + 0x30, 28, 1, hsi_tx_sels, ARRAY_SIZE(hsi_tx_sels)); |
400 | clk[pcie_axi_sel] = imx_clk_mux("pcie_axi_sel", base + 0x18, 10, 1, pcie_axi_sels, ARRAY_SIZE(pcie_axi_sels)); | 400 | clk[pcie_axi_sel] = imx_clk_mux("pcie_axi_sel", base + 0x18, 10, 1, pcie_axi_sels, ARRAY_SIZE(pcie_axi_sels)); |
401 | clk[ssi1_sel] = imx_clk_fixup_mux("ssi1_sel", base + 0x1c, 10, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup); | 401 | clk[ssi1_sel] = imx_clk_fixup_mux("ssi1_sel", base + 0x1c, 10, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup); |
diff --git a/arch/arm/mach-imx/clk.h b/arch/arm/mach-imx/clk.h index 90c5806a4cc3..d36fcd638dca 100644 --- a/arch/arm/mach-imx/clk.h +++ b/arch/arm/mach-imx/clk.h | |||
@@ -94,6 +94,13 @@ static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg, | |||
94 | width, 0, &imx_ccm_lock); | 94 | width, 0, &imx_ccm_lock); |
95 | } | 95 | } |
96 | 96 | ||
97 | static inline struct clk *imx_clk_mux2(const char *name, void __iomem *reg, | ||
98 | u8 shift, u8 width, const char **parents, int num_parents) | ||
99 | { | ||
100 | return clk_register_mux(NULL, name, parents, num_parents, CLK_SET_RATE_PARENT, | ||
101 | reg, shift, width, 0, &imx_ccm_lock); | ||
102 | } | ||
103 | |||
97 | static inline struct clk *imx_clk_mux_flags(const char *name, | 104 | static inline struct clk *imx_clk_mux_flags(const char *name, |
98 | void __iomem *reg, u8 shift, u8 width, const char **parents, | 105 | void __iomem *reg, u8 shift, u8 width, const char **parents, |
99 | int num_parents, unsigned long flags) | 106 | int num_parents, unsigned long flags) |