linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 00/28] Allow vendor drivers to propose their own timings
@ 2020-05-29 11:12 Miquel Raynal
  2020-05-29 11:12 ` [PATCH v7 01/28] mtd: rawnand: Use unsigned types for nand_chip unsigned values Miquel Raynal
                   ` (27 more replies)
  0 siblings, 28 replies; 69+ messages in thread
From: Miquel Raynal @ 2020-05-29 11:12 UTC (permalink / raw)
  To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, linux-mtd
  Cc: Michal Simek, Boris Brezillon, Naga Sureshkumar Relli,
	Thomas Petazzoni, Miquel Raynal

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/

^ permalink raw reply	[flat|nested] 69+ messages in thread

end of thread, other threads:[~2020-06-15  9:18 UTC | newest]

Thread overview: 69+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-29 11:12 [PATCH v7 00/28] Allow vendor drivers to propose their own timings Miquel Raynal
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

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).