All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>,
	linux-kernel@vger.kernel.org, Andrew Victor <linux@maxim.org.za>,
	linux-mtd@lists.infradead.org,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] ATMEL, AVR32: inline nand partition table access
Date: Wed, 01 Jun 2011 15:31:59 +0200	[thread overview]
Message-ID: <4DE63F4F.60108@atmel.com> (raw)
In-Reply-To: <1306676962-22308-1-git-send-email-dbaryshkov@gmail.com>

Le 29/05/2011 15:49, Dmitry Eremin-Solenikov :
> Currently atmel_nand driver used by AT91 and AVR32 calls a special callback
> which return nand partition table and number of partitions. However in all
> boards this callback returns just static data. So drop this callback and
> make atmel_nand use partition table provided statically via platform_data.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>

Good. So, for the AT91 part of it:

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Best regards,

> ---
>  arch/arm/mach-at91/board-afeb-9260v1.c      |    9 ++-------
>  arch/arm/mach-at91/board-cam60.c            |    9 ++-------
>  arch/arm/mach-at91/board-cap9adk.c          |    9 ++-------
>  arch/arm/mach-at91/board-kb9202.c           |    9 ++-------
>  arch/arm/mach-at91/board-neocore926.c       |    9 ++-------
>  arch/arm/mach-at91/board-qil-a9260.c        |    9 ++-------
>  arch/arm/mach-at91/board-rm9200dk.c         |    9 ++-------
>  arch/arm/mach-at91/board-sam9-l9260.c       |    9 ++-------
>  arch/arm/mach-at91/board-sam9260ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9261ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9263ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9g20ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9m10g45ek.c     |    9 ++-------
>  arch/arm/mach-at91/board-sam9rlek.c         |    9 ++-------
>  arch/arm/mach-at91/board-snapper9260.c      |   10 ++--------
>  arch/arm/mach-at91/board-usb-a9260.c        |    9 ++-------
>  arch/arm/mach-at91/board-usb-a9263.c        |    9 ++-------
>  arch/arm/mach-at91/board-yl-9200.c          |    9 ++-------
>  arch/arm/mach-at91/include/mach/board.h     |    3 ++-
>  arch/avr32/boards/atngw100/setup.c          |    8 ++------
>  arch/avr32/boards/atstk1000/atstk1002.c     |    9 ++-------
>  arch/avr32/mach-at32ap/include/mach/board.h |    3 ++-
>  drivers/mtd/nand/atmel_nand.c               |    7 ++++---
>  23 files changed, 48 insertions(+), 145 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c
> index a4924de..78c77fc 100644
> --- a/arch/arm/mach-at91/board-afeb-9260v1.c
> +++ b/arch/arm/mach-at91/board-afeb-9260v1.c
> @@ -136,19 +136,14 @@ static struct mtd_partition __initdata afeb9260_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(afeb9260_nand_partition);
> -	return afeb9260_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata afeb9260_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
>  	.bus_width_16	= 0,
> +	.parts		= afeb9260_nand_partition,
> +	.num_parts	= ARRAY_SIZE(afeb9260_nand_partition),
>  };
>  
>  
> diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
> index 148fccb..eefae5b 100644
> --- a/arch/arm/mach-at91/board-cam60.c
> +++ b/arch/arm/mach-at91/board-cam60.c
> @@ -138,19 +138,14 @@ static struct mtd_partition __initdata cam60_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(cam60_nand_partition);
> -	return cam60_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata cam60_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	// .det_pin	= ... not there
>  	.rdy_pin	= AT91_PIN_PA9,
>  	.enable_pin	= AT91_PIN_PA7,
> -	.partition_info	= nand_partitions,
> +	.parts		= cam60_nand_partition,
> +	.num_parts	= ARRAY_SIZE(cam60_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata cam60_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c
> index 1904fdf..8aaa6e6 100644
> --- a/arch/arm/mach-at91/board-cap9adk.c
> +++ b/arch/arm/mach-at91/board-cap9adk.c
> @@ -175,19 +175,14 @@ static struct mtd_partition __initdata cap9adk_nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(cap9adk_nand_partitions);
> -	return cap9adk_nand_partitions;
> -}
> -
>  static struct atmel_nand_data __initdata cap9adk_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  //	.rdy_pin	= ... not connected
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= cap9adk_nand_partitions,
> +	.num_parts	= ARRAY_SIZE(cap9adk_nand_partitions),
>  };
>  
>  static struct sam9_smc_config __initdata cap9adk_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
> index a813a74..0cac9d3 100644
> --- a/arch/arm/mach-at91/board-kb9202.c
> +++ b/arch/arm/mach-at91/board-kb9202.c
> @@ -102,19 +102,14 @@ static struct mtd_partition __initdata kb9202_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(kb9202_nand_partition);
> -	return kb9202_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata kb9202_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  	// .det_pin	= ... not there
>  	.rdy_pin	= AT91_PIN_PC29,
>  	.enable_pin	= AT91_PIN_PC28,
> -	.partition_info	= nand_partitions,
> +	.parts		= kb9202_nand_partition,
> +	.num_parts	= ARRAY_SIZE(kb9202_nand_partition),
>  };
>  
>  static void __init kb9202_board_init(void)
> diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
> index 961e805..a63a4c9 100644
> --- a/arch/arm/mach-at91/board-neocore926.c
> +++ b/arch/arm/mach-at91/board-neocore926.c
> @@ -188,19 +188,14 @@ static struct mtd_partition __initdata neocore926_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(neocore926_nand_partition);
> -	return neocore926_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata neocore926_nand_data = {
>  	.ale			= 21,
>  	.cle			= 22,
>  	.rdy_pin		= AT91_PIN_PB19,
>  	.rdy_pin_active_low	= 1,
>  	.enable_pin		= AT91_PIN_PD15,
> -	.partition_info		= nand_partitions,
> +	.parts			= neocore926_nand_partition,
> +	.num_parts		= ARRAY_SIZE(neocore926_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata neocore926_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c
> index d1a6001..86c163f 100644
> --- a/arch/arm/mach-at91/board-qil-a9260.c
> +++ b/arch/arm/mach-at91/board-qil-a9260.c
> @@ -136,19 +136,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c
> index aef9627..7c9af30 100644
> --- a/arch/arm/mach-at91/board-rm9200dk.c
> +++ b/arch/arm/mach-at91/board-rm9200dk.c
> @@ -143,19 +143,14 @@ static struct mtd_partition __initdata dk_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(dk_nand_partition);
> -	return dk_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata dk_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  	.det_pin	= AT91_PIN_PB1,
>  	.rdy_pin	= AT91_PIN_PC2,
>  	// .enable_pin	= ... not there
> -	.partition_info	= nand_partitions,
> +	.parts		= dk_nand_partition,
> +	.num_parts	= ARRAY_SIZE(dk_nand_partition),
>  };
>  
>  #define DK_FLASH_BASE	AT91_CHIPSELECT_0
> diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
> index aaf1bf0..3646c2b 100644
> --- a/arch/arm/mach-at91/board-sam9-l9260.c
> +++ b/arch/arm/mach-at91/board-sam9-l9260.c
> @@ -137,19 +137,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c
> index d600dc1..d6d9b21 100644
> --- a/arch/arm/mach-at91/board-sam9260ek.c
> +++ b/arch/arm/mach-at91/board-sam9260ek.c
> @@ -179,19 +179,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index f897f84..b4a3e18 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -185,19 +185,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC15,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index 605b26f..4e6d586 100644
> --- a/arch/arm/mach-at91/board-sam9263ek.c
> +++ b/arch/arm/mach-at91/board-sam9263ek.c
> @@ -186,19 +186,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PA22,
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
> index 7624cf0..b0488b1 100644
> --- a/arch/arm/mach-at91/board-sam9g20ek.c
> +++ b/arch/arm/mach-at91/board-sam9g20ek.c
> @@ -163,19 +163,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  /* det_pin is not connected */
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index 063c95d..0bb3468 100644
> --- a/arch/arm/mach-at91/board-sam9m10g45ek.c
> +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
> @@ -143,19 +143,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  /* det_pin is not connected */
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC8,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index effb399..7aee8ab 100644
> --- a/arch/arm/mach-at91/board-sam9rlek.c
> +++ b/arch/arm/mach-at91/board-sam9rlek.c
> @@ -94,19 +94,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PD17,
>  	.enable_pin	= AT91_PIN_PB6,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c
> index 3eb0a11..a481451 100644
> --- a/arch/arm/mach-at91/board-snapper9260.c
> +++ b/arch/arm/mach-at91/board-snapper9260.c
> @@ -102,18 +102,12 @@ static struct mtd_partition __initdata snapper9260_nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init
> -snapper9260_nand_partition_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(snapper9260_nand_partitions);
> -	return snapper9260_nand_partitions;
> -}
> -
>  static struct atmel_nand_data __initdata snapper9260_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
> -	.partition_info	= snapper9260_nand_partition_info,
> +	.parts		= snapper9260_nand_partitions,
> +	.num_parts	= ARRAY_SIZE(snapper9260_nand_partitions),
>  	.bus_width_16	= 0,
>  };
>  
> diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
> index 0e784e6..43f40ef 100644
> --- a/arch/arm/mach-at91/board-usb-a9260.c
> +++ b/arch/arm/mach-at91/board-usb-a9260.c
> @@ -110,19 +110,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a9263.c
> index cf626dd..288d764 100644
> --- a/arch/arm/mach-at91/board-usb-a9263.c
> +++ b/arch/arm/mach-at91/board-usb-a9263.c
> @@ -123,19 +123,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PA22,
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c
> index c208cc3..9ebc1ed 100644
> --- a/arch/arm/mach-at91/board-yl-9200.c
> +++ b/arch/arm/mach-at91/board-yl-9200.c
> @@ -178,19 +178,14 @@ static struct mtd_partition __initdata yl9200_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(yl9200_nand_partition);
> -	return yl9200_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata yl9200_nand_data = {
>  	.ale		= 6,
>  	.cle		= 7,
>  	// .det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC14,	/* R/!B (Sheet10) */
>  	.enable_pin	= AT91_PIN_PC15,	/* !CE  (Sheet10) */
> -	.partition_info	= nand_partitions,
> +	.parts		= yl9200_nand_partition,
> +	.num_parts	= ARRAY_SIZE(yl9200_nand_partition),
>  };
>  
>  /*
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..6643531 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -112,7 +112,8 @@ struct atmel_nand_data {
>  	u8		ale;		/* address line number connected to ALE */
>  	u8		cle;		/* address line number connected to CLE */
>  	u8		bus_width_16;	/* buswidth is 16 bit */
> -	struct mtd_partition* (*partition_info)(int, int*);
> +	struct mtd_partition *parts;
> +	unsigned int	num_parts;
>  };
>  extern void __init at91_add_device_nand(struct atmel_nand_data *data);
>  
> diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
> index fafed4c..1f17bde 100644
> --- a/arch/avr32/boards/atngw100/setup.c
> +++ b/arch/avr32/boards/atngw100/setup.c
> @@ -90,11 +90,6 @@ static struct mtd_partition nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition *nand_part_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(nand_partitions);
> -	return nand_partitions;
> -}
>  
>  static struct atmel_nand_data atngw100mkii_nand_data __initdata = {
>  	.cle		= 21,
> @@ -102,7 +97,8 @@ static struct atmel_nand_data atngw100mkii_nand_data __initdata = {
>  	.rdy_pin	= GPIO_PIN_PB(28),
>  	.enable_pin	= GPIO_PIN_PE(23),
>  	.bus_width_16	= true,
> -	.partition_info	= nand_part_info,
> +	.parts		= nand_partitions,
> +	.num_parts	= ARRAY_SIZE(nand_partitions),
>  };
>  #endif
>  
> diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
> index 6ce30fb..4643ff5 100644
> --- a/arch/avr32/boards/atstk1000/atstk1002.c
> +++ b/arch/avr32/boards/atstk1000/atstk1002.c
> @@ -90,18 +90,13 @@ static struct mtd_partition nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition *nand_part_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(nand_partitions);
> -	return nand_partitions;
> -}
> -
>  static struct atmel_nand_data atstk1006_nand_data __initdata = {
>  	.cle		= 21,
>  	.ale		= 22,
>  	.rdy_pin	= GPIO_PIN_PB(30),
>  	.enable_pin	= GPIO_PIN_PB(29),
> -	.partition_info	= nand_part_info,
> +	.parts		= nand_partitions,
> +	.num_parts	= ARRAY_SIZE(num_partitions),
>  };
>  #endif
>  
> diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h
> index 679458d..5d7ffca 100644
> --- a/arch/avr32/mach-at32ap/include/mach/board.h
> +++ b/arch/avr32/mach-at32ap/include/mach/board.h
> @@ -128,7 +128,8 @@ struct atmel_nand_data {
>  	u8	ale;		/* address line number connected to ALE */
>  	u8	cle;		/* address line number connected to CLE */
>  	u8	bus_width_16;	/* buswidth is 16 bit */
> -	struct mtd_partition *(*partition_info)(int size, int *num_partitions);
> +	struct mtd_partition *parts;
> +	unsigned int	num_parts;
>  };
>  struct platform_device *
>  at32_add_device_nand(unsigned int id, struct atmel_nand_data *data);
> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> index b300705..10605ed 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -659,9 +659,10 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
>  	num_partitions = parse_mtd_partitions(mtd, part_probes,
>  					      &partitions, 0);
>  #endif
> -	if (num_partitions <= 0 && host->board->partition_info)
> -		partitions = host->board->partition_info(mtd->size,
> -							 &num_partitions);
> +	if (num_partitions <= 0 && host->board->parts) {
> +		partitions = host->board->parts;
> +		num_partitions = host->board->num_parts;
> +	}
>  
>  	if ((!partitions) || (num_partitions == 0)) {
>  		printk(KERN_ERR "atmel_nand: No partitions defined, or unsupported device.\n");


-- 
Nicolas Ferre

WARNING: multiple messages have this Message-ID (diff)
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ATMEL, AVR32: inline nand partition table access
Date: Wed, 01 Jun 2011 15:31:59 +0200	[thread overview]
Message-ID: <4DE63F4F.60108@atmel.com> (raw)
In-Reply-To: <1306676962-22308-1-git-send-email-dbaryshkov@gmail.com>

Le 29/05/2011 15:49, Dmitry Eremin-Solenikov :
> Currently atmel_nand driver used by AT91 and AVR32 calls a special callback
> which return nand partition table and number of partitions. However in all
> boards this callback returns just static data. So drop this callback and
> make atmel_nand use partition table provided statically via platform_data.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>

Good. So, for the AT91 part of it:

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Best regards,

> ---
>  arch/arm/mach-at91/board-afeb-9260v1.c      |    9 ++-------
>  arch/arm/mach-at91/board-cam60.c            |    9 ++-------
>  arch/arm/mach-at91/board-cap9adk.c          |    9 ++-------
>  arch/arm/mach-at91/board-kb9202.c           |    9 ++-------
>  arch/arm/mach-at91/board-neocore926.c       |    9 ++-------
>  arch/arm/mach-at91/board-qil-a9260.c        |    9 ++-------
>  arch/arm/mach-at91/board-rm9200dk.c         |    9 ++-------
>  arch/arm/mach-at91/board-sam9-l9260.c       |    9 ++-------
>  arch/arm/mach-at91/board-sam9260ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9261ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9263ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9g20ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9m10g45ek.c     |    9 ++-------
>  arch/arm/mach-at91/board-sam9rlek.c         |    9 ++-------
>  arch/arm/mach-at91/board-snapper9260.c      |   10 ++--------
>  arch/arm/mach-at91/board-usb-a9260.c        |    9 ++-------
>  arch/arm/mach-at91/board-usb-a9263.c        |    9 ++-------
>  arch/arm/mach-at91/board-yl-9200.c          |    9 ++-------
>  arch/arm/mach-at91/include/mach/board.h     |    3 ++-
>  arch/avr32/boards/atngw100/setup.c          |    8 ++------
>  arch/avr32/boards/atstk1000/atstk1002.c     |    9 ++-------
>  arch/avr32/mach-at32ap/include/mach/board.h |    3 ++-
>  drivers/mtd/nand/atmel_nand.c               |    7 ++++---
>  23 files changed, 48 insertions(+), 145 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c
> index a4924de..78c77fc 100644
> --- a/arch/arm/mach-at91/board-afeb-9260v1.c
> +++ b/arch/arm/mach-at91/board-afeb-9260v1.c
> @@ -136,19 +136,14 @@ static struct mtd_partition __initdata afeb9260_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(afeb9260_nand_partition);
> -	return afeb9260_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata afeb9260_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
>  	.bus_width_16	= 0,
> +	.parts		= afeb9260_nand_partition,
> +	.num_parts	= ARRAY_SIZE(afeb9260_nand_partition),
>  };
>  
>  
> diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
> index 148fccb..eefae5b 100644
> --- a/arch/arm/mach-at91/board-cam60.c
> +++ b/arch/arm/mach-at91/board-cam60.c
> @@ -138,19 +138,14 @@ static struct mtd_partition __initdata cam60_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(cam60_nand_partition);
> -	return cam60_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata cam60_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	// .det_pin	= ... not there
>  	.rdy_pin	= AT91_PIN_PA9,
>  	.enable_pin	= AT91_PIN_PA7,
> -	.partition_info	= nand_partitions,
> +	.parts		= cam60_nand_partition,
> +	.num_parts	= ARRAY_SIZE(cam60_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata cam60_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c
> index 1904fdf..8aaa6e6 100644
> --- a/arch/arm/mach-at91/board-cap9adk.c
> +++ b/arch/arm/mach-at91/board-cap9adk.c
> @@ -175,19 +175,14 @@ static struct mtd_partition __initdata cap9adk_nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(cap9adk_nand_partitions);
> -	return cap9adk_nand_partitions;
> -}
> -
>  static struct atmel_nand_data __initdata cap9adk_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  //	.rdy_pin	= ... not connected
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= cap9adk_nand_partitions,
> +	.num_parts	= ARRAY_SIZE(cap9adk_nand_partitions),
>  };
>  
>  static struct sam9_smc_config __initdata cap9adk_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
> index a813a74..0cac9d3 100644
> --- a/arch/arm/mach-at91/board-kb9202.c
> +++ b/arch/arm/mach-at91/board-kb9202.c
> @@ -102,19 +102,14 @@ static struct mtd_partition __initdata kb9202_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(kb9202_nand_partition);
> -	return kb9202_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata kb9202_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  	// .det_pin	= ... not there
>  	.rdy_pin	= AT91_PIN_PC29,
>  	.enable_pin	= AT91_PIN_PC28,
> -	.partition_info	= nand_partitions,
> +	.parts		= kb9202_nand_partition,
> +	.num_parts	= ARRAY_SIZE(kb9202_nand_partition),
>  };
>  
>  static void __init kb9202_board_init(void)
> diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
> index 961e805..a63a4c9 100644
> --- a/arch/arm/mach-at91/board-neocore926.c
> +++ b/arch/arm/mach-at91/board-neocore926.c
> @@ -188,19 +188,14 @@ static struct mtd_partition __initdata neocore926_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(neocore926_nand_partition);
> -	return neocore926_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata neocore926_nand_data = {
>  	.ale			= 21,
>  	.cle			= 22,
>  	.rdy_pin		= AT91_PIN_PB19,
>  	.rdy_pin_active_low	= 1,
>  	.enable_pin		= AT91_PIN_PD15,
> -	.partition_info		= nand_partitions,
> +	.parts			= neocore926_nand_partition,
> +	.num_parts		= ARRAY_SIZE(neocore926_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata neocore926_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c
> index d1a6001..86c163f 100644
> --- a/arch/arm/mach-at91/board-qil-a9260.c
> +++ b/arch/arm/mach-at91/board-qil-a9260.c
> @@ -136,19 +136,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c
> index aef9627..7c9af30 100644
> --- a/arch/arm/mach-at91/board-rm9200dk.c
> +++ b/arch/arm/mach-at91/board-rm9200dk.c
> @@ -143,19 +143,14 @@ static struct mtd_partition __initdata dk_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(dk_nand_partition);
> -	return dk_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata dk_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  	.det_pin	= AT91_PIN_PB1,
>  	.rdy_pin	= AT91_PIN_PC2,
>  	// .enable_pin	= ... not there
> -	.partition_info	= nand_partitions,
> +	.parts		= dk_nand_partition,
> +	.num_parts	= ARRAY_SIZE(dk_nand_partition),
>  };
>  
>  #define DK_FLASH_BASE	AT91_CHIPSELECT_0
> diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
> index aaf1bf0..3646c2b 100644
> --- a/arch/arm/mach-at91/board-sam9-l9260.c
> +++ b/arch/arm/mach-at91/board-sam9-l9260.c
> @@ -137,19 +137,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c
> index d600dc1..d6d9b21 100644
> --- a/arch/arm/mach-at91/board-sam9260ek.c
> +++ b/arch/arm/mach-at91/board-sam9260ek.c
> @@ -179,19 +179,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index f897f84..b4a3e18 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -185,19 +185,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC15,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index 605b26f..4e6d586 100644
> --- a/arch/arm/mach-at91/board-sam9263ek.c
> +++ b/arch/arm/mach-at91/board-sam9263ek.c
> @@ -186,19 +186,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PA22,
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
> index 7624cf0..b0488b1 100644
> --- a/arch/arm/mach-at91/board-sam9g20ek.c
> +++ b/arch/arm/mach-at91/board-sam9g20ek.c
> @@ -163,19 +163,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  /* det_pin is not connected */
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index 063c95d..0bb3468 100644
> --- a/arch/arm/mach-at91/board-sam9m10g45ek.c
> +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
> @@ -143,19 +143,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  /* det_pin is not connected */
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC8,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index effb399..7aee8ab 100644
> --- a/arch/arm/mach-at91/board-sam9rlek.c
> +++ b/arch/arm/mach-at91/board-sam9rlek.c
> @@ -94,19 +94,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PD17,
>  	.enable_pin	= AT91_PIN_PB6,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c
> index 3eb0a11..a481451 100644
> --- a/arch/arm/mach-at91/board-snapper9260.c
> +++ b/arch/arm/mach-at91/board-snapper9260.c
> @@ -102,18 +102,12 @@ static struct mtd_partition __initdata snapper9260_nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init
> -snapper9260_nand_partition_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(snapper9260_nand_partitions);
> -	return snapper9260_nand_partitions;
> -}
> -
>  static struct atmel_nand_data __initdata snapper9260_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
> -	.partition_info	= snapper9260_nand_partition_info,
> +	.parts		= snapper9260_nand_partitions,
> +	.num_parts	= ARRAY_SIZE(snapper9260_nand_partitions),
>  	.bus_width_16	= 0,
>  };
>  
> diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
> index 0e784e6..43f40ef 100644
> --- a/arch/arm/mach-at91/board-usb-a9260.c
> +++ b/arch/arm/mach-at91/board-usb-a9260.c
> @@ -110,19 +110,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a9263.c
> index cf626dd..288d764 100644
> --- a/arch/arm/mach-at91/board-usb-a9263.c
> +++ b/arch/arm/mach-at91/board-usb-a9263.c
> @@ -123,19 +123,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PA22,
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c
> index c208cc3..9ebc1ed 100644
> --- a/arch/arm/mach-at91/board-yl-9200.c
> +++ b/arch/arm/mach-at91/board-yl-9200.c
> @@ -178,19 +178,14 @@ static struct mtd_partition __initdata yl9200_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(yl9200_nand_partition);
> -	return yl9200_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata yl9200_nand_data = {
>  	.ale		= 6,
>  	.cle		= 7,
>  	// .det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC14,	/* R/!B (Sheet10) */
>  	.enable_pin	= AT91_PIN_PC15,	/* !CE  (Sheet10) */
> -	.partition_info	= nand_partitions,
> +	.parts		= yl9200_nand_partition,
> +	.num_parts	= ARRAY_SIZE(yl9200_nand_partition),
>  };
>  
>  /*
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..6643531 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -112,7 +112,8 @@ struct atmel_nand_data {
>  	u8		ale;		/* address line number connected to ALE */
>  	u8		cle;		/* address line number connected to CLE */
>  	u8		bus_width_16;	/* buswidth is 16 bit */
> -	struct mtd_partition* (*partition_info)(int, int*);
> +	struct mtd_partition *parts;
> +	unsigned int	num_parts;
>  };
>  extern void __init at91_add_device_nand(struct atmel_nand_data *data);
>  
> diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
> index fafed4c..1f17bde 100644
> --- a/arch/avr32/boards/atngw100/setup.c
> +++ b/arch/avr32/boards/atngw100/setup.c
> @@ -90,11 +90,6 @@ static struct mtd_partition nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition *nand_part_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(nand_partitions);
> -	return nand_partitions;
> -}
>  
>  static struct atmel_nand_data atngw100mkii_nand_data __initdata = {
>  	.cle		= 21,
> @@ -102,7 +97,8 @@ static struct atmel_nand_data atngw100mkii_nand_data __initdata = {
>  	.rdy_pin	= GPIO_PIN_PB(28),
>  	.enable_pin	= GPIO_PIN_PE(23),
>  	.bus_width_16	= true,
> -	.partition_info	= nand_part_info,
> +	.parts		= nand_partitions,
> +	.num_parts	= ARRAY_SIZE(nand_partitions),
>  };
>  #endif
>  
> diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
> index 6ce30fb..4643ff5 100644
> --- a/arch/avr32/boards/atstk1000/atstk1002.c
> +++ b/arch/avr32/boards/atstk1000/atstk1002.c
> @@ -90,18 +90,13 @@ static struct mtd_partition nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition *nand_part_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(nand_partitions);
> -	return nand_partitions;
> -}
> -
>  static struct atmel_nand_data atstk1006_nand_data __initdata = {
>  	.cle		= 21,
>  	.ale		= 22,
>  	.rdy_pin	= GPIO_PIN_PB(30),
>  	.enable_pin	= GPIO_PIN_PB(29),
> -	.partition_info	= nand_part_info,
> +	.parts		= nand_partitions,
> +	.num_parts	= ARRAY_SIZE(num_partitions),
>  };
>  #endif
>  
> diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h
> index 679458d..5d7ffca 100644
> --- a/arch/avr32/mach-at32ap/include/mach/board.h
> +++ b/arch/avr32/mach-at32ap/include/mach/board.h
> @@ -128,7 +128,8 @@ struct atmel_nand_data {
>  	u8	ale;		/* address line number connected to ALE */
>  	u8	cle;		/* address line number connected to CLE */
>  	u8	bus_width_16;	/* buswidth is 16 bit */
> -	struct mtd_partition *(*partition_info)(int size, int *num_partitions);
> +	struct mtd_partition *parts;
> +	unsigned int	num_parts;
>  };
>  struct platform_device *
>  at32_add_device_nand(unsigned int id, struct atmel_nand_data *data);
> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> index b300705..10605ed 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -659,9 +659,10 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
>  	num_partitions = parse_mtd_partitions(mtd, part_probes,
>  					      &partitions, 0);
>  #endif
> -	if (num_partitions <= 0 && host->board->partition_info)
> -		partitions = host->board->partition_info(mtd->size,
> -							 &num_partitions);
> +	if (num_partitions <= 0 && host->board->parts) {
> +		partitions = host->board->parts;
> +		num_partitions = host->board->num_parts;
> +	}
>  
>  	if ((!partitions) || (num_partitions == 0)) {
>  		printk(KERN_ERR "atmel_nand: No partitions defined, or unsupported device.\n");


-- 
Nicolas Ferre

WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
	Andrew Victor <linux@maxim.org.za>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>,
	David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH] ATMEL, AVR32: inline nand partition table access
Date: Wed, 01 Jun 2011 15:31:59 +0200	[thread overview]
Message-ID: <4DE63F4F.60108@atmel.com> (raw)
In-Reply-To: <1306676962-22308-1-git-send-email-dbaryshkov@gmail.com>

Le 29/05/2011 15:49, Dmitry Eremin-Solenikov :
> Currently atmel_nand driver used by AT91 and AVR32 calls a special callback
> which return nand partition table and number of partitions. However in all
> boards this callback returns just static data. So drop this callback and
> make atmel_nand use partition table provided statically via platform_data.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>

Good. So, for the AT91 part of it:

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Best regards,

> ---
>  arch/arm/mach-at91/board-afeb-9260v1.c      |    9 ++-------
>  arch/arm/mach-at91/board-cam60.c            |    9 ++-------
>  arch/arm/mach-at91/board-cap9adk.c          |    9 ++-------
>  arch/arm/mach-at91/board-kb9202.c           |    9 ++-------
>  arch/arm/mach-at91/board-neocore926.c       |    9 ++-------
>  arch/arm/mach-at91/board-qil-a9260.c        |    9 ++-------
>  arch/arm/mach-at91/board-rm9200dk.c         |    9 ++-------
>  arch/arm/mach-at91/board-sam9-l9260.c       |    9 ++-------
>  arch/arm/mach-at91/board-sam9260ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9261ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9263ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9g20ek.c        |    9 ++-------
>  arch/arm/mach-at91/board-sam9m10g45ek.c     |    9 ++-------
>  arch/arm/mach-at91/board-sam9rlek.c         |    9 ++-------
>  arch/arm/mach-at91/board-snapper9260.c      |   10 ++--------
>  arch/arm/mach-at91/board-usb-a9260.c        |    9 ++-------
>  arch/arm/mach-at91/board-usb-a9263.c        |    9 ++-------
>  arch/arm/mach-at91/board-yl-9200.c          |    9 ++-------
>  arch/arm/mach-at91/include/mach/board.h     |    3 ++-
>  arch/avr32/boards/atngw100/setup.c          |    8 ++------
>  arch/avr32/boards/atstk1000/atstk1002.c     |    9 ++-------
>  arch/avr32/mach-at32ap/include/mach/board.h |    3 ++-
>  drivers/mtd/nand/atmel_nand.c               |    7 ++++---
>  23 files changed, 48 insertions(+), 145 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c
> index a4924de..78c77fc 100644
> --- a/arch/arm/mach-at91/board-afeb-9260v1.c
> +++ b/arch/arm/mach-at91/board-afeb-9260v1.c
> @@ -136,19 +136,14 @@ static struct mtd_partition __initdata afeb9260_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(afeb9260_nand_partition);
> -	return afeb9260_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata afeb9260_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
>  	.bus_width_16	= 0,
> +	.parts		= afeb9260_nand_partition,
> +	.num_parts	= ARRAY_SIZE(afeb9260_nand_partition),
>  };
>  
>  
> diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
> index 148fccb..eefae5b 100644
> --- a/arch/arm/mach-at91/board-cam60.c
> +++ b/arch/arm/mach-at91/board-cam60.c
> @@ -138,19 +138,14 @@ static struct mtd_partition __initdata cam60_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(cam60_nand_partition);
> -	return cam60_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata cam60_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	// .det_pin	= ... not there
>  	.rdy_pin	= AT91_PIN_PA9,
>  	.enable_pin	= AT91_PIN_PA7,
> -	.partition_info	= nand_partitions,
> +	.parts		= cam60_nand_partition,
> +	.num_parts	= ARRAY_SIZE(cam60_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata cam60_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c
> index 1904fdf..8aaa6e6 100644
> --- a/arch/arm/mach-at91/board-cap9adk.c
> +++ b/arch/arm/mach-at91/board-cap9adk.c
> @@ -175,19 +175,14 @@ static struct mtd_partition __initdata cap9adk_nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(cap9adk_nand_partitions);
> -	return cap9adk_nand_partitions;
> -}
> -
>  static struct atmel_nand_data __initdata cap9adk_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  //	.rdy_pin	= ... not connected
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= cap9adk_nand_partitions,
> +	.num_parts	= ARRAY_SIZE(cap9adk_nand_partitions),
>  };
>  
>  static struct sam9_smc_config __initdata cap9adk_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
> index a813a74..0cac9d3 100644
> --- a/arch/arm/mach-at91/board-kb9202.c
> +++ b/arch/arm/mach-at91/board-kb9202.c
> @@ -102,19 +102,14 @@ static struct mtd_partition __initdata kb9202_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(kb9202_nand_partition);
> -	return kb9202_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata kb9202_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  	// .det_pin	= ... not there
>  	.rdy_pin	= AT91_PIN_PC29,
>  	.enable_pin	= AT91_PIN_PC28,
> -	.partition_info	= nand_partitions,
> +	.parts		= kb9202_nand_partition,
> +	.num_parts	= ARRAY_SIZE(kb9202_nand_partition),
>  };
>  
>  static void __init kb9202_board_init(void)
> diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
> index 961e805..a63a4c9 100644
> --- a/arch/arm/mach-at91/board-neocore926.c
> +++ b/arch/arm/mach-at91/board-neocore926.c
> @@ -188,19 +188,14 @@ static struct mtd_partition __initdata neocore926_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(neocore926_nand_partition);
> -	return neocore926_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata neocore926_nand_data = {
>  	.ale			= 21,
>  	.cle			= 22,
>  	.rdy_pin		= AT91_PIN_PB19,
>  	.rdy_pin_active_low	= 1,
>  	.enable_pin		= AT91_PIN_PD15,
> -	.partition_info		= nand_partitions,
> +	.parts			= neocore926_nand_partition,
> +	.num_parts		= ARRAY_SIZE(neocore926_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata neocore926_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c
> index d1a6001..86c163f 100644
> --- a/arch/arm/mach-at91/board-qil-a9260.c
> +++ b/arch/arm/mach-at91/board-qil-a9260.c
> @@ -136,19 +136,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c
> index aef9627..7c9af30 100644
> --- a/arch/arm/mach-at91/board-rm9200dk.c
> +++ b/arch/arm/mach-at91/board-rm9200dk.c
> @@ -143,19 +143,14 @@ static struct mtd_partition __initdata dk_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(dk_nand_partition);
> -	return dk_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata dk_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  	.det_pin	= AT91_PIN_PB1,
>  	.rdy_pin	= AT91_PIN_PC2,
>  	// .enable_pin	= ... not there
> -	.partition_info	= nand_partitions,
> +	.parts		= dk_nand_partition,
> +	.num_parts	= ARRAY_SIZE(dk_nand_partition),
>  };
>  
>  #define DK_FLASH_BASE	AT91_CHIPSELECT_0
> diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
> index aaf1bf0..3646c2b 100644
> --- a/arch/arm/mach-at91/board-sam9-l9260.c
> +++ b/arch/arm/mach-at91/board-sam9-l9260.c
> @@ -137,19 +137,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c
> index d600dc1..d6d9b21 100644
> --- a/arch/arm/mach-at91/board-sam9260ek.c
> +++ b/arch/arm/mach-at91/board-sam9260ek.c
> @@ -179,19 +179,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index f897f84..b4a3e18 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -185,19 +185,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 22,
>  	.cle		= 21,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC15,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index 605b26f..4e6d586 100644
> --- a/arch/arm/mach-at91/board-sam9263ek.c
> +++ b/arch/arm/mach-at91/board-sam9263ek.c
> @@ -186,19 +186,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PA22,
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
> index 7624cf0..b0488b1 100644
> --- a/arch/arm/mach-at91/board-sam9g20ek.c
> +++ b/arch/arm/mach-at91/board-sam9g20ek.c
> @@ -163,19 +163,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  /* det_pin is not connected */
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index 063c95d..0bb3468 100644
> --- a/arch/arm/mach-at91/board-sam9m10g45ek.c
> +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
> @@ -143,19 +143,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  /* det_pin is not connected */
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC8,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index effb399..7aee8ab 100644
> --- a/arch/arm/mach-at91/board-sam9rlek.c
> +++ b/arch/arm/mach-at91/board-sam9rlek.c
> @@ -94,19 +94,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PD17,
>  	.enable_pin	= AT91_PIN_PB6,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c
> index 3eb0a11..a481451 100644
> --- a/arch/arm/mach-at91/board-snapper9260.c
> +++ b/arch/arm/mach-at91/board-snapper9260.c
> @@ -102,18 +102,12 @@ static struct mtd_partition __initdata snapper9260_nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition * __init
> -snapper9260_nand_partition_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(snapper9260_nand_partitions);
> -	return snapper9260_nand_partitions;
> -}
> -
>  static struct atmel_nand_data __initdata snapper9260_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  	.rdy_pin	= AT91_PIN_PC13,
> -	.partition_info	= snapper9260_nand_partition_info,
> +	.parts		= snapper9260_nand_partitions,
> +	.num_parts	= ARRAY_SIZE(snapper9260_nand_partitions),
>  	.bus_width_16	= 0,
>  };
>  
> diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
> index 0e784e6..43f40ef 100644
> --- a/arch/arm/mach-at91/board-usb-a9260.c
> +++ b/arch/arm/mach-at91/board-usb-a9260.c
> @@ -110,19 +110,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC13,
>  	.enable_pin	= AT91_PIN_PC14,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a9263.c
> index cf626dd..288d764 100644
> --- a/arch/arm/mach-at91/board-usb-a9263.c
> +++ b/arch/arm/mach-at91/board-usb-a9263.c
> @@ -123,19 +123,14 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(ek_nand_partition);
> -	return ek_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata ek_nand_data = {
>  	.ale		= 21,
>  	.cle		= 22,
>  //	.det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PA22,
>  	.enable_pin	= AT91_PIN_PD15,
> -	.partition_info	= nand_partitions,
> +	.parts		= ek_nand_partition,
> +	.num_parts	= ARRAY_SIZE(ek_nand_partition),
>  };
>  
>  static struct sam9_smc_config __initdata ek_nand_smc_config = {
> diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c
> index c208cc3..9ebc1ed 100644
> --- a/arch/arm/mach-at91/board-yl-9200.c
> +++ b/arch/arm/mach-at91/board-yl-9200.c
> @@ -178,19 +178,14 @@ static struct mtd_partition __initdata yl9200_nand_partition[] = {
>  	}
>  };
>  
> -static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(yl9200_nand_partition);
> -	return yl9200_nand_partition;
> -}
> -
>  static struct atmel_nand_data __initdata yl9200_nand_data = {
>  	.ale		= 6,
>  	.cle		= 7,
>  	// .det_pin	= ... not connected
>  	.rdy_pin	= AT91_PIN_PC14,	/* R/!B (Sheet10) */
>  	.enable_pin	= AT91_PIN_PC15,	/* !CE  (Sheet10) */
> -	.partition_info	= nand_partitions,
> +	.parts		= yl9200_nand_partition,
> +	.num_parts	= ARRAY_SIZE(yl9200_nand_partition),
>  };
>  
>  /*
> diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
> index ed544a0..6643531 100644
> --- a/arch/arm/mach-at91/include/mach/board.h
> +++ b/arch/arm/mach-at91/include/mach/board.h
> @@ -112,7 +112,8 @@ struct atmel_nand_data {
>  	u8		ale;		/* address line number connected to ALE */
>  	u8		cle;		/* address line number connected to CLE */
>  	u8		bus_width_16;	/* buswidth is 16 bit */
> -	struct mtd_partition* (*partition_info)(int, int*);
> +	struct mtd_partition *parts;
> +	unsigned int	num_parts;
>  };
>  extern void __init at91_add_device_nand(struct atmel_nand_data *data);
>  
> diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
> index fafed4c..1f17bde 100644
> --- a/arch/avr32/boards/atngw100/setup.c
> +++ b/arch/avr32/boards/atngw100/setup.c
> @@ -90,11 +90,6 @@ static struct mtd_partition nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition *nand_part_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(nand_partitions);
> -	return nand_partitions;
> -}
>  
>  static struct atmel_nand_data atngw100mkii_nand_data __initdata = {
>  	.cle		= 21,
> @@ -102,7 +97,8 @@ static struct atmel_nand_data atngw100mkii_nand_data __initdata = {
>  	.rdy_pin	= GPIO_PIN_PB(28),
>  	.enable_pin	= GPIO_PIN_PE(23),
>  	.bus_width_16	= true,
> -	.partition_info	= nand_part_info,
> +	.parts		= nand_partitions,
> +	.num_parts	= ARRAY_SIZE(nand_partitions),
>  };
>  #endif
>  
> diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
> index 6ce30fb..4643ff5 100644
> --- a/arch/avr32/boards/atstk1000/atstk1002.c
> +++ b/arch/avr32/boards/atstk1000/atstk1002.c
> @@ -90,18 +90,13 @@ static struct mtd_partition nand_partitions[] = {
>  	},
>  };
>  
> -static struct mtd_partition *nand_part_info(int size, int *num_partitions)
> -{
> -	*num_partitions = ARRAY_SIZE(nand_partitions);
> -	return nand_partitions;
> -}
> -
>  static struct atmel_nand_data atstk1006_nand_data __initdata = {
>  	.cle		= 21,
>  	.ale		= 22,
>  	.rdy_pin	= GPIO_PIN_PB(30),
>  	.enable_pin	= GPIO_PIN_PB(29),
> -	.partition_info	= nand_part_info,
> +	.parts		= nand_partitions,
> +	.num_parts	= ARRAY_SIZE(num_partitions),
>  };
>  #endif
>  
> diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h
> index 679458d..5d7ffca 100644
> --- a/arch/avr32/mach-at32ap/include/mach/board.h
> +++ b/arch/avr32/mach-at32ap/include/mach/board.h
> @@ -128,7 +128,8 @@ struct atmel_nand_data {
>  	u8	ale;		/* address line number connected to ALE */
>  	u8	cle;		/* address line number connected to CLE */
>  	u8	bus_width_16;	/* buswidth is 16 bit */
> -	struct mtd_partition *(*partition_info)(int size, int *num_partitions);
> +	struct mtd_partition *parts;
> +	unsigned int	num_parts;
>  };
>  struct platform_device *
>  at32_add_device_nand(unsigned int id, struct atmel_nand_data *data);
> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
> index b300705..10605ed 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -659,9 +659,10 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
>  	num_partitions = parse_mtd_partitions(mtd, part_probes,
>  					      &partitions, 0);
>  #endif
> -	if (num_partitions <= 0 && host->board->partition_info)
> -		partitions = host->board->partition_info(mtd->size,
> -							 &num_partitions);
> +	if (num_partitions <= 0 && host->board->parts) {
> +		partitions = host->board->parts;
> +		num_partitions = host->board->num_parts;
> +	}
>  
>  	if ((!partitions) || (num_partitions == 0)) {
>  		printk(KERN_ERR "atmel_nand: No partitions defined, or unsupported device.\n");


-- 
Nicolas Ferre


  reply	other threads:[~2011-06-01 13:31 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-29 13:49 [PATCH] ATMEL, AVR32: inline nand partition table access Dmitry Eremin-Solenikov
2011-07-08 17:33 ` Dmitry Eremin-Solenikov
2011-05-29 13:49 ` Dmitry Eremin-Solenikov
2011-06-01 13:31 ` Nicolas Ferre [this message]
2011-06-01 13:31   ` Nicolas Ferre
2011-06-01 13:31   ` Nicolas Ferre
2011-06-01 13:32 ` Hans-Christian Egtvedt
2011-06-01 13:32   ` Hans-Christian Egtvedt
2011-06-01 13:32   ` Hans-Christian Egtvedt
2011-06-01 14:54   ` Dmitry Eremin-Solenikov
2011-06-01 14:54     ` Dmitry Eremin-Solenikov
2011-06-01 14:54     ` Dmitry Eremin-Solenikov
2011-06-01 15:01     ` Artem Bityutskiy
2011-06-01 15:01       ` Artem Bityutskiy
2011-06-01 15:01       ` Artem Bityutskiy
2011-06-06  5:49     ` Hans-Christian Egtvedt
2011-06-06  5:49       ` Hans-Christian Egtvedt
2011-06-06  5:49       ` Hans-Christian Egtvedt
2011-06-06  8:05     ` Nicolas Ferre
2011-06-06  8:05       ` Nicolas Ferre
2011-06-06  8:05       ` Nicolas Ferre
2011-06-16 13:48       ` Jean-Christophe PLAGNIOL-VILLARD
2011-06-16 13:48         ` Jean-Christophe PLAGNIOL-VILLARD
2011-06-16 13:48         ` Jean-Christophe PLAGNIOL-VILLARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DE63F4F.60108@atmel.com \
    --to=nicolas.ferre@atmel.com \
    --cc=dbaryshkov@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=hans-christian.egtvedt@atmel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux@maxim.org.za \
    --cc=plagnioj@jcrosoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.