All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 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

* [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

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.