ASoC: codecs: Fix an error handling path in (rx|tx|va)_macro_probe()
[sfrench/cifs-2.6.git] / sound / soc / codecs / lpass-va-macro.c
index f3cb596058e02ab680e5aafcc23710b71b0ea894..d18b56e6043305a3ae0e7670286727f6a97eb761 100644 (file)
@@ -1434,8 +1434,10 @@ static int va_macro_probe(struct platform_device *pdev)
                va->dmic_clk_div = VA_MACRO_CLK_DIV_2;
        } else {
                ret = va_macro_validate_dmic_sample_rate(sample_rate, va);
-               if (!ret)
-                       return -EINVAL;
+               if (!ret) {
+                       ret = -EINVAL;
+                       goto err;
+               }
        }
 
        base = devm_platform_ioremap_resource(pdev, 0);
@@ -1492,6 +1494,8 @@ err_mclk:
 err_dcodec:
        clk_disable_unprepare(va->macro);
 err:
+       lpass_macro_pds_exit(va->pds);
+
        return ret;
 }