[PATCH] mtd: spi-nor: allow NULL as chip name and try to auto detect it

Brian Norris computersforpeace at gmail.com
Mon Dec 1 00:40:23 PST 2014


On Wed, Oct 22, 2014 at 06:05:00PM +0200, Rafał Miłecki wrote:
> This will allow spi-nor users to plainly use JEDEC to detect flash chip.
> 
> Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
> ---
>  drivers/mtd/spi-nor/spi-nor.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index ee777a4..1facaac 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -937,13 +937,21 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode)
>  	if (ret)
>  		return ret;
>  
> -	id = spi_nor_match_id(name);
> +	/* Try to auto-detect if chip name wasn't specified */
> +	if (!name)
> +		id = spi_nor_read_id(nor);
> +	else
> +		id = spi_nor_match_id(name);
>  	if (!id)
>  		return -ENOENT;
>  
>  	info = (void *)id->driver_data;
>  
> -	if (info->jedec_id) {
> +	/*
> +	 * If caller has specified name of flash model that can normally be
> +	 * detected using JEDEC, let's verify it.
> +	 */
> +	if (name && info->jedec_id) {

This part doesn't apply cleanly any more.

>  		const struct spi_device_id *jid;
>  
>  		jid = spi_nor_read_id(nor);

I think this is a good time to consider this question: how do we
*really* want a SPI NOR driver to interact with spi-nor.c, regarding
device detection? I like how this patch removes the string-matching
requirement, so we can just auto-detect by JEDEC RDID alone. But I don't
like how it leaves around the function parameter 'name', which really
we should really be moving to deprecate if possible.

Anyway, I can take a rebased version of this patch. But I'd like to
encourage more thought here for the future. I don't yet have a specific
proposal, so any thoughts are welcome.

Brian



More information about the linux-mtd mailing list