Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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.

Link: https://github.com/openwrt/openwrt/pull/15214#issuecomment-3514824435
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>

authored by

Daniel Golle and committed by
Miquel Raynal
b98994cb 1f3dcfe5

+26
+1
drivers/mtd/nand/spi/core.c
··· 1227 1227 static const struct spinand_manufacturer *spinand_manufacturers[] = { 1228 1228 &alliancememory_spinand_manufacturer, 1229 1229 &ato_spinand_manufacturer, 1230 + &esmt_8c_spinand_manufacturer, 1230 1231 &esmt_c8_spinand_manufacturer, 1231 1232 &fmsh_spinand_manufacturer, 1232 1233 &foresee_spinand_manufacturer,
+24
drivers/mtd/nand/spi/esmt.c
··· 12 12 13 13 /* ESMT uses GigaDevice 0xc8 JECDEC ID on some SPI NANDs */ 14 14 #define SPINAND_MFR_ESMT_C8 0xc8 15 + #define SPINAND_MFR_ESMT_8C 0x8c 15 16 16 17 #define ESMT_F50L1G41LB_CFG_OTP_PROTECT BIT(7) 17 18 #define ESMT_F50L1G41LB_CFG_OTP_LOCK \ ··· 185 184 .read = spinand_fact_otp_read, 186 185 }; 187 186 187 + 188 + static const struct spinand_info esmt_8c_spinand_table[] = { 189 + SPINAND_INFO("F50L1G41LC", 190 + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x2C), 191 + NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), 192 + NAND_ECCREQ(1, 512), 193 + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, 194 + &write_cache_variants, 195 + &update_cache_variants), 196 + 0, 197 + SPINAND_ECCINFO(&f50l1g41lb_ooblayout, NULL), 198 + SPINAND_USER_OTP_INFO(28, 2, &f50l1g41lb_user_otp_ops), 199 + SPINAND_FACT_OTP_INFO(2, 0, &f50l1g41lb_fact_otp_ops)), 200 + }; 201 + 188 202 static const struct spinand_info esmt_c8_spinand_table[] = { 189 203 SPINAND_INFO("F50L1G41LB", 190 204 SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x01, 0x7f, ··· 238 222 }; 239 223 240 224 static const struct spinand_manufacturer_ops esmt_spinand_manuf_ops = { 225 + }; 226 + 227 + const struct spinand_manufacturer esmt_8c_spinand_manufacturer = { 228 + .id = SPINAND_MFR_ESMT_8C, 229 + .name = "ESMT", 230 + .chips = esmt_8c_spinand_table, 231 + .nchips = ARRAY_SIZE(esmt_8c_spinand_table), 232 + .ops = &esmt_spinand_manuf_ops, 241 233 }; 242 234 243 235 const struct spinand_manufacturer esmt_c8_spinand_manufacturer = {
+1
include/linux/mtd/spinand.h
··· 354 354 /* SPI NAND manufacturers */ 355 355 extern const struct spinand_manufacturer alliancememory_spinand_manufacturer; 356 356 extern const struct spinand_manufacturer ato_spinand_manufacturer; 357 + extern const struct spinand_manufacturer esmt_8c_spinand_manufacturer; 357 358 extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer; 358 359 extern const struct spinand_manufacturer fmsh_spinand_manufacturer; 359 360 extern const struct spinand_manufacturer foresee_spinand_manufacturer;