#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/clock/qcom,gcc-kalama.h>

#include "kalama-pmic-overlay.dtsi"
#include "kalama-thermal-overlay.dtsi"

&sdhc_2 {
	status = "ok";
	vdd-supply = <&pm_humu_l9>;
	qcom,vdd-voltage-level = <2950000 2960000>;
	qcom,vdd-current-level = <0 800000>;

	vdd-io-supply = <&pm_humu_l8>;
	qcom,vdd-io-voltage-level = <1800000 2960000>;
	qcom,vdd-io-current-level = <0 5600>;

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc2_on>, <&sd_card_det_default>;
	pinctrl-1 = <&sdc2_off>, <&sd_card_det_default>;

	cd-gpios = <&pm8550_gpios 12 GPIO_ACTIVE_LOW>;

	resets = <&gcc GCC_SDCC2_BCR>;
	reset-names = "core_reset";

	qcom,iommu-dma = "fastmap";
	qcom,uses_level_shifter;
};

&soc {
	gpio_keys {
		compatible = "gpio-keys";
		label = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&key_vol_up_default>;

		vol_up {
			label = "volume_up";
			gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEUP>;
			gpio-key,wakeup;
			debounce-interval = <15>;
			linux,can-disable;
		};
	};
};

&pm8550b_haptics {
	status = "okay";
};

&ufsphy_mem {
	compatible = "qcom,ufs-phy-qmp-v4-kalama";

	/* VDDA_UFS_CORE */
	vdda-phy-supply = <&pm_v6d_l1>;
	vdda-phy-max-microamp = <188000>;

	/* VDDA_UFS_0_1P2 */
	vdda-pll-supply = <&pm_v6e_l3>;
	vdda-pll-max-microamp = <18300>;

	/* Phy GDSC for VDD_MX, always on */
	vdd-phy-gdsc-supply = <&gcc_ufs_mem_phy_gdsc>;

	/* Qref power supply, Refer Qref diagram */
	vdda-qref-supply = <&pm_v6e_l1>;
	vdda-qref-max-microamp = <30000>;

	status = "ok";
};

&ufshc_mem {
	vdd-hba-supply = <&gcc_ufs_phy_gdsc>;

	vcc-supply = <&pm_humu_l17>;
	vcc-max-microamp = <1300000>;

	vccq-supply = <&pm_v6g_l1>;
	vccq-max-microamp = <1200000>;

	/* VDD_PX10 is voted for the ufs_reset_n */
	qcom,vddp-ref-clk-supply = <&pm_v6g_l3>;
	qcom,vddp-ref-clk-max-microamp = <100>;

	qcom,vccq-parent-supply = <&pm_v6g_s4>;
	qcom,vccq-parent-max-microamp = <210000>;

	reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
	resets = <&gcc GCC_UFS_PHY_BCR>;
	reset-names = "rst";

	status = "ok";
};

&qupv3_se4_spi {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "ok";
	qcom,touch-active = "goodix,gt9916S";
	qcom,la-vm;

	goodix-berlin@0 {
		compatible = "goodix,gt9916S";
		reg = <0>;
		spi-max-frequency = <1000000>;
		goodix,avdd-name = "avdd";
		goodix,iovdd-name = "iovdd";
		avdd-supply = <&L14B>;
		iovdd-supply = <&L12B>;
		interrupt-parent = <&tlmm>;
		interrupts = <25 0x2008>;
		goodix,reset-gpio = <&tlmm 24 0x00>;
		goodix,irq-gpio = <&tlmm 25 0x2008>;
		goodix,irq-flags = <2>;
		goodix,panel-max-x = <1080>;
		goodix,panel-max-y = <2400>;
		goodix,panel-max-w = <255>;
		goodix,panel-max-p = <4096>;
		goodix,firmware-name = "goodix_firmware_spi.bin";
		goodix,config-name = "goodix_cfg_group_spi.bin";
		goodix,touch-type = "primary";
		goodix,qts_en;
		qts,trusted-touch-mode = "vm_mode";
		qts,touch-environment = "pvm";
		qts,trusted-touch-type = "primary";
		qts,trusted-touch-spi-irq = <569>;
		qts,trusted-touch-io-bases = <0xa90000>;
		qts,trusted-touch-io-sizes = <0x1000>;
		qts,trusted-touch-vm-gpio-list = <&tlmm 44 0 &tlmm 45 0 &tlmm 46 0
						&tlmm 47 0 &tlmm 24 0 &tlmm 25 0x2008>;
	};
};

&qupv3_se8_spi {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "ok";
	qcom,touch-active = "goodix,gt9916S2";
	qcom,la-vm;

	goodix-berlin@0 {
		compatible = "goodix,gt9916S2";
		reg = <0>;
		spi-max-frequency = <1000000>;
		goodix,avdd-name = "avdd";
		goodix,iovdd-name = "iovdd";
		avdd-supply = <&L14B>;
		iovdd-supply = <&L12B>;
		interrupt-parent = <&tlmm>;
		interrupts = <48 0x2008>;
		goodix,reset-gpio = <&tlmm 13 0x00>;
		goodix,irq-gpio = <&tlmm 48 0x2008>;
		goodix,irq-flags = <2>;
		goodix,panel-max-x = <1080>;
		goodix,panel-max-y = <2400>;
		goodix,panel-max-w = <255>;
		goodix,panel-max-p = <4096>;
		goodix,firmware-name = "goodix_firmware_spi.bin";
		goodix,config-name = "goodix_cfg_group_spi.bin";
		goodix,touch-type = "secondary";
		goodix,qts_en;
		qts,trusted-touch-mode = "vm_mode";
		qts,touch-environment = "pvm";
		qts,trusted-touch-type = "secondary";
		qts,trusted-touch-spi-irq = <657>;
		qts,trusted-touch-io-bases = <0x880000>;
		qts,trusted-touch-io-sizes = <0x1000>;
		qts,trusted-touch-vm-gpio-list = <&tlmm 56 0 &tlmm 57 0 &tlmm 58 0
						&tlmm 59 0 &tlmm 13 0 &tlmm 48 0x2008>;
	};
};

&pm8550_switch0 {
	qcom,led-mask = <9>; /* Channels 1 & 4 */
	qcom,symmetry-en;
};

&pm8550_switch1 {
	qcom,led-mask = <6>; /* Channels 2 & 3 */
	qcom,symmetry-en;
};

&pm8550_switch2 {
	qcom,led-mask = <15>; /* All Channels */
	qcom,symmetry-en;
};

&pm8550_flash {
	status = "ok";
};

&pm8550b_eusb2_repeater {
	qcom,param-override-seq =
		/* <value reg_offset> */
		/* Adjust HS trasmit amplitude */
		<0xd 0x51
		/* Squelch detection threshold */
		 0x3 0x54
		/* Tx pre-emphasis tuning */
		 0x5 0x57>;
};

&eusb2_phy0 {
	dummy-supply = <&pm8550b_eusb2_repeater>;
	usb-repeater = <&pm8550b_eusb2_repeater>;
};

&usb0 {
	usb-role-switch;
	port {
		usb_port0: endpoint {
			remote-endpoint = <&usb_port0_connector>;
		};
	};
};

&ucsi {
	connector {
		port {
			usb_port0_connector: endpoint {
				remote-endpoint = <&usb_port0>;
			};
		};
	};
};

&regulator_ocp_notifier {
	periph-1c1-supply = <&L1B>;
	periph-1c2-supply = <&L2B>;
	periph-1c5-supply = <&L5B>;
	periph-1c6-supply = <&L6B>;
	periph-1c7-supply = <&L7B>;
	periph-1c8-supply = <&L8B>;
	periph-1c9-supply = <&L9B>;
	periph-1ca-supply = <&L10B>;
	periph-1cb-supply = <&L11B>;
	periph-1cc-supply = <&L12B>;
	periph-1cd-supply = <&L13B>;
	periph-1ce-supply = <&L14B>;
	periph-1cf-supply = <&L15B>;
	periph-1d0-supply = <&L16B>;
	periph-1d1-supply = <&L17B>;
	periph-2c1-supply = <&L1C>;
	periph-2c3-supply = <&L3C>;
	periph-3c1-supply = <&L1D>;
	periph-3c2-supply = <&L2D_LEVEL>;
	periph-4c1-supply = <&L1E>;
	periph-4c2-supply = <&L2E>;
	periph-4c3-supply = <&L3E>;
	periph-5c1-supply = <&L1F>;
	periph-5c2-supply = <&L2F>;
	periph-5c3-supply = <&L3F>;
	periph-6c1-supply = <&L1G>;
	periph-6c2-supply = <&L2G>;
	periph-6c3-supply = <&L3G>;
	periph-ac1-supply = <&L1K>;
	periph-ac2-supply = <&L2K>;
	periph-ac3-supply = <&L3K>;
	periph-ac4-supply = <&L4K>;
	periph-ac5-supply = <&L5K>;
	periph-ac6-supply = <&L6K>;
	periph-ac7-supply = <&L7K>;
	periph-bc3-supply = <&L3L>;
	periph-bc4-supply = <&L4L>;
	periph-bc5-supply = <&L5L>;
	periph-bc6-supply = <&L6L>;
	periph-bc7-supply = <&L7L>;
	periph-c40-supply = <&L1M>;
	periph-c41-supply = <&L2M>;
	periph-c42-supply = <&L3M>;
	periph-c43-supply = <&L4M>;
	periph-c44-supply = <&L5M>;
	periph-c45-supply = <&L6M>;
	periph-c46-supply = <&L7M>;
	periph-d40-supply = <&L1N>;
	periph-d41-supply = <&L2N>;
	periph-d42-supply = <&L3N>;
	periph-d43-supply = <&L4N>;
	periph-d44-supply = <&L5N>;
	periph-d45-supply = <&L6N>;
	periph-d46-supply = <&L7N>;
};
