kernel: bump 5.15 to 5.15.132
[openwrt/openwrt.git] / target / linux / generic / backport-5.15 / 422-v5.19-mtd-spi-nor-support-eon-en25qh256a.patch
1 From 6abef37d16d0c570ef5a149e63762fba2a30804b Mon Sep 17 00:00:00 2001
2 From: "Leon M. George" <leon@georgemail.eu>
3 Date: Wed, 30 Mar 2022 16:16:56 +0200
4 Subject: [PATCH] mtd: spi-nor: support eon en25qh256a variant
5
6 The EN25QH256A variant of the EN25QH256 doesn't initialize correctly from SFDP
7 alone and only accesses memory below 8m (addr_width is 4 but read_opcode takes
8 only 3 bytes).
9
10 Set SNOR_F_4B_OPCODES if the flash chip variant was detected using hwcaps.
11
12 The fix submitted upstream uses the PARSE_SFDP initializer that is not
13 available in the kernel used with Openwrt.
14
15 Signed-off-by: Leon M. George <leon@georgemail.eu>
16 ---
17 drivers/mtd/spi-nor/eon.c | 11 +++++++++++
18 1 file changed, 11 insertions(+)
19
20 --- a/drivers/mtd/spi-nor/eon.c
21 +++ b/drivers/mtd/spi-nor/eon.c
22 @@ -8,6 +8,16 @@
23
24 #include "core.h"
25
26 +static void en25qh256_post_sfdp_fixups(struct spi_nor *nor)
27 +{
28 + if (nor->params->hwcaps.mask & SNOR_HWCAPS_READ_1_1_4)
29 + nor->flags |= SNOR_F_4B_OPCODES;
30 +}
31 +
32 +static const struct spi_nor_fixups en25qh256_fixups = {
33 + .post_sfdp = en25qh256_post_sfdp_fixups,
34 +};
35 +
36 static const struct flash_info eon_parts[] = {
37 /* EON -- en25xxx */
38 { "en25f32", INFO(0x1c3116, 0, 64 * 1024, 64, SECT_4K) },
39 @@ -23,7 +33,9 @@ static const struct flash_info eon_parts
40 { "en25qh64", INFO(0x1c7017, 0, 64 * 1024, 128,
41 SECT_4K | SPI_NOR_DUAL_READ) },
42 { "en25qh128", INFO(0x1c7018, 0, 64 * 1024, 256, 0) },
43 - { "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512, 0) },
44 + { "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512,
45 + SPI_NOR_DUAL_READ)
46 + .fixups = &en25qh256_fixups },
47 { "en25s64", INFO(0x1c3817, 0, 64 * 1024, 128, SECT_4K) },
48 };
49