/*
 * Copyright 2015 Endless Mobile, Inc.
 * Author: Carlo Caione <carlo@endlessm.com>
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This library is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This library is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

/dts-v1/;
#include "meson8b.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Hardkernel ODROID-C1";
	compatible = "hardkernel,odroid-c1", "amlogic,meson8b";

	aliases {
		serial0 = &uart_AO;
		mmc0 = &sd_card_slot;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

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

	leds {
		compatible = "gpio-leds";
		blue {
			label = "c1:blue:alive";
			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
			default-state = "off";
		};
	};

	p5v0: regulator-p5v0 {
		compatible = "regulator-fixed";

		regulator-name = "P5V0";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	tflash_vdd: regulator-tflash_vdd {
		/*
		 * signal name from schematics: TFLASH_VDD_EN
		 */
		compatible = "regulator-fixed";

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

		vin-supply = <&vcc_3v3>;

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

	tf_io: gpio-regulator-tf_io {
		compatible = "regulator-gpio";

		regulator-name = "TF_IO";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;

		vin-supply = <&vcc_3v3>;

		/*
		 * signal name from schematics: TF_3V3N_1V8_EN
		 */
		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
		gpios-states = <0>;

		states = <3300000 0
			  1800000 1>;
	};

	iio-hwmon {
		compatible = "iio-hwmon";
		io-channels = <&saradc 8>;
	};

	rtc32k_xtal: rtc32k-xtal-clk {
		/* X3 in the schematics */
		compatible = "fixed-clock";
		clock-frequency = <32768>;
		clock-output-names = "RTC32K";
		#clock-cells = <0>;
	};

	vcc_1v8: regulator-vcc-1v8 {
		/*
		 * RICHTEK RT9179 configured for a fixed output voltage of
		 * 1.8V. This supplies not only VCC1V8 but also IOREF_1V8 and
		 * VDD1V8 according to the schematics.
		 */
		compatible = "regulator-fixed";

		regulator-name = "VCC1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;

		vin-supply = <&p5v0>;
	};

	vcc_3v3: regulator-vcc-3v3 {
		/*
		 * Monolithic Power Systems MP2161 configured for a fixed
		 * output voltage of 3.3V. This supplies not only VCC3V3 but
		 * also VDD3V3 and VDDIO_AO3V3 according to the schematics.
		 */
		compatible = "regulator-fixed";

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

		vin-supply = <&p5v0>;
	};

	vcck: regulator-vcck {
		/* Monolithic Power Systems MP2161 */
		compatible = "pwm-regulator";

		regulator-name = "VCCK";
		regulator-min-microvolt = <860000>;
		regulator-max-microvolt = <1140000>;

		vin-supply = <&p5v0>;

		pwms = <&pwm_cd 0 12218 0>;
		pwm-dutycycle-range = <91 0>;

		regulator-boot-on;
		regulator-always-on;
	};

	vddc_ddr: regulator-vddc-ddr {
		/*
		 * Monolithic Power Systems MP2161 configured for a fixed
		 * output voltage of 1.5V. This supplies not only DDR_VDDC but
		 * also DDR3_1V5 according to the schematics.
		 */
		compatible = "regulator-fixed";

		regulator-name = "DDR_VDDC";
		regulator-min-microvolt = <1500000>;
		regulator-max-microvolt = <1500000>;

		vin-supply = <&p5v0>;
	};

	vdd_rtc: regulator-vdd-rtc {
		/*
		 * Torex Semiconductor XC6215 configured for a fixed output of
		 * 0.9V.
		 */
		compatible = "regulator-fixed";

		regulator-name = "VDD_RTC";
		regulator-min-microvolt = <900000>;
		regulator-max-microvolt = <900000>;

		vin-supply = <&vcc_3v3>;
	};
};

&cpu0 {
	cpu-supply = <&vcck>;
};

&ethmac {
	status = "okay";

	snps,reset-gpio = <&gpio GPIOH_4 GPIO_ACTIVE_HIGH>;
	snps,reset-active-low;
	snps,reset-delays-us = <0 10000 30000>;

	pinctrl-0 = <&eth_rgmii_pins>;
	pinctrl-names = "default";

	phy-mode = "rgmii";
	phy-handle = <&eth_phy>;
	amlogic,tx-delay-ns = <4>;

	mdio {
		compatible = "snps,dwmac-mdio";
		#address-cells = <1>;
		#size-cells = <0>;

		/* Realtek RTL8211F (0x001cc916) */
		eth_phy: ethernet-phy@0 {
			reg = <0>;
			interrupt-parent = <&gpio_intc>;
			/* GPIOH_3 */
			interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
		};
	};
};

&gpio {
	gpio-line-names = /* Bank GPIOX */
			  "J2 Header Pin 35", "J2 Header Pin 36",
			  "J2 Header Pin 32", "J2 Header Pin 31",
			  "J2 Header Pin 29", "J2 Header Pin 18",
			  "J2 Header Pin 22", "J2 Header Pin 16",
			  "J2 Header Pin 23", "J2 Header Pin 21",
			  "J2 Header Pin 19", "J2 Header Pin 33",
			  "J2 Header Pin 8", "J2 Header Pin 10",
			  "J2 Header Pin 15", "J2 Header Pin 13",
			  "J2 Header Pin 24", "J2 Header Pin 26",
			  /* Bank GPIOY */
			  "Revision (upper)", "Revision (lower)",
			  "J2 Header Pin 7", "", "J2 Header Pin 12",
			  "J2 Header Pin 11", "", "", "",
			  "TFLASH_VDD_EN", "", "",
			  /* Bank GPIODV */
			  "VCCK_PWM (PWM_C)", "I2CA_SDA", "I2CA_SCL",
			  "I2CB_SDA", "I2CB_SCL", "VDDEE_PWM (PWM_D)",
			  "",
			  /* Bank GPIOH */
			  "HDMI_HPD", "HDMI_I2C_SDA", "HDMI_I2C_SCL",
			  "ETH_PHY_INTR", "ETH_PHY_NRST", "ETH_TXD1",
			  "ETH_TXD0", "ETH_TXD3", "ETH_TXD2",
			  "ETH_RGMII_TX_CLK",
			  /* Bank CARD */
			  "SD_DATA1 (SDB_D1)", "SD_DATA0 (SDB_D0)",
			  "SD_CLK",  "SD_CMD", "SD_DATA3 (SDB_D3)",
			  "SD_DATA2 (SDB_D2)", "SD_CDN (SD_DET_N)",
			  /* Bank BOOT */
			  "SDC_D0 (EMMC)", "SDC_D1 (EMMC)",
			  "SDC_D2 (EMMC)", "SDC_D3 (EMMC)",
			  "SDC_D4 (EMMC)", "SDC_D5 (EMMC)",
			  "SDC_D6 (EMMC)", "SDC_D7 (EMMC)",
			  "SDC_CLK (EMMC)", "SDC_RSTn (EMMC)",
			  "SDC_CMD (EMMC)", "BOOT_SEL", "", "", "",
			  "", "", "", "",
			  /* Bank DIF */
			  "ETH_RXD1", "ETH_RXD0", "ETH_RX_DV",
			  "RGMII_RX_CLK", "ETH_RXD3", "ETH_RXD2",
			  "ETH_TXEN", "ETH_PHY_REF_CLK_25MOUT",
			  "ETH_MDC", "ETH_MDIO";
};

&gpio_ao {
	gpio-line-names = "UART TX", "UART RX", "",
			  "TF_3V3N_1V8_EN", "USB_HUB_RST_N",
			  "USB_OTG_PWREN", "J7 Header Pin 2",
			  "IR_IN", "J7 Header Pin 4",
			  "J7 Header Pin 6", "J7 Header Pin 5",
			  "J7 Header Pin 7", "HDMI_CEC",
			  "SYS_LED", "", "";

	/*
	 * WARNING: The USB Hub on the Odroid-C1/C1+ needs a reset signal
	 * to be turned high in order to be detected by the USB Controller.
	 * This signal should be handled by a USB specific power sequence
	 * in order to reset the Hub when USB bus is powered down.
	 */
	usb-hub {
		gpio-hog;
		gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
		output-high;
		line-name = "usb-hub-reset";
	};
};

&ir_receiver {
	status = "okay";
	pinctrl-0 = <&ir_recv_pins>;
	pinctrl-names = "default";
};

&saradc {
	status = "okay";
	vref-supply = <&vcc_1v8>;
};

&sdio {
	status = "okay";

	pinctrl-0 = <&sd_b_pins>;
	pinctrl-names = "default";

	/* SD card */
	sd_card_slot: slot@1 {
		compatible = "mmc-slot";
		reg = <1>;
		status = "okay";

		bus-width = <4>;
		no-sdio;
		cap-mmc-highspeed;
		cap-sd-highspeed;
		disable-wp;

		cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;

		vmmc-supply = <&tflash_vdd>;
		vqmmc-supply = <&tf_io>;
	};
};

&pwm_cd {
	status = "okay";
	pinctrl-0 = <&pwm_c1_pins>;
	pinctrl-names = "default";
	clocks = <&clkc CLKID_XTAL>;
	clock-names = "clkin0";
};

&rtc {
	/* needs to be enabled manually when a battery is connected */
	clocks = <&rtc32k_xtal>;
	vdd-supply = <&vdd_rtc>;
};

&uart_AO {
	status = "okay";
	pinctrl-0 = <&uart_ao_a_pins>;
	pinctrl-names = "default";
};

&usb1_phy {
	status = "okay";
};

&usb1 {
	status = "okay";
};
