uboot-mediatek: fix MMC erase timeout
authorDaniel Golle <daniel@makrotopia.org>
Tue, 5 Dec 2023 04:08:13 +0000 (04:08 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Thu, 1 Feb 2024 22:31:58 +0000 (22:31 +0000)
When erasing large amounts of blocks at once this can take a long
time on slow cards. Instead of a fixed timeout, wait longer if more
blocks are being erased.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
package/boot/uboot-mediatek/patches/250-fix-mmc-erase-timeout.patch [new file with mode: 0644]

diff --git a/package/boot/uboot-mediatek/patches/250-fix-mmc-erase-timeout.patch b/package/boot/uboot-mediatek/patches/250-fix-mmc-erase-timeout.patch
new file mode 100644 (file)
index 0000000..ec9fa6f
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c
+index a6f93380dd0..5c573fe5c4c 100644
+--- a/drivers/mmc/mmc_write.c
++++ b/drivers/mmc/mmc_write.c
+@@ -80,7 +80,7 @@ ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt)
+       u32 start_rem, blkcnt_rem, erase_args = 0;
+       struct mmc *mmc = find_mmc_device(dev_num);
+       lbaint_t blk = 0, blk_r = 0;
+-      int timeout_ms = 1000;
++      int timeout_ms = blkcnt;
+       if (!mmc)
+               return -1;