From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Xin Xu <xxsemail@qq.com>
Date: Tue, 22 Aug 2023 00:04:45 +0800
Subject: arm64: dts: qcom: sm8250-xiaomi-elish: Add xiaomi-keyboard support

---
 arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi | 56 ++++++++++
 1 file changed, 56 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
index 45775428cb92..a8a684b2d7f8 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
@@ -178,6 +178,14 @@ ramoops@b0000000 {
 			no-map;
 		};
 	};
+
+	extcon_usb: extcon-usb {
+		compatible = "linux,extcon-usb-gpio";
+		id-gpio = <&tlmm 91 GPIO_ACTIVE_HIGH>;
+		vbus-gpio = <&pm8150_gpios 10 GPIO_ACTIVE_HIGH>;
+		pinctrl-0 = <&keyboard_active &usb_2_vbus_det_n>;
+		pinctrl-names = "default";
+	};
 };
 
 &adsp {
@@ -792,6 +800,14 @@ &pcie0_phy {
 };
 
 &pm8150_gpios {
+	usb_2_vbus_det_n: usb-2-vbus-det-state {
+		pins = "gpio10";
+		function = "normal";
+		power-source = <1>;
+		input-enable;
+		bias-pull-down;
+	};
+
 	vol_up_n: vol-up-n-state {
 		pins = "gpio6";
 		function = "normal";
@@ -967,6 +983,23 @@ dout-pins {
 			bias-disable;
 		};
 	};
+
+	keyboard_active: keyboard-active-state {
+		active-pins {
+			pins = "gpio155";
+			function = "gpio";
+			drive-strength = <8>;
+			bias-pull-up;
+		};
+
+		vdd-pins {
+			pins = "gpio127";
+			function = "gpio";
+			drive-strength = <8>;
+			bias-disable;
+			output-high;
+		};
+	};
 };
 
 &uart6 {
@@ -1003,6 +1036,29 @@ &usb_1_hsphy {
 	status = "okay";
 };
 
+&usb_2 {
+	status = "okay";
+};
+
+&usb_2_dwc3 {
+	dr_mode = "host";
+	maximum-speed = "super-speed";
+	extcon = <&extcon_usb>;
+};
+
+&usb_2_hsphy {
+	vdda-pll-supply = <&vreg_l5a_0p88>;
+	vdda18-supply = <&vreg_l12a_1p8>;
+	vdda33-supply = <&vreg_l2a_3p1>;
+	status = "okay";
+};
+
+&usb_2_qmpphy {
+	vdda-phy-supply = <&vreg_l9a_1p2>;
+	vdda-pll-supply = <&vreg_l18a_0p9>;
+	status = "okay";
+};
+
 &ufs_mem_hc {
 	vcc-supply = <&vreg_l17a_3p0>;
 	vcc-max-microamp = <800000>;
-- 
Armbian

