]> www.infradead.org Git - linux.git/commitdiff
arm64: dts: sm8650-hdk: add support for the Display Card overlay
authorNeil Armstrong <neil.armstrong@linaro.org>
Thu, 6 Jun 2024 12:50:22 +0000 (14:50 +0200)
committerBjorn Andersson <andersson@kernel.org>
Thu, 6 Jun 2024 18:24:47 +0000 (13:24 -0500)
With the SM8650-HDK, a Display Card kit can be connected to provide
a VTDR6130 display with Goodix Berlin Touch controller.

In order to route the DSI lanes to the connector for the Display
Card kit, a switch must be changed on the board.

The HDMI nodes are disabled since the DSI lanes are shared with
the DSI to HDMI transceiver.

Add support for this card as an overlay and apply it it at
build-time to the sm8650-hdk dtb.

Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Tested-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240606-topic-sm8650-upstream-hdk-v6-1-fb034fe864cc@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso [new file with mode: 0644]

index 56992fc3fc59c5ab1606295e0713e925c601b9da..0c1cebd16649137ebd6764a4b452a1731cab387c 100644 (file)
@@ -250,6 +250,10 @@ dtb-$(CONFIG_ARCH_QCOM)    += sm8550-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8550-qrd.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8550-samsung-q5q.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8550-sony-xperia-yodo-pdx234.dtb
+
+sm8650-hdk-display-card-dtbs   := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
+
+dtb-$(CONFIG_ARCH_QCOM)        += sm8650-hdk-display-card.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8650-hdk.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8650-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8650-qrd.dtb
diff --git a/arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso b/arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso
new file mode 100644 (file)
index 0000000..cb10253
--- /dev/null
@@ -0,0 +1,141 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, Linaro Limited
+ */
+
+/*
+ * Display Card kit overlay
+ * This requires S5702 Switch 7 to be turned to OFF to route DSI0 to the display panel
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/dts-v1/;
+/plugin/;
+
+/* Disable HDMI bridge related nodes (mutually exclusive with the display card) */
+
+&i2c6 {
+       status = "disabled";
+};
+
+&lt9611_1v2 {
+       status = "disabled";
+};
+
+&lt9611_3v3 {
+       status = "disabled";
+};
+
+&vreg_bob_3v3 {
+       status = "disabled";
+};
+
+&lt9611_codec {
+       status = "disabled";
+};
+
+&mdss_dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       panel@0 {
+               compatible = "visionox,vtdr6130";
+               reg = <0>;
+
+               reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+
+               vddio-supply = <&vreg_l12b_1p8>;
+               vci-supply = <&vreg_l13b_3p0>;
+               vdd-supply = <&vreg_l11b_1p2>;
+
+               pinctrl-0 = <&disp0_reset_n_active>, <&mdp_vsync>;
+               pinctrl-1 = <&disp0_reset_n_suspend>, <&mdp_vsync>;
+               pinctrl-names = "default", "sleep";
+
+               port {
+                       panel0_in: endpoint {
+                               remote-endpoint = <&mdss_dsi0_out>;
+                       };
+               };
+       };
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@1 {
+                       reg = <1>;
+
+                       mdss_dsi0_out: endpoint {
+                               remote-endpoint = <&panel0_in>;
+                       };
+               };
+       };
+};
+
+&spi4 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       status = "okay";
+
+       touchscreen@0 {
+               compatible = "goodix,gt9916";
+               reg = <0>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <162 IRQ_TYPE_LEVEL_LOW>;
+
+               reset-gpios = <&tlmm 161 GPIO_ACTIVE_LOW>;
+
+               avdd-supply = <&vreg_l14b_3p2>;
+
+               spi-max-frequency = <1000000>;
+
+               touchscreen-size-x = <1080>;
+               touchscreen-size-y = <2400>;
+
+               pinctrl-0 = <&ts_irq>, <&ts_reset>;
+               pinctrl-names = "default";
+       };
+};
+
+&tlmm {
+       disp0_reset_n_active: disp0-reset-n-active-state {
+               pins = "gpio133";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       disp0_reset_n_suspend: disp0-reset-n-suspend-state {
+               pins = "gpio133";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       mdp_vsync: mdp-vsync-state {
+               pins = "gpio86";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       ts_irq: ts-irq-state {
+               pins = "gpio161";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+               output-disable;
+       };
+
+       ts_reset: ts-reset-state {
+               pins = "gpio162";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+};