/*
 * at91sam9261ek.dts - Device Tree file for Atmel at91sam9261 reference board
 *
 *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
 *
 * Licensed under GPLv2 only.
 */
/dts-v1/;
#include "at91sam9261.dtsi"

/ {
	model = "Atmel at91sam9261ek";
	compatible = "atmel,at91sam9261ek", "atmel,at91sam9261", "atmel,at91sam9";

	chosen {
		bootargs = "console=ttyS0,115200 rootfstype=ubifs ubi.mtd=5 root=ubi0:rootfs rw";
	};

	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 {
		usb0: ohci@00500000 {
			status = "okay";
		};

		fb0: fb@0x00600000 {
			display = <&display0>;
			atmel,power-control-gpio = <&pioA 12 GPIO_ACTIVE_LOW>;
			status = "okay";

			display0: display {
				bits-per-pixel = <16>;
				atmel,lcdcon-backlight;
				atmel,dmacon = <0x1>;
				atmel,lcdcon2 = <0x80008002>;
				atmel,guard-time = <1>;
				atmel,lcd-wiring-mode = "BRG";

				display-timings {
					native-mode = <&timing0>;
					timing0: timing0 {
						clock-frequency = <4965000>;
						hactive = <240>;
						vactive = <320>;
						hback-porch = <1>;
						hfront-porch = <33>;
						vback-porch = <1>;
						vfront-porch = <0>;
						hsync-len = <5>;
						vsync-len = <1>;
						hsync-active = <1>;
						vsync-active = <1>;
					};
				};
			};
		};

		nand0: nand@40000000 {
			nand-bus-width = <8>;
			nand-ecc-mode = "soft";
			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>;
			};
		};

		apb {
			usb1: gadget@fffa4000 {
				atmel,vbus-gpio = <&pioB 29 GPIO_ACTIVE_HIGH>;
				status = "okay";
			};

			spi0: spi@fffc8000 {
				cs-gpios = <&pioA 3 0>, <0>, <&pioA 28 0>, <0>;
				status = "okay";

				mtd_dataflash@0 {
					compatible = "atmel,at45", "atmel,dataflash";
					reg = <0>;
					spi-max-frequency = <15000000>;
				};

				tsc2046@0 {
					reg = <2>;
					compatible = "ti,ads7843";
					interrupts-extended = <&pioC 2 IRQ_TYPE_EDGE_BOTH>;
					spi-max-frequency = <3000000>;
					pendown-gpio = <&pioC 2 GPIO_ACTIVE_HIGH>;

					ti,x-min = /bits/ 16 <150>;
					ti,x-max = /bits/ 16 <3830>;
					ti,y-min = /bits/ 16 <190>;
					ti,y-max = /bits/ 16 <3830>;
					ti,vref-delay-usecs = /bits/ 16 <450>;
					ti,x-plate-ohms = /bits/ 16 <450>;
					ti,y-plate-ohms = /bits/ 16 <250>;
					ti,pressure-max = /bits/ 16 <15000>;
					ti,debounce-rep = /bits/ 16 <0>;
					ti,debounce-tol = /bits/ 16 <65535>;
					ti,debounce-max = /bits/ 16 <1>;

					linux,wakeup;
				};
			};

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

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

		};
	};

	leds {
		compatible = "gpio-leds";

		ds8 {
			label = "ds8";
			gpios = <&pioA 13 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "none";
		};

		ds7 {
			label = "ds7";
			gpios = <&pioA 14 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "nand-disk";
		};

		ds1 {
			label = "ds1";
			gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		button_0 {
			label = "button_0";
			gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
			linux,code = <256>;
			gpio-key,wakeup;
		};

		button_1 {
			label = "button_1";
			gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
			linux,code = <257>;
			gpio-key,wakeup;
		};

		button_2 {
			label = "button_2";
			gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
			linux,code = <258>;
			gpio-key,wakeup;
		};

		button_3 {
			label = "button_3";
			gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
			linux,code = <259>;
			gpio-key,wakeup;
		};
	};
};
