* [PATCH 0/2] Add EIM support for i.MX6sl @ 2015-10-20 23:40 Peter S. Housel 2015-10-20 23:40 ` [PATCH 1/2] ARM: imx6sl: Add EIM clock to clock tree Peter S. Housel 2015-10-20 23:41 ` [PATCH 2/2] ARM: dts: imx: Add EIM configuration for i.MX6sl Peter S. Housel 0 siblings, 2 replies; 4+ messages in thread From: Peter S. Housel @ 2015-10-20 23:40 UTC (permalink / raw) To: linux-arm-kernel These patches add missing support for the EIM block on the i.MX6sl. With these changes, I am able to access CFI NOR flash attached to an i.MX6SoloLite. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] ARM: imx6sl: Add EIM clock to clock tree 2015-10-20 23:40 [PATCH 0/2] Add EIM support for i.MX6sl Peter S. Housel @ 2015-10-20 23:40 ` Peter S. Housel 2015-11-23 5:20 ` Shawn Guo 2015-10-20 23:41 ` [PATCH 2/2] ARM: dts: imx: Add EIM configuration for i.MX6sl Peter S. Housel 1 sibling, 1 reply; 4+ messages in thread From: Peter S. Housel @ 2015-10-20 23:40 UTC (permalink / raw) To: linux-arm-kernel Add missing clock tree entries for the clock that drives the External Interface Module (EIM) as implemented in the i.MX6sl. Signed-off-by: Peter S. Housel <housel@acm.org> --- drivers/clk/imx/clk-imx6sl.c | 6 +++++- include/dt-bindings/clock/imx6sl-clock.h | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/clk/imx/clk-imx6sl.c b/drivers/clk/imx/clk-imx6sl.c index 1be6230..497ade3 100644 --- a/drivers/clk/imx/clk-imx6sl.c +++ b/drivers/clk/imx/clk-imx6sl.c @@ -44,6 +44,7 @@ static const char *periph_sels[] = { "pre_periph_sel", "periph_clk2_podf", }; static const char *periph2_sels[] = { "pre_periph2_sel", "periph2_clk2_podf", }; static const char *csi_sels[] = { "osc", "pll2_pfd2", "pll3_120m", "pll3_pfd1", }; static const char *lcdif_axi_sels[] = { "pll2_bus", "pll2_pfd2", "pll3_usb_otg", "pll3_pfd1", }; +static const char *eim_slow_sels[] = { "ocram_podf", "pll3_usb_otg", "pll2_pfd2", "pll2_pfd0", }; static const char *usdhc_sels[] = { "pll2_pfd2", "pll2_pfd0", }; static const char *ssi_sels[] = { "pll3_pfd2", "pll3_pfd3", "pll4_audio_div", "dummy", }; static const char *perclk_sels[] = { "ipg", "osc", }; @@ -60,7 +61,7 @@ static const char *lvds_sels[] = { "pll1_sys", "pll2_bus", "pll2_pfd0", "pll2_pfd1", "pll2_pfd2", "dummy", "pll4_audio", "pll5_video", "dummy", "enet_ref", "dummy", "dummy", "pll3_usb_otg", "pll7_usb_host", "pll3_pfd0", "pll3_pfd1", "pll3_pfd2", "pll3_pfd3", "osc", "dummy", "dummy", "dummy", "dummy", "dummy", - "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", + "dummy", "dummy", "dummy", "eim_slow_podf", "dummy", "dummy", "dummy", "dummy", }; static const char *pll_bypass_src_sels[] = { "osc", "lvds1_in", }; static const char *pll1_bypass_sels[] = { "pll1", "pll1_bypass_src", }; @@ -305,6 +306,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node) clks[IMX6SL_CLK_PERIPH_CLK2_SEL] = imx_clk_mux("periph_clk2_sel", base + 0x18, 12, 2, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels)); clks[IMX6SL_CLK_CSI_SEL] = imx_clk_mux("csi_sel", base + 0x3c, 9, 2, csi_sels, ARRAY_SIZE(csi_sels)); clks[IMX6SL_CLK_LCDIF_AXI_SEL] = imx_clk_mux("lcdif_axi_sel", base + 0x3c, 14, 2, lcdif_axi_sels, ARRAY_SIZE(lcdif_axi_sels)); + clks[IMX6SL_CLK_EIM_SLOW_SEL] = imx_clk_fixup_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels, ARRAY_SIZE(eim_slow_sels), imx_cscmr1_fixup); clks[IMX6SL_CLK_USDHC1_SEL] = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); clks[IMX6SL_CLK_USDHC2_SEL] = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); clks[IMX6SL_CLK_USDHC3_SEL] = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); @@ -353,6 +355,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node) clks[IMX6SL_CLK_GPU2D_PODF] = imx_clk_divider("gpu2d_podf", "gpu2d_sel", base + 0x18, 29, 3); clks[IMX6SL_CLK_LCDIF_PIX_PRED] = imx_clk_divider("lcdif_pix_pred", "lcdif_pix_sel", base + 0x38, 3, 3); clks[IMX6SL_CLK_EPDC_PIX_PRED] = imx_clk_divider("epdc_pix_pred", "epdc_pix_sel", base + 0x38, 12, 3); + clks[IMX6SL_CLK_EIM_SLOW_PODF] = imx_clk_fixup_divider("eim_slow_podf", "eim_slow_sel", base + 0x1c, 23, 3, imx_cscmr1_fixup); clks[IMX6SL_CLK_LCDIF_PIX_PODF] = imx_clk_fixup_divider("lcdif_pix_podf", "lcdif_pix_pred", base + 0x1c, 20, 3, imx_cscmr1_fixup); clks[IMX6SL_CLK_EPDC_PIX_PODF] = imx_clk_divider("epdc_pix_podf", "epdc_pix_pred", base + 0x18, 23, 3); clks[IMX6SL_CLK_SPDIF0_PRED] = imx_clk_divider("spdif0_pred", "spdif0_sel", base + 0x30, 25, 3); @@ -413,6 +416,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node) clks[IMX6SL_CLK_USDHC2] = imx_clk_gate2("usdhc2", "usdhc2_podf", base + 0x80, 4); clks[IMX6SL_CLK_USDHC3] = imx_clk_gate2("usdhc3", "usdhc3_podf", base + 0x80, 6); clks[IMX6SL_CLK_USDHC4] = imx_clk_gate2("usdhc4", "usdhc4_podf", base + 0x80, 8); + clks[IMX6SL_CLK_EIM_SLOW] = imx_clk_gate2("eim_slow", "eim_slow_podf", base + 0x80, 10); imx_check_clocks(clks, ARRAY_SIZE(clks)); diff --git a/include/dt-bindings/clock/imx6sl-clock.h b/include/dt-bindings/clock/imx6sl-clock.h index e14573e..cf51a90 100644 --- a/include/dt-bindings/clock/imx6sl-clock.h +++ b/include/dt-bindings/clock/imx6sl-clock.h @@ -175,6 +175,9 @@ #define IMX6SL_CLK_SSI2_IPG 162 #define IMX6SL_CLK_SSI3_IPG 163 #define IMX6SL_CLK_SPDIF_GCLK 164 -#define IMX6SL_CLK_END 165 +#define IMX6SL_CLK_EIM_SLOW_SEL 165 +#define IMX6SL_CLK_EIM_SLOW_PODF 166 +#define IMX6SL_CLK_EIM_SLOW 167 +#define IMX6SL_CLK_END 168 #endif /* __DT_BINDINGS_CLOCK_IMX6SL_H */ -- 2.6.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 1/2] ARM: imx6sl: Add EIM clock to clock tree 2015-10-20 23:40 ` [PATCH 1/2] ARM: imx6sl: Add EIM clock to clock tree Peter S. Housel @ 2015-11-23 5:20 ` Shawn Guo 0 siblings, 0 replies; 4+ messages in thread From: Shawn Guo @ 2015-11-23 5:20 UTC (permalink / raw) To: linux-arm-kernel On Tue, Oct 20, 2015 at 04:40:59PM -0700, Peter S. Housel wrote: > Add missing clock tree entries for the clock that drives the External > Interface Module (EIM) as implemented in the i.MX6sl. > > Signed-off-by: Peter S. Housel <housel@acm.org> > --- > drivers/clk/imx/clk-imx6sl.c | 6 +++++- For clock patches, you need to copy the following maintainers and list. COMMON CLK FRAMEWORK M: Michael Turquette <mturquette@baylibre.com> M: Stephen Boyd <sboyd@codeaurora.org> L: linux-clk at vger.kernel.org Please resend. Shawn > include/dt-bindings/clock/imx6sl-clock.h | 5 ++++- > 2 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/imx/clk-imx6sl.c b/drivers/clk/imx/clk-imx6sl.c > index 1be6230..497ade3 100644 > --- a/drivers/clk/imx/clk-imx6sl.c > +++ b/drivers/clk/imx/clk-imx6sl.c > @@ -44,6 +44,7 @@ static const char *periph_sels[] = { "pre_periph_sel", "periph_clk2_podf", }; > static const char *periph2_sels[] = { "pre_periph2_sel", "periph2_clk2_podf", }; > static const char *csi_sels[] = { "osc", "pll2_pfd2", "pll3_120m", "pll3_pfd1", }; > static const char *lcdif_axi_sels[] = { "pll2_bus", "pll2_pfd2", "pll3_usb_otg", "pll3_pfd1", }; > +static const char *eim_slow_sels[] = { "ocram_podf", "pll3_usb_otg", "pll2_pfd2", "pll2_pfd0", }; > static const char *usdhc_sels[] = { "pll2_pfd2", "pll2_pfd0", }; > static const char *ssi_sels[] = { "pll3_pfd2", "pll3_pfd3", "pll4_audio_div", "dummy", }; > static const char *perclk_sels[] = { "ipg", "osc", }; > @@ -60,7 +61,7 @@ static const char *lvds_sels[] = { > "pll1_sys", "pll2_bus", "pll2_pfd0", "pll2_pfd1", "pll2_pfd2", "dummy", "pll4_audio", "pll5_video", > "dummy", "enet_ref", "dummy", "dummy", "pll3_usb_otg", "pll7_usb_host", "pll3_pfd0", "pll3_pfd1", > "pll3_pfd2", "pll3_pfd3", "osc", "dummy", "dummy", "dummy", "dummy", "dummy", > - "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", > + "dummy", "dummy", "dummy", "eim_slow_podf", "dummy", "dummy", "dummy", "dummy", > }; > static const char *pll_bypass_src_sels[] = { "osc", "lvds1_in", }; > static const char *pll1_bypass_sels[] = { "pll1", "pll1_bypass_src", }; > @@ -305,6 +306,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node) > clks[IMX6SL_CLK_PERIPH_CLK2_SEL] = imx_clk_mux("periph_clk2_sel", base + 0x18, 12, 2, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels)); > clks[IMX6SL_CLK_CSI_SEL] = imx_clk_mux("csi_sel", base + 0x3c, 9, 2, csi_sels, ARRAY_SIZE(csi_sels)); > clks[IMX6SL_CLK_LCDIF_AXI_SEL] = imx_clk_mux("lcdif_axi_sel", base + 0x3c, 14, 2, lcdif_axi_sels, ARRAY_SIZE(lcdif_axi_sels)); > + clks[IMX6SL_CLK_EIM_SLOW_SEL] = imx_clk_fixup_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_slow_sels, ARRAY_SIZE(eim_slow_sels), imx_cscmr1_fixup); > clks[IMX6SL_CLK_USDHC1_SEL] = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); > clks[IMX6SL_CLK_USDHC2_SEL] = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); > clks[IMX6SL_CLK_USDHC3_SEL] = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); > @@ -353,6 +355,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node) > clks[IMX6SL_CLK_GPU2D_PODF] = imx_clk_divider("gpu2d_podf", "gpu2d_sel", base + 0x18, 29, 3); > clks[IMX6SL_CLK_LCDIF_PIX_PRED] = imx_clk_divider("lcdif_pix_pred", "lcdif_pix_sel", base + 0x38, 3, 3); > clks[IMX6SL_CLK_EPDC_PIX_PRED] = imx_clk_divider("epdc_pix_pred", "epdc_pix_sel", base + 0x38, 12, 3); > + clks[IMX6SL_CLK_EIM_SLOW_PODF] = imx_clk_fixup_divider("eim_slow_podf", "eim_slow_sel", base + 0x1c, 23, 3, imx_cscmr1_fixup); > clks[IMX6SL_CLK_LCDIF_PIX_PODF] = imx_clk_fixup_divider("lcdif_pix_podf", "lcdif_pix_pred", base + 0x1c, 20, 3, imx_cscmr1_fixup); > clks[IMX6SL_CLK_EPDC_PIX_PODF] = imx_clk_divider("epdc_pix_podf", "epdc_pix_pred", base + 0x18, 23, 3); > clks[IMX6SL_CLK_SPDIF0_PRED] = imx_clk_divider("spdif0_pred", "spdif0_sel", base + 0x30, 25, 3); > @@ -413,6 +416,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node) > clks[IMX6SL_CLK_USDHC2] = imx_clk_gate2("usdhc2", "usdhc2_podf", base + 0x80, 4); > clks[IMX6SL_CLK_USDHC3] = imx_clk_gate2("usdhc3", "usdhc3_podf", base + 0x80, 6); > clks[IMX6SL_CLK_USDHC4] = imx_clk_gate2("usdhc4", "usdhc4_podf", base + 0x80, 8); > + clks[IMX6SL_CLK_EIM_SLOW] = imx_clk_gate2("eim_slow", "eim_slow_podf", base + 0x80, 10); > > imx_check_clocks(clks, ARRAY_SIZE(clks)); > > diff --git a/include/dt-bindings/clock/imx6sl-clock.h b/include/dt-bindings/clock/imx6sl-clock.h > index e14573e..cf51a90 100644 > --- a/include/dt-bindings/clock/imx6sl-clock.h > +++ b/include/dt-bindings/clock/imx6sl-clock.h > @@ -175,6 +175,9 @@ > #define IMX6SL_CLK_SSI2_IPG 162 > #define IMX6SL_CLK_SSI3_IPG 163 > #define IMX6SL_CLK_SPDIF_GCLK 164 > -#define IMX6SL_CLK_END 165 > +#define IMX6SL_CLK_EIM_SLOW_SEL 165 > +#define IMX6SL_CLK_EIM_SLOW_PODF 166 > +#define IMX6SL_CLK_EIM_SLOW 167 > +#define IMX6SL_CLK_END 168 > > #endif /* __DT_BINDINGS_CLOCK_IMX6SL_H */ > -- > 2.6.0 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] ARM: dts: imx: Add EIM configuration for i.MX6sl 2015-10-20 23:40 [PATCH 0/2] Add EIM support for i.MX6sl Peter S. Housel 2015-10-20 23:40 ` [PATCH 1/2] ARM: imx6sl: Add EIM clock to clock tree Peter S. Housel @ 2015-10-20 23:41 ` Peter S. Housel 1 sibling, 0 replies; 4+ messages in thread From: Peter S. Housel @ 2015-10-20 23:41 UTC (permalink / raw) To: linux-arm-kernel Add support for the WEIM on the i.MX6sl. Signed-off-by: Peter S. Housel <housel@acm.org> --- arch/arm/boot/dts/imx6sl.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi index d8ba99f..bc206ae 100644 --- a/arch/arm/boot/dts/imx6sl.dtsi +++ b/arch/arm/boot/dts/imx6sl.dtsi @@ -837,8 +837,10 @@ }; weim: weim at 021b8000 { + compatible = "fsl,imx6sl-weim", "fsl,imx6q-weim"; reg = <0x021b8000 0x4000>; interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_EIM_SLOW>; }; ocotp: ocotp at 021bc000 { -- 2.6.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-11-23 5:20 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-10-20 23:40 [PATCH 0/2] Add EIM support for i.MX6sl Peter S. Housel 2015-10-20 23:40 ` [PATCH 1/2] ARM: imx6sl: Add EIM clock to clock tree Peter S. Housel 2015-11-23 5:20 ` Shawn Guo 2015-10-20 23:41 ` [PATCH 2/2] ARM: dts: imx: Add EIM configuration for i.MX6sl Peter S. Housel
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.