// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>

#include "qcom-apq8064-v2.0.dtsi"
#include "pm8821.dtsi"
#include "pm8921.dtsi"

/ {
	model = "Qualcomm APQ8064/IFC6410";
	compatible = "qcom,apq8064-ifc6410", "qcom,apq8064";

	aliases {
		serial0 = &gsbi7_serial;
		serial1 = &gsbi6_serial;
		i2c0 = &gsbi1_i2c;
		i2c1 = &gsbi2_i2c;
		i2c2 = &gsbi3_i2c;
		i2c3 = &gsbi4_i2c;
		spi0 = &gsbi5_spi;
	};

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

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&notify_led>;

		led-user1 {
			label = "apq8064:green:user1";
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&pm8921_gpio 18 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};
	};

	hdmi-out {
		compatible = "hdmi-connector";
		type = "d";

		port {
			hdmi_con: endpoint {
				remote-endpoint = <&hdmi_out>;
			};
		};
	};

	sdcc4_pwrseq: pwrseq-sdcc4 {
		pinctrl-names = "default";
		pinctrl-0 = <&wlan_default_gpios>;
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&pm8921_gpio 43 GPIO_ACTIVE_LOW>;
	};

	ext_3p3v: regulator-ext-3p3v {
		compatible = "regulator-fixed";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-name = "ext_3p3v";
		startup-delay-us = <0>;
		gpio = <&tlmm_pinmux 77 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-boot-on;
	};
};

&gsbi1 {
	qcom,mode = <GSBI_PROT_I2C>;
	status = "okay";
};

&gsbi1_i2c {
	clock-frequency = <200000>;
	status = "okay";

	eeprom@52 {
		compatible = "atmel,24c128";
		reg = <0x52>;
		pagesize = <32>;
	};
};

&gsbi3 {
	qcom,mode = <GSBI_PROT_I2C>;
	status = "okay";
};

&gsbi3_i2c {
	status = "okay";
};

&gsbi4 {
	qcom,mode = <GSBI_PROT_I2C>;
	status = "okay";
};

/* CAM I2C MIPI-CSI connector */
&gsbi4_i2c {
	status = "okay";
};

&gsbi5 {
	qcom,mode = <GSBI_PROT_SPI>;
	status = "okay";
};

&gsbi5_spi {
	num-cs = <1>;
	cs-gpios = <&tlmm_pinmux 53 0>;
	status = "okay";
};

&gsbi6 {
	qcom,mode = <GSBI_PROT_UART_W_FC>;
	status = "okay";
};

&gsbi6_serial {
	pinctrl-names = "default";
	pinctrl-0 = <&gsbi6_uart_4pins>;
	status = "okay";
};

&gsbi7 {
	qcom,mode = <GSBI_PROT_I2C_UART>;
	status = "okay";
};

&gsbi7_serial {
	pinctrl-names = "default";
	pinctrl-0 = <&gsbi7_uart_2pins>;
	status = "okay";
};

&hdmi {
	core-vdda-supply = <&pm8921_hdmi_switch>;
	hpd-gpios = <&tlmm_pinmux 72 GPIO_ACTIVE_HIGH>;
	status = "okay";
};

&hdmi_in {
	remote-endpoint = <&mdp_dtv_out>;
};

&hdmi_out {
	remote-endpoint = <&hdmi_con>;
};

&hdmi_phy {
	status = "okay";
	core-vdda-supply = <&pm8921_hdmi_switch>;
};

&mdp {
	status = "okay";
};

&mdp_dtv_out {
	remote-endpoint = <&hdmi_in>;
};

&pcie {
	status = "okay";
	vdda-supply = <&pm8921_s3>;
	vdda_phy-supply = <&pm8921_lvs6>;
	vdda_refclk-supply = <&ext_3p3v>;
	pinctrl-0 = <&pcie_pins>;
	pinctrl-names = "default";
	perst-gpios = <&tlmm_pinmux 27 GPIO_ACTIVE_LOW>;
};

&pm8821 {
	interrupts-extended = <&tlmm_pinmux 76 IRQ_TYPE_LEVEL_LOW>;
};

&pm8921 {
	interrupts-extended = <&tlmm_pinmux 74 IRQ_TYPE_LEVEL_LOW>;
};

&pm8921_gpio {
	wlan_default_gpios: wlan-gpios-state {
		pinconf {
			pins = "gpio43";
			function = "normal";
			bias-disable;
			power-source = <PM8921_GPIO_S4>;
		};
	};

	notify_led: nled-state {
		pinconf {
			pins = "gpio18";
			function = "normal";
			bias-disable;
			power-source = <PM8921_GPIO_S4>;
		};
	};
};

&rpm {
	regulators {
		compatible = "qcom,rpm-pm8921-regulators";

		vin_lvs1_3_6-supply = <&pm8921_s4>;
		vin_lvs2-supply = <&pm8921_s1>;
		vin_lvs4_5_7-supply = <&pm8921_s4>;

		vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
		vdd_l24-supply = <&pm8921_s1>;
		vdd_l25-supply = <&pm8921_s1>;
		vdd_l26-supply = <&pm8921_s7>;
		vdd_l27-supply = <&pm8921_s7>;
		vdd_l28-supply = <&pm8921_s7>;

		/* Buck SMPS */
		pm8921_s1: s1 {
			regulator-always-on;
			regulator-min-microvolt = <1225000>;
			regulator-max-microvolt = <1225000>;
			qcom,switch-mode-frequency = <3200000>;
			bias-pull-down;
		};

		pm8921_s3: s3 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1400000>;
			qcom,switch-mode-frequency = <4800000>;
		};

		pm8921_s4: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			qcom,switch-mode-frequency = <3200000>;
		};

		pm8921_s7: s7 {
			regulator-min-microvolt = <1300000>;
			regulator-max-microvolt = <1300000>;
			qcom,switch-mode-frequency = <3200000>;
		};

		pm8921_l3: l3 {
			regulator-min-microvolt = <3050000>;
			regulator-max-microvolt = <3300000>;
			bias-pull-down;
		};

		pm8921_l4: l4 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1800000>;
			bias-pull-down;
		};

		pm8921_l5: l5 {
			regulator-min-microvolt = <2750000>;
			regulator-max-microvolt = <3000000>;
			bias-pull-down;
		};

		pm8921_l6: l6 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
			bias-pull-down;
		};

		pm8921_l23: l23 {
			regulator-min-microvolt = <1700000>;
			regulator-max-microvolt = <1900000>;
			bias-pull-down;
		};

		pm8921_lvs1: lvs1 {
			bias-pull-down;
		};

		pm8921_lvs6: lvs6 {
			bias-pull-down;
		};

		pm8921_hdmi_switch: hdmi-switch {
			bias-pull-down;
		};
	};
};

&sata_phy0 {
	status = "okay";
};

&sata0 {
	target-supply = <&pm8921_s4>;
	status = "okay";
};

/* eMMC */
&sdcc1 {
	vmmc-supply = <&pm8921_l5>;
	vqmmc-supply = <&pm8921_s4>;
	status = "okay";
};

/* External micro SD card */
&sdcc3 {
	vmmc-supply = <&pm8921_l6>;
	pinctrl-names = "default";
	pinctrl-0 = <&card_detect>;
	cd-gpios = <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
	status = "okay";
};

/* WLAN */
&sdcc4 {
	vmmc-supply = <&ext_3p3v>;
	vqmmc-supply = <&pm8921_lvs1>;
	mmc-pwrseq = <&sdcc4_pwrseq>;
	status = "okay";
};

&tlmm_pinmux {
	card_detect: card_detect {
		mux {
			pins = "gpio26";
			function = "gpio";
			bias-disable;
		};
	};

	pcie_pins: pcie_pinmux {
		mux {
			pins = "gpio27";
			function = "gpio";
		};
		conf {
			pins = "gpio27";
			drive-strength = <12>;
			bias-disable;
		};
	};
};

&usb_hs1_phy {
	v3p3-supply = <&pm8921_l3>;
	v1p8-supply = <&pm8921_l4>;
};

&usb_hs3_phy {
	v3p3-supply = <&pm8921_l3>;
	v1p8-supply = <&pm8921_l23>;
};

&usb_hs4_phy {
	v3p3-supply = <&pm8921_l3>;
	v1p8-supply = <&pm8921_l23>;
};

/* OTG */
&usb1 {
	dr_mode = "otg";
	status = "okay";
};

&usb3 {
	dr_mode = "host";
	status = "okay";
};

&usb4 {
	dr_mode = "host";
	status = "okay";
};
