- Backport upstream Winbond W25N04KV Flash support. - Backport upstream GigaDevice series Flash support. - Backport pending Airoha AN8855 switch TPID value fix. - Backport Mediatek UART baudrate accuracy compensation support. - Pull mtk patchset from MTK SDK mtksoc-20250711 branch: Remove mt7622_rfb changes. The MTK SDK already dropped them. Replace Airoha ethernet PHY driver with new version. Split downstream snfi changes into independent patches. Add new Marvell CUX3410 PHY driver. Add new MediaTek built-in 2.5Gbps PHY driver. Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
56 lines
1.9 KiB
Diff
56 lines
1.9 KiB
Diff
From fe37fb8214e40ea64cf03453d112527b629fb08a Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Sat, 7 Jun 2025 23:11:21 +0200
|
|
Subject: [PATCH] mtd: spinand: winbond: add Winbond W25N04KV flash support
|
|
|
|
Add Winbond W25N04KV flash support that use a different value to detect
|
|
ECC bitflip.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
---
|
|
drivers/mtd/nand/spi/winbond.c | 13 +++++++++++++
|
|
1 file changed, 13 insertions(+)
|
|
|
|
--- a/drivers/mtd/nand/spi/winbond.c
|
|
+++ b/drivers/mtd/nand/spi/winbond.c
|
|
@@ -11,6 +11,7 @@
|
|
#include <linux/device.h>
|
|
#include <linux/kernel.h>
|
|
#endif
|
|
+#include <linux/bitfield.h>
|
|
#include <linux/bug.h>
|
|
#include <linux/mtd/spinand.h>
|
|
|
|
@@ -18,6 +19,8 @@
|
|
|
|
#define WINBOND_CFG_BUF_READ BIT(3)
|
|
|
|
+#define W25N04KV_STATUS_ECC_5_8_BITFLIPS GENMASK(5, 4)
|
|
+
|
|
static SPINAND_OP_VARIANTS(read_cache_variants,
|
|
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
|
|
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
|
|
@@ -121,6 +124,7 @@ static int w25n02kv_ecc_get_status(struc
|
|
return -EBADMSG;
|
|
|
|
case STATUS_ECC_HAS_BITFLIPS:
|
|
+ case W25N04KV_STATUS_ECC_5_8_BITFLIPS:
|
|
/*
|
|
* Let's try to retrieve the real maximum number of bitflips
|
|
* in order to avoid forcing the wear-leveling layer to move
|
|
@@ -169,6 +173,15 @@ static const struct spinand_info winbond
|
|
NAND_ECCREQ(8, 512),
|
|
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
|
|
&write_cache_variants,
|
|
+ &update_cache_variants),
|
|
+ 0,
|
|
+ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),
|
|
+ SPINAND_INFO("W25N04KV",
|
|
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23),
|
|
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1),
|
|
+ NAND_ECCREQ(8, 512),
|
|
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
|
|
+ &write_cache_variants,
|
|
&update_cache_variants),
|
|
0,
|
|
SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),
|