/*
 * sama5d3xmb.dts - Device Tree file for SAMA5D3x mother board
 *
 *  Copyright (C) 2013 Atmel,
 *                2013 Ludovic Desroches <ludovic.desroches@atmel.com>
 *
 * Licensed under GPLv2 or later.
 */
#include "sama5d3xcm.dtsi"

/ {
	compatible = "atmel,sama5d3xmb", "atmel,sama5d3xcm", "atmel,sama5d3", "atmel,sama5";

	ahb {
		apb {
			mmc0: mmc@f0000000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
				};
			};

			spi0: spi@f0004000 {
				m25p80@0 {
					compatible = "atmel,at25df321a";
					spi-max-frequency = <50000000>;
					reg = <0>;
				};
			};

			/*
			 * i2c0 conflicts with ISI:
			 * disable it to allow the use of ISI
			 * can not enable audio when i2c0 disabled
			 */
			i2c0: i2c@f0014000 {
				wm8904: wm8904@1a {
					compatible = "wm8904";
					reg = <0x1a>;
				};
			};

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

			isi: isi@f0034000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_isi &pinctrl_isi_pck_as_mck &pinctrl_isi_power &pinctrl_isi_reset>;
			};

			mmc1: mmc@f8000000 {
				pinctrl-names = "default";
				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 = <&pioD 18 GPIO_ACTIVE_HIGH>;
				};
			};

			adc0: adc@f8018000 {
				pinctrl-names = "default";
				pinctrl-0 = <
					&pinctrl_adc0_adtrg
					&pinctrl_adc0_ad0
					&pinctrl_adc0_ad1
					&pinctrl_adc0_ad2
					&pinctrl_adc0_ad3
					&pinctrl_adc0_ad4
					>;
				status = "okay";
			};

			macb1: ethernet@f802c000 {
				phy-mode = "rmii";
			};

			pinctrl@fffff200 {
				board {
					pinctrl_mmc0_cd: mmc0_cd {
						atmel,pins =
							<3 17 0x0 0x5>; /* PD17 GPIO with pullup deglitch */
					};

					pinctrl_mmc1_cd: mmc1_cd {
						atmel,pins =
							<3 18 0x0 0x5>; /* PD18 GPIO with pullup deglitch */
					};

					pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
						atmel,pins =
							<3 30 0x2 0x0>;	/* PD30 periph B */
					};

					pinctrl_isi_reset: isi_reset-0 {
						atmel,pins =
							<4 24 0x0 0x0>;   /* PE24 gpio */
					};

					pinctrl_isi_power: isi_power-0 {
						atmel,pins =
							<4 29 0x0 0x0>; /* PE29 gpio */
					};

					pinctrl_usba_vbus: usba_vbus {
						atmel,pins =
							<3 29 0x0 0x4>; /* PD29 GPIO with deglitch */
					};
				};
			};

			dbgu: serial@ffffee00 {
				status = "okay";
			};

			watchdog@fffffe40 {
				status = "okay";
			};
		};

		usb0: gadget@00500000 {
			atmel,vbus-gpio = <&pioD 29 GPIO_ACTIVE_HIGH>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usba_vbus>;
			status = "okay";
		};

		usb1: ohci@00600000 {
			num-ports = <3>;
			atmel,vbus-gpio = <&pioD 25 GPIO_ACTIVE_HIGH
					   &pioD 26 GPIO_ACTIVE_LOW
					   &pioD 27 GPIO_ACTIVE_LOW
					  >;
			status = "okay";
		};

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

	sound {
		compatible = "atmel,sama5d3ek-wm8904";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;

		atmel,model = "wm8904 @ SAMA5D3EK";
		atmel,audio-routing =
			"Headphone Jack", "HPOUTL",
			"Headphone Jack", "HPOUTR",
			"IN2L", "Line In Jack",
			"IN2R", "Line In Jack",
			"IN1L", "Mic";

		atmel,ssc-controller = <&ssc0>;
		atmel,audio-codec = <&wm8904>;
	};
};
