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

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

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

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

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

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

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

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

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

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

&lradc {
	fsl,lradc-touchscreen-wires = <4>;
	fsl,ave-ctrl = <4>;
	fsl,ave-delay = <2>;
	fsl,settling = <10>;
	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>;
	};

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

&mac0 {
	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 {
	phy-mode = "rmii";
	pinctrl-names = "default";
	pinctrl-0 = <&mac1_pins_a>;
	status = "okay";
};

&pinctrl {
	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>;
	};
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pwm2_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_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 {
	compatible = "fsl,imx28-mmc";
	bus-width = <8>;
	wp-gpios = <&gpio0 28 0>;
};

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

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

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

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

&usbphy0 {
	status = "okay";
};

&usbphy1 {
	status = "okay";
};