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

/ {
	model = "Atmel SAMA5D2 Xplained";
	compatible = "atmel,sama5d2-xplained", "atmel,sama5d2", "atmel,sama5";

	chosen {
		bootph-all;
		stdout-path = &uart1;
	};

	memory {
		reg = <0x20000000 0x20000000>;
	};

	onewire_tm: onewire {
		gpios = <&pioA PIN_PB0 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_onewire_tm_default>;
		status = "okay";

		w1_eeprom: w1_eeprom@0 {
			compatible = "maxim,ds24b33";
			status = "okay";
		};
	};

	ahb {
		usb1: ohci@400000 {
			num-ports = <3>;
			atmel,vbus-gpio = <&pioA 42 0>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb_default>;
			status = "okay";
		};

		usb2: ehci@500000 {
			status = "okay";
		};

		sdmmc0: sdio-host@a0000000 {
			bus-width = <8>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_sdmmc0_default>;
			status = "okay";
			bootph-all;
		};

		sdmmc1: sdio-host@b0000000 {
			bus-width = <4>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_sdmmc1_default>;
			status = "okay"; /* conflict with qspi0 */
			bootph-all;
		};

		apb {
			hlcdc: hlcdc@f0000000 {
				atmel,vl-bpix = <4>;
				atmel,guard-time = <1>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_pwm &pinctrl_lcd_rgb666>;
				status = "okay";
				bootph-all;

				display-timings {
					bootph-all;
					480x272 {
						clock-frequency = <9000000>;
						hactive = <480>;
						vactive = <272>;
						hsync-len = <41>;
						hfront-porch = <2>;
						hback-porch = <2>;
						vfront-porch = <2>;
						vback-porch = <2>;
						vsync-len = <11>;
						bootph-all;
					};
				};
			};

			qspi0: spi@f0020000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_qspi0_sck_cs_default &pinctrl_qspi0_dat_default>;
				status = "okay";
				bootph-all;

				flash@0 {
					compatible = "jedec,spi-nor";
					reg = <0>;
					spi-max-frequency = <83000000>;
					spi-rx-bus-width = <4>;
					spi-tx-bus-width = <4>;
					bootph-all;
				};
			};

			spi0: spi@f8000000 {
				cs-gpios = <&pioA 17 0>, <0>, <0>, <0>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_spi0_default>;
				status = "okay";
				bootph-all;

				spi_flash@0 {
					compatible = "jedec,spi-nor";
					reg = <0>;
					spi-max-frequency = <50000000>;
					bootph-all;
				};
			};

			macb0: ethernet@f8008000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
				phy-mode = "rmii";
				status = "okay";

				ethernet-phy@1 {
					reg = <0x1>;
				};
			};

			uart1: serial@f8020000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_uart1_default>;
				status = "okay";
				bootph-all;
			};

			i2c1: i2c@fc028000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_i2c1_default>;
				status = "okay";

				i2c_eeprom: i2c_eeprom@5c {
					compatible = "atmel,24mac402";
					reg = <0x5c>;
				};
			};

			pioA: pinctrl@fc038000 {
				pinctrl_i2c1_default: i2c1_default {
					pinmux = <PIN_PD4__TWD1>,
						 <PIN_PD5__TWCK1>;
					bias-disable;
				};

				pinctrl_lcd_base: pinctrl_lcd_base {
					pinmux = <PIN_PC30__LCDVSYNC>,
						<PIN_PC31__LCDHSYNC>,
						<PIN_PD1__LCDDEN>,
						<PIN_PD0__LCDPCK>;
					bias-disable;
				};

				pinctrl_lcd_pwm: pinctrl_lcd_pwm {
					pinmux = <PIN_PC28__LCDPWM>;
					bias-disable;
				};

				pinctrl_lcd_rgb666: pinctrl_lcd_rgb666 {
					pinmux = <PIN_PC10__LCDDAT2>,
						<PIN_PC11__LCDDAT3>,
						<PIN_PC12__LCDDAT4>,
						<PIN_PC13__LCDDAT5>,
						<PIN_PC14__LCDDAT6>,
						<PIN_PC15__LCDDAT7>,
						<PIN_PC16__LCDDAT10>,
						<PIN_PC17__LCDDAT11>,
						<PIN_PC18__LCDDAT12>,
						<PIN_PC19__LCDDAT13>,
						<PIN_PC20__LCDDAT14>,
						<PIN_PC21__LCDDAT15>,
						<PIN_PC22__LCDDAT18>,
						<PIN_PC23__LCDDAT19>,
						<PIN_PC24__LCDDAT20>,
						<PIN_PC25__LCDDAT21>,
						<PIN_PC26__LCDDAT22>,
						<PIN_PC27__LCDDAT23>;
					bias-disable;
				};

				pinctrl_macb0_phy_irq: macb0_phy_irq {
					pinmux = <PIN_PC9__GPIO>;
					bias-disable;
				};

				pinctrl_macb0_rmii: macb0_rmii {
					pinmux = <PIN_PB14__GTXCK>,
						 <PIN_PB15__GTXEN>,
						 <PIN_PB16__GRXDV>,
						 <PIN_PB17__GRXER>,
						 <PIN_PB18__GRX0>,
						 <PIN_PB19__GRX1>,
						 <PIN_PB20__GTX0>,
						 <PIN_PB21__GTX1>,
						 <PIN_PB22__GMDC>,
						 <PIN_PB23__GMDIO>;
					bias-disable;
				};

				pinctrl_qspi0_sck_cs_default: qspi0_sck_cs_default {
					pinmux = <PIN_PA22__QSPI0_SCK>,
						 <PIN_PA23__QSPI0_CS>;
					bias-disable;
					bootph-all;
				};

				pinctrl_qspi0_dat_default: qspi0_dat_default {
					pinmux = <PIN_PA24__QSPI0_IO0>,
						 <PIN_PA25__QSPI0_IO1>,
						 <PIN_PA26__QSPI0_IO2>,
						 <PIN_PA27__QSPI0_IO3>;
					bias-pull-up;
					bootph-all;
				};

				pinctrl_sdmmc0_default: sdmmc0_default {
					cmd_dat {
						pinmux = <PIN_PA1__SDMMC0_CMD>,
							 <PIN_PA2__SDMMC0_DAT0>,
							 <PIN_PA3__SDMMC0_DAT1>,
							 <PIN_PA4__SDMMC0_DAT2>,
							 <PIN_PA5__SDMMC0_DAT3>,
							 <PIN_PA6__SDMMC0_DAT4>,
							 <PIN_PA7__SDMMC0_DAT5>,
							 <PIN_PA8__SDMMC0_DAT6>,
							 <PIN_PA9__SDMMC0_DAT7>;
						bias-pull-up;
						bootph-all;
					};

					ck_cd_default {
						pinmux = <PIN_PA0__SDMMC0_CK>,
							 <PIN_PA10__SDMMC0_RSTN>,
							 <PIN_PA11__SDMMC0_VDDSEL>,
							 <PIN_PA13__SDMMC0_CD>;
						bias-disable;
						bootph-all;
					};
				};

				pinctrl_sdmmc1_default: sdmmc1_default {
					cmd_dat {
						pinmux = <PIN_PA28__SDMMC1_CMD>,
							 <PIN_PA18__SDMMC1_DAT0>,
							 <PIN_PA19__SDMMC1_DAT1>,
							 <PIN_PA20__SDMMC1_DAT2>,
							 <PIN_PA21__SDMMC1_DAT3>;
						bias-pull-up;
						bootph-all;
					};

					ck_cd {
						pinmux = <PIN_PA22__SDMMC1_CK>,
							 <PIN_PA30__SDMMC1_CD>;
						bias-disable;
						bootph-all;
					};
				};

				pinctrl_spi0_default: spi0_default {
					pinmux = <PIN_PA14__SPI0_SPCK>,
						 <PIN_PA15__SPI0_MOSI>,
						 <PIN_PA16__SPI0_MISO>;
					bias-disable;
					bootph-all;
				};

				pinctrl_uart1_default: uart1_default {
					pinmux = <PIN_PD2__URXD1>,
						 <PIN_PD3__UTXD1>;
					bias-disable;
					bootph-all;
				};

				pinctrl_usb_default: usb_default {
					pinmux = <PIN_PB10__GPIO>;
					bias-disable;
				};

				pinctrl_usba_vbus: usba_vbus {
					pinmux = <PIN_PA31__GPIO>;
					bias-disable;
				};

				pinctrl_onewire_tm_default: onewire_tm_default {
					pinmux = <PIN_PB0__GPIO>;
					bias-pull-up;
				};
			};
		};
	};
};
