alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [RFC 0/7] mpc5200 ASoC and pcm030 board fixes
@ 2012-09-13 21:43 Eric Millbrandt
  2012-09-13 21:43 ` [PATCH 1/7] powerpc/52xx: define FSL_SOC Eric Millbrandt
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

This series is a respin of "mpc5200 ASoC fixups"

The mpc5200 ASoC and pcm030 board code compiled, but did not run after the
multi-codec patches.  This series add the missing pieces into the mpc5200 ASoC
drivers and updates the pcm030 board to the current api.

Eric Millbrandt (7):
  powerpc/52xx: define FSL_SOC
  ASoC: fsl: mpc5200 combine psc_dma platform data
  ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver
  ASoC: fsl: cleanup headers in pcm030-audio-fabric
  ASoC: fsl: convert pcm030-audio-fabric to a platform-driver
  ASoC: fsl: convert pcm030-audio-fabric to use snd_soc_register_card
  ASoC: fsl: register the wm9712-codec

 arch/powerpc/platforms/52xx/Kconfig |    1 +
 sound/soc/fsl/mpc5200_dma.c         |   24 ++-------
 sound/soc/fsl/mpc5200_dma.h         |    3 +
 sound/soc/fsl/mpc5200_psc_ac97.c    |   10 ++++
 sound/soc/fsl/mpc5200_psc_i2s.c     |    8 +++
 sound/soc/fsl/pcm030-audio-fabric.c |  100 +++++++++++++++++++++++++---------
 6 files changed, 99 insertions(+), 47 deletions(-)

-- 
1.7.2.5

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/7] powerpc/52xx: define FSL_SOC
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  2012-09-14  9:31   ` agust
  2012-09-13 21:43 ` [PATCH 2/7] ASoC: fsl: mpc5200 combine psc_dma platform data Eric Millbrandt
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

mpc52xx socs need to have FSL_SOC defined to build their drivers (i2c-mpc, ASoC)

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/arch/powerpc/platforms/52xx/Kconfig b/arch/powerpc/platforms/52xx/Kconfig
index 90f4496..fb35944 100644
--- a/arch/powerpc/platforms/52xx/Kconfig
+++ b/arch/powerpc/platforms/52xx/Kconfig
@@ -1,6 +1,7 @@
 config PPC_MPC52xx
 	bool "52xx-based boards"
 	depends on 6xx
+	select FSL_SOC
 	select PPC_CLOCK
 	select PPC_PCI_CHOICE
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/7] ASoC: fsl: mpc5200 combine psc_dma platform data
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
  2012-09-13 21:43 ` [PATCH 1/7] powerpc/52xx: define FSL_SOC Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  2012-09-19  3:03   ` Mark Brown
  2012-09-13 21:43 ` [PATCH 3/7] ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver Eric Millbrandt
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

The mpc5200_psc_ac97 and mpc5200_psc_i2s modules rely on shared platform data
with mpc5200_dma.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/sound/soc/fsl/mpc5200_dma.c b/sound/soc/fsl/mpc5200_dma.c
index 9a3f7c5..9997c03 100644
--- a/sound/soc/fsl/mpc5200_dma.c
+++ b/sound/soc/fsl/mpc5200_dma.c
@@ -370,7 +370,7 @@ static struct snd_soc_platform_driver mpc5200_audio_dma_platform = {
 	.pcm_free	= &psc_dma_free,
 };
 
-static int mpc5200_hpcd_probe(struct platform_device *op)
+int mpc5200_audio_dma_create(struct platform_device *op)
 {
 	phys_addr_t fifo;
 	struct psc_dma *psc_dma;
@@ -487,8 +487,9 @@ out_unmap:
 	iounmap(regs);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(mpc5200_audio_dma_create);
 
-static int mpc5200_hpcd_remove(struct platform_device *op)
+int mpc5200_audio_dma_destroy(struct platform_device *op)
 {
 	struct psc_dma *psc_dma = dev_get_drvdata(&op->dev);
 
@@ -510,24 +511,7 @@ static int mpc5200_hpcd_remove(struct platform_device *op)
 
 	return 0;
 }
-
-static struct of_device_id mpc5200_hpcd_match[] = {
-	{ .compatible = "fsl,mpc5200-pcm", },
-	{}
-};
-MODULE_DEVICE_TABLE(of, mpc5200_hpcd_match);
-
-static struct platform_driver mpc5200_hpcd_of_driver = {
-	.probe		= mpc5200_hpcd_probe,
-	.remove		= mpc5200_hpcd_remove,
-	.driver = {
-		.owner		= THIS_MODULE,
-		.name		= "mpc5200-pcm-audio",
-		.of_match_table    = mpc5200_hpcd_match,
-	}
-};
-
-module_platform_driver(mpc5200_hpcd_of_driver);
+EXPORT_SYMBOL_GPL(mpc5200_audio_dma_destroy);
 
 MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>");
 MODULE_DESCRIPTION("Freescale MPC5200 PSC in DMA mode ASoC Driver");
diff --git a/sound/soc/fsl/mpc5200_dma.h b/sound/soc/fsl/mpc5200_dma.h
index a3c0cd5..dff253f 100644
--- a/sound/soc/fsl/mpc5200_dma.h
+++ b/sound/soc/fsl/mpc5200_dma.h
@@ -81,4 +81,7 @@ to_psc_dma_stream(struct snd_pcm_substream *substream, struct psc_dma *psc_dma)
 	return &psc_dma->playback;
 }
 
+int mpc5200_audio_dma_create(struct platform_device *op);
+int mpc5200_audio_dma_destroy(struct platform_device *op);
+
 #endif /* __SOUND_SOC_FSL_MPC5200_DMA_H__ */
diff --git a/sound/soc/fsl/mpc5200_psc_ac97.c b/sound/soc/fsl/mpc5200_psc_ac97.c
index ffa00a2..9a09453 100644
--- a/sound/soc/fsl/mpc5200_psc_ac97.c
+++ b/sound/soc/fsl/mpc5200_psc_ac97.c
@@ -278,6 +278,10 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op)
 	struct snd_ac97 ac97;
 	struct mpc52xx_psc __iomem *regs;
 
+	rc = mpc5200_audio_dma_create(op);
+	if (rc != 0)
+		return rc;
+
 	rc = snd_soc_register_dais(&op->dev, psc_ac97_dai, ARRAY_SIZE(psc_ac97_dai));
 	if (rc != 0) {
 		dev_err(&op->dev, "Failed to register DAI\n");
@@ -303,6 +307,7 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op)
 
 static int __devexit psc_ac97_of_remove(struct platform_device *op)
 {
+	mpc5200_audio_dma_destroy(op);
 	snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_ac97_dai));
 	return 0;
 }
diff --git a/sound/soc/fsl/mpc5200_psc_i2s.c b/sound/soc/fsl/mpc5200_psc_i2s.c
index 7b53032..c0b7a23 100644
--- a/sound/soc/fsl/mpc5200_psc_i2s.c
+++ b/sound/soc/fsl/mpc5200_psc_i2s.c
@@ -156,6 +156,10 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op)
 	struct psc_dma *psc_dma;
 	struct mpc52xx_psc __iomem *regs;
 
+	rc = mpc5200_audio_dma_create(op);
+	if (rc != 0)
+		return rc;
+
 	rc = snd_soc_register_dais(&op->dev, psc_i2s_dai, ARRAY_SIZE(psc_i2s_dai));
 	if (rc != 0) {
 		pr_err("Failed to register DAI\n");
@@ -200,6 +204,7 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op)
 
 static int __devexit psc_i2s_of_remove(struct platform_device *op)
 {
+	mpc5200_audio_dma_destroy(op);
 	snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_i2s_dai));
 	return 0;
 }
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 3/7] ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
  2012-09-13 21:43 ` [PATCH 1/7] powerpc/52xx: define FSL_SOC Eric Millbrandt
  2012-09-13 21:43 ` [PATCH 2/7] ASoC: fsl: mpc5200 combine psc_dma platform data Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  2012-09-19  3:04   ` Mark Brown
  2012-09-13 21:43 ` [PATCH 4/7] ASoC: fsl: cleanup headers in pcm030-audio-fabric Eric Millbrandt
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

Add missing dai_driver information to avoid these runtime errors

[   16.433788] asoc: error - multiple DAI f0002c00.i2s registered with no name
[   16.453551] Failed to register DAI
[   16.461222] mpc5200-psc-i2s: probe of f0002c00.i2s failed with error -22
[   16.475242] asoc: error - multiple DAI f0002000.ac97 registered with no name
[   16.488087] mpc5200-psc-ac97 f0002000.ac97: Failed to register DAI
[   16.502222] mpc5200-psc-ac97: probe of f0002000.ac97 failed with error -22

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/sound/soc/fsl/mpc5200_psc_ac97.c b/sound/soc/fsl/mpc5200_psc_ac97.c
index 9a09453..a313c0a 100644
--- a/sound/soc/fsl/mpc5200_psc_ac97.c
+++ b/sound/soc/fsl/mpc5200_psc_ac97.c
@@ -237,15 +237,18 @@ static const struct snd_soc_dai_ops psc_ac97_digital_ops = {
 
 static struct snd_soc_dai_driver psc_ac97_dai[] = {
 {
+	.name = "mpc5200-psc-ac97.0",
 	.ac97_control = 1,
 	.probe	= psc_ac97_probe,
 	.playback = {
+		.stream_name	= "AC97 Playback",
 		.channels_min   = 1,
 		.channels_max   = 6,
 		.rates          = SNDRV_PCM_RATE_8000_48000,
 		.formats = SNDRV_PCM_FMTBIT_S32_BE,
 	},
 	.capture = {
+		.stream_name	= "AC97 Capture",
 		.channels_min   = 1,
 		.channels_max   = 2,
 		.rates          = SNDRV_PCM_RATE_8000_48000,
@@ -254,8 +257,10 @@ static struct snd_soc_dai_driver psc_ac97_dai[] = {
 	.ops = &psc_ac97_analog_ops,
 },
 {
+	.name = "mpc5200-psc-ac97.1",
 	.ac97_control = 1,
 	.playback = {
+		.stream_name	= "AC97 SPDIF",
 		.channels_min   = 1,
 		.channels_max   = 2,
 		.rates          = SNDRV_PCM_RATE_32000 | \
diff --git a/sound/soc/fsl/mpc5200_psc_i2s.c b/sound/soc/fsl/mpc5200_psc_i2s.c
index c0b7a23..ba1f0a6 100644
--- a/sound/soc/fsl/mpc5200_psc_i2s.c
+++ b/sound/soc/fsl/mpc5200_psc_i2s.c
@@ -130,13 +130,16 @@ static const struct snd_soc_dai_ops psc_i2s_dai_ops = {
 };
 
 static struct snd_soc_dai_driver psc_i2s_dai[] = {{
+	.name = "mpc5200-psc-i2s.0",
 	.playback = {
+		.stream_name = "I2S Playback",
 		.channels_min = 2,
 		.channels_max = 2,
 		.rates = PSC_I2S_RATES,
 		.formats = PSC_I2S_FORMATS,
 	},
 	.capture = {
+		.stream_name = "I2S Capture",
 		.channels_min = 2,
 		.channels_max = 2,
 		.rates = PSC_I2S_RATES,
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 4/7] ASoC: fsl: cleanup headers in pcm030-audio-fabric
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
                   ` (2 preceding siblings ...)
  2012-09-13 21:43 ` [PATCH 3/7] ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  2012-09-19  3:04   ` Mark Brown
  2012-09-13 21:43 ` [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver Eric Millbrandt
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

Remove unreferenced header files.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/sound/soc/fsl/pcm030-audio-fabric.c b/sound/soc/fsl/pcm030-audio-fabric.c
index b3af55d..1353e8f 100644
--- a/sound/soc/fsl/pcm030-audio-fabric.c
+++ b/sound/soc/fsl/pcm030-audio-fabric.c
@@ -12,22 +12,13 @@
 
 #include <linux/init.h>
 #include <linux/module.h>
-#include <linux/interrupt.h>
 #include <linux/device.h>
-#include <linux/delay.h>
 #include <linux/of_device.h>
 #include <linux/of_platform.h>
-#include <linux/dma-mapping.h>
 
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/pcm_params.h>
-#include <sound/initval.h>
 #include <sound/soc.h>
 
 #include "mpc5200_dma.h"
-#include "mpc5200_psc_ac97.h"
-#include "../codecs/wm9712.h"
 
 #define DRV_NAME "pcm030-audio-fabric"
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
                   ` (3 preceding siblings ...)
  2012-09-13 21:43 ` [PATCH 4/7] ASoC: fsl: cleanup headers in pcm030-audio-fabric Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  2012-09-19  3:03   ` Mark Brown
  2012-09-13 21:43 ` [PATCH 6/7] ASoC: fsl: convert pcm030-audio-fabric to use snd_soc_register_card Eric Millbrandt
  2012-09-13 21:43 ` [PATCH 7/7] ASoC: fsl: register the wm9712-codec Eric Millbrandt
  6 siblings, 1 reply; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

This patch converts the pcm030-audio-fabric driver to a platform-driver and
adds a remove function.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/sound/soc/fsl/pcm030-audio-fabric.c b/sound/soc/fsl/pcm030-audio-fabric.c
index 1353e8f..5c8e2d6 100644
--- a/sound/soc/fsl/pcm030-audio-fabric.c
+++ b/sound/soc/fsl/pcm030-audio-fabric.c
@@ -48,7 +48,7 @@ static struct snd_soc_card card = {
 	.num_links = ARRAY_SIZE(pcm030_fabric_dai),
 };
 
-static __init int pcm030_fabric_init(void)
+static int __init pcm030_fabric_probe(struct platform_device *op)
 {
 	struct platform_device *pdev;
 	int rc;
@@ -62,6 +62,7 @@ static __init int pcm030_fabric_init(void)
 		return -ENODEV;
 	}
 
+	platform_set_drvdata(op, pdev);
 	platform_set_drvdata(pdev, &card);
 
 	rc = platform_device_add(pdev);
@@ -73,7 +74,32 @@ static __init int pcm030_fabric_init(void)
 	return 0;
 }
 
-module_init(pcm030_fabric_init);
+static int __devexit pcm030_fabric_remove(struct platform_device *op)
+{
+	struct platform_device *pdev = platform_get_drvdata(op);
+
+	platform_device_unregister(pdev);
+
+	return 0;
+}
+
+static struct of_device_id pcm030_audio_match[] = {
+	{ .compatible = "phytec,pcm030-audio-fabric", },
+	{}
+};
+MODULE_DEVICE_TABLE(of, pcm030_audio_match);
+
+static struct platform_driver pcm030_fabric_driver = {
+	.probe		= pcm030_fabric_probe,
+	.remove		= __devexit_p(pcm030_fabric_remove),
+	.driver		= {
+		.name	= DRV_NAME,
+		.owner	= THIS_MODULE,
+		.of_match_table    = pcm030_audio_match,
+	},
+};
+
+module_platform_driver(pcm030_fabric_driver);
 
 
 MODULE_AUTHOR("Jon Smirl <jonsmirl@gmail.com>");
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 6/7] ASoC: fsl: convert pcm030-audio-fabric to use snd_soc_register_card
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
                   ` (4 preceding siblings ...)
  2012-09-13 21:43 ` [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  2012-09-13 21:43 ` [PATCH 7/7] ASoC: fsl: register the wm9712-codec Eric Millbrandt
  6 siblings, 0 replies; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

This patch converts pcm030-audio-fabric to use the new snd_soc_register_card
ASoC api instead of the older method of registering a separate platform
device.  It also creates the dai_link to the mpc5200_psc_ac97 platform using
the device tree.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/sound/soc/fsl/pcm030-audio-fabric.c b/sound/soc/fsl/pcm030-audio-fabric.c
index 5c8e2d6..893e240 100644
--- a/sound/soc/fsl/pcm030-audio-fabric.c
+++ b/sound/soc/fsl/pcm030-audio-fabric.c
@@ -28,7 +28,6 @@ static struct snd_soc_dai_link pcm030_fabric_dai[] = {
 	.stream_name = "AC97 Analog",
 	.codec_dai_name = "wm9712-hifi",
 	.cpu_dai_name = "mpc5200-psc-ac97.0",
-	.platform_name = "mpc5200-pcm-audio",
 	.codec_name = "wm9712-codec",
 },
 {
@@ -36,12 +35,11 @@ static struct snd_soc_dai_link pcm030_fabric_dai[] = {
 	.stream_name = "AC97 IEC958",
 	.codec_dai_name = "wm9712-aux",
 	.cpu_dai_name = "mpc5200-psc-ac97.1",
-	.platform_name = "mpc5200-pcm-audio",
 	.codec_name = "wm9712-codec",
 },
 };
 
-static struct snd_soc_card card = {
+static struct snd_soc_card pcm030_card = {
 	.name = "pcm030",
 	.owner = THIS_MODULE,
 	.dai_link = pcm030_fabric_dai,
@@ -50,37 +48,42 @@ static struct snd_soc_card card = {
 
 static int __init pcm030_fabric_probe(struct platform_device *op)
 {
-	struct platform_device *pdev;
-	int rc;
+	struct device_node *np = op->dev.of_node;
+	struct device_node *platform_np;
+	struct snd_soc_card *card = &pcm030_card;
+	int ret;
+	int i;
 
 	if (!of_machine_is_compatible("phytec,pcm030"))
 		return -ENODEV;
 
-	pdev = platform_device_alloc("soc-audio", 1);
-	if (!pdev) {
-		pr_err("pcm030_fabric_init: platform_device_alloc() failed\n");
+	card->dev = &op->dev;
+	platform_set_drvdata(op, card);
+
+	platform_np = of_parse_phandle(np, "asoc-platform", 0);
+	if (!platform_np) {
+		dev_err(&op->dev, "ac97 not registered\n");
 		return -ENODEV;
 	}
 
-	platform_set_drvdata(op, pdev);
-	platform_set_drvdata(pdev, &card);
+	for (i = 0; i < card->num_links; i++)
+		card->dai_link[i].platform_of_node = platform_np;
 
-	rc = platform_device_add(pdev);
-	if (rc) {
-		pr_err("pcm030_fabric_init: platform_device_add() failed\n");
-		platform_device_put(pdev);
-		return -ENODEV;
-	}
-	return 0;
+	ret = snd_soc_register_card(card);
+	if (ret)
+		dev_err(&op->dev, "snd_soc_register_card() failed: %d\n", ret);
+
+	return ret;
 }
 
 static int __devexit pcm030_fabric_remove(struct platform_device *op)
 {
-	struct platform_device *pdev = platform_get_drvdata(op);
+	struct snd_soc_card *card = platform_get_drvdata(op);
+	int ret;
 
-	platform_device_unregister(pdev);
+	ret = snd_soc_unregister_card(card);
 
-	return 0;
+	return ret;
 }
 
 static struct of_device_id pcm030_audio_match[] = {
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 7/7] ASoC: fsl: register the wm9712-codec
  2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
                   ` (5 preceding siblings ...)
  2012-09-13 21:43 ` [PATCH 6/7] ASoC: fsl: convert pcm030-audio-fabric to use snd_soc_register_card Eric Millbrandt
@ 2012-09-13 21:43 ` Eric Millbrandt
  6 siblings, 0 replies; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-13 21:43 UTC (permalink / raw)
  To: Grant Likely, Liam Girdwood, Mark Brown, Anatolij Gustschin
  Cc: alsa-devel, linuxppc-dev, Eric Millbrandt

The mpc5200-psc-ac97 driver does not enumerate attached ac97 devices, so
register the device here.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>

diff --git a/sound/soc/fsl/pcm030-audio-fabric.c b/sound/soc/fsl/pcm030-audio-fabric.c
index 893e240..4b63ec8 100644
--- a/sound/soc/fsl/pcm030-audio-fabric.c
+++ b/sound/soc/fsl/pcm030-audio-fabric.c
@@ -22,6 +22,11 @@
 
 #define DRV_NAME "pcm030-audio-fabric"
 
+struct pcm030_audio_data {
+	struct snd_soc_card *card;
+	struct platform_device *codec_device;
+};
+
 static struct snd_soc_dai_link pcm030_fabric_dai[] = {
 {
 	.name = "AC97",
@@ -51,14 +56,22 @@ static int __init pcm030_fabric_probe(struct platform_device *op)
 	struct device_node *np = op->dev.of_node;
 	struct device_node *platform_np;
 	struct snd_soc_card *card = &pcm030_card;
+	struct pcm030_audio_data *pdata;
 	int ret;
 	int i;
 
 	if (!of_machine_is_compatible("phytec,pcm030"))
 		return -ENODEV;
 
+	pdata = devm_kzalloc(&op->dev, sizeof(struct pcm030_audio_data),
+			     GFP_KERNEL);
+	if (!pdata)
+		return -ENOMEM;
+
 	card->dev = &op->dev;
-	platform_set_drvdata(op, card);
+	platform_set_drvdata(op, pdata);
+
+	pdata->card = card;
 
 	platform_np = of_parse_phandle(np, "asoc-platform", 0);
 	if (!platform_np) {
@@ -69,6 +82,18 @@ static int __init pcm030_fabric_probe(struct platform_device *op)
 	for (i = 0; i < card->num_links; i++)
 		card->dai_link[i].platform_of_node = platform_np;
 
+	ret = request_module("snd-soc-wm9712");
+	if (ret)
+		dev_err(&op->dev, "request_module returned: %d\n", ret);
+
+	pdata->codec_device = platform_device_alloc("wm9712-codec", -1);
+	if (!pdata->codec_device)
+		dev_err(&op->dev, "platform_device_alloc() failed\n");
+
+	ret = platform_device_add(pdata->codec_device);
+	if (ret)
+		dev_err(&op->dev, "platform_device_add() failed: %d\n", ret);
+
 	ret = snd_soc_register_card(card);
 	if (ret)
 		dev_err(&op->dev, "snd_soc_register_card() failed: %d\n", ret);
@@ -78,10 +103,11 @@ static int __init pcm030_fabric_probe(struct platform_device *op)
 
 static int __devexit pcm030_fabric_remove(struct platform_device *op)
 {
-	struct snd_soc_card *card = platform_get_drvdata(op);
+	struct pcm030_audio_data *pdata = platform_get_drvdata(op);
 	int ret;
 
-	ret = snd_soc_unregister_card(card);
+	ret = snd_soc_unregister_card(pdata->card);
+	platform_device_unregister(pdata->codec_device);
 
 	return ret;
 }
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH 1/7] powerpc/52xx: define FSL_SOC
  2012-09-13 21:43 ` [PATCH 1/7] powerpc/52xx: define FSL_SOC Eric Millbrandt
@ 2012-09-14  9:31   ` agust
  2012-09-14 14:45     ` Eric Millbrandt
  0 siblings, 1 reply; 16+ messages in thread
From: agust @ 2012-09-14  9:31 UTC (permalink / raw)
  To: Eric Millbrandt; +Cc: alsa-devel, Mark Brown, linuxppc-dev, Liam Girdwood

Eric Millbrandt <emillbrandt@dekaresearch.com> wrote:

> mpc52xx socs need to have FSL_SOC defined to build their drivers  
> (i2c-mpc, ASoC)

No, i2c-mpc depends on PPC only. And FSL_SOC enables code we do not
use on mpc52xx. For ASoC please see comment below.

> Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>
>
> diff --git a/arch/powerpc/platforms/52xx/Kconfig  
> b/arch/powerpc/platforms/52xx/Kconfig
> index 90f4496..fb35944 100644
> --- a/arch/powerpc/platforms/52xx/Kconfig
> +++ b/arch/powerpc/platforms/52xx/Kconfig
> @@ -1,6 +1,7 @@
>  config PPC_MPC52xx
>  	bool "52xx-based boards"
>  	depends on 6xx
> +	select FSL_SOC

Better use:

diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
index d701330..4563b28 100644
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@ -6,7 +6,7 @@ config SND_SOC_FSL_UTILS

  menuconfig SND_POWERPC_SOC
         tristate "SoC Audio for Freescale PowerPC CPUs"
-       depends on FSL_SOC
+       depends on FSL_SOC || PPC_MPC52xx
         help
           Say Y or M if you want to add support for codecs attached to
           the PowerPC CPUs.

Thanks,

Anatolij

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH 1/7] powerpc/52xx: define FSL_SOC
  2012-09-14  9:31   ` agust
@ 2012-09-14 14:45     ` Eric Millbrandt
  0 siblings, 0 replies; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-14 14:45 UTC (permalink / raw)
  To: 'agust@denx.de'
  Cc: Grant Likely, alsa-devel@alsa-project.org, Mark Brown,
	linuxppc-dev@lists.ozlabs.org, Liam Girdwood

On 2012-09-14 agust@denx.de wrote:
> Eric Millbrandt <emillbrandt@dekaresearch.com> wrote:
>
...
>
> Better use:
>
> diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index
> d701330..4563b28 100644
> --- a/sound/soc/fsl/Kconfig
> +++ b/sound/soc/fsl/Kconfig
> @@ -6,7 +6,7 @@ config SND_SOC_FSL_UTILS
>
>   menuconfig SND_POWERPC_SOC
>          tristate "SoC Audio for Freescale PowerPC CPUs"
> -       depends on FSL_SOC
> +       depends on FSL_SOC || PPC_MPC52xx
>          help
>            Say Y or M if you want to add support for codecs attached to
>            the PowerPC CPUs.
> Thanks,
>
> Anatolij
>

Looks good to me, I will do this instead.  Thanks.

Eric


-DISCLAIMER: an automatically appended disclaimer may follow. By posting-
-to a public e-mail mailing list I hereby grant permission to distribute-
-and copy this message.-

This e-mail and the information, including any attachments, it contains are intended to be a confidential communication only to the person or entity to whom it is addressed and may contain information that is privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender and destroy the original message.

Thank you.

Please consider the environment before printing this email.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver
  2012-09-13 21:43 ` [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver Eric Millbrandt
@ 2012-09-19  3:03   ` Mark Brown
  2012-09-19 14:35     ` Eric Millbrandt
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Brown @ 2012-09-19  3:03 UTC (permalink / raw)
  To: Eric Millbrandt
  Cc: Grant Likely, alsa-devel, Anatolij Gustschin, linuxppc-dev,
	Liam Girdwood

On Thu, Sep 13, 2012 at 05:43:14PM -0400, Eric Millbrandt wrote:

> +static int __devexit pcm030_fabric_remove(struct platform_device *op)
> +{
> +	struct platform_device *pdev = platform_get_drvdata(op);
> +
> +	platform_device_unregister(pdev);
> +
> +	return 0;
> +}

This seems really confused...  why is a platform device registering
another platform device?  Do you mean to convert to
snd_soc_register_card()?

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 2/7] ASoC: fsl: mpc5200 combine psc_dma platform data
  2012-09-13 21:43 ` [PATCH 2/7] ASoC: fsl: mpc5200 combine psc_dma platform data Eric Millbrandt
@ 2012-09-19  3:03   ` Mark Brown
  0 siblings, 0 replies; 16+ messages in thread
From: Mark Brown @ 2012-09-19  3:03 UTC (permalink / raw)
  To: Eric Millbrandt
  Cc: Grant Likely, alsa-devel, Anatolij Gustschin, linuxppc-dev,
	Liam Girdwood

On Thu, Sep 13, 2012 at 05:43:11PM -0400, Eric Millbrandt wrote:
> The mpc5200_psc_ac97 and mpc5200_psc_i2s modules rely on shared platform data
> with mpc5200_dma.

Applied, thanks.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 3/7] ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver
  2012-09-13 21:43 ` [PATCH 3/7] ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver Eric Millbrandt
@ 2012-09-19  3:04   ` Mark Brown
  0 siblings, 0 replies; 16+ messages in thread
From: Mark Brown @ 2012-09-19  3:04 UTC (permalink / raw)
  To: Eric Millbrandt
  Cc: Grant Likely, alsa-devel, Anatolij Gustschin, linuxppc-dev,
	Liam Girdwood

On Thu, Sep 13, 2012 at 05:43:12PM -0400, Eric Millbrandt wrote:
> Add missing dai_driver information to avoid these runtime errors

applied, thanks.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 4/7] ASoC: fsl: cleanup headers in pcm030-audio-fabric
  2012-09-13 21:43 ` [PATCH 4/7] ASoC: fsl: cleanup headers in pcm030-audio-fabric Eric Millbrandt
@ 2012-09-19  3:04   ` Mark Brown
  0 siblings, 0 replies; 16+ messages in thread
From: Mark Brown @ 2012-09-19  3:04 UTC (permalink / raw)
  To: Eric Millbrandt
  Cc: Grant Likely, alsa-devel, Anatolij Gustschin, linuxppc-dev,
	Liam Girdwood

On Thu, Sep 13, 2012 at 05:43:13PM -0400, Eric Millbrandt wrote:
> Remove unreferenced header files.

Applied, thanks.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver
  2012-09-19  3:03   ` Mark Brown
@ 2012-09-19 14:35     ` Eric Millbrandt
  2012-09-19 20:46       ` Mark Brown
  0 siblings, 1 reply; 16+ messages in thread
From: Eric Millbrandt @ 2012-09-19 14:35 UTC (permalink / raw)
  To: 'Mark Brown'
  Cc: Grant Likely, alsa-devel@alsa-project.org, Anatolij Gustschin,
	linuxppc-dev@lists.ozlabs.org, Liam Girdwood

On 2012-09-18 Mark Brown wrote:
> On Thu, Sep 13, 2012 at 05:43:14PM -0400, Eric Millbrandt wrote:
>
>> +static int __devexit pcm030_fabric_remove(struct platform_device *op)
>> +{ + struct platform_device *pdev = platform_get_drvdata(op); +
>> +    platform_device_unregister(pdev); + +   return 0; +}
>
> This seems really confused...  why is a platform device registering
> another platform device?  Do you mean to convert to
> snd_soc_register_card()?
>
That was an artifact of me splitting the changes to pcm030-audio-fabric.c
into multiple patches.  I changed the driver to a platform device in this
patch and converted to snd_soc_register_card() in the next patch.  I can
merge the two patches back together if you think that is cleaner and
easier to understand.

Thanks
Eric


-DISCLAIMER: an automatically appended disclaimer may follow. By posting-
-to a public e-mail mailing list I hereby grant permission to distribute-
-and copy this message.-

This e-mail and the information, including any attachments, it contains are intended to be a confidential communication only to the person or entity to whom it is addressed and may contain information that is privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender and destroy the original message.

Thank you.

Please consider the environment before printing this email.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver
  2012-09-19 14:35     ` Eric Millbrandt
@ 2012-09-19 20:46       ` Mark Brown
  0 siblings, 0 replies; 16+ messages in thread
From: Mark Brown @ 2012-09-19 20:46 UTC (permalink / raw)
  To: Eric Millbrandt
  Cc: Grant Likely, alsa-devel@alsa-project.org, Anatolij Gustschin,
	linuxppc-dev@lists.ozlabs.org, Liam Girdwood

On Wed, Sep 19, 2012 at 10:35:45AM -0400, Eric Millbrandt wrote:

> That was an artifact of me splitting the changes to pcm030-audio-fabric.c
> into multiple patches.  I changed the driver to a platform device in this
> patch and converted to snd_soc_register_card() in the next patch.  I can
> merge the two patches back together if you think that is cleaner and
> easier to understand.

Yes, please.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2012-09-19 20:46 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-13 21:43 [RFC 0/7] mpc5200 ASoC and pcm030 board fixes Eric Millbrandt
2012-09-13 21:43 ` [PATCH 1/7] powerpc/52xx: define FSL_SOC Eric Millbrandt
2012-09-14  9:31   ` agust
2012-09-14 14:45     ` Eric Millbrandt
2012-09-13 21:43 ` [PATCH 2/7] ASoC: fsl: mpc5200 combine psc_dma platform data Eric Millbrandt
2012-09-19  3:03   ` Mark Brown
2012-09-13 21:43 ` [PATCH 3/7] ASoC: fsl: mpc5200 add missing information to snd_soc_dai_driver Eric Millbrandt
2012-09-19  3:04   ` Mark Brown
2012-09-13 21:43 ` [PATCH 4/7] ASoC: fsl: cleanup headers in pcm030-audio-fabric Eric Millbrandt
2012-09-19  3:04   ` Mark Brown
2012-09-13 21:43 ` [PATCH 5/7] ASoC: fsl: convert pcm030-audio-fabric to a platform-driver Eric Millbrandt
2012-09-19  3:03   ` Mark Brown
2012-09-19 14:35     ` Eric Millbrandt
2012-09-19 20:46       ` Mark Brown
2012-09-13 21:43 ` [PATCH 6/7] ASoC: fsl: convert pcm030-audio-fabric to use snd_soc_register_card Eric Millbrandt
2012-09-13 21:43 ` [PATCH 7/7] ASoC: fsl: register the wm9712-codec Eric Millbrandt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).