Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cece5656 authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Mark Brown
Browse files

ASoC: add S/PDIF support to Armada 370 DB ASoC driver



The Armada 370 DB board not only has analog audio input/output, but
also S/PDIF input/output. This commit adds support for S/PDIF in the
ASoC machine driver of the Armada 370 DB platform, and adjusts the
Device Tree bindings documentation accordingly.

Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 64895739
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -11,14 +11,17 @@ Mandatory properties:
 * marvell,audio-controller: a phandle that points to the audio
 * marvell,audio-controller: a phandle that points to the audio
   controller of the Armada 370 SoC.
   controller of the Armada 370 SoC.


 * marvell,audio-codec: a phandle that points to the analog audio
 * marvell,audio-codec: a set of three phandles that points to:
   codec connected to the Armada 370 SoC.

    1/ the analog audio codec connected to the Armada 370 SoC
    2/ the S/PDIF transceiver
    3/ the S/PDIF receiver


Example:
Example:


	sound {
	sound {
	      compatible = "marvell,a370db-audio";
	      compatible = "marvell,a370db-audio";
	      marvell,audio-controller = <&audio_controller>;
	      marvell,audio-controller = <&audio_controller>;
	      marvell,audio-codec = <&audio_codec>;
	      marvell,audio-codec = <&audio_codec &spdif_out &spdif_in>;
	      status = "okay";
	      status = "okay";
	};
	};
+1 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ config SND_KIRKWOOD_SOC_ARMADA370_DB
	tristate "SoC Audio support for Armada 370 DB"
	tristate "SoC Audio support for Armada 370 DB"
	depends on SND_KIRKWOOD_SOC && (ARCH_MVEBU || COMPILE_TEST) && I2C
	depends on SND_KIRKWOOD_SOC && (ARCH_MVEBU || COMPILE_TEST) && I2C
	select SND_SOC_CS42L51
	select SND_SOC_CS42L51
	select SND_SOC_SPDIF
	help
	help
	  Say Y if you want to add support for SoC audio on
	  Say Y if you want to add support for SoC audio on
	  the Armada 370 Development Board.
	  the Armada 370 Development Board.
+28 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,20 @@ static struct snd_soc_dai_link a370db_dai[] = {
	.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
	.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
	.ops = &a370db_ops,
	.ops = &a370db_ops,
},
},
{
	.name = "S/PDIF out",
	.stream_name = "spdif-out",
	.cpu_dai_name = "spdif",
	.codec_dai_name = "dit-hifi",
	.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
},
{
	.name = "S/PDIF in",
	.stream_name = "spdif-in",
	.cpu_dai_name = "spdif",
	.codec_dai_name = "dir-hifi",
	.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
},
};
};


static struct snd_soc_card a370db = {
static struct snd_soc_card a370db = {
@@ -95,6 +109,20 @@ static int a370db_probe(struct platform_device *pdev)
		of_parse_phandle(pdev->dev.of_node,
		of_parse_phandle(pdev->dev.of_node,
				 "marvell,audio-codec", 0);
				 "marvell,audio-codec", 0);


	a370db_dai[1].cpu_of_node = a370db_dai[0].cpu_of_node;
	a370db_dai[1].platform_of_node = a370db_dai[0].cpu_of_node;

	a370db_dai[1].codec_of_node =
		of_parse_phandle(pdev->dev.of_node,
				 "marvell,audio-codec", 1);

	a370db_dai[2].cpu_of_node = a370db_dai[0].cpu_of_node;
	a370db_dai[2].platform_of_node = a370db_dai[0].cpu_of_node;

	a370db_dai[2].codec_of_node =
		of_parse_phandle(pdev->dev.of_node,
				 "marvell,audio-codec", 2);

	return devm_snd_soc_register_card(card->dev, card);
	return devm_snd_soc_register_card(card->dev, card);
}
}