diff mbox series

arm64: dts: qcom: sm6115p-j606f: Add some peripherals

Message ID 20240212-topic-j606f_periphs-v1-1-5dcacd483e28@linaro.org (mailing list archive)
State New
Headers show
Series arm64: dts: qcom: sm6115p-j606f: Add some peripherals | expand

Commit Message

Konrad Dybcio Feb. 12, 2024, 1:37 p.m. UTC
This tablet features quite a bunch of I2C-connected devices, such as
a Richtek RT1715 USB-C controller, a MM8013 fuel gauge, FSA4480 Type-C
audio mux, TPS65132 regulator and some more.

Add the aforementioned ones and document others.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 arch/arm64/boot/dts/qcom/sm6115.dtsi              |   7 ++
 arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 103 +++++++++++++++++++++-
 2 files changed, 109 insertions(+), 1 deletion(-)


---
base-commit: ae00c445390b349e070a64dc62f08aa878db7248
change-id: 20240212-topic-j606f_periphs-87dd893e105c

Best regards,

Comments

Dmitry Baryshkov Feb. 12, 2024, 9:19 p.m. UTC | #1
On Mon, 12 Feb 2024 at 15:44, Konrad Dybcio <konrad.dybcio@linaro.org> wrote:
>
> This tablet features quite a bunch of I2C-connected devices, such as
> a Richtek RT1715 USB-C controller, a MM8013 fuel gauge, FSA4480 Type-C
> audio mux, TPS65132 regulator and some more.
>
> Add the aforementioned ones and document others.
>
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/sm6115.dtsi              |   7 ++
>  arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 103 +++++++++++++++++++++-
>  2 files changed, 109 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm6115.dtsi b/arch/arm64/boot/dts/qcom/sm6115.dtsi
> index ee65ab073ba6..7df7b2045b71 100644
> --- a/arch/arm64/boot/dts/qcom/sm6115.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm6115.dtsi
> @@ -1676,6 +1676,13 @@ usb_dwc3_ss: endpoint {
>                                                         remote-endpoint = <&usb_qmpphy_usb_ss_in>;
>                                                 };
>                                         };
> +
> +                                       port@2 {
> +                                               reg = <2>;
> +
> +                                               usb_dwc3_sbu: endpoint {
> +                                               };

The SBU lines are not connected to the DWC3 port

> +                                       };
>                                 };
>                         };
>                 };
> diff --git a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> index 54da053a8042..eb65c2806345 100644
> --- a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> +++ b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
> @@ -73,6 +73,81 @@ zap-shader {
>         };
>  };
>
> +&gpi_dma0 {
> +       status = "okay";
> +};
> +
> +&i2c0 {
> +       clock-frequency = <400000>;
> +       status = "okay";
> +
> +       /* Some devices use FUSB302(@22) instead of the RT1715. */
> +
> +       rt1715: typec-portc@4e {
> +               compatible = "richtek,rt1715";
> +               reg = <0x4e>;
> +               interrupts-extended = <&tlmm 97 IRQ_TYPE_LEVEL_LOW>;
> +               pinctrl-0 = <&typec_int>;
> +               pinctrl-names = "default";
> +
> +               usb_con: connector {
> +                       compatible = "usb-c-connector";
> +                       label = "USB-C";
> +                       data-role = "dual";
> +
> +                       /* TODO: Add a proper PD setup */
> +                       typec-power-opmode = "default";
> +                       try-power-role = "sink";
> +                       power-role = "dual";
> +                       pd-disable;
> +
> +                       port {
> +                               rt1715_hs_ep: endpoint {
> +                                       remote-endpoint = <&usb_dwc3_hs>;

Most likely this port should have the SBU endpoint connected to
fsa4480. Also, if SS lines are connected, there should be a link
between this connector and the QMP PHY.

> +                               };
> +                       };
> +               };
> +       };
> +
> +       fuel-gauge@55 {
> +               compatible = "mitsumi,mm8013";
> +               reg = <0x55>;
> +       };
> +
> +       /* AW882xx speaker amp @ 34, 35, 36, 37 (CHIP_ID = 0x1852) */
> +       /* HID-over-I2C for the touchpad on keyboard folio @ 60 */
> +};
> +
> +&i2c1 {
> +       clock-frequency = <400000>;
> +       status = "okay";
> +
> +       tps65132@3e {
> +               compatible = "ti,tps65132";
> +               reg = <0x3e>;
> +       };
> +
> +       fsa4480: typec-mux@42 {
> +               compatible = "fcs,fsa4480";
> +               reg = <0x42>;
> +               interrupts-extended = <&tlmm 89 IRQ_TYPE_LEVEL_LOW>;
> +               orientation-switch;
> +               mode-switch;
> +
> +               port {
> +                       fsa4480_sbu_mux: endpoint {
> +                               remote-endpoint = <&usb_dwc3_sbu>;
> +                       };
> +               };
> +       };
> +
> +       /* PM8008 @ 8, 9 */
> +       /* SMB1355 @ c */
> +       /* SGM37604A WLED driver @ 36 */
> +       /* ES7210 audio ADC @ 40 */
> +       /* HID-over-I2C for the keyboard on keyboard folio @ 61 */
> +};
> +
>  &mdss {
>         status = "okay";
>  };
> @@ -129,6 +204,10 @@ &pon_resin {
>         status = "okay";
>  };
>
> +&qupv3_id_0 {
> +       status = "okay";
> +};
> +
>  &remoteproc_adsp {
>         firmware-name = "qcom/sm6115/LENOVO/J606F/adsp.mbn";
>         status = "okay";
> @@ -309,6 +388,12 @@ &sleep_clk {
>         clock-frequency = <32764>;
>  };
>
> +&spi2 {
> +       status = "okay";
> +
> +       /* HIMAX83102P or NT36523W touchscreen */
> +};
> +
>  &tlmm {
>         gpio-reserved-ranges = <14 4>;
>
> @@ -337,6 +422,14 @@ mdss_dsi_active: dsi-active-state {
>                 drive-strength = <8>;
>                 bias-disable;
>         };
> +
> +       typec_int: typec-int-state {
> +               pins = "gpio97";
> +               function = "gpio";
> +               drive-strength = <2>;
> +               bias-pull-up;
> +               input-enable;
> +       };
>  };
>
>  &ufs_mem_hc {
> @@ -360,12 +453,20 @@ &usb {
>
>  &usb_dwc3 {
>         maximum-speed = "high-speed";
> -       dr_mode = "peripheral";
> +       dr_mode = "otg";
>
>         phys = <&usb_hsphy>;
>         phy-names = "usb2-phy";
>  };
>
> +&usb_dwc3_hs {
> +       remote-endpoint = <&rt1715_hs_ep>;
> +};
> +
> +&usb_dwc3_sbu {
> +       remote-endpoint = <&fsa4480_sbu_mux>;
> +};
> +
>  &usb_hsphy {
>         vdd-supply = <&pm6125_l4>;
>         vdda-pll-supply = <&pm6125_l12>;
>
> ---
> base-commit: ae00c445390b349e070a64dc62f08aa878db7248
> change-id: 20240212-topic-j606f_periphs-87dd893e105c
>
> Best regards,
> --
> Konrad Dybcio <konrad.dybcio@linaro.org>
>
>
Konrad Dybcio Feb. 12, 2024, 10:42 p.m. UTC | #2
On 12.02.2024 22:19, Dmitry Baryshkov wrote:
> On Mon, 12 Feb 2024 at 15:44, Konrad Dybcio <konrad.dybcio@linaro.org> wrote:
>>
>> This tablet features quite a bunch of I2C-connected devices, such as
>> a Richtek RT1715 USB-C controller, a MM8013 fuel gauge, FSA4480 Type-C
>> audio mux, TPS65132 regulator and some more.
>>
>> Add the aforementioned ones and document others.
>>
>> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
>> ---

[...]

>> +                       /* TODO: Add a proper PD setup */
>> +                       typec-power-opmode = "default";
>> +                       try-power-role = "sink";
>> +                       power-role = "dual";
>> +                       pd-disable;
>> +
>> +                       port {
>> +                               rt1715_hs_ep: endpoint {
>> +                                       remote-endpoint = <&usb_dwc3_hs>;
> 
> Most likely this port should have the SBU endpoint connected to
> fsa4480. Also, if SS lines are connected, there should be a link
> between this connector and the QMP PHY.

I wish there was usb3. Unless lenovo did that in hw and didn't hook it up
in software, but that's just wishful thinking. I'll give it a shot anyway :P

Konrad
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sm6115.dtsi b/arch/arm64/boot/dts/qcom/sm6115.dtsi
index ee65ab073ba6..7df7b2045b71 100644
--- a/arch/arm64/boot/dts/qcom/sm6115.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6115.dtsi
@@ -1676,6 +1676,13 @@  usb_dwc3_ss: endpoint {
 							remote-endpoint = <&usb_qmpphy_usb_ss_in>;
 						};
 					};
+
+					port@2 {
+						reg = <2>;
+
+						usb_dwc3_sbu: endpoint {
+						};
+					};
 				};
 			};
 		};
diff --git a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
index 54da053a8042..eb65c2806345 100644
--- a/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
+++ b/arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts
@@ -73,6 +73,81 @@  zap-shader {
 	};
 };
 
+&gpi_dma0 {
+	status = "okay";
+};
+
+&i2c0 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	/* Some devices use FUSB302(@22) instead of the RT1715. */
+
+	rt1715: typec-portc@4e {
+		compatible = "richtek,rt1715";
+		reg = <0x4e>;
+		interrupts-extended = <&tlmm 97 IRQ_TYPE_LEVEL_LOW>;
+		pinctrl-0 = <&typec_int>;
+		pinctrl-names = "default";
+
+		usb_con: connector {
+			compatible = "usb-c-connector";
+			label = "USB-C";
+			data-role = "dual";
+
+			/* TODO: Add a proper PD setup */
+			typec-power-opmode = "default";
+			try-power-role = "sink";
+			power-role = "dual";
+			pd-disable;
+
+			port {
+				rt1715_hs_ep: endpoint {
+					remote-endpoint = <&usb_dwc3_hs>;
+				};
+			};
+		};
+	};
+
+	fuel-gauge@55 {
+		compatible = "mitsumi,mm8013";
+		reg = <0x55>;
+	};
+
+	/* AW882xx speaker amp @ 34, 35, 36, 37 (CHIP_ID = 0x1852) */
+	/* HID-over-I2C for the touchpad on keyboard folio @ 60 */
+};
+
+&i2c1 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	tps65132@3e {
+		compatible = "ti,tps65132";
+		reg = <0x3e>;
+	};
+
+	fsa4480: typec-mux@42 {
+		compatible = "fcs,fsa4480";
+		reg = <0x42>;
+		interrupts-extended = <&tlmm 89 IRQ_TYPE_LEVEL_LOW>;
+		orientation-switch;
+		mode-switch;
+
+		port {
+			fsa4480_sbu_mux: endpoint {
+				remote-endpoint = <&usb_dwc3_sbu>;
+			};
+		};
+	};
+
+	/* PM8008 @ 8, 9 */
+	/* SMB1355 @ c */
+	/* SGM37604A WLED driver @ 36 */
+	/* ES7210 audio ADC @ 40 */
+	/* HID-over-I2C for the keyboard on keyboard folio @ 61 */
+};
+
 &mdss {
 	status = "okay";
 };
@@ -129,6 +204,10 @@  &pon_resin {
 	status = "okay";
 };
 
+&qupv3_id_0 {
+	status = "okay";
+};
+
 &remoteproc_adsp {
 	firmware-name = "qcom/sm6115/LENOVO/J606F/adsp.mbn";
 	status = "okay";
@@ -309,6 +388,12 @@  &sleep_clk {
 	clock-frequency = <32764>;
 };
 
+&spi2 {
+	status = "okay";
+
+	/* HIMAX83102P or NT36523W touchscreen */
+};
+
 &tlmm {
 	gpio-reserved-ranges = <14 4>;
 
@@ -337,6 +422,14 @@  mdss_dsi_active: dsi-active-state {
 		drive-strength = <8>;
 		bias-disable;
 	};
+
+	typec_int: typec-int-state {
+		pins = "gpio97";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-up;
+		input-enable;
+	};
 };
 
 &ufs_mem_hc {
@@ -360,12 +453,20 @@  &usb {
 
 &usb_dwc3 {
 	maximum-speed = "high-speed";
-	dr_mode = "peripheral";
+	dr_mode = "otg";
 
 	phys = <&usb_hsphy>;
 	phy-names = "usb2-phy";
 };
 
+&usb_dwc3_hs {
+	remote-endpoint = <&rt1715_hs_ep>;
+};
+
+&usb_dwc3_sbu {
+	remote-endpoint = <&fsa4480_sbu_mux>;
+};
+
 &usb_hsphy {
 	vdd-supply = <&pm6125_l4>;
 	vdda-pll-supply = <&pm6125_l12>;