#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/iio/qti_power_supply_iio.h>
#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/input/input.h>

&vendor {
	kona_qrd_batterydata: qcom,battery-data {
		qcom,batt-id-range-pct = <15>;
		#include "fg-gen4-batterydata-mlp466274-3650mah.dtsi"
		#include "fg-gen4-batterydata-atl466274-3650mah.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 = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEUP>;
			gpio-key,wakeup;
			debounce-interval = <15>;
			linux,can-disable;
		};
	};
};

&qupv3_se6_4uart {
		status = "ok";
};

&qupv3_se12_2uart {
	status = "ok";
};

&ufsphy_mem {
		compatible = "qcom,ufs-phy-qmp-v4-kona";
		vdda-phy-supply = <&pm8150_l5>;
		vdda-pll-supply = <&pm8150_l9>;
		vdda-phy-max-microamp = <89900>;
		vdda-pll-max-microamp = <18800>;
		status = "ok";
};

&ufshc_mem {
		vdd-hba-supply = <&ufs_phy_gdsc>;
		vcc-supply = <&pm8150_l17>;
		vccq-supply = <&pm8150_l6>;
		vccq2-supply = <&pm8150_s4>;
		vcc-max-microamp = <800000>;
		vccq-max-microamp = <800000>;
		vccq2-max-microamp = <800000>;

		qcom,vddp-ref-clk-supply = <&pm8150_l6>;
		qcom,vddp-ref-clk-max-microamp = <100>;
		qcom,vccq-parent-supply = <&pm8150a_s8>;
		qcom,vccq-parent-max-microamp = <210000>;
		status = "ok";
};

&sdhc_2 {
		vdd-supply = <&pm8150a_l9>;
		qcom,vdd-voltage-level = <2950000 2960000>;
		qcom,vdd-current-level = <200 800000>;

		vdd-io-supply = <&pm8150a_l6>;
		qcom,vdd-io-voltage-level = <1808000 2960000>;
		qcom,vdd-io-current-level = <200 22000>;

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

		cd-gpios = <&tlmm 77 GPIO_ACTIVE_LOW>;

		status = "ok";
};

&vreg_hap_boost {
	status = "ok";
};

&pm8150b_pdphy {
	#io-channel-cells = <1>;
	io-channels = <&pm8150b_charger PSY_IIO_PD_ACTIVE>,
		      <&pm8150b_charger PSY_IIO_TYPEC_CC_ORIENTATION>,
		      <&pm8150b_charger PSY_IIO_CONNECTOR_TYPE>,
		      <&pm8150b_charger PSY_IIO_TYPEC_POWER_ROLE>,
		      <&pm8150b_charger PSY_IIO_PD_USB_SUSPEND_SUPPORTED>,
		      <&pm8150b_charger PSY_IIO_TYPEC_SRC_RP>,
		      <&pm8150b_charger PSY_IIO_PD_IN_HARD_RESET>,
		      <&pm8150b_charger PSY_IIO_PD_CURRENT_MAX>,
		      <&pm8150b_charger PSY_IIO_PR_SWAP>,
		      <&pm8150b_charger PSY_IIO_PD_VOLTAGE_MIN>,
		      <&pm8150b_charger PSY_IIO_PD_VOLTAGE_MAX>,
		      <&pm8150b_charger PSY_IIO_USB_REAL_TYPE>,
		      <&pm8150b_charger PSY_IIO_TYPEC_MODE>,
		      <&pm8150b_charger PSY_IIO_PE_START>;
	io-channel-names = "pd_active",
			   "typec_cc_orientation",
			   "connector_type",
			   "typec_power_role",
			   "pd_usb_suspend_supported",
			   "typec_src_rp",
			   "pd_in_hard_reset",
			   "pr_current_max",
			   "pr_swap",
			   "pd_voltage_min",
			   "pd_voltage_max",
			   "real_type",
			   "typec_mode",
			   "pe_start";
};

&pm8150b_haptics {
	qcom,vmax-mv = <1697>;
	qcom,play-rate-us = <5882>;
	vdd-supply = <&vreg_hap_boost>;

	wf_0 {
		/* CLICK */
		qcom,wf-play-rate-us = <5882>;
		qcom,wf-vmax-mv = <1697>;
	};

	wf_1 {
		/* DOUBLE CLICK */
		qcom,wf-play-rate-us = <5882>;
		qcom,wf-vmax-mv = <1697>;
	};

	wf_2 {
		/* TICK */
		qcom,wf-play-rate-us = <5882>;
		qcom,wf-vmax-mv = <1697>;
	};

	wf_3 {
		/* THUD */
		qcom,wf-play-rate-us = <5882>;
		qcom,wf-vmax-mv = <1697>;
	};

	wf_4 {
		/* POP */
		qcom,wf-play-rate-us = <5882>;
		qcom,wf-vmax-mv = <1697>;
	};

	wf_5 {
		/* HEAVY CLICK */
		qcom,wf-play-rate-us = <5882>;
		qcom,wf-vmax-mv = <1697>;
	};
};

&qupv3_se15_i2c {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "ok";

	#include "smb1390.dtsi"
};

&smb1390 {
	pinctrl-names = "default";
	pinctrl-0 = <&smb_stat_default>;
	status = "ok";
};

&smb1390_charger {
	io-channels = <&pm8150b_vadc ADC5_AMUX_THM2>;
	io-channel-names = "cp_die_temp";
	qcom,parallel-output-mode = <2>;
	qcom,min-ilim-ua = <750000>;
	qcom,parallel-input-mode = <1>;
	status = "ok";
};

&smb1390_slave {
	status = "ok";
};

&smb1390_slave_charger {
	status = "ok";
};

&pm8150b_charger {
	status = "ok";
	qcom,sec-charger-config = <1>;
	qcom,auto-recharge-soc = <98>;
	io-channels = <&pm8150b_vadc ADC5_USB_IN_V_16>,
		      <&pm8150b_vadc ADC5_USB_IN_I>,
		      <&pm8150b_vadc ADC5_SBUx>,
		      <&pm8150b_vadc ADC5_VPH_PWR>,
		      <&pm8150b_vadc ADC5_DIE_TEMP>,
		      <&pm8150b_vadc ADC5_MID_CHG_DIV6>,
		      <&pm8150b_vadc ADC5_CHG_TEMP>;
	io-channel-names = "usb_in_voltage",
			   "usb_in_current",
			   "sbux_res",
			   "vph_voltage",
			   "die_temp",
			   "mid_voltage",
			   "chg_temp";
	qcom,batteryless-platform;
	qcom,sw-jeita-enable;
	qcom,wd-bark-time-secs = <16>;
	qcom,suspend-input-on-debug-batt;
	qcom,fcc-stepping-enable;
	qcom,smb-internal-pull-kohm = <0>;
	qcom,thermal-mitigation = <5325000 4500000 4000000 3500000 3000000
				2500000 2000000 1500000 1000000 500000>;
};

&pm8150b_fg {
	status = "ok";
	qcom,battery-data = <&kona_qrd_batterydata>;
	qcom,hold-soc-while-full;
	qcom,linearize-soc;
	qcom,five-pin-battery;
	qcom,cl-wt-enable;
	qcom,soc-scale-mode-en;
	/* ESR fast calibration */
	qcom,fg-esr-timer-chg-fast = <0 7>;
	qcom,fg-esr-timer-dischg-fast = <0 7>;
	qcom,fg-esr-timer-chg-slow = <0 96>;
	qcom,fg-esr-timer-dischg-slow = <0 96>;
	qcom,fg-esr-cal-soc-thresh = <26 230>;
	qcom,fg-esr-cal-temp-thresh = <10 40>;
};

&pm8150l_vadc {
	#address-cells = <1>;
	#size-cells = <0>;

	vph_pwr@83 {
		reg = <ADC5_VPH_PWR>;
		label = "vph_pwr";
		qcom,pre-scaling = <1 3>;
	};

	camera_flash_therm@4d {
		reg = <ADC5_AMUX_THM1_100K_PU>;
		label = "camera_flash_therm";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};

	skin_msm_therm@4e {
		reg = <ADC5_AMUX_THM2_100K_PU>;
		label = "skin_msm_therm";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};

	pa_therm2@4f {
		reg = <ADC5_AMUX_THM3_100K_PU>;
		label = "pa_therm2";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};
};

&pm8150b_vadc {
	#address-cells = <1>;
	#size-cells = <0>;

	vph_pwr@83 {
		reg = <ADC5_VPH_PWR>;
		label = "vph_pwr";
		qcom,pre-scaling = <1 3>;
	};

	conn_therm@4f {
		reg = <ADC5_AMUX_THM3_100K_PU>;
		label = "conn_therm";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};

	chg_sbux@99 {
		reg = <ADC5_SBUx>;
		label = "chg_sbux";
		qcom,pre-scaling = <1 3>;
	};

	mid_chg_div6@1e {
		reg = <ADC5_MID_CHG_DIV6>;
		label = "chg_mid";
		qcom,pre-scaling = <1 6>;
	};

	usb_in_i_uv@7 {
		reg = <ADC5_USB_IN_I>;
		label = "usb_in_i_uv";
		qcom,pre-scaling = <1 1>;
	};

	usb_in_v_div_16@8 {
		reg = <ADC5_USB_IN_V_16>;
		label = "usb_in_v_div_16";
		qcom,pre-scaling = <1 16>;
	};
};

&pm8150_vadc {
	#address-cells = <1>;
	#size-cells = <0>;

	vph_pwr@83 {
		reg = <ADC5_VPH_PWR>;
		label = "vph_pwr";
		qcom,pre-scaling = <1 3>;
	};

	xo_therm@4c {
		reg = <ADC5_XO_THERM_100K_PU>;
		label = "xo_therm";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};

	skin_therm@4d {
		reg = <ADC5_AMUX_THM1_100K_PU>;
		label = "skin_therm";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};

	pa_therm1@4e {
		reg = <ADC5_AMUX_THM2_100K_PU>;
		label = "pa_therm1";
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		qcom,pre-scaling = <1 1>;
	};
};

&pm8150b_adc_tm {
	conn_therm@4f {
		reg = <0>;
		io-channels = <&pm8150b_vadc ADC5_AMUX_THM3_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};
};

&pm8150_adc_tm {
	xo_therm@4c {
		reg = <0>;
		io-channels = <&pm8150_vadc ADC5_XO_THERM_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};

	skin_therm@4d {
		reg = <1>;
		io-channels = <&pm8150_vadc ADC5_AMUX_THM1_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};

	pa_therm1@4e {
		reg = <2>;
		io-channels = <&pm8150_vadc ADC5_AMUX_THM2_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};
};

&pm8150l_adc_tm {
	camera_flash_therm@4d {
		reg = <0>;
		io-channels = <&pm8150l_vadc ADC5_AMUX_THM1_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};

	skin_msm_therm@4e {
		reg = <1>;
		io-channels = <&pm8150l_vadc ADC5_AMUX_THM2_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};

	pa_therm2@4f {
		reg = <2>;
		io-channels = <&pm8150l_vadc ADC5_AMUX_THM3_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};
};

&usb1 {
	qcom,default-mode-host;
};

&pcie2 {
		status = "ok";
		qcom,boot-option = <0x0>;
		qcom,core-preset = <0x77777777>;
};

&qupv3_se15_i2c {
	status = "ok";
	fsa4480: fsa4480@43 {
		compatible = "qcom,fsa4480-i2c";
		reg = <0x43>;
		io-channels = <&pm8150b_charger PSY_IIO_TYPEC_ACCESSORY_MODE>;
		io-channel-names = "typec_mode";
		qcom,use-power-supply = <1>;
	};
};
