[PATCH 5/5 v7][RFC] ASoC: fsi: add .of_xlate_dai_name support

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Mon Feb 25 19:57:59 EST 2013


fsi driver can be used from simple-card driver
which requires .of_xlate_dai_name, and snd_soc_register_cpu()
This patch supports these.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
---
v6 -> v7

 - used snd_soc_register_cpu()
 - of_xlate_dai_name is on cpu driver

 .../devicetree/bindings/sound/renesas,fsi.txt      |    9 ++++++++
 sound/soc/sh/fsi.c                                 |   22 ++++++++++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/sound/renesas,fsi.txt b/Documentation/devicetree/bindings/sound/renesas,fsi.txt
index c5be003..a403ec1 100644
--- a/Documentation/devicetree/bindings/sound/renesas,fsi.txt
+++ b/Documentation/devicetree/bindings/sound/renesas,fsi.txt
@@ -13,9 +13,18 @@ Required properties:
 - fsib,stream-mode-support	: same as fsia
 - fsib,use-internal-clock	: same as fsia
 
+Optional
+
+  #sound-dai-cells		: enable DAI specifier, it must be 1
+
+  Valid values for the DAI specifier are:
+  0: FSI port A
+  1: FSI port B
+
 Example:
 
 sh_fsi2: sh_fsi2 at 0xec230000 {
+	#sound-dai-cells = <1>;
 	compatible = "renesas,sh_fsi2";
 	reg = <0xec230000 0x400>;
 	interrupts = <0 146 0x4>;
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index c724026a..f40f731 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -1886,6 +1886,24 @@ static struct snd_soc_platform_driver fsi_soc_platform = {
 	.pcm_free	= fsi_pcm_free,
 };
 
+static int fsi_of_xlate_dai_name(struct snd_soc_cpu *codec,
+				 const struct of_phandle_args *spec,
+				 const char **dai_name)
+{
+	int id = spec->args[0];
+
+	if (ARRAY_SIZE(fsi_soc_dai) <= id)
+		return -ENODEV;
+
+	*dai_name = fsi_soc_dai[id].name;
+
+	return 0;
+}
+
+static const struct snd_soc_cpu_driver fsi_soc_cpu = {
+	.of_xlate_dai_name = fsi_of_xlate_dai_name,
+};
+
 /*
  *		platform function
  */
@@ -2046,8 +2064,8 @@ static int fsi_probe(struct platform_device *pdev)
 		goto exit_fsib;
 	}
 
-	ret = snd_soc_register_dais(&pdev->dev, fsi_soc_dai,
-				    ARRAY_SIZE(fsi_soc_dai));
+	ret = snd_soc_register_cpu(&pdev->dev, &fsi_soc_cpu,
+				   fsi_soc_dai, ARRAY_SIZE(fsi_soc_dai));
 	if (ret < 0) {
 		dev_err(&pdev->dev, "cannot snd dai register\n");
 		goto exit_snd_soc;
-- 
1.7.9.5



More information about the devicetree-discuss mailing list