/*
 * at91-sama5d3_xplained.dts - Device Tree file for the SAMA5D3 Xplained board
 *
 *  Copyright (C) 2014 Atmel,
 *		  2014 Nicolas Ferre <nicolas.ferre@atmel.com>
 *
 * Licensed under GPLv2 or later.
 */
/dts-v1/;
#include "sama5d36.dtsi"

/ {
	model = "SAMA5D3 Xplained";
	compatible = "atmel,sama5d3-xplained", "atmel,sama5d3", "atmel,sama5";

	chosen {
		u-boot,dm-pre-reloc;
		stdout-path = &dbgu;
	};

	aliases {
		spi0 = &spi0;
	};

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

	clocks {
		slow_xtal {
			clock-frequency = <32768>;
		};

		main_xtal {
			clock-frequency = <12000000>;
		};
	};

	onewire_tm: onewire {
		gpios = <&pioE 23 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_onewire_tm_default>;
		status = "okay";

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

	ahb {
		apb {
			mmc0: mmc@f0000000 {
				u-boot,dm-pre-reloc;
				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
				vmmc-supply = <&vcc_mmc0_reg>;
				vqmmc-supply = <&vcc_3v3_reg>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <8>;
					cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
				};
			};

			mmc1: mmc@f8000000 {
				u-boot,dm-pre-reloc;
				vmmc-supply = <&vcc_3v3_reg>;
				vqmmc-supply = <&vcc_3v3_reg>;
				status = "disabled";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioE 1 GPIO_ACTIVE_LOW>;
				};
			};

			spi0: spi@f0004000 {
				cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
				status = "okay";
			};

			can0: can@f000c000 {
				status = "okay";
			};

			i2c0: i2c@f0014000 {
				pinctrl-0 = <&pinctrl_i2c0_pu>;
				status = "okay";
			};

			i2c1: i2c@f0018000 {
				status = "okay";

				pmic: act8865@5b {
					compatible = "active-semi,act8865";
					reg = <0x5b>;
					status = "disabled";

					regulators {
						vcc_1v8_reg: DCDC_REG1 {
							regulator-name = "VCC_1V8";
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <1800000>;
							regulator-always-on;
						};

						vcc_1v2_reg: DCDC_REG2 {
							regulator-name = "VCC_1V2";
							regulator-min-microvolt = <1200000>;
							regulator-max-microvolt = <1200000>;
							regulator-always-on;
						};

						vcc_3v3_reg: DCDC_REG3 {
							regulator-name = "VCC_3V3";
							regulator-min-microvolt = <3300000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};

						vddfuse_reg: LDO_REG1 {
							regulator-name = "FUSE_2V5";
							regulator-min-microvolt = <2500000>;
							regulator-max-microvolt = <2500000>;
						};

						vddana_reg: LDO_REG2 {
							regulator-name = "VDDANA";
							regulator-min-microvolt = <3300000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};
					};
				};
			};

			macb0: ethernet@f0028000 {
				phy-mode = "rgmii";
				#address-cells = <1>;
				#size-cells = <0>;
				status = "okay";

				ethernet-phy@7 {
					reg = <0x7>;
				};
			};

			pwm0: pwm@f002c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_pwm0_pwmh0_0 &pinctrl_pwm0_pwmh1_0>;
				status = "okay";
			};

			usart0: serial@f001c000 {
				status = "okay";
			};

			usart1: serial@f0020000 {
				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
				status = "okay";
			};

			uart0: serial@f0024000 {
				status = "okay";
			};

			mmc1: mmc@f8000000 {
				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioE 1 GPIO_ACTIVE_HIGH>;
				};
			};

			spi1: spi@f8008000 {
				cs-gpios = <&pioC 25 0>;
				status = "okay";
			};

			adc0: adc@f8018000 {
				pinctrl-0 = <
					&pinctrl_adc0_adtrg
					&pinctrl_adc0_ad0
					&pinctrl_adc0_ad1
					&pinctrl_adc0_ad2
					&pinctrl_adc0_ad3
					&pinctrl_adc0_ad4
					&pinctrl_adc0_ad5
					&pinctrl_adc0_ad6
					&pinctrl_adc0_ad7
					&pinctrl_adc0_ad8
					&pinctrl_adc0_ad9
					>;
				status = "okay";
			};

			i2c2: i2c@f801c000 {
				dmas = <0>, <0>;	/* Do not use DMA for i2c2 */
				pinctrl-0 = <&pinctrl_i2c2_pu>;
				status = "okay";
			};

			macb1: ethernet@f802c000 {
				phy-mode = "rmii";
				#address-cells = <1>;
				#size-cells = <0>;
				status = "okay";

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

			dbgu: serial@ffffee00 {
				u-boot,dm-pre-reloc;
				status = "okay";
			};

			pinctrl@fffff200 {
				board {
					u-boot,dm-pre-reloc;
					pinctrl_i2c0_pu: i2c0_pu {
						atmel,pins =
							<AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
							<AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
					};

					pinctrl_i2c2_pu: i2c2_pu {
						atmel,pins =
							<AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>,
							<AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
					};

					pinctrl_key_gpio: key_gpio_0 {
						atmel,pins =
							<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
					};

					pinctrl_mmc0_cd: mmc0_cd {
						u-boot,dm-pre-reloc;
						atmel,pins =
							<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
					};

					pinctrl_mmc1_cd: mmc1_cd {
						u-boot,dm-pre-reloc;
						atmel,pins =
							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
					};

					pinctrl_usba_vbus: usba_vbus {
						atmel,pins =
							<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PE9, conflicts with A9 */
					};

					pinctrl_onewire_tm_default: onewire_tm_default {
						atmel,pins =
							<AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
					};
				};
			};
		};

		nand0: nand@60000000 {
			nand-bus-width = <8>;
			nand-ecc-mode = "hw";
			atmel,has-pmecc;
			atmel,pmecc-cap = <4>;
			atmel,pmecc-sector-size = <512>;
			nand-on-flash-bbt;
			status = "okay";

			at91bootstrap@0 {
				label = "at91bootstrap";
				reg = <0x0 0x40000>;
			};

			bootloader@40000 {
				label = "bootloader";
				reg = <0x40000 0x80000>;
			};

			bootloaderenv@c0000 {
				label = "bootloader env";
				reg = <0xc0000 0xc0000>;
			};

			dtb@180000 {
				label = "device tree";
				reg = <0x180000 0x80000>;
			};

			kernel@200000 {
				label = "kernel";
				reg = <0x200000 0x600000>;
			};

			rootfs@800000 {
				label = "rootfs";
				reg = <0x800000 0x0f800000>;
			};
		};

		usb0: gadget@00500000 {
			atmel,vbus-gpio = <&pioE 9 GPIO_ACTIVE_HIGH>;	/* PE9, conflicts with A9 */
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usba_vbus>;
			status = "okay";
		};

		usb1: ohci@00600000 {
			num-ports = <3>;
			atmel,vbus-gpio = <0
					   &pioE 3 GPIO_ACTIVE_LOW
					   &pioE 4 GPIO_ACTIVE_LOW
					  >;
			status = "okay";
		};

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

	vcc_mmc0_reg: fixedregulator@0 {
		compatible = "regulator-fixed";
		gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
		regulator-name = "mmc0-card-supply";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	gpio_keys {
		compatible = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_key_gpio>;

		bp3 {
			label = "PB_USER";
			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
			linux,code = <0x104>;
			wakeup-source;
		};
	};

	leds {
		compatible = "gpio-leds";

		d2 {
			label = "d2";
			gpios = <&pioE 23 GPIO_ACTIVE_LOW>;	/* PE23, conflicts with A23, CTS2 */
			linux,default-trigger = "heartbeat";
		};

		d3 {
			label = "d3";
			gpios = <&pioE 24 GPIO_ACTIVE_HIGH>;
		};
	};
};
