aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMark Brown <broonie@sirena.org.uk>2008-06-10 07:30:05 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-07-09 16:31:51 -0400
commit9f19d6382854d6b2d58cc364253779479e14facc (patch)
tree1a91dc4f969fe7514de35d96c23f6e31b967c37b /arch
parent7a8576204333d133d58cbcc59dacf49a5546e3e4 (diff)
[ARM] 5085/2: PXA: Move AC97 over to the new central device declaration model
As well as moving all the device declarations to a single one in devices.c this causes all platforms to register the I/O and interrupt resources for the AC97 controller. Cc: eric miao <eric.miao@marvell.com> Cc: Mike Rapoport <mike@compulab.co.il> Cc: Lennert Buytenhek <buytenh@wantstofly.org> Cc: Jürgen Schindele <linux@schindele.name> Cc: Juergen Beisert <jbe@pengutronix.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-pxa/cm-x270.c9
-rw-r--r--arch/arm/mach-pxa/devices.c32
-rw-r--r--arch/arm/mach-pxa/devices.h1
-rw-r--r--arch/arm/mach-pxa/em-x270.c9
-rw-r--r--arch/arm/mach-pxa/lpd270.c8
-rw-r--r--arch/arm/mach-pxa/lubbock.c8
-rw-r--r--arch/arm/mach-pxa/mainstone.c8
-rw-r--r--arch/arm/mach-pxa/pcm990-baseboard.c34
-rw-r--r--arch/arm/mach-pxa/trizeps4.c10
9 files changed, 45 insertions, 74 deletions
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
index 6d4416a4f37..b3c3fd72d04 100644
--- a/arch/arm/mach-pxa/cm-x270.c
+++ b/arch/arm/mach-pxa/cm-x270.c
@@ -31,6 +31,7 @@
31#include <asm/arch/pxa-regs.h> 31#include <asm/arch/pxa-regs.h>
32#include <asm/arch/pxa2xx-regs.h> 32#include <asm/arch/pxa2xx-regs.h>
33#include <asm/arch/pxa2xx-gpio.h> 33#include <asm/arch/pxa2xx-gpio.h>
34#include <asm/arch/audio.h>
34#include <asm/arch/pxafb.h> 35#include <asm/arch/pxafb.h>
35#include <asm/arch/ohci.h> 36#include <asm/arch/ohci.h>
36#include <asm/arch/mmc.h> 37#include <asm/arch/mmc.h>
@@ -81,12 +82,6 @@ static struct platform_device cmx270_device_dm9k = {
81 } 82 }
82}; 83};
83 84
84/* audio device */
85static struct platform_device cmx270_audio_device = {
86 .name = "pxa2xx-ac97",
87 .id = -1,
88};
89
90/* touchscreen controller */ 85/* touchscreen controller */
91static struct platform_device cmx270_ts_device = { 86static struct platform_device cmx270_ts_device = {
92 .name = "ucb1400_ts", 87 .name = "ucb1400_ts",
@@ -219,7 +214,6 @@ static struct platform_device cmx270_ata = {
219/* platform devices */ 214/* platform devices */
220static struct platform_device *platform_devices[] __initdata = { 215static struct platform_device *platform_devices[] __initdata = {
221 &cmx270_device_dm9k, 216 &cmx270_device_dm9k,
222 &cmx270_audio_device,
223 &cmx270_rtc_device, 217 &cmx270_rtc_device,
224 &cmx270_2700G, 218 &cmx270_2700G,
225 &cmx270_led_device, 219 &cmx270_led_device,
@@ -594,6 +588,7 @@ static void __init cmx270_init(void)
594 588
595 /* register CM-X270 platform devices */ 589 /* register CM-X270 platform devices */
596 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 590 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
591 pxa_set_ac97_info(NULL);
597 592
598 /* set MCI and OHCI platform parameters */ 593 /* set MCI and OHCI platform parameters */
599 pxa_set_mci_info(&cmx270_mci_platform_data); 594 pxa_set_mci_info(&cmx270_mci_platform_data);
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index 123ee19ca79..a6f2390ce66 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -14,6 +14,7 @@
14#include <asm/arch/ohci.h> 14#include <asm/arch/ohci.h>
15#include <asm/arch/pxa27x_keypad.h> 15#include <asm/arch/pxa27x_keypad.h>
16#include <asm/arch/camera.h> 16#include <asm/arch/camera.h>
17#include <asm/arch/audio.h>
17 18
18#include "devices.h" 19#include "devices.h"
19#include "generic.h" 20#include "generic.h"
@@ -298,6 +299,37 @@ struct platform_device pxa_device_rtc = {
298 .id = -1, 299 .id = -1,
299}; 300};
300 301
302static struct resource pxa_ac97_resources[] = {
303 [0] = {
304 .start = 0x40500000,
305 .end = 0x40500000 + 0xfff,
306 .flags = IORESOURCE_MEM,
307 },
308 [1] = {
309 .start = IRQ_AC97,
310 .end = IRQ_AC97,
311 .flags = IORESOURCE_IRQ,
312 },
313};
314
315static u64 pxa_ac97_dmamask = 0xffffffffUL;
316
317struct platform_device pxa_device_ac97 = {
318 .name = "pxa2xx-ac97",
319 .id = -1,
320 .dev = {
321 .dma_mask = &pxa_ac97_dmamask,
322 .coherent_dma_mask = 0xffffffff,
323 },
324 .num_resources = ARRAY_SIZE(pxa_ac97_resources),
325 .resource = pxa_ac97_resources,
326};
327
328void __init pxa_set_ac97_info(pxa2xx_audio_ops_t *ops)
329{
330 pxa_register_device(&pxa_device_ac97, ops);
331}
332
301#ifdef CONFIG_PXA25x 333#ifdef CONFIG_PXA25x
302 334
303static struct resource pxa25x_resource_pwm0[] = { 335static struct resource pxa25x_resource_pwm0[] = {
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
index 881d1a7bf17..b852eb18daa 100644
--- a/arch/arm/mach-pxa/devices.h
+++ b/arch/arm/mach-pxa/devices.h
@@ -12,6 +12,7 @@ extern struct platform_device pxa_device_i2c;
12extern struct platform_device pxa_device_i2s; 12extern struct platform_device pxa_device_i2s;
13extern struct platform_device pxa_device_ficp; 13extern struct platform_device pxa_device_ficp;
14extern struct platform_device pxa_device_rtc; 14extern struct platform_device pxa_device_rtc;
15extern struct platform_device pxa_device_ac97;
15 16
16extern struct platform_device pxa27x_device_i2c_power; 17extern struct platform_device pxa27x_device_i2c_power;
17extern struct platform_device pxa27x_device_ohci; 18extern struct platform_device pxa27x_device_ohci;
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 1269ac99150..e23865affc0 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -25,6 +25,7 @@
25#include <asm/arch/pxa-regs.h> 25#include <asm/arch/pxa-regs.h>
26#include <asm/arch/pxa2xx-gpio.h> 26#include <asm/arch/pxa2xx-gpio.h>
27#include <asm/arch/pxa27x-udc.h> 27#include <asm/arch/pxa27x-udc.h>
28#include <asm/arch/audio.h>
28#include <asm/arch/pxafb.h> 29#include <asm/arch/pxafb.h>
29#include <asm/arch/ohci.h> 30#include <asm/arch/ohci.h>
30#include <asm/arch/mmc.h> 31#include <asm/arch/mmc.h>
@@ -73,12 +74,6 @@ static struct platform_device em_x270_dm9k = {
73 } 74 }
74}; 75};
75 76
76/* audio device */
77static struct platform_device em_x270_audio = {
78 .name = "pxa2xx-ac97",
79 .id = -1,
80};
81
82/* WM9712 touchscreen controller. Hopefully the driver will make it to 77/* WM9712 touchscreen controller. Hopefully the driver will make it to
83 * the mainstream sometime */ 78 * the mainstream sometime */
84static struct platform_device em_x270_ts = { 79static struct platform_device em_x270_ts = {
@@ -218,7 +213,6 @@ static struct platform_device em_x270_nand = {
218/* platform devices */ 213/* platform devices */
219static struct platform_device *platform_devices[] __initdata = { 214static struct platform_device *platform_devices[] __initdata = {
220 &em_x270_dm9k, 215 &em_x270_dm9k,
221 &em_x270_audio,
222 &em_x270_ts, 216 &em_x270_ts,
223 &em_x270_rtc, 217 &em_x270_rtc,
224 &em_x270_nand, 218 &em_x270_nand,
@@ -326,6 +320,7 @@ static void __init em_x270_init(void)
326 320
327 /* register EM-X270 platform devices */ 321 /* register EM-X270 platform devices */
328 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 322 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
323 pxa_set_ac97_info(NULL);
329 324
330 /* set MCI and OHCI platform parameters */ 325 /* set MCI and OHCI platform parameters */
331 pxa_set_mci_info(&em_x270_mci_platform_data); 326 pxa_set_mci_info(&em_x270_mci_platform_data);
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index 183b587672a..cc1c4fa0614 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -168,11 +168,6 @@ static struct platform_device smc91x_device = {
168 .resource = smc91x_resources, 168 .resource = smc91x_resources,
169}; 169};
170 170
171static struct platform_device lpd270_audio_device = {
172 .name = "pxa2xx-ac97",
173 .id = -1,
174};
175
176static struct resource lpd270_flash_resources[] = { 171static struct resource lpd270_flash_resources[] = {
177 [0] = { 172 [0] = {
178 .start = PXA_CS0_PHYS, 173 .start = PXA_CS0_PHYS,
@@ -412,7 +407,6 @@ __setup("lcd=", lpd270_set_lcd);
412static struct platform_device *platform_devices[] __initdata = { 407static struct platform_device *platform_devices[] __initdata = {
413 &smc91x_device, 408 &smc91x_device,
414 &lpd270_backlight_device, 409 &lpd270_backlight_device,
415 &lpd270_audio_device,
416 &lpd270_flash_device[0], 410 &lpd270_flash_device[0],
417 &lpd270_flash_device[1], 411 &lpd270_flash_device[1],
418}; 412};
@@ -456,6 +450,8 @@ static void __init lpd270_init(void)
456 450
457 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 451 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
458 452
453 pxa_set_ac97_info(NULL);
454
459 if (lpd270_lcd_to_use != NULL) 455 if (lpd270_lcd_to_use != NULL)
460 set_pxa_fb_info(lpd270_lcd_to_use); 456 set_pxa_fb_info(lpd270_lcd_to_use);
461 457
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 7b9bdd0c666..a3fae413920 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -43,6 +43,7 @@
43#include <asm/arch/pxa-regs.h> 43#include <asm/arch/pxa-regs.h>
44#include <asm/arch/pxa2xx-regs.h> 44#include <asm/arch/pxa2xx-regs.h>
45#include <asm/arch/mfp-pxa25x.h> 45#include <asm/arch/mfp-pxa25x.h>
46#include <asm/arch/audio.h>
46#include <asm/arch/lubbock.h> 47#include <asm/arch/lubbock.h>
47#include <asm/arch/udc.h> 48#include <asm/arch/udc.h>
48#include <asm/arch/irda.h> 49#include <asm/arch/irda.h>
@@ -196,11 +197,6 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
196 // no D+ pullup; lubbock can't connect/disconnect in software 197 // no D+ pullup; lubbock can't connect/disconnect in software
197}; 198};
198 199
199static struct platform_device lub_audio_device = {
200 .name = "pxa2xx-ac97",
201 .id = -1,
202};
203
204static struct resource sa1111_resources[] = { 200static struct resource sa1111_resources[] = {
205 [0] = { 201 [0] = {
206 .start = 0x10000000, 202 .start = 0x10000000,
@@ -368,7 +364,6 @@ static struct platform_device lubbock_flash_device[2] = {
368 364
369static struct platform_device *devices[] __initdata = { 365static struct platform_device *devices[] __initdata = {
370 &sa1111_device, 366 &sa1111_device,
371 &lub_audio_device,
372 &smc91x_device, 367 &smc91x_device,
373 &lubbock_flash_device[0], 368 &lubbock_flash_device[0],
374 &lubbock_flash_device[1], 369 &lubbock_flash_device[1],
@@ -494,6 +489,7 @@ static void __init lubbock_init(void)
494 set_pxa_fb_info(&sharp_lm8v31); 489 set_pxa_fb_info(&sharp_lm8v31);
495 pxa_set_mci_info(&lubbock_mci_platform_data); 490 pxa_set_mci_info(&lubbock_mci_platform_data);
496 pxa_set_ficp_info(&lubbock_ficp_platform_data); 491 pxa_set_ficp_info(&lubbock_ficp_platform_data);
492 pxa_set_ac97_info(NULL);
497 493
498 lubbock_flash_data[0].width = lubbock_flash_data[1].width = 494 lubbock_flash_data[0].width = lubbock_flash_data[1].width =
499 (BOOT_DEF & 1) ? 2 : 4; 495 (BOOT_DEF & 1) ? 2 : 4;
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index 266594426e8..f2e9e7c4da8 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -280,12 +280,6 @@ static pxa2xx_audio_ops_t mst_audio_ops = {
280 .resume = mst_audio_resume, 280 .resume = mst_audio_resume,
281}; 281};
282 282
283static struct platform_device mst_audio_device = {
284 .name = "pxa2xx-ac97",
285 .id = -1,
286 .dev = { .platform_data = &mst_audio_ops },
287};
288
289static struct resource flash_resources[] = { 283static struct resource flash_resources[] = {
290 [0] = { 284 [0] = {
291 .start = PXA_CS0_PHYS, 285 .start = PXA_CS0_PHYS,
@@ -499,7 +493,6 @@ static struct platform_device mst_gpio_keys_device = {
499 493
500static struct platform_device *platform_devices[] __initdata = { 494static struct platform_device *platform_devices[] __initdata = {
501 &smc91x_device, 495 &smc91x_device,
502 &mst_audio_device,
503 &mst_flash_device[0], 496 &mst_flash_device[0],
504 &mst_flash_device[1], 497 &mst_flash_device[1],
505 &mst_gpio_keys_device, 498 &mst_gpio_keys_device,
@@ -609,6 +602,7 @@ static void __init mainstone_init(void)
609 pxa_set_ficp_info(&mainstone_ficp_platform_data); 602 pxa_set_ficp_info(&mainstone_ficp_platform_data);
610 pxa_set_ohci_info(&mainstone_ohci_platform_data); 603 pxa_set_ohci_info(&mainstone_ohci_platform_data);
611 pxa_set_i2c_info(NULL); 604 pxa_set_i2c_info(NULL);
605 pxa_set_ac97_info(&mst_audio_ops);
612 606
613 mainstone_init_keypad(); 607 mainstone_init_keypad();
614} 608}
diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c
index 2564e16e4e2..5d87c7c866e 100644
--- a/arch/arm/mach-pxa/pcm990-baseboard.c
+++ b/arch/arm/mach-pxa/pcm990-baseboard.c
@@ -34,6 +34,7 @@
34#include <asm/mach/map.h> 34#include <asm/mach/map.h>
35#include <asm/arch/pxa-regs.h> 35#include <asm/arch/pxa-regs.h>
36#include <asm/arch/pxa2xx-gpio.h> 36#include <asm/arch/pxa2xx-gpio.h>
37#include <asm/arch/audio.h>
37#include <asm/arch/mmc.h> 38#include <asm/arch/mmc.h>
38#include <asm/arch/ohci.h> 39#include <asm/arch/ohci.h>
39#include <asm/arch/pcm990_baseboard.h> 40#include <asm/arch/pcm990_baseboard.h>
@@ -424,36 +425,6 @@ static struct i2c_board_info __initdata pcm990_i2c_devices[] = {
424#endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */ 425#endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */
425 426
426/* 427/*
427 * AC97 support
428 * Note: The connected AC97 mixer also reports interrupts at PCM990_AC97_IRQ
429 */
430static struct resource pxa27x_ac97_resources[] = {
431 [0] = {
432 .start = 0x40500000,
433 .end = 0x40500000 + 0xfff,
434 .flags = IORESOURCE_MEM,
435 },
436 [1] = {
437 .start = IRQ_AC97,
438 .end = IRQ_AC97,
439 .flags = IORESOURCE_IRQ,
440 },
441};
442
443static u64 pxa_ac97_dmamask = 0xffffffffUL;
444
445static struct platform_device pxa27x_device_ac97 = {
446 .name = "pxa2xx-ac97",
447 .id = -1,
448 .dev = {
449 .dma_mask = &pxa_ac97_dmamask,
450 .coherent_dma_mask = 0xffffffff,
451 },
452 .num_resources = ARRAY_SIZE(pxa27x_ac97_resources),
453 .resource = pxa27x_ac97_resources,
454};
455
456/*
457 * enable generic access to the base board control CPLDs U6 and U7 428 * enable generic access to the base board control CPLDs U6 and U7
458 */ 429 */
459static struct map_desc pcm990_io_desc[] __initdata = { 430static struct map_desc pcm990_io_desc[] __initdata = {
@@ -490,8 +461,6 @@ void __init pcm990_baseboard_init(void)
490 pxa_gpio_mode(GPIO16_PWM0_MD); 461 pxa_gpio_mode(GPIO16_PWM0_MD);
491 platform_device_register(&pcm990_backlight_device); 462 platform_device_register(&pcm990_backlight_device);
492 463
493 platform_device_register(&pxa27x_device_ac97);
494
495 /* MMC */ 464 /* MMC */
496 pxa_set_mci_info(&pcm990_mci_platform_data); 465 pxa_set_mci_info(&pcm990_mci_platform_data);
497 466
@@ -499,6 +468,7 @@ void __init pcm990_baseboard_init(void)
499 pxa_set_ohci_info(&pcm990_ohci_platform_data); 468 pxa_set_ohci_info(&pcm990_ohci_platform_data);
500 469
501 pxa_set_i2c_info(NULL); 470 pxa_set_i2c_info(NULL);
471 pxa_set_ac97_info(NULL);
502 472
503#if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE) 473#if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE)
504 pxa_set_camera_info(&pcm990_pxacamera_platform_data); 474 pxa_set_camera_info(&pcm990_pxacamera_platform_data);
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index bc7c465ef32..61e24402308 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -176,19 +176,10 @@ static struct platform_device uart_devices = {
176 .resource = NULL, 176 .resource = NULL,
177}; 177};
178 178
179/********************************************************************************************
180 * PXA270 ac97 sound codec
181 ********************************************************************************************/
182static struct platform_device ac97_audio_device = {
183 .name = "pxa2xx-ac97",
184 .id = -1,
185};
186
187static struct platform_device * trizeps4_devices[] __initdata = { 179static struct platform_device * trizeps4_devices[] __initdata = {
188 &flash_device, 180 &flash_device,
189 &uart_devices, 181 &uart_devices,
190 &dm9000_device, 182 &dm9000_device,
191 &ac97_audio_device,
192}; 183};
193 184
194#ifdef CONFIG_MACH_TRIZEPS4_CONXS 185#ifdef CONFIG_MACH_TRIZEPS4_CONXS
@@ -439,6 +430,7 @@ static void __init trizeps4_init(void)
439 pxa_set_mci_info(&trizeps4_mci_platform_data); 430 pxa_set_mci_info(&trizeps4_mci_platform_data);
440 pxa_set_ficp_info(&trizeps4_ficp_platform_data); 431 pxa_set_ficp_info(&trizeps4_ficp_platform_data);
441 pxa_set_ohci_info(&trizeps4_ohci_platform_data); 432 pxa_set_ohci_info(&trizeps4_ohci_platform_data);
433 pxa_set_ac97_info(NULL);
442} 434}
443 435
444static void __init trizeps4_map_io(void) 436static void __init trizeps4_map_io(void)