[PATCH v2] cmd: sf: Fix the flash_is_unlocked api size parameter
Michal Simek
michal.simek at amd.com
Thu Sep 21 13:06:22 CEST 2023
On 9/20/23 04:54, Venkatesh Yadav Abbarapu wrote:
> When flash erase is called with size parameter, code is checking
> if sectors are locked or not. But for checking, the whole device
> length minus offset is used instead of actual size which should
> be erased. That's why when only some sectors are locked it is
> not possible to erase unlocked sectors.
>
> The length is calculated as "length = max_chipsize - offset",
> flash_is_unlocked() api is getting updated with length which is
> incorrect. Fix this flash_is_unlocked() api by passing the size
> parameter.
>
> ZynqMP> sf erase 0 100000
> len=0x8000000 which is flash size
> size=0x100000
>
> We need to update the size in the flash_is_unlocked() api and not
> the length.
>
> Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>
> ---
> Changes in v2:
> - Updated the commit description.
> ---
> cmd/sf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/cmd/sf.c b/cmd/sf.c
> index 55bef2f769..977ffcb63c 100644
> --- a/cmd/sf.c
> +++ b/cmd/sf.c
> @@ -366,7 +366,7 @@ static int do_spi_flash_erase(int argc, char *const argv[])
> }
>
> if (flash->flash_is_unlocked &&
> - !flash->flash_is_unlocked(flash, offset, len)) {
> + !flash->flash_is_unlocked(flash, offset, size)) {
> printf("ERROR: flash area is locked\n");
> return CMD_RET_FAILURE;
> }
Applied.
M
More information about the U-Boot
mailing list