From: Hauke Mehrtens Date: Thu, 27 Nov 2025 21:27:55 +0000 (+0100) Subject: uboot-mediatek: mtd: spinand: esmt: add support for F50L1G41LC X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=c84025dea29602d149d22a86502d784f292441fe;p=openwrt%2Fstaging%2Fstintel.git uboot-mediatek: mtd: spinand: esmt: add support for F50L1G41LC Add support for esmt F50L1G41LC flash chip. It is used in some recent Cudy devices. Link: https://github.com/openwrt/openwrt/pull/20962 Signed-off-by: Hauke Mehrtens --- diff --git a/package/boot/uboot-mediatek/patches/102-mtd-spinand-esmt-add-support-for-F50L1G41LC.patch b/package/boot/uboot-mediatek/patches/102-mtd-spinand-esmt-add-support-for-F50L1G41LC.patch new file mode 100644 index 0000000000..eb11afa2b5 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/102-mtd-spinand-esmt-add-support-for-F50L1G41LC.patch @@ -0,0 +1,68 @@ +Subject: [PATCH] mtd: spinand: esmt: add support for F50L1G41LC + +This adds support for ESMT F50L1G41LC, which appears to be an updated +version of the already supported F50L1G41LB. +Add esmt_8c SPI_NAND manufacturer to account for the newly used vendor +ID with support for the ESMT F50L1G41LC chip. + +--- a/drivers/mtd/nand/spi/core.c ++++ b/drivers/mtd/nand/spi/core.c +@@ -895,6 +895,7 @@ static const struct spinand_manufacturer + &toshiba_spinand_manufacturer, + &winbond_spinand_manufacturer, + &esmt_c8_spinand_manufacturer, ++ &esmt_8c_spinand_manufacturer, + &foresee_spinand_manufacturer, + &xtx_spinand_manufacturer, + }; +--- a/drivers/mtd/nand/spi/esmt.c ++++ b/drivers/mtd/nand/spi/esmt.c +@@ -13,6 +13,7 @@ + + /* ESMT uses GigaDevice 0xc8 JECDEC ID on some SPI NANDs */ + #define SPINAND_MFR_ESMT_C8 0xc8 ++#define SPINAND_MFR_ESMT_8C 0x8c + + static SPINAND_OP_VARIANTS(read_cache_variants, + SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0), +@@ -104,6 +105,18 @@ static const struct mtd_ooblayout_ops f5 + .rfree = f50l1g41lb_ooblayout_free, + }; + ++static const struct spinand_info esmt_8c_spinand_table[] = { ++ SPINAND_INFO("F50L1G41LC", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x2C), ++ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), ++ NAND_ECCREQ(1, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&f50l1g41lb_ooblayout, NULL)), ++}; ++ + static const struct spinand_info esmt_c8_spinand_table[] = { + SPINAND_INFO("F50L1G41LB", + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x01), +@@ -135,3 +148,11 @@ const struct spinand_manufacturer esmt_c + .nchips = ARRAY_SIZE(esmt_c8_spinand_table), + .ops = &esmt_spinand_manuf_ops, + }; ++ ++const struct spinand_manufacturer esmt_8c_spinand_manufacturer = { ++ .id = SPINAND_MFR_ESMT_8C, ++ .name = "ESMT", ++ .chips = esmt_8c_spinand_table, ++ .nchips = ARRAY_SIZE(esmt_8c_spinand_table), ++ .ops = &esmt_spinand_manuf_ops, ++}; +--- a/include/linux/mtd/spinand.h ++++ b/include/linux/mtd/spinand.h +@@ -306,6 +306,7 @@ extern const struct spinand_manufacturer + extern const struct spinand_manufacturer toshiba_spinand_manufacturer; + extern const struct spinand_manufacturer winbond_spinand_manufacturer; + extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer; ++extern const struct spinand_manufacturer esmt_8c_spinand_manufacturer; + extern const struct spinand_manufacturer foresee_spinand_manufacturer; + extern const struct spinand_manufacturer xtx_spinand_manufacturer; +