diff options
author | Shengjiu Wang <shengjiu.wang@nxp.com> | 2018-09-14 13:16:15 +0800 |
---|---|---|
committer | Dong Aisheng <aisheng.dong@nxp.com> | 2019-11-25 15:53:09 +0800 |
commit | 6ef9128b309dbf826a174e415a0052bb0d6ec153 (patch) | |
tree | 9b8f6ecc62950ab4e5ccba3f69b415f354478a19 /sound/soc/fsl/imx-pcm-rpmsg.c | |
parent | ace16c55c8bfeb4ca6f1f1164e48ae3b4d82ea46 (diff) |
MLK-19581-4: ASoC: imx-pcm-rpmsg: support rpmsg_ak4497
register the codec when needed.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
(cherry picked from commit 241b6b3275924f3dc63be26d1442b55b80ac53ef)
Diffstat (limited to 'sound/soc/fsl/imx-pcm-rpmsg.c')
-rw-r--r-- | sound/soc/fsl/imx-pcm-rpmsg.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/sound/soc/fsl/imx-pcm-rpmsg.c b/sound/soc/fsl/imx-pcm-rpmsg.c index d84723498641..0c2e7e392b79 100644 --- a/sound/soc/fsl/imx-pcm-rpmsg.c +++ b/sound/soc/fsl/imx-pcm-rpmsg.c @@ -63,6 +63,10 @@ static int imx_rpmsg_pcm_hw_params(struct snd_pcm_substream *substream, rpmsg->send_msg.param.format = RPMSG_S16_LE; else if (params_format(params) == SNDRV_PCM_FORMAT_S24_LE) rpmsg->send_msg.param.format = RPMSG_S24_LE; + else if (params_format(params) == SNDRV_PCM_FORMAT_DSD_U16_LE) + rpmsg->send_msg.param.format = SNDRV_PCM_FORMAT_DSD_U16_LE; + else if (params_format(params) == SNDRV_PCM_FORMAT_DSD_U32_LE) + rpmsg->send_msg.param.format = SNDRV_PCM_FORMAT_DSD_U32_LE; else rpmsg->send_msg.param.format = RPMSG_S32_LE; @@ -704,7 +708,7 @@ static int i2s_rpmsg_probe(struct rpmsg_device *rpdev) { struct platform_device *codec_pdev; struct fsl_rpmsg_i2s *rpmsg_i2s = NULL; - struct fsl_rpmsg_codec rpmsg_codec[2]; + struct fsl_rpmsg_codec rpmsg_codec[3]; int ret; if (!i2s_info_g) @@ -753,6 +757,22 @@ static int i2s_rpmsg_probe(struct rpmsg_device *rpdev) return ret; } } + + if (rpmsg_i2s->codec_ak4497) { + rpmsg_codec[2].audioindex = rpmsg_i2s->codec_ak4497 >> 16; + codec_pdev = platform_device_register_data( + &rpmsg_i2s->pdev->dev, + RPMSG_CODEC_DRV_NAME_AK4497, + PLATFORM_DEVID_NONE, + &rpmsg_codec[2], sizeof(struct fsl_rpmsg_codec)); + if (IS_ERR(codec_pdev)) { + dev_err(&rpdev->dev, + "failed to register rpmsg audio codec\n"); + ret = PTR_ERR(codec_pdev); + return ret; + } + } + return 0; } |