/*
 * pm9g45.dts - Device Tree file for Ronetix pm9g45 board
 *
 *  Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
 *
 * Licensed under GPLv2.
 */
/dts-v1/;
#include "at91sam9g45.dtsi"

/ {
	model = "Ronetix pm9g45";
	compatible = "ronetix,pm9g45", "atmel,at91sam9g45", "atmel,at91sam9";

	chosen {
		bootargs = "console=ttyS0,115200";
	};

	memory {
		reg = <0x70000000 0x8000000>;
	};

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

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

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

			pinctrl@fffff200 {

				board {
					pinctrl_board_nand: nand0-board {
						atmel,pins =
							<AT91_PIOD 3 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP	/* PD3 gpio RDY pin pull_up*/
							 AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;	/* PC14 gpio enable pin pull_up */
					};
				};

				mmc {
					pinctrl_board_mmc: mmc0-board {
						atmel,pins =
							<AT91_PIOD 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;	/* PD6 gpio CD pin pull_up and deglitch */
					};
				};
			};

			mmc0: mmc@fff80000 {
				pinctrl-0 = <
					&pinctrl_board_mmc
					&pinctrl_mmc0_slot0_clk_cmd_dat0
					&pinctrl_mmc0_slot0_dat1_3>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioD 6 GPIO_ACTIVE_HIGH>;
				};
			};

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

		};

		nand0: nand@40000000 {
			nand-bus-width = <8>;
			nand-ecc-mode = "soft";
			nand-on-flash-bbt;
			pinctrl-0 = <&pinctrl_board_nand>;

			gpios = <&pioD 3 GPIO_ACTIVE_HIGH
				 &pioC 14 GPIO_ACTIVE_HIGH
				 0
				>;

			status = "okay";

			at91bootstrap@0 {
				label = "at91bootstrap";
				reg = <0x0 0x20000>;
			};

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

			bareboxenv@60000 {
				label = "bareboxenv";
				reg = <0x60000 0x1A0000>;
			};

			kernel@200000 {
				label = "bareboxenv2";
				reg = <0x200000 0x300000>;
			};

			kernel@500000 {
				label = "root";
				reg = <0x500000 0x400000>;
			};

			data@900000 {
				label = "data";
				reg = <0x900000 0x8340000>;
			};
		};

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

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

	leds {
		compatible = "gpio-leds";

		led0 {
			label = "led0";
			gpios = <&pioD 0 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "nand-disk";
		};

		led1 {
			label = "led1";
			gpios = <&pioD 31 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		right {
			label = "SW4";
			gpios = <&pioE 7 GPIO_ACTIVE_LOW>;
			linux,code = <106>;
		};

		up {
			label = "SW3";
			gpios = <&pioE 8 GPIO_ACTIVE_LOW>;
			linux,code = <103>;
		};
	};
};
