#include <dt-bindings/clock/qcom,gcc-crow.h>
#include <dt-bindings/gpio/gpio.h>
#include "crow-pmic-overlay.dtsi"
#include "crow-thermal-overlay.dtsi"

&soc {
	gpio_key {
		compatible = "gpio-keys";
		label = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&key_vol_up_default>;
		vol_up {
			label = "volume_up";
			gpios = <&pmxr2230_gpios 6 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEUP>;
			gpio-key,wakeup;
			debounce-interval = <15>;
			linux,can-disable;
		};
	};
};

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

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

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

&pmxr2230_flash {
	status = "ok";
};

&battery_charger {
	qcom,thermal-mitigation-step = <500000>;
	#cooling-cells = <2>;
};

&qupv3_se0_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 = <&L22B>;
		iovdd-supply = <&L9B>;

		interrupt-parent = <&tlmm>;
		interrupts = <21 0x2008>;
		goodix,reset-gpio = <&tlmm 28 0x00>;
		goodix,irq-gpio = <&tlmm 21 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_active>;
		pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
		pinctrl-2 = <&ts_release>;

		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 = <666>;
		qts,trusted-touch-io-bases = <0x880000 0x810000>;
		qts,trusted-touch-io-sizes = <0x1000 0x4000>;
		qts,trusted-touch-vm-gpio-list = <&tlmm 0 0 &tlmm 1 0 &tlmm 2 0
						&tlmm 3 0 &tlmm 28 0 &tlmm 21 0x2008>;
	};
};

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

	/* VDDA_UFS_CORE */
	vdda-phy-supply = <&L2B>;
	vdda-phy-max-microamp = <139980>;

	/* VDDA_UFS_0_1P2 */
	vdda-pll-supply = <&L4B>;
	vdda-pll-max-microamp = <18310>;

	/* 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 = <&L2B>;
	vdda-qref-max-microamp = <30000>;

	status = "ok";
};

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

	vcc-supply = <&L12B>;
	vcc-max-microamp = <800000>;

	vccq-supply = <&L2D>;
	vccq-max-microamp = <750000>;

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

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

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

	qcom,vccq-shutdown-supply = <&L2D>;
	qcom,vccq-shutdown-max-microamp = <750000>;

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

	status = "ok";
};

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

	vdd-io-supply = <&L23B>;
	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 9 GPIO_ACTIVE_LOW>;
};

&qupv3_se8_i2c {
	status = "ok";
	fsa4480: fsa4480@42 {
		compatible = "qcom,fsa4480-i2c";
		reg = <0x42>;
	};
};
