/*
 * at91sam9g20-taurus.dts
 * (C) Copyright 2016
 * Heiko Schocher, DENX Software Engineering, hs@denx.de.
 *
 * Based on:
 * at91sam9g20ek.dts - Device Tree file for Atmel at91sam9g20ek board
 *
 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
 *
 * Licensed under GPLv2.
 */
/dts-v1/;
#include "at91sam9g20.dtsi"

/ {
	model = "Siemens taurus";
	compatible = "atmel,at91sam9g20", "atmel,at91sam9";

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

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

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

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

&dbgu {
	status = "okay";
};

&gpbr {
	status = "okay";
};

&macb0 {
	phy-mode = "rmii";
	status = "okay";
};

&nand0 {
	nand-bus-width = <8>;
	nand-ecc-mode = "soft";
	nand-on-flash-bbt;
	status = "okay";
};

&pinctrl {
	u-boot,dm-pre-reloc;
	board {
		pinctrl_pck0_as_mck: pck0_as_mck {
			atmel,pins =
			/* PC1 periph B */
			<AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE>;
		};

	};
};

&rtc {
	atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
	status = "okay";
};

&spi0 {
	cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
	mtd_dataflash@0 {
		compatible = "atmel,at45", "atmel,dataflash";
		spi-max-frequency = <50000000>;
		reg = <1>;
	};
};

&ssc0 {
	status = "okay";
	pinctrl-0 = <&pinctrl_ssc0_tx>;
};

&usart0 {
	pinctrl-0 =
		<&pinctrl_usart0
		 &pinctrl_usart0_rts
		 &pinctrl_usart0_cts
		 &pinctrl_usart0_dtr_dsr
		 &pinctrl_usart0_dcd
		 &pinctrl_usart0_ri>;
	status = "okay";
};

&usart1 {
	status = "okay";
};

&usb0 {
	num-ports = <2>;
	status = "okay";
};

&usb1 {
	atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&watchdog {
	u-boot,dm-pre-reloc;
	timeout-sec = <15>;
	status = "okay";
};
