summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/sound/fsl,rpmsg-i2s.txt2
-rw-r--r--sound/soc/fsl/fsl_rpmsg_i2s.c12
-rw-r--r--sound/soc/fsl/fsl_rpmsg_i2s.h19
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 */