* [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card
@ 2012-09-11 16:23 Timur Tabi
2012-09-11 16:23 ` [PATCH 2/2] ASoC: fsl: move machine drivers to late_initcall() Timur Tabi
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Timur Tabi @ 2012-09-11 16:23 UTC (permalink / raw)
To: Mark Brown, alsa-devel
Use snd_soc_register_card() instead of platform_device_alloc("soc-audio")
to register the sound card from the machine drivers.
Although platform_device_alloc is officially deprecated, it is still used
by several other drivers. Unfortunately, something is broken somewhere
and the Freescale drivers don't register properly when using it. Since
we need to transition to snd_soc_register_card() anyway, this fixes the
problem and updates our code at the same time.
Signed-off-by: Timur Tabi <timur@freescale.com>
---
sound/soc/fsl/mpc8610_hpcd.c | 23 +++++------------------
sound/soc/fsl/p1022_ds.c | 22 ++++------------------
2 files changed, 9 insertions(+), 36 deletions(-)
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c
index 60bcba1..5479882 100644
--- a/sound/soc/fsl/mpc8610_hpcd.c
+++ b/sound/soc/fsl/mpc8610_hpcd.c
@@ -192,7 +192,6 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
container_of(dev, struct platform_device, dev);
struct device_node *np = ssi_pdev->dev.of_node;
struct device_node *codec_np = NULL;
- struct platform_device *sound_device = NULL;
struct mpc8610_hpcd_data *machine_data;
int ret = -ENODEV;
const char *sprop;
@@ -341,34 +340,22 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
machine_data->card.probe = mpc8610_hpcd_machine_probe;
machine_data->card.remove = mpc8610_hpcd_machine_remove;
machine_data->card.name = pdev->name; /* The platform driver name */
+ machine_data->card.owner = THIS_MODULE;
+ machine_data->card.dev = &pdev->dev;
machine_data->card.num_links = 2;
machine_data->card.dai_link = machine_data->dai;
- /* Allocate a new audio platform device structure */
- sound_device = platform_device_alloc("soc-audio", -1);
- if (!sound_device) {
- dev_err(&pdev->dev, "platform device alloc failed\n");
- ret = -ENOMEM;
- goto error;
- }
-
- /* Associate the card data with the sound device */
- platform_set_drvdata(sound_device, &machine_data->card);
-
/* Register with ASoC */
- ret = platform_device_add(sound_device);
+ ret = snd_soc_register_card(&machine_data->card);
if (ret) {
- dev_err(&pdev->dev, "platform device add failed\n");
- goto error_sound;
+ dev_err(&pdev->dev, "could not register card\n");
+ goto error;
}
- dev_set_drvdata(&pdev->dev, sound_device);
of_node_put(codec_np);
return 0;
-error_sound:
- platform_device_put(sound_device);
error:
kfree(machine_data);
error_alloc:
diff --git a/sound/soc/fsl/p1022_ds.c b/sound/soc/fsl/p1022_ds.c
index 50adf40..a44a8c3 100644
--- a/sound/soc/fsl/p1022_ds.c
+++ b/sound/soc/fsl/p1022_ds.c
@@ -202,7 +202,6 @@ static int p1022_ds_probe(struct platform_device *pdev)
container_of(dev, struct platform_device, dev);
struct device_node *np = ssi_pdev->dev.of_node;
struct device_node *codec_np = NULL;
- struct platform_device *sound_device = NULL;
struct machine_data *mdata;
int ret = -ENODEV;
const char *sprop;
@@ -349,36 +348,23 @@ static int p1022_ds_probe(struct platform_device *pdev)
mdata->card.probe = p1022_ds_machine_probe;
mdata->card.remove = p1022_ds_machine_remove;
mdata->card.name = pdev->name; /* The platform driver name */
+ mdata->card.owner = THIS_MODULE;
+ mdata->card.dev = &pdev->dev;
mdata->card.num_links = 2;
mdata->card.dai_link = mdata->dai;
- /* Allocate a new audio platform device structure */
- sound_device = platform_device_alloc("soc-audio", -1);
- if (!sound_device) {
- dev_err(&pdev->dev, "platform device alloc failed\n");
- ret = -ENOMEM;
- goto error;
- }
-
- /* Associate the card data with the sound device */
- platform_set_drvdata(sound_device, &mdata->card);
-
/* Register with ASoC */
- ret = platform_device_add(sound_device);
+ ret = snd_soc_register_card(&mdata->card);
if (ret) {
- dev_err(&pdev->dev, "platform device add failed\n");
+ dev_err(&pdev->dev, "could not register card\n");
goto error;
}
- dev_set_drvdata(&pdev->dev, sound_device);
of_node_put(codec_np);
return 0;
error:
- if (sound_device)
- platform_device_put(sound_device);
-
kfree(mdata);
error_put:
of_node_put(codec_np);
--
1.7.3.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] ASoC: fsl: move machine drivers to late_initcall()
2012-09-11 16:23 [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
@ 2012-09-11 16:23 ` Timur Tabi
2012-09-11 20:05 ` [linuxppc-release] [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
2012-09-12 1:32 ` Mark Brown
2 siblings, 0 replies; 6+ messages in thread
From: Timur Tabi @ 2012-09-11 16:23 UTC (permalink / raw)
To: Mark Brown, alsa-devel
Transition the module initialization to late_initcall(), so that
the machine driver loads last. Although this is technically not
necessary, it does avoid this error message at boot time:
ALSA device list:
No soundcards found.
Signed-off-by: Timur Tabi <timur@freescale.com>
---
sound/soc/fsl/mpc8610_hpcd.c | 2 +-
sound/soc/fsl/p1022_ds.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c
index 5479882..65347de 100644
--- a/sound/soc/fsl/mpc8610_hpcd.c
+++ b/sound/soc/fsl/mpc8610_hpcd.c
@@ -430,7 +430,7 @@ static void __exit mpc8610_hpcd_exit(void)
platform_driver_unregister(&mpc8610_hpcd_driver);
}
-module_init(mpc8610_hpcd_init);
+late_initcall(mpc8610_hpcd_init);
module_exit(mpc8610_hpcd_exit);
MODULE_AUTHOR("Timur Tabi <timur@freescale.com>");
diff --git a/sound/soc/fsl/p1022_ds.c b/sound/soc/fsl/p1022_ds.c
index a44a8c3..13110c4 100644
--- a/sound/soc/fsl/p1022_ds.c
+++ b/sound/soc/fsl/p1022_ds.c
@@ -439,7 +439,7 @@ static void __exit p1022_ds_exit(void)
platform_driver_unregister(&p1022_ds_driver);
}
-module_init(p1022_ds_init);
+late_initcall(p1022_ds_init);
module_exit(p1022_ds_exit);
MODULE_AUTHOR("Timur Tabi <timur@freescale.com>");
--
1.7.3.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [linuxppc-release] [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card
2012-09-11 16:23 [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
2012-09-11 16:23 ` [PATCH 2/2] ASoC: fsl: move machine drivers to late_initcall() Timur Tabi
@ 2012-09-11 20:05 ` Timur Tabi
2012-09-12 1:32 ` Mark Brown
2 siblings, 0 replies; 6+ messages in thread
From: Timur Tabi @ 2012-09-11 20:05 UTC (permalink / raw)
To: Mark Brown, alsa-devel
Timur Tabi wrote:
> Use snd_soc_register_card() instead of platform_device_alloc("soc-audio")
> to register the sound card from the machine drivers.
>
> Although platform_device_alloc is officially deprecated, it is still used
> by several other drivers. Unfortunately, something is broken somewhere
> and the Freescale drivers don't register properly when using it. Since
> we need to transition to snd_soc_register_card() anyway, this fixes the
> problem and updates our code at the same time.
>
> Signed-off-by: Timur Tabi <timur@freescale.com>
Ugh, I forgot to update the _remove function. I'll post a v3 patch soon.
Sorry.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card
2012-09-11 16:23 [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
2012-09-11 16:23 ` [PATCH 2/2] ASoC: fsl: move machine drivers to late_initcall() Timur Tabi
2012-09-11 20:05 ` [linuxppc-release] [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
@ 2012-09-12 1:32 ` Mark Brown
2012-09-12 15:12 ` Timur Tabi
2 siblings, 1 reply; 6+ messages in thread
From: Mark Brown @ 2012-09-12 1:32 UTC (permalink / raw)
To: Timur Tabi; +Cc: alsa-devel
On Tue, Sep 11, 2012 at 11:23:26AM -0500, Timur Tabi wrote:
> Use snd_soc_register_card() instead of platform_device_alloc("soc-audio")
> to register the sound card from the machine drivers.
>
> Although platform_device_alloc is officially deprecated, it is still used
> by several other drivers. Unfortunately, something is broken somewhere
> and the Freescale drivers don't register properly when using it. Since
> we need to transition to snd_soc_register_card() anyway, this fixes the
> problem and updates our code at the same time.
I did explain what's wrong here - it's the use of driver data.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card
2012-09-12 1:32 ` Mark Brown
@ 2012-09-12 15:12 ` Timur Tabi
2012-09-13 4:07 ` Mark Brown
0 siblings, 1 reply; 6+ messages in thread
From: Timur Tabi @ 2012-09-12 15:12 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel
Mark Brown wrote:
> I did explain what's wrong here - it's the use of driver data.
Sorry, I didn't think to update the description with your explanation.
Of course, now I need to figure out why my driver doesn't need driver data
in order to work.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card
2012-09-12 15:12 ` Timur Tabi
@ 2012-09-13 4:07 ` Mark Brown
0 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2012-09-13 4:07 UTC (permalink / raw)
To: Timur Tabi; +Cc: alsa-devel
On Wed, Sep 12, 2012 at 10:12:51AM -0500, Timur Tabi wrote:
> Mark Brown wrote:
> > I did explain what's wrong here - it's the use of driver data.
> Sorry, I didn't think to update the description with your explanation.
> Of course, now I need to figure out why my driver doesn't need driver data
> in order to work.
The driver data is used by the soc-audio driver to get the card. Since
your driver now calls snd_soc_register_card() directly it doens't need
that.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-09-13 4:07 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-11 16:23 [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
2012-09-11 16:23 ` [PATCH 2/2] ASoC: fsl: move machine drivers to late_initcall() Timur Tabi
2012-09-11 20:05 ` [linuxppc-release] [PATCH 1/2] [v2] ASoC: fsl: use snd_soc_register_card to register the card Timur Tabi
2012-09-12 1:32 ` Mark Brown
2012-09-12 15:12 ` Timur Tabi
2012-09-13 4:07 ` Mark Brown
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).