[PATCH] m25p80: add support for a callback to platform code on successful device probe

Sergei Shtylyov sshtylyov at mvista.com
Tue Aug 10 09:41:49 EDT 2010


Hello.

Sudhakar Rajashekhara wrote:

> On some platforms, MTD device can hold MAC address, calibration
> data, serial numbers etc.

> On TI's DA850/OMAP-L138/AM18xx EVM, MAC address is stored on
> the last sector of the SPI flash, which is exported as an MTD
> device.

> This patch adds two new members to the 'flash_platform_data'
> structure, a function handler which will be called after
> add_mtd_device() and an argument to be passed to this function,
> for example: offset to read from.

> Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj at ti.com>
> ---
>  drivers/mtd/devices/m25p80.c |   15 +++++++++++++--
>  include/linux/spi/flash.h    |    2 ++
>  2 files changed, 15 insertions(+), 2 deletions(-)

> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
> index 81e49a9..b832091 100644
> --- a/drivers/mtd/devices/m25p80.c
> +++ b/drivers/mtd/devices/m25p80.c
[...]
> @@ -924,13 +925,23 @@ static int __devinit m25p_probe(struct spi_device *spi)
>  					(long long)(parts[i].size >> 10));
>  			}
>  			flash->partitioned = 1;
> -			return add_mtd_partitions(&flash->mtd, parts, nr_parts);
> +			ret = add_mtd_partitions(&flash->mtd, parts, nr_parts);
> +			if (!ret)
> +				goto out;
> +
> +			return ret;
>  		}
>  	} else if (data && data->nr_parts)
>  		dev_warn(&spi->dev, "ignoring %d default partitions on %s\n",
>  				data->nr_parts, data->name);
>  
> -	return add_mtd_device(&flash->mtd) == 1 ? -ENODEV : 0;
> +	ret = add_mtd_device(&flash->mtd);
> +
> +out:
> +	if (data->setup && !ret)
> +		(data->setup)(&flash->mtd, (void *)data->context);

    Parens not necessary around 'data->setup'.

> diff --git a/include/linux/spi/flash.h b/include/linux/spi/flash.h
> index 3f22932..daa4875 100644
> --- a/include/linux/spi/flash.h
> +++ b/include/linux/spi/flash.h
> @@ -24,6 +24,8 @@ struct flash_platform_data {
>  	unsigned int	nr_parts;
>  
>  	char		*type;
> +	void		(*setup)(struct mtd_info *, void *context);
> +	void		*context;
>  
>  	/* we'll likely add more ... use JEDEC IDs, etc */
>  };

    Hm, is m25p80.c the only SPI flash driver using this structure? I guess 
not -- I'm seeing at least sst25l.c and mtd_dataflash.c...

WBR, Sergei




More information about the linux-mtd mailing list