/*
 * Device Tree Source for the KZM-A9-GT board
 *
 * Copyright (C) 2012 Horms Solutions Ltd.
 *
 * Based on sh73a0-kzm9g.dts
 * Copyright (C) 2012 Renesas Solutions Corp.
 *
 * This file is licensed under the terms of the GNU General Public License
 * version 2.  This program is licensed "as is" without any warranty of any
 * kind, whether express or implied.
 */

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

/ {
	model = "KZM-A9-GT";
	compatible = "renesas,kzm9g-reference", "renesas,sh73a0";

	chosen {
		bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200";
	};

	memory {
		device_type = "memory";
		reg = <0x41000000 0x1e800000>;
	};

	reg_1p8v: regulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "fixed-1.8V";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
		regulator-boot-on;
	};

	reg_3p3v: regulator@1 {
		compatible = "regulator-fixed";
		regulator-name = "fixed-3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
	};

	lan9220@10000000 {
		compatible = "smsc,lan9220", "smsc,lan9115";
		reg = <0x10000000 0x100>;
		phy-mode = "mii";
		interrupt-parent = <&irqpin0>;
		interrupts = <3 0>;	/* active low */
		reg-io-width = <4>;
		smsc,irq-push-pull;
		smsc,save-mac-address;
		vddvario-supply = <&reg_1p8v>;
		vdd33a-supply = <&reg_3p3v>;
	};
};

&mmcif {
	bus-width = <8>;
	vmmc-supply = <&reg_1p8v>;
	status = "okay";
};

&sdhi0 {
	vmmc-supply = <&reg_3p3v>;
	bus-width = <4>;
	status = "okay";
};

&sdhi2 {
	vmmc-supply = <&reg_3p3v>;
	bus-width = <4>;
	broken-cd;
	status = "okay";
};
