/*
 *  Copyright (C) 2012 Marvell Technology Group Ltd.
 *  Author: Haojian Zhuang <haojian.zhuang@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
 *  publishhed by the Free Software Foundation.
 */

/dts-v1/;
/include/ "pxa910.dtsi"

/ {
	model = "Marvell PXA910 DKB Development Board";
	compatible = "mrvl,pxa910-dkb", "mrvl,pxa910";

	chosen {
		bootargs = "console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on";
	};

	memory {
		reg = <0x00000000 0x10000000>;
	};

	soc {
		apb@d4000000 {
			uart1: uart@d4017000 {
				status = "okay";
			};
			twsi1: i2c@d4011000 {
				status = "okay";

				pmic: 88pm860x@34 {
					compatible = "marvell,88pm860x";
					reg = <0x34>;
					interrupts = <4>;
					interrupt-parent = <&intc>;
					interrupt-controller;
					#interrupt-cells = <1>;

					marvell,88pm860x-irq-read-clr;
					marvell,88pm860x-slave-addr = <0x11>;

					regulators {
						BUCK1 {
							regulator-min-microvolt = <1000000>;
							regulator-max-microvolt = <1500000>;
							regulator-boot-on;
							regulator-always-on;
						};
						BUCK2 {
							regulator-min-microvolt = <1000000>;
							regulator-max-microvolt = <1500000>;
							regulator-boot-on;
							regulator-always-on;
						};
						BUCK3 {
							regulator-min-microvolt = <1000000>;
							regulator-max-microvolt = <3000000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO1 {
							regulator-min-microvolt = <1200000>;
							regulator-max-microvolt = <2800000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO2 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <3300000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO3 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <3300000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO4 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};
						LDO5 {
							regulator-min-microvolt = <2900000>;
							regulator-max-microvolt = <3300000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO6 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <3300000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO7 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <2900000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO8 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <2900000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO9 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <3300000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO10 {
							regulator-min-microvolt = <1200000>;
							regulator-max-microvolt = <3300000>;
							regulator-boot-on;
							regulator-always-on;
						};
						LDO12 {
							regulator-min-microvolt = <1200000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};
						LDO13 {
							regulator-min-microvolt = <1200000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};
						LDO14 {
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};
					};
					rtc {
						marvell,88pm860x-vrtc = <1>;
					};
					touch {
						marvell,88pm860x-gpadc-prebias = <1>;
						marvell,88pm860x-gpadc-slot-cycle = <1>;
						marvell,88pm860x-tsi-prebias = <6>;
						marvell,88pm860x-pen-prebias = <16>;
						marvell,88pm860x-pen-prechg = <2>;
						marvell,88pm860x-resistor-X = <300>;
					};
					backlights {
						backlight-0 {
							marvell,88pm860x-iset = <4>;
							marvell,88pm860x-pwm = <3>;
						};
						backlight-2 {
						};
					};
					leds {
						led0-red {
							marvell,88pm860x-iset = <12>;
						};
						led0-green {
							marvell,88pm860x-iset = <12>;
						};
						led0-blue {
							marvell,88pm860x-iset = <12>;
						};
					};
				};
			};
			rtc: rtc@d4010000 {
				status = "okay";
			};
		};
	};
};
