[][kernel][mt7988][spim-nand][mtd: spi nand: Add spi nand W25N01KV]

[Description]
Add ids and config support of spi nand W25N01KV according to the
spec, QVL test passed after modified the code.

[Release-log]
N/A

Change-Id: If8b0ab2976fee776705562025d58e16db3547ec9
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6879485
diff --git a/target/linux/mediatek/patches-5.4/0495-mtd-spinand-winbond-Support-for-W25N01KV.patch b/target/linux/mediatek/patches-5.4/0495-mtd-spinand-winbond-Support-for-W25N01KV.patch
new file mode 100644
index 0000000..3b2200b
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/0495-mtd-spinand-winbond-Support-for-W25N01KV.patch
@@ -0,0 +1,77 @@
+diff -uprN a/drivers/mtd/nand/spi/Kconfig b/drivers/mtd/nand/spi/Kconfig
+--- a/drivers/mtd/nand/spi/Kconfig	2022-12-06 11:24:48.877723457 +0800
++++ b/drivers/mtd/nand/spi/Kconfig	2022-12-06 11:25:14.593951660 +0800
+@@ -7,11 +7,3 @@ menuconfig MTD_SPI_NAND
+ 	help
+ 	  This is the framework for the SPI NAND device drivers.
+ 
+-config MTD_SPI_NAND_W25N01KV
+-	tristate "Winbond W25N01KV Support"
+-	select MTD_SPI_NAND
+-	default n
+-	help
+-	  Winbond W25N01KV share the same ID with W25N01GV. However, they have
+-	  different attributes.
+-
+diff -uprN a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c
+--- a/drivers/mtd/nand/spi/winbond.c	2022-12-06 11:24:48.877723457 +0800
++++ b/drivers/mtd/nand/spi/winbond.c	2022-12-06 11:25:14.593951660 +0800
+@@ -26,13 +26,11 @@
+ #define W25N01_M02GV_STATUS_ECC_1_BITFLIPS	(1 << 4)
+ #define W25N01_M02GV_STATUS_ECC_UNCOR_ERROR	(2 << 4)
+ 
+-#if IS_ENABLED(CONFIG_MTD_SPI_NAND_W25N01KV)
+ #define W25N01KV_STATUS_ECC_MASK		(3 << 4)
+ #define W25N01KV_STATUS_ECC_NO_BITFLIPS		(0 << 4)
+ #define W25N01KV_STATUS_ECC_1_3_BITFLIPS	(1 << 4)
+ #define W25N01KV_STATUS_ECC_4_BITFLIPS		(3 << 4)
+ #define W25N01KV_STATUS_ECC_UNCOR_ERROR		(2 << 4)
+-#endif
+ 
+ static SPINAND_OP_VARIANTS(read_cache_variants,
+ 		SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
+@@ -116,7 +114,6 @@ static int w25m02gv_select_target(struct
+ 	return spi_mem_exec_op(spinand->spimem, &op);
+ }
+ 
+-#if IS_ENABLED(CONFIG_MTD_SPI_NAND_W25N01KV)
+ static int w25n01kv_ecc_get_status(struct spinand_device *spinand,
+ 					u8 status)
+ {
+@@ -139,7 +136,6 @@ static int w25n01kv_ecc_get_status(struc
+ 
+ 	return -EINVAL;
+ }
+-#endif
+ 
+ static int w25n02kv_n04kv_ecc_get_status(struct spinand_device *spinand,
+ 					u8 status)
+@@ -181,10 +177,9 @@ static const struct spinand_info winbond
+ 		     0,
+ 		     SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL),
+ 		     SPINAND_SELECT_TARGET(w25m02gv_select_target)),
+-#if IS_ENABLED(CONFIG_MTD_SPI_NAND_W25N01KV)
+ 	SPINAND_INFO("W25N01KV",
+-		     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x21),
+-		     NAND_MEMORG(1, 2048, 96, 64, 1024, 20, 1, 1, 1),
++		     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xae, 0x21),
++		     NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
+ 		     NAND_ECCREQ(4, 512),
+ 		     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ 					      &write_cache_variants,
+@@ -192,7 +187,6 @@ static const struct spinand_info winbond
+ 		     0,
+ 		     SPINAND_ECCINFO(&w25n02kv_n04kv_ooblayout,
+ 				     w25n01kv_ecc_get_status)),
+-#else
+ 	SPINAND_INFO("W25N01GV",
+ 		     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x21),
+ 		     NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
+@@ -202,7 +196,6 @@ static const struct spinand_info winbond
+ 					      &update_cache_variants),
+ 		     0,
+ 		     SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)),
+-#endif
+ 	SPINAND_INFO("W25N02KV",
+ 		     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x22),
+ 		     NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 2, 1, 1),