[PATCH v10 0/3] mtd: spi-nand: Add support for randomizer feature

Cheng Ming Lin
2026-05-05T01:37:38Z

This patch series introduces randomizer support for SPI NAND devices.

- Patch 1: add the nand-randomizer property to the generic nand-chip.yaml
bindings. Instead of using boolean properties, it introduces a
uint32 enum (0 or 1). If the property is omitted, the driver
will not interfere and will leave the randomizer in its current
state.
- Patch 2: add the initialization logic and the set_randomizer callback
to the core framework. The core will now parse the device tree
properties and enable or disable the randomizer accordingly
during spinand_init.
- Patch 3: implement the set_randomizer callback specifically for Macronix
chips (MX35LF/UF series) to handle the vendor-specific register
operations.

v10:
* mtd: spi-nand: Add support for randomizer: set_randomizer call
now passes the rand_val directly.

v9:
* Replaced 'nand-enable-randomizer'/'nand-disable-randomizer'
boolean properties with a single 'nand-randomizer' uint32 enum.
* Switched to use of_property_read_u32() to align with the new
binding.

v8:
* dt-bindings: spi-nand: macronix: Remove the chip-specific Application
Note link from the commit message to keep the binding generic.
* mtd: spi-nand: macronix: Update the broken Application Note link and
move it here from the dt-binding patch per Miquel's suggestion.

v7:
* Directly return the result in macronix_set_randomizer()

v6:
* Added mutual-exclusive constraints using not with required for
nand-randomizer-enable and nand-randomizer-disable properties based
on Krzysztof's feedback.
* Simplified the return path in macronix_set_randomizer() to directly
return ret; and dropped unrelated formatting changes.

v5:
* Promoted the randomizer configuration to use generic NAND properties
(nand-randomizer-enable and nand-randomizer-disable) instead of
vendor-specific bindings.
* Refactored the initialization architecture in core.c. The core framework
is now responsible for parsing the device tree properties and deciding
whether to enable or disable the randomizer.

v4:
* Fix a build error in spinand_randomizer_init() where a value was
returned from a void function. (Reported by kernel test robot)
* Update the return type to int.

v3:
* Revert the device tree property to the vendor-specific
"mxic,randomizer-enable" to strictly follow vendor-specific bindings.

* Update the 'set_randomizer' callback signature to accept a boolean
'enable' argument, allowing the feature to be explicitly enabled or
disabled.

* Switch the implementation to use the standard SET_FEATURE command
to modify the Configuration Register (0x10), replacing the previous
special program command method.

v2:
* Create a global NAND DT property

Cheng Ming Lin (3):
dt-bindings: mtd: nand: Add nand-randomizer property
mtd: spi-nand: Add support for randomizer
mtd: spi-nand: macronix: Enable randomizer support

.../devicetree/bindings/mtd/nand-chip.yaml | 9 +++++
drivers/mtd/nand/spi/core.c | 20 ++++++++++
drivers/mtd/nand/spi/macronix.c | 38 ++++++++++++++-----
include/linux/mtd/spinand.h | 9 +++++
4 files changed, 66 insertions(+), 10 deletions(-)

--
2.25.1