code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2012 Free Electrons
 */

/dts-v1/;
#include "imx28.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Crystalfontz CFA-10036 Board";
	compatible = "crystalfontz,cfa10036", "fsl,imx28";

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

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				ssd1306_cfa10036: ssd1306-10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP0_DATA7__GPIO_2_7
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				led_pins_cfa10036: leds-10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_AUART1_RX__GPIO_3_4
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				usb0_otg_cfa10036: otg-10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_RDY0__USB0_ID
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				mmc_pwr_cfa10036: mmc_pwr_cfa10036@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						0x31c3 /*
						MX28_PAD_PWM3__GPIO_3_28 */
					>;
					fsl,drive-strength = <0>;
					fsl,voltage = <1>;
					fsl,pull-up = <0>;
				};

			};

			ssp0: spi@80010000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc0_4bit_pins_a
					&mmc0_cd_cfg &mmc0_sck_cfg>;
				vmmc-supply = <&reg_vddio_sd0>;
				bus-width = <4>;
				status = "okay";
			};
		};

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

			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_b>;
				clock-frequency = <400000>;
				status = "okay";

				ssd1306: oled@3c {
					compatible = "solomon,ssd1306fb-i2c";
					pinctrl-names = "default";
					pinctrl-0 = <&ssd1306_cfa10036>;
					reg = <0x3c>;
					reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
					solomon,height = <32>;
					solomon,width = <128>;
					solomon,page-offset = <0>;
					solomon,com-lrremap;
					solomon,com-invdir;
					solomon,com-offset = <32>;
				};
			};

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

	ahb@80080000 {
		usb0: usb@80080000 {
			pinctrl-names = "default";
			pinctrl-0 = <&usb0_otg_cfa10036>;
			dr_mode = "peripheral";
			phy_type = "utmi";
			status = "okay";
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins_cfa10036>;

		power {
			gpios = <&gpio3 4 1>;
			default-state = "on";
		};
	};

	reg_vddio_sd0: vddio-sd0 {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&mmc_pwr_cfa10036>;
		regulator-name = "vddio-sd0";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 28 0>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2012 Free Electrons
 */

/*
 * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
 * need to include the CFA-10036 DTS.
 */
#include "imx28-cfa10036.dts"

/ {
	model = "Crystalfontz CFA-10037 Board";
	compatible = "crystalfontz,cfa10037", "crystalfontz,cfa10036", "fsl,imx28";

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				usb_pins_cfa10037: usb-10037@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_D07__GPIO_0_7
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				mac0_pins_cfa10037: mac0-10037@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SS2__GPIO_2_21
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};
		};

		apbx@80040000 {
			usbphy1: usbphy@8007e000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-0 = <&usb1_pins_a>;
			pinctrl-names = "default";
			status = "okay";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a
				&mac0_pins_cfa10037>;
			phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <100>;
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb1_vbus: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb_pins_cfa10037>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio0 7 1>;
		};
	};
};

repo_name: angery/linux


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2012 Free Electrons
 */

/*
 * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
 * need to include the CFA-10036 DTS.
 */
#include "imx28-cfa10036.dts"

/ {
	model = "Crystalfontz CFA-10049 Board";
	compatible = "crystalfontz,cfa10049", "crystalfontz,cfa10036", "fsl,imx28";

	i2cmux {
		compatible = "i2c-mux-gpio";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2cmux_pins_cfa10049>;
		mux-gpios = <&gpio1 22 0 &gpio1 23 0>;
		i2c-parent = <&i2c1>;

		i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;

			adc0: nau7802@2a {
				compatible = "nuvoton,nau7802";
				reg = <0x2a>;
				nuvoton,vldo = <3000>;
			};
		};

		i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;

			adc1: nau7802@2a {
				compatible = "nuvoton,nau7802";
				reg = <0x2a>;
				nuvoton,vldo = <3000>;
			};
		};

		i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;

				adc2: nau7802@2a {
				compatible = "nuvoton,nau7802";
				reg = <0x2a>;
				nuvoton,vldo = <3000>;
			};
		};

		i2c@3 {
			reg = <3>;
			#address-cells = <1>;
			#size-cells = <0>;

			pca9555: pca9555@20 {
				compatible = "nxp,pca9555";
				pinctrl-names = "default";
				pinctrl-0 = <&pca_pins_cfa10049>;
				interrupt-parent = <&gpio2>;
				interrupts = <19 0x2>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupt-controller;
				#interrupt-cells = <2>;
				reg = <0x20>;
			};
		};
	};

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				usb_pins_cfa10049: usb-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_D07__GPIO_0_7
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				i2cmux_pins_cfa10049: i2cmux-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D22__GPIO_1_22
						MX28_PAD_LCD_D23__GPIO_1_23
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				mac0_pins_cfa10049: mac0-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SS2__GPIO_2_21
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				pca_pins_cfa10049: pca-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SS0__GPIO_2_19
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				rotary_pins_cfa10049: rotary-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						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_ENABLE>;
				};

				rotary_btn_pins_cfa10049: rotary-btn-10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SAIF1_SDATA0__GPIO_3_26
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				spi2_pins_cfa10049: spi2-cfa10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SCK__GPIO_2_16
						MX28_PAD_SSP2_MOSI__GPIO_2_17
						MX28_PAD_SSP2_MISO__GPIO_2_18
						MX28_PAD_AUART1_TX__GPIO_3_5
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				spi3_pins_cfa10049: spi3-cfa10049@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_RDN__GPIO_0_24
						MX28_PAD_GPMI_RESETN__GPIO_0_28
						MX28_PAD_GPMI_CE1N__GPIO_0_17
						MX28_PAD_GPMI_ALE__GPIO_0_26
						MX28_PAD_GPMI_CLE__GPIO_0_27
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				lcdif_18bit_pins_cfa10049: lcdif-18bit@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D00__LCD_D0
						MX28_PAD_LCD_D01__LCD_D1
						MX28_PAD_LCD_D02__LCD_D2
						MX28_PAD_LCD_D03__LCD_D3
						MX28_PAD_LCD_D04__LCD_D4
						MX28_PAD_LCD_D05__LCD_D5
						MX28_PAD_LCD_D06__LCD_D6
						MX28_PAD_LCD_D07__LCD_D7
						MX28_PAD_LCD_D08__LCD_D8
						MX28_PAD_LCD_D09__LCD_D9
						MX28_PAD_LCD_D10__LCD_D10
						MX28_PAD_LCD_D11__LCD_D11
						MX28_PAD_LCD_D12__LCD_D12
						MX28_PAD_LCD_D13__LCD_D13
						MX28_PAD_LCD_D14__LCD_D14
						MX28_PAD_LCD_D15__LCD_D15
						MX28_PAD_LCD_D16__LCD_D16
						MX28_PAD_LCD_D17__LCD_D17
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10049: lcdif-evk@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RESET__GPIO_3_30
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				w1_gpio_pins: w1-gpio@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D21__GPIO_1_21
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_18bit_pins_cfa10049
					     &lcdif_pins_cfa10049
					     &lcdif_pins_cfa10049_pullup>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <18>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <9216000>;
							hactive = <320>;
							vactive = <480>;
							hback-porch = <2>;
							hfront-porch = <2>;
							vback-porch = <2>;
							vfront-porch = <2>;
							hsync-len = <15>;
							vsync-len = <15>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};

		apbx@80040000 {
			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm3_pins_b>;
				status = "okay";
			};

			i2c1: i2c@8005a000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c1_pins_a>;
				status = "okay";
			};

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};

			lradc@80050000 {
				status = "okay";
				fsl,lradc-touchscreen-wires = <4>;
			};
		};
	};

	ahb@80080000 {
		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-0 = <&usb1_pins_a>;
			pinctrl-names = "default";
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb1_vbus: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb_pins_cfa10049>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio0 7 1>;
		};
	};

	ahb@80080000 {
		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a
				&mac0_pins_cfa10049>;
			phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <100>;
			status = "okay";
		};
	};

	spi-2 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&spi2_pins_cfa10049>;
		status = "okay";
		gpio-sck = <&gpio2 16 0>;
		gpio-mosi = <&gpio2 17 0>;
		gpio-miso = <&gpio2 18 0>;
		cs-gpios = <&gpio3 5 0>;
		num-chipselects = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		hx8357: hx8357@0 {
			compatible = "himax,hx8357b", "himax,hx8357";
			reg = <0>;
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;
			gpios-reset = <&gpio3 30 0>;
			im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>;
		};
	};

	spi-3 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&spi3_pins_cfa10049>;
		status = "okay";
		gpio-sck = <&gpio0 24 0>;
		gpio-mosi = <&gpio0 28 0>;
		cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>;
		num-chipselects = <3>;
		#address-cells = <1>;
		#size-cells = <0>;

		gpio5: gpio5@0 {
			compatible = "fairchild,74hc595";
			gpio-controller;
			#gpio-cells = <2>;
			reg = <0>;
			registers-number = <2>;
			spi-max-frequency = <100000>;
		};

		gpio6: gpio6@1 {
			compatible = "fairchild,74hc595";
			gpio-controller;
			#gpio-cells = <2>;
			reg = <1>;
			registers-number = <4>;
			spi-max-frequency = <100000>;
		};

		dac0: dh2228@2 {
			compatible = "rohm,dh2228fv";
			reg = <2>;
			spi-max-frequency = <100000>;
		};
	};

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

		rotary-button {
			label = "rotary_button";
			gpios = <&gpio3 26 1>;
			debounce-interval = <10>;
			linux,code = <28>;
		};
	};

	rotary {
		compatible = "rotary-encoder";
		pinctrl-names = "default";
		pinctrl-0 = <&rotary_pins_cfa10049>;
		gpios = <&gpio3 24 1>, <&gpio3 25 1>;
		linux,axis = <1>; /* REL_Y */
		rotary-encoder,relative-axis;
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 3 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;

	};

	onewire {
		compatible = "w1-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&w1_gpio_pins>;
		status = "okay";
		gpios = <&gpio1 21 0>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Crystalfontz America, Inc.
 * 				  Free Electrons
 */

/*
 * The CFA-10055 is an expansion board for the CFA-10036 module and
 * CFA-10037, thus we need to include the CFA-10037 DTS.
 */
#include "imx28-cfa10037.dts"

/ {
	model = "Crystalfontz CFA-10055 Board";
	compatible = "crystalfontz,cfa10055", "crystalfontz,cfa10037", "crystalfontz,cfa10036", "fsl,imx28";

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				spi2_pins_cfa10055: spi2-cfa10055@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SCK__GPIO_2_16
						MX28_PAD_SSP2_MOSI__GPIO_2_17
						MX28_PAD_SSP2_MISO__GPIO_2_18
						MX28_PAD_AUART1_TX__GPIO_3_5
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				lcdif_18bit_pins_cfa10055: lcdif-18bit@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D00__LCD_D0
						MX28_PAD_LCD_D01__LCD_D1
						MX28_PAD_LCD_D02__LCD_D2
						MX28_PAD_LCD_D03__LCD_D3
						MX28_PAD_LCD_D04__LCD_D4
						MX28_PAD_LCD_D05__LCD_D5
						MX28_PAD_LCD_D06__LCD_D6
						MX28_PAD_LCD_D07__LCD_D7
						MX28_PAD_LCD_D08__LCD_D8
						MX28_PAD_LCD_D09__LCD_D9
						MX28_PAD_LCD_D10__LCD_D10
						MX28_PAD_LCD_D11__LCD_D11
						MX28_PAD_LCD_D12__LCD_D12
						MX28_PAD_LCD_D13__LCD_D13
						MX28_PAD_LCD_D14__LCD_D14
						MX28_PAD_LCD_D15__LCD_D15
						MX28_PAD_LCD_D16__LCD_D16
						MX28_PAD_LCD_D17__LCD_D17
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10055: lcdif-evk@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10055_pullup: lcdif-10055-pullup@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RESET__GPIO_3_30
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_18bit_pins_cfa10055
					     &lcdif_pins_cfa10055
					     &lcdif_pins_cfa10055_pullup>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <18>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <9216000>;
							hactive = <320>;
							vactive = <480>;
							hback-porch = <2>;
							hfront-porch = <2>;
							vback-porch = <2>;
							vfront-porch = <2>;
							hsync-len = <15>;
							vsync-len = <15>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};

		apbx@80040000 {
			lradc@80050000 {
				fsl,lradc-touchscreen-wires = <4>;
				status = "okay";
			};

			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm3_pins_b>;
				status = "okay";
			};
		};
	};

	spi-2 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&spi2_pins_cfa10055>;
		status = "okay";
		gpio-sck = <&gpio2 16 0>;
		gpio-mosi = <&gpio2 17 0>;
		gpio-miso = <&gpio2 18 0>;
		cs-gpios = <&gpio3 5 0>;
		num-chipselects = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		hx8357: hx8357@0 {
			compatible = "himax,hx8357b", "himax,hx8357";
			reg = <0>;
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;
			gpios-reset = <&gpio3 30 0>;
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 3 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Free Electrons
 */

/*
 * The CFA-10055 is an expansion board for the CFA-10036 module and
 * CFA-10037, thus we need to include the CFA-10037 DTS.
 */
#include "imx28-cfa10037.dts"

/ {
	model = "Crystalfontz CFA-10056 Board";
	compatible = "crystalfontz,cfa10056", "crystalfontz,cfa10037", "crystalfontz,cfa10036", "fsl,imx28";

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				spi2_pins_cfa10056: spi2-cfa10056@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SCK__GPIO_2_16
						MX28_PAD_SSP2_MOSI__GPIO_2_17
						MX28_PAD_SSP2_MISO__GPIO_2_18
						MX28_PAD_AUART1_TX__GPIO_3_5
					>;
					fsl,drive-strength = <MXS_DRIVE_8mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};

				lcdif_pins_cfa10056: lcdif-10056@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10056_pullup: lcdif-10056-pullup@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RESET__GPIO_3_30
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_ENABLE>;
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_24bit_pins_a
						&lcdif_pins_cfa10056
						&lcdif_pins_cfa10056_pullup >;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <24>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <32000000>;
							hactive = <480>;
							vactive = <800>;
							hback-porch = <2>;
							hfront-porch = <2>;
							vback-porch = <2>;
							vfront-porch = <2>;
							hsync-len = <5>;
							vsync-len = <5>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};
	};

	spi-2 {
		compatible = "spi-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&spi2_pins_cfa10056>;
		status = "okay";
		gpio-sck = <&gpio2 16 0>;
		gpio-mosi = <&gpio2 17 0>;
		gpio-miso = <&gpio2 18 0>;
		cs-gpios = <&gpio3 5 0>;
		num-chipselects = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		hx8369: hx8369@0 {
			compatible = "himax,hx8369a", "himax,hx8369";
			reg = <0>;
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;
			gpios-reset = <&gpio3 30 0>;
		};
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Crystalfontz America, Inc.
 * Copyright 2012 Free Electrons
 */

/*
 * The CFA-10057 is an expansion board for the CFA-10036 module, thus we
 * need to include the CFA-10036 DTS.
 */
#include "imx28-cfa10036.dts"

/ {
	model = "Crystalfontz CFA-10057 Board";
	compatible = "crystalfontz,cfa10057", "crystalfontz,cfa10036", "fsl,imx28";

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				usb_pins_cfa10057: usb-10057@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_D07__GPIO_0_7
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_18bit_pins_cfa10057: lcdif-18bit@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_D00__LCD_D0
						MX28_PAD_LCD_D01__LCD_D1
						MX28_PAD_LCD_D02__LCD_D2
						MX28_PAD_LCD_D03__LCD_D3
						MX28_PAD_LCD_D04__LCD_D4
						MX28_PAD_LCD_D05__LCD_D5
						MX28_PAD_LCD_D06__LCD_D6
						MX28_PAD_LCD_D07__LCD_D7
						MX28_PAD_LCD_D08__LCD_D8
						MX28_PAD_LCD_D09__LCD_D9
						MX28_PAD_LCD_D10__LCD_D10
						MX28_PAD_LCD_D11__LCD_D11
						MX28_PAD_LCD_D12__LCD_D12
						MX28_PAD_LCD_D13__LCD_D13
						MX28_PAD_LCD_D14__LCD_D14
						MX28_PAD_LCD_D15__LCD_D15
						MX28_PAD_LCD_D16__LCD_D16
						MX28_PAD_LCD_D17__LCD_D17
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10057: lcdif-evk@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_18bit_pins_cfa10057
					     &lcdif_pins_cfa10057>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <18>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <30000000>;
							hactive = <480>;
							vactive = <800>;
							hfront-porch = <12>;
							hback-porch = <2>;
							vfront-porch = <5>;
							vback-porch = <3>;
							hsync-len = <2>;
							vsync-len = <2>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};

		apbx@80040000 {
			lradc@80050000 {
				fsl,lradc-touchscreen-wires = <4>;
				status = "okay";
			};

			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm4_pins_a>;
				status = "okay";
			};

			i2c1: i2c@8005a000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c1_pins_a>;
				status = "okay";
			};

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-0 = <&usb1_pins_a>;
			pinctrl-names = "default";
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb1_vbus: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb_pins_cfa10057>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio0 7 1>;
		};
	};

	ahb@80080000 {
		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>;
			phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <100>;
			status = "okay";
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 4 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <7>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Crystalfontz America, Inc.
 * Copyright 2013 Free Electrons
 */

/*
 * The CFA-10058 is an expansion board for the CFA-10036 module, thus we
 * need to include the CFA-10036 DTS.
 */
#include "imx28-cfa10036.dts"

/ {
	model = "Crystalfontz CFA-10058 Board";
	compatible = "crystalfontz,cfa10058", "crystalfontz,cfa10036", "fsl,imx28";

	apb@80000000 {
		apbh@80000000 {
			pinctrl@80018000 {
				usb_pins_cfa10058: usb-10058@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_D07__GPIO_0_7
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_cfa10058: lcdif-10058@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_24bit_pins_a
						 &lcdif_pins_cfa10058>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <24>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <30000000>;
							hactive = <800>;
							vactive = <480>;
							hback-porch = <40>;
							hfront-porch = <40>;
							vback-porch = <13>;
							vfront-porch = <29>;
							hsync-len = <8>;
							vsync-len = <8>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};

		apbx@80040000 {
			lradc@80050000 {
				fsl,lradc-touchscreen-wires = <4>;
				status = "okay";
			};

			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm3_pins_b>;
				status = "okay";
			};

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-0 = <&usb1_pins_a>;
			pinctrl-names = "default";
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb1_vbus: regulator@0 {
			pinctrl-names = "default";
			pinctrl-0 = <&usb_pins_cfa10058>;
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio0 7 1>;
		};
	};

	ahb@80080000 {
		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>;
			phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <100>;
			status = "okay";
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 3 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
 * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de>
 */

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

/ {
	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;
			};

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

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

				led_pins: leds@0 {
					reg = <0>;
					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>;
		};
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
 * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de>
 */

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

/ {
	model = "I2SE Duckbill 2 EnOcean";
	compatible = "i2se,duckbill-2-enocean", "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;
			};

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

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

				led_pins: leds@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SAIF0_MCLK__GPIO_3_20
						MX28_PAD_SAIF0_LRCLK__GPIO_3_21
						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>;
				};

				enocean_button: enocean-button@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_AUART0_RTS__GPIO_3_3
					>;
					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";
		};

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


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
 * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de>
 */

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

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

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

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

				qca7000_pins: qca7000@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_AUART0_RTS__GPIO_3_3    /* Interrupt */
						MX28_PAD_LCD_D13__GPIO_1_13      /* QCA7K reset */
						MX28_PAD_LCD_D14__GPIO_1_14      /* GPIO 0 */
						MX28_PAD_LCD_D15__GPIO_1_15      /* GPIO 1 */
						MX28_PAD_LCD_D18__GPIO_1_18      /* GPIO 2 */
						MX28_PAD_LCD_D21__GPIO_1_21      /* GPIO 3 */
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					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";
			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";
		};
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
 * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de>
 */

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

/ {
	model = "I2SE Duckbill 2";
	compatible = "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;
			};

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

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

				led_pins: leds@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>;
				};
			};
		};

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

			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_a>;
				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";
		};
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2013-2014,2016 Michael Heimpold <mhei@heimpold.de>
 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
 */

/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include "imx28.dtsi"

/ {
	model = "I2SE Duckbill";
	compatible = "i2se,duckbill", "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_4bit_pins_a
					&mmc0_cd_cfg &mmc0_sck_cfg>;
				bus-width = <4>;
				vmmc-supply = <&reg_3p3v>;
				status = "okay";
			};

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

			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_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: leds@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@80040000 {
			lradc@80050000 {
				status = "okay";
			};

			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_a>;
				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 = <&gpio2 7 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <25>;
			status = "okay";
		};
	};

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


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Eukréa Electromatique <eric@eukrea.com>
 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
 */

/*
 * Module contains : i.MX282 + 64MB DDR2 + NAND + Ethernet PHY + RTC
 */

/dts-v1/;
#include "imx28-eukrea-mbmx28lc.dtsi"

/ {
	model = "Eukrea Electromatique MBMX283LC";
	compatible = "eukrea,mbmx283lc", "eukrea,mbmx28lc", "fsl,imx28";

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

&gpmi {
	pinctrl-names = "default";
	pinctrl-0 = <&gpmi_pins_a>;
	status = "okay";
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins_a>;
	status = "okay";

	pcf8563: rtc@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
	};
};

&mac0 {
	phy-mode = "rmii";
	pinctrl-names = "default";
	pinctrl-0 = <&mac0_pins_a>;
	phy-reset-gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&pinctrl{
	pinctrl-names = "default";
	pinctrl-0 = <&hog_pins_cpuimx283>;

	hog_pins_cpuimx283: hog-cpuimx283@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_ENET0_RX_CLK__GPIO_4_13
			MX28_PAD_ENET0_TX_CLK__GPIO_4_5
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_ENABLE>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Eukréa Electromatique <eric@eukrea.com>
 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
 */

/*
 * Module contains : i.MX287 + 128MB DDR2 + NAND + 2 x Ethernet PHY + RTC
 */

#include "imx28-eukrea-mbmx283lc.dts"

/ {
	model = "Eukrea Electromatique MBMX287LC";
	compatible = "eukrea,mbmx287lc", "eukrea,mbmx283lc", "eukrea,mbmx28lc", "fsl,imx28";

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

&mac1 {
	phy-mode = "rmii";
	pinctrl-names = "default";
	pinctrl-0 = <&mac1_pins_a>;
	phy-reset-gpios = <&gpio3 27 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&pinctrl {
	pinctrl-names = "default";
	pinctrl-0 = <&hog_pins_cpuimx283 &hog_pins_cpuimx287>;
	hog_pins_cpuimx287: hog-cpuimx287@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_SPDIF__GPIO_3_27
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_ENABLE>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2013 Eukréa Electromatique <eric@eukrea.com>
 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
 */

#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include "imx28.dtsi"

/ {
	model = "Eukrea Electromatique MBMX28LC";
	compatible = "eukrea,mbmx28lc", "fsl,imx28";

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 4 1000000>;
		brightness-levels = <0 25 50 75 100 125 150 175 200 225 255>;
		default-brightness-level = <10>;
	};

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

		switch-sw3 {
			label = "SW3";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_MISC>;
			wakeup-source;
		};
	};

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

		switch-sw4 {
			label = "SW4";
			gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_MISC>;
			wakeup-source;
		};
	};

	led-d6 {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_d6_pins_mbmx28lc>;

		led1 {
			label = "d6";
			gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};
	};

	led-d7 {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_d7_pins_mbmx28lc>;

		led1 {
			label = "d7";
			gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-on";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_3p3v: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "3P3V";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};

		reg_lcd_3v3: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			pinctrl-names = "default";
			pinctrl-0 = <&reg_lcd_3v3_pins_mbmx28lc>;
			regulator-name = "lcd-3v3";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};

		reg_usb0_vbus: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			pinctrl-names = "default";
			pinctrl-0 = <&reg_usb0_vbus_pins_mbmx28lc>;
			regulator-name = "usb0_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};

		reg_usb1_vbus: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			pinctrl-names = "default";
			pinctrl-0 = <&reg_usb1_vbus_pins_mbmx28lc>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio1 19 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};
	};

	sound {
		compatible = "fsl,imx28-mbmx28lc-sgtl5000",
			     "fsl,mxs-audio-sgtl5000";
		model = "imx28-mbmx28lc-sgtl5000";
		saif-controllers = <&saif0 &saif1>;
		audio-codec = <&sgtl5000>;
	};
};

&duart {
	pinctrl-names = "default";
	pinctrl-0 = <&duart_4pins_a>;
	status = "okay";
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins_a>;
	status = "okay";

	sgtl5000: codec@a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		#sound-dai-cells = <0>;
		VDDA-supply = <&reg_3p3v>;
		VDDIO-supply = <&reg_3p3v>;
		clocks = <&saif0>;
	};
};

&lcdif {
	pinctrl-names = "default";
	pinctrl-0 = <&lcdif_18bit_pins_a &lcdif_pins_mbmx28lc>;
	lcd-supply = <&reg_lcd_3v3>;
	display = <&display0>;
	status = "okay";

	display0: display0 {
		model = "43WVF1G-0";
		bits-per-pixel = <16>;
		bus-width = <18>;

		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
				clock-frequency = <9072000>;
				hactive = <480>;
				vactive = <272>;
				hback-porch = <10>;
				hfront-porch = <5>;
				vback-porch = <8>;
				vfront-porch = <8>;
				hsync-len = <40>;
				vsync-len = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <1>;
			};
		};
	};
};

&lradc {
	fsl,lradc-touchscreen-wires = <4>;
	status = "okay";
};

&pinctrl {
	gpio_button_sw3_pins_mbmx28lc: gpio-button-sw3-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_D21__GPIO_1_21
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	gpio_button_sw4_pins_mbmx28lc: gpio-button-sw4-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_D20__GPIO_1_20
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	lcdif_pins_mbmx28lc: lcdif-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_VSYNC__LCD_VSYNC
			MX28_PAD_LCD_HSYNC__LCD_HSYNC
			MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
			MX28_PAD_LCD_ENABLE__LCD_ENABLE
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	led_d6_pins_mbmx28lc: led-d6-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_D23__GPIO_1_23
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	led_d7_pins_mbmx28lc: led-d7-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_D22__GPIO_1_22
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	reg_lcd_3v3_pins_mbmx28lc: lcd-3v3-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_RESET__GPIO_3_30
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	reg_usb0_vbus_pins_mbmx28lc: reg-usb0-vbus-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_D18__GPIO_1_18
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	reg_usb1_vbus_pins_mbmx28lc: reg-usb1-vbus-mbmx28lc@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_LCD_D19__GPIO_1_19
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pwm4_pins_a>;
	status = "okay";
};

&saif0 {
	pinctrl-names = "default";
	pinctrl-0 = <&saif0_pins_a>;
	status = "okay";
};

&saif1 {
	pinctrl-names = "default";
	pinctrl-0 = <&saif1_pins_a>;
	fsl,saif-master = <&saif0>;
	status = "okay";
};

&ssp0 {
	compatible = "fsl,imx28-mmc";
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_cd_cfg &mmc0_sck_cfg>;
	bus-width = <4>;
	cd-inverted;
	status = "okay";
};

&usb0 {
	disable-over-current;
	vbus-supply = <&reg_usb0_vbus>;
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&usb0_id_pins_b>;
};

&usb1 {
	vbus-supply = <&reg_usb1_vbus>;
	status = "okay";
};

&usbphy0 {
	status = "okay";
};

&usbphy1 {
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0+
//
// Copyright 2012 Freescale Semiconductor, Inc.

/dts-v1/;
#include "imx28.dtsi"

/ {
	model = "Freescale i.MX28 Evaluation Kit";
	compatible = "fsl,imx28-evk", "fsl,imx28";

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

	reg_3p3v: regulator-3p3v {
		compatible = "regulator-fixed";
		regulator-name = "3P3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	reg_vddio_sd0: regulator-vddio-sd0 {
		compatible = "regulator-fixed";
		regulator-name = "vddio-sd0";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 28 0>;
	};

	reg_fec_3v3: regulator-fec-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "fec-3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio2 15 0>;
	};

	reg_usb0_vbus: regulator-usb0-vbus {
		compatible = "regulator-fixed";
		regulator-name = "usb0_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio3 9 0>;
		enable-active-high;
	};

	reg_usb1_vbus: regulator-usb1-vbus {
		compatible = "regulator-fixed";
		regulator-name = "usb1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio3 8 0>;
		enable-active-high;
	};

	reg_lcd_3v3: regulator-lcd-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "lcd-3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 30 0>;
		enable-active-high;
	};

	reg_can_3v3: regulator-can-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "can-3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio2 13 0>;
		enable-active-high;
	};

	reg_lcd_5v: regulator-lcd-5v {
		compatible = "regulator-fixed";
		regulator-name = "lcd-5v";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	panel {
		compatible = "sii,43wvf1g";
		backlight = <&backlight_display>;
		dvdd-supply = <&reg_lcd_3v3>;
		avdd-supply = <&reg_lcd_5v>;

		port {
			panel_in: endpoint {
				remote-endpoint = <&display_out>;
			};
		};
	};

	apb@80000000 {
		apbh@80000000 {
			nand-controller@8000c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg
					     &gpmi_pins_evk>;
				status = "okay";
			};

			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>;
				wp-gpios = <&gpio2 12 0>;
				vmmc-supply = <&reg_vddio_sd0>;
				status = "okay";
			};

			ssp1: spi@80012000 {
				compatible = "fsl,imx28-mmc";
				bus-width = <8>;
				wp-gpios = <&gpio0 28 0>;
			};

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

				flash: flash@0 {
					#address-cells = <1>;
					#size-cells = <1>;
					compatible = "sst,sst25vf016b", "jedec,spi-nor";
					spi-max-frequency = <40000000>;
					reg = <0>;
				};
			};

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

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP1_CMD__GPIO_2_13
						MX28_PAD_SSP1_DATA3__GPIO_2_15
						MX28_PAD_ENET0_RX_CLK__GPIO_4_13
						MX28_PAD_SSP1_SCK__GPIO_2_12
						MX28_PAD_PWM3__GPIO_3_28
						MX28_PAD_LCD_RESET__GPIO_3_30
						MX28_PAD_AUART2_RX__GPIO_3_8
						MX28_PAD_AUART2_TX__GPIO_3_9
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				led_pin_gpio3_5: led_gpio3_5@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_AUART1_TX__GPIO_3_5
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				gpmi_pins_evk: gpmi-nand-evk@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_GPMI_CE1N__GPMI_CE1N
						MX28_PAD_GPMI_RDY1__GPMI_READY1
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_evk: lcdif-evk@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_RD_E__LCD_VSYNC
						MX28_PAD_LCD_WR_RWN__LCD_HSYNC
						MX28_PAD_LCD_RS__LCD_DOTCLK
						MX28_PAD_LCD_CS__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_24bit_pins_a
					     &lcdif_pins_evk>;
				status = "okay";

				port {
					display_out: endpoint {
						remote-endpoint = <&panel_in>;
					};
				};
			};

			can0: can@80032000 {
				pinctrl-names = "default";
				pinctrl-0 = <&can0_pins_a>;
				xceiver-supply = <&reg_can_3v3>;
				status = "okay";
			};

			can1: can@80034000 {
				pinctrl-names = "default";
				pinctrl-0 = <&can1_pins_a>;
				xceiver-supply = <&reg_can_3v3>;
				status = "okay";
			};
		};

		apbx@80040000 {
			saif0: saif@80042000 {
				pinctrl-names = "default";
				pinctrl-0 = <&saif0_pins_a>;
				status = "okay";
			};

			saif1: saif@80046000 {
				pinctrl-names = "default";
				pinctrl-0 = <&saif1_pins_a>;
				fsl,saif-master = <&saif0>;
				status = "okay";
			};

			lradc@80050000 {
				status = "okay";
				fsl,lradc-touchscreen-wires = <4>;
				fsl,ave-ctrl = <4>;
				fsl,ave-delay = <2>;
				fsl,settling = <10>;
			};

			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_a>;
				status = "okay";

				sgtl5000: codec@a {
					compatible = "fsl,sgtl5000";
					reg = <0x0a>;
					#sound-dai-cells = <0>;
					VDDA-supply = <&reg_3p3v>;
					VDDIO-supply = <&reg_3p3v>;
					clocks = <&saif0>;
				};

				at24@51 {
					compatible = "atmel,24c32";
					pagesize = <32>;
					reg = <0x51>;
				};
			};

			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm2_pins_a>;
				status = "okay";
			};

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

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

			auart3: serial@80070000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart3_pins_a>;
				status = "okay";
			};

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

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb0: usb@80080000 {
			pinctrl-names = "default";
			pinctrl-0 = <&usb0_id_pins_a>;
			vbus-supply = <&reg_usb0_vbus>;
			status = "okay";
		};

		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			status = "okay";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>;
			phy-supply = <&reg_fec_3v3>;
			phy-reset-gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <100>;
			status = "okay";
		};

		mac1: ethernet@800f4000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac1_pins_a>;
			status = "okay";
		};
	};

	sound {
		compatible = "fsl,imx28-evk-sgtl5000",
			     "fsl,mxs-audio-sgtl5000";
		model = "imx28-evk-sgtl5000";
		saif-controllers = <&saif0 &saif1>;
		audio-codec = <&sgtl5000>;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pin_gpio3_5>;

		user {
			label = "Heartbeat";
			gpios = <&gpio3 5 0>;
			linux,default-trigger = "heartbeat";
		};
	};

	backlight_display: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 2 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright 2021
 * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
 */

/dts-v1/;
#include "imx28.dtsi"

/ {
	aliases {
		spi2 = &ssp3;
	};

	chosen {
		bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1";
	};

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

	reg_3v3: regulator-reg-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	reg_usb_5v: regulator-reg-usb-5v {
		compatible = "regulator-fixed";
		regulator-name = "usb_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	reg_fec_3v3: regulator-reg-fec-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "fec-phy";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};
};

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

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins_a>;
	status = "okay";
};

&saif0 {
	pinctrl-names = "default";
	pinctrl-0 = <&saif0_pins_a>;
	#sound-dai-cells = <0>;
	assigned-clocks = <&clks 53>;
	assigned-clock-rates = <12000000>;
	status = "okay";
};

&saif1 {
	pinctrl-names = "default";
	pinctrl-0 = <&saif1_pins_a>;
	fsl,saif-master = <&saif0>;
	#sound-dai-cells = <0>;
	status = "okay";
};

&spi3_pins_a {
	fsl,pinmux-ids = <
		MX28_PAD_AUART2_RX__SSP3_D4
		MX28_PAD_AUART2_TX__SSP3_D5
		MX28_PAD_SSP3_SCK__SSP3_SCK
		MX28_PAD_SSP3_MOSI__SSP3_CMD
		MX28_PAD_SSP3_MISO__SSP3_D0
		MX28_PAD_SSP3_SS0__SSP3_D3
		MX28_PAD_AUART2_TX__GPIO_3_9
	>;
};

&ssp0 {
	compatible = "fsl,imx28-mmc";
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_8bit_pins_a>;
	bus-width = <8>;
	vmmc-supply = <&reg_3v3>;
	non-removable;
	status = "okay";
};

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

&ssp3 {
	compatible = "fsl,imx28-spi";
	pinctrl-names = "default";
	pinctrl-0 = <&spi3_pins_a>;
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		spi-max-frequency = <40000000>;
		reg = <0>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "u-boot";
				reg = <0 0x80000>;
				read-only;
			};

			partition@80000 {
				label = "env0";
				reg = <0x80000 0x10000>;
			};

			partition@90000 {
				label = "env1";
				reg = <0x90000 0x10000>;
			};

			partition@100000 {
				label = "kernel";
				reg = <0x100000 0x400000>;
			};

			partition@500000 {
				label = "swupdate";
				reg = <0x500000 0x800000>;
			};
		};
	};
};

&usb0 {
	vbus-supply = <&reg_usb_5v>;
	pinctrl-names = "default";
	pinctrl-0 = <&usb0_pins_b>, <&usb0_id_pins_a>;
	dr_mode = "host";
	status = "okay";
};

&usbphy0 {
	status = "okay";
};

&usb1 {
	vbus-supply = <&reg_usb_5v>;
	pinctrl-names = "default";
	pinctrl-0 = <&usb1_pins_b>;
	dr_mode = "host";
	status = "okay";
};

&usbphy1 {
	status = "okay";
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2014 Marek Vasut <marex@denx.de>
 */

#include "imx28.dtsi"

/ {
	model = "Aries/DENX M28";
	compatible = "aries,m28", "denx,m28", "fsl,imx28";

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

	apb@80000000 {
		apbh@80000000 {
			nand-controller@8000c000 {
				#address-cells = <1>;
				#size-cells = <1>;
				pinctrl-names = "default";
				pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
				status = "okay";
			};
		};

		apbx@80040000 {
			i2c0: i2c@80058000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins_a>;
				status = "okay";

				rtc: rtc@68 {
					compatible = "st,m41t62";
					reg = <0x68>;
				};
			};
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_3p3v: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "3P3V";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2013 Marek Vasut <marex@denx.de>
 */

/dts-v1/;
#include "imx28.dtsi"

/ {
	model = "MSR M28CU3";
	compatible = "msr,m28cu3", "fsl,imx28";

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

	apb@80000000 {
		apbh@80000000 {
			nand-controller@8000c000 {
				#address-cells = <1>;
				#size-cells = <1>;
				pinctrl-names = "default";
				pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
				status = "okay";

				partition@0 {
					label = "gpmi-nfc-0-boot";
					reg = <0x00000000 0x01400000>;
					read-only;
				};

				partition@1 {
					label = "gpmi-nfc-general-use";
					reg = <0x01400000 0x0ec00000>;
				};
			};

			ssp0: spi@80010000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc0_4bit_pins_a
					     &mmc0_cd_cfg
					     &mmc0_sck_cfg>;
				bus-width = <4>;
				vmmc-supply = <&reg_vddio_sd0>;
				status = "okay";
			};

			ssp2: spi@80014000 {
				compatible = "fsl,imx28-mmc";
				pinctrl-names = "default";
				pinctrl-0 = <&mmc2_4bit_pins_a
					     &mmc2_cd_cfg
					     &mmc2_sck_cfg_a>;
				bus-width = <4>;
				vmmc-supply = <&reg_vddio_sd1>;
				status = "okay";
			};

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

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP2_SS0__GPIO_2_19
						MX28_PAD_PWM4__GPIO_3_29
						MX28_PAD_AUART2_RX__GPIO_3_8
						MX28_PAD_ENET0_RX_CLK__GPIO_4_13
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_m28: lcdif-m28@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_VSYNC__LCD_VSYNC
						MX28_PAD_LCD_HSYNC__LCD_HSYNC
						MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
						MX28_PAD_LCD_RESET__LCD_RESET
						MX28_PAD_LCD_CS__LCD_ENABLE
						MX28_PAD_AUART1_TX__GPIO_3_5
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				led_pins_gpio: leds-m28@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_SSP3_MISO__GPIO_2_26
						MX28_PAD_SSP3_SCK__GPIO_2_24
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};

			ocotp@8002c000 {
				status = "okay";
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_24bit_pins_a
					     &lcdif_pins_m28>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <32>;
					bus-width = <24>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <6410256>;
							hactive = <320>;
							vactive = <240>;
							hback-porch = <38>;
							hfront-porch = <20>;
							vback-porch = <15>;
							vfront-porch = <5>;
							hsync-len = <30>;
							vsync-len = <3>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};
		};

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

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};

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

			auart3: serial@80070000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart3_2pins_b>;
				status = "okay";
			};

			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm3_pins_a>;
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb1_pins_a>;
			disable-over-current;
			status = "okay";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>;
			phy-reset-gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;
			phy-reset-duration = <100>;
			status = "okay";
		};

		mac1: ethernet@800f4000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac1_pins_a>;
			status = "okay";
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 3 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins_gpio>;

		user1 {
			label = "sd0-led";
			gpios = <&gpio2 26 0>;
			linux,default-trigger = "mmc0";
		};

		user2 {
			label = "sd1-led";
			gpios = <&gpio2 24 0>;
			linux,default-trigger = "mmc2";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_3p3v: regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			regulator-name = "3P3V";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};

		reg_vddio_sd0: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "vddio-sd0";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio3 29 0>;
		};

		reg_vddio_sd1: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			regulator-name = "vddio-sd1";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio2 19 0>;
		};

		reg_usb1_vbus: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio3 8 0>;
			enable-active-high;
		};
	};
};


code:
// SPDX-License-Identifier: GPL-2.0-or-later
/*

 * Copyright (C) 2012 Marek Vasut <marex@denx.de>
 */

/dts-v1/;
#include "imx28-m28.dtsi"

/ {
	model = "Aries/DENX M28EVK";
	compatible = "aries,m28evk", "denx,m28evk", "fsl,imx28";

	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>;
				wp-gpios = <&gpio3 10 0>;
				vmmc-supply = <&reg_vddio_sd0>;
				status = "okay";
			};

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

				flash: flash@0 {
					#address-cells = <1>;
					#size-cells = <1>;
					compatible = "m25p80", "jedec,spi-nor";
					spi-max-frequency = <40000000>;
					reg = <0>;
				};
			};

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

				hog_pins_a: hog@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_PWM3__GPIO_3_28
						MX28_PAD_AUART2_CTS__GPIO_3_10
						MX28_PAD_AUART2_RTS__GPIO_3_11
						MX28_PAD_AUART3_RX__GPIO_3_12
						MX28_PAD_AUART3_TX__GPIO_3_13
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};

				lcdif_pins_m28: lcdif-m28@0 {
					reg = <0>;
					fsl,pinmux-ids = <
						MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
						MX28_PAD_LCD_ENABLE__LCD_ENABLE
					>;
					fsl,drive-strength = <MXS_DRIVE_4mA>;
					fsl,voltage = <MXS_VOLTAGE_HIGH>;
					fsl,pull-up = <MXS_PULL_DISABLE>;
				};
			};

			lcdif@80030000 {
				pinctrl-names = "default";
				pinctrl-0 = <&lcdif_24bit_pins_a
					     &lcdif_pins_m28>;
				display = <&display0>;
				status = "okay";

				display0: display0 {
					bits-per-pixel = <16>;
					bus-width = <18>;

					display-timings {
						native-mode = <&timing0>;
						timing0: timing0 {
							clock-frequency = <33260000>;
							hactive = <800>;
							vactive = <480>;
							hback-porch = <0>;
							hfront-porch = <256>;
							vback-porch = <0>;
							vfront-porch = <45>;
							hsync-len = <1>;
							vsync-len = <1>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <1>;
							pixelclk-active = <1>;
						};
					};
				};
			};

			can0: can@80032000 {
				pinctrl-names = "default";
				pinctrl-0 = <&can0_pins_a>;
				status = "okay";
			};

			can1: can@80034000 {
				pinctrl-names = "default";
				pinctrl-0 = <&can1_pins_a>;
				status = "okay";
			};
		};

		apbx@80040000 {
			saif0: saif@80042000 {
				pinctrl-names = "default";
				pinctrl-0 = <&saif0_pins_a>;
				status = "okay";
			};

			saif1: saif@80046000 {
				pinctrl-names = "default";
				pinctrl-0 = <&saif1_pins_a>;
				fsl,saif-master = <&saif0>;
				status = "okay";
			};

			i2c0: i2c@80058000 {
				sgtl5000: codec@a {
					compatible = "fsl,sgtl5000";
					reg = <0x0a>;
					#sound-dai-cells = <0>;
					VDDA-supply = <&reg_3p3v>;
					VDDIO-supply = <&reg_3p3v>;
					clocks = <&saif0>;
				};

				eeprom: eeprom@51 {
					compatible = "atmel,24c128";
					reg = <0x51>;
					pagesize = <32>;
				};
			};

			lradc@80050000 {
				status = "okay";
				fsl,lradc-touchscreen-wires = <4>;
			};

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

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

			usbphy1: usbphy@8007e000 {
				status = "okay";
			};

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

			auart1: serial@8006c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart1_pins_a>;
				status = "okay";
			};

			auart2: serial@8006e000 {
				pinctrl-names = "default";
				pinctrl-0 = <&auart2_2pins_b>;
				status = "okay";
			};

			pwm: pwm@80064000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pwm4_pins_a>;
				status = "okay";
			};
		};
	};

	ahb@80080000 {
		usb0: usb@80080000 {
			vbus-supply = <&reg_usb0_vbus>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb0_pins_a>;
			status = "okay";
		};

		usb1: usb@80090000 {
			vbus-supply = <&reg_usb1_vbus>;
			pinctrl-names = "default";
			pinctrl-0 = <&usb1_pins_a>;
			status = "okay";
		};

		mac0: ethernet@800f0000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac0_pins_a>;
			clocks = <&clks 57>, <&clks 57>;
			clock-names = "ipg", "ahb";
			status = "okay";
		};

		mac1: ethernet@800f4000 {
			phy-mode = "rmii";
			pinctrl-names = "default";
			pinctrl-0 = <&mac1_pins_a>;
			status = "okay";
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 4 5000000>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
	};

	regulators {
		reg_vddio_sd0: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "vddio-sd0";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio3 28 0>;
		};

		reg_usb0_vbus: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			regulator-name = "usb0_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio3 12 0>;
		};

		reg_usb1_vbus: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			regulator-name = "usb1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio3 13 0>;
		};
	};

	sound {
		compatible = "denx,m28evk-sgtl5000",
			     "fsl,mxs-audio-sgtl5000";
		model = "m28evk-sgtl5000";
		saif-controllers = <&saif0 &saif1>;
		audio-codec = <&sgtl5000>;
	};
};