overlays: add wm8960-soundcard overlay
authorAaron Shaw <shawaj@gmail.com>
Sat, 2 Jan 2021 02:34:03 +0000 (02:34 +0000)
committerpopcornmix <popcornmix@gmail.com>
Wed, 27 Jan 2021 19:13:31 +0000 (19:13 +0000)
add overlay for waveshare wm8960 simple-audio-card

Change-type: patch
Signed-off-by: Aaron Shaw <shawaj@gmail.com>
arch/arm/boot/dts/overlays/Makefile
arch/arm/boot/dts/overlays/README
arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts [new file with mode: 0644]

index 2331600..b8675fb 100644 (file)
@@ -213,7 +213,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
        w1-gpio.dtbo \
        w1-gpio-pullup.dtbo \
        w5500.dtbo \
-       wittypi.dtbo
+       wittypi.dtbo \
+       wm8960-soundcard.dtbo
 
 targets += dtbs dtbs_install
 targets += $(dtbo-y)
index 1edf56b..2a4ec16 100644 (file)
@@ -3127,6 +3127,13 @@ Params: led_gpio                GPIO for LED (default "17")
                                 "default-on")
 
 
+Name:   wm8960-soundcard
+Info:   Overlay for the Waveshare wm8960 soundcard
+Load:   dtoverlay=wm8960-soundcard,<param>=<val>
+Params: alsaname                Changes the card name in ALSA
+        compatible              Changes the codec compatibility
+
+
 Troubleshooting
 ===============
 
diff --git a/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts
new file mode 100644 (file)
index 0000000..289fa4d
--- /dev/null
@@ -0,0 +1,82 @@
+// Definitions for Waveshare WM8960 https://github.com/waveshare/WM8960-Audio-HAT
+/dts-v1/;
+/plugin/;
+
+/ {
+       compatible = "brcm,bcm2835";
+
+       fragment@0 {
+               target = <&i2s>;
+               __overlay__ {
+                       status = "okay";
+               };
+       };
+
+       fragment@1 {
+               target-path="/";
+               __overlay__ {
+                       wm8960_mclk: wm8960_mclk {
+                               compatible = "fixed-clock";
+                               #clock-cells = <0>;
+                               clock-frequency = <12288000>;
+                       };
+               };
+       };
+       fragment@2 {
+               target = <&i2c1>;
+               __overlay__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       wm8960: wm8960 {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               #sound-dai-cells = <0>;
+                               AVDD-supply = <&vdd_5v0_reg>;
+                               DVDD-supply = <&vdd_3v3_reg>;
+                       };
+               };
+       };
+
+
+       fragment@3 {
+               target = <&sound>;
+               slave_overlay: __overlay__ {
+                       compatible = "simple-audio-card";
+                       simple-audio-card,format = "i2s";
+                       simple-audio-card,name = "wm8960-soundcard"; 
+                       status = "okay";
+
+                       simple-audio-card,widgets =
+                               "Microphone", "Mic Jack",
+                               "Line", "Line In",
+                               "Line", "Line Out",
+                               "Speaker", "Speaker",
+                               "Headphone", "Headphone Jack";
+                       simple-audio-card,routing =
+                               "Headphone Jack", "HP_L",
+                               "Headphone Jack", "HP_R",
+                               "Speaker", "SPK_LP",
+                               "Speaker", "SPK_LN",
+                               "LINPUT1", "Mic Jack",
+                               "LINPUT3", "Mic Jack",
+                               "RINPUT1", "Mic Jack",
+                               "RINPUT2", "Mic Jack";
+
+                       simple-audio-card,cpu {
+                               sound-dai = <&i2s>;
+                       };
+                       dailink0_slave: simple-audio-card,codec {
+                               sound-dai = <&wm8960>;
+                               clocks = <&wm8960_mclk>;
+                               clock-names = "mclk";
+                       };
+               };
+       };
+
+       __overrides__ {
+               alsaname = <&slave_overlay>,"simple-audio-card,name";
+               compatible = <&wm8960>,"compatible";
+       };
+};