[PATCH] sf: Querying write-protect status before operating the flash

Tudor.Ambarus at microchip.com Tudor.Ambarus at microchip.com
Tue Nov 9 09:14:01 CET 2021


On 11/9/21 3:52 AM, chaochao2021666 wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> 
> HI jagan and ta

Hi,

Please don't top post in the future.

> 
> I might have a different view, the caller can not get the correct response even though we can not
> operate the device sucessfully.
> 
> I think it is necessary to return a valid value.
> if return 0, the device cannot actually be operated but the correct 

Actually the last recommendation was to just print a debug message
and then fallthrough the erase/write methods and let the flash
ignore the commands on the protected areas. So no change in
functionality, but merely a debug message that informs the user
that there are protected areas in the requested length and the
flash will ignore erases and writes on those.

results are not possible

Erases and writes on the remaining unprotected sectors are working
fine, aren't they?

Cheers,
ta


> 
> BRs
> Chao
> 
> At 2021-11-06 02:08:04, "Jagan Teki" <jagan at amarulasolutions.com> wrote:
>> On Fri, Nov 5, 2021 at 10:47 PM <Tudor.Ambarus at microchip.com> wrote:
>>>
>>> Hi,
>>>
>>> On 6/22/21 8:21 AM, chao zeng wrote:
>>>> From: Chao Zeng <chao.zeng at siemens.com>
>>>>
>>>> When operating the write-protection flash,spi_flash_std_write() and
>>>> spi_flash_std_erase() would return wrong result.The flash is protected,
>>>> but write or erase the flash would show "OK".
>>>>
>>>> Check the flash write protection state if the write-protection has enbale
>>>> before operating the flash.
>>>>
>>>> Signed-off-by: Chao Zeng <chao.zeng at siemens.com>
>>>> ---
>>>>
>>>>  drivers/mtd/spi/sf_probe.c | 10 ++++++++++
>>>>  1 file changed, 10 insertions(+)
>>>>
>>>> diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
>>>> index 3befbe91ca..f06e6b88bd 100644
>>>> --- a/drivers/mtd/spi/sf_probe.c
>>>> +++ b/drivers/mtd/spi/sf_probe.c
>>>> @@ -109,6 +109,11 @@ static int spi_flash_std_write(struct udevice *dev, u32 offset, size_t len,
>>>>       struct mtd_info *mtd = &flash->mtd;
>>>>       size_t retlen;
>>>>
>>>> +     if (flash->flash_is_locked && flash->flash_is_locked(flash, offset, len)) {
>>>> +             debug("SF: Flash is locked\n");
>>>> +             return -ENOPROTOOPT;
>>>
>>> Keep a debug message, but return 0 please. Writes or erases on protected areas
>>> are ignored by the flash, we should reflect that in the code.
>>
>> Agreed this point, Chao are you fine to do this change while applying it?
>>
>> Jagan.
> 



More information about the U-Boot mailing list