[PATCH v4] mtd: spi-nor: Add support for XM25LU64C

Ssunk ssunkkan at gmail.com
Fri Jul 11 01:43:42 PDT 2025


The XM25LU64C is a 64Mbit (8MB) SPI-NOR flash memory manufactured by
Wuhan Xinxin Semiconductor Manufacturing Corp. (XMC). This device
supports SFDP. However, additional flashflags beyond SFDP are required
to fully describe its capabilities.
This patch adds an explicit entry for the XM25LU64C, marking support for:

  - 4KiB sector erase (SECT_4K)
  - Dual and Quad read modes (DUAL_READ, QUAD_READ)
  - Block-level lock/unlock support (HAS_LOCK)
  - Top/Bottom protection bits (HAS_TB)

These flash capabilities were confirmed against the vendor datasheet:

  https://www.xmcwh.com/uploads/954/XM25LU64C_V1.5.pdf

### Testing:
Tested according to the "Minimum testing requirements" described in:

  https://docs.kernel.org/driver-api/mtd/spi-nor.html

- This flash is populated on the MT8189-chromebook board and was tested at 52M
- frequency using the jedec,spi-nor SPI controller.
- Detected correctly by Linux MTD subsystem:

    # cat /sys/bus/spi/devices/spi5.0/spi-nor/partname
    XM25LU64C

    # cat /sys/bus/spi/devices/spi5.0/spi-nor/jedec_id
    204117

    # cat /sys/bus/spi/devices/spi5.0/spi-nor/manufacturer
    xmc

- Verified SFDP table presence and correctness:

    # xxd -p /sys/bus/spi/devices/spi5.0/spi-nor/sfdp
    53464450060102ff00060110300000ff20000104d00000ff84000102c0...
    # sha256sum /sys/bus/spi/devices/spi5.0/spi-nor/sfdp
    27ef209af54d6fef4f51f14300e50db95f13180024f3e1aa1c4202edb4914be5
    
- Dump debugfs data:
    # cat /sys/kernel/debug/spi-nor/spi5.0/capabilities
    Supported read modes by the flash
     1S-1S-1S
      opcode	0x03
      mode cycles	0
      dummy cycles	0
     1S-1S-2S
      opcode	0x3b
      mode cycles	0
      dummy cycles	8
     1S-2S-2S
      opcode	0xbb
      mode cycles	2
      dummy cycles	2
     1S-1S-4S
      opcode	0x6b
      mode cycles	0
      dummy cycles	8
     1S-4S-4S
      opcode	0xeb
      mode cycles	2
      dummy cycles	4
     4S-4S-4S
      opcode	0xeb
      mode cycles	2
      dummy cycles	0
    Supported page program modes by the flash
     1S-1S-1S
      opcode		0x02
    Supported page program modes by the flash
     1S-1S-1S
     opcode		0x02
      
    # cat /sys/kernel/debug/spi-nor/spi5.0/params
    name		XM25LU64C
    id			20 41 17 20 41 17
    size		8.00 MiB
    write size		1
    page size		256
    address nbytes	3
    flags		HAS_16BIT_SR | SOFT_RESET

    opcodes
     read		0xbb
     dummy cycles	4
     erase		0x20
     program		0x02
     8D extension	none

    protocols
     read		1S-2S-2S
     write		1S-1S-1S
     register		1S-1S-1S

    erase commands
     20 (4.00 KiB) [1]
     52 (32.0 KiB) [2]
     d8 (64.0 KiB) [3]
     c7 (8.00 MiB)

    sector map
     region (in hex)   | erase mask | flags
     ------------------+------------+----------
     00000000-007fffff |     [ 123] |

- Vrify write:
    # dd if=/dev/urandom of=./spi_test bs=1M count=2
    2+0 records in
    2+0 records out
    2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.0334051 s, 62.8 MB/s
    
    # sha256sum spi*
    be845b59c00525b0e0d570468c7b014bc8e9895c61ce74e8ca4cfc00e34d08aa  spi_test

Signed-off-by: Kankan Sun <ssunkkan at gmail.com>

---

Changes since v2:
- Fixed broken datasheet URL
- Rewrote commit message to clarify SFDP usage and flash flags
- Removed irrelevant internal vendor references
- Added test information of Minimum testing requirements

---
 drivers/mtd/spi-nor/xmc.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/mtd/spi-nor/xmc.c b/drivers/mtd/spi-nor/xmc.c
index d5a06054b0dd..f1f2a9ba353e 100644
--- a/drivers/mtd/spi-nor/xmc.c
+++ b/drivers/mtd/spi-nor/xmc.c
@@ -19,6 +19,12 @@ static const struct flash_info xmc_nor_parts[] = {
 		.name = "XM25QH128A",
 		.size = SZ_16M,
 		.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
+	}, {
+		.id = SNOR_ID(0x20, 0x41, 0x17),
+		.name = "XM25LU64C",
+		.size = SZ_8M,
+		.flags = SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB,
+		.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
 	},
 };
 
-- 
2.34.1




More information about the linux-mtd mailing list