Skip to contentSkip to conversation

ARM: dts: support I2SE Duckbill device

PATCH New Michael Heimpold 2 participants 12 messages Oct 22, 2016 – Oct 26, 2016

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

cover ARM: dts: support I2SE Duckbill device

This series updates/adds Device Tree support for I2SE's Duckbill device family.

The Duckbill devices are small, pen-drive sized boards based on NXP's i.MX28 SoC. While the initial variants (Duckbill series) were equipped with a micro SD card slot only, the latest generation (Duckbill 2 series) have an additional internal eMMC onboard.

Both device generations consists of four "family members":

- Duckbill/Duckbill 2: generic board, intented to be used as baseboard for custom designs and/or as development board

- Duckbill EnOcean/Duckbill 2 EnOcean: come with an EnOcean daugther board equipped with the popular TCM310 module

- Duckbill 485/Duckbill 2 485: as the name implies, these devices are intended to be used as Ethernet - RS485 converters

- Duckbill SPI/Duckbill 2 SPI: not sold separately, but used in I2SE's development kits for Green PHY HomePlug Powerline communication

Since all devices are very similar and only differ in few aspects, the following patch series introduces first common device tree snippets which are then included by the real devices. For better understanding, I tried to illustrate the hierarchy:

+--------------------+                      +----------------------+
| imx28-duckbill.dts |                      | imx28-duckbill-2.dts |
+--------------------+                      +----------------------+
  ^                                           ^
  |  +----------------------------+           |  +------------------------------+
  |  | imx28-duckbill-enocean.dts |           |  | imx28-duckbill-2-enocean.dts |
  |  +----------------------------+           |  +------------------------------+
  |    ^                                      |    ^
  |    |  +------------------------+          |    |  +--------------------------+
  |    |  | imx28-duckbill-485.dts |          |    |  | imx28-duckbill-2-485.dts |
  |    |  +------------------------+          |    |  +--------------------------+
  |    |    ^                                 |    |    ^
  |    |    |  +------------------------+     |    |    |  +--------------------------+
  |    |    |  | imx28-duckbill-spi.dts |     |    |    |  | imx28-duckbill-2-spi.dts |
  |    |    |  +------------------------+     |    |    |  +--------------------------+
  |    |    |    ^                            |    |    |    ^
  |    |    |    |                            |    |    |    |
  |    |    |    |                            |    |    |    |
+---------------------------------------+   +-----------------------------------------+
|      imx28-duckbill-common.dtsi       |   |       imx28-duckbill-2-common.dtsi      |
+---------------------------------------+   +-----------------------------------------+
                              ^                      ^
                              |                      |
                           +----------------------------+
                           |  imx28-duckbill-base.dtsi  |
                           +----------------------------+
                                          ^
                                          |
                                    +------------+
                                    | imx28.dtsi |
                                    +------------+

Michael Heimpold (7):
ARM: dts: imx28: add alternative pinmuxing for mmc2
ARM: dts: imx28: rename mmc2_sck_cfg to prepare for an alternative
muxing setup
ARM: dts: imx28: add alternative muxing for mmc2_sck_cfg
ARM: dts: add I2SE Duckbill common definitions
ARM: dts: duckbill: simplify DT and use common definitions
ARM: dts: add support for remaining members of Duckbill series
ARM: dts: add support for Duckbill 2 series devices

 arch/arm/boot/dts/Makefile                     |   7 ++
 arch/arm/boot/dts/imx28-duckbill-2-485.dts     |  70 ++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi | 110 +++++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts | 100 ++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-spi.dts     |  63 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2.dts         |  46 +++++++++++
 arch/arm/boot/dts/imx28-duckbill-485.dts       |  60 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-base.dtsi     |  88 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-common.dtsi   |  80 ++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-enocean.dts   |  90 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-spi.dts       |  64 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill.dts           |  99 +++-------------------
 arch/arm/boot/dts/imx28-m28cu3.dts             |   2 +-
 arch/arm/boot/dts/imx28.dtsi                   |  28 ++++++-
 14 files changed, 817 insertions(+), 90 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-spi.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-base.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-spi.dts
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/7 ARM: dts: imx28: add alternative pinmuxing for mmc2

From: Michael Heimpold <[email protected]>

---
 arch/arm/boot/dts/imx28.dtsi | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
arch/arm/boot/dts/imx28.dtsi +16 -0
index 0ad893b..ef6e10d 100644
@@ -579,6 +579,22 @@
 					fsl,pull-up = <MXS_PULL_ENABLE>;
 				};
 
+				mmc2_4bit_pins_b: mmc2-4bit at 1 {
+					reg = <1>;
+					fsl,pinmux-ids = <
+						MX28_PAD_SSP2_SCK__SSP2_SCK
+						MX28_PAD_SSP2_MOSI__SSP2_CMD
+						MX28_PAD_SSP2_MISO__SSP2_D0
+						MX28_PAD_SSP2_SS0__SSP2_D3
+						MX28_PAD_SSP2_SS1__SSP2_D1
+						MX28_PAD_SSP2_SS2__SSP2_D2
+						MX28_PAD_AUART1_RX__SSP2_CARD_DETECT
+					>;
+					fsl,drive-strength = <MXS_DRIVE_8mA>;
+					fsl,voltage = <MXS_VOLTAGE_HIGH>;
+					fsl,pull-up = <MXS_PULL_ENABLE>;
+				};
+
 				mmc2_cd_cfg: mmc2-cd-cfg {
 					fsl,pinmux-ids = <
 						MX28_PAD_AUART1_RX__SSP2_CARD_DETECT
Signature · 1 line
2.7.4
#2 lore raw

PATCH 2/7 ARM: dts: imx28: rename mmc2_sck_cfg to prepare for an alternative muxing setup

In reply to Michael Heimpold

From: Michael Heimpold <[email protected]>

---
 arch/arm/boot/dts/imx28-m28cu3.dts | 2 +-
 arch/arm/boot/dts/imx28.dtsi       | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
arch/arm/boot/dts/imx28-m28cu3.dts +1 -1
index 2df63be..bb53294 100644
@@ -57,7 +57,7 @@
 				pinctrl-names = "default";
 				pinctrl-0 = <&mmc2_4bit_pins_a
 					     &mmc2_cd_cfg
-					     &mmc2_sck_cfg>;
+					     &mmc2_sck_cfg_a>;
 				bus-width = <4>;
 				vmmc-supply = <&reg_vddio_sd1>;
 				status = "okay";
arch/arm/boot/dts/imx28.dtsi +2 -1
index ef6e10d..e29d797 100644
@@ -602,7 +602,8 @@
 					fsl,pull-up = <MXS_PULL_DISABLE>;
 				};
 
-				mmc2_sck_cfg: mmc2-sck-cfg {
+				mmc2_sck_cfg_a: mmc2-sck-cfg at 0 {
+					reg = <0>;
 					fsl,pinmux-ids = <
 						MX28_PAD_SSP0_DATA7__SSP2_SCK
 					>;
Signature · 1 line
2.7.4
#3 lore raw

PATCH 3/7 ARM: dts: imx28: add alternative muxing for mmc2_sck_cfg

In reply to Michael Heimpold

From: Michael Heimpold <[email protected]>

---
 arch/arm/boot/dts/imx28.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)
arch/arm/boot/dts/imx28.dtsi +9 -0
index e29d797..f7707b4 100644
@@ -611,6 +611,15 @@
 					fsl,pull-up = <MXS_PULL_DISABLE>;
 				};
 
+				mmc2_sck_cfg_b: mmc2-sck-cfg at 1 {
+					reg = <1>;
+					fsl,pinmux-ids = <
+						MX28_PAD_SSP2_SCK__SSP2_SCK
+					>;
+					fsl,drive-strength = <MXS_DRIVE_12mA>;
+					fsl,pull-up = <MXS_PULL_DISABLE>;
+				};
+
 				i2c0_pins_a: i2c0 at 0 {
 					reg = <0>;
 					fsl,pinmux-ids = <
Signature · 1 line
2.7.4
#4 lore raw

PATCH 4/7 ARM: dts: add I2SE Duckbill common definitions

In reply to Michael Heimpold
---
 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi | 110 +++++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-base.dtsi     |  88 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-common.dtsi   |  80 ++++++++++++++++++
 3 files changed, 278 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-base.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-common.dtsi
arch/arm/boot/dts/imx28-duckbill-2-common.dtsi new file +110 -0
new file mode 100644
index 0000000..3354f8f
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2013-2014 Michael Heimpold <[email protected]>
+ * Copyright (C) 2015 I2SE GmbH <[email protected]>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "imx28-duckbill-base.dtsi"
+
+/ {
+	model = "I2SE Duckbill 2";
+	compatible = "i2se,duckbill", "fsl,imx28";
+
+	apb at 80000000 {
+		apbh at 80000000 {
+			ssp0: ssp at 80010000 {
+				compatible = "fsl,imx28-mmc";
+				pinctrl-names = "default";
+				pinctrl-0 = <&mmc0_8bit_pins_a
+					&mmc0_cd_cfg &mmc0_sck_cfg>;
+				bus-width = <8>;
+				vmmc-supply = <&reg_3p3v>;
+				status = "okay";
+				non-removable;
+			};
+
+			pinctrl at 80018000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&hog_pins_a>;
+
+				mac0_phy_reset_pin: mac0_phy_reset_pin at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						MX28_PAD_GPMI_ALE__GPIO_0_26    /* PHY Reset */
+					>;
+					fsl,drive-strength = <MXS_DRIVE_4mA>;
+					fsl,voltage = <MXS_VOLTAGE_HIGH>;
+					fsl,pull-up = <MXS_PULL_DISABLE>;
+				};
+
+				mac0_phy_int_pin: mac0_phy_int_pin at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						MX28_PAD_GPMI_D07__GPIO_0_7    /* PHY Interrupt */
+					>;
+					fsl,drive-strength = <MXS_DRIVE_4mA>;
+					fsl,voltage = <MXS_VOLTAGE_HIGH>;
+					fsl,pull-up = <MXS_PULL_DISABLE>;
+				};
+
+				status_led_pins: status_led_pins at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						MX28_PAD_SAIF0_MCLK__GPIO_3_20
+						MX28_PAD_SAIF0_LRCLK__GPIO_3_21
+					>;
+					fsl,drive-strength = <MXS_DRIVE_4mA>;
+					fsl,voltage = <MXS_VOLTAGE_HIGH>;
+					fsl,pull-up = <MXS_PULL_DISABLE>;
+				};
+			};
+		};
+	};
+
+	ahb at 80080000 {
+		mac0: ethernet at 800f0000 {
+			phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
+			phy-handle = <&ethphy>;
+			mdio {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				ethphy: ethernet-phy at 0 {
+						compatible = "ethernet-phy-ieee802.3-c22";
+						reg = <0>;
+						pinctrl-names = "default";
+						pinctrl-0 = <&mac0_phy_int_pin>;
+						interrupt-parent = <&gpio0>;
+						interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+						max-speed = <100>;
+				};
+			};
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&status_led_pins>;
+
+		status_red {
+			label = "duckbill:red:status";
+			gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "default-on";
+		};
+
+		status_green {
+			label = "duckbill:green:status";
+			gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "heartbeat";
+		};
+	};
+};
arch/arm/boot/dts/imx28-duckbill-base.dtsi new file +88 -0

88 lines not on this page · raw message

arch/arm/boot/dts/imx28-duckbill-common.dtsi new file +80 -0

80 lines not on this page · raw message

Signature · 1 line
2.7.4
#5 lore raw

PATCH 4/7 ARM: dts: add I2SE Duckbill common definitions

arch/arm/boot/dts/imx28-duckbill-2-common.dtsi line 38

Quoted 5 lines · Michael Heimpold
arch/arm/boot/dts/imx28-duckbill-2-common.dtsi new file +5 -0
+			pinctrl at 80018000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&hog_pins_a>;
+
+				mac0_phy_reset_pin: mac0_phy_reset_pin at 0 {

Please use hyphen instead of underscore in node name.

Shawn

Quoted 8 lines
arch/arm/boot/dts/imx28-duckbill-2-common.dtsi new file +8 -0
+					reg = <0>;
+					fsl,pinmux-ids = <
+						MX28_PAD_GPMI_ALE__GPIO_0_26    /* PHY Reset */
+					>;
+					fsl,drive-strength = <MXS_DRIVE_4mA>;
+					fsl,voltage = <MXS_VOLTAGE_HIGH>;
+					fsl,pull-up = <MXS_PULL_DISABLE>;
+				};
#6 lore raw

PATCH 5/7 ARM: dts: duckbill: simplify DT and use common definitions

In reply to Michael Heimpold
---
 arch/arm/boot/dts/imx28-duckbill.dts | 99 ++++--------------------------------
 1 file changed, 11 insertions(+), 88 deletions(-)
arch/arm/boot/dts/imx28-duckbill.dts +11 -88
index ce1a7ef..c3d1ce1 100644
@@ -1,5 +1,6 @@
 /*
- * Copyright (C) 2013 Michael Heimpold <[email protected]>
+ * Copyright (C) 2013-2014,2016 Michael Heimpold <[email protected]>
+ * Copyright (C) 2015 I2SE GmbH <[email protected]>
  *
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
@@ -10,112 +11,34 @@
  */
 
 /dts-v1/;
-#include "imx28.dtsi"
+#include "imx28-duckbill-common.dtsi"
 
 / {
 	model = "I2SE Duckbill";
 	compatible = "i2se,duckbill", "fsl,imx28";
 
-	memory {
-		reg = <0x40000000 0x08000000>;
-	};
-
 	apb at 80000000 {
 		apbh at 80000000 {
-			ssp0: ssp at 80010000 {
-				compatible = "fsl,imx28-mmc";
+			ssp2: ssp at 80014000 {
+				compatible = "fsl,imx28-spi";
 				pinctrl-names = "default";
-				pinctrl-0 = <&mmc0_4bit_pins_a
-					&mmc0_cd_cfg &mmc0_sck_cfg>;
-				bus-width = <4>;
-				vmmc-supply = <&reg_3p3v>;
+				pinctrl-0 = <&spi2_pins_a>;
 				status = "okay";
 			};
-
-			pinctrl at 80018000 {
-				pinctrl-names = "default";
-				pinctrl-0 = <&hog_pins_a>;
-
-				hog_pins_a: hog at 0 {
-					reg = <0>;
-					fsl,pinmux-ids = <
-						MX28_PAD_SSP0_DATA7__GPIO_2_7 /* PHY Reset */
-					>;
-					fsl,drive-strength = <MXS_DRIVE_4mA>;
-					fsl,voltage = <MXS_VOLTAGE_HIGH>;
-					fsl,pull-up = <MXS_PULL_DISABLE>;
-				};
-
-				led_pins_a: led_gpio at 0 {
-					reg = <0>;
-					fsl,pinmux-ids = <
-						MX28_PAD_AUART1_RX__GPIO_3_4
-						MX28_PAD_AUART1_TX__GPIO_3_5
-					>;
-					fsl,drive-strength = <MXS_DRIVE_4mA>;
-					fsl,voltage = <MXS_VOLTAGE_HIGH>;
-					fsl,pull-up = <MXS_PULL_DISABLE>;
-				};
-			};
 		};
 
 		apbx at 80040000 {
-			duart: serial at 80074000 {
+			i2c0: i2c at 80058000 {
 				pinctrl-names = "default";
-				pinctrl-0 = <&duart_pins_a>;
+				pinctrl-0 = <&i2c0_pins_a>;
 				status = "okay";
 			};
 
-			usbphy0: usbphy at 8007c000 {
+			auart0: serial at 8006a000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart0_2pins_a>;
 				status = "okay";
 			};
 		};
 	};
-
-	ahb at 80080000 {
-		usb0: usb at 80080000 {
-			status = "okay";
-		};
-
-		mac0: ethernet at 800f0000 {
-			phy-mode = "rmii";
-			pinctrl-names = "default";
-			pinctrl-0 = <&mac0_pins_a>;
-			phy-supply = <&reg_3p3v>;
-			phy-reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
-			phy-reset-duration = <100>;
-			status = "okay";
-		};
-	};
-
-	regulators {
-		compatible = "simple-bus";
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		reg_3p3v: regulator at 0 {
-			compatible = "regulator-fixed";
-			reg = <0>;
-			regulator-name = "3P3V";
-			regulator-min-microvolt = <3300000>;
-			regulator-max-microvolt = <3300000>;
-			regulator-always-on;
-		};
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		pinctrl-names = "default";
-		pinctrl-0 = <&led_pins_a>;
-
-		status {
-			label = "duckbill:green:status";
-			gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>;
-		};
-
-		failure {
-			label = "duckbill:red:status";
-			gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
-		};
-	};
 };
Signature · 1 line
2.7.4
#7 lore raw

PATCH 6/7 ARM: dts: add support for remaining members of Duckbill series

In reply to Michael Heimpold
---
 arch/arm/boot/dts/Makefile                   |  3 +
 arch/arm/boot/dts/imx28-duckbill-485.dts     | 60 +++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-enocean.dts | 90 ++++++++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-spi.dts     | 64 ++++++++++++++++++++
 4 files changed, 217 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-spi.dts
arch/arm/boot/dts/Makefile +3 -0
index befcd26..5a366c4 100644
@@ -459,7 +459,10 @@ dtb-$(CONFIG_ARCH_MXS) += \
 	imx28-cfa10056.dtb \
 	imx28-cfa10057.dtb \
 	imx28-cfa10058.dtb \
+	imx28-duckbill-485.dtb \
 	imx28-duckbill.dtb \
+	imx28-duckbill-enocean.dtb \
+	imx28-duckbill-spi.dtb \
 	imx28-eukrea-mbmx283lc.dtb \
 	imx28-eukrea-mbmx287lc.dtb \
 	imx28-evk.dtb \
arch/arm/boot/dts/imx28-duckbill-485.dts new file +60 -0

60 lines not on this page · raw message

arch/arm/boot/dts/imx28-duckbill-enocean.dts new file +90 -0

90 lines not on this page · raw message

arch/arm/boot/dts/imx28-duckbill-spi.dts new file +64 -0

64 lines not on this page · raw message

Signature · 1 line
2.7.4
#8 lore raw

PATCH 7/7 ARM: dts: add support for Duckbill 2 series devices

In reply to Michael Heimpold
---
 arch/arm/boot/dts/Makefile                     |   4 +
 arch/arm/boot/dts/imx28-duckbill-2-485.dts     |  70 +++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts | 100 +++++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-spi.dts     |  63 ++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2.dts         |  46 ++++++++++++
 5 files changed, 283 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-spi.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2.dts
arch/arm/boot/dts/Makefile +4 -0
index 5a366c4..510e6f3 100644
@@ -459,6 +459,10 @@ dtb-$(CONFIG_ARCH_MXS) += \
 	imx28-cfa10056.dtb \
 	imx28-cfa10057.dtb \
 	imx28-cfa10058.dtb \
+	imx28-duckbill-2-485.dtb \
+	imx28-duckbill-2.dtb \
+	imx28-duckbill-2-enocean.dtb \
+	imx28-duckbill-2-spi.dtb \
 	imx28-duckbill-485.dtb \
 	imx28-duckbill.dtb \
 	imx28-duckbill-enocean.dtb \
arch/arm/boot/dts/imx28-duckbill-2-485.dts new file +70 -0

70 lines not on this page · raw message

arch/arm/boot/dts/imx28-duckbill-2-enocean.dts new file +100 -0

100 lines not on this page · raw message

arch/arm/boot/dts/imx28-duckbill-2-spi.dts new file +63 -0

63 lines not on this page · raw message

arch/arm/boot/dts/imx28-duckbill-2.dts new file +46 -0

46 lines not on this page · raw message

Signature · 1 line
2.7.4
#9 lore raw

cover ARM: dts: support I2SE Duckbill device

In reply to Michael Heimpold
Quoted 16 lines · Michael Heimpold

This series updates/adds Device Tree support for I2SE's Duckbill device family.

The Duckbill devices are small, pen-drive sized boards based on NXP's i.MX28 SoC. While the initial variants (Duckbill series) were equipped with a micro SD card slot only, the latest generation (Duckbill 2 series) have an additional internal eMMC onboard.

Both device generations consists of four "family members":

- Duckbill/Duckbill 2: generic board, intented to be used as baseboard for custom designs and/or as development board

- Duckbill EnOcean/Duckbill 2 EnOcean: come with an EnOcean daugther board equipped with the popular TCM310 module

Quoted 6 lines

- Duckbill 485/Duckbill 2 485: as the name implies, these devices are intended to be used as Ethernet - RS485 converters

- Duckbill SPI/Duckbill 2 SPI: not sold separately, but used in I2SE's development kits for Green PHY HomePlug Powerline communication

So we basically need to maintain 8 dts/dtb files for imx28-duckbill board. This is not pleasant. Can you please investigate if Device Tree overlay is going to help here?

Shawn

[1] http://free-electrons.com/blog/dt-overlay-uboot-libfdt/

Quoted 82 lines

Since all devices are very similar and only differ in few aspects, the following patch series introduces first common device tree snippets which are then included by the real devices. For better understanding, I tried to illustrate the hierarchy:

+--------------------+                      +----------------------+
| imx28-duckbill.dts |                      | imx28-duckbill-2.dts |
+--------------------+                      +----------------------+
  ^                                           ^
  |  +----------------------------+           |  +------------------------------+
  |  | imx28-duckbill-enocean.dts |           |  | imx28-duckbill-2-enocean.dts |
  |  +----------------------------+           |  +------------------------------+
  |    ^                                      |    ^
  |    |  +------------------------+          |    |  +--------------------------+
  |    |  | imx28-duckbill-485.dts |          |    |  | imx28-duckbill-2-485.dts |
  |    |  +------------------------+          |    |  +--------------------------+
  |    |    ^                                 |    |    ^
  |    |    |  +------------------------+     |    |    |  +--------------------------+
  |    |    |  | imx28-duckbill-spi.dts |     |    |    |  | imx28-duckbill-2-spi.dts |
  |    |    |  +------------------------+     |    |    |  +--------------------------+
  |    |    |    ^                            |    |    |    ^
  |    |    |    |                            |    |    |    |
  |    |    |    |                            |    |    |    |
+---------------------------------------+   +-----------------------------------------+
|      imx28-duckbill-common.dtsi       |   |       imx28-duckbill-2-common.dtsi      |
+---------------------------------------+   +-----------------------------------------+
                              ^                      ^
                              |                      |
                           +----------------------------+
                           |  imx28-duckbill-base.dtsi  |
                           +----------------------------+
                                          ^
                                          |
                                    +------------+
                                    | imx28.dtsi |
                                    +------------+

Michael Heimpold (7):
ARM: dts: imx28: add alternative pinmuxing for mmc2
ARM: dts: imx28: rename mmc2_sck_cfg to prepare for an alternative
muxing setup
ARM: dts: imx28: add alternative muxing for mmc2_sck_cfg
ARM: dts: add I2SE Duckbill common definitions
ARM: dts: duckbill: simplify DT and use common definitions
ARM: dts: add support for remaining members of Duckbill series
ARM: dts: add support for Duckbill 2 series devices

 arch/arm/boot/dts/Makefile                     |   7 ++
 arch/arm/boot/dts/imx28-duckbill-2-485.dts     |  70 ++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi | 110 +++++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts | 100 ++++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-spi.dts     |  63 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2.dts         |  46 +++++++++++
 arch/arm/boot/dts/imx28-duckbill-485.dts       |  60 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-base.dtsi     |  88 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-common.dtsi   |  80 ++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-enocean.dts   |  90 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-spi.dts       |  64 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill.dts           |  99 +++-------------------
 arch/arm/boot/dts/imx28-m28cu3.dts             |   2 +-
 arch/arm/boot/dts/imx28.dtsi                   |  28 ++++++-
 14 files changed, 817 insertions(+), 90 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-spi.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-base.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-spi.dts
Signature · 7 lines
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#10 lore raw

cover ARM: dts: support I2SE Duckbill device

Am Montag, 24. Oktober 2016, 21:12:09 CEST schrieb Shawn Guo:

Quoted 23 lines · Michael Heimpold
Quoted 22 lines

This series updates/adds Device Tree support for I2SE's Duckbill device family.

The Duckbill devices are small, pen-drive sized boards based on NXP's i.MX28 SoC. While the initial variants (Duckbill series) were equipped with a micro SD card slot only, the latest generation (Duckbill 2 series) have an additional internal eMMC onboard.

Both device generations consists of four "family members":

- Duckbill/Duckbill 2: generic board, intented to be used as

baseboard for custom designs and/or as development board

- Duckbill EnOcean/Duckbill 2 EnOcean: come with an EnOcean

daugther board equipped with the popular TCM310 module

- Duckbill 485/Duckbill 2 485: as the name implies, these

devices are intended to be used as Ethernet - RS485 converters

Quoted 8 lines
Quoted 4 lines

- Duckbill SPI/Duckbill 2 SPI: not sold separately, but used

in I2SE's development kits for Green PHY HomePlug Powerline communication

So we basically need to maintain 8 dts/dtb files for imx28-duckbill board. This is not pleasant. Can you please investigate if Device Tree overlay is going to help here?

First, thank you very much for your quick feedback.

Actually it would even be 11 files for 8 boards, thats right. There is no mechanism (no EEPROM, GPIO...) to automatically probe for the device variants, and the "variant-forming daugther boards" are not switchable like the expansion boards e.g. for Raspberry Pi. Another point is, that this would really require to use U-Boot to apply the overlay (or another DT capable bootloader with this functionality). For booting very fast, the good old Freescale bootlets are still an option, which could not handle the overlays - at least at the moment... However, it still an option to have a second look...

To reduce the number of files, I see the following other approaches:
- don't use the three "common" files which are included: -3 files (8 total)
- don't mainline Duckbill EnOcean, Duckbill 485 and Duckbill SPI:
they are EOL, only Duckbill 2 variants are still sold;
however, since Duckbill (without 2) is/was already mainlined, we should keep this, leaving 4 new variants + 1 old variant: -3 files (5 total)
- only mainline Duckbill 2 (generic board) and maintain all other variants in a private Github repo (this is what we are doing now): -3 files (2 total)

So, I'll discuss this again internally. Do you have any preference?

I was also told off-list, that there should be an additional file in Documentation/devicetree/bindings/arm to document the imx28-duckbill binding.
And DT maintainers don't like the simple-bus stuff around the regulators.

So, I've already material to fix for v2 :-)

Michael

Quoted 55 lines

Shawn

[1] http://free-electrons.com/blog/dt-overlay-uboot-libfdt/

Quoted 50 lines

Since all devices are very similar and only differ in few aspects, the following patch series introduces first common device tree snippets which are then included by the real devices. For better understanding, I tried to illustrate the hierarchy:

...
[removed brocken ASCII art]
...

Michael Heimpold (7):
ARM: dts: imx28: add alternative pinmuxing for mmc2
ARM: dts: imx28: rename mmc2_sck_cfg to prepare for an alternative

muxing setup

ARM: dts: imx28: add alternative muxing for mmc2_sck_cfg
ARM: dts: add I2SE Duckbill common definitions
ARM: dts: duckbill: simplify DT and use common definitions
ARM: dts: add support for remaining members of Duckbill series
ARM: dts: add support for Duckbill 2 series devices

 arch/arm/boot/dts/Makefile                     |   7 ++
 arch/arm/boot/dts/imx28-duckbill-2-485.dts     |  70 ++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi | 110
 +++++++++++++++++++++++++ arch/arm/boot/dts/imx28-duckbill-2-enocean.dts
 | 100 ++++++++++++++++++++++ arch/arm/boot/dts/imx28-duckbill-2-spi.dts 
    |  63 ++++++++++++++ arch/arm/boot/dts/imx28-duckbill-2.dts         |
  46 +++++++++++
 arch/arm/boot/dts/imx28-duckbill-485.dts       |  60 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-base.dtsi     |  88 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-common.dtsi   |  80 ++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-enocean.dts   |  90 ++++++++++++++++++++
 arch/arm/boot/dts/imx28-duckbill-spi.dts       |  64 ++++++++++++++
 arch/arm/boot/dts/imx28-duckbill.dts           |  99
 +++-------------------
 arch/arm/boot/dts/imx28-m28cu3.dts             |   2 +-
 arch/arm/boot/dts/imx28.dtsi                   |  28 ++++++-
 14 files changed, 817 insertions(+), 90 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-spi.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-2.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-485.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-base.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-common.dtsi
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-enocean.dts
 create mode 100644 arch/arm/boot/dts/imx28-duckbill-spi.dts
#11 lore raw

cover ARM: dts: support I2SE Duckbill device

Quoted 19 lines · Michael Heimpold

Actually it would even be 11 files for 8 boards, thats right. There is no mechanism (no EEPROM, GPIO...) to automatically probe for the device variants, and the "variant-forming daugther boards" are not switchable like the expansion boards e.g. for Raspberry Pi. Another point is, that this would really require to use U-Boot to apply the overlay (or another DT capable bootloader with this functionality). For booting very fast, the good old Freescale bootlets are still an option, which could not handle the overlays - at least at the moment... However, it still an option to have a second look...

To reduce the number of files, I see the following other approaches:
- don't use the three "common" files which are included: -3 files (8 total)
- don't mainline Duckbill EnOcean, Duckbill 485 and Duckbill SPI:
they are EOL, only Duckbill 2 variants are still sold;
however, since Duckbill (without 2) is/was already mainlined, we should keep this, leaving 4 new variants + 1 old variant: -3 files (5 total)
- only mainline Duckbill 2 (generic board) and maintain all other variants in a private Github repo (this is what we are doing now): -3 files (2 total)

Quoted 1 line

So, I'll discuss this again internally. Do you have any preference?

I'm fine with the second one.

Shawn