* [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: alsa-devel, Mark Brown, linuxppc-dev, 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 t=
o whom it is addressed and may contain information that is privileged. If t=
he reader of this message is not the intended recipient, you are hereby not=
ified 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: 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: 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: 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: 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: alsa-devel, Anatolij Gustschin, linuxppc-dev, 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 =3D 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 t=
o whom it is addressed and may contain information that is privileged. If t=
he reader of this message is not the intended recipient, you are hereby not=
ified 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: alsa-devel, Anatolij Gustschin, linuxppc-dev, 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).