[PATCH] ep93xx/core.c: remove redundant static variable

Lothar Waßmann LW at KARO-electronics.de
Wed Mar 17 03:52:56 EDT 2010


Hi,

> Use the pointer to the passed board support data directly instead of 
> copying it to local static variables.
> 
> This updates the ethernet, i2c, and framebuffer devices.
> 
> While here, also document the functions used to register the devices.
> 
> Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
> Cc: Ryan Mallon <ryan at bluewatersys.com>
> 
> ---
> 
> V2: spotted a couple others in addition to the ethernet device.
> 
> diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
> index 90fb591..5f5bc6d 100644
> --- a/arch/arm/mach-ep93xx/core.c
> +++ b/arch/arm/mach-ep93xx/core.c
> @@ -330,8 +330,10 @@ static struct platform_device ep93xx_ohci_device = {
>  	.resource	= ep93xx_ohci_resources,
>  };
>  
> -static struct ep93xx_eth_data ep93xx_eth_data;
>  
> +/*************************************************************************
> + * EP93xx ethernet peripheral handling
> + *************************************************************************/
>  static struct resource ep93xx_eth_resource[] = {
>  	{
>  		.start	= EP93XX_ETHERNET_PHYS_BASE,
> @@ -347,19 +349,22 @@ static struct resource ep93xx_eth_resource[] = {
>  static struct platform_device ep93xx_eth_device = {
>  	.name		= "ep93xx-eth",
>  	.id		= -1,
> -	.dev		= {
> -		.platform_data	= &ep93xx_eth_data,
> -	},
>  	.num_resources	= ARRAY_SIZE(ep93xx_eth_resource),
>  	.resource	= ep93xx_eth_resource,
>  };
>  
> +/**
> + * ep93xx_register_eth - Register the built-in ethernet platform device.
> + * @data:	platform specific ethernet configuration
> + * @copy_addr:	flag indicating that the MAC address should be copied
> + *		from the IndAd registers (as programmed by the bootloader)
> + */
>  void __init ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr)
>  {
>  	if (copy_addr)
>  		memcpy_fromio(data->dev_addr, EP93XX_ETHERNET_BASE + 0x50, 6);
>  
> -	ep93xx_eth_data = *data;
> +	ep93xx_eth_device.dev.platform_data = data;
>  	platform_device_register(&ep93xx_eth_device);
>  }
>
I don't think this is a good idea.
In a multi platform kernel each platform that could potentially
register the device needs to have the platform_data lying around in
memory even if it's never used.

In the old way the platforms could have the platform_data that is
passed to the ep93xx_register_eth() function marked as __initdata and
only one copy that is actually used would be kept.


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info at karo-electronics.de
___________________________________________________________



More information about the linux-arm-kernel mailing list