#include <linux/of.h>
 #include <linux/of_address.h>
 #include <linux/pm_runtime.h>
+#include <linux/reset.h>
 
 #include "mt8183-afe-common.h"
 #include "mt8183-afe-clk.h"
        struct mtk_base_afe *afe;
        struct mt8183_afe_private *afe_priv;
        struct device *dev;
+       struct reset_control *rstc;
        int i, irq_id, ret;
 
        afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL);
                return ret;
        }
 
+       rstc = devm_reset_control_get(dev, "audiosys");
+       if (IS_ERR(rstc)) {
+               ret = PTR_ERR(rstc);
+               dev_err(dev, "could not get audiosys reset:%d\n", ret);
+               return ret;
+       }
+
+       ret = reset_control_reset(rstc);
+       if (ret) {
+               dev_err(dev, "failed to trigger audio reset:%d\n", ret);
+               return ret;
+       }
+
        /* enable clock for regcache get default value from hw */
        afe_priv->pm_runtime_bypass_reg_ctl = true;
        pm_runtime_get_sync(&pdev->dev);