[PATCH 00/19] Ensure good ECC settings

Miquel Raynal miquel.raynal at bootlin.com
Fri Nov 13 07:34:05 EST 2020


Hello,

As part of a previous work (~70 patches), the DT parsing operation has
been moved in the core in order to be generic to all NAND devices when
applicable. Depending on the organization of the driver, this could
have an impact, or not.

The problem here is (mainly) the way the ECC provider is
selected. Many host controller drivers simply set a default, others
only support a specific value. Both used the same code for these two
purposes.

This series should have been merged before the previously mentioned
series, but I simply overlooked that aspect and now I get various bug
reports, all related. So I plan to merge this series as part of a
fixes PR to be sure they get merged for v5.10.

The idea in all the following patches is to move the ECC
initialization in the ->attach_chip() hook, which gets called during
nand_scan(), after NAND discovery. As this stage, we know the NAND
chip memory layout, features and constraints. It is the moment when
the core requests the NAND controller driver to finalize its
initialization (ie. the ECC bits).

When the controller does not embed a hardware ECC engine, software
engines are used, we usually don't have the choice, so we keep
enforcing the only values supported by the controller. Otherwise, we
make a distinction between the choice of the hardware ECC engine or
any other engine.

Regards,
Miquèl


Miquel Raynal (19):
  mtd: rawnand: gpio: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: xway: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: ams-delta: Move the ECC initialization to
    ->attach_chip()
  mtd: rawnand: au1550: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: cs553x: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: davinci: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: diskonchip: Move the ECC initialization to
    ->attach_chip()
  mtd: rawnand: fsmc: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: lpc32xx_mlc: Move the ECC initialization to
    ->attach_chip()
  mtd: rawnand: lpc32xx_slc: Move the ECC initialization to
    ->attach_chip()
  mtd: rawnand: mpc5121: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: orion: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: txx9ndfmc: Move the ECC initialization to
    ->attach_chip()
  mtd: rawnand: tmio: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: pasemi: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: plat_nand: Move the ECC initialization to
    ->attach_chip()
  mtd: rawnand: r852: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: sharpsl: Move the ECC initialization to ->attach_chip()
  mtd: rawnand: socrates: Move the ECC initialization to ->attach_chip()

 drivers/mtd/nand/raw/ams-delta.c     | 12 ++++++---
 drivers/mtd/nand/raw/au1550nd.c      | 11 ++++++--
 drivers/mtd/nand/raw/cs553x_nand.c   | 24 +++++++++++------
 drivers/mtd/nand/raw/davinci_nand.c  |  8 +++---
 drivers/mtd/nand/raw/diskonchip.c    | 29 +++++++++++++-------
 drivers/mtd/nand/raw/fsmc_nand.c     | 30 ++++++++++-----------
 drivers/mtd/nand/raw/gpio.c          | 11 ++++++--
 drivers/mtd/nand/raw/lpc32xx_mlc.c   | 23 +++++++++-------
 drivers/mtd/nand/raw/lpc32xx_slc.c   | 26 +++++++++---------
 drivers/mtd/nand/raw/mpc5121_nfc.c   | 19 +++++++++++--
 drivers/mtd/nand/raw/orion_nand.c    | 19 +++++++++++--
 drivers/mtd/nand/raw/pasemi_nand.c   | 19 +++++++++++--
 drivers/mtd/nand/raw/plat_nand.c     | 20 +++++++++++---
 drivers/mtd/nand/raw/r852.c          | 40 +++++++++++++++++++---------
 drivers/mtd/nand/raw/r852.h          |  1 +
 drivers/mtd/nand/raw/sharpsl.c       | 32 ++++++++++++++++------
 drivers/mtd/nand/raw/socrates_nand.c | 21 ++++++++++++---
 drivers/mtd/nand/raw/tmio_nand.c     | 33 ++++++++++++++++-------
 drivers/mtd/nand/raw/txx9ndfmc.c     | 14 ++++++----
 drivers/mtd/nand/raw/xway_nand.c     | 18 +++++++++++--
 20 files changed, 294 insertions(+), 116 deletions(-)

-- 
2.20.1




More information about the linux-mtd mailing list