/*
 * Google Chirp BG2CDP A0 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/ "berlin2cdp-a0.dtsi"

/ {
	model = "Google Chirp BG2CDP A0 board based on BERLIN2CDP-A0";
	compatible = "marvell,berlin2cdp-chirp", "marvell,berlin2cdp", "marvell,berlin";

	cpus {
		cpu@0 {
			cpu0-supply = <&vcpu>;
		};
	};

	memory {
		name = "memory";
		device_type = "memory";
		reg = <0x01100000 0x1DD00000>;
	};

	soc {
		shm@29000000 {
			compatible = "mrvl,berlin-shm";
			reg = <0x1EE00000 0x01000000>, <0x1FE00000 0x00100000>;
		};

		i2c@0 {
			pg868 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "marvell,pg86x";
				reg = <0x19>;
				vcpu:BK1_TV@0 {
					regulator-name = "vcpu";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1350000>;
					regulator-always-on;
					regulator-boot-on;
				};
			};
			atsam_d21x {
				compatible = "atmel-sam-d21x";
				reg = <0x12>;
				touch_gpio = <&banka 10 0>;
				reset_gpio = <&banka 28 0>;
				max_x = <315>;
				max_y = <315>;
			};
			pca9956_0 {
				compatible = "nxp,led-pca9956b";
				reg = <0x15>;
				num_leds = <6>;
				//starting LED # of each set
				start_num = <0 3 6 9 12 15>;
				reset_gpio = <&banka 28 0>;
			};
			pca9956_1 {
				compatible = "nxp,led-pca9956b";
				reg = <0x17>;
				num_leds = <6>;
				//starting LED # of each set
				start_num = <0 3 6 9 12 15>;
				reset_gpio = <&banka 28 0>;
			};
		};

		tsen@F7FCD000 {
			pwr-gpio = <&banka 5 0>;
		};
	};
};
