From: Stefan Agner <stefan-XLVq0VzYD2Y@public.gmane.org>
To: Boris Brezillon
<boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Cc: David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Brian Norris
<computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Daniel Mack <daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>,
Haojian Zhuang
<haojian.zhuang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Robert Jarzmik <robert.jarzmik-GANU6spQydw@public.gmane.org>,
Kukjin Kim <kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Krzysztof Kozlowski
<k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Ralf Baechle <ralf-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org>,
linux-mips-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org,
Nicolas Ferre
<nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>,
Jean-Christophe Plagniol-Villard
<plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>,
Alexandre Belloni
<alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Wenyou Yang <wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>,
Josh Wu <rainyfeeling-1ViLX0X+lBJBDgjK7y7TUQ@public.gmane.org>,
Ezequiel Garcia
<ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
Kyungmin Park
<kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>G
Subject: Re: [PATCH v3 00/52] mtd: rework ECC layout definition
Date: Thu, 25 Feb 2016 17:27:23 -0800 [thread overview]
Message-ID: <d968b867f4d7f603581a0ff83e07c15c@agner.ch> (raw)
In-Reply-To: <1456448280-27788-1-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Hi Boris,
On 2016-02-25 16:57, Boris Brezillon wrote:
> Hello,
>
> This patchset aims at getting rid of the nand_ecclayout limitations.
> struct nand_ecclayout is defining fixed eccpos and oobfree arrays which
> can only be increased by modifying the MTD_MAX_ECCPOS_ENTRIES_LARGE and
> MTD_MAX_OOBFREE_ENTRIES_LARGE macros.
> This approach forces us to modify the macro values each time we add a
> new NAND chip with a bigger OOB area, and increasing these arrays also
> penalize all platforms, even those who only support small NAND devices
> (with small OOB area).
>
> The idea to overcome this limitation, is to define the ECC/OOB layout
> by the mean of two functions: ->ecc() and ->free(), which will
> basically return the same information has those stored in the
> nand_ecclayout struct.
>
> Another advantage of this solution is that ECC layouts are usually
> following a repetitive pattern (i.e. leave X bytes free and put Y bytes
> of ECC per ECC chunk), which allows one to implement the ->ecc()
> and ->free() functions with a simple logic that can be applied
> to any size of OOB.
>
> Patches 1 to 4 are just cleanups or trivial fixes that can be taken
> independently.
>
> Also note that the last two commits are removing the nand_ecclayout
> definition, thus preventing any new driver to use this structure.
> Of course, this step can be delayed if some of the previous patches
> are not accepted.
Is the patch set somewhere available to pull from?
Do I see things right that patch 21/52 contains the crucial function
nand_ooblayout_ecc_lp which calculate the ECC position? (for those who
do not provide mtd_ooblayout_ops anyway...)
--
Stefan
>
> Best Regards,
>
> Boris
>
> Changes since v2:
> - fixed a few bugs in the core and driver implementations
>
> Changes since v1:
> - unified the way of defining ECC and free bytes
> - fixed a few bugs in some ->ecc()/->free() implementations
> - added new helpers to ease ECC and free bytes manipulation
> - separated driver changes in different commits to ease review
> - dropped already applied patches
>
> *** BLURB HERE ***
>
> Boris Brezillon (52):
> mtd: kill the ecclayout->oobavail field
> mtd: create an mtd_oobavail() helper and make use of it
> mtd: mtdswap: remove useless if (!mtd->ecclayout) test
> mtd: nand: simplify nand_bch_init() usage
> mtd: add mtd_ooblayout_xxx() helper functions
> mtd: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: nand: core: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: nand: atmel: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: nand: fsl_ifc: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: nand: gpmi: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: nand: lpc32xx: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: nand: omap2: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: onenand: use mtd_ooblayout_xxx() helpers where appropriate
> mtd: add mtd_set_ecclayout() helper function
> mtd: use mtd_set_ecclayout() where appropriate
> mtd: nand: use mtd_set_ecclayout() where appropriate
> mtd: onenand: use mtd_set_ecclayout() where appropriate
> mtd: docg3: use mtd_set_ecclayout() where appropriate
> mtd: create an mtd_ooblayout_ops struct to ease ECC layout definition
> mtd: docg3: switch to mtd_ooblayout_ops
> mtd: nand: implement the default mtd_ooblayout_ops
> mtd: nand: bch: switch to mtd_ooblayout_ops
> mtd: nand: sharpsl: switch to mtd_ooblayout_ops
> mtd: nand: jz4740: switch to mtd_ooblayout_ops
> mtd: nand: atmel: switch to mtd_ooblayout_ops
> mtd: nand: bf5xx: switch to mtd_ooblayout_ops
> mtd: nand: brcm: switch to mtd_ooblayout_ops
> mtd: nand: cafe: switch to mtd_ooblayout_ops
> mtd: nand: davinci: switch to mtd_ooblayout_ops
> mtd: nand: denali: switch to mtd_ooblayout_ops
> mtd: nand: diskonchip: switch to mtd_ooblayout_ops
> mtd: nand: docg4: switch to mtd_ooblayout_ops
> mtd: nand: fsl_elbc: switch to mtd_ooblayout_ops
> mtd: nand: fsl_ifc: switch to mtd_ooblayout_ops
> mtd: nand: fsmc: switch to mtd_ooblayout_ops
> mtd: nand: fsmc: get rid of the fsmc_nand_eccplace struct
> mtd: nand: gpmi: switch to mtd_ooblayout_ops
> mtd: nand: hisi504: switch to mtd_ooblayout_ops
> mtd: nand: jz4780: switch to mtd_ooblayout_ops
> mtd: nand: lpc32xx: switch to mtd_ooblayout_ops
> mtd: nand: mxc: switch to mtd_ooblayout_ops
> mtd: nand: omap2: switch to mtd_ooblayout_ops
> mtd: nand: pxa3xx: switch to mtd_ooblayout_ops
> mtd: nand: s3c2410: switch to mtd_ooblayout_ops
> mtd: nand: sh_flctl: switch to mtd_ooblayout_ops
> mtd: nand: sm_common: switch to mtd_ooblayout_ops
> mtd: nand: sunxi: switch to mtd_ooblayout_ops
> mtd: nand: vf610: switch to mtd_ooblayout_ops
> mtd: onenand: switch to mtd_ooblayout_ops
> staging: mt29f_spinand: switch to mtd_ooblayout_ops
> mtd: nand: kill the ecc->layout field
> mtd: kill the nand_ecclayout struct
>
> arch/arm/mach-pxa/spitz.c | 55 +++-
> arch/mips/include/asm/mach-jz4740/jz4740_nand.h | 2 +-
> arch/mips/jz4740/board-qi_lb60.c | 87 +++---
> drivers/mtd/devices/docg3.c | 51 +++-
> drivers/mtd/mtdchar.c | 123 ++++++--
> drivers/mtd/mtdconcat.c | 2 +-
> drivers/mtd/mtdcore.c | 358 ++++++++++++++++++++++++
> drivers/mtd/mtdpart.c | 28 +-
> drivers/mtd/mtdswap.c | 24 +-
> drivers/mtd/nand/atmel_nand.c | 130 ++++-----
> drivers/mtd/nand/bf5xx_nand.c | 51 ++--
> drivers/mtd/nand/brcmnand/brcmnand.c | 262 ++++++++++-------
> drivers/mtd/nand/cafe_nand.c | 45 ++-
> drivers/mtd/nand/davinci_nand.c | 118 +++-----
> drivers/mtd/nand/denali.c | 51 +++-
> drivers/mtd/nand/diskonchip.c | 60 +++-
> drivers/mtd/nand/docg4.c | 34 ++-
> drivers/mtd/nand/fsl_elbc_nand.c | 83 +++---
> drivers/mtd/nand/fsl_ifc_nand.c | 245 +++++-----------
> drivers/mtd/nand/fsmc_nand.c | 322 ++++++---------------
> drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 61 ++--
> drivers/mtd/nand/hisi504_nand.c | 27 +-
> drivers/mtd/nand/jz4740_nand.c | 2 +-
> drivers/mtd/nand/jz4780_nand.c | 19 +-
> drivers/mtd/nand/lpc32xx_mlc.c | 50 ++--
> drivers/mtd/nand/lpc32xx_slc.c | 58 +++-
> drivers/mtd/nand/mxc_nand.c | 212 +++++++-------
> drivers/mtd/nand/nand_base.c | 344 ++++++++++++-----------
> drivers/mtd/nand/nand_bch.c | 46 ++-
> drivers/mtd/nand/omap2.c | 241 +++++++++-------
> drivers/mtd/nand/pxa3xx_nand.c | 104 ++++---
> drivers/mtd/nand/s3c2410.c | 32 ++-
> drivers/mtd/nand/sh_flctl.c | 87 ++++--
> drivers/mtd/nand/sharpsl.c | 2 +-
> drivers/mtd/nand/sm_common.c | 93 ++++--
> drivers/mtd/nand/sunxi_nand.c | 114 ++++----
> drivers/mtd/nand/vf610_nfc.c | 34 +--
> drivers/mtd/onenand/onenand_base.c | 262 ++++++++---------
> drivers/mtd/tests/oobtest.c | 49 ++--
> drivers/staging/mt29f_spinand/mt29f_spinand.c | 49 ++--
> fs/jffs2/wbuf.c | 6 +-
> include/linux/mtd/fsmc.h | 18 --
> include/linux/mtd/mtd.h | 69 ++++-
> include/linux/mtd/nand.h | 5 +-
> include/linux/mtd/nand_bch.h | 8 +-
> include/linux/mtd/onenand.h | 2 -
> include/linux/mtd/sharpsl.h | 2 +-
> include/uapi/mtd/mtd-abi.h | 2 +-
> 48 files changed, 2375 insertions(+), 1754 deletions(-)
next prev parent reply other threads:[~2016-02-26 1:27 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-26 0:57 [PATCH v3 00/52] mtd: rework ECC layout definition Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 25/52] mtd: nand: atmel: switch to mtd_ooblayout_ops Boris Brezillon
[not found] ` <1456448280-27788-1-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2016-02-26 0:57 ` [PATCH v3 01/52] mtd: kill the ecclayout->oobavail field Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 02/52] mtd: create an mtd_oobavail() helper and make use of it Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 03/52] mtd: mtdswap: remove useless if (!mtd->ecclayout) test Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 04/52] mtd: nand: simplify nand_bch_init() usage Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 05/52] mtd: add mtd_ooblayout_xxx() helper functions Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 06/52] mtd: use mtd_ooblayout_xxx() helpers where appropriate Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 07/52] mtd: nand: core: " Boris Brezillon
[not found] ` <1456448280-27788-8-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2016-02-26 14:35 ` Harvey Hunt
[not found] ` <56D0629C.9080805-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2016-02-26 15:10 ` Boris Brezillon
2016-02-26 15:17 ` Harvey Hunt
[not found] ` <56D06C88.9080608-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2016-02-26 18:33 ` Boris Brezillon
2016-02-29 10:33 ` Harvey Hunt
2016-02-26 0:57 ` [PATCH v3 08/52] mtd: nand: atmel: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 09/52] mtd: nand: fsl_ifc: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 10/52] mtd: nand: gpmi: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 11/52] mtd: nand: lpc32xx: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 12/52] mtd: nand: omap2: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 13/52] mtd: onenand: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 14/52] mtd: add mtd_set_ecclayout() helper function Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 15/52] mtd: use mtd_set_ecclayout() where appropriate Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 16/52] mtd: nand: " Boris Brezillon
[not found] ` <1456448280-27788-17-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2016-03-05 2:26 ` Brian Norris
[not found] ` <20160305022621.GN55664-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2016-03-05 8:53 ` Boris Brezillon
2016-03-05 9:01 ` Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 17/52] mtd: onenand: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 18/52] mtd: docg3: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 19/52] mtd: create an mtd_ooblayout_ops struct to ease ECC layout definition Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 20/52] mtd: docg3: switch to mtd_ooblayout_ops Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 21/52] mtd: nand: implement the default mtd_ooblayout_ops Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 22/52] mtd: nand: bch: switch to mtd_ooblayout_ops Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 23/52] mtd: nand: sharpsl: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 24/52] mtd: nand: jz4740: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 26/52] mtd: nand: bf5xx: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 27/52] mtd: nand: brcm: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 28/52] mtd: nand: cafe: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 29/52] mtd: nand: davinci: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 30/52] mtd: nand: denali: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 31/52] mtd: nand: diskonchip: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 32/52] mtd: nand: docg4: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 33/52] mtd: nand: fsl_elbc: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 35/52] mtd: nand: fsmc: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 36/52] mtd: nand: fsmc: get rid of the fsmc_nand_eccplace struct Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 37/52] mtd: nand: gpmi: switch to mtd_ooblayout_ops Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 38/52] mtd: nand: hisi504: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 39/52] mtd: nand: jz4780: " Boris Brezillon
2016-02-29 10:45 ` Harvey Hunt
2016-02-26 0:57 ` [PATCH v3 40/52] mtd: nand: lpc32xx: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 41/52] mtd: nand: mxc: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 42/52] mtd: nand: omap2: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 43/52] mtd: nand: pxa3xx: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 44/52] mtd: nand: s3c2410: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 45/52] mtd: nand: sh_flctl: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 46/52] mtd: nand: sm_common: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 47/52] mtd: nand: sunxi: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 48/52] mtd: nand: vf610: " Boris Brezillon
2016-02-26 19:43 ` Stefan Agner
2016-02-26 20:43 ` Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 49/52] mtd: onenand: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 50/52] staging: mt29f_spinand: " Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 51/52] mtd: nand: kill the ecc->layout field Boris Brezillon
2016-02-26 0:58 ` [PATCH v3 52/52] mtd: kill the nand_ecclayout struct Boris Brezillon
2016-02-26 1:27 ` Stefan Agner [this message]
2016-02-26 2:16 ` [PATCH v3 00/52] mtd: rework ECC layout definition Boris Brezillon
2016-02-26 0:57 ` [PATCH v3 34/52] mtd: nand: fsl_ifc: switch to mtd_ooblayout_ops Boris Brezillon
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=d968b867f4d7f603581a0ff83e07c15c@agner.ch \
--to=stefan-xlvq0vzyd2y@public.gmane.org \
--cc=alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
--cc=boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
--cc=computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
--cc=haojian.zhuang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-mips-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org \
--cc=linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
--cc=nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org \
--cc=plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org \
--cc=rainyfeeling-1ViLX0X+lBJBDgjK7y7TUQ@public.gmane.org \
--cc=ralf-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org \
--cc=robert.jarzmik-GANU6spQydw@public.gmane.org \
--cc=wens-jdAy2FN1RRM@public.gmane.org \
--cc=wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox