summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/imx-pcm-rpmsg.c
diff options
context:
space:
mode:
authorShengjiu Wang <shengjiu.wang@nxp.com>2018-09-14 13:16:15 +0800
committerDong Aisheng <aisheng.dong@nxp.com>2019-11-25 15:53:09 +0800
commit6ef9128b309dbf826a174e415a0052bb0d6ec153 (patch)
tree9b8f6ecc62950ab4e5ccba3f69b415f354478a19 /sound/soc/fsl/imx-pcm-rpmsg.c
parentace16c55c8bfeb4ca6f1f1164e48ae3b4d82ea46 (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.c22
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;
}