[PATCH 3/3] arm64: dts: qcom: monaco-arduino-monza: Add overlay for Waveshare WM8960 Audio HAT

From: Srinivas Kandagatla

Date: Tue Jul 07 2026 - 12:38:41 EST


Add a DT overlay for the Waveshare WM8960 Audio HAT connected to the
40-pin JHAT connector. The overlay adds the WM8960 fixed MCLK clock,
the WM8960 codec on I2C0, and the corresponding I2S1 playback and
capture DAI links to the sound card.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/Makefile | 4 +
...uino-monza-waveshare-wm8960-audio-hat.dtso | 100 ++++++++++++++++++
2 files changed, 104 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-wm8960-audio-hat.dtso

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 5a1c56cf98f6..27cce61893ad 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -59,6 +59,10 @@ dtb-$(CONFIG_ARCH_QCOM) += mahua-crd.dtb
dtb-$(CONFIG_ARCH_QCOM) += milos-fairphone-fp6.dtb
dtb-$(CONFIG_ARCH_QCOM) += milos-nothing-asteroids.dtb
dtb-$(CONFIG_ARCH_QCOM) += monaco-arduino-monza.dtb
+
+monaco-arduino-monza-waveshare-wm8960-audio-hat-dtbs := monaco-arduino-monza.dtb monaco-arduino-monza-waveshare-wm8960-audio-hat.dtbo
+dtb-$(CONFIG_ARCH_QCOM) += monaco-arduino-monza-waveshare-wm8960-audio-hat.dtb
+
dtb-$(CONFIG_ARCH_QCOM) += monaco-evk.dtb

monaco-evk-camera-imx577-dtbs := monaco-evk.dtb monaco-evk-camera-imx577.dtbo
diff --git a/arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-wm8960-audio-hat.dtso b/arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-wm8960-audio-hat.dtso
new file mode 100644
index 000000000000..cf7b6a220bab
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/monaco-arduino-monza-waveshare-wm8960-audio-hat.dtso
@@ -0,0 +1,100 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ *
+ * Device tree overlay for the Waveshare WM8960 Audio HAT connected to the
+ * Arduino Monza 40-pin JHAT connector.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
+
+&{/} {
+ /* on board fixed crystal */
+ wm8960_mclk: wm8960-mclk {
+ compatible = "fixed-clock";
+ clock-frequency = <12288000>;
+ #clock-cells = <0>;
+ };
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ wm8960: audio-codec@1a {
+ compatible = "wlf,wm8960";
+ reg = <0x1a>;
+ clocks = <&wm8960_mclk>;
+ clock-names = "mclk";
+ AVDD-supply = <&vdc_3v3>;
+ SPKVDD1-supply = <&vdc_5v>;
+ SPKVDD2-supply = <&vdc_5v>;
+ #sound-dai-cells = <0>;
+ };
+};
+
+&lpass_tlmm {
+ lpi_i2s1_active: lpi-i2s1-active-state {
+ clk-pins {
+ pins = "gpio6";
+ function = "i2s1_clk";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio7";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data-pins {
+ pins = "gpio8", "gpio9";
+ function = "i2s1_data";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+};
+
+&sound {
+ pinctrl-0 = <&quad_mi2s_active>, <&quad_mclk_active>, <&lpi_i2s4_active>,
+ <&lpi_i2s1_active>;
+
+ i2s1-playback-dai-link {
+ link-name = "JHAT Analog Playback";
+
+ codec {
+ sound-dai = <&wm8960>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai LPI_MI2S_RX_1>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ i2s1-capture-dai-link {
+ link-name = "JHAT Analog Capture";
+
+ codec {
+ sound-dai = <&wm8960>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai LPI_MI2S_TX_1>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+};
--
2.53.0