[PATCH v5 00/28] Allow vendor drivers to propose their own timings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 and also improves
the core by allocating the data interface dynamically and use a static
default reset interface.

Cheers,
Miquèl

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_interface()
  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: 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: Define a unique reset data interface
  mtd: rawnand: marvell: Use a helper to access the timings
  mtd: rawnand: legacy: Use a helper to access the timings
  mtd: rawnand: Hide the chip->data_interface indirection
  mtd: rawnand: Introduce nand_choose_best_sdr_timings()
  mtd: rawnand: Add the ->choose_data_interface() hook
  mtd: rawnand: toshiba: Implement ->choose_data_interface() for
    TC58TEG5DCLTA00
  mtd: rawnand: toshiba: Implement ->choose_data_interface() for
    TC58NVG0S3E
  mtd: rawnand: hynix: Implement ->choose_data_interface() for
    H27UCG8T2ATR-BC
  mtd: rawnand: Get rid of the default ONFI timing mode
  mtd: rawnand: Allocate the best data interface structure dynamically

Rickard x Andersson (1):
  mtd: rawnand: toshiba: Choose the data interface for TH58NVG2S3HBAI4

 drivers/mtd/nand/raw/ams-delta.c              |   2 +-
 .../mtd/nand/raw/cadence-nand-controller.c    |   2 +-
 drivers/mtd/nand/raw/denali.c                 |   2 +-
 drivers/mtd/nand/raw/fsmc_nand.c              |   2 +-
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c    |   2 +-
 drivers/mtd/nand/raw/internals.h              |  14 +-
 drivers/mtd/nand/raw/marvell_nand.c           |  10 +-
 drivers/mtd/nand/raw/meson_nand.c             |   8 +-
 drivers/mtd/nand/raw/mtk_nand.c               |   2 +-
 drivers/mtd/nand/raw/mxc_nand.c               |   2 +-
 drivers/mtd/nand/raw/mxic_nand.c              |   2 +-
 drivers/mtd/nand/raw/nand_base.c              | 244 +++++++++--------
 drivers/mtd/nand/raw/nand_hynix.c             |  18 +-
 drivers/mtd/nand/raw/nand_ids.c               |  24 +-
 drivers/mtd/nand/raw/nand_legacy.c            |   6 +-
 drivers/mtd/nand/raw/nand_macronix.c          |  10 +-
 drivers/mtd/nand/raw/nand_micron.c            |   2 +-
 drivers/mtd/nand/raw/nand_timings.c           |  89 +++++--
 drivers/mtd/nand/raw/nand_toshiba.c           |  78 +++++-
 drivers/mtd/nand/raw/s3c2410.c                |   2 +-
 drivers/mtd/nand/raw/stm32_fmc2_nand.c        |   4 +-
 drivers/mtd/nand/raw/sunxi_nand.c             |   2 +-
 drivers/mtd/nand/raw/tango_nand.c             |   2 +-
 drivers/mtd/nand/raw/tegra_nand.c             |   2 +-
 include/linux/mtd/rawnand.h                   | 250 +++++++++---------
 25 files changed, 476 insertions(+), 305 deletions(-)

-- 
2.20.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux