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 {