All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Cheng Ming Lin <linchengming884@gmail.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>,
	Richard Weinberger <richard@nod.at>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Tudor Ambarus <tudor.ambarus@linaro.org>,
	Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>,
	Pablo Martin-Gomez <pmartin-gomez@freebox.fr>,
	Tianling Shen <cnsztl@gmail.com>,
	Pratyush Yadav <pratyush@kernel.org>,
	linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, alvinzhou@mxic.com.tw,
	Cheng Ming Lin <chengminglin@mxic.com.tw>
Subject: Re: [PATCH v8 1/3] dt-bindings: mtd: spinand: Add randomizer enable/disable properties
Date: Thu, 12 Mar 2026 09:05:53 -0500	[thread overview]
Message-ID: <20260312140553.GA2914438-robh@kernel.org> (raw)
In-Reply-To: <20260305071042.1193522-2-linchengming884@gmail.com>

On Thu, Mar 05, 2026 at 03:10:40PM +0800, Cheng Ming Lin wrote:
> From: Cheng Ming Lin <chengminglin@mxic.com.tw>
> 
> Add "nand-randomizer-enable" and "nand-randomizer-disable" boolean
> properties.
> 
> These properties allow enabling or disabling the randomizer feature
> via the device tree.
> 
> According to JEDEC standard JESD22-A117E, no single data pattern
> represents a universal worst-case for all NAND flash failure mechanisms.
> Different patterns, such as fully programmed, checkerboard, or mostly
> erased, can disproportionately stress specific cells (e.g., programmed,
> erased, or those influenced by adjacent states).
> 
> Given that no fixed pattern can cover all scenarios, the use of a
> randomized data pattern is a practical and effective mitigation strategy.
> Our hardware implements a randomizer feature that scrambles user data
> before it is written to the flash and restores the original data upon read.
> 
> This ensures the data stored on the media is more evenly distributed,
> thus reducing pattern-dependent degradation. This is especially crucial
> for preventing errors caused by unbalanced data (e.g., all zeros or
> all ones) in blocks with high program/erase (P/E) cycle counts.
> Ultimately, the randomizer improves the long-term reliability and
> endurance of the flash device.
> 
> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
> ---
>  .../devicetree/bindings/mtd/nand-chip.yaml     | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/mtd/nand-chip.yaml b/Documentation/devicetree/bindings/mtd/nand-chip.yaml
> index 609d4a4ddd80..2559cd97ccc5 100644
> --- a/Documentation/devicetree/bindings/mtd/nand-chip.yaml
> +++ b/Documentation/devicetree/bindings/mtd/nand-chip.yaml
> @@ -67,6 +67,24 @@ properties:
>        the secure regions present.
>      $ref: /schemas/types.yaml#/definitions/uint64-matrix
>  
> +  nand-randomizer-enable:
> +    description:
> +      Enable the randomizer feature. This property is mutually-exclusive
> +      with nand-randomizer-disable.
> +    type: boolean
> +
> +  nand-randomizer-disable:
> +    description:
> +      Disable the randomizer feature. This property is mutually-exclusive
> +      with nand-randomizer-enable.
> +    type: boolean
> +
> +dependencies:
> +  nand-randomizer-enable:
> +    not:
> +      required:
> +        - nand-randomizer-disable

Rather than define this in the schema, make the properties inheritly 
mutually-exclusive with a single property:

nand-randomizer = <0|1>;

That's assuming you need not present to mean a 3rd thing such as use the 
bootloader setting. If you only need enable/disable, then a 
single boolean property works.

Rob

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org>
To: Cheng Ming Lin <linchengming884@gmail.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>,
	Richard Weinberger <richard@nod.at>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Tudor Ambarus <tudor.ambarus@linaro.org>,
	Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>,
	Pablo Martin-Gomez <pmartin-gomez@freebox.fr>,
	Tianling Shen <cnsztl@gmail.com>,
	Pratyush Yadav <pratyush@kernel.org>,
	linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, alvinzhou@mxic.com.tw,
	Cheng Ming Lin <chengminglin@mxic.com.tw>
Subject: Re: [PATCH v8 1/3] dt-bindings: mtd: spinand: Add randomizer enable/disable properties
Date: Thu, 12 Mar 2026 09:05:53 -0500	[thread overview]
Message-ID: <20260312140553.GA2914438-robh@kernel.org> (raw)
In-Reply-To: <20260305071042.1193522-2-linchengming884@gmail.com>

On Thu, Mar 05, 2026 at 03:10:40PM +0800, Cheng Ming Lin wrote:
> From: Cheng Ming Lin <chengminglin@mxic.com.tw>
> 
> Add "nand-randomizer-enable" and "nand-randomizer-disable" boolean
> properties.
> 
> These properties allow enabling or disabling the randomizer feature
> via the device tree.
> 
> According to JEDEC standard JESD22-A117E, no single data pattern
> represents a universal worst-case for all NAND flash failure mechanisms.
> Different patterns, such as fully programmed, checkerboard, or mostly
> erased, can disproportionately stress specific cells (e.g., programmed,
> erased, or those influenced by adjacent states).
> 
> Given that no fixed pattern can cover all scenarios, the use of a
> randomized data pattern is a practical and effective mitigation strategy.
> Our hardware implements a randomizer feature that scrambles user data
> before it is written to the flash and restores the original data upon read.
> 
> This ensures the data stored on the media is more evenly distributed,
> thus reducing pattern-dependent degradation. This is especially crucial
> for preventing errors caused by unbalanced data (e.g., all zeros or
> all ones) in blocks with high program/erase (P/E) cycle counts.
> Ultimately, the randomizer improves the long-term reliability and
> endurance of the flash device.
> 
> Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
> ---
>  .../devicetree/bindings/mtd/nand-chip.yaml     | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/mtd/nand-chip.yaml b/Documentation/devicetree/bindings/mtd/nand-chip.yaml
> index 609d4a4ddd80..2559cd97ccc5 100644
> --- a/Documentation/devicetree/bindings/mtd/nand-chip.yaml
> +++ b/Documentation/devicetree/bindings/mtd/nand-chip.yaml
> @@ -67,6 +67,24 @@ properties:
>        the secure regions present.
>      $ref: /schemas/types.yaml#/definitions/uint64-matrix
>  
> +  nand-randomizer-enable:
> +    description:
> +      Enable the randomizer feature. This property is mutually-exclusive
> +      with nand-randomizer-disable.
> +    type: boolean
> +
> +  nand-randomizer-disable:
> +    description:
> +      Disable the randomizer feature. This property is mutually-exclusive
> +      with nand-randomizer-enable.
> +    type: boolean
> +
> +dependencies:
> +  nand-randomizer-enable:
> +    not:
> +      required:
> +        - nand-randomizer-disable

Rather than define this in the schema, make the properties inheritly 
mutually-exclusive with a single property:

nand-randomizer = <0|1>;

That's assuming you need not present to mean a 3rd thing such as use the 
bootloader setting. If you only need enable/disable, then a 
single boolean property works.

Rob

  reply	other threads:[~2026-03-12 14:06 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-05  7:10 [PATCH v8 0/3] mtd: spi-nand: Add support for randomizer feature Cheng Ming Lin
2026-03-05  7:10 ` Cheng Ming Lin
2026-03-05  7:10 ` [PATCH v8 1/3] dt-bindings: mtd: spinand: Add randomizer enable/disable properties Cheng Ming Lin
2026-03-05  7:10   ` Cheng Ming Lin
2026-03-12 14:05   ` Rob Herring [this message]
2026-03-12 14:05     ` Rob Herring
2026-03-12 14:45     ` Miquel Raynal
2026-03-12 14:45       ` Miquel Raynal
2026-03-05  7:10 ` [PATCH v8 2/3] mtd: spi-nand: Add support for randomizer Cheng Ming Lin
2026-03-05  7:10   ` Cheng Ming Lin
2026-03-05  7:10 ` [PATCH v8 3/3] mtd: spi-nand: macronix: Enable randomizer support Cheng Ming Lin
2026-03-05  7:10   ` Cheng Ming Lin
2026-03-09 17:03 ` [PATCH v8 0/3] mtd: spi-nand: Add support for randomizer feature Miquel Raynal
2026-03-09 17:03   ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260312140553.GA2914438-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=alvinzhou@mxic.com.tw \
    --cc=chengminglin@mxic.com.tw \
    --cc=cnsztl@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linchengming884@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=mikhail.kshevetskiy@iopsys.eu \
    --cc=miquel.raynal@bootlin.com \
    --cc=pmartin-gomez@freebox.fr \
    --cc=pratyush@kernel.org \
    --cc=richard@nod.at \
    --cc=tudor.ambarus@linaro.org \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.