]> www.infradead.org Git - linux.git/commitdiff
arm64: dts: qcom: c630: Add Embedded Controller node
authorBjorn Andersson <andersson@kernel.org>
Thu, 13 Jun 2024 23:43:43 +0000 (02:43 +0300)
committerBjorn Andersson <andersson@kernel.org>
Fri, 21 Jun 2024 05:37:33 +0000 (00:37 -0500)
The Embedded Controller in the Lenovo Yoga C630 is accessible on &i2c1
and provides battery and adapter status, as well as altmode
notifications for the second USB Type-C port.

Add a definition for the EC.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20240614-yoga-ec-driver-v7-6-9f0b9b40ae76@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts

index 8402ea2d93a7e351270cea3ec8719051c4c49048..f18050848cd8892666015c8182971ff0567747b7 100644 (file)
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+
+       embedded-controller@70 {
+               compatible = "lenovo,yoga-c630-ec";
+               reg = <0x70>;
+
+               interrupts-extended = <&tlmm 20 IRQ_TYPE_LEVEL_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&ec_int_state>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "host";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       ucsi0_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       ucsi0_ss_in: endpoint {
+                                               remote-endpoint = <&usb_1_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       ucsi0_sbu: endpoint {
+                                       };
+                               };
+                       };
+               };
+
+               connector@1 {
+                       compatible = "usb-c-connector";
+                       reg = <1>;
+                       power-role = "dual";
+                       data-role = "host";
+
+                       /*
+                        * connected to the onboard USB hub, orientation is
+                        * handled by the controller
+                        */
+               };
+       };
 };
 
 &i2c3 {
 
                bias-disable;
        };
+
+       ec_int_state: ec-int-state {
+               pins = "gpio20";
+               function = "gpio";
+
+               bias-disable;
+       };
 };
 
 &uart6 {
        dr_mode = "host";
 };
 
+&usb_1_dwc3_hs {
+       remote-endpoint = <&ucsi0_hs_in>;
+};
+
 &usb_1_hsphy {
        status = "okay";
 
        vdda-pll-supply = <&vdda_usb1_ss_core>;
 };
 
+&usb_1_qmpphy_out {
+       remote-endpoint = <&ucsi0_ss_in>;
+};
+
 &usb_2 {
        status = "okay";
 };