diff options
| -rw-r--r-- | sound/soc/imx/phycore-ac97.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/sound/soc/imx/phycore-ac97.c b/sound/soc/imx/phycore-ac97.c index 39f23734781..9eabc28667e 100644 --- a/sound/soc/imx/phycore-ac97.c +++ b/sound/soc/imx/phycore-ac97.c | |||
| @@ -43,6 +43,7 @@ static struct snd_soc_card imx_phycore = { | |||
| 43 | .num_links = ARRAY_SIZE(imx_phycore_dai_ac97), | 43 | .num_links = ARRAY_SIZE(imx_phycore_dai_ac97), |
| 44 | }; | 44 | }; |
| 45 | 45 | ||
| 46 | static struct platform_device *imx_phycore_snd_ac97_device; | ||
| 46 | static struct platform_device *imx_phycore_snd_device; | 47 | static struct platform_device *imx_phycore_snd_device; |
| 47 | 48 | ||
| 48 | static int __init imx_phycore_init(void) | 49 | static int __init imx_phycore_init(void) |
| @@ -53,29 +54,42 @@ static int __init imx_phycore_init(void) | |||
| 53 | /* return happy. We might run on a totally different machine */ | 54 | /* return happy. We might run on a totally different machine */ |
| 54 | return 0; | 55 | return 0; |
| 55 | 56 | ||
| 56 | imx_phycore_snd_device = platform_device_alloc("soc-audio", -1); | 57 | imx_phycore_snd_ac97_device = platform_device_alloc("soc-audio", -1); |
| 57 | if (!imx_phycore_snd_device) | 58 | if (!imx_phycore_snd_ac97_device) |
| 58 | return -ENOMEM; | 59 | return -ENOMEM; |
| 59 | 60 | ||
| 60 | platform_set_drvdata(imx_phycore_snd_device, &imx_phycore); | 61 | platform_set_drvdata(imx_phycore_snd_ac97_device, &imx_phycore); |
| 61 | ret = platform_device_add(imx_phycore_snd_device); | 62 | ret = platform_device_add(imx_phycore_snd_ac97_device); |
| 63 | if (ret) | ||
| 64 | goto fail1; | ||
| 62 | 65 | ||
| 63 | imx_phycore_snd_device = platform_device_alloc("wm9712-codec", -1); | 66 | imx_phycore_snd_device = platform_device_alloc("wm9712-codec", -1); |
| 64 | if (!imx_phycore_snd_device) | 67 | if (!imx_phycore_snd_device) { |
| 65 | return -ENOMEM; | 68 | ret = -ENOMEM; |
| 69 | goto fail2; | ||
| 70 | } | ||
| 66 | ret = platform_device_add(imx_phycore_snd_device); | 71 | ret = platform_device_add(imx_phycore_snd_device); |
| 67 | 72 | ||
| 68 | if (ret) { | 73 | if (ret) { |
| 69 | printk(KERN_ERR "ASoC: Platform device allocation failed\n"); | 74 | printk(KERN_ERR "ASoC: Platform device allocation failed\n"); |
| 70 | platform_device_put(imx_phycore_snd_device); | 75 | goto fail3; |
| 71 | } | 76 | } |
| 72 | 77 | ||
| 78 | return 0; | ||
| 79 | |||
| 80 | fail3: | ||
| 81 | platform_device_put(imx_phycore_snd_device); | ||
| 82 | fail2: | ||
| 83 | platform_device_del(imx_phycore_snd_ac97_device); | ||
| 84 | fail1: | ||
| 85 | platform_device_put(imx_phycore_snd_ac97_device); | ||
| 73 | return ret; | 86 | return ret; |
| 74 | } | 87 | } |
| 75 | 88 | ||
| 76 | static void __exit imx_phycore_exit(void) | 89 | static void __exit imx_phycore_exit(void) |
| 77 | { | 90 | { |
| 78 | platform_device_unregister(imx_phycore_snd_device); | 91 | platform_device_unregister(imx_phycore_snd_device); |
| 92 | platform_device_unregister(imx_phycore_snd_ac97_device); | ||
| 79 | } | 93 | } |
| 80 | 94 | ||
| 81 | late_initcall(imx_phycore_init); | 95 | late_initcall(imx_phycore_init); |
