/*
 * at91rm9200ek.dts - Device Tree file for Atmel AT91RM9200 evaluation kit
 *
 *  Copyright (C) 2012 Joachim Eastwood <manabian@gmail.com>
 *
 * Licensed under GPLv2 only
 */
/dts-v1/;
#include "at91rm9200.dtsi"

/ {
	model = "Atmel AT91RM9200 evaluation kit";
	compatible = "atmel,at91rm9200ek", "atmel,at91rm9200";

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

	clocks {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		main_clock: clock@0 {
			compatible = "atmel,osc", "fixed-clock";
			clock-frequency = <18432000>;
		};

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

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

	ahb {
		apb {
			usb1: gadget@fffb0000 {
				atmel,vbus-gpio = <&pioD 4 GPIO_ACTIVE_HIGH>;
				atmel,pullup-gpio = <&pioD 5 GPIO_ACTIVE_HIGH>;
				status = "okay";
			};

			macb0: ethernet@fffbc000 {
				phy-mode = "rmii";
				status = "okay";

				phy0: ethernet-phy {
					interrupt-parent = <&pioC>;
					interrupts = <4 IRQ_TYPE_EDGE_BOTH>;
				};
			};

			usart1: serial@fffc4000 {
				pinctrl-0 =
						<&pinctrl_uart1
						 &pinctrl_uart1_rts
						 &pinctrl_uart1_cts
						 &pinctrl_uart1_dtr_dsr
						 &pinctrl_uart1_dcd
						 &pinctrl_uart1_ri>;
				status = "okay";
			};

			spi0: spi@fffe0000 {
				status = "okay";
				cs-gpios = <&pioA 3 0>, <0>, <0>, <0>;
				mtd_dataflash@0 {
					compatible = "atmel,at45", "atmel,dataflash";
					spi-max-frequency = <15000000>;
					reg = <0>;
				};
			};

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

			rtc: rtc@fffffe00 {
				status = "okay";
			};
		};

		usb0: ohci@00300000 {
			num-ports = <2>;
			status = "okay";
		};

		nor_flash@10000000 {
			compatible = "cfi-flash";
			reg = <0x10000000 0x800000>;
			linux,mtd-name = "physmap-flash.0";
			bank-width = <2>;
			#address-cells = <1>;
			#size-cells = <1>;

			barebox@0 {
				label = "barebox";
				reg = <0x00000 0x40000>;
			};

			bareboxenv@40000 {
				label = "bareboxenv";
				reg = <0x40000 0x10000>;
			};

			kernel@50000 {
				label = "kernel";
				reg = <0x50000 0x300000>;
			};

			root@350000  {
				label = "root";
				reg = <0x350000 0x4B0000>;
			};
		};
	};

	leds {
		compatible = "gpio-leds";

		ds2 {
			label = "green";
			gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "mmc0";
		};

		ds4 {
			label = "yellow";
			gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};

		ds6 {
			label = "red";
			gpios = <&pioB 2 GPIO_ACTIVE_LOW>;
		};
	};
};
