From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>,
Tudor Ambarus <Tudor.Ambarus@microchip.com>,
<linux-mtd@lists.infradead.org>
Cc: Michal Simek <monstr@monstr.eu>,
Boris Brezillon <boris.brezillon@collabora.com>,
Naga Sureshkumar Relli <nagasure@xilinx.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH v7 00/28] Allow vendor drivers to propose their own timings
Date: Fri, 29 May 2020 13:12:54 +0200 [thread overview]
Message-ID: <20200529111322.7184-1-miquel.raynal@bootlin.com> (raw)
As raised by Rickard, certain chips like Toshiba/Kioxia
TH58NVG2S3HBAI4 are not ONFI compliant and because of that, work at a
very slow pace. This chip in particular supports running at a pace
"close" to ONFI mode 4.
This series provides a way to manufacturer drivers to propose a data
interface to the core with a very simple interface. While at it, I did
some cleanup and prepared the introduction of NV-DDR timings.
Cheers,
Miquèl
Changes in v7:
* Fixed typos/reworded commit logs.
* Collected R-by tags.
* Added a patch to turn timing_mode an unsigned int (one parameter of
onfi_fill_data_interface/interface_config).
* Thanks to Boris comments, I realized I could not introduce the
"reset timing helper" before the change allocating the interface
configuration dynamically. Nor it would make sense to do it
afterwards, so I merged the two patches.
* s/nand_choose_interface/nand_choose_interface_config/.
* s/->choose_interface()/->choose_interface_config()/.
* Moved the patch hiding the ->data_interface indirection before the
patch renaming data_interface into interface_config. This had the
effect of dropping two patches (legacy_nand and marvell_nand
updates).
* Dropped an always wrong condition in nand_reset() spotted by Boris.
Changes in v6:
* Collected R-by tags.
* Inserted a patch renaming massively the "data interface" name into
"interface configuration". Followed this naming for the rest of the
series, in particular for the new hooks.
* Re-added a comment about the specific tCCS, tR, tBERS and tPROG
timings.
* Inverted the conditions in onfi_find_closest_sdr_mode() as advised.
* Created a helper to retrieve the reset interface configuration.
* Dropped nand_extract_sdr_timings() and kept nand_get_sdr_timings().
* Created nand_get_interface_config() instead, to retrieve an
interface configuration provided a nand_chip object.
* Changed the scope of a variable.
* Turned onfi_fill_interface_config() into a void helper.
* Fixed typos.
* Used strncmp() to compare NAND chip model names.
* Prevented applying timing mode 0 twice.
* Created a ->current_interface_config entry in nand_chip, always
pointing to the right interface configuration.
* Renamed the other entry ->best_interface_config.
Changes in v5:
* Collected R-by tags.
* Dropped the rename of onfi_timing_mode_default, got rid of it instead.
* Converted Hynix and Toshiba drivers to ->choose_data_interface().
* Created a static default reset data interface object.
* Allocated dynamically the timings.
* Renamed onfi_find_closest_sdr_mode() and its parameter.
* Dropped the comparison with maximum values in
onfi_find_closest_sdr_mode().
* Use "best_timings" instead of "best_iface" as DDR is not supported
yet.
* Dropped choose_best_vendor_sdr_timings() and unifed its content with
choose_best_sdr_timings().
* If the specific timing set close to ONFI mode X is not supported,
fallback to ONFI mode X first, not X - 1.
Changes in v4:
* Took Rickard patch based on my previous proposals over Github and
tweaked a few more things:
- Added a "generic" helper to fallback on slower ONFI modes when the
proposed interface is not supported by the controller.
- Fixed more kdoc.
- Simplified the vendor driver side by providing additional helpers.
* Tweaked a little bit Rickard patch to fit the latest changes.
Miquel Raynal (27):
mtd: rawnand: Use unsigned types for nand_chip unsigned values
mtd: rawnand: Only use u8 instead of uint8_t in nand_chip structure
mtd: rawnand: Create a nand_chip operations structure
mtd: rawnand: Rename the manufacturer structure
mtd: rawnand: Declare the nand_manufacturer structure out of nand_chip
mtd: rawnand: Reorganize the nand_chip structure
mtd: rawnand: Compare the actual timing values
mtd: rawnand: Use the data interface mode entry when relevant
mtd: rawnand: Rename nand_has_setup_data_iface()
mtd: rawnand: Fix nand_setup_data_interface() description
mtd: rawnand: Rename nand_init_data_interface()
mtd: rawnand: timings: Update onfi_fill_data_interface() kernel doc
mtd: rawnand: timings: Provide onfi_fill_data_interface() with a data
interface
mtd: rawnand: timings: onfi_fill_data_interface timing mode is
unsigned
mtd: rawnand: timings: Add a helper to find the closest ONFI mode
mtd: rawnand: timings: Avoid redefining tR_max and tCCS_min
mtd: rawnand: timings: Use default values for tPROG_max and tBERS_max
mtd: rawnand: Hide the chip->data_interface indirection
mtd: rawnand: s/data_interface/interface_config/
mtd: rawnand: timings: Make onfi_fill_interface_config() a void helper
mtd: rawnand: Introduce nand_choose_best_sdr_timings()
mtd: rawnand: Add the ->choose_interface_config() hook
mtd: rawnand: toshiba: Implement ->choose_interface_config() for
TC58TEG5DCLTA00
mtd: rawnand: toshiba: Implement ->choose_interface_config() for
TC58NVG0S3E
mtd: rawnand: hynix: Implement ->choose_interface_config() for
H27UCG8T2ATR-BC
mtd: rawnand: Get rid of the default ONFI timing mode
mtd: rawnand: Allocate the interface configurations dynamically
Rickard x Andersson (1):
mtd: rawnand: toshiba: Choose the interface configuration for
TH58NVG2S3HBAI4
drivers/mtd/nand/raw/ams-delta.c | 6 +-
drivers/mtd/nand/raw/arasan-nand-controller.c | 6 +-
drivers/mtd/nand/raw/atmel/nand-controller.c | 34 +--
.../mtd/nand/raw/cadence-nand-controller.c | 6 +-
drivers/mtd/nand/raw/denali.c | 8 +-
drivers/mtd/nand/raw/fsmc_nand.c | 6 +-
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 6 +-
drivers/mtd/nand/raw/internals.h | 22 +-
drivers/mtd/nand/raw/marvell_nand.c | 18 +-
drivers/mtd/nand/raw/meson_nand.c | 14 +-
drivers/mtd/nand/raw/mtk_nand.c | 6 +-
drivers/mtd/nand/raw/mxc_nand.c | 20 +-
drivers/mtd/nand/raw/mxic_nand.c | 6 +-
drivers/mtd/nand/raw/nand_base.c | 264 +++++++++--------
drivers/mtd/nand/raw/nand_hynix.c | 16 +-
drivers/mtd/nand/raw/nand_ids.c | 24 +-
drivers/mtd/nand/raw/nand_legacy.c | 7 +-
drivers/mtd/nand/raw/nand_macronix.c | 10 +-
drivers/mtd/nand/raw/nand_micron.c | 2 +-
drivers/mtd/nand/raw/nand_timings.c | 116 ++++++--
drivers/mtd/nand/raw/nand_toshiba.c | 72 ++++-
drivers/mtd/nand/raw/s3c2410.c | 6 +-
drivers/mtd/nand/raw/stm32_fmc2_nand.c | 6 +-
drivers/mtd/nand/raw/sunxi_nand.c | 6 +-
drivers/mtd/nand/raw/tango_nand.c | 4 +-
drivers/mtd/nand/raw/tegra_nand.c | 6 +-
include/linux/mtd/rawnand.h | 270 +++++++++---------
27 files changed, 579 insertions(+), 388 deletions(-)
--
2.20.1
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next reply other threads:[~2020-05-29 11:13 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-29 11:12 Miquel Raynal [this message]
2020-05-29 11:12 ` [PATCH v7 01/28] mtd: rawnand: Use unsigned types for nand_chip unsigned values Miquel Raynal
2020-06-15 9:07 ` Miquel Raynal
2020-05-29 11:12 ` [PATCH v7 02/28] mtd: rawnand: Only use u8 instead of uint8_t in nand_chip structure Miquel Raynal
2020-06-15 9:07 ` Miquel Raynal
2020-05-29 11:12 ` [PATCH v7 03/28] mtd: rawnand: Create a nand_chip operations structure Miquel Raynal
2020-06-15 9:07 ` Miquel Raynal
2020-05-29 11:12 ` [PATCH v7 04/28] mtd: rawnand: Rename the manufacturer structure Miquel Raynal
2020-06-15 9:06 ` Miquel Raynal
2020-05-29 11:12 ` [PATCH v7 05/28] mtd: rawnand: Declare the nand_manufacturer structure out of nand_chip Miquel Raynal
2020-06-15 9:06 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 06/28] mtd: rawnand: Reorganize the nand_chip structure Miquel Raynal
2020-06-15 9:06 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 07/28] mtd: rawnand: Compare the actual timing values Miquel Raynal
2020-06-15 9:06 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 08/28] mtd: rawnand: Use the data interface mode entry when relevant Miquel Raynal
2020-06-15 9:06 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 09/28] mtd: rawnand: Rename nand_has_setup_data_iface() Miquel Raynal
2020-06-15 9:05 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 10/28] mtd: rawnand: Fix nand_setup_data_interface() description Miquel Raynal
2020-06-15 9:05 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 11/28] mtd: rawnand: Rename nand_init_data_interface() Miquel Raynal
2020-06-15 9:05 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 12/28] mtd: rawnand: timings: Update onfi_fill_data_interface() kernel doc Miquel Raynal
2020-06-15 9:05 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 13/28] mtd: rawnand: timings: Provide onfi_fill_data_interface() with a data interface Miquel Raynal
2020-06-15 9:05 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 14/28] mtd: rawnand: timings: onfi_fill_data_interface timing mode is unsigned Miquel Raynal
2020-05-29 11:28 ` Boris Brezillon
2020-06-15 9:05 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 15/28] mtd: rawnand: timings: Add a helper to find the closest ONFI mode Miquel Raynal
2020-06-15 9:04 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 16/28] mtd: rawnand: timings: Avoid redefining tR_max and tCCS_min Miquel Raynal
2020-05-29 11:25 ` Boris Brezillon
2020-06-15 9:04 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 17/28] mtd: rawnand: timings: Use default values for tPROG_max and tBERS_max Miquel Raynal
2020-06-15 9:04 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 18/28] mtd: rawnand: Hide the chip->data_interface indirection Miquel Raynal
2020-05-29 11:26 ` Boris Brezillon
2020-06-15 9:04 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 19/28] mtd: rawnand: s/data_interface/interface_config/ Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 20/28] mtd: rawnand: timings: Make onfi_fill_interface_config() a void helper Miquel Raynal
2020-05-29 11:29 ` Boris Brezillon
2020-06-15 9:04 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 21/28] mtd: rawnand: Introduce nand_choose_best_sdr_timings() Miquel Raynal
2020-05-29 11:30 ` Boris Brezillon
2020-06-15 9:04 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 22/28] mtd: rawnand: Add the ->choose_interface_config() hook Miquel Raynal
2020-05-29 11:31 ` Boris Brezillon
2020-05-29 11:32 ` Miquel Raynal
2020-06-15 9:03 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 23/28] mtd: rawnand: toshiba: Implement ->choose_interface_config() for TC58TEG5DCLTA00 Miquel Raynal
2020-06-15 9:03 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 24/28] mtd: rawnand: toshiba: Implement ->choose_interface_config() for TC58NVG0S3E Miquel Raynal
2020-06-15 9:03 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 25/28] mtd: rawnand: hynix: Implement ->choose_interface_config() for H27UCG8T2ATR-BC Miquel Raynal
2020-06-15 9:03 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 26/28] mtd: rawnand: toshiba: Choose the interface configuration for TH58NVG2S3HBAI4 Miquel Raynal
2020-05-29 11:33 ` Boris Brezillon
2020-06-15 9:03 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 27/28] mtd: rawnand: Get rid of the default ONFI timing mode Miquel Raynal
2020-06-15 9:02 ` Miquel Raynal
2020-05-29 11:13 ` [PATCH v7 28/28] mtd: rawnand: Allocate the interface configurations dynamically Miquel Raynal
2020-05-29 11:37 ` Boris Brezillon
2020-05-29 11:41 ` Boris Brezillon
2020-05-29 11:43 ` Miquel Raynal
2020-05-29 11:49 ` Boris Brezillon
2020-05-29 11:52 ` Miquel Raynal
2020-06-15 9:02 ` 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=20200529111322.7184-1-miquel.raynal@bootlin.com \
--to=miquel.raynal@bootlin.com \
--cc=Tudor.Ambarus@microchip.com \
--cc=boris.brezillon@collabora.com \
--cc=linux-mtd@lists.infradead.org \
--cc=monstr@monstr.eu \
--cc=nagasure@xilinx.com \
--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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.