diff options
-rw-r--r-- | Documentation/devicetree/bindings/sound/fsl,rpmsg-i2s.txt | 2 | ||||
-rw-r--r-- | sound/soc/fsl/fsl_rpmsg_i2s.c | 12 | ||||
-rw-r--r-- | sound/soc/fsl/fsl_rpmsg_i2s.h | 19 |
3 files changed, 28 insertions, 5 deletions
diff --git a/Documentation/devicetree/bindings/sound/fsl,rpmsg-i2s.txt b/Documentation/devicetree/bindings/sound/fsl,rpmsg-i2s.txt index fd62b0d444a8..5f8c6cbbe5da 100644 --- a/Documentation/devicetree/bindings/sound/fsl,rpmsg-i2s.txt +++ b/Documentation/devicetree/bindings/sound/fsl,rpmsg-i2s.txt @@ -7,7 +7,7 @@ serial interfaces with frame synchronization such as I2S. Required properties: - compatible : Compatible list, contains "fsl,imx7ulp-rpmsg-i2s". - "fsl,imx8mq-rpmsg-i2s" + "fsl,imx8mq-rpmsg-i2s", "fsl,imx8qxp-rpmsg-i2s" - fsl,audioindex : This is an index indicating the audio device index in the M4 side. diff --git a/sound/soc/fsl/fsl_rpmsg_i2s.c b/sound/soc/fsl/fsl_rpmsg_i2s.c index 202906cd3c98..b7ace88f2d93 100644 --- a/sound/soc/fsl/fsl_rpmsg_i2s.c +++ b/sound/soc/fsl/fsl_rpmsg_i2s.c @@ -107,6 +107,7 @@ static const struct snd_soc_component_driver fsl_component = { static const struct of_device_id fsl_rpmsg_i2s_ids[] = { { .compatible = "fsl,imx7ulp-rpmsg-i2s"}, { .compatible = "fsl,imx8mq-rpmsg-i2s"}, + { .compatible = "fsl,imx8qxp-rpmsg-i2s"}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, fsl_rpmsg_i2s_ids); @@ -170,7 +171,7 @@ static int fsl_rpmsg_i2s_probe(struct platform_device *pdev) if (of_device_is_compatible(pdev->dev.of_node, "fsl,imx7ulp-rpmsg-i2s")) { - rpmsg_i2s->codec = 1; + rpmsg_i2s->codec_wm8960 = 1; rpmsg_i2s->version = 1; rpmsg_i2s->rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | @@ -183,8 +184,15 @@ static int fsl_rpmsg_i2s_probe(struct platform_device *pdev) } if (of_device_is_compatible(pdev->dev.of_node, + "fsl,imx8qxp-rpmsg-i2s")) { + rpmsg_i2s->codec_wm8960 = 1 + (1 << 16); + rpmsg_i2s->version = 1; + rpmsg_i2s->codec_cs42888 = 1 + (2 << 16); + } + + if (of_device_is_compatible(pdev->dev.of_node, "fsl,imx8mq-rpmsg-i2s")) { - rpmsg_i2s->codec = 0; + rpmsg_i2s->codec_wm8960 = 0; rpmsg_i2s->version = 2; rpmsg_i2s->rates = SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 | diff --git a/sound/soc/fsl/fsl_rpmsg_i2s.h b/sound/soc/fsl/fsl_rpmsg_i2s.h index 9c5105c0ecf6..e52c861c4d43 100644 --- a/sound/soc/fsl/fsl_rpmsg_i2s.h +++ b/sound/soc/fsl/fsl_rpmsg_i2s.h @@ -410,7 +410,8 @@ struct fsl_rpmsg_i2s { struct platform_device *pdev; struct i2s_info i2s_info; struct pm_qos_request pm_qos_req; - int codec; + int codec_wm8960; + int codec_cs42888; int force_lpa; int version; int rates; @@ -418,6 +419,20 @@ struct fsl_rpmsg_i2s { int enable_lpa; }; -#define RPMSG_CODEC_DRV_NAME "rpmsg-audio-codec" +#define RPMSG_CODEC_DRV_NAME_WM8960 "rpmsg-audio-codec-wm8960" +#define RPMSG_CODEC_DRV_NAME_CS42888 "rpmsg-audio-codec-cs42888" + +struct fsl_rpmsg_codec { + int audioindex; + + /*property for wm8960*/ + bool capless; + bool shared_lrclk; + + /*property for cs42xx8*/ + + char name[32]; + int num_adcs; +}; #endif /* __FSL_RPMSG_I2S_H */ |