Skip to content

Commit

Permalink
[ARM] pxa: avoid always registering MMC, I2C, IrDA and framebuffer de…
Browse files Browse the repository at this point in the history
…vices

Only register the MMC, framebuffer, I2C and FICP devices when the
platform supplies the necessary platform data structures for the
devices.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King authored and Russell King committed Jan 26, 2008
1 parent 2fd2b12 commit 03f5b2c
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 18 deletions.
2 changes: 2 additions & 0 deletions arch/arm/mach-pxa/devices.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ extern struct platform_device pxa_device_rtc;

extern struct platform_device pxa27x_device_i2c_power;
extern struct platform_device pxa27x_device_ohci;

void __init pxa_register_device(struct platform_device *dev, void *data);
20 changes: 16 additions & 4 deletions arch/arm/mach-pxa/generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,18 @@ void __init pxa_map_io(void)
}


void __init pxa_register_device(struct platform_device *dev, void *data)
{
int ret;

dev->dev.platform_data = data;

ret = platform_device_register(dev);
if (ret)
dev_err(&dev->dev, "unable to register device: %d\n", ret);
}


static struct resource pxamci_resources[] = {
[0] = {
.start = 0x41100000,
Expand Down Expand Up @@ -263,7 +275,7 @@ struct platform_device pxa_device_mci = {

void __init pxa_set_mci_info(struct pxamci_platform_data *info)
{
pxa_device_mci.dev.platform_data = info;
pxa_register_device(&pxa_device_mci, info);
}


Expand Down Expand Up @@ -328,7 +340,7 @@ struct platform_device pxa_device_fb = {

void __init set_pxa_fb_info(struct pxafb_mach_info *info)
{
pxa_device_fb.dev.platform_data = info;
pxa_register_device(&pxa_device_fb, info);
}

void __init set_pxa_fb_parent(struct device *parent_dev)
Expand Down Expand Up @@ -433,7 +445,7 @@ struct platform_device pxa_device_i2c = {

void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
{
pxa_device_i2c.dev.platform_data = info;
pxa_register_device(&pxa_device_i2c, info);
}

static struct resource pxai2s_resources[] = {
Expand Down Expand Up @@ -468,7 +480,7 @@ struct platform_device pxa_device_ficp = {

void __init pxa_set_ficp_info(struct pxaficp_platform_data *info)
{
pxa_device_ficp.dev.platform_data = info;
pxa_register_device(&pxa_device_ficp, info);
}

struct platform_device pxa_device_rtc = {
Expand Down
4 changes: 0 additions & 4 deletions arch/arm/mach-pxa/pxa25x.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,15 +287,11 @@ void __init pxa25x_init_irq(void)
}

static struct platform_device *pxa25x_devices[] __initdata = {
&pxa_device_mci,
&pxa_device_udc,
&pxa_device_fb,
&pxa_device_ffuart,
&pxa_device_btuart,
&pxa_device_stuart,
&pxa_device_i2c,
&pxa_device_i2s,
&pxa_device_ficp,
&pxa_device_rtc,
};

Expand Down
7 changes: 1 addition & 6 deletions arch/arm/mach-pxa/pxa27x.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ struct platform_device pxa27x_device_ohci = {

void __init pxa_set_ohci_info(struct pxaohci_platform_data *info)
{
pxa27x_device_ohci.dev.platform_data = info;
pxa_register_device(&pxa27x_device_ohci, info);
}

static struct resource i2c_power_resources[] = {
Expand All @@ -424,18 +424,13 @@ struct platform_device pxa27x_device_i2c_power = {
};

static struct platform_device *devices[] __initdata = {
&pxa_device_mci,
&pxa_device_udc,
&pxa_device_fb,
&pxa_device_ffuart,
&pxa_device_btuart,
&pxa_device_stuart,
&pxa_device_i2c,
&pxa_device_i2s,
&pxa_device_ficp,
&pxa_device_rtc,
&pxa27x_device_i2c_power,
&pxa27x_device_ohci,
};

static int __init pxa27x_init(void)
Expand Down
4 changes: 0 additions & 4 deletions arch/arm/mach-pxa/pxa3xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,15 +209,11 @@ void __init pxa3xx_init_irq(void)
*/

static struct platform_device *devices[] __initdata = {
&pxa_device_mci,
&pxa_device_udc,
&pxa_device_fb,
&pxa_device_ffuart,
&pxa_device_btuart,
&pxa_device_stuart,
&pxa_device_i2c,
&pxa_device_i2s,
&pxa_device_ficp,
&pxa_device_rtc,
};

Expand Down

0 comments on commit 03f5b2c

Please sign in to comment.