mt6358codec: mt6358codec {
                        compatible = "mediatek,mt6358-sound";
+                       mediatek,dmic-mode = <0>; /* two-wires */
                };
 
                mt6358regulator: mt6358regulator {
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) da7219-max98357a sound card.
+ *
+ * Copyright 2019 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-da7219.dtsi"
+#include "mt8183-kukui-audio-max98357a.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_da7219_max98357";
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) da7219-rt1015p sound card.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-da7219.dtsi"
+#include "mt8183-kukui-audio-rt1015p.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_da7219_rt1015p";
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for da7219.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+&i2c5 {
+       da7219: da7219@1a {
+               pinctrl-names = "default";
+               pinctrl-0 = <&da7219_pins>;
+               compatible = "dlg,da7219";
+               reg = <0x1a>;
+               interrupt-parent = <&pio>;
+               interrupts = <165 IRQ_TYPE_LEVEL_LOW 165 0>;
+
+               dlg,micbias-lvl = <2600>;
+               dlg,mic-amp-in-sel = "diff";
+               VDD-supply = <&pp1800_alw>;
+               VDDMIC-supply = <&pp3300_alw>;
+               VDDIO-supply = <&pp1800_alw>;
+
+               status = "okay";
+
+               da7219_aad {
+                       dlg,adc-1bit-rpt = <1>;
+                       dlg,btn-avg = <4>;
+                       dlg,btn-cfg = <50>;
+                       dlg,mic-det-thr = <500>;
+                       dlg,jack-ins-deb = <20>;
+                       dlg,jack-det-rate = "32ms_64ms";
+                       dlg,jack-rem-deb = <1>;
+
+                       dlg,a-d-btn-thr = <0xa>;
+                       dlg,d-b-btn-thr = <0x16>;
+                       dlg,b-c-btn-thr = <0x21>;
+                       dlg,c-mic-btn-thr = <0x3E>;
+               };
+       };
+};
+
+&pio {
+       da7219_pins: da7219_pins {
+               pins1 {
+                       pinmux = <PINMUX_GPIO165__FUNC_GPIO165>;
+                       input-enable;
+                       bias-pull-up;
+               };
+       };
+};
+
+&sound {
+       mediatek,headset-codec = <&da7219>;
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for max98357a.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+/ {
+       max98357a: max98357a {
+               compatible = "maxim,max98357a";
+               sdmode-gpios = <&pio 175 0>;
+       };
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for rt1015p.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+/ {
+       rt1015p: rt1015p {
+               compatible = "realtek,rt1015p";
+               sdb-gpios = <&pio 175 0>;
+       };
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) ts3a227e-max98357a sound card.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-max98357a.dtsi"
+#include "mt8183-kukui-audio-ts3a227e.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_mt6358_ts3a227_max98357";
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) mt6358-ts3a227-rt1015p sound card.
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-ts3a227e.dtsi"
+#include "mt8183-kukui-audio-rt1015p.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_mt6358_ts3a227_rt1015p";
+};
 
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for ts3a227e.
+ *
+ * Copyright 2019 Google LLC.
+ */
+
+&i2c5 {
+       ts3a227e: ts3a227e@3b {
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts3a227e_pins>;
+               compatible = "ti,ts3a227e";
+               reg = <0x3b>;
+               interrupt-parent = <&pio>;
+               interrupts = <157 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+       };
+};
+
+&pio {
+       ts3a227e_pins: ts3a227e_pins {
+               pins1 {
+                       pinmux = <PINMUX_GPIO157__FUNC_GPIO157>;
+                       input-enable;
+                       bias-pull-up;
+               };
+       };
+};
+
+&sound {
+       mediatek,headset-codec = <&ts3a227e>;
+};
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google burnet board";
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-da7219-max98357a.dtsi"
 
 / {
        model = "Google damu board";
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-da7219-rt1015p.dtsi"
 
 &mt6358codec {
        mediatek,dmic-mode = <1>; /* one-wire */
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-juniper.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google juniper sku16 board";
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google kappa board";
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-juniper.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google kenzo sku17 board";
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-willow.dtsi"
+#include "mt8183-kukui-audio-da7219-max98357a.dtsi"
 
 / {
        model = "Google willow board sku0";
 
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-willow.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google willow board sku1";
 
 
 /dts-v1/;
 #include "mt8183-kukui-kakadu.dtsi"
+#include "mt8183-kukui-audio-da7219-rt1015p.dtsi"
 
 / {
        model = "MediaTek kakadu board";
 
 
 /dts-v1/;
 #include "mt8183-kukui.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        ppvarn_lcd: ppvarn-lcd {
 
  */
 
 #include "mt8183-kukui.dtsi"
+#include "mt8183-kukui-audio-max98357a.dtsi"
 
 / {
        ppvarn_lcd: ppvarn-lcd {
 &qca_wifi {
        qcom,ath10k-calibration-variant = "LE_Krane";
 };
+
+&sound {
+       compatible = "mediatek,mt8183_mt6358_ts3a227_max98357";
+};
 
                };
        };
 
-       max98357a: codec0 {
-               compatible = "maxim,max98357a";
-               sdmode-gpios = <&pio 175 0>;
+       sound: mt8183-sound {
+               mediatek,platform = <&afe>;
+               pinctrl-names = "default",
+                               "aud_tdm_out_on",
+                               "aud_tdm_out_off";
+               pinctrl-0 = <&aud_pins_default>;
+               pinctrl-1 = <&aud_pins_tdm_out_on>;
+               pinctrl-2 = <&aud_pins_tdm_out_off>;
+               status = "okay";
        };
 
-       btsco: codec1 {
+       btsco: bt-sco {
                compatible = "linux,bt-sco";
        };
 
        };
 };
 
+&afe {
+       i2s3-share = "I2S2";
+       i2s0-share = "I2S5";
+};
+
 &auxadc {
        status = "okay";
 };
 };
 
 &pio {
+       aud_pins_default: audiopins {
+               pins_bus {
+                       pinmux = <PINMUX_GPIO97__FUNC_I2S2_MCK>,
+                               <PINMUX_GPIO98__FUNC_I2S2_BCK>,
+                               <PINMUX_GPIO101__FUNC_I2S2_LRCK>,
+                               <PINMUX_GPIO102__FUNC_I2S2_DI>,
+                               <PINMUX_GPIO3__FUNC_I2S3_DO>, /*i2s to da7219/max98357*/
+                               <PINMUX_GPIO89__FUNC_I2S5_BCK>,
+                               <PINMUX_GPIO90__FUNC_I2S5_LRCK>,
+                               <PINMUX_GPIO91__FUNC_I2S5_DO>,
+                               <PINMUX_GPIO174__FUNC_I2S0_DI>, /*i2s to wifi/bt*/
+                               <PINMUX_GPIO136__FUNC_AUD_CLK_MOSI>,
+                               <PINMUX_GPIO137__FUNC_AUD_SYNC_MOSI>,
+                               <PINMUX_GPIO138__FUNC_AUD_DAT_MOSI0>,
+                               <PINMUX_GPIO139__FUNC_AUD_DAT_MOSI1>,
+                               <PINMUX_GPIO140__FUNC_AUD_CLK_MISO>,
+                               <PINMUX_GPIO141__FUNC_AUD_SYNC_MISO>,
+                               <PINMUX_GPIO142__FUNC_AUD_DAT_MISO0>,
+                               <PINMUX_GPIO143__FUNC_AUD_DAT_MISO1>; /*mtkaif3.0*/
+               };
+       };
+
+       aud_pins_tdm_out_on: audiotdmouton {
+               pins_bus {
+                       pinmux = <PINMUX_GPIO169__FUNC_TDM_BCK_2ND>,
+                               <PINMUX_GPIO170__FUNC_TDM_LRCK_2ND>,
+                               <PINMUX_GPIO171__FUNC_TDM_DATA0_2ND>,
+                               <PINMUX_GPIO172__FUNC_TDM_DATA1_2ND>,
+                               <PINMUX_GPIO173__FUNC_TDM_DATA2_2ND>,
+                               <PINMUX_GPIO10__FUNC_TDM_DATA3>; /*8ch-i2s to it6505*/
+                       drive-strength = <MTK_DRIVE_6mA>;
+               };
+       };
+
+       aud_pins_tdm_out_off: audiotdmoutoff {
+               pins_bus {
+                       pinmux = <PINMUX_GPIO169__FUNC_GPIO169>,
+                               <PINMUX_GPIO170__FUNC_GPIO170>,
+                               <PINMUX_GPIO171__FUNC_GPIO171>,
+                               <PINMUX_GPIO172__FUNC_GPIO172>,
+                               <PINMUX_GPIO173__FUNC_GPIO173>,
+                               <PINMUX_GPIO10__FUNC_GPIO10>;
+                       input-enable;
+                       bias-pull-down;
+                       drive-strength = <MTK_DRIVE_2mA>;
+               };
+       };
+
        bt_pins: bt-pins {
                pins_bt_en {
                        pinmux = <PINMUX_GPIO120__FUNC_GPIO120>;