medaitek: convert the NAND target to UBI
Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
parent
16e04fd1b4
commit
e81020c317
7 changed files with 62 additions and 192 deletions
|
@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
|
||||||
ARCH:=arm
|
ARCH:=arm
|
||||||
BOARD:=mediatek
|
BOARD:=mediatek
|
||||||
BOARDNAME:=MediaTek Ralink ARM
|
BOARDNAME:=MediaTek Ralink ARM
|
||||||
FEATURES:=squashfs jffs2
|
FEATURES:=squashfs nand ubifs
|
||||||
CPU_TYPE:=cortex-a7
|
CPU_TYPE:=cortex-a7
|
||||||
MAINTAINER:=John Crispin <john@phrozen.org>
|
MAINTAINER:=John Crispin <john@phrozen.org>
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,10 @@ platform_check_image() {
|
||||||
local board=$(cat /tmp/sysinfo/board_name)
|
local board=$(cat /tmp/sysinfo/board_name)
|
||||||
|
|
||||||
case "$board" in
|
case "$board" in
|
||||||
NAND | \
|
NAND)
|
||||||
|
nand_do_platform_check $board $1
|
||||||
|
return $?
|
||||||
|
;;
|
||||||
eMMC)
|
eMMC)
|
||||||
local kernel_length=`(tar xf $tar_file sysupgrade-$board/kernel -O | wc -c) 2> /dev/null`
|
local kernel_length=`(tar xf $tar_file sysupgrade-$board/kernel -O | wc -c) 2> /dev/null`
|
||||||
local rootfs_length=`(tar xf $tar_file sysupgrade-$board/root -O | wc -c) 2> /dev/null`
|
local rootfs_length=`(tar xf $tar_file sysupgrade-$board/root -O | wc -c) 2> /dev/null`
|
||||||
|
@ -39,3 +42,12 @@ platform_check_image() {
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
platform_pre_upgrade() {
|
||||||
|
local board=$(cat /tmp/sysinfo/board_name)
|
||||||
|
case "$board" in
|
||||||
|
NAND)
|
||||||
|
nand_do_upgrade $1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
|
@ -98,6 +98,11 @@ CONFIG_CRC16=y
|
||||||
# CONFIG_CRC32_SARWATE is not set
|
# CONFIG_CRC32_SARWATE is not set
|
||||||
CONFIG_CRC32_SLICEBY8=y
|
CONFIG_CRC32_SLICEBY8=y
|
||||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||||
|
CONFIG_CRYPTO_DEFLATE=y
|
||||||
|
CONFIG_CRYPTO_LZO=y
|
||||||
|
CONFIG_CRYPTO_RNG2=y
|
||||||
|
CONFIG_CRYPTO_WORKQUEUE=y
|
||||||
|
CONFIG_CRYPTO_XZ=y
|
||||||
CONFIG_DCACHE_WORD_ACCESS=y
|
CONFIG_DCACHE_WORD_ACCESS=y
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
CONFIG_DEBUG_GPIO=y
|
CONFIG_DEBUG_GPIO=y
|
||||||
|
@ -181,11 +186,6 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
||||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||||
CONFIG_HAVE_IDE=y
|
CONFIG_HAVE_IDE=y
|
||||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||||
CONFIG_HAVE_KERNEL_GZIP=y
|
|
||||||
CONFIG_HAVE_KERNEL_LZ4=y
|
|
||||||
CONFIG_HAVE_KERNEL_LZMA=y
|
|
||||||
CONFIG_HAVE_KERNEL_LZO=y
|
|
||||||
CONFIG_HAVE_KERNEL_XZ=y
|
|
||||||
CONFIG_HAVE_MEMBLOCK=y
|
CONFIG_HAVE_MEMBLOCK=y
|
||||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||||
CONFIG_HAVE_NET_DSA=y
|
CONFIG_HAVE_NET_DSA=y
|
||||||
|
@ -260,6 +260,12 @@ CONFIG_MTD_NAND=y
|
||||||
CONFIG_MTD_NAND_ECC=y
|
CONFIG_MTD_NAND_ECC=y
|
||||||
CONFIG_MTD_NAND_MTK=y
|
CONFIG_MTD_NAND_MTK=y
|
||||||
CONFIG_MTD_SPI_NOR=y
|
CONFIG_MTD_SPI_NOR=y
|
||||||
|
CONFIG_MTD_UBI=y
|
||||||
|
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||||
|
CONFIG_MTD_UBI_BLOCK=y
|
||||||
|
# CONFIG_MTD_UBI_FASTMAP is not set
|
||||||
|
# CONFIG_MTD_UBI_GLUEBI is not set
|
||||||
|
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||||
CONFIG_MTK_INFRACFG=y
|
CONFIG_MTK_INFRACFG=y
|
||||||
CONFIG_MTK_PMIC_WRAP=y
|
CONFIG_MTK_PMIC_WRAP=y
|
||||||
CONFIG_MTK_SCPSYS=y
|
CONFIG_MTK_SCPSYS=y
|
||||||
|
@ -271,7 +277,6 @@ CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
CONFIG_NEED_DMA_MAP_STATE=y
|
||||||
# CONFIG_NEON is not set
|
# CONFIG_NEON is not set
|
||||||
CONFIG_NET_FLOW_LIMIT=y
|
CONFIG_NET_FLOW_LIMIT=y
|
||||||
CONFIG_NET_INGRESS=y
|
|
||||||
CONFIG_NET_MEDIATEK_SOC=y
|
CONFIG_NET_MEDIATEK_SOC=y
|
||||||
# CONFIG_NET_VENDOR_AURORA is not set
|
# CONFIG_NET_VENDOR_AURORA is not set
|
||||||
CONFIG_NET_VENDOR_MEDIATEK=y
|
CONFIG_NET_VENDOR_MEDIATEK=y
|
||||||
|
@ -380,11 +385,17 @@ CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||||
# CONFIG_THUMB2_KERNEL is not set
|
# CONFIG_THUMB2_KERNEL is not set
|
||||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||||
CONFIG_TIMER_STATS=y
|
CONFIG_TIMER_STATS=y
|
||||||
|
CONFIG_UBIFS_FS=y
|
||||||
|
# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
|
||||||
|
CONFIG_UBIFS_FS_LZO=y
|
||||||
|
CONFIG_UBIFS_FS_XZ=y
|
||||||
|
CONFIG_UBIFS_FS_ZLIB=y
|
||||||
CONFIG_UEVENT_HELPER_PATH=""
|
CONFIG_UEVENT_HELPER_PATH=""
|
||||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_COMMON=y
|
CONFIG_USB_COMMON=y
|
||||||
|
# CONFIG_USB_EHCI_HCD is not set
|
||||||
CONFIG_USB_SUPPORT=y
|
CONFIG_USB_SUPPORT=y
|
||||||
# CONFIG_USB_UHCI_HCD is not set
|
# CONFIG_USB_UHCI_HCD is not set
|
||||||
CONFIG_USB_XHCI_HCD=y
|
CONFIG_USB_XHCI_HCD=y
|
||||||
|
@ -402,4 +413,6 @@ CONFIG_XZ_DEC_ARM=y
|
||||||
CONFIG_XZ_DEC_BCJ=y
|
CONFIG_XZ_DEC_BCJ=y
|
||||||
CONFIG_ZBOOT_ROM_BSS=0
|
CONFIG_ZBOOT_ROM_BSS=0
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0
|
CONFIG_ZBOOT_ROM_TEXT=0
|
||||||
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZONE_DMA_FLAG=0
|
CONFIG_ZONE_DMA_FLAG=0
|
||||||
|
|
|
@ -360,7 +360,6 @@
|
||||||
nand@0 {
|
nand@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
spare_per_sector = <64>;
|
spare_per_sector = <64>;
|
||||||
nand-on-flash-bbt;
|
|
||||||
nand-ecc-mode = "hw";
|
nand-ecc-mode = "hw";
|
||||||
nand-ecc-strength = <12>;
|
nand-ecc-strength = <12>;
|
||||||
nand-ecc-step-size = <1024>;
|
nand-ecc-step-size = <1024>;
|
||||||
|
@ -390,7 +389,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@4140000 {
|
partition@4140000 {
|
||||||
label = "rootfs";
|
label = "ubi";
|
||||||
reg = <0x4140000 0x1000000>;
|
reg = <0x4140000 0x1000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,12 +30,13 @@ define Image/Build/squashfs
|
||||||
$(CP) $(KDIR)/root.squashfs $(BIN_DIR)/$(IMG_PREFIX)-root.squashfs
|
$(CP) $(KDIR)/root.squashfs $(BIN_DIR)/$(IMG_PREFIX)-root.squashfs
|
||||||
|
|
||||||
$(call Image/Build/SysupgradeCombined,eMMC,squashfs)
|
$(call Image/Build/SysupgradeCombined,eMMC,squashfs)
|
||||||
endef
|
|
||||||
|
|
||||||
define Image/Build/jffs2-128k
|
$(call Image/BuilduImage,NAND)
|
||||||
$(CP) $(KDIR)/root.jffs2-128k $(BIN_DIR)/$(IMG_PREFIX)-root.jffs2
|
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||||
|
$(call Image/BuilduImage,NAND,-initramfs)
|
||||||
$(call Image/Build/SysupgradeCombined,NAND,jffs2-128k)
|
$(CP) $(KDIR)/uImage-NAND-initramfs $(BIN_DIR)/$(IMG_PREFIX)-uImage-NAND-initramfs
|
||||||
|
endif
|
||||||
|
$(call Image/Build/SysupgradeNAND,NAND,$(1),$(KDIR)/uImage-NAND)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Image/Build
|
define Image/Build
|
||||||
|
|
|
@ -31,11 +31,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
drivers/mtd/tests/mtd_nandecctest.c | 2 +-
|
drivers/mtd/tests/mtd_nandecctest.c | 2 +-
|
||||||
drivers/mtd/tests/oobtest.c | 49 ++-
|
drivers/mtd/tests/oobtest.c | 49 ++-
|
||||||
drivers/mtd/tests/pagetest.c | 3 +-
|
drivers/mtd/tests/pagetest.c | 3 +-
|
||||||
drivers/mtd/ubi/cdev.c | 4 +-
|
|
||||||
drivers/mtd/ubi/misc.c | 49 +++
|
|
||||||
drivers/mtd/ubi/ubi.h | 16 +-
|
|
||||||
drivers/mtd/ubi/upd.c | 2 +-
|
|
||||||
drivers/mtd/ubi/wl.c | 21 +-
|
|
||||||
include/linux/mtd/bbm.h | 1 -
|
include/linux/mtd/bbm.h | 1 -
|
||||||
include/linux/mtd/fsmc.h | 18 --
|
include/linux/mtd/fsmc.h | 18 --
|
||||||
include/linux/mtd/inftl.h | 1 -
|
include/linux/mtd/inftl.h | 1 -
|
||||||
|
@ -4654,178 +4649,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
addr0 = 0;
|
addr0 = 0;
|
||||||
for (i = 0; i < ebcnt && bbt[i]; ++i)
|
for (i = 0; i < ebcnt && bbt[i]; ++i)
|
||||||
--- a/drivers/mtd/ubi/cdev.c
|
|
||||||
+++ b/drivers/mtd/ubi/cdev.c
|
|
||||||
@@ -174,9 +174,9 @@ static int vol_cdev_fsync(struct file *f
|
|
||||||
struct ubi_device *ubi = desc->vol->ubi;
|
|
||||||
struct inode *inode = file_inode(file);
|
|
||||||
int err;
|
|
||||||
- mutex_lock(&inode->i_mutex);
|
|
||||||
+ inode_lock(inode);
|
|
||||||
err = ubi_sync(ubi->ubi_num);
|
|
||||||
- mutex_unlock(&inode->i_mutex);
|
|
||||||
+ inode_unlock(inode);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
--- a/drivers/mtd/ubi/misc.c
|
|
||||||
+++ b/drivers/mtd/ubi/misc.c
|
|
||||||
@@ -153,3 +153,52 @@ int ubi_check_pattern(const void *buf, u
|
|
||||||
return 0;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+/* Normal UBI messages */
|
|
||||||
+void ubi_msg(const struct ubi_device *ubi, const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ struct va_format vaf;
|
|
||||||
+ va_list args;
|
|
||||||
+
|
|
||||||
+ va_start(args, fmt);
|
|
||||||
+
|
|
||||||
+ vaf.fmt = fmt;
|
|
||||||
+ vaf.va = &args;
|
|
||||||
+
|
|
||||||
+ pr_notice(UBI_NAME_STR "%d: %pV\n", ubi->ubi_num, &vaf);
|
|
||||||
+
|
|
||||||
+ va_end(args);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* UBI warning messages */
|
|
||||||
+void ubi_warn(const struct ubi_device *ubi, const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ struct va_format vaf;
|
|
||||||
+ va_list args;
|
|
||||||
+
|
|
||||||
+ va_start(args, fmt);
|
|
||||||
+
|
|
||||||
+ vaf.fmt = fmt;
|
|
||||||
+ vaf.va = &args;
|
|
||||||
+
|
|
||||||
+ pr_warn(UBI_NAME_STR "%d warning: %ps: %pV\n",
|
|
||||||
+ ubi->ubi_num, __builtin_return_address(0), &vaf);
|
|
||||||
+
|
|
||||||
+ va_end(args);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* UBI error messages */
|
|
||||||
+void ubi_err(const struct ubi_device *ubi, const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ struct va_format vaf;
|
|
||||||
+ va_list args;
|
|
||||||
+
|
|
||||||
+ va_start(args, fmt);
|
|
||||||
+
|
|
||||||
+ vaf.fmt = fmt;
|
|
||||||
+ vaf.va = &args;
|
|
||||||
+
|
|
||||||
+ pr_err(UBI_NAME_STR "%d error: %ps: %pV\n",
|
|
||||||
+ ubi->ubi_num, __builtin_return_address(0), &vaf);
|
|
||||||
+ va_end(args);
|
|
||||||
+}
|
|
||||||
--- a/drivers/mtd/ubi/ubi.h
|
|
||||||
+++ b/drivers/mtd/ubi/ubi.h
|
|
||||||
@@ -49,15 +49,19 @@
|
|
||||||
/* UBI name used for character devices, sysfs, etc */
|
|
||||||
#define UBI_NAME_STR "ubi"
|
|
||||||
|
|
||||||
+struct ubi_device;
|
|
||||||
+
|
|
||||||
/* Normal UBI messages */
|
|
||||||
-#define ubi_msg(ubi, fmt, ...) pr_notice(UBI_NAME_STR "%d: " fmt "\n", \
|
|
||||||
- ubi->ubi_num, ##__VA_ARGS__)
|
|
||||||
+__printf(2, 3)
|
|
||||||
+void ubi_msg(const struct ubi_device *ubi, const char *fmt, ...);
|
|
||||||
+
|
|
||||||
/* UBI warning messages */
|
|
||||||
-#define ubi_warn(ubi, fmt, ...) pr_warn(UBI_NAME_STR "%d warning: %s: " fmt "\n", \
|
|
||||||
- ubi->ubi_num, __func__, ##__VA_ARGS__)
|
|
||||||
+__printf(2, 3)
|
|
||||||
+void ubi_warn(const struct ubi_device *ubi, const char *fmt, ...);
|
|
||||||
+
|
|
||||||
/* UBI error messages */
|
|
||||||
-#define ubi_err(ubi, fmt, ...) pr_err(UBI_NAME_STR "%d error: %s: " fmt "\n", \
|
|
||||||
- ubi->ubi_num, __func__, ##__VA_ARGS__)
|
|
||||||
+__printf(2, 3)
|
|
||||||
+void ubi_err(const struct ubi_device *ubi, const char *fmt, ...);
|
|
||||||
|
|
||||||
/* Background thread name pattern */
|
|
||||||
#define UBI_BGT_NAME_PATTERN "ubi_bgt%dd"
|
|
||||||
--- a/drivers/mtd/ubi/wl.c
|
|
||||||
+++ b/drivers/mtd/ubi/wl.c
|
|
||||||
@@ -628,6 +628,7 @@ static int do_sync_erase(struct ubi_devi
|
|
||||||
return __erase_worker(ubi, &wl_wrk);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int ensure_wear_leveling(struct ubi_device *ubi, int nested);
|
|
||||||
/**
|
|
||||||
* wear_leveling_worker - wear-leveling worker function.
|
|
||||||
* @ubi: UBI device description object
|
|
||||||
@@ -649,6 +650,7 @@ static int wear_leveling_worker(struct u
|
|
||||||
#endif
|
|
||||||
struct ubi_wl_entry *e1, *e2;
|
|
||||||
struct ubi_vid_hdr *vid_hdr;
|
|
||||||
+ int dst_leb_clean = 0;
|
|
||||||
|
|
||||||
kfree(wrk);
|
|
||||||
if (shutdown)
|
|
||||||
@@ -753,6 +755,7 @@ static int wear_leveling_worker(struct u
|
|
||||||
|
|
||||||
err = ubi_io_read_vid_hdr(ubi, e1->pnum, vid_hdr, 0);
|
|
||||||
if (err && err != UBI_IO_BITFLIPS) {
|
|
||||||
+ dst_leb_clean = 1;
|
|
||||||
if (err == UBI_IO_FF) {
|
|
||||||
/*
|
|
||||||
* We are trying to move PEB without a VID header. UBI
|
|
||||||
@@ -798,10 +801,12 @@ static int wear_leveling_worker(struct u
|
|
||||||
* protection queue.
|
|
||||||
*/
|
|
||||||
protect = 1;
|
|
||||||
+ dst_leb_clean = 1;
|
|
||||||
goto out_not_moved;
|
|
||||||
}
|
|
||||||
if (err == MOVE_RETRY) {
|
|
||||||
scrubbing = 1;
|
|
||||||
+ dst_leb_clean = 1;
|
|
||||||
goto out_not_moved;
|
|
||||||
}
|
|
||||||
if (err == MOVE_TARGET_BITFLIPS || err == MOVE_TARGET_WR_ERR ||
|
|
||||||
@@ -827,6 +832,7 @@ static int wear_leveling_worker(struct u
|
|
||||||
ubi->erroneous_peb_count);
|
|
||||||
goto out_error;
|
|
||||||
}
|
|
||||||
+ dst_leb_clean = 1;
|
|
||||||
erroneous = 1;
|
|
||||||
goto out_not_moved;
|
|
||||||
}
|
|
||||||
@@ -897,15 +903,24 @@ out_not_moved:
|
|
||||||
wl_tree_add(e1, &ubi->scrub);
|
|
||||||
else
|
|
||||||
wl_tree_add(e1, &ubi->used);
|
|
||||||
+ if (dst_leb_clean) {
|
|
||||||
+ wl_tree_add(e2, &ubi->free);
|
|
||||||
+ ubi->free_count++;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
ubi_assert(!ubi->move_to_put);
|
|
||||||
ubi->move_from = ubi->move_to = NULL;
|
|
||||||
ubi->wl_scheduled = 0;
|
|
||||||
spin_unlock(&ubi->wl_lock);
|
|
||||||
|
|
||||||
ubi_free_vid_hdr(ubi, vid_hdr);
|
|
||||||
- err = do_sync_erase(ubi, e2, vol_id, lnum, torture);
|
|
||||||
- if (err)
|
|
||||||
- goto out_ro;
|
|
||||||
+ if (dst_leb_clean) {
|
|
||||||
+ ensure_wear_leveling(ubi, 1);
|
|
||||||
+ } else {
|
|
||||||
+ err = do_sync_erase(ubi, e2, vol_id, lnum, torture);
|
|
||||||
+ if (err)
|
|
||||||
+ goto out_ro;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
mutex_unlock(&ubi->move_mutex);
|
|
||||||
return 0;
|
|
||||||
--- a/include/linux/mtd/bbm.h
|
--- a/include/linux/mtd/bbm.h
|
||||||
+++ b/include/linux/mtd/bbm.h
|
+++ b/include/linux/mtd/bbm.h
|
||||||
@@ -166,7 +166,6 @@ struct bbm_info {
|
@@ -166,7 +166,6 @@ struct bbm_info {
|
||||||
|
|
22
target/linux/mediatek/patches-4.4/0103-nand_fixes.patch
Normal file
22
target/linux/mediatek/patches-4.4/0103-nand_fixes.patch
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
--- a/drivers/mtd/nand/mtk_nand.c
|
||||||
|
+++ b/drivers/mtd/nand/mtk_nand.c
|
||||||
|
@@ -1017,8 +1017,8 @@
|
||||||
|
if (section >= eccsteps)
|
||||||
|
return -ERANGE;
|
||||||
|
|
||||||
|
- oob_region->length = fdm->reg_size - fdm->ecc_size;
|
||||||
|
- oob_region->offset = section * fdm->reg_size + fdm->ecc_size;
|
||||||
|
+ oob_region->length = fdm->reg_size - 1;
|
||||||
|
+ oob_region->offset = section * fdm->reg_size + 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -1058,7 +1058,7 @@
|
||||||
|
fdm->reg_size = NFI_FDM_MAX_SIZE;
|
||||||
|
|
||||||
|
/* bad block mark storage */
|
||||||
|
- fdm->ecc_size = 1;
|
||||||
|
+ fdm->ecc_size = fdm->reg_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mtk_nfc_set_bad_mark_ctl(struct mtk_nfc_bad_mark_ctl *bm_ctl,
|
Loading…
Reference in a new issue