// 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@21f00000 {
			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";
		post-power-on-delay-ms = <10>;
		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;
			cap-power-off-card;
			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";
			};
		};
	};
};
