ASoC: SOF: Add DMIC token for unmute gain ramp time
authorSeppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Wed, 12 Jun 2019 17:01:47 +0000 (12:01 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 13 Jun 2019 18:55:44 +0000 (19:55 +0100)
The settling time of DMIC DC level is both platform and used
microphone model specific. The unmute gain ramp is used to conceal
most of the large DC level seen in beginning of capture. This patch
adds into the DMIC DAI IPC struct a new field called unmute_ramp_time
and a new token SOF_TKN_INTEL_DMIC_UNMUTE_RAMP_TIME. The value is the
ramp length in milliseconds (ms).

The ABI minor version is incremented for this backwards compatible
change.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/sof/dai-intel.h
include/uapi/sound/sof/abi.h
include/uapi/sound/sof/tokens.h
sound/soc/sof/topology.c

index 4bd83f7adddf657894ade4aa96d4316d0b6249e2..4bb8ee138ba7f2a88e2ebac6003b6d475cab7144 100644 (file)
@@ -167,9 +167,10 @@ struct sof_ipc_dai_dmic_params {
 
        uint32_t wake_up_time;      /**< Time from clock start to data (us) */
        uint32_t min_clock_on_time; /**< Min. time that clk is kept on (us) */
+       uint32_t unmute_ramp_time;  /**< Length of logarithmic gain ramp (ms) */
 
        /* reserved for future use */
-       uint32_t reserved[6];
+       uint32_t reserved[5];
 
        /**< variable number of pdm controller config */
        struct sof_ipc_dai_dmic_pdm_ctrl pdm[0];
index 92eee681bc6286e005efe71ae1c925be411048f9..4a9c24434f42593ca2a8544ad7695cb280917a11 100644 (file)
@@ -26,7 +26,7 @@
 
 /* SOF ABI version major, minor and patch numbers */
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 7
+#define SOF_ABI_MINOR 8
 #define SOF_ABI_PATCH 0
 
 /* SOF ABI version number. Format within 32bit word is MMmmmppp */
index 53ea94bf1c08d3556812f78a5a4b7986cf8b0a18..dc1b27daaac622e6e13de2b35b687fe9da56833a 100644 (file)
@@ -85,6 +85,7 @@
 #define SOF_TKN_INTEL_DMIC_NUM_PDM_ACTIVE      605
 #define SOF_TKN_INTEL_DMIC_SAMPLE_RATE         608
 #define SOF_TKN_INTEL_DMIC_FIFO_WORD_LENGTH    609
+#define SOF_TKN_INTEL_DMIC_UNMUTE_RAMP_TIME_MS  610
 
 /* DMIC PDM */
 #define SOF_TKN_INTEL_DMIC_PDM_CTRL_ID         700
index bbad8053b1bcc45afbe2b20cf7440af365d0e38f..8e00f829bfdbc942242147f51397fc39d488d866 100644 (file)
@@ -779,6 +779,10 @@ static const struct sof_topology_token dmic_tokens[] = {
        {SOF_TKN_INTEL_DMIC_FIFO_WORD_LENGTH,
                SND_SOC_TPLG_TUPLE_TYPE_SHORT, get_token_u16,
                offsetof(struct sof_ipc_dai_dmic_params, fifo_bits), 0},
+       {SOF_TKN_INTEL_DMIC_UNMUTE_RAMP_TIME_MS,
+               SND_SOC_TPLG_TUPLE_TYPE_WORD, get_token_u32,
+               offsetof(struct sof_ipc_dai_dmic_params, unmute_ramp_time), 0},
+
 };
 
 /*