/*
 * at91-ariag25.dts - Device Tree file for Acme Systems Aria G25 (AT91SAM9G25 based)
 *
 * Copyright (C) 2013 Douglas Gilbert <dgilbert@interlog.com>,
 *                    Robert Nelson <robertcnelson@gmail.com>
 *
 * Licensed under GPLv2 or later.
 */
/dts-v1/;
#include "at91sam9g25.dtsi"

/ {
	model = "Acme Systems Aria G25";
	compatible = "acme,ariag25", "atmel,at91sam9x5ek",
		     "atmel,at91sam9x5", "atmel,at91sam9";

	aliases {
		serial0 = &dbgu;
		serial1 = &usart0;
		serial2 = &usart1;
		serial3 = &usart2;
		serial4 = &usart3;
		serial5 = &uart0;
		serial6 = &uart1;
	};

	chosen {
		bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait";
	};

	memory {
		/* 128 MB, change this for 256 MB revision */
		reg = <0x20000000 0x8000000>;
	};

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

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

	ahb {
		apb {
			mmc0: mmc@f0008000 {
				/* N.B. Aria has no SD card detect (CD), assumed present */

				pinctrl-0 = <
					&pinctrl_mmc0_slot0_clk_cmd_dat0
					&pinctrl_mmc0_slot0_dat1_3>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
				};
			};

			tcb0: timer@f8008000 {
				timer@0 {
					compatible = "atmel,tcb-timer";
					reg = <0>;
				};

				timer@1 {
					compatible = "atmel,tcb-timer";
					reg = <1>;
				};
			};

			i2c0: i2c@f8010000 {
				status = "okay";
			};

			i2c1: i2c@f8014000 {
				status = "okay";
			};

			/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */

			usart0: serial@f801c000 {
				pinctrl-0 = <&pinctrl_usart0
					     &pinctrl_usart0_rts
					     &pinctrl_usart0_cts>;
				status = "okay";
			};

			usart1: serial@f8020000 {
				pinctrl-0 = <&pinctrl_usart1
					     /* &pinctrl_usart1_rts */
					     /* &pinctrl_usart1_cts */
					    >;
				status = "okay";
			};

			usart2: serial@f8024000 {
				/* cannot activate RTS2+CTS2, clash with
				 * ethernet on PB0 and PB1 */
				pinctrl-0 = <&pinctrl_usart2>;
				status = "okay";
			};

			usart3: serial@f8028000 {
				compatible = "atmel,at91sam9260-usart";
				reg = <0xf8028000 0x200>;
				interrupts = <8 4 5>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_usart3
					     /* &pinctrl_usart3_rts */
					     /* &pinctrl_usart3_cts */
					    >;
				status = "okay";
			};

			macb0: ethernet@f802c000 {
				phy-mode = "rmii";
				/*
				 * following can be overwritten by bootloader:
				 * for example u-boot 'ftd set' command
				 */
				local-mac-address = [00 00 00 00 00 00];
				status = "okay";
			};

			/*
			 * UART0/1 pins are marked as GPIO on
			 * Aria documentation.
			 * Change to "okay" if you need additional serial ports
			 */
			uart0: serial@f8040000 {
				status = "disabled";
			};

			uart1: serial@f8044000 {
				status = "disabled";
			};

			adc0: adc@f804c000 {
				status = "okay";
				atmel,adc-channels-used = <0xf>;
			};

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

			pinctrl@fffff400 {
				w1_0 {
					pinctrl_w1_0: w1_0-0 {
						atmel,pins = <0 21 0x0 0x1>; /* PA21 PIO, pull-up */
					};
				};
			};

			rtc@fffffeb0 {
				status = "okay";
			};
		};

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

		usb1: ehci@700000 {
			status = "okay";
		};
	};

	leds {
		compatible = "gpio-leds";

		/* little green LED in middle of Aria G25 module */
		aria_led {
			label = "aria_led";
			gpios = <&pioB 8 GPIO_ACTIVE_HIGH>; /* PB8 */
			linux,default-trigger = "heartbeat";
		};

	};

	onewire {
		compatible = "w1-gpio";
		gpios = <&pioA 21 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_w1_0>;
	};
};
