/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/*
   This base is original from "kamala-mtp.dtsi"
*/

#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 = "disabled";
	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 = "bypass";
	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;
		};
	};

	qcom,pmic_glink_log {
		qcom,charger_ulog_glink {
			status = "disabled";
		};
		bm_adsp_ulog: qcom,bm_adsp_ulog {
			compatible = "qcom,bm-adsp-ulog";
			categories = <0xFFBFFFFF>;
			level = <4>;
			init-log-enabled;
		};
	};
};

&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";
};

&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";
};

&pm8550_rgb {
	red {
		label = "charging";
	};

	green {
		status = "disabled";
	};

	blue {
		status = "disabled";
	};
};

&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>;
		};
	};

	dwc3@a600000 {
		snps,usb2-gadget-lpm-disable;
	};
};

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

&battery_charger {
	qcom,thermal-mitigation = <3000000 1500000 1000000 500000>;
};
