snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, 0);
mutex_lock(&codec->mutex);
+
+ /* Codec must be shutdown during EQ loading, and it may take up to 20mS
+ * to shut down.
+ */
+ snd_soc_update_bits(codec, M98095_097_PWR_SYS, M98095_CODECSHDN,
+ M98095_CODECSHDN);
+ msleep(20);
+
snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, M98095_SEG);
m98095_eq_band(codec, channel, 0, coef_set->band1);
m98095_eq_band(codec, channel, 1, coef_set->band2);
m98095_eq_band(codec, channel, 3, coef_set->band4);
m98095_eq_band(codec, channel, 4, coef_set->band5);
snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, 0);
+ snd_soc_update_bits(codec, M98095_097_PWR_SYS, M98095_CODECSHDN, 0);
+
mutex_unlock(&codec->mutex);
/* Restore the original on/off state */
/* M98095_097_PWR_SYS */
#define M98095_SHDNRUN (1<<7)
+ #define M98095_CODECSHDN (1<<6)
#define M98095_PERFMODE (1<<3)
#define M98095_HPPLYBACK (1<<2)
#define M98095_PWRSV8K (1<<1)