// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2018 MundoReader S.L.
 * Author:  Heiko Stuebner <heiko.stuebner@bq.com>
 */

/dts-v1/;
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/input/input.h>
#include "rk3188.dtsi"

/ {
	model = "BQ Edison2 Quad-Core";
	compatible = "mundoreader,bq-edison2qc", "rockchip,rk3188";

	memory@60000000 {
		device_type = "memory";
		reg = <0x60000000 0x80000000>;
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		power-supply = <&vsys>;
		pwms = <&pwm1 0 25000>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		autorepeat;
		pinctrl-names = "default";
		pinctrl-0 = <&pwr_key &usb_int>;

		power {
			gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			label = "GPIO Key Power";
			linux,input-type = <1>;
			debounce-interval = <100>;
			wakeup-source;
		};

		wake_on_usb: wake-on-usb {
			label = "Wake-on-USB";
			gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_WAKEUP>;
			wakeup-source;
		};
	};

	gpio-poweroff {
		compatible = "gpio-poweroff";
		gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pwr_hold>;
		/* only drive the pin low until device is off */
		active-delay-ms = <3000>;
	};

	lvds-encoder {
		compatible = "ti,sn75lvds83", "lvds-encoder";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				lvds_in_vop0: endpoint {
					remote-endpoint = <&vop0_out_lvds>;
				};
			};

			port@1 {
				reg = <1>;

				lvds_out_panel: endpoint {
					remote-endpoint = <&panel_in_lvds>;
				};
			};
		};
	};

	panel {
		compatible = "innolux,ee101ia-01d", "panel-lvds";
		backlight = <&backlight>;

		/* pin LCD_CS, Nshtdn input of lvds-encoder */
		enable-gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&lcd_cs>;
		power-supply = <&vcc_lcd>;

		data-mapping = "vesa-24";
		height-mm = <163>;
		width-mm = <261>;

		panel-timing {
			clock-frequency = <72000000>;
			hactive = <1280>;
			vactive = <800>;
			hback-porch = <160>;
			hfront-porch = <16>;
			hsync-len = <10>;
			vback-porch = <23>;
			vfront-porch = <12>;
			vsync-len = <3>;
		};

		port {
			panel_in_lvds: endpoint {
				remote-endpoint = <&lvds_out_panel>;
			};
		};
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&hym8563>;
		clock-names = "ext_clock";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_reg_on>;
		reset-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>;
	};

	avdd_cif: cif-avdd-regulator {
		compatible = "regulator-fixed";
		regulator-name = "avdd-cif";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&cif_avdd_en>;
		startup-delay-us = <100000>;
		vin-supply = <&vcc28_cif>;
	};

	vcc_5v: vcc-5v-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc-5v";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		gpio = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&v5_drv>;
		vin-supply = <&vsys>;
	};

	vcc_lcd: lcd-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc-lcd";
		gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&lcd_en>;
		startup-delay-us = <50000>;
		vin-supply = <&vcc_io>;
	};

	vcc_otg: usb-otg-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc-otg";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		gpio = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&otg_drv>;
		startup-delay-us = <100000>;
		vin-supply = <&vcc_5v>;
	};

	vcc_sd: sdmmc-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc-sd";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&sdmmc_pwr>;
		startup-delay-us = <100000>;
		vin-supply = <&vcc_io>;
	};

	vccq_emmc: emmc-vccq-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vccq-emmc";
		regulator-min-microvolt = <2800000>;
		regulator-max-microvolt = <2800000>;
		vin-supply = <&vcc_io>;
	};

	/* supplied from the bq24196 */
	vsys: vsys-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vsys";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on;
	};
};

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

&cpu1 {
	cpu-supply = <&vdd_arm>;
};

&cpu2 {
	cpu-supply = <&vdd_arm>;
};

&cpu3 {
	cpu-supply = <&vdd_arm>;
};

&cru {
	assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>,
			  <&cru ACLK_CPU>,
			  <&cru HCLK_CPU>, <&cru PCLK_CPU>,
			  <&cru ACLK_PERI>, <&cru HCLK_PERI>,
			  <&cru PCLK_PERI>;
	assigned-clock-rates = <594000000>, <504000000>,
			       <300000000>,
			       <150000000>, <75000000>,
			       <300000000>, <150000000>,
			       <75000000>;
};

&emmc {
	bus-width = <8>;
	cap-mmc-highspeed;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&emmc_clk &emmc_cmd>;
	vmmc-supply = <&vcc_io>;
	vqmmc-supply = <&vccq_emmc>;
	status = "okay";
};

&gpu {
	status = "okay";
};

&i2c0 {
	clock-frequency = <400000>;
	status = "okay";

	lis3de: accelerometer@29 {
		compatible = "st,lis3de";
		reg = <0x29>;
		interrupt-parent = <&gpio0>;
		interrupts = <RK_PB7 IRQ_TYPE_EDGE_RISING>;
		pinctrl-names = "default";
		pinctrl-0 = <&gsensor_int>;
		rotation-matrix = "1", "0", "0",
				  "0", "-1", "0",
				  "0", "0", "1";
		vdd-supply = <&vcc_io>;
	};
};

&i2c1 {
	clock-frequency = <400000>;
	status = "okay";

	tmp108@48 {
		compatible = "ti,tmp108";
		reg = <0x48>;
		interrupt-parent = <&gpio1>;
		interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&tmp_alrt>;
		#thermal-sensor-cells = <0>;
	};

	hym8563: rtc@51 {
		compatible = "haoyu,hym8563";
		reg = <0x51>;
		interrupt-parent = <&gpio0>;
		interrupts = <RK_PB5 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&rtc_int>;
		#clock-cells = <0>;
		clock-output-names = "xin32k";
	};

	bat: battery@55 {
		compatible = "ti,bq27541";
		reg = <0x55>;
		power-supplies = <&bq24196>;
	};

	act8846: pmic@5a {
		compatible = "active-semi,act8846";
		reg = <0x5a>;
		pinctrl-names = "default";
		pinctrl-0 = <&dvs0_ctl &pmic_int>;

		vp1-supply = <&vsys>;
		vp2-supply = <&vsys>;
		vp3-supply = <&vsys>;
		vp4-supply = <&vsys>;
		inl1-supply = <&vcc_io>;
		inl2-supply = <&vsys>;
		inl3-supply = <&vsys>;

		regulators {
			vcc_ddr: REG1 {
				regulator-name = "VCC_DDR";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			vdd_log: REG2 {
				regulator-name = "VDD_LOG";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			vdd_arm: REG3 {
				regulator-name = "VDD_ARM";
				regulator-min-microvolt = <875000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
			};

			vcc_io: vcc_hdmi: REG4 {
				regulator-name = "VCC_IO";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
			};

			vdd_10: REG5 {
				regulator-name = "VDD_10";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			vdd_12: REG6 {
				regulator-name = "VDD_12";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			vcc18_cif: REG7 {
				regulator-name = "VCC18_CIF";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			vcca_33: REG8 {
				regulator-name = "VCCA_33";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vcc_tp: REG9 {
				regulator-name = "VCC_TP";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vccio_wl: REG10 {
				regulator-name = "VCCIO_WL";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-always-on;
			};

			vcc_18: REG11 {
				regulator-name = "VCC_18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			vcc28_cif: REG12 {
				regulator-name = "VCC28_CIF";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-always-on;
			};
		};
	};

	bq24196: charger@6b {
		compatible = "ti,bq24196";
		reg = <0x6b>;
		interrupt-parent = <&gpio0>;
		interrupts = <RK_PD7 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&charger_int &chg_ctl &otg_en>;
		ti,system-minimum-microvolt = <3200000>;
		monitored-battery = <&bat>;
		omit-battery-class;

		usb_otg_vbus: usb-otg-vbus { };
	};
};

&i2c2 {
	clock-frequency = <400000>;
	status = "okay";

	ft5606: touchscreen@3e {
		compatible = "edt,edt-ft5506";
		reg = <0x3e>;
		interrupt-parent = <&gpio1>;
		interrupts = <RK_PB7 IRQ_TYPE_EDGE_FALLING>;
		pinctrl-names = "default";
		pinctrl-0 = <&tp_int &tp_rst>;
		reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
		touchscreen-inverted-y;
		/* hw ts resolution does not match display */
		touchscreen-size-y = <1024>;
		touchscreen-size-x = <768>;
		touchscreen-swapped-x-y;
	};
};

&i2c3 {
	clock-frequency = <400000>;
	status = "okay";
};

&i2c4 {
	clock-frequency = <400000>;
	status = "okay";

	rt5616: codec@1b {
		compatible = "realtek,rt5616";
		reg = <0x1b>;
		clocks = <&cru SCLK_I2S0>;
		clock-names = "mclk";
		#sound-dai-cells = <0>;
	};
};

&i2s0 {
	status = "okay";
};

&mmc0 {
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	pinctrl-names = "default";
	pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
	vmmc-supply = <&vcc_sd>;
	status = "okay";
};

&mmc1 {
	bus-width = <4>;
	cap-sd-highspeed;
	keep-power-in-suspend;
	mmc-pwrseq = <&sdio_pwrseq>;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_bus4>;
	vqmmc-supply = <&vccio_wl>;
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	brcmf: wifi@1 {
		reg = <1>;
		compatible = "brcm,bcm4329-fmac";
		interrupt-parent = <&gpio3>;
		interrupts = <RK_PD2 GPIO_ACTIVE_HIGH>;
		interrupt-names = "host-wake";
		brcm,drive-strength = <5>;
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_host_wake>;
	};
};

&pwm1 {
	status = "okay";
};

&pinctrl {
	pcfg_output_high: pcfg-output-high {
		output-high;
	};

	pcfg_output_low: pcfg-output-low {
		output-low;
	};

	act8846 {
		dvs0_ctl: dvs0-ctl {
			rockchip,pins = <3 RK_PD3 RK_FUNC_GPIO &pcfg_output_low>;
		};

		pmic_int: pmic-int {
			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	bq24196 {
		charger_int: charger-int {
			rockchip,pins = <0 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		/* pin hog to make it select usb profile */
		chg_ctl: chg-ctl {
			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_output_high>;
		};

		/* low: charging, high: complete, fault: blinking */
		chg_det: chg-det {
			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		/* charging enabled when pin low and register set */
		chg_en: chg-en {
			rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_output_low>;
		};

		/* bq29196 powergood (when low) signal */
		dc_det: dc-det {
			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		/* wire bq24196 otg pin to high, to enable 500mA charging */
		otg_en: otg-en {
			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_output_high>;
		};
	};

	camera {
		cif0_pdn: cif0-pdn {
			rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		cif1_pdn: cif1-pdn {
			rockchip,pins = <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		cif_avdd_en: cif-avdd-en {
			rockchip,pins = <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	display {
		lcd_cs: lcd-cs {
			rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		lcd_en: lcd-en {
			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	ft5606 {
		tp_int: tp-int {
			rockchip,pins = <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		tp_rst: tp-rst {
			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	hdmi {
		hdmi_int: hdmi-int {
			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		hdmi_rst: hdmi-rst {
			rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	hym8563 {
		rtc_int: rtc-int {
			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	keys {
		pwr_hold: pwr-hold {
			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		pwr_key: pwr-key {
			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	lis3de {
		gsensor_int: gsensor-int {
			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	mmc {
		sdmmc_pwr: sdmmc-pwr {
			rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	tmp108 {
		tmp_alrt: tmp-alrt {
			rockchip,pins = <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	usb {
		v5_drv: v5-drv {
			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		otg_drv: otg-drv {
			rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		usb_int: usb-int {
			rockchip,pins = <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	rk903 {
		bt_host_wake: bt-host-wake {
			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		bt_reg_on: bt-reg-on {
			rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		/* pin hog to pull the reset high */
		bt_rst: bt-rst {
			rockchip,pins = <3 RK_PD1 RK_FUNC_GPIO &pcfg_output_high>;
		};

		bt_wake: bt-wake {
			rockchip,pins = <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		wifi_host_wake: wifi-host-wake {
			rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		wifi_reg_on: wifi-reg-on {
			rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

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

&spdif {
	status = "okay";
};

&uart0 {
	pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
	status = "okay";

	bluetooth {
		compatible = "brcm,bcm43438-bt";
		max-speed = <2000000>;
		device-wakeup-gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>;
		host-wakeup-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
		shutdown-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&bt_host_wake &bt_reg_on &bt_rst &bt_wake>;
	};
};

&uart1 {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&uart3 {
	pinctrl-0 = <&uart3_xfer &uart3_cts &uart3_rts>;
	status = "okay";
};

&usbphy {
	status = "okay";
};

&usb_host {
	status = "okay";
};

&usb_otg {
	status = "okay";
};

&vop0 {
	status = "okay";
};

&vop0_out {
	vop0_out_lvds: endpoint {
		remote-endpoint = <&lvds_in_vop0>;
	};
};

&vop1 {
	pinctrl-names = "default";
	pinctrl-0 = <&lcdc1_dclk &lcdc1_den &lcdc1_hsync
		     &lcdc1_vsync &lcdc1_rgb24>;
	status = "okay";
};

&wdt {
	status = "okay";
};
