[U-Boot] [PATCH v4 3/3] spi: Add SPI NOR protection mechanism
Fabio Estevam
festevam at gmail.com
Thu Oct 1 20:36:38 CEST 2015
On Thu, Oct 1, 2015 at 10:48 AM, Jagan Teki <jteki at openedev.com> wrote:
> To be in-line with mtd lock utils, how about this notation
> sf protect lock
> sf protect unlock
> sf protect islocked
Ok.
>> diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig
>> index 3f7433c..2ee1089 100644
>> --- a/drivers/mtd/spi/Kconfig
>> +++ b/drivers/mtd/spi/Kconfig
>> @@ -101,6 +101,21 @@ config SPI_FLASH_USE_4K_SECTORS
>> Please note that some tools/drivers/filesystems may not work with
>> 4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
>>
>> +config SPI_FLASH_STM_PROTECT
>
> Remove this macro, just use existing CONFIG_SPI_FLASH_STMICRO as all
> these code is specific to these parts.
Ok.
>> diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h
>> index 9c95d56..8fb1b18 100644
>> --- a/drivers/mtd/spi/sf_internal.h
>> +++ b/drivers/mtd/spi/sf_internal.h
>> @@ -162,12 +162,6 @@ int spi_flash_cmd_write(struct spi_slave *spi, const u8 *cmd, size_t cmd_len,
>> /* Flash erase(sectors) operation, support all possible erase commands */
>> int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len);
>>
>> -/* Read the status register */
>> -int spi_flash_cmd_read_status(struct spi_flash *flash, u8 *rs);
>> -
>> -/* Program the status register */
>> -int spi_flash_cmd_write_status(struct spi_flash *flash, u8 ws);
>
> Please don't remove this stuff - this is mtd/spi
Ok.
>> --- a/drivers/mtd/spi/sf_ops.c
>> +++ b/drivers/mtd/spi/sf_ops.c
>> @@ -276,6 +276,11 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len)
>> return -1;
>> }
>>
>> + if (flash->is_locked(flash, offset, len) > 0) {
>> + printf("offset 0x%x is protected and cannot be erased\n", offset);
>> + return -EINVAL;
>> + }
>
> Can we handle - if the part of the sectors were protected and
> remaining were not, so it will erase only unprotected sectors and show
> "these many sectors were locked and unable to erase"?
We can add this feature in subsequent patches.
>> +int spi_flash_protect(struct spi_flash *nor, loff_t ofs, u32 len, bool prot)
>> +{
>> + if (prot)
>> + return nor->lock(nor, ofs, len);
>> + else
>> + return nor->unlock(nor, ofs, len);
>
> %s/nor/flash/g
Ok.
> Define this spi_flash_protect in include/spi_flash not in ops.
Cannot do this as include/spi_flash.h is included by several files,
and then we would get errors about funcion being redefined.
>> +/* Read the status register */
>> +int spi_flash_cmd_read_status(struct spi_flash *flash, u8 *rs);
>> +
>> +/* Program the status register */
>> +int spi_flash_cmd_write_status(struct spi_flash *flash, u8 ws);
>> +
>> +int stm_is_locked(struct spi_flash *nor, loff_t ofs, u32 len);
>> +int stm_lock(struct spi_flash *nor, u32 ofs, u32 len);
>> +int stm_unlock(struct spi_flash *nor, u32 ofs, u32 len);
>> +int spi_flash_protect(struct spi_flash *nor, loff_t ofs, u32 len, bool prot);
>
> Move these into mtd/spi
Ok.
More information about the U-Boot
mailing list