[alsa-devel] [PATCH] ASoC: pcm: Require both CODEC and CPU support when declaring stream caps

Fabio Estevam festevam at gmail.com
Sun Jun 2 01:01:42 CEST 2013


Hi Mark,

On Sat, Jun 1, 2013 at 7:16 PM, Mark Brown <broonie at linaro.org> wrote:
> When declaring playback and capture capabilities check for both CODEC
> side and CPU side support rather than only checking for CODEC side
> support.  While it is unusual some CPUs do have unidirectional DAIs.
>
> Signed-off-by: Mark Brown <broonie at kernel.org>

Thanks for the patch, but I still got the same output:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: mxssgtl5000 [mxs_sgtl5000], device 0: HiFi Playback sgtl5000-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: mxssgtl5000 [mxs_sgtl5000], device 1: HiFi Capture sgtl5000-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I also tried:

diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c
index 365d9d2..b4a527d 100644
--- a/sound/soc/mxs/mxs-saif.c
+++ b/sound/soc/mxs/mxs-saif.c
@@ -601,24 +601,21 @@ static const struct snd_soc_dai_ops mxs_saif_dai_ops = {
 	.set_fmt = mxs_saif_set_dai_fmt,
 };

-static int mxs_saif_dai_probe(struct snd_soc_dai *dai)
+static struct snd_soc_dai_driver mxs_saif_dai[] = {
 {
-	struct mxs_saif *saif = dev_get_drvdata(dai->dev);
-
-	snd_soc_dai_set_drvdata(dai, saif);
-
-	return 0;
-}
-
-static struct snd_soc_dai_driver mxs_saif_dai = {
-	.name = "mxs-saif",
-	.probe = mxs_saif_dai_probe,
+	.name = "saif0",
+	.id = 0,
 	.playback = {
 		.channels_min = 2,
 		.channels_max = 2,
 		.rates = MXS_SAIF_RATES,
 		.formats = MXS_SAIF_FORMATS,
 	},
+	.ops = &mxs_saif_dai_ops,
+},
+{
+	.name = "saif1",
+	.id = 1,
 	.capture = {
 		.channels_min = 2,
 		.channels_max = 2,
@@ -626,6 +623,7 @@ static struct snd_soc_dai_driver mxs_saif_dai = {
 		.formats = MXS_SAIF_FORMATS,
 	},
 	.ops = &mxs_saif_dai_ops,
+},
 };

 static irqreturn_t mxs_saif_irq(int irq, void *dev_id)
@@ -772,7 +770,8 @@ static int mxs_saif_probe(struct platform_device *pdev)

 	platform_set_drvdata(pdev, saif);

-	ret = snd_soc_register_dai(&pdev->dev, &mxs_saif_dai);
+	ret = snd_soc_register_dais(&pdev->dev, mxs_saif_dai,
+						ARRAY_SIZE(mxs_saif_dai));
 	if (ret) {
 		dev_err(&pdev->dev, "register DAI failed\n");
 		return ret;
-- 
1.8.1.2

,but this did not work either.

I will have to debug more.

Thanks,

Fabio Estevam


More information about the Alsa-devel mailing list