Commit 9f19d638 authored by Mark Brown's avatar Mark Brown Committed by Russell King

[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: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 7a857620
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/arch/pxa2xx-regs.h> #include <asm/arch/pxa2xx-regs.h>
#include <asm/arch/pxa2xx-gpio.h> #include <asm/arch/pxa2xx-gpio.h>
#include <asm/arch/audio.h>
#include <asm/arch/pxafb.h> #include <asm/arch/pxafb.h>
#include <asm/arch/ohci.h> #include <asm/arch/ohci.h>
#include <asm/arch/mmc.h> #include <asm/arch/mmc.h>
...@@ -81,12 +82,6 @@ static struct platform_device cmx270_device_dm9k = { ...@@ -81,12 +82,6 @@ static struct platform_device cmx270_device_dm9k = {
} }
}; };
/* audio device */
static struct platform_device cmx270_audio_device = {
.name = "pxa2xx-ac97",
.id = -1,
};
/* touchscreen controller */ /* touchscreen controller */
static struct platform_device cmx270_ts_device = { static struct platform_device cmx270_ts_device = {
.name = "ucb1400_ts", .name = "ucb1400_ts",
...@@ -219,7 +214,6 @@ static struct platform_device cmx270_ata = { ...@@ -219,7 +214,6 @@ static struct platform_device cmx270_ata = {
/* platform devices */ /* platform devices */
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&cmx270_device_dm9k, &cmx270_device_dm9k,
&cmx270_audio_device,
&cmx270_rtc_device, &cmx270_rtc_device,
&cmx270_2700G, &cmx270_2700G,
&cmx270_led_device, &cmx270_led_device,
...@@ -594,6 +588,7 @@ static void __init cmx270_init(void) ...@@ -594,6 +588,7 @@ static void __init cmx270_init(void)
/* register CM-X270 platform devices */ /* register CM-X270 platform devices */
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
pxa_set_ac97_info(NULL);
/* set MCI and OHCI platform parameters */ /* set MCI and OHCI platform parameters */
pxa_set_mci_info(&cmx270_mci_platform_data); pxa_set_mci_info(&cmx270_mci_platform_data);
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <asm/arch/ohci.h> #include <asm/arch/ohci.h>
#include <asm/arch/pxa27x_keypad.h> #include <asm/arch/pxa27x_keypad.h>
#include <asm/arch/camera.h> #include <asm/arch/camera.h>
#include <asm/arch/audio.h>
#include "devices.h" #include "devices.h"
#include "generic.h" #include "generic.h"
...@@ -298,6 +299,37 @@ struct platform_device pxa_device_rtc = { ...@@ -298,6 +299,37 @@ struct platform_device pxa_device_rtc = {
.id = -1, .id = -1,
}; };
static struct resource pxa_ac97_resources[] = {
[0] = {
.start = 0x40500000,
.end = 0x40500000 + 0xfff,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_AC97,
.end = IRQ_AC97,
.flags = IORESOURCE_IRQ,
},
};
static u64 pxa_ac97_dmamask = 0xffffffffUL;
struct platform_device pxa_device_ac97 = {
.name = "pxa2xx-ac97",
.id = -1,
.dev = {
.dma_mask = &pxa_ac97_dmamask,
.coherent_dma_mask = 0xffffffff,
},
.num_resources = ARRAY_SIZE(pxa_ac97_resources),
.resource = pxa_ac97_resources,
};
void __init pxa_set_ac97_info(pxa2xx_audio_ops_t *ops)
{
pxa_register_device(&pxa_device_ac97, ops);
}
#ifdef CONFIG_PXA25x #ifdef CONFIG_PXA25x
static struct resource pxa25x_resource_pwm0[] = { static struct resource pxa25x_resource_pwm0[] = {
......
...@@ -12,6 +12,7 @@ extern struct platform_device pxa_device_i2c; ...@@ -12,6 +12,7 @@ extern struct platform_device pxa_device_i2c;
extern struct platform_device pxa_device_i2s; extern struct platform_device pxa_device_i2s;
extern struct platform_device pxa_device_ficp; extern struct platform_device pxa_device_ficp;
extern struct platform_device pxa_device_rtc; extern struct platform_device pxa_device_rtc;
extern struct platform_device pxa_device_ac97;
extern struct platform_device pxa27x_device_i2c_power; extern struct platform_device pxa27x_device_i2c_power;
extern struct platform_device pxa27x_device_ohci; extern struct platform_device pxa27x_device_ohci;
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/arch/pxa2xx-gpio.h> #include <asm/arch/pxa2xx-gpio.h>
#include <asm/arch/pxa27x-udc.h> #include <asm/arch/pxa27x-udc.h>
#include <asm/arch/audio.h>
#include <asm/arch/pxafb.h> #include <asm/arch/pxafb.h>
#include <asm/arch/ohci.h> #include <asm/arch/ohci.h>
#include <asm/arch/mmc.h> #include <asm/arch/mmc.h>
...@@ -73,12 +74,6 @@ static struct platform_device em_x270_dm9k = { ...@@ -73,12 +74,6 @@ static struct platform_device em_x270_dm9k = {
} }
}; };
/* audio device */
static struct platform_device em_x270_audio = {
.name = "pxa2xx-ac97",
.id = -1,
};
/* WM9712 touchscreen controller. Hopefully the driver will make it to /* WM9712 touchscreen controller. Hopefully the driver will make it to
* the mainstream sometime */ * the mainstream sometime */
static struct platform_device em_x270_ts = { static struct platform_device em_x270_ts = {
...@@ -218,7 +213,6 @@ static struct platform_device em_x270_nand = { ...@@ -218,7 +213,6 @@ static struct platform_device em_x270_nand = {
/* platform devices */ /* platform devices */
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&em_x270_dm9k, &em_x270_dm9k,
&em_x270_audio,
&em_x270_ts, &em_x270_ts,
&em_x270_rtc, &em_x270_rtc,
&em_x270_nand, &em_x270_nand,
...@@ -326,6 +320,7 @@ static void __init em_x270_init(void) ...@@ -326,6 +320,7 @@ static void __init em_x270_init(void)
/* register EM-X270 platform devices */ /* register EM-X270 platform devices */
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
pxa_set_ac97_info(NULL);
/* set MCI and OHCI platform parameters */ /* set MCI and OHCI platform parameters */
pxa_set_mci_info(&em_x270_mci_platform_data); pxa_set_mci_info(&em_x270_mci_platform_data);
......
...@@ -168,11 +168,6 @@ static struct platform_device smc91x_device = { ...@@ -168,11 +168,6 @@ static struct platform_device smc91x_device = {
.resource = smc91x_resources, .resource = smc91x_resources,
}; };
static struct platform_device lpd270_audio_device = {
.name = "pxa2xx-ac97",
.id = -1,
};
static struct resource lpd270_flash_resources[] = { static struct resource lpd270_flash_resources[] = {
[0] = { [0] = {
.start = PXA_CS0_PHYS, .start = PXA_CS0_PHYS,
...@@ -412,7 +407,6 @@ __setup("lcd=", lpd270_set_lcd); ...@@ -412,7 +407,6 @@ __setup("lcd=", lpd270_set_lcd);
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&smc91x_device, &smc91x_device,
&lpd270_backlight_device, &lpd270_backlight_device,
&lpd270_audio_device,
&lpd270_flash_device[0], &lpd270_flash_device[0],
&lpd270_flash_device[1], &lpd270_flash_device[1],
}; };
...@@ -456,6 +450,8 @@ static void __init lpd270_init(void) ...@@ -456,6 +450,8 @@ static void __init lpd270_init(void)
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
pxa_set_ac97_info(NULL);
if (lpd270_lcd_to_use != NULL) if (lpd270_lcd_to_use != NULL)
set_pxa_fb_info(lpd270_lcd_to_use); set_pxa_fb_info(lpd270_lcd_to_use);
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/arch/pxa2xx-regs.h> #include <asm/arch/pxa2xx-regs.h>
#include <asm/arch/mfp-pxa25x.h> #include <asm/arch/mfp-pxa25x.h>
#include <asm/arch/audio.h>
#include <asm/arch/lubbock.h> #include <asm/arch/lubbock.h>
#include <asm/arch/udc.h> #include <asm/arch/udc.h>
#include <asm/arch/irda.h> #include <asm/arch/irda.h>
...@@ -196,11 +197,6 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = { ...@@ -196,11 +197,6 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
// no D+ pullup; lubbock can't connect/disconnect in software // no D+ pullup; lubbock can't connect/disconnect in software
}; };
static struct platform_device lub_audio_device = {
.name = "pxa2xx-ac97",
.id = -1,
};
static struct resource sa1111_resources[] = { static struct resource sa1111_resources[] = {
[0] = { [0] = {
.start = 0x10000000, .start = 0x10000000,
...@@ -368,7 +364,6 @@ static struct platform_device lubbock_flash_device[2] = { ...@@ -368,7 +364,6 @@ static struct platform_device lubbock_flash_device[2] = {
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&sa1111_device, &sa1111_device,
&lub_audio_device,
&smc91x_device, &smc91x_device,
&lubbock_flash_device[0], &lubbock_flash_device[0],
&lubbock_flash_device[1], &lubbock_flash_device[1],
...@@ -494,6 +489,7 @@ static void __init lubbock_init(void) ...@@ -494,6 +489,7 @@ static void __init lubbock_init(void)
set_pxa_fb_info(&sharp_lm8v31); set_pxa_fb_info(&sharp_lm8v31);
pxa_set_mci_info(&lubbock_mci_platform_data); pxa_set_mci_info(&lubbock_mci_platform_data);
pxa_set_ficp_info(&lubbock_ficp_platform_data); pxa_set_ficp_info(&lubbock_ficp_platform_data);
pxa_set_ac97_info(NULL);
lubbock_flash_data[0].width = lubbock_flash_data[1].width = lubbock_flash_data[0].width = lubbock_flash_data[1].width =
(BOOT_DEF & 1) ? 2 : 4; (BOOT_DEF & 1) ? 2 : 4;
......
...@@ -280,12 +280,6 @@ static pxa2xx_audio_ops_t mst_audio_ops = { ...@@ -280,12 +280,6 @@ static pxa2xx_audio_ops_t mst_audio_ops = {
.resume = mst_audio_resume, .resume = mst_audio_resume,
}; };
static struct platform_device mst_audio_device = {
.name = "pxa2xx-ac97",
.id = -1,
.dev = { .platform_data = &mst_audio_ops },
};
static struct resource flash_resources[] = { static struct resource flash_resources[] = {
[0] = { [0] = {
.start = PXA_CS0_PHYS, .start = PXA_CS0_PHYS,
...@@ -499,7 +493,6 @@ static struct platform_device mst_gpio_keys_device = { ...@@ -499,7 +493,6 @@ static struct platform_device mst_gpio_keys_device = {
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&smc91x_device, &smc91x_device,
&mst_audio_device,
&mst_flash_device[0], &mst_flash_device[0],
&mst_flash_device[1], &mst_flash_device[1],
&mst_gpio_keys_device, &mst_gpio_keys_device,
...@@ -609,6 +602,7 @@ static void __init mainstone_init(void) ...@@ -609,6 +602,7 @@ static void __init mainstone_init(void)
pxa_set_ficp_info(&mainstone_ficp_platform_data); pxa_set_ficp_info(&mainstone_ficp_platform_data);
pxa_set_ohci_info(&mainstone_ohci_platform_data); pxa_set_ohci_info(&mainstone_ohci_platform_data);
pxa_set_i2c_info(NULL); pxa_set_i2c_info(NULL);
pxa_set_ac97_info(&mst_audio_ops);
mainstone_init_keypad(); mainstone_init_keypad();
} }
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/arch/pxa2xx-gpio.h> #include <asm/arch/pxa2xx-gpio.h>
#include <asm/arch/audio.h>
#include <asm/arch/mmc.h> #include <asm/arch/mmc.h>
#include <asm/arch/ohci.h> #include <asm/arch/ohci.h>
#include <asm/arch/pcm990_baseboard.h> #include <asm/arch/pcm990_baseboard.h>
...@@ -423,36 +424,6 @@ static struct i2c_board_info __initdata pcm990_i2c_devices[] = { ...@@ -423,36 +424,6 @@ static struct i2c_board_info __initdata pcm990_i2c_devices[] = {
}; };
#endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */ #endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */
/*
* AC97 support
* Note: The connected AC97 mixer also reports interrupts at PCM990_AC97_IRQ
*/
static struct resource pxa27x_ac97_resources[] = {
[0] = {
.start = 0x40500000,
.end = 0x40500000 + 0xfff,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_AC97,
.end = IRQ_AC97,
.flags = IORESOURCE_IRQ,
},
};
static u64 pxa_ac97_dmamask = 0xffffffffUL;
static struct platform_device pxa27x_device_ac97 = {
.name = "pxa2xx-ac97",
.id = -1,
.dev = {
.dma_mask = &pxa_ac97_dmamask,
.coherent_dma_mask = 0xffffffff,
},
.num_resources = ARRAY_SIZE(pxa27x_ac97_resources),
.resource = pxa27x_ac97_resources,
};
/* /*
* enable generic access to the base board control CPLDs U6 and U7 * enable generic access to the base board control CPLDs U6 and U7
*/ */
...@@ -490,8 +461,6 @@ void __init pcm990_baseboard_init(void) ...@@ -490,8 +461,6 @@ void __init pcm990_baseboard_init(void)
pxa_gpio_mode(GPIO16_PWM0_MD); pxa_gpio_mode(GPIO16_PWM0_MD);
platform_device_register(&pcm990_backlight_device); platform_device_register(&pcm990_backlight_device);
platform_device_register(&pxa27x_device_ac97);
/* MMC */ /* MMC */
pxa_set_mci_info(&pcm990_mci_platform_data); pxa_set_mci_info(&pcm990_mci_platform_data);
...@@ -499,6 +468,7 @@ void __init pcm990_baseboard_init(void) ...@@ -499,6 +468,7 @@ void __init pcm990_baseboard_init(void)
pxa_set_ohci_info(&pcm990_ohci_platform_data); pxa_set_ohci_info(&pcm990_ohci_platform_data);
pxa_set_i2c_info(NULL); pxa_set_i2c_info(NULL);
pxa_set_ac97_info(NULL);
#if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE) #if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE)
pxa_set_camera_info(&pcm990_pxacamera_platform_data); pxa_set_camera_info(&pcm990_pxacamera_platform_data);
......
...@@ -176,19 +176,10 @@ static struct platform_device uart_devices = { ...@@ -176,19 +176,10 @@ static struct platform_device uart_devices = {
.resource = NULL, .resource = NULL,
}; };
/********************************************************************************************
* PXA270 ac97 sound codec
********************************************************************************************/
static struct platform_device ac97_audio_device = {
.name = "pxa2xx-ac97",
.id = -1,
};
static struct platform_device * trizeps4_devices[] __initdata = { static struct platform_device * trizeps4_devices[] __initdata = {
&flash_device, &flash_device,
&uart_devices, &uart_devices,
&dm9000_device, &dm9000_device,
&ac97_audio_device,
}; };
#ifdef CONFIG_MACH_TRIZEPS4_CONXS #ifdef CONFIG_MACH_TRIZEPS4_CONXS
...@@ -439,6 +430,7 @@ static void __init trizeps4_init(void) ...@@ -439,6 +430,7 @@ static void __init trizeps4_init(void)
pxa_set_mci_info(&trizeps4_mci_platform_data); pxa_set_mci_info(&trizeps4_mci_platform_data);
pxa_set_ficp_info(&trizeps4_ficp_platform_data); pxa_set_ficp_info(&trizeps4_ficp_platform_data);
pxa_set_ohci_info(&trizeps4_ohci_platform_data); pxa_set_ohci_info(&trizeps4_ohci_platform_data);
pxa_set_ac97_info(NULL);
} }
static void __init trizeps4_map_io(void) static void __init trizeps4_map_io(void)
......
...@@ -12,4 +12,6 @@ typedef struct { ...@@ -12,4 +12,6 @@ typedef struct {
void *priv; void *priv;
} pxa2xx_audio_ops_t; } pxa2xx_audio_ops_t;
extern void pxa_set_ac97_info(pxa2xx_audio_ops_t *ops);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment