/*
 * Device Tree Source for the APE6EVM board
 *
 * Copyright (C) 2013 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/ "r8a73a4.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "APE6EVM";
	compatible = "renesas,ape6evm-reference", "renesas,r8a73a4";

	chosen {
		bootargs = "console=ttySC0,115200 ignore_loglevel rw";
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x40000000>;
	};

	vcc_mmc0: regulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "MMC0 Vcc";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		regulator-always-on;
	};

	vcc_sdhi0: regulator@1 {
		compatible = "regulator-fixed";

		regulator-name = "SDHI0 Vcc";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		gpio = <&pfc 76 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	/* Common 3.3V rail, used by several devices on APE6EVM */
	ape6evm_fixed_3v3: regulator@2 {
		compatible = "regulator-fixed";
		regulator-name = "3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	lbsc {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0 0 0 0x80000000>;
	};
};

&i2c5 {
	status = "okay";
	vdd_dvfs: max8973@1b {
		compatible = "maxim,max8973";
		reg = <0x1b>;

		regulator-min-microvolt = <935000>;
		regulator-max-microvolt = <1200000>;
		regulator-boot-on;
		regulator-always-on;
	};
};

&cpu0 {
	cpu0-supply = <&vdd_dvfs>;
	operating-points = <
		/* kHz  uV */
		1950000 1115000
		1462500  995000
	>;
	voltage-tolerance = <1>; /* 1% */
};

&pfc {
	pinctrl-0 = <&scifa0_pins>;
	pinctrl-names = "default";

	scifa0_pins: scifa0 {
		renesas,groups = "scifa0_data";
		renesas,function = "scifa0";
	};

	mmc0_pins: mmcif {
		renesas,groups = "mmc0_data8", "mmc0_ctrl";
		renesas,function = "mmc0";
	};

	sdhi0_pins: sdhi0 {
		renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd";
		renesas,function = "sdhi0";
	};

	sdhi1_pins: sdhi1 {
		renesas,groups = "sdhi1_data4", "sdhi1_ctrl";
		renesas,function = "sdhi1";
	};
};

&mmcif0 {
	vmmc-supply = <&vcc_mmc0>;
	bus-width = <8>;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_pins>;
	status = "okay";
};

&sdhi0 {
	vmmc-supply = <&vcc_sdhi0>;
	bus-width = <4>;
	toshiba,mmc-wrprotect-disable;
	pinctrl-names = "default";
	pinctrl-0 = <&sdhi0_pins>;
	status = "okay";
};

&sdhi1 {
	vmmc-supply = <&ape6evm_fixed_3v3>;
	bus-width = <4>;
	broken-cd;
	toshiba,mmc-wrprotect-disable;
	pinctrl-names = "default";
	pinctrl-0 = <&sdhi1_pins>;
	status = "okay";
};
