From: Miquel Raynal <miquel.raynal@bootlin.com> To: Boris Brezillon <boris.brezillon@collabora.com> Cc: Mason Yang <masonccyang@mxic.com.tw>, Vignesh Raghavendra <vigneshr@ti.com>, Tudor Ambarus <Tudor.Ambarus@microchip.com>, Julien Su <juliensu@mxic.com.tw>, Richard Weinberger <richard@nod.at>, Schrempf Frieder <frieder.schrempf@kontron.de>, Paul Cercueil <paul@crapouillou.net>, Marek Vasut <marek.vasut@gmail.com>, linux-mtd@lists.infradead.org, Thomas Petazzoni <thomas.petazzoni@bootlin.com>, Brian Norris <computersforpeace@gmail.com>, David Woodhouse <dwmw2@infradead.org>, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v3 06/40] mtd: rawnand: Use the new ECC engine type enumeration Date: Wed, 15 Jan 2020 11:33:28 +0100 Message-ID: <20200115113311.320986f3@xps13> (raw) In-Reply-To: <20191012112824.1ebb914c@dhcp-172-31-174-146.wireless.concordia.ca> Hi Boris, Boris Brezillon <boris.brezillon@collabora.com> wrote on Sat, 12 Oct 2019 11:28:24 +0200: > On Thu, 19 Sep 2019 21:31:06 +0200 > Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > > index 00a261284aad..ad0b892c2523 100644 > > --- a/drivers/mtd/nand/raw/nand_base.c > > +++ b/drivers/mtd/nand/raw/nand_base.c > > @@ -4835,7 +4835,7 @@ static int nand_detect(struct nand_chip *chip, struct nand_flash_dev *type) > > > > static const char * const nand_ecc_modes[] = { > > [NAND_ECC_NONE] = "none", > > - [NAND_ECC_SOFT] = "soft", > > + [NAND_SOFT_ECC_ENGINE] = "soft", > > Not sure why this one is changed. This string array still describes ECC > modes, not ECC engine types. > > > [NAND_ECC_HW] = "hw", > > [NAND_ECC_HW_SYNDROME] = "hw_syndrome", > > [NAND_ECC_HW_OOB_FIRST] = "hw_oob_first", > > @@ -4863,21 +4863,44 @@ static int of_get_nand_ecc_mode(struct device_node *np) > > if (err < 0) > > return err; > > > > - for (i = NAND_ECC_NONE; i < ARRAY_SIZE(nand_ecc_modes); i++) > > - if (!strcasecmp(pm, nand_ecc_modes[i])) > > + for (i = NAND_NO_ECC_ENGINE; > > + i < ARRAY_SIZE(nand_ecc_engine_providers); i++) > > + if (!strcasecmp(pm, nand_ecc_engine_providers[i])) > > return i; > > Hm, you still need to support the old bindings (I wonder how that can > work). What should be done instead is have a conversion table that turns > an ecc_mode string into a engine_type+placement pair, so you don't have > to update the DT bindings (though we might want to expose new props for > the new model, like ecc-placement and ecc-engine). As you know this series is already quite big :p. My point here is to clarify a bit but now rework the DT properties which are things that you can never get entirely rid of. This is exactly why I kept the string properties as before: not changing anything in the DT representation. Anyone with the time and desire to do so is welcome, but I'm not willing to do it in this series :) I'm addressing most of your comments (mainly enum/name changes) but the string definitions will remain the same, even if they are not entirely accurate. With these bits kept intact, the below logic works, I know it is not clean, and deserves more cleaning, but this is a distinct work :) > > > > > + for (i = NAND_ECC_SYNDROME_OOB_PLACEMENT; > > + i < ARRAY_SIZE(nand_ecc_engine_oob_placement); i++) > > + if (!strcasecmp(pm, nand_ecc_engine_oob_placement[i])) > > + return NAND_HW_ECC_ENGINE; > > + > > I also don't understand how this one works, placement does not give any > clue on the type of ECC engine (at least it shouldn't). > > > /* > > * For backward compatibility we support few obsoleted values that don't > > - * have their mappings into the nand_ecc_mode enum anymore (they were > > - * merged with other enums). > > + * have their mappings into the nand_ecc_engine_providers enum anymore > > + * (they were merged with other enums). > > */ > > if (!strcasecmp(pm, "soft_bch")) > > - return NAND_ECC_SOFT; > > + return NAND_SOFT_ECC_ENGINE; > > > > return -ENODEV; > > } Thanks, Miquèl ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply index Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-19 19:31 [PATCH v3 00/40] Introduce the generic ECC engine abstraction Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 01/40] mtd: rawnand: Avoid a typedef Miquel Raynal 2019-10-12 8:41 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 02/40] mtd: rawnand: Add an invalid ECC mode to discriminate with valid ones Miquel Raynal 2019-10-12 8:48 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 03/40] mtd: rawnand: Create a new enumeration to describe OOB placement Miquel Raynal 2019-10-12 9:02 ` Boris Brezillon 2019-10-12 9:07 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 04/40] mtd: rawnand: Separate the ECC engine type and the " Miquel Raynal 2019-10-12 9:05 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 05/40] mtd: rawnand: Create a new enumeration to describe properly ECC types Miquel Raynal 2019-10-12 9:14 ` Boris Brezillon 2020-01-15 20:58 ` Miquel Raynal 2019-10-12 9:55 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 06/40] mtd: rawnand: Use the new ECC engine type enumeration Miquel Raynal 2019-10-12 9:15 ` Boris Brezillon 2019-10-12 9:17 ` Boris Brezillon 2019-10-12 9:28 ` Boris Brezillon 2020-01-15 10:33 ` Miquel Raynal [this message] 2019-09-19 19:31 ` [PATCH v3 07/40] mtd: rawnand: Drop the legacy ECC " Miquel Raynal 2019-10-12 9:29 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 08/40] mtd: nand: Move nand_device forward declaration to the top Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 09/40] mtd: nand: Add an extra level in the Kconfig hierarchy Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 10/40] mtd: nand: Drop useless 'depends on' in Kconfig Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 11/40] mtd: nand: Add a NAND page I/O request type Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 12/40] mtd: nand: Rename a core structure Miquel Raynal 2019-10-12 9:35 ` Boris Brezillon 2020-01-16 8:53 ` Miquel Raynal 2020-01-16 9:12 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 13/40] mtd: nand: Add more parameters to the nand_ecc_props structure Miquel Raynal 2019-10-12 9:37 ` Boris Brezillon 2020-01-16 8:59 ` Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 14/40] mtd: nand: Introduce the ECC engine abstraction Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 15/40] mtd: nand: Convert the generic NAND layer to the generic ECC framework Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 16/40] mtd: Fix typo in mtd_ooblayout_set_databytes() description Miquel Raynal 2019-10-12 10:58 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 17/40] mtd: nand: Move standard OOB layouts to the generic ECC core Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 18/40] mtd: nand: Move ECC specific functions to the " Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 19/40] mtd: nand: ecc: Turn the software BCH implementation generic Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 20/40] mtd: rawnand: Get rid of chip->ecc.priv Miquel Raynal 2019-09-20 6:18 ` Maxime Ripard 2019-09-19 19:31 ` [PATCH v3 21/40] mtd: nand: ecc: Move Hamming code to the generic NAND layer Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 22/40] mtd: nand: ecc: Clarify the software Hamming introductory line Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 23/40] mtd: nand: ecc: Turn the software Hamming implementation generic Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 24/40] mtd: nand: Remove useless include about software Hamming ECC Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 25/40] mtd: nand: ecc: Let the software Hamming ECC engine be unselected Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 26/40] mtd: nand: ecc: Create the software BCH engine instance Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 27/40] mtd: nand: ecc: Create the software Hamming " Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 28/40] mtd: nand: Let software ECC engines be retrieved from the NAND core Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 29/40] mtd: spinand: Fix typo in comment Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 30/40] mtd: spinand: Move ECC related definitions earlier in the driver Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 31/40] mtd: spinand: Instantiate a SPI-NAND on-die ECC engine Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 32/40] mtd: nand: Let on-die ECC engines be retrieved from the NAND core Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 33/40] mtd: rawnand: Fill a default ECC provider/algorithm Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 34/40] mtd: spinand: " Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 35/40] mtd: nand: Add helpers to manage ECC engines and configurations Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 36/40] mtd: spinand: Use the external ECC engine logic Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 37/40] mtd: spinand: Propagate ECC information to the MTD structure Miquel Raynal 2020-02-17 13:27 ` Emil Lenngren 2020-02-17 13:31 ` Boris Brezillon 2019-09-19 19:31 ` [PATCH v3 38/40] mtd: spinand: Allow the case where there is no ECC engine Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 39/40] mtd: spinand: Fix OOB read Miquel Raynal 2019-09-19 19:31 ` [PATCH v3 40/40] mtd: nand: ecc: Add infrastructure to support hardware engines 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=20200115113311.320986f3@xps13 \ --to=miquel.raynal@bootlin.com \ --cc=Tudor.Ambarus@microchip.com \ --cc=boris.brezillon@collabora.com \ --cc=computersforpeace@gmail.com \ --cc=dwmw2@infradead.org \ --cc=frieder.schrempf@kontron.de \ --cc=juliensu@mxic.com.tw \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-mtd@lists.infradead.org \ --cc=marek.vasut@gmail.com \ --cc=masonccyang@mxic.com.tw \ --cc=paul@crapouillou.net \ --cc=richard@nod.at \ --cc=thomas.petazzoni@bootlin.com \ --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
Linux-mtd Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-mtd/0 linux-mtd/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-mtd linux-mtd/ https://lore.kernel.org/linux-mtd \ linux-mtd@lists.infradead.org public-inbox-index linux-mtd Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.infradead.lists.linux-mtd AGPL code for this site: git clone https://public-inbox.org/public-inbox.git