Re: [PATCH] ATMEL, AVR32: inline nand partition table access

Nicolas Ferre
2011-06-01T13:32:21Z

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