diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-04-11 15:22:04 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-04-16 09:58:02 +0200 |
commit | 92fd61d12723418dfbc8f428c051cd269b3f6fd5 (patch) | |
tree | cd2903718409b5f2ca03dc80d4d18a80fb3942ac /drivers/clk | |
parent | d4c05d29d48413149cd4eb0e839df627c3e4d1ce (diff) | |
download | barebox-92fd61d12723418dfbc8f428c051cd269b3f6fd5.tar.gz barebox-92fd61d12723418dfbc8f428c051cd269b3f6fd5.tar.xz |
clk: i.MX6: Fix enfc_sel for i.MX6dqp
The plus SoC variants have some differences in the clock controller.
For now fix the NAND controller clock. There are more differences
that might be relevant, but for now are left for a future excercise.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/clk')
-rw-r--r-- | drivers/clk/imx/clk-imx6.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/clk/imx/clk-imx6.c b/drivers/clk/imx/clk-imx6.c index c48ab7f76a..8c3bb46a48 100644 --- a/drivers/clk/imx/clk-imx6.c +++ b/drivers/clk/imx/clk-imx6.c @@ -59,6 +59,11 @@ static struct clk *clks[IMX6QDL_CLK_END]; static struct clk_onecell_data clk_data; +static inline int cpu_is_plus(void) +{ + return cpu_is_mx6qp() || cpu_is_mx6dp(); +} + static const char *step_sels[] = { "osc", "pll2_pfd2_396m", @@ -109,6 +114,15 @@ static const char *enfc_sels[] = { "pll2_pfd2_396m", }; +static const char *enfc_sels_plus[] = { + "pll2_pfd0_352m", + "pll2_bus", + "pll3_usb_otg", + "pll2_pfd2_396m", + "pll3_pfd3_454m", + "dummy", +}; + static const char *eim_sels[] = { "axi", "pll3_usb_otg", @@ -404,7 +418,10 @@ static int imx6_ccm_probe(struct device_d *dev) clks[IMX6QDL_CLK_USDHC2_SEL] = imx_clk_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels)); clks[IMX6QDL_CLK_USDHC3_SEL] = imx_clk_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels)); clks[IMX6QDL_CLK_USDHC4_SEL] = imx_clk_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels)); - clks[IMX6QDL_CLK_ENFC_SEL] = imx_clk_mux("enfc_sel", base + 0x2c, 16, 2, enfc_sels, ARRAY_SIZE(enfc_sels)); + if (cpu_is_plus()) + clks[IMX6QDL_CLK_ENFC_SEL] = imx_clk_mux("enfc_sel", base + 0x2c, 16, 2, enfc_sels_plus, ARRAY_SIZE(enfc_sels_plus)); + else + clks[IMX6QDL_CLK_ENFC_SEL] = imx_clk_mux("enfc_sel", base + 0x2c, 16, 2, enfc_sels, ARRAY_SIZE(enfc_sels)); clks[IMX6QDL_CLK_EIM_SEL] = imx_clk_mux("eim_sel", base + 0x1c, 27, 2, eim_sels, ARRAY_SIZE(eim_sels)); clks[IMX6QDL_CLK_EIM_SLOW_SEL] = imx_clk_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_sels, ARRAY_SIZE(eim_sels)); clks[IMX6QDL_CLK_VDO_AXI_SEL] = imx_clk_mux("vdo_axi_sel", base + 0x18, 11, 1, vdo_axi_sels, ARRAY_SIZE(vdo_axi_sels)); |