/*
 * MARVELL BERLIN2CT Dongle board device tree source
 *
 * Copyright (c) 2013 Marvell International Ltd.
 *		http://www.marvell.com
 *
 * 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.
*/

/dts-v1/;
/include/ "berlin2cd-common.dtsi"

/ {
	model = "MARVELL BG2CD Dongle board based on BERLIN2CD";
	compatible = "marvell,berlin2cd-dongle", "marvell,berlin2cd";

	memory {
		name = "memory";
		device_type = "memory";
		linux,usable-memory = <0x01000000 0x11000000>;
	};

	soc {
		usb@F7ED0000 {
				status = "disabled";
		};

		i2c@F7E81400 {
				compatible = "berlin,apb-twsi";
				interrupt-parent = <&apb_ictl>;
				interrupts = <17 18 19 20 21 22 23 24 25 26 27 28 16>;
		};

		i2c@F7FC7000 {
				compatible = "berlin,sm-twsi";
				interrupt-parent = <&sm_ictl>;
				interrupts = <6 7>;
		};

		pe {
			compatible = "mrvl,berlin-pe";
			interrupts = <0 19 4  0 0 4  0 1 4  0 25 4  0 2 4>;
			cec {
				compatible = "mrvl,berlin-cec";
				interrupt-parent = <&sm_ictl>;
				interrupts = <16>;
			};
		};

		shm@29000000 {
				compatible = "mrvl,berlin-shm";
				reg = <0x12000000 0x0C000000>, <0x1E000000 0x02000000>;
		};

	};

};
