All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Boris Brezillon <boris.brezillon@collabora.com>
Cc: Rickard Andersson <rickaran@axis.com>,
	Richard Weinberger <richard@nod.at>,
	linux-mtd@lists.infradead.org,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Tudor Ambarus <Tudor.Ambarus@microchip.com>
Subject: Re: [PATCH v5 22/28] mtd: rawnand: Add the ->choose_data_interface() hook
Date: Wed, 27 May 2020 09:46:28 +0200	[thread overview]
Message-ID: <20200527094628.12441520@xps13> (raw)
In-Reply-To: <20200526235225.6e0f0ce2@collabora.com>


Boris Brezillon <boris.brezillon@collabora.com> wrote on Tue, 26 May
2020 23:52:25 +0200:

> On Tue, 26 May 2020 21:17:19 +0200
> Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> 
> > This hook can be overloaded by NAND manufacturer drivers to propose
> > alternative timings when not following the main standards. In this
> > case, the manufacturer drivers is responsible for choosing the best
> > data interface and configuration that fits both the controller and  
> 
> 		  ^ s/and//
> 
> > chip capabilities.
> > 
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> >  drivers/mtd/nand/raw/nand_base.c | 9 +++++++--
> >  include/linux/mtd/rawnand.h      | 3 +++
> >  2 files changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
> > index b2e833a8ab9d..f14d297c50f4 100644
> > --- a/drivers/mtd/nand/raw/nand_base.c
> > +++ b/drivers/mtd/nand/raw/nand_base.c
> > @@ -1046,7 +1046,6 @@ int nand_choose_best_sdr_timings(struct nand_chip *chip,
> >  		}
> >  	}
> >  
> > -  
> 
> Should this line removal be part of another patch?

Absoluely.

> 
> >  	for (mode = best_mode; mode >= 0; mode--) {
> >  		ret = onfi_fill_data_interface(chip, iface, NAND_SDR_IFACE,
> >  					       mode);
> > @@ -1068,7 +1067,9 @@ int nand_choose_best_sdr_timings(struct nand_chip *chip,
> >   * @chip: The NAND chip
> >   *
> >   * Find the best data interface and NAND timings supported by the chip
> > - * and the driver.
> > + * and the driver. Eventually let the NAND manufacturer driver propose his own
> > + * set of timings.
> > + *
> >   * After this function nand_chip->data_interface is initialized with the best
> >   * timing mode available.
> >   *
> > @@ -1079,6 +1080,10 @@ static int nand_choose_data_interface(struct nand_chip *chip)
> >  	if (!nand_controller_has_setup_data_iface(chip))
> >  		return 0;
> >  
> > +	if (chip->ops.choose_data_interface)
> > +		return chip->ops.choose_data_interface(chip,
> > +						       &chip->data_interface);
> > +
> >  	return nand_choose_best_sdr_timings(chip, &chip->data_interface, NULL);
> >  }
> >  
> > diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h
> > index 2995d29587c3..5bd79e853140 100644
> > --- a/include/linux/mtd/rawnand.h
> > +++ b/include/linux/mtd/rawnand.h
> > @@ -1034,6 +1034,7 @@ struct nand_legacy {
> >   * @lock_area: Lock operation
> >   * @unlock_area: Unlock operation
> >   * @setup_read_retry: Set the read-retry mode (mostly needed for MLC NANDs)
> > + * @choose_data_interface: Choose the best data interface
> >   */
> >  struct nand_chip_ops {
> >  	int (*suspend)(struct nand_chip *chip);
> > @@ -1041,6 +1042,8 @@ struct nand_chip_ops {
> >  	int (*lock_area)(struct nand_chip *chip, loff_t ofs, uint64_t len);
> >  	int (*unlock_area)(struct nand_chip *chip, loff_t ofs, uint64_t len);
> >  	int (*setup_read_retry)(struct nand_chip *chip, int retry_mode);
> > +	int (*choose_data_interface)(struct nand_chip *chip,
> > +				     struct nand_data_interface *iface);
> >  };
> >  
> >  /**  
> 

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

  reply	other threads:[~2020-05-27  7:46 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-26 19:16 [PATCH v5 00/28] Allow vendor drivers to propose their own timings Miquel Raynal
2020-05-26 19:16 ` [PATCH v5 01/28] mtd: rawnand: Use unsigned types for nand_chip unsigned values Miquel Raynal
2020-05-26 19:16 ` [PATCH v5 02/28] mtd: rawnand: Only use u8 instead of uint8_t in nand_chip structure Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 03/28] mtd: rawnand: Create a nand_chip operations structure Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 04/28] mtd: rawnand: Rename the manufacturer structure Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 05/28] mtd: rawnand: Declare the nand_manufacturer structure out of nand_chip Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 06/28] mtd: rawnand: Reorganize the nand_chip structure Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 07/28] mtd: rawnand: Compare the actual timing values Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 08/28] mtd: rawnand: Use the data interface mode entry when relevant Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 09/28] mtd: rawnand: Rename nand_has_setup_data_interface() Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 10/28] mtd: rawnand: Fix nand_setup_data_interface() description Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 11/28] mtd: rawnand: Rename nand_init_data_interface() Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 12/28] mtd: rawnand: timings: Update onfi_fill_data_interface() kernel doc Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 13/28] mtd: rawnand: timings: Provide onfi_fill_data_interface() with a data interface Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 14/28] mtd: rawnand: timings: Add a helper to find the closest ONFI mode Miquel Raynal
2020-05-26 21:42   ` Boris Brezillon
2020-05-27  7:42     ` Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 15/28] mtd: rawnand: timings: Avoid redefining tR_max and tCCS_min Miquel Raynal
2020-05-26 20:33   ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 16/28] mtd: rawnand: timings: Use default values for tPROG_max and tBERS_max Miquel Raynal
2020-05-26 20:32   ` Boris Brezillon
2020-05-26 21:25   ` Boris Brezillon
2020-05-27  7:17     ` Miquel Raynal
2020-05-27  7:22       ` Miquel Raynal
2020-05-27  7:28         ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 17/28] mtd: rawnand: Define a unique reset data interface Miquel Raynal
2020-05-26 21:23   ` Boris Brezillon
2020-05-27  7:20     ` Miquel Raynal
2020-05-27  8:10       ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 18/28] mtd: rawnand: marvell: Use a helper to access the timings Miquel Raynal
2020-05-26 21:26   ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 19/28] mtd: rawnand: legacy: " Miquel Raynal
2020-05-26 21:28   ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 20/28] mtd: rawnand: Hide the chip->data_interface indirection Miquel Raynal
2020-05-26 21:36   ` Boris Brezillon
2020-05-27  7:36     ` Miquel Raynal
2020-05-27  8:14       ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 21/28] mtd: rawnand: Introduce nand_choose_best_sdr_timings() Miquel Raynal
2020-05-26 21:50   ` Boris Brezillon
2020-05-27  7:45     ` Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 22/28] mtd: rawnand: Add the ->choose_data_interface() hook Miquel Raynal
2020-05-26 21:52   ` Boris Brezillon
2020-05-27  7:46     ` Miquel Raynal [this message]
2020-05-26 19:17 ` [PATCH v5 23/28] mtd: rawnand: toshiba: Implement ->choose_data_interface() for TC58TEG5DCLTA00 Miquel Raynal
2020-05-26 21:54   ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 24/28] mtd: rawnand: toshiba: Implement ->choose_data_interface() for TC58NVG0S3E Miquel Raynal
2020-05-26 22:02   ` Boris Brezillon
2020-05-27  7:47     ` Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 25/28] mtd: rawnand: hynix: Implement ->choose_data_interface() for H27UCG8T2ATR-BC Miquel Raynal
2020-05-26 22:06   ` Boris Brezillon
2020-05-27  7:50     ` Miquel Raynal
2020-05-26 19:17 ` [PATCH v5 26/28] mtd: rawnand: toshiba: Choose the data interface for TH58NVG2S3HBAI4 Miquel Raynal
2020-05-26 22:10   ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 27/28] mtd: rawnand: Get rid of the default ONFI timing mode Miquel Raynal
2020-05-26 22:13   ` Boris Brezillon
2020-05-26 19:17 ` [PATCH v5 28/28] mtd: rawnand: Allocate the best data interface structure dynamically Miquel Raynal
2020-05-26 22:28   ` Boris Brezillon
2020-05-27  7:57     ` Miquel Raynal
2020-05-27  8:35       ` Boris Brezillon
2020-05-27  8:49         ` Miquel Raynal
2020-05-27  8:57           ` Boris Brezillon
2020-05-27  9:34             ` 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=20200527094628.12441520@xps13 \
    --to=miquel.raynal@bootlin.com \
    --cc=Tudor.Ambarus@microchip.com \
    --cc=boris.brezillon@collabora.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    --cc=rickaran@axis.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.