diff options
author | Shengjiu Wang <shengjiu.wang@nxp.com> | 2018-08-08 15:06:58 +0800 |
---|---|---|
committer | Dong Aisheng <aisheng.dong@nxp.com> | 2019-11-25 15:53:05 +0800 |
commit | 997f8ece23d921bc954c33873618081b54d635b1 (patch) | |
tree | 4ea6275e5967e5054662fe2a15d2cb17daf744af /sound/soc/fsl/imx-pcm-rpmsg.c | |
parent | dba422ef60db96dc15807ccae525b4bc05e13aec (diff) |
MLK-19168-3: ASoC: imx-pcm-rpmsg: register rpmsg wm8960 and cs42xx8 codec
register rpmsg wm8960 and cs42xx8 codec
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
(cherry picked from commit c49f8d20c6fd4479ad45d76290bb5c57d4800d9e)
Diffstat (limited to 'sound/soc/fsl/imx-pcm-rpmsg.c')
-rw-r--r-- | sound/soc/fsl/imx-pcm-rpmsg.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/sound/soc/fsl/imx-pcm-rpmsg.c b/sound/soc/fsl/imx-pcm-rpmsg.c index 4caf8326b738..d84723498641 100644 --- a/sound/soc/fsl/imx-pcm-rpmsg.c +++ b/sound/soc/fsl/imx-pcm-rpmsg.c @@ -704,6 +704,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]; int ret; if (!i2s_info_g) @@ -718,12 +719,15 @@ static int i2s_rpmsg_probe(struct rpmsg_device *rpdev) rpmsg_i2s = container_of(i2s_info_g, struct fsl_rpmsg_i2s, i2s_info); - if (rpmsg_i2s->codec) { + if (rpmsg_i2s->codec_wm8960) { + rpmsg_codec[0].audioindex = rpmsg_i2s->codec_wm8960 >> 16; + rpmsg_codec[0].shared_lrclk = true; + rpmsg_codec[0].capless = false; codec_pdev = platform_device_register_data( &rpmsg_i2s->pdev->dev, - RPMSG_CODEC_DRV_NAME, + RPMSG_CODEC_DRV_NAME_WM8960, PLATFORM_DEVID_NONE, - NULL, 0); + &rpmsg_codec[0], sizeof(struct fsl_rpmsg_codec)); if (IS_ERR(codec_pdev)) { dev_err(&rpdev->dev, "failed to register rpmsg audio codec\n"); @@ -732,6 +736,23 @@ static int i2s_rpmsg_probe(struct rpmsg_device *rpdev) } } + if (rpmsg_i2s->codec_cs42888) { + rpmsg_codec[1].audioindex = rpmsg_i2s->codec_cs42888 >> 16; + strcpy(rpmsg_codec[1].name, "cs42888"); + rpmsg_codec[1].num_adcs = 2; + + codec_pdev = platform_device_register_data( + &rpmsg_i2s->pdev->dev, + RPMSG_CODEC_DRV_NAME_CS42888, + PLATFORM_DEVID_NONE, + &rpmsg_codec[1], 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; } |