/*
 * 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 {
				nand {
					pinctrl_nand_rb: nand-rb-0 {
						atmel,pins =
							<AT91_PIOD 3 AT91_PERIPH_GPIO AT91_PINCTRL_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 */
					};
				};
			};

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

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

			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";
			};
		};

		ebi: ebi@10000000 {
			status = "okay";

			nand_controller: nand-controller {
				status = "okay";
				pinctrl-0 = <&pinctrl_nand_cs &pinctrl_nand_rb>;
				pinctrl-names = "default";

				nand@3 {
					reg = <0x3 0x0 0x800000>;
					rb-gpios = <&pioD 3 GPIO_ACTIVE_HIGH>;
					cs-gpios = <&pioC 14 GPIO_ACTIVE_HIGH>;
					nand-bus-width = <8>;
					nand-ecc-mode = "soft";
					nand-on-flash-bbt;
					label = "atmel_nand";

					partitions {
						compatible = "fixed-partitions";
						#address-cells = <1>;
						#size-cells = <1>;

						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@700000 {
			status = "okay";
			num-ports = <2>;
		};

		usb1: ehci@800000 {
			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>;
		};
	};
};
