arm64: dts: qcom: gaokun3: Add Embedded Controller node

The Embedded Controller in the Huawei Matebook E Go is accessible on &i2c15
and provides battery and adapter status, port orientation status, as well
as HPD event notifications for two USB Type-C port, etc.

Add the EC to the device tree and describe the relationship among
the type-c connectors, role switches, orientation switches and the QMP
combo PHY.

Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250214180656.28599-4-mitltlatltl@gmail.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
Pengyu Luo 2025-02-15 02:06:56 +08:00 committed by Ilpo Järvinen
parent 7636f090d0
commit 0b6d8f9d2d
No known key found for this signature in database
GPG Key ID: 59AC4F6153E5CE31

View File

@ -28,6 +28,7 @@ / {
aliases {
i2c4 = &i2c4;
i2c15 = &i2c15;
serial1 = &uart2;
};
@ -216,6 +217,40 @@ map1 {
};
};
usb0-sbu-mux {
compatible = "pericom,pi3usb102", "gpio-sbu-mux";
select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&usb0_sbu_default>;
pinctrl-names = "default";
orientation-switch;
port {
usb0_sbu_mux: endpoint {
remote-endpoint = <&ucsi0_sbu>;
};
};
};
usb1-sbu-mux {
compatible = "pericom,pi3usb102", "gpio-sbu-mux";
select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&usb1_sbu_default>;
pinctrl-names = "default";
orientation-switch;
port {
usb1_sbu_mux: endpoint {
remote-endpoint = <&ucsi1_sbu>;
};
};
};
wcn6855-pmu {
compatible = "qcom,wcn6855-pmu";
@ -584,6 +619,97 @@ touchscreen@4f {
};
&i2c15 {
clock-frequency = <400000>;
pinctrl-0 = <&i2c15_default>;
pinctrl-names = "default";
status = "okay";
embedded-controller@38 {
compatible = "huawei,gaokun3-ec";
reg = <0x38>;
interrupts-extended = <&tlmm 107 IRQ_TYPE_LEVEL_LOW>;
#address-cells = <1>;
#size-cells = <0>;
connector@0 {
compatible = "usb-c-connector";
reg = <0>;
power-role = "dual";
data-role = "dual";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ucsi0_hs_in: endpoint {
remote-endpoint = <&usb_0_dwc3_hs>;
};
};
port@1 {
reg = <1>;
ucsi0_ss_in: endpoint {
remote-endpoint = <&usb_0_qmpphy_out>;
};
};
port@2 {
reg = <2>;
ucsi0_sbu: endpoint {
remote-endpoint = <&usb0_sbu_mux>;
};
};
};
};
connector@1 {
compatible = "usb-c-connector";
reg = <1>;
power-role = "dual";
data-role = "dual";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ucsi1_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
};
};
port@1 {
reg = <1>;
ucsi1_ss_in: endpoint {
remote-endpoint = <&usb_1_qmpphy_out>;
};
};
port@2 {
reg = <2>;
ucsi1_sbu: endpoint {
remote-endpoint = <&usb1_sbu_mux>;
};
};
};
};
};
};
&mdss0 {
status = "okay";
};
@ -1004,6 +1130,10 @@ &usb_0_dwc3 {
dr_mode = "host";
};
&usb_0_dwc3_hs {
remote-endpoint = <&ucsi0_hs_in>;
};
&usb_0_hsphy {
vdda-pll-supply = <&vreg_l9d>;
vdda18-supply = <&vreg_l1c>;
@ -1025,6 +1155,10 @@ &usb_0_qmpphy_dp_in {
remote-endpoint = <&mdss0_dp0_out>;
};
&usb_0_qmpphy_out {
remote-endpoint = <&ucsi0_ss_in>;
};
&usb_1 {
status = "okay";
};
@ -1033,6 +1167,10 @@ &usb_1_dwc3 {
dr_mode = "host";
};
&usb_1_dwc3_hs {
remote-endpoint = <&ucsi1_hs_in>;
};
&usb_1_hsphy {
vdda-pll-supply = <&vreg_l4b>;
vdda18-supply = <&vreg_l1c>;
@ -1054,6 +1192,10 @@ &usb_1_qmpphy_dp_in {
remote-endpoint = <&mdss0_dp1_out>;
};
&usb_1_qmpphy_out {
remote-endpoint = <&ucsi1_ss_in>;
};
&usb_2 {
status = "okay";
};
@ -1177,6 +1319,13 @@ i2c4_default: i2c4-default-state {
bias-disable;
};
i2c15_default: i2c15-default-state {
pins = "gpio36", "gpio37";
function = "qup15";
drive-strength = <2>;
bias-pull-up;
};
mode_pin_active: mode-pin-state {
pins = "gpio26";
function = "gpio";
@ -1301,6 +1450,20 @@ tx-pins {
};
};
usb0_sbu_default: usb0-sbu-state {
pins = "gpio164";
function = "gpio";
drive-strength = <16>;
bias-disable;
};
usb1_sbu_default: usb1-sbu-state {
pins = "gpio47";
function = "gpio";
drive-strength = <16>;
bias-disable;
};
wcd_default: wcd-default-state {
reset-pins {
pins = "gpio106";