// SPDX-License-Identifier: GPL-2.0
#include "qcom-apq8064-v2.0.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>

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

	pwrseq {
		compatible = "simple-bus";

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

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

		led@1 {
			label = "apq8064:green:user1";
			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>;
			};
		};
	};

	soc {
		pinctrl@800000 {
			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;
				};
			};
		};

		rpm@108000 {
			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 */
				s1 {
					regulator-always-on;
					regulator-min-microvolt = <1225000>;
					regulator-max-microvolt = <1225000>;
					qcom,switch-mode-frequency = <3200000>;
					bias-pull-down;
				};

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

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

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

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

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

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

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

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

				lvs1 {
					bias-pull-down;
				};

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

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

		gsbi3: gsbi@16200000 {
			status = "okay";
			qcom,mode = <GSBI_PROT_I2C>;
			i2c@16280000 {
				status = "okay";
			};
		};

		gsbi@16300000 {
			status = "okay";
			qcom,mode = <GSBI_PROT_I2C>;
			/* CAM I2C MIPI-CSI connector */
			i2c@16380000 {
				status = "okay";
			};
		};

		gsbi@12440000 {
			status = "okay";
			qcom,mode = <GSBI_PROT_I2C>;

			i2c@12460000 {
				status = "okay";
				clock-frequency = <200000>;

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

		gsbi@1a200000 {
			qcom,mode = <GSBI_PROT_SPI>;
			status = "okay";
			spi4: spi@1a280000 {
				status = "okay";
				num-cs = <1>;
				cs-gpios = <&tlmm_pinmux 53 0>;
			};
		};

		gsbi@16500000 {
			status = "ok";
			qcom,mode = <GSBI_PROT_UART_W_FC>;

			serial@16540000 {
				status = "ok";
				pinctrl-names = "default";
				pinctrl-0 = <&gsbi6_uart_4pins>;
			};
		};

		gsbi@16600000 {
			status = "ok";
			qcom,mode = <GSBI_PROT_I2C_UART>;
			serial@16640000 {
				status = "ok";
				pinctrl-names = "default";
				pinctrl-0 = <&gsbi7_uart_2pins>;
			};
		};

		sata_phy0: phy@1b400000 {
			status = "okay";
		};

		sata0: sata@29000000 {
			status		= "okay";
			target-supply	= <&pm8921_s4>;
		};

		/* OTG */
		usb@12500000 {
			status = "okay";
			dr_mode = "otg";
			ulpi {
				phy {
					v3p3-supply = <&pm8921_l3>;
					v1p8-supply = <&pm8921_l4>;
				};
			};
		};

		usb@12520000 {
			status = "okay";
			dr_mode = "host";
			ulpi {
				phy {
					v3p3-supply = <&pm8921_l3>;
					v1p8-supply = <&pm8921_l23>;
				};
			};
		};

		usb@12530000 {
			status = "okay";
			dr_mode = "host";
			ulpi {
				phy {
					v3p3-supply = <&pm8921_l3>;
					v1p8-supply = <&pm8921_l23>;
				};
			};
		};

		pci@1b500000 {
			status = "ok";
			vdda-supply = <&pm8921_s3>;
			vdda_phy-supply = <&pm8921_lvs6>;
			vdda_refclk-supply = <&ext_3p3v>;
			pinctrl-0 = <&pcie_pins>;
			pinctrl-names = "default";
			perst-gpio = <&tlmm_pinmux 27 GPIO_ACTIVE_LOW>;
		};

		qcom,ssbi@500000 {
			pmic@0 {
				gpio@150 {
					wlan_default_gpios: wlan-gpios {
						pios {
							pins = "gpio43";
							function = "normal";
							bias-disable;
							power-source = <PM8921_GPIO_S4>;
						};
					};

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

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

			/* External micro SD card */
			sdcc3: sdcc@12180000 {
				status = "okay";
				vmmc-supply = <&pm8921_l6>;
				pinctrl-names	= "default";
				pinctrl-0	= <&card_detect>;
				cd-gpios	= <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
			};
			/* WLAN */
			sdcc4: sdcc@121c0000 {
				status = "okay";
				vmmc-supply = <&ext_3p3v>;
				vqmmc-supply = <&pm8921_lvs1>;
				mmc-pwrseq = <&sdcc4_pwrseq>;
			};
		};

		hdmi-tx@4a00000 {
			status = "okay";

			core-vdda-supply = <&pm8921_hdmi_switch>;
			hdmi-mux-supply = <&ext_3p3v>;

			hpd-gpios = <&tlmm_pinmux 72 GPIO_ACTIVE_HIGH>;

			ports {
				port@0 {
					endpoint {
						remote-endpoint = <&mdp_dtv_out>;
					};
				};

				port@1 {
					endpoint {
						remote-endpoint = <&hdmi_con>;
					};
				};
			};
		};

		hdmi-phy@4a00400 {
			status = "okay";

			core-vdda-supply = <&pm8921_hdmi_switch>;
		};

		mdp@5100000 {
			status = "okay";

			ports {
				port@3 {
					endpoint {
						remote-endpoint = <&hdmi_in>;
					};
				};
			};
		};
	};
};
