/*
 *  linux/arch/arm/boot/nspire-classic.dts
 *
 *  Copyright (C) 2013 Daniel Tang <tangrs@tangrs.id.au>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2, as
 * published by the Free Software Foundation.
 *
 */

/include/ "nspire.dtsi"

&lcd {
	lcd-type = "classic";
};

&fast_timer {
	/* compatible = "lsi,zevio-timer"; */
	reg = <0x90010000 0x1000>, <0x900A0010 0x8>;
};

&uart {
	compatible = "ns16550";
	reg-shift = <2>;
	reg-io-width = <4>;
	clocks = <&apb_pclk>;
	no-loopback-test;
};

&timer0 {
	/* compatible = "lsi,zevio-timer"; */
	reg = <0x900C0000 0x1000>, <0x900A0018 0x8>;
};

&timer1 {
	compatible = "lsi,zevio-timer";
	reg = <0x900D0000 0x1000>, <0x900A0020 0x8>;
};

&keypad {
	active-low;

};

&base_clk {
	compatible = "lsi,nspire-classic-clock";
};

&ahb_clk {
	compatible = "lsi,nspire-classic-ahb-divider";
};

/ {
	memory {
		device_type = "memory";
		reg = <0x10000000 0x2000000>; /* 32 MB */
	};

	ahb {
		#address-cells = <1>;
		#size-cells = <1>;

		intc: interrupt-controller@DC000000 {
			compatible = "lsi,zevio-intc";
			interrupt-controller;
			reg = <0xDC000000 0x1000>;
			#interrupt-cells = <1>;
		};
	};
	chosen {
		bootargs = "debug earlyprintk console=tty0 console=ttyS0,115200n8 root=/dev/ram0";
	};
};
