linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Boris Brezillon <boris.brezillon@free-electrons.com>,
	Richard Weinberger <richard@nod.at>,
	linux-mtd@lists.infradead.org,
	David Woodhouse <dwmw2@infradead.org>,
	Brian Norris <computersforpeace@gmail.com>
Cc: Hans de Goede <hdegoede@redhat.com>, linux-kernel@vger.kernel.org
Subject: [PATCH 00/15] mtd: nand: allow vendor specific detection/initialization
Date: Fri, 27 May 2016 14:54:46 +0200	[thread overview]
Message-ID: <1464353701-23233-1-git-send-email-boris.brezillon@free-electrons.com> (raw)

Hello,

This patch series is a step forward in supporting vendor-specific
functionalities.
This series is mainly moving vendor-specific initialization or
detection code out of the core, but also introduces an infrastructure
allowing support for vendor-specific features.

While those features might seem useless to most users, some of them are
actually required on modern MLC/TLC NANDs (this is the case of read-retry
support, which AFAICT has not been standardized by the JEDEC consortium).

Now, let's detail what's inside this patch-set.

Patches 1 to 4 are simple reworks simplifying auto-detection function
prototypes, and clarifying their purpose.

Patch 5 is introducing the vendor-specific initialization
infrastructure.

Patch 6 is removing the MTD_NAND_IDS Kconfig option to avoid creating
a nand_ids.ko module when MTD_NAND is enabled as a module. This prevents
a future cross-dependency between nand.ko where all vendor specific
code will rely and nand_ids.ko which will reference vendor-specific ops
in its manufacturer table, which in turn is referenced by the core code
linked in nand.ko.

Patches 7 to 12 are moving vendor-specific code into their respective
nand_<vendor>.c files.

Patch 13 is taking a patch proposed by Hans and adding support for ECC
requirements extraction from the samsung extended IDs. It seems to apply
to all Samsung MLCs, but even if it's not the case, the detection code
should be improved to support the new formats.

Patch 14 is adding support for advanced NAND ID decoding to the Hynix
driver (OOB size, ECC and scrambling requirements extraction). Again
this detection code might be incomplete, but I'd like people to extend
it if required rather than adding new full-id entries in the nand_ids
table.

And finally, patch 15 is showing how useful this vendor-specific stuff
can be by implementing read-retry support for Hynix 1x nm MLCs. And
trust me, you don't want to try using such a NAND without read-retry
support ;).

As always, I'm open to any suggestion to improve this vendor-specific
infrastructure, so please review the code :).

Thanks,

Boris

Boris Brezillon (14):
  mtd: nand: get rid of the mtd parameter in all auto-detection
    functions
  mtd: nand: store nand ID in struct nand_chip
  mtd: nand: get rid of busw parameter
  mtd: nand: rename nand_get_flash_type() into nand_detect()
  mtd: nand: add vendor specific initialization step
  mtd: nand: kill the MTD_NAND_IDS Kconfig option
  mtd: nand: move samsung specific initialization in nand_samsung.c
  mtd: nand: move hynix specific initialization in nand_hynix.c
  mtd: nand: move toshiba specific initialization in nand_toshiba.c
  mtd: nand: move micron specific initialization in nand_micron.c
  mtd: nand: move AMD/Spansion specific initialization in nand_amd.c
  mtd: nand: move Macronix specific initialization in nand_macronix.c
  mtd: nand: hynix: rework NAND ID decoding to extract more information
  mtd: nand: hynix: add read-retry support for 1x nm MLC NANDs

Hans de Goede (1):
  mtd: nand: samsung: retrieve ECC requirements from extended ID

 arch/cris/arch-v32/drivers/Kconfig |   1 -
 drivers/mtd/nand/Kconfig           |   4 -
 drivers/mtd/nand/Makefile          |   9 +-
 drivers/mtd/nand/nand_amd.c        |  60 ++++
 drivers/mtd/nand/nand_base.c       | 362 +++++++--------------
 drivers/mtd/nand/nand_hynix.c      | 623 +++++++++++++++++++++++++++++++++++++
 drivers/mtd/nand/nand_ids.c        |  21 +-
 drivers/mtd/nand/nand_macronix.c   |  27 ++
 drivers/mtd/nand/nand_micron.c     |  84 +++++
 drivers/mtd/nand/nand_samsung.c    | 110 +++++++
 drivers/mtd/nand/nand_toshiba.c    |  60 ++++
 include/linux/mtd/nand.h           |  64 ++--
 12 files changed, 1141 insertions(+), 284 deletions(-)
 create mode 100644 drivers/mtd/nand/nand_amd.c
 create mode 100644 drivers/mtd/nand/nand_hynix.c
 create mode 100644 drivers/mtd/nand/nand_macronix.c
 create mode 100644 drivers/mtd/nand/nand_micron.c
 create mode 100644 drivers/mtd/nand/nand_samsung.c
 create mode 100644 drivers/mtd/nand/nand_toshiba.c

-- 
2.7.4

             reply	other threads:[~2016-05-27 12:55 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-27 12:54 Boris Brezillon [this message]
2016-05-27 12:54 ` [PATCH 01/15] mtd: nand: get rid of the mtd parameter in all auto-detection functions Boris Brezillon
2016-05-27 12:54 ` [PATCH 02/15] mtd: nand: store nand ID in struct nand_chip Boris Brezillon
2016-05-27 12:54 ` [PATCH 03/15] mtd: nand: get rid of busw parameter Boris Brezillon
2016-05-27 12:54 ` [PATCH 04/15] mtd: nand: rename nand_get_flash_type() into nand_detect() Boris Brezillon
2016-05-27 12:54 ` [PATCH 05/15] mtd: nand: add vendor specific initialization step Boris Brezillon
2016-05-27 12:54 ` [PATCH 06/15] mtd: nand: kill the MTD_NAND_IDS Kconfig option Boris Brezillon
2016-05-27 12:54 ` [PATCH 07/15] mtd: nand: move samsung specific initialization in nand_samsung.c Boris Brezillon
2016-05-27 12:54 ` [PATCH 08/15] mtd: nand: move hynix specific initialization in nand_hynix.c Boris Brezillon
2016-05-27 12:54 ` [PATCH 09/15] mtd: nand: move toshiba specific initialization in nand_toshiba.c Boris Brezillon
2016-05-27 12:54 ` [PATCH 10/15] mtd: nand: move micron specific initialization in nand_micron.c Boris Brezillon
2016-05-27 12:54 ` [PATCH 11/15] mtd: nand: move AMD/Spansion specific initialization in nand_amd.c Boris Brezillon
2016-05-27 12:54 ` [PATCH 12/15] mtd: nand: move Macronix specific initialization in nand_macronix.c Boris Brezillon
2016-05-27 12:54 ` [PATCH 13/15] mtd: nand: samsung: retrieve ECC requirements from extended ID Boris Brezillon
2016-05-30  0:20   ` Valdis.Kletnieks
2016-05-30  7:44     ` Boris Brezillon
2016-05-30 20:56       ` Valdis.Kletnieks
2016-05-30 22:28         ` Boris Brezillon
2016-05-30 22:32           ` Boris Brezillon
2016-05-27 12:55 ` [PATCH 14/15] mtd: nand: hynix: rework NAND ID decoding to extract more information Boris Brezillon
2016-05-27 12:55 ` [PATCH 15/15] mtd: nand: hynix: add read-retry support for 1x nm MLC NANDs 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=1464353701-23233-1-git-send-email-boris.brezillon@free-electrons.com \
    --to=boris.brezillon@free-electrons.com \
    --cc=computersforpeace@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=hdegoede@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    /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;
as well as URLs for NNTP newsgroup(s).