From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
To: Arnaud Ebalard <arno@natisbad.org>
Cc: Lior Amsalem <alior@marvell.com>,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
Jason Cooper <jason@lakedaemon.net>,
linux-mtd@lists.infradead.org,
Gregory Clement <gregory.clement@free-electrons.com>,
Brian Norris <computersforpeace@gmail.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 00/14] Armada 370/XP NAND support
Date: Wed, 4 Dec 2013 11:41:47 -0300 [thread overview]
Message-ID: <20131204144146.GC2486@localhost> (raw)
In-Reply-To: <20131204142009.GB2486@localhost>
On Wed, Dec 04, 2013 at 11:20:09AM -0300, Ezequiel Garcia wrote:
> On Tue, Dec 03, 2013 at 10:25:14PM +0100, Arnaud Ebalard wrote:
[..]
> > Erasing failed write from 0x0a0000 to 0x0bffff
> > Writing data to block 6 at offset 0xc0000
> > [ 451.115171] pxa3xx-nand d00d0000.nand: Ready time out!!!
> > libmtd: error!: cannot write 2048 bytes to mtd4 (eraseblock 6, offset 2048)
> > error 5 (Input/output error)
> > Erasing failed write from 0x0c0000 to 0x0dffff
> > Writing data to block 7 at offset 0xe0000
> >
> >
>
> So, let me confirm this: you have systematically obtained a "Ready
> timeout" when writing to the device, on every single write to a page,
> correct?
>
> I'll prepare a patch against the branch we're working that adds lots of
> pr_info(). It'll be very annoying for you, but it's the only way I can
> think of, to get the driver's dirty inner sequence and to see *where*
> is failing.
>
[..]
And here's the patch, along with instructions...
commit cc7999a922bf3c09ddc65effb11de6fc5ea88b1c
Author: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Date: Wed Dec 4 11:27:04 2013 -0300
mtd: nand: pxa3xx: Add debug messages
Need CONFIG_DYNAMIC_DEBUG=y and then:
$ mount -t debugfs debugfs /sys/kernel/debug/
$ cd /sys/kernel/debug/dynamic_debug/
$ echo "file drivers/mtd/nand/pxa3xx_nand.c +p" > control
Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index 038cf5d..1744599 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -616,6 +616,7 @@ static irqreturn_t pxa3xx_nand_irq(int irq, void *devid)
if (status & ready) {
info->state = STATE_READY;
is_ready = 1;
+ pr_debug("Status: ready\n");
}
if (status & NDSR_WRCMDREQ) {
@@ -631,6 +632,11 @@ static irqreturn_t pxa3xx_nand_irq(int irq, void *devid)
* Direct write access to NDCB1, NDCB2 and NDCB3 is ignored
* but each NDCBx register can be read.
*/
+ pr_debug("Command0 0x%x\n", info->ndcb0);
+ pr_debug("Command1 0x%x\n", info->ndcb1);
+ pr_debug("Command2 0x%x\n", info->ndcb2);
+ pr_debug("Command3 0x%x\n", info->ndcb3);
+
nand_writel(info, NDCB0, info->ndcb0);
nand_writel(info, NDCB0, info->ndcb1);
nand_writel(info, NDCB0, info->ndcb2);
@@ -1154,6 +1160,7 @@ static int pxa3xx_nand_waitfunc(struct mtd_info *mtd, struct nand_chip *this)
int ret;
if (info->need_wait) {
+ pr_debug("Waiting for device to be ready\n");
ret = wait_for_completion_timeout(&info->dev_ready,
CHIP_DELAY_TIMEOUT);
info->need_wait = 0;
@@ -1161,6 +1168,7 @@ static int pxa3xx_nand_waitfunc(struct mtd_info *mtd, struct nand_chip *this)
dev_err(&info->pdev->dev, "Ready time out!!!\n");
return NAND_STATUS_FAIL;
}
+ pr_debug("Device is ready\n");
}
/* pxa3xx_nand_send_command has waited for command complete */
@@ -1468,6 +1476,10 @@ KEEP_CONFIG:
if (nand_scan_ident(mtd, 1, def))
return -ENODEV;
+ pr_info("Control register dump 0x%x\n", info->reg_ndcr);
+ pr_info("Timing 0 register dump 0x%x\n", info->ndtr0cs0);
+ pr_info("Timing 1 register dump 0x%x\n", info->ndtr1cs0);
+
if (pdata->flash_bbt) {
/*
* We'll use a bad block table stored in-flash and don't
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
WARNING: multiple messages have this Message-ID (diff)
From: ezequiel.garcia@free-electrons.com (Ezequiel Garcia)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 00/14] Armada 370/XP NAND support
Date: Wed, 4 Dec 2013 11:41:47 -0300 [thread overview]
Message-ID: <20131204144146.GC2486@localhost> (raw)
In-Reply-To: <20131204142009.GB2486@localhost>
On Wed, Dec 04, 2013 at 11:20:09AM -0300, Ezequiel Garcia wrote:
> On Tue, Dec 03, 2013 at 10:25:14PM +0100, Arnaud Ebalard wrote:
[..]
> > Erasing failed write from 0x0a0000 to 0x0bffff
> > Writing data to block 6 at offset 0xc0000
> > [ 451.115171] pxa3xx-nand d00d0000.nand: Ready time out!!!
> > libmtd: error!: cannot write 2048 bytes to mtd4 (eraseblock 6, offset 2048)
> > error 5 (Input/output error)
> > Erasing failed write from 0x0c0000 to 0x0dffff
> > Writing data to block 7 at offset 0xe0000
> >
> >
>
> So, let me confirm this: you have systematically obtained a "Ready
> timeout" when writing to the device, on every single write to a page,
> correct?
>
> I'll prepare a patch against the branch we're working that adds lots of
> pr_info(). It'll be very annoying for you, but it's the only way I can
> think of, to get the driver's dirty inner sequence and to see *where*
> is failing.
>
[..]
And here's the patch, along with instructions...
commit cc7999a922bf3c09ddc65effb11de6fc5ea88b1c
Author: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Date: Wed Dec 4 11:27:04 2013 -0300
mtd: nand: pxa3xx: Add debug messages
Need CONFIG_DYNAMIC_DEBUG=y and then:
$ mount -t debugfs debugfs /sys/kernel/debug/
$ cd /sys/kernel/debug/dynamic_debug/
$ echo "file drivers/mtd/nand/pxa3xx_nand.c +p" > control
Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index 038cf5d..1744599 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -616,6 +616,7 @@ static irqreturn_t pxa3xx_nand_irq(int irq, void *devid)
if (status & ready) {
info->state = STATE_READY;
is_ready = 1;
+ pr_debug("Status: ready\n");
}
if (status & NDSR_WRCMDREQ) {
@@ -631,6 +632,11 @@ static irqreturn_t pxa3xx_nand_irq(int irq, void *devid)
* Direct write access to NDCB1, NDCB2 and NDCB3 is ignored
* but each NDCBx register can be read.
*/
+ pr_debug("Command0 0x%x\n", info->ndcb0);
+ pr_debug("Command1 0x%x\n", info->ndcb1);
+ pr_debug("Command2 0x%x\n", info->ndcb2);
+ pr_debug("Command3 0x%x\n", info->ndcb3);
+
nand_writel(info, NDCB0, info->ndcb0);
nand_writel(info, NDCB0, info->ndcb1);
nand_writel(info, NDCB0, info->ndcb2);
@@ -1154,6 +1160,7 @@ static int pxa3xx_nand_waitfunc(struct mtd_info *mtd, struct nand_chip *this)
int ret;
if (info->need_wait) {
+ pr_debug("Waiting for device to be ready\n");
ret = wait_for_completion_timeout(&info->dev_ready,
CHIP_DELAY_TIMEOUT);
info->need_wait = 0;
@@ -1161,6 +1168,7 @@ static int pxa3xx_nand_waitfunc(struct mtd_info *mtd, struct nand_chip *this)
dev_err(&info->pdev->dev, "Ready time out!!!\n");
return NAND_STATUS_FAIL;
}
+ pr_debug("Device is ready\n");
}
/* pxa3xx_nand_send_command has waited for command complete */
@@ -1468,6 +1476,10 @@ KEEP_CONFIG:
if (nand_scan_ident(mtd, 1, def))
return -ENODEV;
+ pr_info("Control register dump 0x%x\n", info->reg_ndcr);
+ pr_info("Timing 0 register dump 0x%x\n", info->ndtr0cs0);
+ pr_info("Timing 1 register dump 0x%x\n", info->ndtr1cs0);
+
if (pdata->flash_bbt) {
/*
* We'll use a bad block table stored in-flash and don't
--
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
next prev parent reply other threads:[~2013-12-04 14:41 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 21:25 [PATCH v5 00/14] Armada 370/XP NAND support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 01/14] mtd: nand: pxa3xx: Use a completion to signal device ready Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 02/14] mtd: nand: pxa3xx: Use waitfunc() to wait for the device to be ready Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 03/14] mtd: nand: pxa3xx: Add bad block handling Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:12 ` Brian Norris
2013-11-14 22:12 ` Brian Norris
2013-11-14 22:37 ` Ezequiel Garcia
2013-11-14 22:37 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 04/14] mtd: nand: pxa3xx: Add driver-specific ECC BCH support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 05/14] mtd: nand: pxa3xx: Clear cmd buffer #3 (NDCB3) on command start Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:18 ` Brian Norris
2013-11-14 22:18 ` Brian Norris
2013-11-14 21:25 ` [PATCH v5 06/14] mtd: nand: pxa3xx: Add helper function to set page address Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 07/14] mtd: nand: pxa3xx: Remove READ0 switch/case falltrough Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 08/14] mtd: nand: pxa3xx: Split prepare_command_pool() in two stages Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 09/14] mtd: nand: pxa3xx: Move the data buffer clean to prepare_start_command() Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:25 ` Brian Norris
2013-11-14 22:25 ` Brian Norris
2013-11-14 22:45 ` Ezequiel Garcia
2013-11-14 22:45 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 10/14] mtd: nand: pxa3xx: Fix SEQIN column address set Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 11/14] mtd: nand: pxa3xx: Add a read/write buffers markers Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 12/14] mtd: nand: pxa3xx: Introduce multiple page I/O support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:40 ` Brian Norris
2013-11-14 22:40 ` Brian Norris
2013-11-14 23:02 ` Ezequiel Garcia
2013-11-14 23:02 ` Ezequiel Garcia
2013-11-14 23:07 ` Brian Norris
2013-11-14 23:07 ` Brian Norris
2013-11-14 21:25 ` [PATCH v5 13/14] mtd: nand: pxa3xx: Add multiple chunk write support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 14/14] mtd: nand: pxa3xx: Add ECC BCH correctable errors detection Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 23:04 ` [PATCH v5 00/14] Armada 370/XP NAND support Brian Norris
2013-11-14 23:04 ` Brian Norris
2013-11-14 23:05 ` Brian Norris
2013-11-14 23:05 ` Brian Norris
2013-11-14 23:15 ` Ezequiel Garcia
2013-11-14 23:15 ` Ezequiel Garcia
2013-11-14 23:17 ` Brian Norris
2013-11-14 23:17 ` Brian Norris
2013-11-15 7:59 ` Daniel Mack
2013-11-15 7:59 ` Daniel Mack
2013-11-15 13:07 ` Ezequiel Garcia
2013-11-15 13:07 ` Ezequiel Garcia
2013-11-15 13:47 ` Daniel Mack
2013-11-15 13:47 ` Daniel Mack
2013-11-15 14:27 ` Ezequiel Garcia
2013-11-15 14:27 ` Ezequiel Garcia
2013-11-15 14:30 ` Daniel Mack
2013-11-15 14:30 ` Daniel Mack
2013-11-15 18:05 ` Brian Norris
2013-11-15 18:05 ` Brian Norris
2013-11-15 18:35 ` Ezequiel Garcia
2013-11-15 18:35 ` Ezequiel Garcia
2013-11-24 14:08 ` Arnaud Ebalard
2013-11-24 14:08 ` Arnaud Ebalard
2013-11-24 14:22 ` Thomas Petazzoni
2013-11-24 14:22 ` Thomas Petazzoni
2013-11-25 12:03 ` Ezequiel Garcia
2013-11-25 12:03 ` Ezequiel Garcia
2013-11-25 23:04 ` Arnaud Ebalard
2013-11-25 23:04 ` Arnaud Ebalard
2013-11-26 12:40 ` Ezequiel Garcia
2013-11-26 12:40 ` Ezequiel Garcia
2013-11-27 20:24 ` Arnaud Ebalard
2013-11-27 20:24 ` Arnaud Ebalard
2013-11-27 20:52 ` Arnaud Ebalard
2013-11-27 20:52 ` Arnaud Ebalard
2013-11-28 7:48 ` Ricard Wanderlof
2013-11-28 7:48 ` Ricard Wanderlof
2013-11-28 18:50 ` Ezequiel Garcia
2013-11-28 18:50 ` Ezequiel Garcia
2013-11-29 23:25 ` Arnaud Ebalard
2013-11-29 23:25 ` Arnaud Ebalard
2013-12-02 10:33 ` Ezequiel Garcia
2013-12-02 10:33 ` Ezequiel Garcia
2013-12-02 21:05 ` Arnaud Ebalard
2013-12-02 21:05 ` Arnaud Ebalard
2013-12-03 0:22 ` Ezequiel Garcia
2013-12-03 0:22 ` Ezequiel Garcia
2013-12-03 20:21 ` Arnaud Ebalard
2013-12-03 20:21 ` Arnaud Ebalard
2013-12-03 21:25 ` Arnaud Ebalard
2013-12-03 21:25 ` Arnaud Ebalard
2013-12-04 14:20 ` Ezequiel Garcia
2013-12-04 14:20 ` Ezequiel Garcia
2013-12-04 14:41 ` Ezequiel Garcia [this message]
2013-12-04 14:41 ` Ezequiel Garcia
2013-12-04 20:48 ` Arnaud Ebalard
2013-12-04 20:48 ` Arnaud Ebalard
2013-12-05 20:42 ` Arnaud Ebalard
2013-12-05 20:42 ` Arnaud Ebalard
2013-12-05 22:24 ` [PATCH v5 00/14] Armada 370/XP NAND supportg Ezequiel Garcia
2013-12-05 22:24 ` Ezequiel Garcia
2013-12-06 12:56 ` [PATCH v5 00/14] Armada 370/XP NAND support Ezequiel Garcia
2013-12-06 12:56 ` Ezequiel Garcia
2013-12-06 21:41 ` Arnaud Ebalard
2013-12-06 21:41 ` Arnaud Ebalard
2013-12-06 22:05 ` Ezequiel Garcia
2013-12-06 22:05 ` Ezequiel Garcia
2013-12-05 21:32 ` Brian Norris
2013-12-05 21:32 ` Brian Norris
2013-12-05 21:23 ` Brian Norris
2013-12-05 21:23 ` Brian Norris
2013-12-05 22:23 ` Ezequiel Garcia
2013-12-05 22:23 ` Ezequiel Garcia
2013-12-05 22:45 ` Brian Norris
2013-12-05 22:45 ` Brian Norris
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=20131204144146.GC2486@localhost \
--to=ezequiel.garcia@free-electrons.com \
--cc=alior@marvell.com \
--cc=arno@natisbad.org \
--cc=computersforpeace@gmail.com \
--cc=gregory.clement@free-electrons.com \
--cc=jason@lakedaemon.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=thomas.petazzoni@free-electrons.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.