Commit 16882d24 authored by Jeeja KP's avatar Jeeja KP Committed by Mark Brown

ASoC: Intel: Skylake: Ignore rate check for DMIC link

DMIC NHLT entry is sample rate agnostic, so ignore the rate
checks for DMIC type
Signed-off-by: default avatarJeeja KP <jeeja.kp@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 65aecfa8
...@@ -55,7 +55,7 @@ void skl_nhlt_free(void *addr) ...@@ -55,7 +55,7 @@ void skl_nhlt_free(void *addr)
static struct nhlt_specific_cfg *skl_get_specific_cfg( static struct nhlt_specific_cfg *skl_get_specific_cfg(
struct device *dev, struct nhlt_fmt *fmt, struct device *dev, struct nhlt_fmt *fmt,
u8 no_ch, u32 rate, u16 bps) u8 no_ch, u32 rate, u16 bps, u8 linktype)
{ {
struct nhlt_specific_cfg *sp_config; struct nhlt_specific_cfg *sp_config;
struct wav_fmt *wfmt; struct wav_fmt *wfmt;
...@@ -68,11 +68,17 @@ static struct nhlt_specific_cfg *skl_get_specific_cfg( ...@@ -68,11 +68,17 @@ static struct nhlt_specific_cfg *skl_get_specific_cfg(
wfmt = &fmt_config->fmt_ext.fmt; wfmt = &fmt_config->fmt_ext.fmt;
dev_dbg(dev, "ch=%d fmt=%d s_rate=%d\n", wfmt->channels, dev_dbg(dev, "ch=%d fmt=%d s_rate=%d\n", wfmt->channels,
wfmt->bits_per_sample, wfmt->samples_per_sec); wfmt->bits_per_sample, wfmt->samples_per_sec);
if (wfmt->channels == no_ch && wfmt->samples_per_sec == rate && if (wfmt->channels == no_ch && wfmt->bits_per_sample == bps) {
wfmt->bits_per_sample == bps) { /*
* if link type is dmic ignore rate check as the blob is
* generic for all rates
*/
sp_config = &fmt_config->config; sp_config = &fmt_config->config;
if (linktype == NHLT_LINK_DMIC)
return sp_config;
return sp_config; if (wfmt->samples_per_sec == rate)
return sp_config;
} }
fmt_config = (struct nhlt_fmt_cfg *)(fmt_config->config.caps + fmt_config = (struct nhlt_fmt_cfg *)(fmt_config->config.caps +
...@@ -128,7 +134,8 @@ struct nhlt_specific_cfg ...@@ -128,7 +134,8 @@ struct nhlt_specific_cfg
if (skl_check_ep_match(dev, epnt, instance, link_type, dirn)) { if (skl_check_ep_match(dev, epnt, instance, link_type, dirn)) {
fmt = (struct nhlt_fmt *)(epnt->config.caps + fmt = (struct nhlt_fmt *)(epnt->config.caps +
epnt->config.size); epnt->config.size);
sp_config = skl_get_specific_cfg(dev, fmt, num_ch, s_rate, bps); sp_config = skl_get_specific_cfg(dev, fmt, num_ch,
s_rate, bps, link_type);
if (sp_config) if (sp_config)
return sp_config; return sp_config;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment