diff --git a/src/platform/cannonlake/include/platform/shim.h b/src/platform/cannonlake/include/platform/shim.h index 8ef476d70..2329e2481 100644 --- a/src/platform/cannonlake/include/platform/shim.h +++ b/src/platform/cannonlake/include/platform/shim.h @@ -246,6 +246,9 @@ /* DMIC power ON bit */ #define DMICLCTL_SPA ((uint32_t) BIT(0)) +/* DMIC disable clock gating */ +#define DMIC_DCGD ((uint32_t) BIT(30)) + #ifndef ASSEMBLY static inline uint16_t shim_read16(uint16_t reg) diff --git a/src/platform/icelake/include/platform/shim.h b/src/platform/icelake/include/platform/shim.h index d49d79786..85e7afb92 100644 --- a/src/platform/icelake/include/platform/shim.h +++ b/src/platform/icelake/include/platform/shim.h @@ -243,6 +243,9 @@ /* DMIC power ON bit */ #define DMICLCTL_SPA ((uint32_t) BIT(0)) +/* DMIC disable clock gating */ +#define DMIC_DCGD ((uint32_t) BIT(30)) + #ifndef ASSEMBLY static inline uint16_t shim_read16(uint16_t reg) diff --git a/src/platform/intel/cavs/pm_runtime.c b/src/platform/intel/cavs/pm_runtime.c index a8573cb51..3eaa7b960 100644 --- a/src/platform/intel/cavs/pm_runtime.c +++ b/src/platform/intel/cavs/pm_runtime.c @@ -109,6 +109,13 @@ static inline void cavs_pm_runtime_dis_dmic_clk_gating(uint32_t index) "dis-dmic-clk-gating index %d CLKCTL %08x", index, shim_read(SHIM_CLKCTL)); #endif +#if defined(CONFIG_CANNONLAKE) || defined(CONFIG_ICELAKE) \ + || defined(CONFIG_SUECREEK) + /* Disable DMIC clock gating */ + io_reg_write(DMICLCTL, + (io_reg_read(DMICLCTL) | DMIC_DCGD)); +#endif + } static inline void cavs_pm_runtime_en_dmic_clk_gating(uint32_t index) @@ -122,6 +129,12 @@ static inline void cavs_pm_runtime_en_dmic_clk_gating(uint32_t index) "en-dmic-clk-gating index %d CLKCTL %08x", index, shim_read(SHIM_CLKCTL)); #endif +#if defined(CONFIG_CANNONLAKE) || defined(CONFIG_ICELAKE) \ + || defined(CONFIG_SUECREEK) + /* Enable DMIC clock gating */ + io_reg_write(DMICLCTL, + (io_reg_read(DMICLCTL) & ~DMIC_DCGD)); +#endif } static inline void cavs_pm_runtime_en_dmic_power(uint32_t index) { diff --git a/src/platform/suecreek/include/platform/shim.h b/src/platform/suecreek/include/platform/shim.h index 143fd6cee..2a9b77052 100644 --- a/src/platform/suecreek/include/platform/shim.h +++ b/src/platform/suecreek/include/platform/shim.h @@ -243,6 +243,9 @@ /* DMIC power ON bit */ #define DMICLCTL_SPA ((uint32_t) BIT(0)) +/* DMIC disable clock gating */ +#define DMIC_DCGD ((uint32_t) BIT(30)) + #ifndef ASSEMBLY static inline uint16_t shim_read16(uint16_t reg)