Skip to contentSkip to conversation

imx: add latest Boundary Devices boards support

PATCH Superseded Gary Bisson 3 participants 47 messages Mar 15, 2016 – Apr 12, 2016

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

cover imx: add latest Boundary Devices boards support

Hi all,

This series adds support for the following Boundary Devices boards:
- Nitrogen7 (i.MX7)
- Nitrogen6SX (i.MX6SoloX)
- Nitrogen6QP_MAX (i.MX6QP)

The first patches add display and CAN support to i.MX7 device tree. Those two features have been successfully tested on the Nitrogen7. Also the support of CKIL clock has been added in order to use it as slow clock for the WiFi module.

Then the last 3 patches add some missing configurations in order to fully support Boundary platforms using imx_v6_v7_defconfig.

All the patches have been applied/tested on top of Shawn's 'for-next' branch.

Here are some remarks/questions that came during testing:
- Is the pxp v4l2 driver being worked on for mainline inclusion?
- Are the ldb modifications for SoloX being worked on for mainline inclusion?
- Is the WM8960 ASoC machine driver being worked on for mainline inclusion?
- When booting the Nitrogen7, there's backtrace due to clk_pllv3_prepare, does it happen on the sdb too? Note that it doesn't prevent the board to work.

Regards,
Gary

Gary Bisson (9):
ARM: dts: imx7d: add lcdif support
ARM: dts: imx7d: add flexcan support
clk: imx: add ckil clock for i.MX7
ARM: dts: imx: add Boundary Devices Nitrogen7 board
ARM: dts: imx: add Boundary Devices Nitrogen6_MAX QP board
ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board
ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support
ARM: imx_v6_v7_defconfig: add CONFIG_I2C_MUX_GPIO
ARM: imx_v6_v7_defconfig: add CONFIG_RTC_DRV_M41T80

 arch/arm/boot/dts/Makefile                 |   3 +
 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts |  55 ++
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts   | 745 ++++++++++++++++++++++++++
 arch/arm/boot/dts/imx7d-nitrogen7.dts      | 818 +++++++++++++++++++++++++++++
 arch/arm/boot/dts/imx7d.dtsi               |  33 ++
 arch/arm/configs/imx_v6_v7_defconfig       |   4 +
 drivers/clk/imx/clk-imx7d.c                |   3 +-
 include/dt-bindings/clock/imx7d-clock.h    |   3 +-
 8 files changed, 1662 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
Signature · 1 line
2.7.0
#1 lore raw

PATCH 1/9 ARM: dts: imx7d: add lcdif support

Add the device node for the i.MX7 eLCDIF interface.

---
 arch/arm/boot/dts/imx7d.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +11 -0
index b5a50e0..a768716 100644
@@ -608,6 +608,17 @@
 				status = "disabled";
 			};
 
+			lcdif: lcdif at 30730000 {
+				compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif";
+				reg = <0x30730000 0x10000>;
+				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
+					<&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CLK_DUMMY>;
+				clock-names = "pix", "axi", "disp_axi";
+				status = "disabled";
+			};
+
 			pwm1: pwm at 30660000 {
 				compatible = "fsl,imx7d-pwm", "fsl,imx27-pwm";
 				reg = <0x30660000 0x10000>;
Signature · 1 line
2.7.0
#2 lore raw

PATCH 2/9 ARM: dts: imx7d: add flexcan support

In reply to Gary Bisson

Add the device nodes for the i.MX7 FlexCAN buses.

---
 arch/arm/boot/dts/imx7d.dtsi | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +22 -0
index a768716..c5e47a4 100644
@@ -930,6 +930,28 @@
 				fsl,num-rx-queues=<3>;
 				status = "disabled";
 			};
+
+			flexcan1: can at 30a00000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a00000 0x10000>;
+				interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN1_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				stop-mode = <&gpr 0x10 1 0x10 17>;
+				status = "disabled";
+			};
+
+			flexcan2: can at 30a10000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a10000 0x10000>;
+				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN2_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				stop-mode = <&gpr 0x10 2 0x10 18>;
+				status = "disabled";
+			};
 		};
 	};
 };
Signature · 1 line
2.7.0
#3 lore raw

PATCH 3/9 clk: imx: add ckil clock for i.MX7

In reply to Gary Bisson

Add the necessary clock to use the ckil on i.MX7.

Inspired from the following patch:
https://github.com/boundarydevices/linux-imx6/commit/b80e8271

---
 drivers/clk/imx/clk-imx7d.c             | 3 ++-
 include/dt-bindings/clock/imx7d-clock.h | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
drivers/clk/imx/clk-imx7d.c +2 -1
index fbb6a8c..7912be8 100644
@@ -342,7 +342,7 @@ static const char *clko1_sel[] = { "osc", "pll_sys_main_clk",
 
 static const char *clko2_sel[] = { "osc", "pll_sys_main_240m_clk",
 	"pll_sys_pfd0_392m_clk", "pll_sys_pfd1_166m_clk", "pll_sys_pfd4_clk",
-	"pll_audio_main_clk", "pll_video_main_clk", "osc_32k_clk", };
+	"pll_audio_main_clk", "pll_video_main_clk", "ckil", };
 
 static const char *lvds1_sel[] = { "pll_arm_main_clk",
 	"pll_sys_main_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_332m_clk",
@@ -382,6 +382,7 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
 
 	clks[IMX7D_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
 	clks[IMX7D_OSC_24M_CLK] = of_clk_get_by_name(ccm_node, "osc");
+	clks[IMX7D_CKIL] = of_clk_get_by_name(ccm_node, "ckil");
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx7d-anatop");
 	base = of_iomap(np, 0);
include/dt-bindings/clock/imx7d-clock.h +2 -1
index edca8985c..1183347 100644
@@ -448,5 +448,6 @@
 #define IMX7D_PLL_DRAM_TEST_DIV		435
 #define IMX7D_ADC_ROOT_CLK		436
 #define IMX7D_CLK_ARM			437
-#define IMX7D_CLK_END			438
+#define IMX7D_CKIL			438
+#define IMX7D_CLK_END			439
 #endif /* __DT_BINDINGS_CLOCK_IMX7D_H */
Signature · 1 line
2.7.0
#4 lore raw

PATCH 4/9 ARM: dts: imx: add Boundary Devices Nitrogen7 board

In reply to Gary Bisson

Based on i.MX7 Dual with 1GB of RAM.

https://boundarydevices.com/product/nitrogen7/

---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts | 818 ++++++++++++++++++++++++++++++++++
 2 files changed, 819 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
arch/arm/boot/dts/Makefile +1 -0
index 2bfce0f..fd67d8d 100644
@@ -369,6 +369,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
 	imx6ul-14x14-evk.dtb
 dtb-$(CONFIG_SOC_IMX7D) += \
 	imx7d-cl-som-imx7.dtb \
+	imx7d-nitrogen7.dtb \
 	imx7d-sbc-imx7.dtb \
 	imx7d-sdb.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +818 -0

818 lines not on this page · raw message

Signature · 1 line
2.7.0
#5 lore raw

PATCH 5/9 ARM: dts: imx: add Boundary Devices Nitrogen6_MAX QP board

In reply to Gary Bisson

Based on i.MX6 Quad Plus with 4GB of RAM.

https://boundarydevices.com/product/nitrogen6max/

---
 arch/arm/boot/dts/Makefile                 |  1 +
 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts | 55 ++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts
arch/arm/boot/dts/Makefile +1 -0
index fd67d8d..279ec61 100644
@@ -356,6 +356,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-udoo.dtb \
 	imx6q-wandboard.dtb \
 	imx6q-wandboard-revb1.dtb \
+	imx6qp-nitrogen6_max.dtb \
 	imx6qp-sabreauto.dtb \
 	imx6qp-sabresd.dtb
 dtb-$(CONFIG_SOC_IMX6SL) += \
arch/arm/boot/dts/imx6qp-nitrogen6_max.dts new file +55 -0

55 lines not on this page · raw message

Signature · 1 line
2.7.0
#6 lore raw

PATCH 6/9 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

In reply to Gary Bisson

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 745 +++++++++++++++++++++++++++++++
 2 files changed, 746 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 279ec61..6a2bbc4 100644
@@ -363,6 +363,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
 	imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+	imx6sx-nitrogen6sx.dtb \
 	imx6sx-sabreauto.dtb \
 	imx6sx-sdb-reva.dtb \
 	imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +745 -0

745 lines not on this page · raw message

Signature · 1 line
2.7.0
#7 lore raw

PATCH 6/9 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

Quoted 29 lines · Gary Bisson

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 745 +++++++++++++++++++++++++++++++
 2 files changed, 746 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 279ec61..6a2bbc4 100644
@@ -363,6 +363,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
 	imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+	imx6sx-nitrogen6sx.dtb \
 	imx6sx-sabreauto.dtb \
 	imx6sx-sdb-reva.dtb \
 	imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +0 -0
new file mode 100644
index 0000000..8440890
@@ -0,0 +1,745 @@

[snip]

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 167

Quoted 13 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +13 -0
+
+//&clks {
+//	assigned-clocks = <&clks IMX6SX_PLL4_BYPASS_SRC>,
+//			  <&clks IMX6SX_PLL4_BYPASS>,
+//			  <&clks IMX6SX_CLK_CKO>,
+//			  <&clks IMX6SX_CLK_CKO1_SEL>,
+//			  <&clks IMX6SX_CLK_PLL4_POST_DIV>;
+//	assigned-clock-parents = <&clks IMX6SX_CLK_LVDS2_IN>,
+//				 <&clks IMX6SX_PLL4_BYPASS_SRC>,
+//				 <&clks IMX6SX_CLK_CKO1>,
+//				 <&clks IMX6SX_CLK_CKIL>;
+//	assigned-clock-rates = <0>, <0>, <0>, <0>, <24576000>;
+//};

What does // do above?

--
With best wishes,
Vladimir

#8 lore raw

PATCH 6/9 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

Vladimir, All,

Quoted 33 lines · Vladimir Zapolskiy
Quoted 29 lines · Gary Bisson

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 745 +++++++++++++++++++++++++++++++
 2 files changed, 746 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 279ec61..6a2bbc4 100644
@@ -363,6 +363,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
      imx6sl-evk.dtb \
      imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+     imx6sx-nitrogen6sx.dtb \
      imx6sx-sabreauto.dtb \
      imx6sx-sdb-reva.dtb \
      imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +0 -0
new file mode 100644
index 0000000..8440890
@@ -0,0 +1,745 @@

[snip]

Quoted 15 lines

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 167

Quoted 13 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +13 -0
+
+//&clks {
+//   assigned-clocks = <&clks IMX6SX_PLL4_BYPASS_SRC>,
+//                     <&clks IMX6SX_PLL4_BYPASS>,
+//                     <&clks IMX6SX_CLK_CKO>,
+//                     <&clks IMX6SX_CLK_CKO1_SEL>,
+//                     <&clks IMX6SX_CLK_PLL4_POST_DIV>;
+//   assigned-clock-parents = <&clks IMX6SX_CLK_LVDS2_IN>,
+//                            <&clks IMX6SX_PLL4_BYPASS_SRC>,
+//                            <&clks IMX6SX_CLK_CKO1>,
+//                            <&clks IMX6SX_CLK_CKIL>;
+//   assigned-clock-rates = <0>, <0>, <0>, <0>, <24576000>;
+//};

What does // do above?

Oops, sorry it is some left over of my debugging.

I also realized my 6qp device tree is missing the disabled pcie. I'll submit a v2 shortly.

Regards,
Gary

#9 lore raw

PATCH 7/9 ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support

In reply to Gary Bisson

Those two touch controllers are used by Boundary Devices platforms.

---
 arch/arm/configs/imx_v6_v7_defconfig | 2 ++
 1 file changed, 2 insertions(+)
arch/arm/configs/imx_v6_v7_defconfig +2 -0
index 978c5de..49dd816 100644
@@ -162,7 +162,9 @@ CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_EGALAX=y
 CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
 CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2004=y
 CONFIG_TOUCHSCREEN_TSC2007=y
 CONFIG_TOUCHSCREEN_STMPE=y
 CONFIG_TOUCHSCREEN_SX8654=y
Signature · 1 line
2.7.0
#10 lore raw

PATCH 8/9 ARM: imx_v6_v7_defconfig: add CONFIG_I2C_MUX_GPIO

In reply to Gary Bisson

I2C muxing is used on Nitrogen6_MAX board from Boundary Devices.

---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/imx_v6_v7_defconfig +1 -0
index 49dd816..1faafe3 100644
@@ -180,6 +180,7 @@ CONFIG_SERIAL_FSL_LPUART=y
 CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
 # CONFIG_I2C_COMPAT is not set
 CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX_GPIO=y
 # CONFIG_I2C_HELPER_AUTO is not set
 CONFIG_I2C_ALGOPCF=m
 CONFIG_I2C_ALGOPCA=m
Signature · 1 line
2.7.0
#11 lore raw

PATCH 9/9 ARM: imx_v6_v7_defconfig: add CONFIG_RTC_DRV_M41T80

In reply to Gary Bisson

The rv4168 RTC is used by the following platforms:
- Nitrogen6_MAX (both Quad and Quad Plus versions)
- Nitrogen7

---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/imx_v6_v7_defconfig +1 -0
index 1faafe3..af22ea4 100644
@@ -316,6 +316,7 @@ CONFIG_RTC_DRV_DS1307=y
 CONFIG_RTC_DRV_ISL1208=y
 CONFIG_RTC_DRV_PCF8523=y
 CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_M41T80=y
 CONFIG_RTC_DRV_MC13XXX=y
 CONFIG_RTC_DRV_MXC=y
 CONFIG_RTC_DRV_SNVS=y
Signature · 1 line
2.7.0
#12 lore raw

v2 cover imx: add latest Boundary Devices boards support

In reply to Gary Bisson

Hi all,

This series adds support for the following Boundary Devices boards:
- Nitrogen7 (i.MX7)
- Nitrogen6SX (i.MX6SoloX)
- Nitrogen6QP_MAX (i.MX6QP)

The first patches add display and CAN support to i.MX7 device tree. Those two features have been successfully tested on the Nitrogen7. Also the support of CKIL clock has been added in order to use it as slow clock for the WiFi module.

Then the last 3 patches add some missing configurations in order to fully support Boundary platforms using imx_v6_v7_defconfig.

All the patches have been applied/tested on top of Shawn's 'for-next' branch.

Here are some remarks/questions that came during testing:
- Is the pxp v4l2 driver being worked on for mainline inclusion?
- Are the ldb modifications for SoloX being worked on for mainline inclusion?
- Is the WM8960 ASoC machine driver being worked on for mainline inclusion?
- When booting the Nitrogen7, there's backtrace due to clk_pllv3_prepare, does it happen on the sdb too? Note that it doesn't prevent the board to work.

Changelog v1 -> v2:
- Remove lines commented out from nitrogen6sx dts as suggested by Vladimir
- Disable pcie for nitrogen6qp_max dts

Regards,
Gary

Gary Bisson (9):
ARM: dts: imx7d: add lcdif support
ARM: dts: imx7d: add flexcan support
clk: imx: add ckil clock for i.MX7
ARM: dts: imx: add Boundary Devices Nitrogen7 board
ARM: dts: imx: add Boundary Devices Nitrogen6_MAX QP board
ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board
ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support
ARM: imx_v6_v7_defconfig: add CONFIG_I2C_MUX_GPIO
ARM: imx_v6_v7_defconfig: add CONFIG_RTC_DRV_M41T80

 arch/arm/boot/dts/Makefile                 |   3 +
 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts |  59 +++
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts   | 732 ++++++++++++++++++++++++++
 arch/arm/boot/dts/imx7d-nitrogen7.dts      | 818 +++++++++++++++++++++++++++++
 arch/arm/boot/dts/imx7d.dtsi               |  33 ++
 arch/arm/configs/imx_v6_v7_defconfig       |   4 +
 drivers/clk/imx/clk-imx7d.c                |   3 +-
 include/dt-bindings/clock/imx7d-clock.h    |   3 +-
 8 files changed, 1653 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
Signature · 1 line
2.7.0
#13 lore raw

PATCH v2 1/9 ARM: dts: imx7d: add lcdif support

Add the device node for the i.MX7 eLCDIF interface.

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/imx7d.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +11 -0
index b5a50e0..a768716 100644
@@ -608,6 +608,17 @@
 				status = "disabled";
 			};
 
+			lcdif: lcdif at 30730000 {
+				compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif";
+				reg = <0x30730000 0x10000>;
+				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
+					<&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CLK_DUMMY>;
+				clock-names = "pix", "axi", "disp_axi";
+				status = "disabled";
+			};
+
 			pwm1: pwm at 30660000 {
 				compatible = "fsl,imx7d-pwm", "fsl,imx27-pwm";
 				reg = <0x30660000 0x10000>;
Signature · 1 line
2.7.0
#14 lore raw

PATCH v2 1/9 ARM: dts: imx7d: add lcdif support

Quoted 17 lines · Gary Bisson

Add the device node for the i.MX7 eLCDIF interface.

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/imx7d.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +0 -0
index b5a50e0..a768716 100644

arch/arm/boot/dts/imx7d.dtsi line 611

Quoted 4 lines
arch/arm/boot/dts/imx7d.dtsi +1 -0
@@ -608,6 +608,17 @@
 				status = "disabled";
 			};
 
+			lcdif: lcdif at 30730000 {

Please add the node in order of unit-address.

Shawn

Quoted 17 lines
arch/arm/boot/dts/imx7d.dtsi +10 -0
+				compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif";
+				reg = <0x30730000 0x10000>;
+				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
+					<&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CLK_DUMMY>;
+				clock-names = "pix", "axi", "disp_axi";
+				status = "disabled";
+			};
+
 			pwm1: pwm at 30660000 {
 				compatible = "fsl,imx7d-pwm", "fsl,imx27-pwm";
 				reg = <0x30660000 0x10000>;
Signature · 1 line
2.7.0
#15 lore raw

PATCH v2 1/9 ARM: dts: imx7d: add lcdif support

Shawn, All,

Quoted 21 lines · Shawn Guo
Quoted 20 lines · Gary Bisson

Add the device node for the i.MX7 eLCDIF interface.

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/imx7d.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +0 -0
index b5a50e0..a768716 100644
@@ -608,6 +608,17 @@
                              status = "disabled";
                      };
 
Quoted 3 lines

arch/arm/boot/dts/imx7d.dtsi line 611

Quoted 1 line
arch/arm/boot/dts/imx7d.dtsi +1 -0
+                     lcdif: lcdif at 30730000 {

Please add the node in order of unit-address.

Sorry I did it alphabetically for some reason, I'll submit a v3 today.

Regards,
Gary

#16 lore raw

PATCH v2 2/9 ARM: dts: imx7d: add flexcan support

In reply to Gary Bisson

Add the device nodes for the i.MX7 FlexCAN buses.

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/imx7d.dtsi | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +22 -0
index a768716..c5e47a4 100644
@@ -930,6 +930,28 @@
 				fsl,num-rx-queues=<3>;
 				status = "disabled";
 			};
+
+			flexcan1: can at 30a00000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a00000 0x10000>;
+				interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN1_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				stop-mode = <&gpr 0x10 1 0x10 17>;
+				status = "disabled";
+			};
+
+			flexcan2: can at 30a10000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a10000 0x10000>;
+				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN2_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				stop-mode = <&gpr 0x10 2 0x10 18>;
+				status = "disabled";
+			};
 		};
 	};
 };
Signature · 1 line
2.7.0
#17 lore raw

PATCH v2 2/9 ARM: dts: imx7d: add flexcan support

Quoted 19 lines · Gary Bisson

Add the device nodes for the i.MX7 FlexCAN buses.

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/imx7d.dtsi | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +0 -0
index a768716..c5e47a4 100644
@@ -930,6 +930,28 @@
 				fsl,num-rx-queues=<3>;
 				status = "disabled";

arch/arm/boot/dts/imx7d.dtsi line 941

Quoted 10 lines
arch/arm/boot/dts/imx7d.dtsi +9 -0
 			};
+
+			flexcan1: can at 30a00000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a00000 0x10000>;
+				interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN1_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				stop-mode = <&gpr 0x10 1 0x10 17>;

Is this property documented anywhere, or even supported by mainline kernel?

Shawn

Quoted 20 lines
arch/arm/boot/dts/imx7d.dtsi +13 -0
+				status = "disabled";
+			};
+
+			flexcan2: can at 30a10000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a10000 0x10000>;
+				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN2_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				stop-mode = <&gpr 0x10 2 0x10 18>;
+				status = "disabled";
+			};
 		};
 	};
 };
Signature · 1 line
2.7.0
#18 lore raw

PATCH v2 2/9 ARM: dts: imx7d: add flexcan support

Shawn, All,

Quoted 25 lines · Shawn Guo
Quoted 24 lines · Gary Bisson

Add the device nodes for the i.MX7 FlexCAN buses.

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/imx7d.dtsi | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +4 -0
index a768716..c5e47a4 100644
@@ -930,6 +930,28 @@
                              fsl,num-rx-queues=<3>;
                              status = "disabled";
                      };
+
+                     flexcan1: can at 30a00000 {
+                             compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+                             reg = <0x30a00000 0x10000>;
Quoted 8 lines

arch/arm/boot/dts/imx7d.dtsi line 941

Quoted 5 lines
arch/arm/boot/dts/imx7d.dtsi +5 -0
+                             interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                             clocks = <&clks IMX7D_CLK_DUMMY>,
+                                     <&clks IMX7D_CAN1_ROOT_CLK>;
+                             clock-names = "ipg", "per";
+                             stop-mode = <&gpr 0x10 1 0x10 17>;

Is this property documented anywhere, or even supported by mainline kernel?

No you're right this property is only available on NXP kernel:
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/Documentation/devicetree/bindings/net/can/fsl-flexcan.txt?id=rel_imx_4.1.15_1.0.0_ga#n20

I'll remove it for now, I'll re-order the nodes as well.

Regards,
Gary

#19 lore raw

PATCH v2 3/9 clk: imx: add ckil clock for i.MX7

In reply to Gary Bisson

Add the necessary clock to use the ckil on i.MX7.

Inspired from the following patch:
https://github.com/boundarydevices/linux-imx6/commit/b80e8271

---

Changelog v1 -> v2:
- none

---
 drivers/clk/imx/clk-imx7d.c             | 3 ++-
 include/dt-bindings/clock/imx7d-clock.h | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
drivers/clk/imx/clk-imx7d.c +2 -1
index fbb6a8c..7912be8 100644
@@ -342,7 +342,7 @@ static const char *clko1_sel[] = { "osc", "pll_sys_main_clk",
 
 static const char *clko2_sel[] = { "osc", "pll_sys_main_240m_clk",
 	"pll_sys_pfd0_392m_clk", "pll_sys_pfd1_166m_clk", "pll_sys_pfd4_clk",
-	"pll_audio_main_clk", "pll_video_main_clk", "osc_32k_clk", };
+	"pll_audio_main_clk", "pll_video_main_clk", "ckil", };
 
 static const char *lvds1_sel[] = { "pll_arm_main_clk",
 	"pll_sys_main_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_332m_clk",
@@ -382,6 +382,7 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
 
 	clks[IMX7D_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
 	clks[IMX7D_OSC_24M_CLK] = of_clk_get_by_name(ccm_node, "osc");
+	clks[IMX7D_CKIL] = of_clk_get_by_name(ccm_node, "ckil");
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx7d-anatop");
 	base = of_iomap(np, 0);
include/dt-bindings/clock/imx7d-clock.h +2 -1
index edca8985c..1183347 100644
@@ -448,5 +448,6 @@
 #define IMX7D_PLL_DRAM_TEST_DIV		435
 #define IMX7D_ADC_ROOT_CLK		436
 #define IMX7D_CLK_ARM			437
-#define IMX7D_CLK_END			438
+#define IMX7D_CKIL			438
+#define IMX7D_CLK_END			439
 #endif /* __DT_BINDINGS_CLOCK_IMX7D_H */
Signature · 1 line
2.7.0
#20 lore raw

PATCH v2 4/9 ARM: dts: imx: add Boundary Devices Nitrogen7 board

In reply to Gary Bisson

Based on i.MX7 Dual with 1GB of RAM.

https://boundarydevices.com/product/nitrogen7/

---

Changelog v1 -> v2:
- none

---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts | 818 ++++++++++++++++++++++++++++++++++
 2 files changed, 819 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
arch/arm/boot/dts/Makefile +1 -0
index 2bfce0f..fd67d8d 100644
@@ -369,6 +369,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
 	imx6ul-14x14-evk.dtb
 dtb-$(CONFIG_SOC_IMX7D) += \
 	imx7d-cl-som-imx7.dtb \
+	imx7d-nitrogen7.dtb \
 	imx7d-sbc-imx7.dtb \
 	imx7d-sdb.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +818 -0

818 lines not on this page · raw message

Signature · 1 line
2.7.0
#21 lore raw

PATCH v2 5/9 ARM: dts: imx: add Boundary Devices Nitrogen6_MAX QP board

In reply to Gary Bisson

Based on i.MX6 Quad Plus with 4GB of RAM.

https://boundarydevices.com/product/nitrogen6max/

---

Changelog v1 -> v2:
- Disable pcie for nitrogen6qp_max dts
-> required for the board to boot normally

---
 arch/arm/boot/dts/Makefile                 |  1 +
 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts | 59 ++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts
arch/arm/boot/dts/Makefile +1 -0
index fd67d8d..279ec61 100644
@@ -356,6 +356,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-udoo.dtb \
 	imx6q-wandboard.dtb \
 	imx6q-wandboard-revb1.dtb \
+	imx6qp-nitrogen6_max.dtb \
 	imx6qp-sabreauto.dtb \
 	imx6qp-sabresd.dtb
 dtb-$(CONFIG_SOC_IMX6SL) += \
arch/arm/boot/dts/imx6qp-nitrogen6_max.dts new file +59 -0

59 lines not on this page · raw message

Signature · 1 line
2.7.0
#22 lore raw

PATCH v2 6/9 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

In reply to Gary Bisson

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---

Changelog v1 -> v2:
- Remove lines commented out from nitrogen6sx dts as suggested by Vladimir

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 732 +++++++++++++++++++++++++++++++
 2 files changed, 733 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 279ec61..6a2bbc4 100644
@@ -363,6 +363,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
 	imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+	imx6sx-nitrogen6sx.dtb \
 	imx6sx-sabreauto.dtb \
 	imx6sx-sdb-reva.dtb \
 	imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +732 -0

732 lines not on this page · raw message

Signature · 1 line
2.7.0
#23 lore raw

PATCH v2 7/9 ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support

In reply to Gary Bisson

Those two touch controllers are used by Boundary Devices platforms.

---

Changelog v1 -> v2:
- none

---
 arch/arm/configs/imx_v6_v7_defconfig | 2 ++
 1 file changed, 2 insertions(+)
arch/arm/configs/imx_v6_v7_defconfig +2 -0
index 978c5de..49dd816 100644
@@ -162,7 +162,9 @@ CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_EGALAX=y
 CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
 CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2004=y
 CONFIG_TOUCHSCREEN_TSC2007=y
 CONFIG_TOUCHSCREEN_STMPE=y
 CONFIG_TOUCHSCREEN_SX8654=y
Signature · 1 line
2.7.0
#24 lore raw

PATCH v2 8/9 ARM: imx_v6_v7_defconfig: add CONFIG_I2C_MUX_GPIO

In reply to Gary Bisson

I2C muxing is used on Nitrogen6_MAX board from Boundary Devices.

---

Changelog v1 -> v2:
- none

---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/imx_v6_v7_defconfig +1 -0
index 49dd816..1faafe3 100644
@@ -180,6 +180,7 @@ CONFIG_SERIAL_FSL_LPUART=y
 CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
 # CONFIG_I2C_COMPAT is not set
 CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX_GPIO=y
 # CONFIG_I2C_HELPER_AUTO is not set
 CONFIG_I2C_ALGOPCF=m
 CONFIG_I2C_ALGOPCA=m
Signature · 1 line
2.7.0
#25 lore raw

PATCH v2 9/9 ARM: imx_v6_v7_defconfig: add CONFIG_RTC_DRV_M41T80

In reply to Gary Bisson

The rv4168 RTC is used by the following platforms:
- Nitrogen6_MAX (both Quad and Quad Plus versions)
- Nitrogen7

---

Changelog v1 -> v2:
- none

---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/imx_v6_v7_defconfig +1 -0
index 1faafe3..af22ea4 100644
@@ -316,6 +316,7 @@ CONFIG_RTC_DRV_DS1307=y
 CONFIG_RTC_DRV_ISL1208=y
 CONFIG_RTC_DRV_PCF8523=y
 CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_M41T80=y
 CONFIG_RTC_DRV_MC13XXX=y
 CONFIG_RTC_DRV_MXC=y
 CONFIG_RTC_DRV_SNVS=y
Signature · 1 line
2.7.0
#26 lore raw

v3 cover imx: add latest Boundary Devices boards support

In reply to Gary Bisson

Hi all,

This series adds support for the following Boundary Devices boards:
- Nitrogen7 (i.MX7)
- Nitrogen6SX (i.MX6SoloX)
- Nitrogen6QP_MAX (i.MX6QP)

The first patches add display and CAN support to i.MX7 device tree. Those two features have been successfully tested on the Nitrogen7. Also the support of CKIL clock has been added in order to use it as slow clock for the WiFi module.

Then the last 3 patches add some missing configurations in order to fully support Boundary platforms using imx_v6_v7_defconfig.

All the patches have been applied/tested on top of Shawn's 'for-next' branch.

Here are some remarks/questions that came during testing:
- Is the pxp v4l2 driver being worked on for mainline inclusion?
- Are the ldb modifications for SoloX being worked on for mainline inclusion?
- Is the WM8960 ASoC machine driver being worked on for mainline inclusion?
- When booting the Nitrogen7, there's backtrace due to clk_pllv3_prepare, does it happen on the sdb too? Note that it doesn't prevent the board to work.

Changes v1 -> v2:
- Remove lines commented out from nitrogen6sx dts as suggested by Vladimir
- Disable pcie for nitrogen6qp_max dts
Changes v2 -> v3:
- Re-order lcdif node by unit-address order
- Re-order flexcan nodes by unit-address order
- Remove flexcan unnecessary stop-mode property
- Fix Nitrogen7 BT UART clock parent
- Fix Nitrogen7 lvdo2 node to be always-on

Regards,
Gary

Gary Bisson (9):
ARM: dts: imx7d: add lcdif support
ARM: dts: imx7d: add flexcan support
clk: imx: add ckil clock for i.MX7
ARM: dts: imx: add Boundary Devices Nitrogen7 board
ARM: dts: imx: add Boundary Devices Nitrogen6_MAX QP board
ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board
ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support
ARM: imx_v6_v7_defconfig: add CONFIG_I2C_MUX_GPIO
ARM: imx_v6_v7_defconfig: add CONFIG_RTC_DRV_M41T80

 arch/arm/boot/dts/Makefile                 |   3 +
 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts |  59 +++
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts   | 732 ++++++++++++++++++++++++++
 arch/arm/boot/dts/imx7d-nitrogen7.dts      | 819 +++++++++++++++++++++++++++++
 arch/arm/boot/dts/imx7d.dtsi               |  31 ++
 arch/arm/configs/imx_v6_v7_defconfig       |   4 +
 drivers/clk/imx/clk-imx7d.c                |   3 +-
 include/dt-bindings/clock/imx7d-clock.h    |   3 +-
 8 files changed, 1652 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
Signature · 1 line
2.7.0
#27 lore raw

PATCH v3 1/9 ARM: dts: imx7d: add lcdif support

Add the device node for the i.MX7 eLCDIF interface.

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- Re-order lcdif node by unit-address order

---
 arch/arm/boot/dts/imx7d.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +11 -0
index b5a50e0..2547e16 100644
@@ -651,6 +651,17 @@
 				#pwm-cells = <2>;
 				status = "disabled";
 			};
+
+			lcdif: lcdif at 30730000 {
+				compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif";
+				reg = <0x30730000 0x10000>;
+				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
+					<&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CLK_DUMMY>;
+				clock-names = "pix", "axi", "disp_axi";
+				status = "disabled";
+			};
 		};
 
 		aips3: aips-bus at 30800000 {
Signature · 1 line
2.7.0
#29 lore raw

PATCH v3 2/9 ARM: dts: imx7d: add flexcan support

In reply to Gary Bisson

Add the device nodes for the i.MX7 FlexCAN buses.

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- Re-order flexcan nodes by unit-address order
- Remove flexcan unnecessary stop-mode property

---
 arch/arm/boot/dts/imx7d.dtsi | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
arch/arm/boot/dts/imx7d.dtsi +20 -0
index 2547e16..6b3faa2 100644
@@ -704,6 +704,26 @@
 				status = "disabled";
 			};
 
+			flexcan1: can at 30a00000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a00000 0x10000>;
+				interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN1_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				status = "disabled";
+			};
+
+			flexcan2: can at 30a10000 {
+				compatible = "fsl,imx7d-flexcan", "fsl,imx6q-flexcan";
+				reg = <0x30a10000 0x10000>;
+				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clks IMX7D_CLK_DUMMY>,
+					<&clks IMX7D_CAN2_ROOT_CLK>;
+				clock-names = "ipg", "per";
+				status = "disabled";
+			};
+
 			i2c1: i2c at 30a20000 {
 				#address-cells = <1>;
 				#size-cells = <0>;
Signature · 1 line
2.7.0
#30 lore raw

PATCH v3 3/9 clk: imx: add ckil clock for i.MX7

In reply to Gary Bisson

Add the necessary clock to use the ckil on i.MX7.

Inspired from the following patch:
https://github.com/boundarydevices/linux-imx6/commit/b80e8271

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- none

---
 drivers/clk/imx/clk-imx7d.c             | 3 ++-
 include/dt-bindings/clock/imx7d-clock.h | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
drivers/clk/imx/clk-imx7d.c +2 -1
index fbb6a8c..7912be8 100644
@@ -342,7 +342,7 @@ static const char *clko1_sel[] = { "osc", "pll_sys_main_clk",
 
 static const char *clko2_sel[] = { "osc", "pll_sys_main_240m_clk",
 	"pll_sys_pfd0_392m_clk", "pll_sys_pfd1_166m_clk", "pll_sys_pfd4_clk",
-	"pll_audio_main_clk", "pll_video_main_clk", "osc_32k_clk", };
+	"pll_audio_main_clk", "pll_video_main_clk", "ckil", };
 
 static const char *lvds1_sel[] = { "pll_arm_main_clk",
 	"pll_sys_main_clk", "pll_sys_pfd0_392m_clk", "pll_sys_pfd1_332m_clk",
@@ -382,6 +382,7 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
 
 	clks[IMX7D_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
 	clks[IMX7D_OSC_24M_CLK] = of_clk_get_by_name(ccm_node, "osc");
+	clks[IMX7D_CKIL] = of_clk_get_by_name(ccm_node, "ckil");
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx7d-anatop");
 	base = of_iomap(np, 0);
include/dt-bindings/clock/imx7d-clock.h +2 -1
index edca8985c..1183347 100644
@@ -448,5 +448,6 @@
 #define IMX7D_PLL_DRAM_TEST_DIV		435
 #define IMX7D_ADC_ROOT_CLK		436
 #define IMX7D_CLK_ARM			437
-#define IMX7D_CLK_END			438
+#define IMX7D_CKIL			438
+#define IMX7D_CLK_END			439
 #endif /* __DT_BINDINGS_CLOCK_IMX7D_H */
Signature · 1 line
2.7.0
#31 lore raw

PATCH v3 4/9 ARM: dts: imx: add Boundary Devices Nitrogen7 board

In reply to Gary Bisson

Based on i.MX7 Dual with 1GB of RAM.

https://boundarydevices.com/product/nitrogen7/

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- Fix Nitrogen7 BT UART clock parent
- Fix Nitrogen7 lvdo2 node to be always-on

---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts | 819 ++++++++++++++++++++++++++++++++++
 2 files changed, 820 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
arch/arm/boot/dts/Makefile +1 -0
index 81e7f92..96dc889 100644
@@ -380,6 +380,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
 	imx6ul-tx6ul-mainboard.dtb
 dtb-$(CONFIG_SOC_IMX7D) += \
 	imx7d-cl-som-imx7.dtb \
+	imx7d-nitrogen7.dtb \
 	imx7d-sbc-imx7.dtb \
 	imx7d-sdb.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +819 -0

819 lines not on this page · raw message

Signature · 1 line
2.7.0
#32 lore raw

PATCH v3 4/9 ARM: dts: imx: add Boundary Devices Nitrogen7 board

Quoted 18 lines · Gary Bisson

Based on i.MX7 Dual with 1GB of RAM.

https://boundarydevices.com/product/nitrogen7/

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- Fix Nitrogen7 BT UART clock parent
- Fix Nitrogen7 lvdo2 node to be always-on

---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts | 819 ++++++++++++++++++++++++++++++++++
 2 files changed, 820 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts

<snip>

Quoted 4 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +4 -0
+/ {
+	model = "Boundary Devices i.MX7 Nitrogen7 Board";
+	compatible = "boundary,imx7d-nitrogen7", "fsl,imx7d";
+

arch/arm/boot/dts/imx7d-nitrogen7.dts line 61

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+	aliases {
+		fb_lcd = &lcdif;
+		t_lcd = &t_lcd;
+	};
+
+	memory {
+		reg = <0x80000000 0x40000000>;
+	};
+
+	backlight_j9 {

Use hyphen instead of underscore in node name.

Quoted 9 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +9 -0
+		compatible = "gpio-backlight";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_backlight_j9>;
+		gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
+		default-on;
+	};
+
+	backlight_j20 {
+		compatible = "pwm-backlight";

arch/arm/boot/dts/imx7d-nitrogen7.dts line 80

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+		pwms = <&pwm1 0 5000000>;
+		brightness-levels = <0 4 8 16 32 64 128 255>;
+		default-brightness-level = <6>;
+		status = "okay";
+	};
+
+	regulators {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <0>;

DT maintainers do not like this fake "simple-bus". Please put all these fixed regulators directly under root node in the naming schema below.

	reg_xxx: regulator-xxx {
		...
	};
Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+
+		reg_usb_otg1_vbus: regulator at 0 {
+			compatible = "regulator-fixed";
+			reg = <0>;
+			regulator-name = "usb_otg1_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+			enable-active-high;
+		};

<snip>

arch/arm/boot/dts/imx7d-nitrogen7.dts line 399

Quoted 8 lines

+&uart3 {

arch/arm/boot/dts/imx7d-nitrogen7.dts new file +7 -0
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart3>;
+	assigned-clocks = <&clks IMX7D_UART3_ROOT_SRC>;
+	assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
+	control-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
+	uart-has-rs485-half-duplex;
+	rs485-mode = <1>;

The above 3 properties are undefined?

Quoted 36 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +36 -0
+	status = "okay";
+};
+
+&uart6 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_uart6>;
+	assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
+	assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
+	fsl,uart-has-rtscts;
+	status = "okay";
+};
+
+&usbotg1 {
+	vbus-supply = <&reg_usb_otg1_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg1>;
+	status = "okay";
+};
+
+&usbotg2 {
+	vbus-supply = <&reg_usb_otg2_vbus>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg2>;
+	dr_mode = "host";
+	status = "okay";
+};
+
+&usdhc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc1>;
+	cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+	vmmc-supply = <&vgen3_reg>;
+	bus-width = <4>;
+	fsl,tuning-step = <2>;
+	wakeup-source;
+	keep-power-in-suspend;

arch/arm/boot/dts/imx7d-nitrogen7.dts line 445

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+	status = "okay";
+};
+
+&usdhc2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc2>;
+	bus-width = <4>;
+	non-removable;
+	vmmc-supply = <&reg_wlan>;
+	vqmmc-1-8-v;

Unsupported property?

arch/arm/boot/dts/imx7d-nitrogen7.dts line 451

Quoted 6 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +6 -0
+	cap-power-off-card;
+	keep-power-in-suspend;
+	status = "okay";
+
+	#address-cells = <1>;
+	#size-cells = <0>;

Move these two up to the top of property list.

Quoted 21 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +21 -0
+	wlcore: wlcore at 2 {
+		compatible = "ti,wl1271";
+		reg = <2>;
+		interrupt-parent = <&gpio4>;
+		interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+		ref-clock-frequency = <38400000>;
+	};
+};
+
+&usdhc3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc3>;
+	assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
+	assigned-clock-rates = <400000000>;
+	bus-width = <8>;
+	fsl,tuning-step = <2>;
+	non-removable;
+	status = "okay";
+};
+
+&wdog1 {

arch/arm/boot/dts/imx7d-nitrogen7.dts line 482

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_wdog1>;
+	status = "okay";
+};
+
+&iomuxc {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_hog_1 &pinctrl_j2>;
+
+	imx7d-nitrogen7 {

Since commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes), we can drop this container code to save one level of indentation.

arch/arm/boot/dts/imx7d-nitrogen7.dts line 495

Quoted 13 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +13 -0
+		pinctrl_hog_1: hoggrp-1 {
+			fsl,pins = <
+				MX7D_PAD_SD3_RESET_B__GPIO6_IO11	0x5d
+				MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x7d
+				MX7D_PAD_ECSPI2_MISO__GPIO4_IO22	0x7d
+			>;
+		};
+
+		pinctrl_bt_rfkill: btrfkillgrp {
+			fsl,pins = <
+				MX7D_PAD_ECSPI2_SS0__GPIO4_IO23		0x7d
+			>;
+		};

Drop unused pinctrl entries, and let's add it when needed.

Quoted 13 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +13 -0
+
+		pinctrl_enet1: enet1grp {
+			fsl,pins = <
+				MX7D_PAD_GPIO1_IO10__ENET1_MDIO			0x3
+				MX7D_PAD_GPIO1_IO11__ENET1_MDC			0x3
+				MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1		0x3
+				MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC	0x71
+				MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0	0x71
+				MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1	0x71
+				MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2	0x71
+				MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3	0x71
+				MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL	0x71
+				MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC	0x71

arch/arm/boot/dts/imx7d-nitrogen7.dts line 518

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+				MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0	0x11
+				MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1	0x11
+				MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2	0x11
+				MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3	0x71
+				MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL	0x11
+				MX7D_PAD_SD3_STROBE__GPIO6_IO10			0x75 /* Reset */
+			>;
+		};
+
+		pinctrl_flash: flashgrp {

Ditto

Quoted 9 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +9 -0
+			fsl,pins = <
+				MX7D_PAD_EPDC_DATA00__QSPI_A_DATA0	0x71
+				MX7D_PAD_EPDC_DATA01__QSPI_A_DATA1	0x71
+				MX7D_PAD_EPDC_DATA02__GPIO2_IO2		0x7d
+				MX7D_PAD_EPDC_DATA03__GPIO2_IO3		0x7d
+				MX7D_PAD_EPDC_DATA05__QSPI_A_SCLK	0x71
+				MX7D_PAD_EPDC_DATA06__GPIO2_IO6		0x71
+			>;
+		};

<snip>

arch/arm/boot/dts/imx7d-nitrogen7.dts line 786

Quoted 5 lines

+&iomuxc_lpsr {

arch/arm/boot/dts/imx7d-nitrogen7.dts new file +4 -0
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_hog_2>;
+
+	imx7d-nitrogen7 {

Drop this container node.

Shawn

Quoted 37 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +33 -0
+		pinctrl_hog_2: hoggrp-2 {
+			fsl,pins = <
+				MX7D_PAD_GPIO1_IO02__GPIO1_IO2		0x7d
+				MX7D_PAD_GPIO1_IO03__CCM_CLKO2		0x7d
+			>;
+		};
+
+		pinctrl_backlight_j9: backlightj9grp {
+			fsl,pins = <
+				MX7D_PAD_GPIO1_IO07__GPIO1_IO7		0x7d
+			>;
+		};
+
+		pinctrl_pwm1: pwm1grp {
+			fsl,pins = <
+				MX7D_PAD_GPIO1_IO01__PWM1_OUT		0x7d
+			>;
+		};
+
+		pinctrl_usbotg1: usbotg1grp {
+			fsl,pins = <
+				MX7D_PAD_GPIO1_IO04__USB_OTG1_OC	0x7d
+				MX7D_PAD_GPIO1_IO05__GPIO1_IO5		0x14
+			>;
+		};
+
+		pinctrl_wdog1: wdog1grp {
+			fsl,pins = <
+				MX7D_PAD_GPIO1_IO00__WDOD1_WDOG_B	0x75
+			>;
+		};
+	};
+};
Signature · 1 line
2.7.0
#33 lore raw

PATCH v3 4/9 ARM: dts: imx: add Boundary Devices Nitrogen7 board

HI Shawn,

Quoted 22 lines · Shawn Guo
Quoted 18 lines · Gary Bisson

Based on i.MX7 Dual with 1GB of RAM.

https://boundarydevices.com/product/nitrogen7/

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- Fix Nitrogen7 BT UART clock parent
- Fix Nitrogen7 lvdo2 node to be always-on

---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts | 819 ++++++++++++++++++++++++++++++++++
 2 files changed, 820 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts

<snip>

Quoted 16 lines
Quoted 4 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +4 -0
+/ {
+     model = "Boundary Devices i.MX7 Nitrogen7 Board";
+     compatible = "boundary,imx7d-nitrogen7", "fsl,imx7d";
+

arch/arm/boot/dts/imx7d-nitrogen7.dts line 61

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+     aliases {
+             fb_lcd = &lcdif;
+             t_lcd = &t_lcd;
+     };
+
+     memory {
+             reg = <0x80000000 0x40000000>;
+     };
+
+     backlight_j9 {

Use hyphen instead of underscore in node name.

Sorry I forgot about that.

Quoted 23 lines
Quoted 9 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +9 -0
+             compatible = "gpio-backlight";
+             pinctrl-names = "default";
+             pinctrl-0 = <&pinctrl_backlight_j9>;
+             gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
+             default-on;
+     };
+
+     backlight_j20 {
+             compatible = "pwm-backlight";

arch/arm/boot/dts/imx7d-nitrogen7.dts line 80

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+             pwms = <&pwm1 0 5000000>;
+             brightness-levels = <0 4 8 16 32 64 128 255>;
+             default-brightness-level = <6>;
+             status = "okay";
+     };
+
+     regulators {
+             compatible = "simple-bus";
+             #address-cells = <1>;
+             #size-cells = <0>;

DT maintainers do not like this fake "simple-bus". Please put all these fixed regulators directly under root node in the naming schema below.

Quoted 3 lines
        reg_xxx: regulator-xxx {
                ...
        };

Ok, good to know, will be fixed in v4.

Quoted 22 lines
Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+
+             reg_usb_otg1_vbus: regulator at 0 {
+                     compatible = "regulator-fixed";
+                     reg = <0>;
+                     regulator-name = "usb_otg1_vbus";
+                     regulator-min-microvolt = <5000000>;
+                     regulator-max-microvolt = <5000000>;
+                     gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+                     enable-active-high;
+             };

<snip>

arch/arm/boot/dts/imx7d-nitrogen7.dts line 399

Quoted 8 lines

+&uart3 {

arch/arm/boot/dts/imx7d-nitrogen7.dts new file +7 -0
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_uart3>;
+     assigned-clocks = <&clks IMX7D_UART3_ROOT_SRC>;
+     assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
+     control-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
+     uart-has-rs485-half-duplex;
+     rs485-mode = <1>;
Quoted 1 line

The above 3 properties are undefined?

You're right, the mainline i.MX UART driver doesn't have those.

Quoted 40 lines
Quoted 40 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +40 -0
+     status = "okay";
+};
+
+&uart6 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_uart6>;
+     assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
+     assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
+     fsl,uart-has-rtscts;
+     status = "okay";
+};
+
+&usbotg1 {
+     vbus-supply = <&reg_usb_otg1_vbus>;
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usbotg1>;
+     status = "okay";
+};
+
+&usbotg2 {
+     vbus-supply = <&reg_usb_otg2_vbus>;
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usbotg2>;
+     dr_mode = "host";
+     status = "okay";
+};
+
+&usdhc1 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usdhc1>;
+     cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+     vmmc-supply = <&vgen3_reg>;
+     bus-width = <4>;
+     fsl,tuning-step = <2>;
+     wakeup-source;
+     keep-power-in-suspend;
+     status = "okay";
+};
+
+&usdhc2 {
Quoted 8 lines

arch/arm/boot/dts/imx7d-nitrogen7.dts line 445

Quoted 6 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +6 -0
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usdhc2>;
+     bus-width = <4>;
+     non-removable;
+     vmmc-supply = <&reg_wlan>;
+     vqmmc-1-8-v;

Unsupported property?

Same here.

Quoted 8 lines

arch/arm/boot/dts/imx7d-nitrogen7.dts line 451

Quoted 6 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +6 -0
+     cap-power-off-card;
+     keep-power-in-suspend;
+     status = "okay";
+
+     #address-cells = <1>;
+     #size-cells = <0>;

Move these two up to the top of property list.

Ok.

Quoted 27 lines
Quoted 27 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +27 -0
+     wlcore: wlcore at 2 {
+             compatible = "ti,wl1271";
+             reg = <2>;
+             interrupt-parent = <&gpio4>;
+             interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+             ref-clock-frequency = <38400000>;
+     };
+};
+
+&usdhc3 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_usdhc3>;
+     assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
+     assigned-clock-rates = <400000000>;
+     bus-width = <8>;
+     fsl,tuning-step = <2>;
+     non-removable;
+     status = "okay";
+};
+
+&wdog1 {
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_wdog1>;
+     status = "okay";
+};
+
+&iomuxc {
Quoted 8 lines

arch/arm/boot/dts/imx7d-nitrogen7.dts line 482

Quoted 4 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +4 -0
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_hog_1 &pinctrl_j2>;
+
+     imx7d-nitrogen7 {

Since commit 5fcdf6a7ed95 (pinctrl: imx: Allow parsing DT without function nodes), we can drop this container code to save one level of indentation.

Great, that will remove all the over 80 lines with checkpatch.

Quoted 14 lines

arch/arm/boot/dts/imx7d-nitrogen7.dts line 495

Quoted 13 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +13 -0
+             pinctrl_hog_1: hoggrp-1 {
+                     fsl,pins = <
+                             MX7D_PAD_SD3_RESET_B__GPIO6_IO11        0x5d
+                             MX7D_PAD_GPIO1_IO13__GPIO1_IO13         0x7d
+                             MX7D_PAD_ECSPI2_MISO__GPIO4_IO22        0x7d
+                     >;
+             };
+
+             pinctrl_bt_rfkill: btrfkillgrp {
+                     fsl,pins = <
+                             MX7D_PAD_ECSPI2_SS0__GPIO4_IO23         0x7d
+                     >;
+             };
Quoted 1 line

Drop unused pinctrl entries, and let's add it when needed.

Ok, makes sense.

Quoted 38 lines
Quoted 13 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +13 -0
+
+             pinctrl_enet1: enet1grp {
+                     fsl,pins = <
+                             MX7D_PAD_GPIO1_IO10__ENET1_MDIO                 0x3
+                             MX7D_PAD_GPIO1_IO11__ENET1_MDC                  0x3
+                             MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1          0x3
+                             MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC       0x71
+                             MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0       0x71
+                             MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1       0x71
+                             MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2       0x71
+                             MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3       0x71
+                             MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x71
+                             MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC       0x71

arch/arm/boot/dts/imx7d-nitrogen7.dts line 518

Quoted 10 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +10 -0
+                             MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0       0x11
+                             MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1       0x11
+                             MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2       0x11
+                             MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3       0x71
+                             MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x11
+                             MX7D_PAD_SD3_STROBE__GPIO6_IO10                 0x75 /* Reset */
+                     >;
+             };
+
+             pinctrl_flash: flashgrp {

Ditto

Quoted 9 lines
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +9 -0
+                     fsl,pins = <
+                             MX7D_PAD_EPDC_DATA00__QSPI_A_DATA0      0x71
+                             MX7D_PAD_EPDC_DATA01__QSPI_A_DATA1      0x71
+                             MX7D_PAD_EPDC_DATA02__GPIO2_IO2         0x7d
+                             MX7D_PAD_EPDC_DATA03__GPIO2_IO3         0x7d
+                             MX7D_PAD_EPDC_DATA05__QSPI_A_SCLK       0x71
+                             MX7D_PAD_EPDC_DATA06__GPIO2_IO6         0x71
+                     >;
+             };

<snip>

Quoted 7 lines

arch/arm/boot/dts/imx7d-nitrogen7.dts line 786

Quoted 5 lines

+&iomuxc_lpsr {

arch/arm/boot/dts/imx7d-nitrogen7.dts new file +4 -0
+     pinctrl-names = "default";
+     pinctrl-0 = <&pinctrl_hog_2>;
+
+     imx7d-nitrogen7 {

Drop this container node.

I'll submit a v4 shortly. I'll also make sure to do the same on the 6SX device tree.

Regards,
Gary

#34 lore raw

PATCH v4 1/1 ARM: dts: imx: add Boundary Devices Nitrogen7 board

In reply to Gary Bisson

Based on i.MX7 Dual with 1GB of RAM.

https://boundarydevices.com/product/nitrogen7/

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- Fix Nitrogen7 BT UART clock parent
- Fix Nitrogen7 lvdo2 node to be always-on
Changes v3 -> v4:
- Use hyphen instead of underscore for backlight node names
- Remove fake "simple-bus" for regulators declaration
- Remove non existant rs485 properties
- Remove non existant vqmmc-1-8v property
- Remove unused pinctrl entries (rfkill, flash, pcie, usdhc, sai)
- Remove pinctrl unnecessary container node

---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts | 745 ++++++++++++++++++++++++++++++++++
 2 files changed, 746 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx7d-nitrogen7.dts
arch/arm/boot/dts/Makefile +1 -0
index 84008a7..54306aa 100644
@@ -381,6 +381,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
 	imx6ul-tx6ul-mainboard.dtb
 dtb-$(CONFIG_SOC_IMX7D) += \
 	imx7d-cl-som-imx7.dtb \
+	imx7d-nitrogen7.dtb \
 	imx7d-sbc-imx7.dtb \
 	imx7d-sdb.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
arch/arm/boot/dts/imx7d-nitrogen7.dts new file +745 -0

745 lines not on this page · raw message

Signature · 1 line
2.7.0
#36 lore raw

PATCH v3 5/9 ARM: dts: imx: add Boundary Devices Nitrogen6_MAX QP board

In reply to Gary Bisson

Based on i.MX6 Quad Plus with 4GB of RAM.

https://boundarydevices.com/product/nitrogen6max/

---

Changes v1 -> v2:
- Disable pcie for nitrogen6qp_max dts
-> required for the board to boot normally
Changes v2 -> v3:
- none

---
 arch/arm/boot/dts/Makefile                 |  1 +
 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts | 59 ++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6qp-nitrogen6_max.dts
arch/arm/boot/dts/Makefile +1 -0
index 96dc889..54306aa 100644
@@ -364,6 +364,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
 	imx6q-udoo.dtb \
 	imx6q-wandboard.dtb \
 	imx6q-wandboard-revb1.dtb \
+	imx6qp-nitrogen6_max.dtb \
 	imx6qp-sabreauto.dtb \
 	imx6qp-sabresd.dtb
 dtb-$(CONFIG_SOC_IMX6SL) += \
arch/arm/boot/dts/imx6qp-nitrogen6_max.dts new file +59 -0

59 lines not on this page · raw message

Signature · 1 line
2.7.0
#38 lore raw

PATCH v3 6/9 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

In reply to Gary Bisson

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---

Changes v1 -> v2:
- Remove lines commented out from nitrogen6sx dts as suggested by Vladimir Changes v2 -> v3:
- none

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 732 +++++++++++++++++++++++++++++++
 2 files changed, 733 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 54306aa..9eab5f5 100644
@@ -371,6 +371,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
 	imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+	imx6sx-nitrogen6sx.dtb \
 	imx6sx-sabreauto.dtb \
 	imx6sx-sdb-reva.dtb \
 	imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +732 -0

732 lines not on this page · raw message

Signature · 1 line
2.7.0
#39 lore raw

PATCH v4 1/1 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---

Changes v1 -> v2:
- Remove lines commented out from nitrogen6sx dts as suggested by Vladimir Changes v2 -> v3:
- none
Changes v3 -> v4:
- Use hyphen instead of underscore for backlight node name
- Remove fake "simple-bus" for regulators declaration
- Remove non existant vqmmc-1-8v property
- Remove unused pinctrl entries (rfkill, lvds)
- Remove pinctrl unnecessary container node

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 706 +++++++++++++++++++++++++++++++
 2 files changed, 707 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 54306aa..9eab5f5 100644
@@ -371,6 +371,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
 	imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+	imx6sx-nitrogen6sx.dtb \
 	imx6sx-sabreauto.dtb \
 	imx6sx-sdb-reva.dtb \
 	imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +706 -0

706 lines not on this page · raw message

Signature · 1 line
2.7.0
#40 lore raw

PATCH v4 1/1 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

On Thu, Apr 07, 2016 at 03:52:48PM +0200, Gary Bisson wrote:

<snip>

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 156

Quoted 13 lines

+&ecspi1 {

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +12 -0
+	fsl,spi-num-chipselects = <1>;
+	cs-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_ecspi1>;
+	status = "okay";
+
+	flash: m25p80 at 0 {
+		compatible = "microchip,sst25vf016b";
+		spi-max-frequency = <20000000>;
+		reg = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;

Have a new line between properties and sub-nodes.

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 159

Quoted 3 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +3 -0
+		partition at 0 {
+			label = "U-Boot";
+			reg = <0x0 0xC0000>;

Please use lowercase for all hex values in device tree source.

Review

Quoted 2 lines
(quoted diff) +2 -0
+			read-only;
+		};

Have a new line between nodes.

Quoted 15 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +15 -0
+		partition at C0000 {
+			label = "env";
+			reg = <0xC0000 0x2000>;
+			read-only;
+		};
+		partition at C2000 {
+			label = "Kernel";
+			reg = <0xC2000 0x11e000>;
+		};
+		partition at 1E0000 {
+			label = "M4";
+			reg = <0x1E0000 0x20000>;
+		};
+	};
+};

<snip>

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 307

Quoted 2 lines

+&ssi1 {

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +1 -0
+	fsl,mode = "i2s-master";

Take a look at Documentation/devicetree/bindings/sound/fsl,ssi.txt. fsl,mode is only for AC97 interface now.

Quoted 2 lines
(quoted diff) +2 -0
+	status = "okay";
+};

<snip>

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 358

Quoted 7 lines

+&usdhc2 {

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +6 -0
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc2>;
+	bus-width = <4>;
+	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
+	keep-power-in-suspend;
+	enable-sdio-wakeup;

Use wakeup-source instead, as enable-sdio-wakeup is deprecated. See details in bindings/power/wakeup-source.txt.

Quoted 5 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +5 -0
+	status = "okay";
+};
+
+&usdhc3 {
+	#address-cells = <1>;

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 373

Quoted 10 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +10 -0
+	#size-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usdhc3>;
+	bus-width = <4>;
+	non-removable;
+	keep-power-in-suspend;
+	vmmc-supply = <&reg_wlan>;
+	cap-power-off-card;
+	cap-sdio-irq;
+	vqmmc-1-8-v;

Your change log says this non-existent property is removed.

arch/arm/boot/dts/imx6sx-nitrogen6sx.dts line 381

Quoted 8 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +8 -0
+	status = "okay";
+
+	brcmf: bcrmf at 1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+		interrupt-parent = <&gpio7>;
+		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+	};

Have a new line between nodes.

Shawn

Quoted 8 lines
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +8 -0
+	wlcore: wlcore at 2 {
+		compatible = "ti,wl1271";
+		reg = <2>;
+		interrupt-parent = <&gpio7>;
+		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+		ref-clock-frequency = <38400000>;
+	};
+};
#41 lore raw

PATCH v5 1/1 ARM: dts: imx: add Boundary Devices Nitrogen6_SoloX board

In reply to Gary Bisson

Based on i.MX6 SoloX with 1GB of RAM.

https://boundarydevices.com/product/nit6_solox-imx6/

---

Changes v1 -> v2:
- Remove lines commented out from nitrogen6sx dts as suggested by Vladimir Changes v2 -> v3:
- none
Changes v3 -> v4:
- Use hyphen instead of underscore for backlight node name
- Remove fake "simple-bus" for regulators declaration
- Remove non existant vqmmc-1-8v property
- Remove unused pinctrl entries (rfkill, lvds)
- Remove pinctrl unnecessary container node
Changes v4 -> v5:
- Remove non existant vqmmc-1-8v for real
- Add new line between properties and sub-nodes
- Use lowercase for all hexadecimal values
- Remove unnecessary fsl,mode of ssi node
- Remove deprecated keep-power-in-suspend

Thanks for all your feedback!

Regards,
Gary

---
 arch/arm/boot/dts/Makefile               |   1 +
 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 709 +++++++++++++++++++++++++++++++
 2 files changed, 710 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts
arch/arm/boot/dts/Makefile +1 -0
index 54306aa..9eab5f5 100644
@@ -371,6 +371,7 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
 	imx6sl-evk.dtb \
 	imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
+	imx6sx-nitrogen6sx.dtb \
 	imx6sx-sabreauto.dtb \
 	imx6sx-sdb-reva.dtb \
 	imx6sx-sdb.dtb
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts new file +709 -0

709 lines not on this page · raw message

Signature · 1 line
2.7.0
#43 lore raw

PATCH v3 7/9 ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support

In reply to Gary Bisson

Those two touch controllers are used by Boundary Devices platforms.

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- none

---
 arch/arm/configs/imx_v6_v7_defconfig | 2 ++
 1 file changed, 2 insertions(+)
arch/arm/configs/imx_v6_v7_defconfig +2 -0
index 978c5de..49dd816 100644
@@ -162,7 +162,9 @@ CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_EGALAX=y
 CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
 CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2004=y
 CONFIG_TOUCHSCREEN_TSC2007=y
 CONFIG_TOUCHSCREEN_STMPE=y
 CONFIG_TOUCHSCREEN_SX8654=y
Signature · 1 line
2.7.0
#44 lore raw

PATCH v3 7/9 ARM: imx_v6_v7_defconfig: add FT5x06 and TSC2004 touch support

Quoted 3 lines · Gary Bisson

Those two touch controllers are used by Boundary Devices platforms.

Applied 7 ~ 9, thanks.

#45 lore raw

PATCH v3 8/9 ARM: imx_v6_v7_defconfig: add CONFIG_I2C_MUX_GPIO

In reply to Gary Bisson

I2C muxing is used on Nitrogen6_MAX board from Boundary Devices.

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- none

---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/imx_v6_v7_defconfig +1 -0
index 49dd816..1faafe3 100644
@@ -180,6 +180,7 @@ CONFIG_SERIAL_FSL_LPUART=y
 CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
 # CONFIG_I2C_COMPAT is not set
 CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX_GPIO=y
 # CONFIG_I2C_HELPER_AUTO is not set
 CONFIG_I2C_ALGOPCF=m
 CONFIG_I2C_ALGOPCA=m
Signature · 1 line
2.7.0
#46 lore raw

PATCH v3 9/9 ARM: imx_v6_v7_defconfig: add CONFIG_RTC_DRV_M41T80

In reply to Gary Bisson

The rv4168 RTC is used by the following platforms:
- Nitrogen6_MAX (both Quad and Quad Plus versions)
- Nitrogen7

---

Changes v1 -> v2:
- none
Changes v2 -> v3:
- none

---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/imx_v6_v7_defconfig +1 -0
index 1faafe3..af22ea4 100644
@@ -316,6 +316,7 @@ CONFIG_RTC_DRV_DS1307=y
 CONFIG_RTC_DRV_ISL1208=y
 CONFIG_RTC_DRV_PCF8523=y
 CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_M41T80=y
 CONFIG_RTC_DRV_MC13XXX=y
 CONFIG_RTC_DRV_MXC=y
 CONFIG_RTC_DRV_SNVS=y
Signature · 1 line
2.7.0