// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright 2015 Endless Mobile, Inc.
 * Author: Carlo Caione <carlo@endlessm.com>
 */

/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>;
	};

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

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

		vin-supply = <&p5v0>;

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

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

	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>;
};

&efuse {
	ethernet_mac_address: mac@1b4 {
		reg = <0x1b4 0x6>;
	};
};

&ethmac {
	status = "okay";

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

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

	nvmem-cells = <&ethernet_mac_address>;
	nvmem-cell-names = "mac-address";

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

		/* Realtek RTL8211F (0x001cc916) */
		eth_phy: ethernet-phy@0 {
			reg = <0>;

			reset-assert-us = <10000>;
			reset-deassert-us = <30000>;
			reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;

			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";
};

&mali {
	mali-supply = <&vddee>;
};

&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>, <&pwm_d_pins>;
	pinctrl-names = "default";
	clocks = <&clkc CLKID_XTAL>, <&clkc CLKID_XTAL>;
	clock-names = "clkin0", "clkin1";
};

&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";
};
