All of lore.kernel.org
 help / color / mirror / Atom feed
From: <Tudor.Ambarus@microchip.com>
To: <alexander.sverdlin@nokia.com>, <marek.vasut@gmail.com>,
	<dwmw2@infradead.org>, <computersforpeace@gmail.com>,
	<boris.brezillon@bootlin.com>, <richard@nod.at>
Cc: <linux-mtd@lists.infradead.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] mtd: spi-nor: fix erase_type array to indicate current map conf
Date: Thu, 22 Nov 2018 16:22:34 +0000	[thread overview]
Message-ID: <1869052d-1be2-243d-0901-afcf34d6e1dd@microchip.com> (raw)
In-Reply-To: <f05c60c9-7b19-29d6-0ad2-b1593da11263@nokia.com>



On 11/22/2018 06:14 PM, Sverdlin, Alexander (Nokia - DE/Ulm) wrote:
> Hello Tudor,
> 
> On 22/11/2018 13:36, Tudor.Ambarus@microchip.com wrote:
>> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>>
>> Bug reported for the out-of-tree S25FS128S flash memory.
>>
>> BFPT table advertises all the erase types supported by all the
>> possible map configurations. Update the erase_type array to indicate
>> which erase types are applicable to the current map configuration.
>>
>> Backward compatibility test done on sst26vf064b.
>>
>> Fixes: b038e8e3be72 ("mtd: spi-nor: parse SFDP Sector Map Parameter Table")
>> Reported-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
>> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
>> ---
>>  drivers/mtd/spi-nor/spi-nor.c | 29 ++++++++++++++++++++++++++++-
>>  1 file changed, 28 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
>> index 93c9bc8931fc..a71adcd6ddfa 100644
>> --- a/drivers/mtd/spi-nor/spi-nor.c
>> +++ b/drivers/mtd/spi-nor/spi-nor.c
>> @@ -3000,7 +3000,8 @@ static int spi_nor_init_non_uniform_erase_map(struct spi_nor *nor,
>>  	u64 offset;
>>  	u32 region_count;
>>  	int i, j;
>> -	u8 erase_type, uniform_erase_type;
>> +	u8 uniform_erase_type, save_uniform_erase_type;
>> +	u8 erase_type, regions_erase_type;
>>  
>>  	region_count = SMPT_MAP_REGION_COUNT(*smpt);
>>  	/*
>> @@ -3014,6 +3015,7 @@ static int spi_nor_init_non_uniform_erase_map(struct spi_nor *nor,
>>  	map->regions = region;
>>  
>>  	uniform_erase_type = 0xff;
>> +	regions_erase_type = 0;
>>  	offset = 0;
>>  	/* Populate regions. */
>>  	for (i = 0; i < region_count; i++) {
>> @@ -3030,13 +3032,38 @@ static int spi_nor_init_non_uniform_erase_map(struct spi_nor *nor,
>>  		 */
>>  		uniform_erase_type &= erase_type;
>>  
>> +		/*
>> +		 * regions_erase_type mask will indicate all the erase types
>> +		 * supported in this configuration map.
>> +		 */
>> +		regions_erase_type |= erase_type;
>> +
>>  		offset = (region[i].offset & ~SNOR_ERASE_FLAGS_MASK) +
>>  			 region[i].size;
>>  	}
>>  
>> +	save_uniform_erase_type = map->uniform_erase_type;
>>  	map->uniform_erase_type = spi_nor_sort_erase_mask(map,
>>  							  uniform_erase_type);
>>  
>> +	if (!regions_erase_type) {
>> +		/*
>> +		 * Roll back to the previous uniform_erase_type mask, SMPT is
>> +		 * broken.
>> +		 */
>> +		map->uniform_erase_type = save_uniform_erase_type;
>> +		return -EINVAL;
>> +	}
>> +
>> +	/*
>> +	 * BFPT table advertises all the erase types supported by all the
>> +	 * possible map configurations. Update the erase_type array to indicate
>> +	 * which erase types are applicable to the current map configuration.
>> +	 */
>> +	for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++)
>> +		if (!(regions_erase_type & BIT(erase[i].idx)))
>> +			spi_nor_set_erase_type(&erase[i], 0, 0xFF);
> 
> have you noticed the following:
> 
> .../drivers/mtd/spi-nor/spi-nor.c: In function ‘spi_nor_init_non_uniform_erase_map’:
> .../drivers/mtd/spi-nor/spi-nor.c:2940:27: error: passing argument 1 of ‘spi_nor_set_erase_type’ discards ‘const’ qualifier
>  from pointer target type [-Werror=discarded-qualifiers]
>     spi_nor_set_erase_type(&erase[i], 0, 0xFF);
>                            ^
> .../drivers/mtd/spi-nor/spi-nor.c:2368:13: note: expected ‘struct spi_nor_erase_type *’ but argument is of type ‘const stru
> ct spi_nor_erase_type *’
>  static void spi_nor_set_erase_type(struct spi_nor_erase_type *erase,
>              ^~~~~~~~~~~~~~~~~~~~~~
> 
>> +


Oops, no, thanks! Removing the const qualifier will do the trick:

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index a71adcd6ddfa..06086916ec3c 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2995,7 +2995,7 @@ static int spi_nor_init_non_uniform_erase_map(struct spi_nor *nor,
                                              const u32 *smpt)
 {
        struct spi_nor_erase_map *map = &nor->erase_map;
-       const struct spi_nor_erase_type *erase = map->erase_type;
+       struct spi_nor_erase_type *erase = map->erase_type;
        struct spi_nor_erase_region *region;
        u64 offset;
        u32 region_count;


  reply	other threads:[~2018-11-22 16:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-22 12:36 [PATCH] mtd: spi-nor: fix erase_type array to indicate current map conf Tudor.Ambarus
2018-11-22 12:38 ` Tudor.Ambarus
2018-11-22 14:56   ` Sverdlin, Alexander (Nokia - DE/Ulm)
2018-11-22 15:01     ` Tudor.Ambarus
2018-11-22 16:14 ` Sverdlin, Alexander (Nokia - DE/Ulm)
2018-11-22 16:22   ` Tudor.Ambarus [this message]
2018-11-23  9:42 ` Sverdlin, Alexander (Nokia - DE/Ulm)
2018-11-23 10:17   ` Boris Brezillon
2018-11-23 10:29     ` Boris Brezillon
2018-11-23 10:32   ` Tudor.Ambarus
2018-11-23 11:33     ` Sverdlin, Alexander (Nokia - DE/Ulm)
2018-11-23 12:39       ` Tudor.Ambarus

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=1869052d-1be2-243d-0901-afcf34d6e1dd@microchip.com \
    --to=tudor.ambarus@microchip.com \
    --cc=alexander.sverdlin@nokia.com \
    --cc=boris.brezillon@bootlin.com \
    --cc=computersforpeace@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=marek.vasut@gmail.com \
    --cc=richard@nod.at \
    /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.