// SPDX-License-Identifier: GPL-2.0
/*
 * dts file for Hisilicon HiKey Development Board
 *
 * Copyright (C) 2015, Hisilicon Ltd.
 *
 */

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

/ {
	model = "HiKey Development Board";
	compatible = "hisilicon,hi6220-hikey", "hisilicon,hi6220";

	aliases {
		serial0 = &uart0; /* On board UART0 */
		serial1 = &uart1; /* BT UART */
		serial2 = &uart2; /* LS Expansion UART0 */
		serial3 = &uart3; /* LS Expansion UART1 */
	};

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

	/*
	 * Reserve below regions from memory node:
	 *
	 *  0x05e0,0000 - 0x05ef,ffff: MCU firmware runtime using
	 *  0x05f0,1000 - 0x05f0,1fff: Reboot reason
	 *  0x06df,f000 - 0x06df,ffff: Mailbox message data
	 *  0x0740,f000 - 0x0740,ffff: MCU firmware section
	 *  0x21f0,0000 - 0x21ff,ffff: pstore/ramoops buffer
	 *  0x3e00,0000 - 0x3fff,ffff: OP-TEE
	 */
	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x00000000 0x00000000 0x05e00000>,
		      <0x00000000 0x05f00000 0x00000000 0x00001000>,
		      <0x00000000 0x05f02000 0x00000000 0x00efd000>,
		      <0x00000000 0x06e00000 0x00000000 0x0060f000>,
		      <0x00000000 0x07410000 0x00000000 0x1aaf0000>,
		      <0x00000000 0x22000000 0x00000000 0x1c000000>;
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		ramoops@0x21f00000 {
			compatible = "ramoops";
			reg = <0x0 0x21f00000 0x0 0x00100000>;
			record-size	= <0x00020000>;
			console-size	= <0x00020000>;
			ftrace-size	= <0x00020000>;
		};

		/* global autoconfigured region for contiguous allocations */
		linux,cma {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x00000000 0x08000000>;
			linux,cma-default;
		};
	};

	reboot-mode-syscon@5f01000 {
		compatible = "syscon", "simple-mfd";
		reg = <0x0 0x05f01000 0x0 0x00001000>;

		reboot-mode {
			compatible = "syscon-reboot-mode";
			offset = <0x0>;

			mode-normal	= <0x77665501>;
			mode-bootloader	= <0x77665500>;
			mode-recovery	= <0x77665502>;
		};
	};

	reg_sys_5v: regulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "SYS_5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on;
		regulator-always-on;
	};

	reg_vdd_3v3: regulator@1 {
		compatible = "regulator-fixed";
		regulator-name = "VDD_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		regulator-always-on;
		vin-supply = <&reg_sys_5v>;
	};

	reg_5v_hub: regulator@2 {
		compatible = "regulator-fixed";
		regulator-name = "5V_HUB";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on;
		gpio = <&gpio0 7 0>;
		regulator-always-on;
		vin-supply = <&reg_sys_5v>;
	};

	wl1835_pwrseq: wl1835-pwrseq {
		compatible = "mmc-pwrseq-simple";
		/* WLAN_EN GPIO */
		reset-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
		clocks = <&pmic>;
		clock-names = "ext_clock";
		power-off-delay-us = <10>;
	};

	soc {
		spi0: spi@f7106000 {
			status = "ok";
		};

		i2c0: i2c@f7100000 {
			status = "ok";
		};

		i2c1: i2c@f7101000 {
			status = "ok";
		};

		uart1: uart@f7111000 {
			assigned-clocks = <&sys_ctrl HI6220_UART1_SRC>;
			assigned-clock-rates = <150000000>;
			status = "ok";

			bluetooth {
				compatible = "ti,wl1835-st";
				enable-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
				clocks = <&pmic>;
				clock-names = "ext_clock";
			};
		};

		uart2: uart@f7112000 {
			status = "ok";
		};

		uart3: uart@f7113000 {
			status = "ok";
		};

		/*
		 * Legend: proper name = the GPIO line is used as GPIO
		 *         NC = not connected (not routed from the SoC)
		 *         "[PER]" = pin is muxed for peripheral (not GPIO)
		 *         "" = no idea, schematic doesn't say, could be
		 *              unrouted (not connected to any external pin)
		 *         LSEC = Low Speed External Connector
		 *         HSEC = High Speed External Connector
		 *
		 * Pin assignments taken from LeMaker and CircuitCo Schematics
		 * Rev A1.
		 *
		 * For the lines routed to the external connectors the
		 * lines are named after the 96Boards CE Specification 1.0,
		 * Appendix "Expansion Connector Signal Description".
		 *
		 * When the 96Board naming of a line and the schematic name of
		 * the same line are in conflict, the 96Board specification
		 * takes precedence, which means that the external UART on the
		 * LSEC is named UART0 while the schematic and SoC names this
		 * UART2. This is only for the informational lines i.e. "[FOO]",
		 * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only
		 * ones actually used for GPIO.
		 */
		gpio0: gpio@f8011000 {
			gpio-line-names = "PWR_HOLD", "DSI_SEL",
			"USB_HUB_RESET_N", "USB_SEL", "HDMI_PD", "WL_REG_ON",
			"PWRON_DET", "5V_HUB_EN";
		};

		gpio1: gpio@f8012000 {
			gpio-line-names = "SD_DET", "HDMI_INT", "PMU_IRQ_N",
			"WL_HOST_WAKE", "NC", "NC", "NC", "BT_REG_ON";
		};

		gpio2: gpio@f8013000 {
			gpio-line-names =
				"GPIO-A", /* LSEC Pin 23: GPIO2_0 */
				"GPIO-B", /* LSEC Pin 24: GPIO2_1 */
				"GPIO-C", /* LSEC Pin 25: GPIO2_2 */
				"GPIO-D", /* LSEC Pin 26: GPIO2_3 */
				"GPIO-E", /* LSEC Pin 27: GPIO2_4 */
				"USB_ID_DET", "USB_VBUS_DET",
				"GPIO-H"; /* LSEC Pin 30: GPIO2_7 */
		};

		gpio3: gpio@f8014000 {
			gpio-line-names = "GPIO3_0", "NC", "NC", "", "NC", "",
			"WLAN_ACTIVE", "NC", "NC";
		};

		gpio4: gpio@f7020000 {
			gpio-line-names = "USER_LED1", "USER_LED2", "USER_LED3",
			"USER_LED4", "SD_SEL", "NC", "NC", "BT_ACTIVE";
		};

		gpio5: gpio@f7021000 {
			gpio-line-names = "NC", "NC",
			"[UART1_RxD]", /* LSEC Pin 11: UART3_RX */
			"[UART1_TxD]", /* LSEC Pin 13: UART3_TX */
			"[AUX_SSI1]", "NC",
			"[PCM_CLK]", /* LSEC Pin 18: MODEM_PCM_XCLK */
			"[PCM_FS]"; /* LSEC Pin 16: MODEM_PCM_XFS */
		};

		gpio6: gpio@f7022000 {
			gpio-line-names =
			"[SPI0_DIN]", /* Pin 10: SPI0_DI */
			"[SPI0_DOUT]", /* Pin 14: SPI0_DO */
			"[SPI0_CS]", /* Pin 12: SPI0_CS_N */
			"[SPI0_SCLK]", /* Pin 8: SPI0_SCLK */
			"NC", "NC", "NC",
			"GPIO-G"; /* Pin 29: GPIO6_7_DSI_TE0 */
		};

		gpio7: gpio@f7023000 {
			gpio-line-names = "NC", "NC", "NC", "NC",
			"[PCM_DI]", /* Pin 22: MODEM_PCM_DI */
			"[PCM_DO]", /* Pin 20: MODEM_PCM_DO */
			"NC", "NC";
		};

		gpio8: gpio@f7024000 {
			gpio-line-names = "NC", "[CEC_CLK_19_2MHZ]", "NC",
			"", "", "", "", "", "";
		};

		gpio9: gpio@f7025000 {
			gpio-line-names = "",
			"GPIO-J", /* LSEC Pin 32: ISP_PWDN0_GPIO9_1 */
			"GPIO-L", /* LSEC Pin 34: ISP_PWDN1_GPIO9_2 */
			"NC", "NC", "NC", "NC", "[ISP_CCLK0]";
		};

		gpio10: gpio@f7026000 {
			gpio-line-names = "BOOT_SEL",
			"[ISP_CCLK1]",
			"GPIO-I", /* LSEC Pin 31: ISP_RSTB0_GPIO10_2 */
			"GPIO-K", /* LSEC Pin 33: ISP_RSTB1_GPIO10_3 */
			"NC", "NC",
			"[I2C2_SDA]", /* HSEC Pin 34: ISP0_SDA */
			"[I2C2_SCL]"; /* HSEC Pin 32: ISP0_SCL */
		};

		gpio11: gpio@f7027000 {
			gpio-line-names =
			"[I2C3_SDA]", /* HSEC Pin 38: ISP1_SDA */
			"[I2C3_SCL]", /* HSEC Pin 36: ISP1_SCL */
			"", "NC", "NC", "NC", "", "";
		};

		gpio12: gpio@f7028000 {
			gpio-line-names = "[BT_PCM_XFS]", "[BT_PCM_DI]",
			"[BT_PCM_DO]",
			"NC", "NC", "NC", "NC",
			"GPIO-F"; /* LSEC Pin 28: BL_PWM_GPIO12_7 */
		};

		gpio13: gpio@f7029000 {
			gpio-line-names = "[UART0_RX]", "[UART0_TX]",
			"[BT_UART1_CTS]", "[BT_UART1_RTS]",
			"[BT_UART1_RX]", "[BT_UART1_TX]",
			"[UART0_CTS]", /* LSEC Pin 3: UART2_CTS_N */
			"[UART0_RTS]"; /* LSEC Pin 9: UART2_RTS_N */
		};

		gpio14: gpio@f702a000 {
			gpio-line-names =
			"[UART0_RxD]", /* LSEC Pin 7: UART2_RX */
			"[UART0_TxD]", /* LSEC Pin 5: UART2_TX */
			"[I2C0_SCL]", /* LSEC Pin 15: I2C0_SCL */
			"[I2C0_SDA]", /* LSEC Pin 17: I2C0_SDA */
			"[I2C1_SCL]", /* LSEC Pin 19: I2C1_SCL */
			"[I2C1_SDA]", /* LSEC Pin 21: I2C1_SDA */
			"[I2C2_SCL]", "[I2C2_SDA]";
		};

		gpio15: gpio@f702b000 {
			gpio-line-names = "", "", "", "", "", "", "NC", "";
		};

		/* GPIO blocks 16 thru 19 do not appear to be routed to pins */

		dwmmc_0: dwmmc0@f723d000 {
			cap-mmc-highspeed;
			non-removable;
			bus-width = <0x8>;
			vmmc-supply = <&ldo19>;
		};

		dwmmc_1: dwmmc1@f723e000 {
			card-detect-delay = <200>;
			cap-sd-highspeed;
			sd-uhs-sdr12;
			sd-uhs-sdr25;
			sd-uhs-sdr50;
			vqmmc-supply = <&ldo7>;
			vmmc-supply = <&ldo10>;
			bus-width = <0x4>;
			disable-wp;
			cd-gpios = <&gpio1 0 1>;
		};

		dwmmc_2: dwmmc2@f723f000 {
			bus-width = <0x4>;
			non-removable;
			vmmc-supply = <&reg_vdd_3v3>;
			mmc-pwrseq = <&wl1835_pwrseq>;

			#address-cells = <0x1>;
			#size-cells = <0x0>;
			wlcore: wlcore@2 {
				compatible = "ti,wl1835";
				reg = <2>;	/* sdio func num */
				/* WL_IRQ, WL_HOST_WAKE_GPIO1_3 */
				interrupt-parent = <&gpio1>;
				interrupts = <3 IRQ_TYPE_EDGE_RISING>;
			};
		};
	};

	leds {
		compatible = "gpio-leds";
		user_led4 {
			label = "user_led4";
			gpios = <&gpio4 0 0>; /* <&gpio_user_led_1>; */
			linux,default-trigger = "heartbeat";
		};

		user_led3 {
			label = "user_led3";
			gpios = <&gpio4 1 0>; /* <&gpio_user_led_2>; */
			linux,default-trigger = "mmc0";
		};

		user_led2 {
			label = "user_led2";
			gpios = <&gpio4 2 0>; /* <&gpio_user_led_3>; */
			linux,default-trigger = "mmc1";
		};

		user_led1 {
			label = "user_led1";
			gpios = <&gpio4 3 0>; /* <&gpio_user_led_4>; */
			panic-indicator;
			linux,default-trigger = "cpu0";
		};

		wlan_active_led {
			label = "wifi_active";
			gpios = <&gpio3 5 0>; /* <&gpio_wlan_active_led>; */
			linux,default-trigger = "phy0tx";
			default-state = "off";
		};

		bt_active_led {
			label = "bt_active";
			gpios = <&gpio4 7 0>; /* <&gpio_bt_active_led>; */
			linux,default-trigger = "hci0rx";
			default-state = "off";
		};
	};

	pmic: pmic@f8000000 {
		compatible = "hisilicon,hi655x-pmic";
		reg = <0x0 0xf8000000 0x0 0x1000>;
		#clock-cells = <0>;
		interrupt-controller;
		#interrupt-cells = <2>;
		pmic-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;

		regulators {
			ldo2: LDO2 {
				regulator-name = "LDO2_2V8";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3200000>;
				regulator-enable-ramp-delay = <120>;
			};

			ldo7: LDO7 {
				regulator-name = "LDO7_SDIO";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <120>;
			};

			ldo10: LDO10 {
				regulator-name = "LDO10_2V85";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3000000>;
				regulator-enable-ramp-delay = <360>;
			};

			ldo13: LDO13 {
				regulator-name = "LDO13_1V8";
				regulator-min-microvolt = <1600000>;
				regulator-max-microvolt = <1950000>;
				regulator-enable-ramp-delay = <120>;
			};

			ldo14: LDO14 {
				regulator-name = "LDO14_2V8";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3200000>;
				regulator-enable-ramp-delay = <120>;
			};

			ldo15: LDO15 {
				regulator-name = "LDO15_1V8";
				regulator-min-microvolt = <1600000>;
				regulator-max-microvolt = <1950000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-enable-ramp-delay = <120>;
			};

			ldo17: LDO17 {
				regulator-name = "LDO17_2V5";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3200000>;
				regulator-enable-ramp-delay = <120>;
			};

			ldo19: LDO19 {
				regulator-name = "LDO19_3V0";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3000000>;
				regulator-enable-ramp-delay = <360>;
			};

			ldo21: LDO21 {
				regulator-name = "LDO21_1V8";
				regulator-min-microvolt = <1650000>;
				regulator-max-microvolt = <2000000>;
				regulator-always-on;
				regulator-enable-ramp-delay = <120>;
			};

			ldo22: LDO22 {
				regulator-name = "LDO22_1V2";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1200000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-enable-ramp-delay = <120>;
			};
		};
	};

	firmware {
		optee {
			compatible = "linaro,optee-tz";
			method = "smc";
		};
	};

	sound_card {
		compatible = "audio-graph-card";
		dais = <&i2s0_port0>;
	};
};

&uart2 {
	label = "LS-UART0";
};
&uart3 {
	label = "LS-UART1";
};

&ade {
	status = "ok";
};

&dsi {
	status = "ok";

	ports {
		/* 1 for output port */
		port@1 {
			reg = <1>;

			dsi_out0: endpoint@0 {
				remote-endpoint = <&adv7533_in>;
			};
		};
	};
};

&i2c2 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "ok";

	adv7533: adv7533@39 {
		compatible = "adi,adv7533";
		reg = <0x39>;
		interrupt-parent = <&gpio1>;
		interrupts = <1 2>;
		pd-gpio = <&gpio0 4 0>;
		adi,dsi-lanes = <4>;
		#sound-dai-cells = <0>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				adv7533_in: endpoint {
					remote-endpoint = <&dsi_out0>;
				};
			};
			port@2 {
				reg = <2>;
				codec_endpoint: endpoint {
					remote-endpoint = <&i2s0_cpu_endpoint>;
				};
			};
		};
	};
};

&i2s0 {

	ports {
		i2s0_port0: port@0 {
			i2s0_cpu_endpoint: endpoint {
				remote-endpoint = <&codec_endpoint>;
				dai-format = "i2s";
			};
		};
	};
};
