mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump 5.10 to 5.10.212 (#11961)
This commit is contained in:
parent
651cda2805
commit
8c403eca0e
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.10 = .210
|
LINUX_VERSION-5.10 = .212
|
||||||
LINUX_KERNEL_HASH-5.10.210 = 4ea63c5a90fdc3c459ab35c11ee8c93d2364a7cdbfb101100f8cab70d490ef6d
|
LINUX_KERNEL_HASH-5.10.212 = 0cf3e467bd8d35533888327e9f8a9a9d354fdf83e8f82e9fe5a234f896a07493
|
||||||
|
@ -1,172 +0,0 @@
|
|||||||
From bd568cc04c675b7fa97214d278a54794c2ecc2ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Reto Schneider <reto.schneider@husqvarnagroup.com>
|
|
||||||
Date: Thu, 11 Feb 2021 12:36:19 +0100
|
|
||||||
Subject: [PATCH] mtd: spinand: gigadevice: Support GD5F1GQ5UExxG
|
|
||||||
|
|
||||||
The relevant changes to the already existing GD5F1GQ4UExxG support has
|
|
||||||
been determined by consulting the GigaDevice product change notice
|
|
||||||
AN-0392-10, version 1.0 from November 30, 2020.
|
|
||||||
|
|
||||||
As the overlaps are huge, variable names have been generalized
|
|
||||||
accordingly.
|
|
||||||
|
|
||||||
Apart from the lowered ECC strength (4 instead of 8 bits per 512 bytes),
|
|
||||||
the new device ID, and the extra quad IO dummy byte, no changes had to
|
|
||||||
be taken into account.
|
|
||||||
|
|
||||||
New hardware features are not supported, namely:
|
|
||||||
- Power on reset
|
|
||||||
- Unique ID
|
|
||||||
- Double transfer rate (DTR)
|
|
||||||
- Parameter page
|
|
||||||
- Random data quad IO
|
|
||||||
|
|
||||||
The inverted semantic of the "driver strength" register bits, defaulting
|
|
||||||
to 100% instead of 50% for the Q5 devices, got ignored as the driver has
|
|
||||||
never touched them anyway.
|
|
||||||
|
|
||||||
The no longer supported "read from cache during block erase"
|
|
||||||
functionality is not reflected as the current SPI NAND core does not
|
|
||||||
support it anyway.
|
|
||||||
|
|
||||||
Implementation has been tested on MediaTek MT7688 based GARDENA smart
|
|
||||||
Gateways using both, GigaDevice GD5F1GQ5UEYIG and GD5F1GQ4UBYIG.
|
|
||||||
|
|
||||||
Signed-off-by: Reto Schneider <reto.schneider@husqvarnagroup.com>
|
|
||||||
Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>
|
|
||||||
Reviewed-by: Stefan Roese <sr@denx.de>
|
|
||||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
||||||
Link: https://lore.kernel.org/linux-mtd/20210211113619.3502-1-code@reto-schneider.ch
|
|
||||||
(cherry picked from commit 469b992489852b500d39048aa0013639dfe9f2e6)
|
|
||||||
---
|
|
||||||
drivers/mtd/nand/spi/gigadevice.c | 69 +++++++++++++++++++++++++++----
|
|
||||||
1 file changed, 60 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/gigadevice.c
|
|
||||||
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
|
||||||
@@ -13,7 +13,10 @@
|
|
||||||
#define GD5FXGQ4XA_STATUS_ECC_1_7_BITFLIPS (1 << 4)
|
|
||||||
#define GD5FXGQ4XA_STATUS_ECC_8_BITFLIPS (3 << 4)
|
|
||||||
|
|
||||||
-#define GD5FXGQ4UEXXG_REG_STATUS2 0xf0
|
|
||||||
+#define GD5FXGQ5XE_STATUS_ECC_1_4_BITFLIPS (1 << 4)
|
|
||||||
+#define GD5FXGQ5XE_STATUS_ECC_4_BITFLIPS (3 << 4)
|
|
||||||
+
|
|
||||||
+#define GD5FXGQXXEXXG_REG_STATUS2 0xf0
|
|
||||||
|
|
||||||
#define GD5FXGQ4UXFXXG_STATUS_ECC_MASK (7 << 4)
|
|
||||||
#define GD5FXGQ4UXFXXG_STATUS_ECC_NO_BITFLIPS (0 << 4)
|
|
||||||
@@ -102,7 +105,7 @@ static int gd5fxgq4xa_ecc_get_status(str
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int gd5fxgq4_variant2_ooblayout_ecc(struct mtd_info *mtd, int section,
|
|
||||||
+static int gd5fxgqx_variant2_ooblayout_ecc(struct mtd_info *mtd, int section,
|
|
||||||
struct mtd_oob_region *region)
|
|
||||||
{
|
|
||||||
if (section)
|
|
||||||
@@ -114,7 +117,7 @@ static int gd5fxgq4_variant2_ooblayout_e
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int gd5fxgq4_variant2_ooblayout_free(struct mtd_info *mtd, int section,
|
|
||||||
+static int gd5fxgqx_variant2_ooblayout_free(struct mtd_info *mtd, int section,
|
|
||||||
struct mtd_oob_region *region)
|
|
||||||
{
|
|
||||||
if (section)
|
|
||||||
@@ -127,9 +130,10 @@ static int gd5fxgq4_variant2_ooblayout_f
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static const struct mtd_ooblayout_ops gd5fxgq4_variant2_ooblayout = {
|
|
||||||
- .ecc = gd5fxgq4_variant2_ooblayout_ecc,
|
|
||||||
- .free = gd5fxgq4_variant2_ooblayout_free,
|
|
||||||
+/* Valid for Q4/Q5 and Q6 (untested) devices */
|
|
||||||
+static const struct mtd_ooblayout_ops gd5fxgqx_variant2_ooblayout = {
|
|
||||||
+ .ecc = gd5fxgqx_variant2_ooblayout_ecc,
|
|
||||||
+ .free = gd5fxgqx_variant2_ooblayout_free,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int gd5fxgq4xc_ooblayout_256_ecc(struct mtd_info *mtd, int section,
|
|
||||||
@@ -165,7 +169,7 @@ static int gd5fxgq4uexxg_ecc_get_status(
|
|
||||||
u8 status)
|
|
||||||
{
|
|
||||||
u8 status2;
|
|
||||||
- struct spi_mem_op op = SPINAND_GET_FEATURE_OP(GD5FXGQ4UEXXG_REG_STATUS2,
|
|
||||||
+ struct spi_mem_op op = SPINAND_GET_FEATURE_OP(GD5FXGQXXEXXG_REG_STATUS2,
|
|
||||||
&status2);
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
@@ -203,6 +207,43 @@ static int gd5fxgq4uexxg_ecc_get_status(
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int gd5fxgq5xexxg_ecc_get_status(struct spinand_device *spinand,
|
|
||||||
+ u8 status)
|
|
||||||
+{
|
|
||||||
+ u8 status2;
|
|
||||||
+ struct spi_mem_op op = SPINAND_GET_FEATURE_OP(GD5FXGQXXEXXG_REG_STATUS2,
|
|
||||||
+ &status2);
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ switch (status & STATUS_ECC_MASK) {
|
|
||||||
+ case STATUS_ECC_NO_BITFLIPS:
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ case GD5FXGQ5XE_STATUS_ECC_1_4_BITFLIPS:
|
|
||||||
+ /*
|
|
||||||
+ * Read status2 register to determine a more fine grained
|
|
||||||
+ * bit error status
|
|
||||||
+ */
|
|
||||||
+ ret = spi_mem_exec_op(spinand->spimem, &op);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * 1 ... 4 bits are flipped (and corrected)
|
|
||||||
+ */
|
|
||||||
+ /* bits sorted this way (1...0): ECCSE1, ECCSE0 */
|
|
||||||
+ return ((status2 & STATUS_ECC_MASK) >> 4) + 1;
|
|
||||||
+
|
|
||||||
+ case STATUS_ECC_UNCOR_ERROR:
|
|
||||||
+ return -EBADMSG;
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return -EINVAL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int gd5fxgq4ufxxg_ecc_get_status(struct spinand_device *spinand,
|
|
||||||
u8 status)
|
|
||||||
{
|
|
||||||
@@ -282,7 +323,7 @@ static const struct spinand_info gigadev
|
|
||||||
&write_cache_variants,
|
|
||||||
&update_cache_variants),
|
|
||||||
SPINAND_HAS_QE_BIT,
|
|
||||||
- SPINAND_ECCINFO(&gd5fxgq4_variant2_ooblayout,
|
|
||||||
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
|
||||||
gd5fxgq4uexxg_ecc_get_status)),
|
|
||||||
SPINAND_INFO("GD5F1GQ4UFxxG",
|
|
||||||
SPINAND_ID(SPINAND_READID_METHOD_OPCODE, 0xb1, 0x48),
|
|
||||||
@@ -292,8 +333,18 @@ static const struct spinand_info gigadev
|
|
||||||
&write_cache_variants,
|
|
||||||
&update_cache_variants),
|
|
||||||
SPINAND_HAS_QE_BIT,
|
|
||||||
- SPINAND_ECCINFO(&gd5fxgq4_variant2_ooblayout,
|
|
||||||
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
|
||||||
gd5fxgq4ufxxg_ecc_get_status)),
|
|
||||||
+ SPINAND_INFO("GD5F1GQ5UExxG",
|
|
||||||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
|
|
||||||
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
|
|
||||||
+ NAND_ECCREQ(4, 512),
|
|
||||||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
|
|
||||||
+ &write_cache_variants,
|
|
||||||
+ &update_cache_variants),
|
|
||||||
+ SPINAND_HAS_QE_BIT,
|
|
||||||
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
|
||||||
+ gd5fxgq5xexxg_ecc_get_status)),
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct spinand_manufacturer_ops gigadevice_spinand_manuf_ops = {
|
|
@ -1,44 +0,0 @@
|
|||||||
From a4f9dd55c5e1bb951db6f1dee20e62e0103f3438 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Chuanhong Guo <gch981213@gmail.com>
|
|
||||||
Date: Sun, 20 Mar 2022 17:59:57 +0800
|
|
||||||
Subject: [PATCH 1/5] mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG
|
|
||||||
|
|
||||||
Read From Cache Quad IO (EBH) uses 2 dummy bytes on this chip according
|
|
||||||
to page 23 of the datasheet[0].
|
|
||||||
|
|
||||||
[0]: https://www.gigadevice.com/datasheet/gd5f1gq5xexxg/
|
|
||||||
|
|
||||||
Fixes: 469b99248985 ("mtd: spinand: gigadevice: Support GD5F1GQ5UExxG")
|
|
||||||
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|
||||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
||||||
Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-2-gch981213@gmail.com
|
|
||||||
---
|
|
||||||
drivers/mtd/nand/spi/gigadevice.c | 10 +++++++++-
|
|
||||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/gigadevice.c
|
|
||||||
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
|
||||||
@@ -39,6 +39,14 @@ static SPINAND_OP_VARIANTS(read_cache_va
|
|
||||||
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(true, 0, 1, NULL, 0),
|
|
||||||
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(false, 0, 0, NULL, 0));
|
|
||||||
|
|
||||||
+static SPINAND_OP_VARIANTS(read_cache_variants_1gq5,
|
|
||||||
+ SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
|
|
||||||
+ SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
|
|
||||||
+ SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0),
|
|
||||||
+ SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
|
|
||||||
+ SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
|
|
||||||
+ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
|
|
||||||
+
|
|
||||||
static SPINAND_OP_VARIANTS(write_cache_variants,
|
|
||||||
SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
|
|
||||||
SPINAND_PROG_LOAD(true, 0, NULL, 0));
|
|
||||||
@@ -339,7 +347,7 @@ static const struct spinand_info gigadev
|
|
||||||
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
|
|
||||||
NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
|
|
||||||
NAND_ECCREQ(4, 512),
|
|
||||||
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
|
|
||||||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
|
|
||||||
&write_cache_variants,
|
|
||||||
&update_cache_variants),
|
|
||||||
SPINAND_HAS_QE_BIT,
|
|
@ -19,7 +19,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-3-gch981213@gmail.
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/gigadevice.c
|
--- a/drivers/mtd/nand/spi/gigadevice.c
|
||||||
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
||||||
@@ -333,6 +333,36 @@ static const struct spinand_info gigadev
|
@@ -335,6 +335,36 @@ static const struct spinand_info gigadev
|
||||||
SPINAND_HAS_QE_BIT,
|
SPINAND_HAS_QE_BIT,
|
||||||
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
||||||
gd5fxgq4uexxg_ecc_get_status)),
|
gd5fxgq4uexxg_ecc_get_status)),
|
||||||
|
@ -14,7 +14,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-4-gch981213@gmail.
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/gigadevice.c
|
--- a/drivers/mtd/nand/spi/gigadevice.c
|
||||||
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
||||||
@@ -383,6 +383,16 @@ static const struct spinand_info gigadev
|
@@ -385,6 +385,16 @@ static const struct spinand_info gigadev
|
||||||
SPINAND_HAS_QE_BIT,
|
SPINAND_HAS_QE_BIT,
|
||||||
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
||||||
gd5fxgq5xexxg_ecc_get_status)),
|
gd5fxgq5xexxg_ecc_get_status)),
|
||||||
|
@ -35,7 +35,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-5-gch981213@gmail.
|
|||||||
static SPINAND_OP_VARIANTS(write_cache_variants,
|
static SPINAND_OP_VARIANTS(write_cache_variants,
|
||||||
SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
|
SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
|
||||||
SPINAND_PROG_LOAD(true, 0, NULL, 0));
|
SPINAND_PROG_LOAD(true, 0, NULL, 0));
|
||||||
@@ -391,6 +399,46 @@ static const struct spinand_info gigadev
|
@@ -393,6 +401,46 @@ static const struct spinand_info gigadev
|
||||||
&write_cache_variants,
|
&write_cache_variants,
|
||||||
&update_cache_variants),
|
&update_cache_variants),
|
||||||
SPINAND_HAS_QE_BIT,
|
SPINAND_HAS_QE_BIT,
|
||||||
|
@ -22,7 +22,7 @@ Link: https://lore.kernel.org/linux-mtd/20220320100001.247905-6-gch981213@gmail.
|
|||||||
|
|
||||||
--- a/drivers/mtd/nand/spi/gigadevice.c
|
--- a/drivers/mtd/nand/spi/gigadevice.c
|
||||||
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
+++ b/drivers/mtd/nand/spi/gigadevice.c
|
||||||
@@ -441,6 +441,66 @@ static const struct spinand_info gigadev
|
@@ -443,6 +443,66 @@ static const struct spinand_info gigadev
|
||||||
SPINAND_HAS_QE_BIT,
|
SPINAND_HAS_QE_BIT,
|
||||||
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
|
||||||
gd5fxgq5xexxg_ecc_get_status)),
|
gd5fxgq5xexxg_ecc_get_status)),
|
||||||
|
Loading…
Reference in New Issue
Block a user