/*
 * usb_a926x.dts - Device Tree file for Caloa USB A926x board
 *
 *  Copyright (C) 2011-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
 *
 * Licensed under GPLv2 or later.
 */

/ {
	clocks {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		main_clock: clock@0 {
			compatible = "atmel,osc", "fixed-clock";
			clock-frequency = <12000000>;
		};

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

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

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

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

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

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

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

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

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

			bareboxenv2@80000 {
				label = "bareboxenv2";
				reg = <0x80000 0x20000>;
			};

			oftree@80000 {
				label = "oftree";
				reg = <0xa0000 0x20000>;
			};

			kernel@a0000 {
				label = "kernel";
				reg = <0xc0000 0x400000>;
			};

			rootfs@4a0000 {
				label = "rootfs";
				reg = <0x4c0000 0x7800000>;
			};

			data@7ca0000 {
				label = "data";
				reg = <0x7cc0000 0x8340000>;
			};
		};

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

	leds {
		compatible = "gpio-leds";

		user_led {
			label = "user_led";
			gpios = <&pioB 21 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};
	};

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

		user_pb {
			label = "user_pb";
			gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
			linux,code = <28>;
			gpio-key,wakeup;
		};
	};

	i2c@0 {
		status = "okay";
	};
};
