ARM: dts: support I2SE Duckbill devices
Subsystems (5)
v4 cover ARM: dts: support I2SE Duckbill devices
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, intended 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
Because the Duckbill series is EOL, this patch series only adds support for the latest Duckbill 2 series devices. However, support for the generic Duckbill board was already mainline, so update it to match vendor tree DT.
Changes since v3:
- re-work compatible strings for individual products
- fixed subject prefix for documentation patch
Changes since v2:
- re-ordered documentation patch and fixed typos
- re-worded some commit messages to better reflect patch content
- fixed Makefile beginner issues
- added Acked-bys where applicable
Changes since v1:
- dropped device tree include (shared common definitions)
- added patch 9 (DT documentation file)
- applied reviewers hints
- rebased
Michael Heimpold (9):
ARM: dts: imx28: add alternative pinmuxing for mmc2
ARM: dts: imx28: rename mmc2_sck_cfg
ARM: dts: imx28: add alternative muxing for mmc2_sck_cfg
ARM: dts: imx28-duckbill: update to match vendor distributed DT
dt-bindings: arm: add entries for I2SE boards
ARM: dts: add support for I2SE Duckbill 2 boards
ARM: dts: add support for I2SE Duckbill 2 485
ARM: dts: add support for I2SE Duckbill 2 EnOcean
ARM: dts: add support for I2SE Duckbill 2 SPI
Documentation/devicetree/bindings/arm/i2se.txt | 22 +++ arch/arm/boot/dts/Makefile | 4 + arch/arm/boot/dts/imx28-duckbill-2-485.dts | 189 +++++++++++++++++++++ arch/arm/boot/dts/imx28-duckbill-2-enocean.dts | 220 +++++++++++++++++++++++++ arch/arm/boot/dts/imx28-duckbill-2-spi.dts | 199 ++++++++++++++++++++++ arch/arm/boot/dts/imx28-duckbill-2.dts | 183 ++++++++++++++++++++ arch/arm/boot/dts/imx28-duckbill.dts | 81 ++++++--- arch/arm/boot/dts/imx28-m28cu3.dts | 2 +- arch/arm/boot/dts/imx28.dtsi | 28 +++- arch/arm/mach-mxs/mach-mxs.c | 3 +- 10 files changed, 903 insertions(+), 28 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/i2se.txt 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
Signature · 1 line
2.6.1
PATCH v4 1/9 ARM: dts: imx28: add alternative pinmuxing for mmc2
--- arch/arm/boot/dts/imx28.dtsi | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
arch/arm/boot/dts/imx28.dtsi +16 -0
@@ -581,6 +581,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.6.1
PATCH v4 2/9 ARM: dts: imx28: rename mmc2_sck_cfg
In reply to Michael HeimpoldThis patch renames mmc2_sck_cfg in order to prepare for an alternative muxing setup.
--- 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
@@ -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 = <®_vddio_sd1>; status = "okay";
arch/arm/boot/dts/imx28.dtsi +2 -1
@@ -604,7 +604,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.6.1
PATCH v4 3/9 ARM: dts: imx28: add alternative muxing for mmc2_sck_cfg
In reply to Michael Heimpold--- arch/arm/boot/dts/imx28.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+)
arch/arm/boot/dts/imx28.dtsi +9 -0
@@ -613,6 +613,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.6.1
PATCH v4 4/9 ARM: dts: imx28-duckbill: update to match vendor distributed DT
In reply to Michael HeimpoldFrom: Michael Heimpold <[email protected]>
This patch updates the Duckbill device tree and synchronize it with the vendor distributed file. The changes in mostly pin-muxing stuff, but also some minor fixes. In detail:
- enable SPI pins
- enable I2C pins
- enable UART pins
- enable LRADC pin
- adjust USB DR mode
- add default triggers for LEDs
- get rid of regulators simple-bus container
- adjust phy reset duration
According to phy datasheet, 25ms are sufficient. This also reduces the time to boot the system.
--- arch/arm/boot/dts/imx28-duckbill.dts | 81 +++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 25 deletions(-)
arch/arm/boot/dts/imx28-duckbill.dts +56 -25
@@ -1,5 +1,6 @@ /* - * Copyright (C) 2013 Michael Heimpold <[email protected]> + * Copyright (C) 2013-2014,2016 Michael Heimpold <[email protected]> + * Copyright (C) 2015-2017 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,6 +11,7 @@ */ /dts-v1/; +#include <dt-bindings/gpio/gpio.h> #include "imx28.dtsi" / {
@@ -32,6 +34,13 @@ status = "okay"; }; + ssp2: ssp at 80014000 { + compatible = "fsl,imx28-spi"; + pinctrl-names = "default"; + pinctrl-0 = <&spi2_pins_a>; + status = "okay"; + }; + pinctrl at 80018000 { pinctrl-names = "default"; pinctrl-0 = <&hog_pins_a>;
@@ -39,14 +48,24 @@ hog_pins_a: hog at 0 { reg = <0>; fsl,pinmux-ids = < - MX28_PAD_SSP0_DATA7__GPIO_2_7 /* PHY Reset */ + MX28_PAD_LCD_D17__GPIO_1_17 /* Revision detection */ + >; + fsl,drive-strength = <MXS_DRIVE_4mA>; + fsl,voltage = <MXS_VOLTAGE_HIGH>; + fsl,pull-up = <MXS_PULL_DISABLE>; + }; + + mac0_phy_reset_pin: mac0-phy-reset 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 { + led_pins: leds at 0 { reg = <0>; fsl,pinmux-ids = < MX28_PAD_AUART1_RX__GPIO_3_4
@@ -60,6 +79,22 @@ }; apbx at 80040000 { + lradc at 80050000 { + status = "okay"; + }; + + i2c0: i2c@80058000 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins_a>; + status = "okay"; + }; + + auart0: serial at 8006a000 { + pinctrl-names = "default"; + pinctrl-0 = <&auart0_2pins_a>; + status = "okay"; + }; + duart: serial at 80074000 { pinctrl-names = "default"; pinctrl-0 = <&duart_pins_a>;
@@ -75,47 +110,43 @@ ahb at 80080000 { usb0: usb at 80080000 { status = "okay"; + dr_mode = "peripheral"; }; mac0: ethernet at 800f0000 { phy-mode = "rmii"; pinctrl-names = "default"; - pinctrl-0 = <&mac0_pins_a>; + pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>; phy-supply = <®_3p3v>; phy-reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>; - phy-reset-duration = <100>; + phy-reset-duration = <25>; 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; - }; + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + 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>; + pinctrl-0 = <&led_pins>; - status { - label = "duckbill:green:status"; - gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>; - }; - - failure { + status-red { label = "duckbill:red:status"; gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + }; + + status-green { + label = "duckbill:green:status"; + gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; }; }; };
Signature · 1 line
2.6.1
PATCH v4 5/9 dt-bindings: arm: add entries for I2SE boards
In reply to Michael HeimpoldFrom: Michael Heimpold <[email protected]>
This patch adds the missing devicetree binding documentation for I2SE's Duckbill and Duckbill 2 series boards.
--- Documentation/devicetree/bindings/arm/i2se.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/i2se.txt
Documentation/devicetree/bindings/arm/i2se.txt new file +22 -0
@@ -0,0 +1,22 @@ +I2SE Device Tree Bindings +------------------------- + +Duckbill Board +Required root node properties: + - compatible = "i2se,duckbill", "fsl,imx28"; + +Duckbill 2 Board +Required root node properties: + - compatible = "i2se,duckbill-2", "fsl,imx28"; + +Duckbill 2 485 Board +Required root node properties: + - compatible = "i2se,duckbill-2-485", "i2se,duckbill-2", "fsl,imx28"; + +Duckbill 2 EnOcean Board +Required root node properties: + - compatible = "i2se,duckbill-2-enocean", "i2se,duckbill-2", "fsl,imx28"; + +Duckbill 2 SPI Board +Required root node properties: + - compatible = "i2se,duckbill-2-spi", "i2se,duckbill-2", "fsl,imx28";
Signature · 1 line
2.6.1
Rob Herring
maintainerPATCH v4 5/9 dt-bindings: arm: add entries for I2SE boards
Quoted 11 lines · Michael Heimpold
From: Michael Heimpold <[email protected]>
This patch adds the missing devicetree binding documentation for I2SE's Duckbill and Duckbill 2 series boards.
Signed-off-by Michael Heimpold <[email protected]>Cc Stefan Wahren <[email protected]>--- Documentation/devicetree/bindings/arm/i2se.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/i2se.txt
PATCH v4 6/9 ARM: dts: add support for I2SE Duckbill 2 boards
In reply to Michael HeimpoldFrom: Michael Heimpold <[email protected]>
This machine is an USB pen drive sized development board, based on NXP's i.MX28 CPU. In contrast to the previous model "Duckbill", the "Duckbill 2" series has internal eMMC storage.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx28-duckbill-2.dts | 183 +++++++++++++++++++++++++++++++++ arch/arm/mach-mxs/mach-mxs.c | 3 +- 3 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/imx28-duckbill-2.dts
arch/arm/boot/dts/Makefile +1 -0
@@ -475,6 +475,7 @@ dtb-$(CONFIG_ARCH_MXS) += \ imx28-cfa10056.dtb \ imx28-cfa10057.dtb \ imx28-cfa10058.dtb \ + imx28-duckbill-2.dtb \ imx28-duckbill.dtb \ imx28-eukrea-mbmx283lc.dtb \ imx28-eukrea-mbmx287lc.dtb \
arch/arm/boot/dts/imx28-duckbill-2.dts new file +183 -0
183 lines not on this page · raw message
arch/arm/mach-mxs/mach-mxs.c +2 -1
@@ -419,7 +419,8 @@ static void __init mxs_machine_init(void)crystalfontz_init (); else if (of_machine_is_compatible("eukrea,mbmx283lc")) eukrea_mbmx283lc_init(); - else if (of_machine_is_compatible("i2se,duckbill")) + else if (of_machine_is_compatible("i2se,duckbill") || + of_machine_is_compatible("i2se,duckbill-2")) duckbill_init(); else if (of_machine_is_compatible("msr,m28cu3")) m28cu3_init();
Signature · 1 line
2.6.1
PATCH v4 6/9 ARM: dts: add support for I2SE Duckbill 2 boards
Quoted 7 lines · Michael Heimpold
From: Michael Heimpold <[email protected]>
This machine is an USB pen drive sized development board, based on NXP's i.MX28 CPU. In contrast to the previous model "Duckbill", the "Duckbill 2" series has internal eMMC storage.
Quoted 6 lines
Signed-off-by Michael Heimpold <[email protected]>Cc Stefan Wahren <[email protected]>--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx28-duckbill-2.dts | 183 +++++++++++++++++++++++++++++++++ arch/arm/mach-mxs/mach-mxs.c | 3 +-
I'm preparing pull request for 4.12 merge window, and found this. C file change shouldn't be mixed in DTS patch, so I dropped it. Please submit C code change in a separate patch.
Shawn
Quoted 2 lines
3 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/imx28-duckbill-2.dts
PATCH 1/1 ARM: mxs: add support for I2SE Duckbill 2 boards
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.
To distinguish between both generations, a new device tree compatible string was introduced. To get the MAC address fixup applied, we need to check for this new string here, too.
--- arch/arm/mach-mxs/mach-mxs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm/mach-mxs/mach-mxs.c +2 -1
@@ -419,7 +419,8 @@ static void __init mxs_machine_init(void)crystalfontz_init (); else if (of_machine_is_compatible("eukrea,mbmx283lc")) eukrea_mbmx283lc_init(); - else if (of_machine_is_compatible("i2se,duckbill")) + else if (of_machine_is_compatible("i2se,duckbill") || + of_machine_is_compatible("i2se,duckbill-2")) duckbill_init(); else if (of_machine_is_compatible("msr,m28cu3")) m28cu3_init();
Signature · 1 line
2.6.1
Shawn Guo
AppliedPATCH 1/1 ARM: mxs: add support for I2SE Duckbill 2 boards
Quoted 10 lines · Michael Heimpold
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.
To distinguish between both generations, a new device tree compatible string was introduced. To get the MAC address fixup applied, we need to check for this new string here, too.
Signed-off-by Michael Heimpold <[email protected]>
Applied, thanks.
PATCH v4 7/9 ARM: dts: add support for I2SE Duckbill 2 485
In reply to Michael HeimpoldFrom: Michael Heimpold <[email protected]>
This machine is based on I2SE's Duckbill 2 board and features a RS-485 daugther board. This device is intended to be used for e.g. home automation purposes.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx28-duckbill-2-485.dts | 189 +++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+) create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-485.dts
arch/arm/boot/dts/Makefile +1 -0
@@ -475,6 +475,7 @@ dtb-$(CONFIG_ARCH_MXS) += \ imx28-cfa10056.dtb \ imx28-cfa10057.dtb \ imx28-cfa10058.dtb \ + imx28-duckbill-2-485.dtb \ imx28-duckbill-2.dtb \ imx28-duckbill.dtb \ imx28-eukrea-mbmx283lc.dtb \
arch/arm/boot/dts/imx28-duckbill-2-485.dts new file +189 -0
189 lines not on this page · raw message
Signature · 1 line
2.6.1
PATCH v4 8/9 ARM: dts: add support for I2SE Duckbill 2 EnOcean
In reply to Michael HeimpoldFrom: Michael Heimpold <[email protected]>
This machine is based on I2SE's Duckbill 2 board and features a EnOcean daugther board based on the popular TCM310 chipset. This product is intended to be used for e.g. home automation purposes.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx28-duckbill-2-enocean.dts | 220 +++++++++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-enocean.dts
arch/arm/boot/dts/Makefile +1 -0
@@ -477,6 +477,7 @@ dtb-$(CONFIG_ARCH_MXS) += \ imx28-cfa10058.dtb \ imx28-duckbill-2-485.dtb \ imx28-duckbill-2.dtb \ + imx28-duckbill-2-enocean.dtb \ imx28-duckbill.dtb \ imx28-eukrea-mbmx283lc.dtb \ imx28-eukrea-mbmx287lc.dtb \
arch/arm/boot/dts/imx28-duckbill-2-enocean.dts new file +220 -0
220 lines not on this page · raw message
Signature · 1 line
2.6.1
PATCH v4 9/9 ARM: dts: add support for I2SE Duckbill 2 SPI
In reply to Michael HeimpoldFrom: Michael Heimpold <[email protected]>
This machine is based on I2SE's Duckbill 2 board and is sold as part of I2SE's PLC Bundle for IoT. This is a development kit for Homeplug Green PHY based powerline products based on Qualcomms QCA7000 chip.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx28-duckbill-2-spi.dts | 199 +++++++++++++++++++++++++++++ 2 files changed, 200 insertions(+) create mode 100644 arch/arm/boot/dts/imx28-duckbill-2-spi.dts
arch/arm/boot/dts/Makefile +1 -0
@@ -478,6 +478,7 @@ dtb-$(CONFIG_ARCH_MXS) += \ imx28-duckbill-2-485.dtb \ imx28-duckbill-2.dtb \ imx28-duckbill-2-enocean.dtb \ + imx28-duckbill-2-spi.dtb \ imx28-duckbill.dtb \ imx28-eukrea-mbmx283lc.dtb \ imx28-eukrea-mbmx287lc.dtb \
arch/arm/boot/dts/imx28-duckbill-2-spi.dts new file +199 -0
199 lines not on this page · raw message
Signature · 1 line
2.6.1
v4 cover ARM: dts: support I2SE Duckbill devices
In reply to Michael HeimpoldAm 09.02.2017 um 08:42 schrieb Michael Heimpold:
Quoted 19 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, intended 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
- Duckbill SPI/Duckbill 2 SPI: not sold separately, but used in I2SE's development kits for Green PHY HomePlug Powerline communication
Because the Duckbill series is EOL, this patch series only adds support for the latest Duckbill 2 series devices. However, support for the generic Duckbill board was already mainline, so update it to match vendor tree DT.
I'm fine with the complete series.
Regards
Shawn Guo
Appliedv4 cover ARM: dts: support I2SE Duckbill devices
In reply to Michael HeimpoldQuoted 10 lines · Michael Heimpold
Michael Heimpold (9):
ARM: dts: imx28: add alternative pinmuxing for mmc2
ARM: dts: imx28: renamemmc2_sck_cfg
ARM: dts: imx28: add alternative muxing formmc2_sck_cfg
ARM: dts: imx28-duckbill: update to match vendor distributed DT
dt-bindings: arm: add entries for I2SE boards
ARM: dts: add support for I2SE Duckbill 2 boards
ARM: dts: add support for I2SE Duckbill 2 485
ARM: dts: add support for I2SE Duckbill 2 EnOcean
ARM: dts: add support for I2SE Duckbill 2 SPI
Applied all, thanks.