All of lore.kernel.org
 help / color / mirror / Atom feed
From: Janusz Krzysztofik <jmkrzyszt@gmail.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>,
	Richard Weinberger <richard@nod.at>
Cc: Vignesh Raghavendra <vigneshr@ti.com>,
	Tony Lindgren <tony@atomide.com>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
	linux-mtd@lists.infradead.org,
	Janusz Krzysztofik <jmkrzyszt@gmail.com>
Subject: [RFC PATCH 07/14] mtd: rawnand: ams-delta: Don't hardcode read/write pulse widths
Date: Wed, 12 Feb 2020 01:39:22 +0100	[thread overview]
Message-ID: <20200212003929.6682-8-jmkrzyszt@gmail.com> (raw)
In-Reply-To: <20200212003929.6682-1-jmkrzyszt@gmail.com>

Instead of forcing Amstrad Delta specific read/write pulse widths, use
variables initialised from respective fields of chip SDR timings.

Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
---
 drivers/mtd/nand/raw/ams-delta.c | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/raw/ams-delta.c b/drivers/mtd/nand/raw/ams-delta.c
index c7aeb940accd..11689218d23a 100644
--- a/drivers/mtd/nand/raw/ams-delta.c
+++ b/drivers/mtd/nand/raw/ams-delta.c
@@ -40,12 +40,14 @@ struct ams_delta_nand {
 	struct gpio_desc	*gpiod_cle;
 	struct gpio_descs	*data_gpiods;
 	bool			data_in;
+	unsigned int		tRP;
+	unsigned int		tWP;
 };
 
 static void ams_delta_write_commit(struct ams_delta_nand *priv)
 {
 	gpiod_set_value(priv->gpiod_nwe, 1);
-	ndelay(40);
+	ndelay(priv->tWP);
 	gpiod_set_value(priv->gpiod_nwe, 0);
 }
 
@@ -82,7 +84,7 @@ static u8 ams_delta_io_read(struct ams_delta_nand *priv)
 	DECLARE_BITMAP(values, BITS_PER_TYPE(res)) = { 0, };
 
 	gpiod_set_value(priv->gpiod_nre, 1);
-	ndelay(40);
+	ndelay(priv->tRP);
 
 	gpiod_get_raw_array_value(data_gpiods->ndescs, data_gpiods->desc,
 				  data_gpiods->info, values);
@@ -187,8 +189,31 @@ static int ams_delta_exec_op(struct nand_chip *this,
 	return ret;
 }
 
+static int ams_delta_setup_data_interface(struct nand_chip *this, int csline,
+					  const struct nand_data_interface *cf)
+{
+	struct ams_delta_nand *priv = nand_get_controller_data(this);
+	const struct nand_sdr_timings *sdr = nand_get_sdr_timings(cf);
+	struct device *dev = &nand_to_mtd(this)->dev;
+
+	if (IS_ERR(sdr))
+		return PTR_ERR(sdr);
+
+	if (csline == NAND_DATA_IFACE_CHECK_ONLY)
+		return 0;
+
+	priv->tRP = DIV_ROUND_UP(sdr->tRP_min, 1000);
+	dev_dbg(dev, "using %u ns read pulse width\n", priv->tRP);
+
+	priv->tWP = DIV_ROUND_UP(sdr->tWP_min, 1000);
+	dev_dbg(dev, "using %u ns write pulse width\n", priv->tWP);
+
+	return 0;
+}
+
 static const struct nand_controller_ops ams_delta_ops = {
 	.exec_op = ams_delta_exec_op,
+	.setup_data_interface = ams_delta_setup_data_interface,
 };
 
 /*
-- 
2.24.1

WARNING: multiple messages have this Message-ID (diff)
From: Janusz Krzysztofik <jmkrzyszt@gmail.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>,
	Richard Weinberger <richard@nod.at>
Cc: Vignesh Raghavendra <vigneshr@ti.com>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Tony Lindgren <tony@atomide.com>,
	Janusz Krzysztofik <jmkrzyszt@gmail.com>,
	linux-mtd@lists.infradead.org, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 07/14] mtd: rawnand: ams-delta: Don't hardcode read/write pulse widths
Date: Wed, 12 Feb 2020 01:39:22 +0100	[thread overview]
Message-ID: <20200212003929.6682-8-jmkrzyszt@gmail.com> (raw)
In-Reply-To: <20200212003929.6682-1-jmkrzyszt@gmail.com>

Instead of forcing Amstrad Delta specific read/write pulse widths, use
variables initialised from respective fields of chip SDR timings.

Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
---
 drivers/mtd/nand/raw/ams-delta.c | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/raw/ams-delta.c b/drivers/mtd/nand/raw/ams-delta.c
index c7aeb940accd..11689218d23a 100644
--- a/drivers/mtd/nand/raw/ams-delta.c
+++ b/drivers/mtd/nand/raw/ams-delta.c
@@ -40,12 +40,14 @@ struct ams_delta_nand {
 	struct gpio_desc	*gpiod_cle;
 	struct gpio_descs	*data_gpiods;
 	bool			data_in;
+	unsigned int		tRP;
+	unsigned int		tWP;
 };
 
 static void ams_delta_write_commit(struct ams_delta_nand *priv)
 {
 	gpiod_set_value(priv->gpiod_nwe, 1);
-	ndelay(40);
+	ndelay(priv->tWP);
 	gpiod_set_value(priv->gpiod_nwe, 0);
 }
 
@@ -82,7 +84,7 @@ static u8 ams_delta_io_read(struct ams_delta_nand *priv)
 	DECLARE_BITMAP(values, BITS_PER_TYPE(res)) = { 0, };
 
 	gpiod_set_value(priv->gpiod_nre, 1);
-	ndelay(40);
+	ndelay(priv->tRP);
 
 	gpiod_get_raw_array_value(data_gpiods->ndescs, data_gpiods->desc,
 				  data_gpiods->info, values);
@@ -187,8 +189,31 @@ static int ams_delta_exec_op(struct nand_chip *this,
 	return ret;
 }
 
+static int ams_delta_setup_data_interface(struct nand_chip *this, int csline,
+					  const struct nand_data_interface *cf)
+{
+	struct ams_delta_nand *priv = nand_get_controller_data(this);
+	const struct nand_sdr_timings *sdr = nand_get_sdr_timings(cf);
+	struct device *dev = &nand_to_mtd(this)->dev;
+
+	if (IS_ERR(sdr))
+		return PTR_ERR(sdr);
+
+	if (csline == NAND_DATA_IFACE_CHECK_ONLY)
+		return 0;
+
+	priv->tRP = DIV_ROUND_UP(sdr->tRP_min, 1000);
+	dev_dbg(dev, "using %u ns read pulse width\n", priv->tRP);
+
+	priv->tWP = DIV_ROUND_UP(sdr->tWP_min, 1000);
+	dev_dbg(dev, "using %u ns write pulse width\n", priv->tWP);
+
+	return 0;
+}
+
 static const struct nand_controller_ops ams_delta_ops = {
 	.exec_op = ams_delta_exec_op,
+	.setup_data_interface = ams_delta_setup_data_interface,
 };
 
 /*
-- 
2.24.1


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

WARNING: multiple messages have this Message-ID (diff)
From: Janusz Krzysztofik <jmkrzyszt@gmail.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>,
	Richard Weinberger <richard@nod.at>
Cc: Vignesh Raghavendra <vigneshr@ti.com>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Tony Lindgren <tony@atomide.com>,
	Janusz Krzysztofik <jmkrzyszt@gmail.com>,
	linux-mtd@lists.infradead.org, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 07/14] mtd: rawnand: ams-delta: Don't hardcode read/write pulse widths
Date: Wed, 12 Feb 2020 01:39:22 +0100	[thread overview]
Message-ID: <20200212003929.6682-8-jmkrzyszt@gmail.com> (raw)
In-Reply-To: <20200212003929.6682-1-jmkrzyszt@gmail.com>

Instead of forcing Amstrad Delta specific read/write pulse widths, use
variables initialised from respective fields of chip SDR timings.

Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
---
 drivers/mtd/nand/raw/ams-delta.c | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/raw/ams-delta.c b/drivers/mtd/nand/raw/ams-delta.c
index c7aeb940accd..11689218d23a 100644
--- a/drivers/mtd/nand/raw/ams-delta.c
+++ b/drivers/mtd/nand/raw/ams-delta.c
@@ -40,12 +40,14 @@ struct ams_delta_nand {
 	struct gpio_desc	*gpiod_cle;
 	struct gpio_descs	*data_gpiods;
 	bool			data_in;
+	unsigned int		tRP;
+	unsigned int		tWP;
 };
 
 static void ams_delta_write_commit(struct ams_delta_nand *priv)
 {
 	gpiod_set_value(priv->gpiod_nwe, 1);
-	ndelay(40);
+	ndelay(priv->tWP);
 	gpiod_set_value(priv->gpiod_nwe, 0);
 }
 
@@ -82,7 +84,7 @@ static u8 ams_delta_io_read(struct ams_delta_nand *priv)
 	DECLARE_BITMAP(values, BITS_PER_TYPE(res)) = { 0, };
 
 	gpiod_set_value(priv->gpiod_nre, 1);
-	ndelay(40);
+	ndelay(priv->tRP);
 
 	gpiod_get_raw_array_value(data_gpiods->ndescs, data_gpiods->desc,
 				  data_gpiods->info, values);
@@ -187,8 +189,31 @@ static int ams_delta_exec_op(struct nand_chip *this,
 	return ret;
 }
 
+static int ams_delta_setup_data_interface(struct nand_chip *this, int csline,
+					  const struct nand_data_interface *cf)
+{
+	struct ams_delta_nand *priv = nand_get_controller_data(this);
+	const struct nand_sdr_timings *sdr = nand_get_sdr_timings(cf);
+	struct device *dev = &nand_to_mtd(this)->dev;
+
+	if (IS_ERR(sdr))
+		return PTR_ERR(sdr);
+
+	if (csline == NAND_DATA_IFACE_CHECK_ONLY)
+		return 0;
+
+	priv->tRP = DIV_ROUND_UP(sdr->tRP_min, 1000);
+	dev_dbg(dev, "using %u ns read pulse width\n", priv->tRP);
+
+	priv->tWP = DIV_ROUND_UP(sdr->tWP_min, 1000);
+	dev_dbg(dev, "using %u ns write pulse width\n", priv->tWP);
+
+	return 0;
+}
+
 static const struct nand_controller_ops ams_delta_ops = {
 	.exec_op = ams_delta_exec_op,
+	.setup_data_interface = ams_delta_setup_data_interface,
 };
 
 /*
-- 
2.24.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-02-12  0:40 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-12  0:39 [RFC PATCH 00/14] mtd: rawnand: ams-delta: Prepare for merging Janusz Krzysztofik
2020-02-12  0:39 ` Janusz Krzysztofik
2020-02-12  0:39 ` Janusz Krzysztofik
2020-02-12  0:39 ` [RFC PATCH 01/14 v2] mtd: rawnand: ams-delta: Write protect device during probe Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:33   ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 02/14] mtd: rawnand: ams-delta: Use struct gpio_nand_platdata Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:33   ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 03/14] ARM: OMAP1: ams-delta: Provide board specific partition info Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12 14:51   ` Tony Lindgren
2020-02-12 14:51     ` Tony Lindgren
2020-02-12 14:51     ` Tony Lindgren
2020-02-12 18:25     ` Janusz Krzysztofik
2020-02-12 18:25       ` Janusz Krzysztofik
2020-02-12 18:25       ` Janusz Krzysztofik
2020-02-12 18:28       ` Tony Lindgren
2020-02-12 18:28         ` Tony Lindgren
2020-02-12 18:28         ` Tony Lindgren
2020-03-10 18:33   ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 04/14 v4] mtd: rawnand: ams-delta: Drop " Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:33   ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 05/14] mtd: rawnand: ams-delta: Enable OF partition info support Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:33   ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-03-10 18:33     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 06/14] mtd: rawnand: ams-delta: Push inversion handling to gpiolib Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12 18:28   ` Tony Lindgren
2020-02-12 18:28     ` Tony Lindgren
2020-02-12 18:28     ` Tony Lindgren
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` Janusz Krzysztofik [this message]
2020-02-12  0:39   ` [RFC PATCH 07/14] mtd: rawnand: ams-delta: Don't hardcode read/write pulse widths Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 08/14] mtd: rawnand: ams-delta: Make read pulses optional Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 09/14] mtd: rawnand: ams-delta: Handle more GPIO pins as optional Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 10/14] mtd: rawnand: ams-delta: Add module device tables Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 11/14] mtd: rawnand: ams-delta: Support custom driver initialisation Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 12/14] mtd: rawnand: ams-delta: Drop useless local variable Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 13/14] mtd: rawnand: ams-delta: Make the driver custom I/O ready Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-02-12  0:39 ` [RFC PATCH 14/14] mtd: rawnand: ams-delta: Rename structures and functions to gpio_nand* Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-02-12  0:39   ` Janusz Krzysztofik
2020-03-10 18:32   ` Miquel Raynal
2020-03-10 18:32     ` Miquel Raynal
2020-03-10 18:32     ` 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=20200212003929.6682-8-jmkrzyszt@gmail.com \
    --to=jmkrzyszt@gmail.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=miquel.raynal@bootlin.com \
    --cc=richard@nod.at \
    --cc=tony@atomide.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.