#include "../codecs/wm8960.h"
 #include "../codecs/wm8994.h"
 #include "../codecs/tlv320aic31xx.h"
+#include "../codecs/nau8822.h"
 
 #define DRIVER_NAME "fsl-asoc-card"
 
  * @pll_id: PLL id for set_pll()
  */
 struct codec_priv {
+       struct clk *mclk;
        unsigned long mclk_freq;
        unsigned long free_freq;
        u32 mclk_id;
                return ret;
        }
 
+       if (!IS_ERR_OR_NULL(codec_priv->mclk))
+               clk_prepare_enable(codec_priv->mclk);
+
        return 0;
 }
 
                priv->codec_priv.free_freq = priv->codec_priv.mclk_freq;
                priv->card.dapm_routes = NULL;
                priv->card.num_dapm_routes = 0;
+       } else if (of_device_is_compatible(np, "fsl,imx-audio-nau8822")) {
+               codec_dai_name = "nau8822-hifi";
+               priv->codec_priv.mclk_id = NAU8822_CLK_MCLK;
+               priv->codec_priv.fll_id = NAU8822_CLK_PLL;
+               priv->codec_priv.pll_id = NAU8822_CLK_PLL;
+               priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
+               if (codec_dev)
+                       priv->codec_priv.mclk = devm_clk_get(codec_dev, NULL);
        } else {
                dev_err(&pdev->dev, "unknown Device Tree compatible\n");
                ret = -EINVAL;
        { .compatible = "fsl,imx-audio-wm8524", },
        { .compatible = "fsl,imx-audio-si476x", },
        { .compatible = "fsl,imx-audio-wm8958", },
+       { .compatible = "fsl,imx-audio-nau8822", },
        {}
 };
 MODULE_DEVICE_TABLE(of, fsl_asoc_card_dt_ids);