u-boot-brain/cmd
Patrick Delaunay b1b147f2b8 cmd: mtd: solve bad block support in erase command
This patch modify the loop in mtd erase command to erase one by one
the blocks in the requested area.

It solves issue on "mtd erase" command on nand with existing bad block,
the command is interrupted on the first bad block with the trace:
	"Skipping bad block at 0xffffffffffffffff"

In MTD driver (nand/raw), when a bad block is present on the MTD
device, the erase_op.fail_addr is not updated and we have the initial
value MTD_FAIL_ADDR_UNKNOWN = (ULL)-1.

This case seems normal in nand_base.c:nand_erase_nand(),
we have the 2 exit cases during the loop:

1/ we have a bad block (nand_block_checkbad)
	instr->state = MTD_ERASE_FAILED
	loop interrupted (goto erase_exit)

2/ if block erase failed (status & NAND_STATUS_FAIL)
	instr->state = MTD_ERASE_FAILED;
	instr->fail_addr =
				((loff_t)page << chip->page_shift);
	loop interrupted (goto erase_exit)

So erase_op.fail_addr can't be used if bad blocks were present
in the erased area; we need to use mtd_erase only one block to detect
and skip these existing bad blocks (as it is done in nand_util.c).

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
2020-01-24 11:19:52 -05:00
..
arm cmd: add exception command 2019-04-22 12:06:39 -04:00
mvebu common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
riscv cmd: add exception command 2019-04-22 12:06:39 -04:00
ti common: Move RAM-sizing functions to init.h 2020-01-17 14:02:35 -05:00
x86 x86: Update the fsp command for FSP2 2019-12-15 11:44:19 +08:00
.gitignore
ab_select.c cmd: Add 'ab_select' command 2019-07-24 13:16:29 -04:00
adc.c cmd: adc: Use the sub-command infrastructure 2019-01-15 15:28:54 -05:00
adtimg.c cmd: adtimg: Refactor usage style 2020-01-10 14:18:26 -05:00
aes.c aes: add support of aes192 and aes256 2020-01-17 10:15:49 -05:00
armflash.c
avb.c cmd: avb: Support A/B slots 2019-10-31 07:22:53 -04:00
axi.c
bcb.c cmd: bcb: Apply non-functional refinements 2019-07-24 13:16:29 -04:00
bdinfo.c bdinfo: show multi_dtb_fit 2020-01-07 11:13:26 -05:00
bedbug.c
bind.c
binop.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
blk_common.c cmd/blk_common: clarify no partition error message 2020-01-16 09:39:45 -05:00
blkcache.c
blob.c env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
bmp.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
boot.c
bootcount.c
bootefi.c efi_loader: free load options after execution 2020-01-07 18:08:20 +01:00
booti.c image: Rename load_addr, save_addr, save_size 2020-01-17 14:02:35 -05:00
bootm.c image: Rename load_addr, save_addr, save_size 2020-01-17 14:02:35 -05:00
bootmenu.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
bootstage.c
bootz.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
btrfs.c
cache.c common: Move some cache and MMU functions out of common.h 2019-12-02 18:23:55 -05:00
cbfs.c cbfs: Move result variable into the struct 2019-08-18 21:54:10 +08:00
clk.c clk: support clk tree dump 2019-08-22 00:10:09 +02:00
cls.c
config.c common: Move gzip functions into a new gzip header 2019-08-11 16:43:41 -04:00
conitrace.c
console.c
cpu.c
cramfs.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
cros_ec.c
dataflash_mmc_mux.c
date.c cmd: date: Do not overwrite arguments 2019-02-19 08:55:43 -05:00
demo.c
dfu.c dfu: Add optional timeout parameter 2020-01-07 14:37:50 +01:00
diag.c
disk.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
dm.c cmd: Move the "dm" command from test/dm/ to cmd/ 2018-12-15 11:49:19 -05:00
echo.c
eeprom.c cmd/eeprom.c: prepend 0x to hex numbers in output message format 2020-01-10 14:18:26 -05:00
efi.c common: Move sorting functions to their own header file 2019-12-02 18:23:08 -05:00
efidebug.c cmd: efidebug: capitalize UEFI 2020-01-07 18:08:21 +01:00
elf.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
ethsw.c net: Always build the string_to_enetaddr() helper 2019-12-09 09:47:41 -06:00
exit.c
ext2.c
ext4.c
fastboot.c cmd: fastboot: handle watchdog while waiting for fastboot commands. 2019-03-16 13:29:43 +01:00
fat.c common: Move functions for loading from fat/ext2 to fs.h 2020-01-17 13:26:49 -05:00
fdt.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
fitupd.c
flash.c
fpga.c env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
fpgad.c
fs_uuid.c
fs.c fs: do_load: pass device path for efi payload 2019-06-20 22:26:20 +00:00
fuse.c
gettime.c
gpio.c cmd: gpio: remove redundant assignment 2019-08-26 11:46:27 -04:00
gpt.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
hash.c
help.c Drop linker-generated array creation when CONFIG_CMDLINE is disabled 2019-07-29 09:32:09 -04:00
host.c cmd: host: fix seg fault at "host info" 2019-10-06 15:20:53 -04:00
i2c.c crc32: Use the crc.h header for crc functions 2019-12-02 18:23:08 -05:00
ide.c Drop PCMCIA 2019-08-11 19:27:41 -04:00
ini.c env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
io.c iod: Enhance to support display of multiple values 2019-10-08 13:57:44 +08:00
iotrace.c
irq.c common: Move enable/disable_interrupts out of common.h 2019-12-02 18:25:01 -05:00
itest.c cmd: itest: add support for .q size specifier 2019-10-11 19:05:14 -04:00
jffs2.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
Kconfig cmd: add tlv_eeprom command 2020-01-21 15:56:15 +01:00
led.c cmd/led.c: fix typos in online help 2019-06-21 10:07:11 -04:00
legacy_led.c
legacy-mtd-utils.c cmd: nand/sf: isolate legacy code 2019-12-04 17:10:51 -05:00
legacy-mtd-utils.h cmd: nand/sf: isolate legacy code 2019-12-04 17:10:51 -05:00
license.c common: Move gzip functions into a new gzip header 2019-08-11 16:43:41 -04:00
load.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
log.c
lzmadec.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
mac.c
Makefile cmd: add tlv_eeprom command 2020-01-21 15:56:15 +01:00
md5sum.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
mdio.c net: mdio: Clarify code flow Covarity 244085 & 244090 2019-09-04 11:37:18 -05:00
mem.c common: Move and rename CONFIG_SYS_SUPPORT_64BIT_DATA 2020-01-17 17:53:52 -05:00
mfsl.c
mii.c cmd: mii: Add the standard 1000BASE-T registers 2019-07-15 13:32:25 -05:00
misc.c
mmc.c cmd: mmc: Make Mode: printout consistent 2019-05-04 19:26:49 +02:00
mp.c common: Move older CPU functions to their own header 2019-12-02 18:23:06 -05:00
mtd.c cmd: mtd: solve bad block support in erase command 2020-01-24 11:19:52 -05:00
mtdparts.c cmd: mtdparts: Fix build with option ..._SHOW_NET_SIZES 2019-11-07 18:01:13 -05:00
nand.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
net.c common: Move the image globals into image.h 2020-01-17 14:02:35 -05:00
nvedit_efi.c cmd: env: extend "env [set|print] -e" to manage UEFI variables 2019-10-30 17:49:41 +01:00
nvedit.c net: Always build the string_to_enetaddr() helper 2019-12-09 09:47:41 -06:00
nvme.c
onenand.c
osd.c
part.c cmd: part: number: return hexadecimal value 2019-10-04 12:21:23 -04:00
pcap.c net: introduce packet capture support 2019-09-04 11:37:19 -05:00
pci.c cmd: pci: Adjust display of digits for 64bit address and size 2019-08-26 11:46:28 -04:00
pinmux.c cmd: pinmux: Fix warnings when compiling with W=1 2019-07-12 11:50:57 +02:00
pmc.c x86: sandbox: Add a PMC emulator and test 2019-12-15 11:44:11 +08:00
pmic.c
pxe_utils.c cmd: pxe: execute the cls command only when supported 2020-01-22 17:49:25 -05:00
pxe_utils.h cmd: Prepare sysboot command independence 2019-12-06 16:44:18 -05:00
pxe.c common: Move functions for loading from fat/ext2 to fs.h 2020-01-17 13:26:49 -05:00
qfw.c env: Move env_set() to env.h 2019-08-11 16:43:41 -04:00
read.c
reginfo.c
regulator.c
reiser.c image: Rename load_addr, save_addr, save_size 2020-01-17 14:02:35 -05:00
remoteproc.c cmd: remoteproc: Allow list command to print the probed devices 2019-07-26 21:49:24 -04:00
rng.c cmd: add rng command 2020-01-07 18:08:21 +01:00
rockusb.c rockchip: use 'arch-rockchip' as header file path 2019-05-01 00:00:05 +02:00
sata.c cmd: sata: add null pointer check for dev 2019-02-09 07:51:00 -05:00
sb.c
scsi.c
setexpr.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
sf.c cmd: nand/sf: isolate legacy code 2019-12-04 17:10:51 -05:00
sha1sum.c
smccc.c
sound.c dm: sound: Complete migration to driver model 2018-12-13 16:36:41 -07:00
source.c common: Rename and move source() 2020-01-17 14:02:35 -05:00
spi.c Convert CONFIG_DEFAULT_SPI_* to Kconfig 2019-03-25 17:36:53 -04:00
spl.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
strings.c
sysboot.c cmd: sysboot: Fix checkpatch WARNING/CHECK 2019-12-06 16:44:19 -05:00
terminal.c
test.c cmd: avoid decimal conversion 2019-10-11 15:33:27 -04:00
thordown.c thor: fix error path after g_dnl_register() failure 2019-10-31 12:12:31 +01:00
time.c
tlv_eeprom.c cmd: add tlv_eeprom command 2020-01-21 15:56:15 +01:00
tpm_test.c common: Move reset_cpu() to the CPU header 2020-01-17 14:02:31 -05:00
tpm-common.c env: Move env_set_ulong() to env.h 2019-08-11 16:43:41 -04:00
tpm-user-utils.h
tpm-v1.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
tpm-v2.c cmd: tpm-v2: use correct format code 2019-01-15 15:28:44 -05:00
trace.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
tsi148.c
ubi.c ubi: Add "skipcheck" command to set/clear this bit in the UBI volume hdr 2019-10-16 05:42:36 +02:00
ubifs.c
ufs.c cmd: Add Support for UFS commands 2019-10-23 20:47:12 -04:00
universe.c
unzip.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00
usb_gadget_sdp.c usb: gadget: error out if g_dnl registration fails 2019-06-14 12:39:50 +02:00
usb_mass_storage.c usb: reload watchdog during ums command 2019-04-21 10:26:52 +02:00
usb.c usb: Make portspeed return a read-only string 2019-04-09 13:11:45 +02:00
version.c
virtio.c
w1.c
wdt.c cmd: add wdt command 2019-04-12 07:04:18 +02:00
wol.c
ximg.c image: Rename load_addr, save_addr, save_size 2020-01-17 14:02:35 -05:00
yaffs2.c
zfs.c zfs: remove unused buf variable 2020-01-23 07:29:58 -05:00
zip.c env: Move env_set_hex() to env.h 2019-08-11 16:43:41 -04:00