Commit 7f376f19 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'mtd/fixes-for-5.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux

Pull mtd fixes from Miquel Raynal:
 "Second series of fixes for raw NAND drivers initiated because of a
  rework of the ECC engine subsystem.

  The location of the DT parsing logic got moved, breaking several
  drivers which in fact were not doing the ECC engine initialization at
  the right place.

  These drivers have been fixed by enforcing a particular ECC engine
  type and algorithm, software Hamming, while the algorithm may be
  overwritten by a DT property. This merge request fixes this in the
  xway, socrates, plat_nand, pasemi, orion, mpc5121, gpio, au1550 and
  ams-delta controller drivers"

* tag 'mtd/fixes-for-5.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
  mtd: rawnand: xway: Do not force a particular software ECC engine
  mtd: rawnand: socrates: Do not force a particular software ECC engine
  mtd: rawnand: plat_nand: Do not force a particular software ECC engine
  mtd: rawnand: pasemi: Do not force a particular software ECC engine
  mtd: rawnand: orion: Do not force a particular software ECC engine
  mtd: rawnand: mpc5121: Do not force a particular software ECC engine
  mtd: rawnand: gpio: Do not force a particular software ECC engine
  mtd: rawnand: au1550: Do not force a particular software ECC engine
  mtd: rawnand: ams-delta: Do not force a particular software ECC engine
parents 1de5d12b 33d974e7
...@@ -218,6 +218,8 @@ static int gpio_nand_setup_interface(struct nand_chip *this, int csline, ...@@ -218,6 +218,8 @@ static int gpio_nand_setup_interface(struct nand_chip *this, int csline,
static int gpio_nand_attach_chip(struct nand_chip *chip) static int gpio_nand_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -239,6 +239,8 @@ static int au1550nd_exec_op(struct nand_chip *this, ...@@ -239,6 +239,8 @@ static int au1550nd_exec_op(struct nand_chip *this,
static int au1550nd_attach_chip(struct nand_chip *chip) static int au1550nd_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -164,6 +164,8 @@ static int gpio_nand_exec_op(struct nand_chip *chip, ...@@ -164,6 +164,8 @@ static int gpio_nand_exec_op(struct nand_chip *chip,
static int gpio_nand_attach_chip(struct nand_chip *chip) static int gpio_nand_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -606,6 +606,8 @@ static void mpc5121_nfc_free(struct device *dev, struct mtd_info *mtd) ...@@ -606,6 +606,8 @@ static void mpc5121_nfc_free(struct device *dev, struct mtd_info *mtd)
static int mpc5121_nfc_attach_chip(struct nand_chip *chip) static int mpc5121_nfc_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -86,6 +86,8 @@ static void orion_nand_read_buf(struct nand_chip *chip, uint8_t *buf, int len) ...@@ -86,6 +86,8 @@ static void orion_nand_read_buf(struct nand_chip *chip, uint8_t *buf, int len)
static int orion_nand_attach_chip(struct nand_chip *chip) static int orion_nand_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -77,6 +77,8 @@ static int pasemi_device_ready(struct nand_chip *chip) ...@@ -77,6 +77,8 @@ static int pasemi_device_ready(struct nand_chip *chip)
static int pasemi_attach_chip(struct nand_chip *chip) static int pasemi_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -22,6 +22,8 @@ struct plat_nand_data { ...@@ -22,6 +22,8 @@ struct plat_nand_data {
static int plat_nand_attach_chip(struct nand_chip *chip) static int plat_nand_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -120,6 +120,8 @@ static int socrates_nand_device_ready(struct nand_chip *nand_chip) ...@@ -120,6 +120,8 @@ static int socrates_nand_device_ready(struct nand_chip *nand_chip)
static int socrates_attach_chip(struct nand_chip *chip) static int socrates_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
...@@ -149,6 +149,8 @@ static void xway_write_buf(struct nand_chip *chip, const u_char *buf, int len) ...@@ -149,6 +149,8 @@ static void xway_write_buf(struct nand_chip *chip, const u_char *buf, int len)
static int xway_attach_chip(struct nand_chip *chip) static int xway_attach_chip(struct nand_chip *chip)
{ {
chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT; chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
if (chip->ecc.algo == NAND_ECC_ALGO_UNKNOWN)
chip->ecc.algo = NAND_ECC_ALGO_HAMMING; chip->ecc.algo = NAND_ECC_ALGO_HAMMING;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment