diff options
Diffstat (limited to 'recipes-kernel')
3 files changed, 1159 insertions, 1 deletions
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch new file mode 100644 index 00000000..cffdeb90 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline-3.2/beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From d36c69551d168b2860cd216a8554740157a606f7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Robert Nelson <robertcnelson@gmail.com> | ||
3 | Date: Tue, 3 Jan 2012 11:06:07 -0600 | ||
4 | Subject: [PATCH 15/16] ASoC: omap: add MODULE_ALIAS to mcbsp and pcm drivers | ||
5 | |||
6 | This adds MODULE_ALIAS directives to the omap-mcbsp-dai and | ||
7 | omap-pcm-audio drivers so they can be auto-loaded when platform | ||
8 | devices are scanned. | ||
9 | |||
10 | Signed-off-by: Mans Rullgard <mans.rullgard at linaro.org> | ||
11 | Signed-off-by: Robert Nelson <robertcnelson@gmail.com> | ||
12 | --- | ||
13 | sound/soc/omap/omap-mcbsp.c | 1 + | ||
14 | sound/soc/omap/omap-pcm.c | 1 + | ||
15 | 2 files changed, 2 insertions(+) | ||
16 | |||
17 | diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c | ||
18 | index 4314647..a13eb34 100644 | ||
19 | --- a/sound/soc/omap/omap-mcbsp.c | ||
20 | +++ b/sound/soc/omap/omap-mcbsp.c | ||
21 | @@ -800,3 +800,4 @@ module_exit(snd_omap_mcbsp_exit); | ||
22 | MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@bitmer.com>"); | ||
23 | MODULE_DESCRIPTION("OMAP I2S SoC Interface"); | ||
24 | MODULE_LICENSE("GPL"); | ||
25 | +MODULE_ALIAS("platform:omap-mcbsp-dai"); | ||
26 | diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c | ||
27 | index 6ede7dc..d5cffcf 100644 | ||
28 | --- a/sound/soc/omap/omap-pcm.c | ||
29 | +++ b/sound/soc/omap/omap-pcm.c | ||
30 | @@ -448,3 +448,4 @@ module_exit(snd_omap_pcm_exit); | ||
31 | MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@bitmer.com>"); | ||
32 | MODULE_DESCRIPTION("OMAP PCM DMA module"); | ||
33 | MODULE_LICENSE("GPL"); | ||
34 | +MODULE_ALIAS("platform:omap-pcm-audio"); | ||
35 | -- | ||
36 | 1.7.10 | ||
37 | |||
diff --git a/recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch b/recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch new file mode 100644 index 00000000..78657349 --- /dev/null +++ b/recipes-kernel/linux/linux-mainline-3.2/beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch | |||
@@ -0,0 +1,1119 @@ | |||
1 | From c5ae7182911a49960d2b7775c941244ac41c105c Mon Sep 17 00:00:00 2001 | ||
2 | From: Robert Nelson <robertcnelson@gmail.com> | ||
3 | Date: Tue, 3 Jan 2012 11:03:32 -0600 | ||
4 | Subject: [PATCH 16/16] ASoC: omap: convert per-board modules to platform | ||
5 | drivers | ||
6 | |||
7 | This converts the per-board modules to platform drivers for a | ||
8 | device created by in main platform setup. These drivers call | ||
9 | snd_soc_register_card() directly instead of going via a "soc-audio" | ||
10 | device and the corresponding driver in soc-core. | ||
11 | |||
12 | Signed-off-by: Mans Rullgard <mans.rullgard at linaro.org> | ||
13 | Signed-off-by: Robert Nelson <robertcnelson@gmail.com> | ||
14 | --- | ||
15 | arch/arm/mach-omap2/devices.c | 34 ++++++++++++++++++++ | ||
16 | sound/soc/omap/am3517evm.c | 52 ++++++++++++++++++------------ | ||
17 | sound/soc/omap/igep0020.c | 49 ++++++++++++++++++----------- | ||
18 | sound/soc/omap/n810.c | 70 +++++++++++++++++++++++++---------------- | ||
19 | sound/soc/omap/omap3beagle.c | 52 ++++++++++++++++++------------ | ||
20 | sound/soc/omap/omap3evm.c | 53 +++++++++++++++++++------------ | ||
21 | sound/soc/omap/omap3pandora.c | 67 +++++++++++++++++++++++---------------- | ||
22 | sound/soc/omap/overo.c | 53 ++++++++++++++++++------------- | ||
23 | sound/soc/omap/rx51.c | 52 +++++++++++++++++++----------- | ||
24 | sound/soc/omap/sdp3430.c | 62 +++++++++++++++++++++--------------- | ||
25 | sound/soc/omap/sdp4430.c | 53 +++++++++++++++++++------------ | ||
26 | sound/soc/omap/zoom2.c | 65 ++++++++++++++++++++++++-------------- | ||
27 | 12 files changed, 423 insertions(+), 239 deletions(-) | ||
28 | |||
29 | diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c | ||
30 | index c15cfad..0f0b320 100644 | ||
31 | --- a/arch/arm/mach-omap2/devices.c | ||
32 | +++ b/arch/arm/mach-omap2/devices.c | ||
33 | @@ -285,6 +285,10 @@ static struct platform_device omap_pcm = { | ||
34 | .id = -1, | ||
35 | }; | ||
36 | |||
37 | +static struct platform_device omap_soc_audio = { | ||
38 | + .id = -1, | ||
39 | +}; | ||
40 | + | ||
41 | /* | ||
42 | * OMAP2420 has 2 McBSP ports | ||
43 | * OMAP2430 has 5 McBSP ports | ||
44 | @@ -297,8 +301,30 @@ OMAP_MCBSP_PLATFORM_DEVICE(3); | ||
45 | OMAP_MCBSP_PLATFORM_DEVICE(4); | ||
46 | OMAP_MCBSP_PLATFORM_DEVICE(5); | ||
47 | |||
48 | +static struct { | ||
49 | + int machine; | ||
50 | + const char *name; | ||
51 | +} soc_device_names[] = { | ||
52 | + { MACH_TYPE_OMAP3517EVM, "am3517evm-soc-audio" }, | ||
53 | + { MACH_TYPE_IGEP0020, "igep2-soc-audio" }, | ||
54 | + { MACH_TYPE_NOKIA_N810, "n8x1-soc-audio" }, | ||
55 | + { MACH_TYPE_NOKIA_N810_WIMAX, "n8x1-soc-audio" }, | ||
56 | + { MACH_TYPE_OMAP3_BEAGLE, "omap3beagle-soc-audio" }, | ||
57 | + { MACH_TYPE_DEVKIT8000, "omap3beagle-soc-audio" }, | ||
58 | + { MACH_TYPE_OMAP3EVM, "omap3evm-soc-audio" }, | ||
59 | + { MACH_TYPE_OMAP3_PANDORA, "pandora-soc-audio" }, | ||
60 | + { MACH_TYPE_OVERO, "overo-soc-audio", }, | ||
61 | + { MACH_TYPE_CM_T35, "overo-soc-audio", }, | ||
62 | + { MACH_TYPE_NOKIA_RX51, "rx51-soc-audio", }, | ||
63 | + { MACH_TYPE_OMAP_3430SDP, "sdp3430-soc-audio", }, | ||
64 | + { MACH_TYPE_OMAP_4430SDP, "sdp4430-soc-audio", }, | ||
65 | + { MACH_TYPE_OMAP_ZOOM2, "zoom2-soc-audio", }, | ||
66 | +}; | ||
67 | + | ||
68 | static void omap_init_audio(void) | ||
69 | { | ||
70 | + int i; | ||
71 | + | ||
72 | platform_device_register(&omap_mcbsp1); | ||
73 | platform_device_register(&omap_mcbsp2); | ||
74 | if (cpu_is_omap243x() || cpu_is_omap34xx() || cpu_is_omap44xx()) { | ||
75 | @@ -309,6 +335,14 @@ static void omap_init_audio(void) | ||
76 | platform_device_register(&omap_mcbsp5); | ||
77 | |||
78 | platform_device_register(&omap_pcm); | ||
79 | + | ||
80 | + for (i = 0; i < ARRAY_SIZE(soc_device_names); i++) { | ||
81 | + if (machine_arch_type == soc_device_names[i].machine) { | ||
82 | + omap_soc_audio.name = soc_device_names[i].name; | ||
83 | + platform_device_register(&omap_soc_audio); | ||
84 | + break; | ||
85 | + } | ||
86 | + } | ||
87 | } | ||
88 | |||
89 | #else | ||
90 | diff --git a/sound/soc/omap/am3517evm.c b/sound/soc/omap/am3517evm.c | ||
91 | index c1cd4a0..df8f795 100644 | ||
92 | --- a/sound/soc/omap/am3517evm.c | ||
93 | +++ b/sound/soc/omap/am3517evm.c | ||
94 | @@ -116,45 +116,57 @@ static struct snd_soc_card snd_soc_am3517evm = { | ||
95 | .num_dapm_routes = ARRAY_SIZE(audio_map), | ||
96 | }; | ||
97 | |||
98 | -static struct platform_device *am3517evm_snd_device; | ||
99 | - | ||
100 | -static int __init am3517evm_soc_init(void) | ||
101 | +static int __devinit am3517evm_soc_probe(struct platform_device *pdev) | ||
102 | { | ||
103 | + struct snd_soc_card *card = &snd_soc_am3517evm; | ||
104 | int ret; | ||
105 | |||
106 | - if (!machine_is_omap3517evm()) | ||
107 | - return -ENODEV; | ||
108 | pr_info("OMAP3517 / AM3517 EVM SoC init\n"); | ||
109 | |||
110 | - am3517evm_snd_device = platform_device_alloc("soc-audio", -1); | ||
111 | - if (!am3517evm_snd_device) { | ||
112 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
113 | - return -ENOMEM; | ||
114 | + card->dev = &pdev->dev; | ||
115 | + | ||
116 | + ret = snd_soc_register_card(card); | ||
117 | + if (ret) { | ||
118 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
119 | + ret); | ||
120 | + return ret; | ||
121 | } | ||
122 | |||
123 | - platform_set_drvdata(am3517evm_snd_device, &snd_soc_am3517evm); | ||
124 | + return 0; | ||
125 | +} | ||
126 | + | ||
127 | +static int __devexit am3517evm_soc_remove(struct platform_device *pdev) | ||
128 | +{ | ||
129 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
130 | |||
131 | - ret = platform_device_add(am3517evm_snd_device); | ||
132 | - if (ret) | ||
133 | - goto err1; | ||
134 | + snd_soc_unregister_card(card); | ||
135 | |||
136 | return 0; | ||
137 | +} | ||
138 | + | ||
139 | +static struct platform_driver am3517evm_driver = { | ||
140 | + .driver = { | ||
141 | + .name = "am3517evm-soc-audio", | ||
142 | + .owner = THIS_MODULE, | ||
143 | + }, | ||
144 | |||
145 | -err1: | ||
146 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
147 | - platform_device_put(am3517evm_snd_device); | ||
148 | + .probe = am3517evm_soc_probe, | ||
149 | + .remove = __devexit_p(am3517evm_soc_remove), | ||
150 | +}; | ||
151 | |||
152 | - return ret; | ||
153 | +static int __init am3517evm_soc_init(void) | ||
154 | +{ | ||
155 | + return platform_driver_register(&am3517evm_driver); | ||
156 | } | ||
157 | +module_init(am3517evm_soc_init); | ||
158 | |||
159 | static void __exit am3517evm_soc_exit(void) | ||
160 | { | ||
161 | - platform_device_unregister(am3517evm_snd_device); | ||
162 | + platform_driver_unregister(&am3517evm_driver); | ||
163 | } | ||
164 | - | ||
165 | -module_init(am3517evm_soc_init); | ||
166 | module_exit(am3517evm_soc_exit); | ||
167 | |||
168 | MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal@ti.com>"); | ||
169 | MODULE_DESCRIPTION("ALSA SoC OMAP3517 / AM3517 EVM"); | ||
170 | MODULE_LICENSE("GPL v2"); | ||
171 | +MODULE_ALIAS("platform:am3517evm-soc-audio"); | ||
172 | diff --git a/sound/soc/omap/igep0020.c b/sound/soc/omap/igep0020.c | ||
173 | index 591fbf8..6446532 100644 | ||
174 | --- a/sound/soc/omap/igep0020.c | ||
175 | +++ b/sound/soc/omap/igep0020.c | ||
176 | @@ -76,44 +76,57 @@ static struct snd_soc_card snd_soc_card_igep2 = { | ||
177 | .num_links = 1, | ||
178 | }; | ||
179 | |||
180 | -static struct platform_device *igep2_snd_device; | ||
181 | - | ||
182 | -static int __init igep2_soc_init(void) | ||
183 | +static int __devinit igep2_soc_probe(struct platform_device *pdev) | ||
184 | { | ||
185 | + struct snd_soc_card *card = &snd_soc_card_igep2; | ||
186 | int ret; | ||
187 | |||
188 | - if (!machine_is_igep0020()) | ||
189 | - return -ENODEV; | ||
190 | printk(KERN_INFO "IGEP v2 SoC init\n"); | ||
191 | |||
192 | - igep2_snd_device = platform_device_alloc("soc-audio", -1); | ||
193 | - if (!igep2_snd_device) { | ||
194 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
195 | - return -ENOMEM; | ||
196 | + card->dev = &pdev->dev; | ||
197 | + | ||
198 | + ret = snd_soc_register_card(card); | ||
199 | + if (ret) { | ||
200 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
201 | + ret); | ||
202 | + return ret; | ||
203 | } | ||
204 | |||
205 | - platform_set_drvdata(igep2_snd_device, &snd_soc_card_igep2); | ||
206 | + return 0; | ||
207 | +} | ||
208 | |||
209 | - ret = platform_device_add(igep2_snd_device); | ||
210 | - if (ret) | ||
211 | - goto err1; | ||
212 | +static int __devexit igep2_soc_remove(struct platform_device *pdev) | ||
213 | +{ | ||
214 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
215 | + | ||
216 | + snd_soc_unregister_card(card); | ||
217 | |||
218 | return 0; | ||
219 | +} | ||
220 | + | ||
221 | +static struct platform_driver igep2_driver = { | ||
222 | + .driver = { | ||
223 | + .name = "igep2-soc-audio", | ||
224 | + .owner = THIS_MODULE, | ||
225 | + }, | ||
226 | |||
227 | -err1: | ||
228 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
229 | - platform_device_put(igep2_snd_device); | ||
230 | + .probe = igep2_soc_probe, | ||
231 | + .remove = __devexit_p(igep2_soc_remove), | ||
232 | +}; | ||
233 | |||
234 | - return ret; | ||
235 | +static int __init igep2_soc_init(void) | ||
236 | +{ | ||
237 | + return platform_driver_register(&igep2_driver); | ||
238 | } | ||
239 | module_init(igep2_soc_init); | ||
240 | |||
241 | static void __exit igep2_soc_exit(void) | ||
242 | { | ||
243 | - platform_device_unregister(igep2_snd_device); | ||
244 | + platform_driver_unregister(&igep2_driver); | ||
245 | } | ||
246 | module_exit(igep2_soc_exit); | ||
247 | |||
248 | MODULE_AUTHOR("Enric Balletbo i Serra <eballetbo@iseebcn.com>"); | ||
249 | MODULE_DESCRIPTION("ALSA SoC IGEP v2"); | ||
250 | MODULE_LICENSE("GPL"); | ||
251 | +MODULE_ALIAS("platform:igep2-soc-audio"); | ||
252 | diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c | ||
253 | index fc6209b..1db768c 100644 | ||
254 | --- a/sound/soc/omap/n810.c | ||
255 | +++ b/sound/soc/omap/n810.c | ||
256 | @@ -300,38 +300,25 @@ static struct snd_soc_card snd_soc_n810 = { | ||
257 | .num_dapm_routes = ARRAY_SIZE(audio_map), | ||
258 | }; | ||
259 | |||
260 | -static struct platform_device *n810_snd_device; | ||
261 | - | ||
262 | -static int __init n810_soc_init(void) | ||
263 | +static int __devinit n810_soc_probe(struct platform_device *pdev) | ||
264 | { | ||
265 | + struct snd_soc_card *card = &snd_soc_n810; | ||
266 | + struct device *dev = &pdev->dev; | ||
267 | int err; | ||
268 | - struct device *dev; | ||
269 | - | ||
270 | - if (!(machine_is_nokia_n810() || machine_is_nokia_n810_wimax())) | ||
271 | - return -ENODEV; | ||
272 | - | ||
273 | - n810_snd_device = platform_device_alloc("soc-audio", -1); | ||
274 | - if (!n810_snd_device) | ||
275 | - return -ENOMEM; | ||
276 | |||
277 | - platform_set_drvdata(n810_snd_device, &snd_soc_n810); | ||
278 | - err = platform_device_add(n810_snd_device); | ||
279 | - if (err) | ||
280 | - goto err1; | ||
281 | - | ||
282 | - dev = &n810_snd_device->dev; | ||
283 | + card->dev = dev; | ||
284 | |||
285 | sys_clkout2_src = clk_get(dev, "sys_clkout2_src"); | ||
286 | if (IS_ERR(sys_clkout2_src)) { | ||
287 | dev_err(dev, "Could not get sys_clkout2_src clock\n"); | ||
288 | err = PTR_ERR(sys_clkout2_src); | ||
289 | - goto err2; | ||
290 | + return err; | ||
291 | } | ||
292 | sys_clkout2 = clk_get(dev, "sys_clkout2"); | ||
293 | if (IS_ERR(sys_clkout2)) { | ||
294 | dev_err(dev, "Could not get sys_clkout2\n"); | ||
295 | err = PTR_ERR(sys_clkout2); | ||
296 | - goto err3; | ||
297 | + goto err1; | ||
298 | } | ||
299 | /* | ||
300 | * Configure 12 MHz output on SYS_CLKOUT2. Therefore we must use | ||
301 | @@ -341,7 +328,7 @@ static int __init n810_soc_init(void) | ||
302 | if (IS_ERR(func96m_clk)) { | ||
303 | dev_err(dev, "Could not get func 96M clock\n"); | ||
304 | err = PTR_ERR(func96m_clk); | ||
305 | - goto err4; | ||
306 | + goto err2; | ||
307 | } | ||
308 | clk_set_parent(sys_clkout2_src, func96m_clk); | ||
309 | clk_set_rate(sys_clkout2, 12000000); | ||
310 | @@ -352,33 +339,62 @@ static int __init n810_soc_init(void) | ||
311 | gpio_direction_output(N810_HEADSET_AMP_GPIO, 0); | ||
312 | gpio_direction_output(N810_SPEAKER_AMP_GPIO, 0); | ||
313 | |||
314 | + err = snd_soc_register_card(card); | ||
315 | + if (err) { | ||
316 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
317 | + err); | ||
318 | + goto err3; | ||
319 | + } | ||
320 | + | ||
321 | return 0; | ||
322 | -err4: | ||
323 | - clk_put(sys_clkout2); | ||
324 | err3: | ||
325 | - clk_put(sys_clkout2_src); | ||
326 | + clk_put(func96m_clk); | ||
327 | err2: | ||
328 | - platform_device_del(n810_snd_device); | ||
329 | + clk_put(sys_clkout2); | ||
330 | err1: | ||
331 | - platform_device_put(n810_snd_device); | ||
332 | + clk_put(sys_clkout2_src); | ||
333 | |||
334 | return err; | ||
335 | } | ||
336 | |||
337 | -static void __exit n810_soc_exit(void) | ||
338 | +static int __devexit n810_soc_remove(struct platform_device *pdev) | ||
339 | { | ||
340 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
341 | + | ||
342 | gpio_free(N810_SPEAKER_AMP_GPIO); | ||
343 | gpio_free(N810_HEADSET_AMP_GPIO); | ||
344 | clk_put(sys_clkout2_src); | ||
345 | clk_put(sys_clkout2); | ||
346 | clk_put(func96m_clk); | ||
347 | |||
348 | - platform_device_unregister(n810_snd_device); | ||
349 | + snd_soc_unregister_card(card); | ||
350 | + | ||
351 | + return 0; | ||
352 | } | ||
353 | |||
354 | +static struct platform_driver n810_driver = { | ||
355 | + .driver = { | ||
356 | + .name = "n8x0-soc-audio", | ||
357 | + .owner = THIS_MODULE, | ||
358 | + }, | ||
359 | + | ||
360 | + .probe = n810_soc_probe, | ||
361 | + .remove = __devexit_p(n810_soc_remove), | ||
362 | +}; | ||
363 | + | ||
364 | +static int __init n810_soc_init(void) | ||
365 | +{ | ||
366 | + return platform_driver_register(&n810_driver); | ||
367 | +} | ||
368 | module_init(n810_soc_init); | ||
369 | + | ||
370 | +static void __exit n810_soc_exit(void) | ||
371 | +{ | ||
372 | + platform_driver_unregister(&n810_driver); | ||
373 | +} | ||
374 | module_exit(n810_soc_exit); | ||
375 | |||
376 | MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@bitmer.com>"); | ||
377 | MODULE_DESCRIPTION("ALSA SoC Nokia N810"); | ||
378 | MODULE_LICENSE("GPL"); | ||
379 | +MODULE_ALIAS("platform:n8x0-soc-audio"); | ||
380 | diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c | ||
381 | index 3357dcc..10b51d8 100644 | ||
382 | --- a/sound/soc/omap/omap3beagle.c | ||
383 | +++ b/sound/soc/omap/omap3beagle.c | ||
384 | @@ -106,45 +106,57 @@ static struct snd_soc_card snd_soc_omap3beagle = { | ||
385 | .num_links = 1, | ||
386 | }; | ||
387 | |||
388 | -static struct platform_device *omap3beagle_snd_device; | ||
389 | - | ||
390 | -static int __init omap3beagle_soc_init(void) | ||
391 | +static int __devinit omap3beagle_soc_probe(struct platform_device *pdev) | ||
392 | { | ||
393 | + struct snd_soc_card *card = &snd_soc_omap3beagle; | ||
394 | int ret; | ||
395 | |||
396 | - if (!(machine_is_omap3_beagle() || machine_is_devkit8000())) | ||
397 | - return -ENODEV; | ||
398 | pr_info("OMAP3 Beagle/Devkit8000 SoC init\n"); | ||
399 | |||
400 | - omap3beagle_snd_device = platform_device_alloc("soc-audio", -1); | ||
401 | - if (!omap3beagle_snd_device) { | ||
402 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
403 | - return -ENOMEM; | ||
404 | + card->dev = &pdev->dev; | ||
405 | + | ||
406 | + ret = snd_soc_register_card(card); | ||
407 | + if (ret) { | ||
408 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
409 | + ret); | ||
410 | + return ret; | ||
411 | } | ||
412 | |||
413 | - platform_set_drvdata(omap3beagle_snd_device, &snd_soc_omap3beagle); | ||
414 | + return 0; | ||
415 | +} | ||
416 | + | ||
417 | +static int __devexit omap3beagle_soc_remove(struct platform_device *pdev) | ||
418 | +{ | ||
419 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
420 | |||
421 | - ret = platform_device_add(omap3beagle_snd_device); | ||
422 | - if (ret) | ||
423 | - goto err1; | ||
424 | + snd_soc_unregister_card(card); | ||
425 | |||
426 | return 0; | ||
427 | +} | ||
428 | + | ||
429 | +static struct platform_driver omap3beagle_driver = { | ||
430 | + .driver = { | ||
431 | + .name = "omap3beagle-soc-audio", | ||
432 | + .owner = THIS_MODULE, | ||
433 | + }, | ||
434 | |||
435 | -err1: | ||
436 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
437 | - platform_device_put(omap3beagle_snd_device); | ||
438 | + .probe = omap3beagle_soc_probe, | ||
439 | + .remove = __devexit_p(omap3beagle_soc_remove), | ||
440 | +}; | ||
441 | |||
442 | - return ret; | ||
443 | +static int __init omap3beagle_soc_init(void) | ||
444 | +{ | ||
445 | + return platform_driver_register(&omap3beagle_driver); | ||
446 | } | ||
447 | +module_init(omap3beagle_soc_init); | ||
448 | |||
449 | static void __exit omap3beagle_soc_exit(void) | ||
450 | { | ||
451 | - platform_device_unregister(omap3beagle_snd_device); | ||
452 | + platform_driver_unregister(&omap3beagle_driver); | ||
453 | } | ||
454 | - | ||
455 | -module_init(omap3beagle_soc_init); | ||
456 | module_exit(omap3beagle_soc_exit); | ||
457 | |||
458 | MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>"); | ||
459 | MODULE_DESCRIPTION("ALSA SoC OMAP3 Beagle"); | ||
460 | MODULE_LICENSE("GPL"); | ||
461 | +MODULE_ALIAS("platform:omap3beagle-soc-audio"); | ||
462 | diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c | ||
463 | index 6857895..3b95cea 100644 | ||
464 | --- a/sound/soc/omap/omap3evm.c | ||
465 | +++ b/sound/soc/omap/omap3evm.c | ||
466 | @@ -74,44 +74,57 @@ static struct snd_soc_card snd_soc_omap3evm = { | ||
467 | .num_links = 1, | ||
468 | }; | ||
469 | |||
470 | -static struct platform_device *omap3evm_snd_device; | ||
471 | - | ||
472 | -static int __init omap3evm_soc_init(void) | ||
473 | +static int __devinit omap3evm_soc_probe(struct platform_device *pdev) | ||
474 | { | ||
475 | + struct snd_soc_card *card = &snd_soc_omap3evm; | ||
476 | int ret; | ||
477 | |||
478 | - if (!machine_is_omap3evm()) | ||
479 | - return -ENODEV; | ||
480 | pr_info("OMAP3 EVM SoC init\n"); | ||
481 | |||
482 | - omap3evm_snd_device = platform_device_alloc("soc-audio", -1); | ||
483 | - if (!omap3evm_snd_device) { | ||
484 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
485 | - return -ENOMEM; | ||
486 | + card->dev = &pdev->dev; | ||
487 | + | ||
488 | + ret = snd_soc_register_card(card); | ||
489 | + if (ret) { | ||
490 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
491 | + ret); | ||
492 | + return ret; | ||
493 | } | ||
494 | |||
495 | - platform_set_drvdata(omap3evm_snd_device, &snd_soc_omap3evm); | ||
496 | - ret = platform_device_add(omap3evm_snd_device); | ||
497 | - if (ret) | ||
498 | - goto err1; | ||
499 | + return 0; | ||
500 | +} | ||
501 | + | ||
502 | +static int __devexit omap3evm_soc_remove(struct platform_device *pdev) | ||
503 | +{ | ||
504 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
505 | + | ||
506 | + snd_soc_unregister_card(card); | ||
507 | |||
508 | return 0; | ||
509 | +} | ||
510 | + | ||
511 | +static struct platform_driver omap3evm_driver = { | ||
512 | + .driver = { | ||
513 | + .name = "omap3evm-soc-audio", | ||
514 | + .owner = THIS_MODULE, | ||
515 | + }, | ||
516 | |||
517 | -err1: | ||
518 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
519 | - platform_device_put(omap3evm_snd_device); | ||
520 | + .probe = omap3evm_soc_probe, | ||
521 | + .remove = __devexit_p(omap3evm_soc_remove), | ||
522 | +}; | ||
523 | |||
524 | - return ret; | ||
525 | +static int __init omap3evm_soc_init(void) | ||
526 | +{ | ||
527 | + return platform_driver_register(&omap3evm_driver); | ||
528 | } | ||
529 | +module_init(omap3evm_soc_init); | ||
530 | |||
531 | static void __exit omap3evm_soc_exit(void) | ||
532 | { | ||
533 | - platform_device_unregister(omap3evm_snd_device); | ||
534 | + platform_driver_unregister(&omap3evm_driver); | ||
535 | } | ||
536 | - | ||
537 | -module_init(omap3evm_soc_init); | ||
538 | module_exit(omap3evm_soc_exit); | ||
539 | |||
540 | MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal@ti.com>"); | ||
541 | MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM"); | ||
542 | MODULE_LICENSE("GPL v2"); | ||
543 | +MODULE_ALIAS("platform:omap3evm-soc-audio"); | ||
544 | diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c | ||
545 | index 7605c37..fd289a4 100644 | ||
546 | --- a/sound/soc/omap/omap3pandora.c | ||
547 | +++ b/sound/soc/omap/omap3pandora.c | ||
548 | @@ -237,17 +237,15 @@ static struct snd_soc_card snd_soc_card_omap3pandora = { | ||
549 | .num_links = ARRAY_SIZE(omap3pandora_dai), | ||
550 | }; | ||
551 | |||
552 | -static struct platform_device *omap3pandora_snd_device; | ||
553 | - | ||
554 | -static int __init omap3pandora_soc_init(void) | ||
555 | +static int __devinit omap3pandora_soc_probe(struct platform_device *pdev) | ||
556 | { | ||
557 | + struct snd_soc_card *card = &snd_soc_card_omap3pandora; | ||
558 | int ret; | ||
559 | |||
560 | - if (!machine_is_omap3_pandora()) | ||
561 | - return -ENODEV; | ||
562 | - | ||
563 | pr_info("OMAP3 Pandora SoC init\n"); | ||
564 | |||
565 | + card->dev = &pdev->dev; | ||
566 | + | ||
567 | ret = gpio_request(OMAP3_PANDORA_DAC_POWER_GPIO, "dac_power"); | ||
568 | if (ret) { | ||
569 | pr_err(PREFIX "Failed to get DAC power GPIO\n"); | ||
570 | @@ -272,53 +270,68 @@ static int __init omap3pandora_soc_init(void) | ||
571 | goto fail1; | ||
572 | } | ||
573 | |||
574 | - omap3pandora_snd_device = platform_device_alloc("soc-audio", -1); | ||
575 | - if (omap3pandora_snd_device == NULL) { | ||
576 | - pr_err(PREFIX "Platform device allocation failed\n"); | ||
577 | - ret = -ENOMEM; | ||
578 | - goto fail1; | ||
579 | - } | ||
580 | - | ||
581 | - platform_set_drvdata(omap3pandora_snd_device, &snd_soc_card_omap3pandora); | ||
582 | - | ||
583 | - ret = platform_device_add(omap3pandora_snd_device); | ||
584 | + ret = snd_soc_register_card(card); | ||
585 | if (ret) { | ||
586 | - pr_err(PREFIX "Unable to add platform device\n"); | ||
587 | - goto fail2; | ||
588 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
589 | + ret); | ||
590 | + goto fail1; | ||
591 | } | ||
592 | |||
593 | - omap3pandora_dac_reg = regulator_get(&omap3pandora_snd_device->dev, "vcc"); | ||
594 | + omap3pandora_dac_reg = regulator_get(card->dev, "vcc"); | ||
595 | if (IS_ERR(omap3pandora_dac_reg)) { | ||
596 | pr_err(PREFIX "Failed to get DAC regulator from %s: %ld\n", | ||
597 | - dev_name(&omap3pandora_snd_device->dev), | ||
598 | + dev_name(card->dev), | ||
599 | PTR_ERR(omap3pandora_dac_reg)); | ||
600 | ret = PTR_ERR(omap3pandora_dac_reg); | ||
601 | - goto fail3; | ||
602 | + goto fail2; | ||
603 | } | ||
604 | |||
605 | return 0; | ||
606 | |||
607 | -fail3: | ||
608 | - platform_device_del(omap3pandora_snd_device); | ||
609 | fail2: | ||
610 | - platform_device_put(omap3pandora_snd_device); | ||
611 | + snd_soc_unregister_card(card); | ||
612 | fail1: | ||
613 | gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO); | ||
614 | fail0: | ||
615 | gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO); | ||
616 | return ret; | ||
617 | } | ||
618 | -module_init(omap3pandora_soc_init); | ||
619 | |||
620 | -static void __exit omap3pandora_soc_exit(void) | ||
621 | +static int __devexit omap3pandora_soc_remove(struct platform_device *pdev) | ||
622 | { | ||
623 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
624 | + | ||
625 | regulator_put(omap3pandora_dac_reg); | ||
626 | - platform_device_unregister(omap3pandora_snd_device); | ||
627 | + snd_soc_unregister_card(card); | ||
628 | gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO); | ||
629 | gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO); | ||
630 | + | ||
631 | + return 0; | ||
632 | +} | ||
633 | + | ||
634 | +static struct platform_driver omap3pandora_driver = { | ||
635 | + .driver = { | ||
636 | + .name = "pandora-soc-audio", | ||
637 | + .owner = THIS_MODULE, | ||
638 | + }, | ||
639 | + | ||
640 | + .probe = omap3pandora_soc_probe, | ||
641 | + .remove = __devexit_p(omap3pandora_soc_remove), | ||
642 | +}; | ||
643 | + | ||
644 | +static int __init omap3pandora_soc_init(void) | ||
645 | +{ | ||
646 | + return platform_driver_register(&omap3pandora_driver); | ||
647 | +} | ||
648 | +module_init(omap3pandora_soc_init); | ||
649 | + | ||
650 | +static void __exit omap3pandora_soc_exit(void) | ||
651 | +{ | ||
652 | + platform_driver_unregister(&omap3pandora_driver); | ||
653 | } | ||
654 | module_exit(omap3pandora_soc_exit); | ||
655 | |||
656 | MODULE_AUTHOR("Grazvydas Ignotas <notasas@gmail.com>"); | ||
657 | MODULE_DESCRIPTION("ALSA SoC OMAP3 Pandora"); | ||
658 | MODULE_LICENSE("GPL"); | ||
659 | +MODULE_ALIAS("platform:pandora-soc-audio"); | ||
660 | diff --git a/sound/soc/omap/overo.c b/sound/soc/omap/overo.c | ||
661 | index c3550ae..fe8fd5e 100644 | ||
662 | --- a/sound/soc/omap/overo.c | ||
663 | +++ b/sound/soc/omap/overo.c | ||
664 | @@ -76,46 +76,57 @@ static struct snd_soc_card snd_soc_card_overo = { | ||
665 | .num_links = 1, | ||
666 | }; | ||
667 | |||
668 | -static struct platform_device *overo_snd_device; | ||
669 | - | ||
670 | -static int __init overo_soc_init(void) | ||
671 | +static int __devinit overo_soc_probe(struct platform_device *pdev) | ||
672 | { | ||
673 | + struct snd_soc_card *card = &snd_soc_card_overo; | ||
674 | int ret; | ||
675 | |||
676 | - if (!(machine_is_overo() || machine_is_cm_t35())) { | ||
677 | - pr_debug("Incomatible machine!\n"); | ||
678 | - return -ENODEV; | ||
679 | - } | ||
680 | - printk(KERN_INFO "overo SoC init\n"); | ||
681 | + pr_info("overo SoC init\n"); | ||
682 | + | ||
683 | + card->dev = &pdev->dev; | ||
684 | |||
685 | - overo_snd_device = platform_device_alloc("soc-audio", -1); | ||
686 | - if (!overo_snd_device) { | ||
687 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
688 | - return -ENOMEM; | ||
689 | + ret = snd_soc_register_card(card); | ||
690 | + if (ret) { | ||
691 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
692 | + ret); | ||
693 | + return ret; | ||
694 | } | ||
695 | |||
696 | - platform_set_drvdata(overo_snd_device, &snd_soc_card_overo); | ||
697 | + return 0; | ||
698 | +} | ||
699 | + | ||
700 | +static int __devexit overo_soc_remove(struct platform_device *pdev) | ||
701 | +{ | ||
702 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
703 | |||
704 | - ret = platform_device_add(overo_snd_device); | ||
705 | - if (ret) | ||
706 | - goto err1; | ||
707 | + snd_soc_unregister_card(card); | ||
708 | |||
709 | return 0; | ||
710 | +} | ||
711 | |||
712 | -err1: | ||
713 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
714 | - platform_device_put(overo_snd_device); | ||
715 | +static struct platform_driver overo_driver = { | ||
716 | + .driver = { | ||
717 | + .name = "overo-soc-audio", | ||
718 | + .owner = THIS_MODULE, | ||
719 | + }, | ||
720 | |||
721 | - return ret; | ||
722 | + .probe = overo_soc_probe, | ||
723 | + .remove = __devexit_p(overo_soc_remove), | ||
724 | +}; | ||
725 | + | ||
726 | +static int __init overo_soc_init(void) | ||
727 | +{ | ||
728 | + return platform_driver_register(&overo_driver); | ||
729 | } | ||
730 | module_init(overo_soc_init); | ||
731 | |||
732 | static void __exit overo_soc_exit(void) | ||
733 | { | ||
734 | - platform_device_unregister(overo_snd_device); | ||
735 | + platform_driver_unregister(&overo_driver); | ||
736 | } | ||
737 | module_exit(overo_soc_exit); | ||
738 | |||
739 | MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>"); | ||
740 | MODULE_DESCRIPTION("ALSA SoC overo"); | ||
741 | MODULE_LICENSE("GPL"); | ||
742 | +MODULE_ALIAS("platform:overo-soc-audio"); | ||
743 | diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c | ||
744 | index 4cabb74..aca084d 100644 | ||
745 | --- a/sound/soc/omap/rx51.c | ||
746 | +++ b/sound/soc/omap/rx51.c | ||
747 | @@ -391,14 +391,12 @@ static struct snd_soc_card rx51_sound_card = { | ||
748 | .num_configs = ARRAY_SIZE(rx51_codec_conf), | ||
749 | }; | ||
750 | |||
751 | -static struct platform_device *rx51_snd_device; | ||
752 | - | ||
753 | -static int __init rx51_soc_init(void) | ||
754 | +static int __devinit rx51_soc_probe(struct platform_device *pdev) | ||
755 | { | ||
756 | + struct snd_soc_card *card = &rx51_sound_card; | ||
757 | int err; | ||
758 | |||
759 | - if (!machine_is_nokia_rx51()) | ||
760 | - return -ENODEV; | ||
761 | + card->dev = &pdev->dev; | ||
762 | |||
763 | err = gpio_request_one(RX51_TVOUT_SEL_GPIO, | ||
764 | GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel"); | ||
765 | @@ -409,21 +407,14 @@ static int __init rx51_soc_init(void) | ||
766 | if (err) | ||
767 | goto err_gpio_eci_sw; | ||
768 | |||
769 | - rx51_snd_device = platform_device_alloc("soc-audio", -1); | ||
770 | - if (!rx51_snd_device) { | ||
771 | - err = -ENOMEM; | ||
772 | + err = snd_soc_register_card(card); | ||
773 | + if (err) { | ||
774 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
775 | + err); | ||
776 | goto err1; | ||
777 | } | ||
778 | |||
779 | - platform_set_drvdata(rx51_snd_device, &rx51_sound_card); | ||
780 | - | ||
781 | - err = platform_device_add(rx51_snd_device); | ||
782 | - if (err) | ||
783 | - goto err2; | ||
784 | - | ||
785 | return 0; | ||
786 | -err2: | ||
787 | - platform_device_put(rx51_snd_device); | ||
788 | err1: | ||
789 | gpio_free(RX51_ECI_SW_GPIO); | ||
790 | err_gpio_eci_sw: | ||
791 | @@ -433,19 +424,44 @@ err_gpio_tvout_sel: | ||
792 | return err; | ||
793 | } | ||
794 | |||
795 | -static void __exit rx51_soc_exit(void) | ||
796 | +static int __devexit rx51_soc_remove(struct platform_device *pdev) | ||
797 | { | ||
798 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
799 | + | ||
800 | snd_soc_jack_free_gpios(&rx51_av_jack, ARRAY_SIZE(rx51_av_jack_gpios), | ||
801 | rx51_av_jack_gpios); | ||
802 | |||
803 | - platform_device_unregister(rx51_snd_device); | ||
804 | + snd_soc_unregister_card(card); | ||
805 | + | ||
806 | gpio_free(RX51_ECI_SW_GPIO); | ||
807 | gpio_free(RX51_TVOUT_SEL_GPIO); | ||
808 | + | ||
809 | + return 0; | ||
810 | } | ||
811 | |||
812 | +static struct platform_driver rx51_driver = { | ||
813 | + .driver = { | ||
814 | + .name = "rx51-soc-audio", | ||
815 | + .owner = THIS_MODULE, | ||
816 | + }, | ||
817 | + | ||
818 | + .probe = rx51_soc_probe, | ||
819 | + .remove = __devexit_p(rx51_soc_remove), | ||
820 | +}; | ||
821 | + | ||
822 | +static int __init rx51_soc_init(void) | ||
823 | +{ | ||
824 | + return platform_driver_register(&rx51_driver); | ||
825 | +} | ||
826 | module_init(rx51_soc_init); | ||
827 | + | ||
828 | +static void __exit rx51_soc_exit(void) | ||
829 | +{ | ||
830 | + platform_driver_unregister(&rx51_driver); | ||
831 | +} | ||
832 | module_exit(rx51_soc_exit); | ||
833 | |||
834 | MODULE_AUTHOR("Nokia Corporation"); | ||
835 | MODULE_DESCRIPTION("ALSA SoC Nokia RX-51"); | ||
836 | MODULE_LICENSE("GPL"); | ||
837 | +MODULE_ALIAS("platform:rx51-soc-audio"); | ||
838 | diff --git a/sound/soc/omap/sdp3430.c b/sound/soc/omap/sdp3430.c | ||
839 | index e8fbf8e..09fd5bd 100644 | ||
840 | --- a/sound/soc/omap/sdp3430.c | ||
841 | +++ b/sound/soc/omap/sdp3430.c | ||
842 | @@ -222,24 +222,15 @@ static struct snd_soc_card snd_soc_sdp3430 = { | ||
843 | .num_dapm_routes = ARRAY_SIZE(audio_map), | ||
844 | }; | ||
845 | |||
846 | -static struct platform_device *sdp3430_snd_device; | ||
847 | - | ||
848 | -static int __init sdp3430_soc_init(void) | ||
849 | +static int __devinit sdp3430_soc_probe(struct platform_device *pdev) | ||
850 | { | ||
851 | + struct snd_soc_card *card = &snd_soc_sdp3430; | ||
852 | int ret; | ||
853 | u8 pin_mux; | ||
854 | |||
855 | - if (!machine_is_omap_3430sdp()) | ||
856 | - return -ENODEV; | ||
857 | - printk(KERN_INFO "SDP3430 SoC init\n"); | ||
858 | - | ||
859 | - sdp3430_snd_device = platform_device_alloc("soc-audio", -1); | ||
860 | - if (!sdp3430_snd_device) { | ||
861 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
862 | - return -ENOMEM; | ||
863 | - } | ||
864 | + pr_info("SDP3430 SoC init\n"); | ||
865 | |||
866 | - platform_set_drvdata(sdp3430_snd_device, &snd_soc_sdp3430); | ||
867 | + card->dev = &pdev->dev; | ||
868 | |||
869 | /* Set TWL4030 GPIO6 as EXTMUTE signal */ | ||
870 | twl_i2c_read_u8(TWL4030_MODULE_INTBR, &pin_mux, | ||
871 | @@ -249,30 +240,51 @@ static int __init sdp3430_soc_init(void) | ||
872 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, pin_mux, | ||
873 | TWL4030_INTBR_PMBR1); | ||
874 | |||
875 | - ret = platform_device_add(sdp3430_snd_device); | ||
876 | - if (ret) | ||
877 | - goto err1; | ||
878 | + ret = snd_soc_register_card(card); | ||
879 | + if (ret) { | ||
880 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
881 | + ret); | ||
882 | + return ret; | ||
883 | + } | ||
884 | |||
885 | return 0; | ||
886 | +} | ||
887 | |||
888 | -err1: | ||
889 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
890 | - platform_device_put(sdp3430_snd_device); | ||
891 | +static int __devexit sdp3430_soc_remove(struct platform_device *pdev) | ||
892 | +{ | ||
893 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
894 | |||
895 | - return ret; | ||
896 | + snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), | ||
897 | + hs_jack_gpios); | ||
898 | + | ||
899 | + snd_soc_unregister_card(card); | ||
900 | + | ||
901 | + return 0; | ||
902 | +} | ||
903 | + | ||
904 | +static struct platform_driver sdp3430_driver = { | ||
905 | + .driver = { | ||
906 | + .name = "sdp3430-soc-audio", | ||
907 | + .owner = THIS_MODULE, | ||
908 | + }, | ||
909 | + | ||
910 | + .probe = sdp3430_soc_probe, | ||
911 | + .remove = __devexit_p(sdp3430_soc_remove), | ||
912 | +}; | ||
913 | + | ||
914 | +static int __init sdp3430_soc_init(void) | ||
915 | +{ | ||
916 | + return platform_driver_register(&sdp3430_driver); | ||
917 | } | ||
918 | module_init(sdp3430_soc_init); | ||
919 | |||
920 | static void __exit sdp3430_soc_exit(void) | ||
921 | { | ||
922 | - snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), | ||
923 | - hs_jack_gpios); | ||
924 | - | ||
925 | - platform_device_unregister(sdp3430_snd_device); | ||
926 | + platform_driver_unregister(&sdp3430_driver); | ||
927 | } | ||
928 | module_exit(sdp3430_soc_exit); | ||
929 | |||
930 | MODULE_AUTHOR("Misael Lopez Cruz <x0052729@ti.com>"); | ||
931 | MODULE_DESCRIPTION("ALSA SoC SDP3430"); | ||
932 | MODULE_LICENSE("GPL"); | ||
933 | - | ||
934 | +MODULE_ALIAS("platform:sdp3430-soc-audio"); | ||
935 | diff --git a/sound/soc/omap/sdp4430.c b/sound/soc/omap/sdp4430.c | ||
936 | index 03d9fa4..b3a05b1 100644 | ||
937 | --- a/sound/soc/omap/sdp4430.c | ||
938 | +++ b/sound/soc/omap/sdp4430.c | ||
939 | @@ -172,44 +172,57 @@ static struct snd_soc_card snd_soc_sdp4430 = { | ||
940 | .num_dapm_routes = ARRAY_SIZE(audio_map), | ||
941 | }; | ||
942 | |||
943 | -static struct platform_device *sdp4430_snd_device; | ||
944 | - | ||
945 | -static int __init sdp4430_soc_init(void) | ||
946 | +static int __devinit sdp4430_soc_probe(struct platform_device *pdev) | ||
947 | { | ||
948 | + struct snd_soc_card *card = &snd_soc_sdp4430; | ||
949 | int ret; | ||
950 | |||
951 | - if (!machine_is_omap_4430sdp()) | ||
952 | - return -ENODEV; | ||
953 | - printk(KERN_INFO "SDP4430 SoC init\n"); | ||
954 | + pr_info("SDP4430 SoC init\n"); | ||
955 | + | ||
956 | + card->dev = &pdev->dev; | ||
957 | |||
958 | - sdp4430_snd_device = platform_device_alloc("soc-audio", -1); | ||
959 | - if (!sdp4430_snd_device) { | ||
960 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
961 | - return -ENOMEM; | ||
962 | + ret = snd_soc_register_card(card); | ||
963 | + if (ret) { | ||
964 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
965 | + ret); | ||
966 | + return ret; | ||
967 | } | ||
968 | |||
969 | - platform_set_drvdata(sdp4430_snd_device, &snd_soc_sdp4430); | ||
970 | + return 0; | ||
971 | +} | ||
972 | |||
973 | - ret = platform_device_add(sdp4430_snd_device); | ||
974 | - if (ret) | ||
975 | - goto err; | ||
976 | +static int __devexit sdp4430_soc_remove(struct platform_device *pdev) | ||
977 | +{ | ||
978 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
979 | + | ||
980 | + snd_soc_unregister_card(card); | ||
981 | |||
982 | return 0; | ||
983 | +} | ||
984 | |||
985 | -err: | ||
986 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
987 | - platform_device_put(sdp4430_snd_device); | ||
988 | - return ret; | ||
989 | +static struct platform_driver sdp4430_driver = { | ||
990 | + .driver = { | ||
991 | + .name = "sdp4430-soc-audio", | ||
992 | + .owner = THIS_MODULE, | ||
993 | + }, | ||
994 | + | ||
995 | + .probe = sdp4430_soc_probe, | ||
996 | + .remove = __devexit_p(sdp4430_soc_remove), | ||
997 | +}; | ||
998 | + | ||
999 | +static int __init sdp4430_soc_init(void) | ||
1000 | +{ | ||
1001 | + return platform_driver_register(&sdp4430_driver); | ||
1002 | } | ||
1003 | module_init(sdp4430_soc_init); | ||
1004 | |||
1005 | static void __exit sdp4430_soc_exit(void) | ||
1006 | { | ||
1007 | - platform_device_unregister(sdp4430_snd_device); | ||
1008 | + platform_driver_unregister(&sdp4430_driver); | ||
1009 | } | ||
1010 | module_exit(sdp4430_soc_exit); | ||
1011 | |||
1012 | MODULE_AUTHOR("Misael Lopez Cruz <x0052729@ti.com>"); | ||
1013 | MODULE_DESCRIPTION("ALSA SoC SDP4430"); | ||
1014 | MODULE_LICENSE("GPL"); | ||
1015 | - | ||
1016 | +MODULE_ALIAS("platform:sdp4430-soc-audio"); | ||
1017 | diff --git a/sound/soc/omap/zoom2.c b/sound/soc/omap/zoom2.c | ||
1018 | index 7641a7f..8db8e10 100644 | ||
1019 | --- a/sound/soc/omap/zoom2.c | ||
1020 | +++ b/sound/soc/omap/zoom2.c | ||
1021 | @@ -166,26 +166,14 @@ static struct snd_soc_card snd_soc_zoom2 = { | ||
1022 | .num_dapm_routes = ARRAY_SIZE(audio_map), | ||
1023 | }; | ||
1024 | |||
1025 | -static struct platform_device *zoom2_snd_device; | ||
1026 | - | ||
1027 | -static int __init zoom2_soc_init(void) | ||
1028 | +static int __devinit zoom2_soc_probe(struct platform_device *pdev) | ||
1029 | { | ||
1030 | + struct snd_soc_card *card = &snd_soc_zoom2; | ||
1031 | int ret; | ||
1032 | |||
1033 | - if (!machine_is_omap_zoom2()) | ||
1034 | - return -ENODEV; | ||
1035 | - printk(KERN_INFO "Zoom2 SoC init\n"); | ||
1036 | - | ||
1037 | - zoom2_snd_device = platform_device_alloc("soc-audio", -1); | ||
1038 | - if (!zoom2_snd_device) { | ||
1039 | - printk(KERN_ERR "Platform device allocation failed\n"); | ||
1040 | - return -ENOMEM; | ||
1041 | - } | ||
1042 | + pr_info("Zoom2 SoC init\n"); | ||
1043 | |||
1044 | - platform_set_drvdata(zoom2_snd_device, &snd_soc_zoom2); | ||
1045 | - ret = platform_device_add(zoom2_snd_device); | ||
1046 | - if (ret) | ||
1047 | - goto err1; | ||
1048 | + card->dev = &pdev->dev; | ||
1049 | |||
1050 | BUG_ON(gpio_request(ZOOM2_HEADSET_MUX_GPIO, "hs_mux") < 0); | ||
1051 | gpio_direction_output(ZOOM2_HEADSET_MUX_GPIO, 0); | ||
1052 | @@ -193,26 +181,57 @@ static int __init zoom2_soc_init(void) | ||
1053 | BUG_ON(gpio_request(ZOOM2_HEADSET_EXTMUTE_GPIO, "ext_mute") < 0); | ||
1054 | gpio_direction_output(ZOOM2_HEADSET_EXTMUTE_GPIO, 0); | ||
1055 | |||
1056 | + ret = snd_soc_register_card(card); | ||
1057 | + if (ret) { | ||
1058 | + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | ||
1059 | + ret); | ||
1060 | + goto err; | ||
1061 | + } | ||
1062 | + | ||
1063 | return 0; | ||
1064 | |||
1065 | -err1: | ||
1066 | - printk(KERN_ERR "Unable to add platform device\n"); | ||
1067 | - platform_device_put(zoom2_snd_device); | ||
1068 | +err: | ||
1069 | + gpio_free(ZOOM2_HEADSET_MUX_GPIO); | ||
1070 | + gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO); | ||
1071 | |||
1072 | return ret; | ||
1073 | } | ||
1074 | -module_init(zoom2_soc_init); | ||
1075 | |||
1076 | -static void __exit zoom2_soc_exit(void) | ||
1077 | +static int __devexit zoom2_soc_remove(struct platform_device *pdev) | ||
1078 | { | ||
1079 | + struct snd_soc_card *card = platform_get_drvdata(pdev); | ||
1080 | + | ||
1081 | + snd_soc_unregister_card(card); | ||
1082 | + | ||
1083 | gpio_free(ZOOM2_HEADSET_MUX_GPIO); | ||
1084 | gpio_free(ZOOM2_HEADSET_EXTMUTE_GPIO); | ||
1085 | |||
1086 | - platform_device_unregister(zoom2_snd_device); | ||
1087 | + return 0; | ||
1088 | +} | ||
1089 | + | ||
1090 | +static struct platform_driver zoom2_driver = { | ||
1091 | + .driver = { | ||
1092 | + .name = "zoom2-soc-audio", | ||
1093 | + .owner = THIS_MODULE, | ||
1094 | + }, | ||
1095 | + | ||
1096 | + .probe = zoom2_soc_probe, | ||
1097 | + .remove = __devexit_p(zoom2_soc_remove), | ||
1098 | +}; | ||
1099 | + | ||
1100 | +static int __init zoom2_soc_init(void) | ||
1101 | +{ | ||
1102 | + return platform_driver_register(&zoom2_driver); | ||
1103 | +} | ||
1104 | +module_init(zoom2_soc_init); | ||
1105 | + | ||
1106 | +static void __exit zoom2_soc_exit(void) | ||
1107 | +{ | ||
1108 | + platform_driver_unregister(&zoom2_driver); | ||
1109 | } | ||
1110 | module_exit(zoom2_soc_exit); | ||
1111 | |||
1112 | MODULE_AUTHOR("Misael Lopez Cruz <x0052729@ti.com>"); | ||
1113 | MODULE_DESCRIPTION("ALSA SoC Zoom2"); | ||
1114 | MODULE_LICENSE("GPL"); | ||
1115 | - | ||
1116 | +MODULE_ALIAS("platform:zoom2-soc-audio"); | ||
1117 | -- | ||
1118 | 1.7.10 | ||
1119 | |||
diff --git a/recipes-kernel/linux/linux-mainline_3.2.bb b/recipes-kernel/linux/linux-mainline_3.2.bb index 3e57ccf2..72a06e32 100644 --- a/recipes-kernel/linux/linux-mainline_3.2.bb +++ b/recipes-kernel/linux/linux-mainline_3.2.bb | |||
@@ -10,7 +10,7 @@ PV = "3.2.16" | |||
10 | SRCREV_pn-${PN} = "b1be7dd1ec231ae751d0ce3acd0d2e5760704a6f" | 10 | SRCREV_pn-${PN} = "b1be7dd1ec231ae751d0ce3acd0d2e5760704a6f" |
11 | 11 | ||
12 | # The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc | 12 | # The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc |
13 | MACHINE_KERNEL_PR_append = "b" | 13 | MACHINE_KERNEL_PR_append = "c" |
14 | 14 | ||
15 | FILESPATH =. "${FILE_DIRNAME}/linux-mainline-3.2:${FILE_DIRNAME}/linux-mainline-3.2/${MACHINE}:" | 15 | FILESPATH =. "${FILE_DIRNAME}/linux-mainline-3.2:${FILE_DIRNAME}/linux-mainline-3.2/${MACHINE}:" |
16 | 16 | ||
@@ -58,6 +58,8 @@ SRC_URI += "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gi | |||
58 | file://beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch \ | 58 | file://beagle/0012-backlight-Add-TLC59108-backlight-control-driver.patch \ |
59 | file://beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch \ | 59 | file://beagle/0013-tlc59108-adjust-for-beagleboard-uLCD7.patch \ |
60 | file://beagle/0014-expansion-add-wifi.patch \ | 60 | file://beagle/0014-expansion-add-wifi.patch \ |
61 | file://beagle/0015-ASoC-omap-add-MODULE_ALIAS-to-mcbsp-and-pcm-drivers.patch \ | ||
62 | file://beagle/0016-ASoC-omap-convert-per-board-modules-to-platform-driv.patch \ | ||
61 | file://devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch \ | 63 | file://devkit8000/0001-arm-omap-devkit8000-for-lcd-use-samsung_lte_panel.patch \ |
62 | file://touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch \ | 64 | file://touchbook/0001-omap3-touchbook-remove-mmc-gpio_wp.patch \ |
63 | file://touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch \ | 65 | file://touchbook/0002-omap3-touchbook-drop-u-boot-readonly.patch \ |