From: "Péter Ujfalusi" <peter.ujfalusi@linux.intel.com>
To: lgirdwood@gmail.com, broonie@kernel.org
Cc: linux-sound@vger.kernel.org,
pierre-louis.bossart@linux.intel.com,
kai.vehmanen@linux.intel.com, ranjani.sridharan@linux.intel.com,
seppo.ingalsuo@linux.intel.com
Subject: Re: [PATCH] ASoC: SOF: ipc4-topology: Add support for NHLT with 16-bit only DMIC blob
Date: Wed, 29 May 2024 14:19:37 +0300 [thread overview]
Message-ID: <d4c5e7a3-710b-4ff1-95a3-395dd780fed3@linux.intel.com> (raw)
In-Reply-To: <20240516075611.18018-1-peter.ujfalusi@linux.intel.com>
Hi Mark,
On 16/05/2024 10:56, Peter Ujfalusi wrote:
> The ACPI NHLT table always had 32-bit DMIC blob even if 16-bit was also
> present and taken as a 'rule' which obviously got broken and there is at
> least one device on the market which ships with only 16-bit DMIC
> configuration blob.
> This corner case has never been supported and it is going to need topology
> updates for DMIC copier to support multiple formats.
>
> As for the kernel side: if the copier supports multiple formats and the
> preferred 32-bit DMIC blob is not found then we will try to get a 16-bit
> DMIC configuration and look for a 16-bit copier config.
Please ignore this patch, I will send it again along with few more patch
building on this to close the gaps with the logic of selecting the NHLT
blob.
> Fixes: f9209644ae76 ("ASoC: SOF: ipc4-topology: Correct DAI copier config and NHLT blob request")
> Link: https://github.com/thesofproject/linux/issues/4973
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
> Reviewed-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
> ---
> sound/soc/sof/ipc4-topology.c | 25 ++++++++++++++++++++++---
> 1 file changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c
> index beff10989324..521b4dcba601 100644
> --- a/sound/soc/sof/ipc4-topology.c
> +++ b/sound/soc/sof/ipc4-topology.c
> @@ -1483,6 +1483,8 @@ snd_sof_get_nhlt_endpoint_data(struct snd_sof_dev *sdev, struct snd_sof_dai *dai
> dir, dev_type);
>
> if (!cfg) {
> + bool get_new_blob = false;
> +
> if (format_change) {
> /*
> * The 32-bit blob was not found in NHLT table, try to
> @@ -1490,7 +1492,20 @@ snd_sof_get_nhlt_endpoint_data(struct snd_sof_dev *sdev, struct snd_sof_dai *dai
> */
> bit_depth = params_width(params);
> format_change = false;
> + get_new_blob = true;
> + } else if (linktype == SOF_DAI_INTEL_DMIC && !single_format) {
> + /*
> + * The requested 32-bit blob (no format change for the
> + * blob request) was not found in NHLT table, try to
> + * look for 16-bit blob if the copier supports multiple
> + * formats
> + */
> + bit_depth = 16;
> + format_change = true;
> + get_new_blob = true;
> + }
>
> + if (get_new_blob) {
> cfg = intel_nhlt_get_endpoint_blob(sdev->dev, ipc4_data->nhlt,
> dai_index, nhlt_type,
> bit_depth, bit_depth,
> @@ -1513,8 +1528,8 @@ snd_sof_get_nhlt_endpoint_data(struct snd_sof_dev *sdev, struct snd_sof_dai *dai
>
> if (format_change) {
> /*
> - * Update the params to reflect that we have loaded 32-bit blob
> - * instead of the 16-bit.
> + * Update the params to reflect that different blob was loaded
> + * instead of the requested bit depth (16 -> 32 or 32 -> 16).
> * This information is going to be used by the caller to find
> * matching copier format on the dai side.
> */
> @@ -1522,7 +1537,11 @@ snd_sof_get_nhlt_endpoint_data(struct snd_sof_dev *sdev, struct snd_sof_dai *dai
>
> m = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);
> snd_mask_none(m);
> - snd_mask_set_format(m, SNDRV_PCM_FORMAT_S32_LE);
> + if (bit_depth == 16)
> + snd_mask_set_format(m, SNDRV_PCM_FORMAT_S16_LE);
> + else
> + snd_mask_set_format(m, SNDRV_PCM_FORMAT_S32_LE);
> +
> }
>
> return 0;
--
Péter
next prev parent reply other threads:[~2024-05-29 11:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-16 7:56 [PATCH] ASoC: SOF: ipc4-topology: Add support for NHLT with 16-bit only DMIC blob Peter Ujfalusi
2024-05-29 11:19 ` Péter Ujfalusi [this message]
2024-05-29 11:48 ` Mark Brown
2024-05-29 11:57 ` Péter Ujfalusi
2024-05-29 12:17 ` Mark Brown
2024-05-29 12:32 ` Péter Ujfalusi
2024-05-29 13:36 ` Mark Brown
2024-05-29 13:49 ` Péter Ujfalusi
2024-05-29 13:52 ` Mark Brown
2024-05-30 15:21 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d4c5e7a3-710b-4ff1-95a3-395dd780fed3@linux.intel.com \
--to=peter.ujfalusi@linux.intel.com \
--cc=broonie@kernel.org \
--cc=kai.vehmanen@linux.intel.com \
--cc=lgirdwood@gmail.com \
--cc=linux-sound@vger.kernel.org \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=ranjani.sridharan@linux.intel.com \
--cc=seppo.ingalsuo@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.