Commit 1e899432 authored by Stefan Wahren's avatar Stefan Wahren Committed by Shawn Guo
Browse files

ARM: dts: imx28-duckbill-2: Include base board



All additional I2SE Duckbill 2 variants always have the same
base board in common. So consider this by including the base
board and avoid a lot of redundancy.

Special care needs to be taken of the SPI variant. ssp2 is used
as SD card interface on the base board, but on the SPI variant
it's downgrade to a SPI interface to connect the QCA7000. So
the SD card properties must be deleted.

Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Cc: Michael Heimpold <mhei@heimpold.de>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent bad4d335
Loading
Loading
Loading
Loading
+14 −160
Original line number Diff line number Diff line
@@ -5,180 +5,34 @@
 */

/dts-v1/;
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/gpio/gpio.h>
#include "imx28.dtsi"
#include "imx28-duckbill-2.dts"

/ {
	model = "I2SE Duckbill 2 485";
	compatible = "i2se,duckbill-2-485", "i2se,duckbill-2", "fsl,imx28";

	memory@40000000 {
		device_type = "memory";
		reg = <0x40000000 0x08000000>;
	};

	apb@80000000 {
		apbh@80000000 {
			ssp0: spi@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;
	leds {
		rs485-red {
			label = "duckbill:red:rs485";
			gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
		};

			ssp2: spi@80014000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc2_4bit_pins_b
					&mmc2_cd_cfg &mmc2_sck_cfg_b>;
				bus-width = <4>;
				vmmc-supply = <&reg_3p3v>;
				status = "okay";
		rs485-green {
			label = "duckbill:green:rs485";
			gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
		};

			pinctrl@80018000 {
				pinctrl-names = "default";
				pinctrl-0 = <&hog_pins_a>;

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						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@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@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>;
&i2c0 {
	status = "disabled";
};

				led_pins: leds@0 {
					reg = <0>;
&led_pins {
	fsl,pinmux-ids = <
		MX28_PAD_SAIF0_MCLK__GPIO_3_20
		MX28_PAD_SAIF0_LRCLK__GPIO_3_21
		MX28_PAD_I2C0_SCL__GPIO_3_24
		MX28_PAD_I2C0_SDA__GPIO_3_25
	>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};
		};

		apbx@80040000 {
			lradc@80050000 {
				status = "okay";
			};

			auart0: serial@8006a000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart0_2pins_a>;
				status = "okay";
			};

			duart: serial@80074000 {
				pinctrl-names = "default";
				pinctrl-0 = <&duart_pins_a>;
				status = "okay";
			};

			usbphy0: usbphy@8007c000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb0: usb@80080000 {
			status = "okay";
			dr_mode = "peripheral";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
			phy-supply = <&reg_3p3v>;
			phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <25>;
			phy-handle = <&ethphy>;
			status = "okay";

			mdio {
				#address-cells = <1>;
				#size-cells = <0>;

				ethphy: ethernet-phy@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>;
				};
			};
		};
	};

	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>;

		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";
		};

		rs485-red {
			label = "duckbill:red:rs485";
			gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
		};

		rs485-green {
			label = "duckbill:green:rs485";
			gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
		};
	};
};
+27 −171
Original line number Diff line number Diff line
@@ -5,79 +5,48 @@
 */

/dts-v1/;
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include "imx28.dtsi"
#include "imx28-duckbill-2.dts"

/ {
	model = "I2SE Duckbill 2 EnOcean";
	compatible = "i2se,duckbill-2-enocean", "i2se,duckbill-2", "fsl,imx28";

	memory@40000000 {
		device_type = "memory";
		reg = <0x40000000 0x08000000>;
	leds {
		enocean-blue {
			label = "duckbill:blue:enocean";
			gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
		};

	apb@80000000 {
		apbh@80000000 {
			ssp0: spi@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;
		enocean-red {
			label = "duckbill:red:enocean";
			gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
		};

			ssp2: spi@80014000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc2_4bit_pins_b
					&mmc2_cd_cfg &mmc2_sck_cfg_b>;
				bus-width = <4>;
				vmmc-supply = <&reg_3p3v>;
				status = "okay";
		enocean-green {
			label = "duckbill:green:enocean";
			gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
		};
	};

			pinctrl@80018000 {
	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
				pinctrl-0 = <&hog_pins_a>;
		pinctrl-0 = <&enocean_button>;

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						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>;
		key-enocean {
			label = "EnOcean";
			linux,code = <KEY_NEW>;
			gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
		};
	};

				mac0_phy_reset_pin: mac0-phy-reset@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@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>;
&i2c0 {
	status = "disabled";
};

				led_pins: leds@0 {
					reg = <0>;
&led_pins {
	fsl,pinmux-ids = <
		MX28_PAD_SAIF0_MCLK__GPIO_3_20
		MX28_PAD_SAIF0_LRCLK__GPIO_3_21
@@ -85,11 +54,9 @@ MX28_PAD_AUART0_CTS__GPIO_3_2
		MX28_PAD_I2C0_SCL__GPIO_3_24
		MX28_PAD_I2C0_SDA__GPIO_3_25
	>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
};

&pinctrl {
	enocean_button: enocean-button@0 {
		reg = <0>;
		fsl,pinmux-ids = <
@@ -100,114 +67,3 @@ MX28_PAD_AUART0_RTS__GPIO_3_3
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};
};
		};

		apbx@80040000 {
			lradc@80050000 {
				status = "okay";
			};

			auart0: serial@8006a000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart0_2pins_a>;
				status = "okay";
			};

			duart: serial@80074000 {
				pinctrl-names = "default";
				pinctrl-0 = <&duart_pins_a>;
				status = "okay";
			};

			usbphy0: usbphy@8007c000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb0: usb@80080000 {
			status = "okay";
			dr_mode = "peripheral";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
			phy-supply = <&reg_3p3v>;
			phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <25>;
			phy-handle = <&ethphy>;
			status = "okay";

			mdio {
				#address-cells = <1>;
				#size-cells = <0>;

				ethphy: ethernet-phy@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>;
				};
			};
		};
	};

	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>;

		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";
		};

		enocean-blue {
			label = "duckbill:blue:enocean";
			gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
		};

		enocean-red {
			label = "duckbill:red:enocean";
			gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
		};

		enocean-green {
			label = "duckbill:green:enocean";
			gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&enocean_button>;

		key-enocean {
			label = "EnOcean";
			linux,code = <KEY_NEW>;
			gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
		};
	};
};
+40 −171
Original line number Diff line number Diff line
@@ -5,9 +5,7 @@
 */

/dts-v1/;
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/gpio/gpio.h>
#include "imx28.dtsi"
#include "imx28-duckbill-2.dts"

/ {
	model = "I2SE Duckbill 2 SPI";
@@ -16,89 +14,17 @@ / {
	aliases {
		ethernet1 = &qca7000;
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0x40000000 0x08000000>;
	};

	apb@80000000 {
		apbh@80000000 {
			ssp0: spi@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;
			};

			ssp2: spi@80014000 {
				compatible = "fsl,imx28-spi";
				pinctrl-names = "default";
				pinctrl-0 = <&spi2_pins_a>;
				status = "okay";

				qca7000: ethernet@0 {
					reg = <0>;
					compatible = "qca,qca7000";
					pinctrl-names = "default";
					pinctrl-0 = <&qca7000_pins>;
					interrupt-parent = <&gpio3>;
					interrupts = <3 IRQ_TYPE_EDGE_RISING>;
					spi-cpha;
					spi-cpol;
					spi-max-frequency = <8000000>;
				};
};

			pinctrl@80018000 {
				pinctrl-names = "default";
				pinctrl-0 = <&hog_pins_a>;

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						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@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@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>;
&auart0 {
	status = "disabled";
};

				led_pins: led@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>;
&i2c0 {
	status = "disabled";
};

&pinctrl {
	qca7000_pins: qca7000@0 {
		reg = <0>;
		fsl,pinmux-ids = <
@@ -114,81 +40,24 @@ MX28_PAD_LCD_D21__GPIO_1_21 /* GPIO 3 */
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};
};
		};

		apbx@80040000 {
			lradc@80050000 {
				status = "okay";
			};

			duart: serial@80074000 {
				pinctrl-names = "default";
				pinctrl-0 = <&duart_pins_a>;
				status = "okay";
			};

			usbphy0: usbphy@8007c000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb0: usb@80080000 {
			status = "okay";
			dr_mode = "peripheral";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
&ssp2 {
	compatible = "fsl,imx28-spi";
	pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
			phy-supply = <&reg_3p3v>;
			phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <25>;
			phy-handle = <&ethphy>;
	pinctrl-0 = <&spi2_pins_a>;
	/delete-property/ bus-width;
	/delete-property/ vmmc-supply;
	status = "okay";

			mdio {
				#address-cells = <1>;
				#size-cells = <0>;

				ethphy: ethernet-phy@0 {
					compatible = "ethernet-phy-ieee802.3-c22";
	qca7000: ethernet@0 {
		reg = <0>;
		compatible = "qca,qca7000";
		pinctrl-names = "default";
					pinctrl-0 = <&mac0_phy_int_pin>;
					interrupt-parent = <&gpio0>;
					interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
					max-speed = <100>;
				};
			};
		};
	};

	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>;

		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";
		};
		pinctrl-0 = <&qca7000_pins>;
		interrupt-parent = <&gpio3>;
		interrupts = <3 IRQ_TYPE_EDGE_RISING>;
		spi-cpha;
		spi-cpol;
		spi-max-frequency = <8000000>;
	};
};