[PATCH] ASoC: imx-pcm-rpmsg: Set PCM hardware parameters separately

Shengjiu Wang shengjiu.wang at gmail.com
Thu Jun 29 12:08:40 AEST 2023


On Sun, Jun 25, 2023 at 2:54 PM Chancel Liu <chancel.liu at nxp.com> wrote:

> Different PCM devices may have different PCM hardware parameters. It
> requires PCM hardware parameters set separately if there is more than
> one rpmsg sound card.
>
> Signed-off-by: Chancel Liu <chancel.liu at nxp.com>
>

Acked-by: Shengjiu Wang <shengjiu.wang at gmail.com>

Best regards
Wang Shengjiu

> ---
>  sound/soc/fsl/imx-pcm-rpmsg.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/sound/soc/fsl/imx-pcm-rpmsg.c b/sound/soc/fsl/imx-pcm-rpmsg.c
> index 765dad607bf6..d63782b8bdef 100644
> --- a/sound/soc/fsl/imx-pcm-rpmsg.c
> +++ b/sound/soc/fsl/imx-pcm-rpmsg.c
> @@ -228,6 +228,10 @@ static int imx_rpmsg_pcm_open(struct
> snd_soc_component *component,
>                               struct snd_pcm_substream *substream)
>  {
>         struct rpmsg_info *info = dev_get_drvdata(component->dev);
> +       struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
> +       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
> +       struct fsl_rpmsg *rpmsg = dev_get_drvdata(cpu_dai->dev);
> +       struct snd_pcm_hardware pcm_hardware;
>         struct rpmsg_msg *msg;
>         int ret = 0;
>         int cmd;
> @@ -255,10 +259,11 @@ static int imx_rpmsg_pcm_open(struct
> snd_soc_component *component,
>
>         info->send_message(msg, info);
>
> -       imx_rpmsg_pcm_hardware.period_bytes_max =
> -                       imx_rpmsg_pcm_hardware.buffer_bytes_max / 2;
> +       pcm_hardware = imx_rpmsg_pcm_hardware;
> +       pcm_hardware.buffer_bytes_max = rpmsg->buffer_size;
> +       pcm_hardware.period_bytes_max = pcm_hardware.buffer_bytes_max / 2;
>
> -       snd_soc_set_runtime_hwparams(substream, &imx_rpmsg_pcm_hardware);
> +       snd_soc_set_runtime_hwparams(substream, &pcm_hardware);
>
>         ret = snd_pcm_hw_constraint_integer(substream->runtime,
>                                             SNDRV_PCM_HW_PARAM_PERIODS);
> @@ -597,7 +602,6 @@ static int imx_rpmsg_pcm_new(struct snd_soc_component
> *component,
>         if (ret)
>                 return ret;
>
> -       imx_rpmsg_pcm_hardware.buffer_bytes_max = rpmsg->buffer_size;
>         return snd_pcm_set_fixed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV_WC,
>                                             pcm->card->dev,
> rpmsg->buffer_size);
>  }
> --
> 2.25.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20230629/739f551d/attachment.htm>


More information about the Linuxppc-dev mailing list