[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