From e28bed48526bd656987f514536573f3f3de08c25 Mon Sep 17 00:00:00 2001 From: Vishnu Saini Date: Fri, 16 Oct 2026 09:12:07 +0530 Subject: [PATCH] PENDING: arm64: dts: qcom: monaco-arduino-monza: add Waveshare 8" DSI touch overlay Add an overlay for the Waveshare 8" DSI TOUCH-A kit on the DSI0 connector. It describes cci0, the Waveshare expander (panel supplies, resets, backlight), the Goodix gt9271 touch controller, the panel supply regulators and the JD9365DA based panel. DSI0 is shared with the on-board HDMI path, so disable adv7535 and the HDMI connector. Also disable the hdmi-mi2s-playback-dai-link sound node, otherwise the sound card would wait on the disabled adv7535 codec. HDMI audio is therefore unavailable while the overlay is applied; the other dai-links are not affected. Co-developed-by: Shashank Maurya Signed-off-by: Shashank Maurya Signed-off-by: Vishnu Saini --- arch/arm64/boot/dts/qcom/Makefile | 4 + ...arduino-monza-waveshare-8-dsi-touch-a.dtso | 116 ++++++++++++++++++ .../boot/dts/qcom/monaco-arduino-monza.dts | 4 +- 3 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-8-dsi-touch-a.dtso diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index acbfd39d30afc..bceff78737087 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -77,6 +77,10 @@ monaco-evk-el2-dtbs := monaco-evk.dtb monaco-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-el2.dtb +monaco-arduino-monza-waveshare-8-dsi-touch-a-dtbs := monaco-arduino-monza-el2.dtb monaco-arduino-monza-camx.dtbo monaco-arduino-monza-camx-el2.dtbo monaco-arduino-monza-waveshare-8-dsi-touch-a.dtbo +dtb-$(CONFIG_ARCH_QCOM) += monaco-arduino-monza-waveshare-8-dsi-touch-a.dtb +dtb-$(CONFIG_ARCH_QCOM) += monaco-arduino-monza-waveshare-8-dsi-touch-a.dtbo + monaco-evk-camera-imx577-dtbs := monaco-evk.dtb monaco-evk-camera-imx577.dtbo dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-camera-imx577.dtb dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-camera-imx577.dtbo diff --git a/arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-8-dsi-touch-a.dtso b/arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-8-dsi-touch-a.dtso new file mode 100644 index 0000000000000..540c151e04f86 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-8-dsi-touch-a.dtso @@ -0,0 +1,116 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +/dts-v1/; +/plugin/; + +#include +#include +#include + +&{/} { + panel_avdd: regulator-panel-avdd { + compatible = "regulator-fixed"; + regulator-name = "panel-avdd"; + gpios = <&wsgpio 0 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + panel_iovcc: regulator-panel-iovcc { + compatible = "regulator-fixed"; + regulator-name = "panel-iovcc"; + gpios = <&wsgpio 4 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + regulator-panel-vcc { + compatible = "regulator-fixed"; + regulator-name = "panel-vcc"; + gpios = <&wsgpio 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; +}; + +/* + * The panel's touch/GPIO-expander stack is hosted on the I2C exposed by the + * CCI0 block (@0xac13000). That same block is used by the camera subsystem + * for cam0. The two uses are mutually exclusive, so this overlay must FIRST + * release CCI0 from the camera framework (disable the cam0 CCI0 master) + * BEFORE enabling base &cci0 as a plain I2C bus further below. + * + * &cam_cci0 is referenced by path because the label is defined in + * monaco-arduino-monza-camera.dtsi (used by the camera overlay), not in the + * base DTB, and ufdt resolves &label only against the base DTB __symbols__. + * The node only exists once the camera overlay is applied, so that overlay + * must be applied first. + */ +&{/soc@0/qcom,cci0@ac13000} { + status = "disabled"; +}; + +&adv7535 { + status = "disabled"; +}; + +&cci0 { + pinctrl-0 = <&cci0_i2c0_default>; + pinctrl-1 = <&cci0_i2c0_sleep>; + pinctrl-names = "default", "sleep"; + status = "okay"; +}; + +&cci0_i2c0 { + wsgpio: gpio@45 { + compatible = "waveshare,dsi-touch-gpio"; + reg = <0x45>; + gpio-controller; + #gpio-cells = <2>; + }; + + touchscreen@5d { + compatible = "goodix,gt9271"; + reg = <0x5d>; + reset-gpios = <&wsgpio 9 GPIO_ACTIVE_HIGH>; + }; +}; + +&hdmi_connector { + status = "disabled"; +}; + +&hdmi_mi2s_playback_dai_link { + status = "disabled"; +}; + +&mdss_dsi0 { + #address-cells = <1>; + #size-cells = <0>; + vdda-supply = <&vreg_l1c>; + + panel@0 { + compatible = "waveshare,8.0-dsi-touch-a", "jadard,jd9365da-h3"; + reg = <0>; + backlight = <&wsgpio>; + reset-gpios = <&wsgpio 1 GPIO_ACTIVE_LOW>; + vccio-supply = <&panel_iovcc>; + vdd-supply = <&panel_avdd>; + + port { + panel_in: endpoint { + remote-endpoint = <&mdss_dsi0_out>; + }; + }; + }; +}; + +&mdss_dsi0_out { + data-lanes = <0 1 2 3>; + remote-endpoint = <&panel_in>; +}; + +&mdss_dsi0_phy { + vdds-supply = <&vreg_l4a>; +}; diff --git a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts index 9239f8d5072fe..b9df27375f04d 100644 --- a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts +++ b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts @@ -48,7 +48,7 @@ }; }; - hdmi-connector { + hdmi_connector: hdmi-connector { compatible = "hdmi-connector"; label = "hdmi"; type = "a"; @@ -110,7 +110,7 @@ }; }; - hdmi-mi2s-playback-dai-link { + hdmi_mi2s_playback_dai_link: hdmi-mi2s-playback-dai-link { link-name = "HDMI Playback"; codec {