#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

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

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

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

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

&usb2_phy0 {
	qcom,param-override-seq = <
			0x83 0x6c
			0xcb 0x70
			0x1e 0x74
			0x03 0x78>;
};

&sdhc_1 {
	status = "ok";

	vdd-supply = <&L24B>;
	qcom,vdd-current-level = <0 570000>;

	vdd-io-supply = <&L19B>;
	qcom,vdd-io-always-on;
	qcom,vdd-io-lpm-sup;
	qcom,vdd-io-current-level = <0 325000>;

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc1_on>;
	pinctrl-1 = <&sdc1_off>;
};

&sdhc_2 {
	status = "ok";

	vdd-supply = <&L9E>;
	qcom,vdd-voltage-level = <2960000 2960000>;
	qcom,vdd-current-level = <0 800000>;

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

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

	cd-gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
};

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

	vdda-phy-supply = <&L5B>;
	vdda-pll-supply = <&L16B>;
	vdda-phy-max-microamp = <140000>;
	vdda-pll-max-microamp = <18300>;

	status = "ok";
};

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

	vcc-supply = <&L24B>;
	vcc-max-microamp = <1200000>;

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

	vccq2-supply = <&L19B>;
	vccq2-max-microamp = <750000>;

	qcom,vddp-ref-clk-supply = <&L13B>;
	qcom,vddp-ref-clk-max-microamp = <100>;

	/*
	 * ufs-dev-types and nvmem entries are for ufs device
	 * identification using nvmem interface. Use number of
	 * ufs devices supported for ufs-dev-types, and nvmem handle
	 * added by pmic for sdam register.
	 *
	 * Default value taken by driver is bit[0] = 0 for 3.x and
	 * bit[0] = 1 for 2.x driver code takes this as default case.
	 *
	 * But Bit value to identify ufs device is not consistent
	 * across the targets it could be bit[0] = 0/1 for UFS2.x/3x
	 * and vice versa. If the bit[0] value is not same as default
	 * value used in driver and if its reverted then use flag
	 * qcom,ufs-dev-revert to identify ufs device.
	 */
	ufs-dev-types = <2>;
	qcom,ufs-dev-revert;
	nvmem-cells = <&ufs_dev>, <&boot_config>;
	nvmem-cell-names = "ufs_dev", "boot_conf";

	status = "ok";
};

&qupv3_se6_i2c {
	status = "ok";
	qcom,clk-freq-out = <1000000>;
	#address-cells = <1>;
	#size-cells = <0>;
	nq@28 {
		compatible = "qcom,sn-nci";
		reg = <0x28>;
		qcom,sn-irq = <&tlmm 9 0x00>;
		qcom,sn-ven = <&tlmm 6 0x00>;
		qcom,sn-firm = <&tlmm 8 0x00>;
		qcom,sn-clkreq = <&tlmm 7 0x00>;
		qcom,sn-vdd-1p8-supply = <&L21B>;
		qcom,sn-vdd-1p8-voltage = <1800000 1800000>;
		qcom,sn-vdd-1p8-current = <157000>;
		interrupt-parent = <&tlmm>;
		interrupts = <9 0>;
		interrupt-names = "nfc_irq";
		pinctrl-names = "nfc_active", "nfc_suspend";
		pinctrl-0 = <&nfc_int_active &nfc_enable_active>;
		pinctrl-1 = <&nfc_int_suspend &nfc_enable_suspend>;
	};
};

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

	goodix-berlin@0 {
		compatible = "goodix,gt9916S";
		reg = <0>;
		spi-max-frequency = <1000000>;

		goodix,avdd-name = "avdd";
		avdd-supply = <&L28B>;

		interrupt-parent = <&tlmm>;
		interrupts = <65 0x2008>;
		goodix,reset-gpio = <&tlmm 64 0x00>;
		goodix,irq-gpio = <&tlmm 65 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";

		pinctrl-names = "pmx_ts_active", "pmx_ts_suspend", "pmx_ts_release";
		pinctrl-0 = <&ts_spi_active>;
		pinctrl-1 = <&ts_spi_int_suspend &ts_spi_reset_suspend>;
		pinctrl-2 = <&ts_spi_release>;

		qcom,touch-environment = "pvm";
	};
};
