MTD: pxa3xx_nand: fix nand detection issue
Subsystems (2)
PATCH 1/2 MTD: pxa3xx_nand: fix nand detection issue
When keep_config is set, the detection would goes different routine. That the driver would read out the setting which is set previously by bootloader. While most bootloader keep the irq mask as off, and current driver need all irq default open, keep_config behavior would lead to no irq at all.
--- drivers/mtd/nand/pxa3xx_nand.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-)
drivers/mtd/nand/pxa3xx_nand.c +7 -5
@@ -813,7 +813,7 @@ static int pxa3xx_nand_detect_config(struct pxa3xx_nand_info *info) info->page_size = ndcr &NDCR_PAGE_SZ ?2048 :512 ;/* set info fields needed to read id */ info->read_id_bytes = (info->page_size ==2048 ) ?4 :2 ; - info->reg_ndcr = ndcr; + info->reg_ndcr = ndcr & ~NDCR_INT_MASK ; info->cmdset = &default_cmdset; info->ndtr0cs0 =nand_readl (info,NDTR0CS0 );
@@ -882,7 +882,7 @@ static int pxa3xx_nand_scan(struct mtd_info *mtd)struct pxa3xx_nand_info *info = mtd->priv;struct platform_device *pdev = info->pdev;struct pxa3xx_nand_platform_data *pdata = pdev->dev.platform_data; -struct nand_flash_dev pxa3xx_flash_ids[2 ] = { {NULL ,}, {NULL ,} }; +struct nand_flash_dev pxa3xx_flash_ids[2 ], *def =NULL ;const struct pxa3xx_nand_flash *f =NULL ;struct nand_chip *chip = mtd->priv;uint32_t id =-1 ;
@@ -942,8 +942,10 @@ static int pxa3xx_nand_scan(struct mtd_info *mtd) pxa3xx_flash_ids[0 ].erasesize = f->page_size * f->page_per_block;if (f->flash_width ==16 ) pxa3xx_flash_ids[0 ].options =NAND_BUSWIDTH_16 ; + pxa3xx_flash_ids[1 ].name =NULL ; + def = pxa3xx_flash_ids; KEEP_CONFIG: -if (nand_scan_ident (mtd,1 , pxa3xx_flash_ids)) +if (nand_scan_ident (mtd,1 , def))return -ENODEV ;/* calculate addressing information */ info->col_addr_cycles = (mtd->writesize >=2048 ) ?2 :1 ;
@@ -954,9 +956,9 @@ KEEP_CONFIG: info->row_addr_cycles =2 ; mtd->name = mtd_names[0 ]; chip->ecc.mode =NAND_ECC_HW ; - chip->ecc.size = f->page_size; + chip->ecc.size = info->page_size; - chip->options = (f->flash_width ==16 ) ?NAND_BUSWIDTH_16 :0 ; + chip->options = (info->reg_ndcr &NDCR_DWIDTH_M ) ?NAND_BUSWIDTH_16 :0 ; chip->options |=NAND_NO_AUTOINCR ; chip->options |=NAND_NO_READRDY ;
Signature · 1 line
1.7.0.4
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
From: Daniel Mack <[email protected]>
This bug was introduced in f8155a40 ("mtd: pxa3xx_nand: rework irq logic") and causes the PXA3xx NAND controller fail to operate with NAND flash that has empty pages. According to the comment in this block, the hardware controller will report a double-bit error for empty pages, which can and must be ignored.
This patch restores the original behaviour of the driver.
--- drivers/mtd/nand/pxa3xx_nand.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
drivers/mtd/nand/pxa3xx_nand.c +2 -0
@@ -685,6 +685,8 @@ static int pxa3xx_nand_read_page_hwecc(struct mtd_info *mtd,* OOB, ignore such double bit errors */ if (is_buf_blank (buf, mtd->writesize)) + info->retcode =ERR_NONE ; +else mtd->ecc_stats.failed++; }
Signature · 1 line
1.7.0.4
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
Quoted 8 lines · Lei Wen
From: Daniel Mack <[email protected]>
This bug was introduced in
f8155a40("mtd:pxa3xx_nand: rework irq logic") and causes the PXA3xx NAND controller fail to operate with NAND flash that has empty pages. According to the comment in this block, the hardware controller will report a double-bit error for empty pages, which can and must be ignored.
Quoted 7 lines
This patch restores the original behaviour of the driver.
Signed-off-by Daniel Mack <[email protected]>Acked-by Lei Wen <[email protected]>Cc Haojian Zhuang <[email protected]>Cc David Woodhouse <[email protected]>Cc stable at kernel.org
This was introduced in 2.6.38, so let's make it:
Signature · 2 lines
Best Regards, Artem Bityutskiy (????? ????????)
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
Quoted 17 lines · Artem Bityutskiy
Quoted 8 lines · Lei Wen
From: Daniel Mack <[email protected]>
This bug was introduced in
f8155a40("mtd:pxa3xx_nand: rework irq logic") and causes the PXA3xx NAND controller fail to operate with NAND flash that has empty pages. According to the comment in this block, the hardware controller will report a double-bit error for empty pages, which can and must be ignored.Quoted 7 lines
This patch restores the original behaviour of the driver.
Signed-off-by Daniel Mack <[email protected]>Acked-by Lei Wen <[email protected]>Cc Haojian Zhuang <[email protected]>Cc David Woodhouse <[email protected]>Cc stable at kernel.org
Quoted 4 lines
This was introduced in 2.6.38, so let's make it:
Cc stable at kernel.org [2.6.38+]
Thanks for correcting this.
Best regards,
Lei
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
Quoted 18 lines · Lei Wen
Quoted 17 lines · Artem Bityutskiy
Quoted 15 lines · Lei Wen
From: Daniel Mack <[email protected]>
This bug was introduced in
f8155a40("mtd:pxa3xx_nand: rework irq logic") and causes the PXA3xx NAND controller fail to operate with NAND flash that has empty pages. According to the comment in this block, the hardware controller will report a double-bit error for empty pages, which can and must be ignored.This patch restores the original behaviour of the driver.
Signed-off-by Daniel Mack <[email protected]>Acked-by Lei Wen <[email protected]>Cc Haojian Zhuang <[email protected]>Cc David Woodhouse <[email protected]>Cc stable at kernel.org
Quoted 5 lines
Quoted 4 lines
This was introduced in 2.6.38, so let's make it:
Cc stable at kernel.org [2.6.38+]Thanks for correcting this.
Has anyone queued this for 3.0 yet? This fixes a serious regression, so we need this merged, along with Lei's other patch titled "MTD:pxa3xx_nand: fix nand detection issue".
Thanks,
Daniel
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
Quoted 3 lines · Daniel Mack
Has anyone queued this for 3.0 yet? This fixes a serious regression, so we need this merged, along with Lei's other patch titled "MTD:
pxa3xx_nand: fix nand detection issue".
Hmm, I'm a little late on this one...I was just sorting through a few e-mails and saw this one.
It looks like it made it as far as Artem's l2-mtd-2.6.git:
http://git.infradead.org/users/dedekind/l2-mtd-2.6.git/commit/e119967aad8df3b87834e28249feca696c650647
but things have been sitting there for months now. I believe every so often, dwmw sorts through Artem's l2-mtd-2.6 repo, pulls patches into mtd-2.6, and gets them merged upstream. I think the last time this happened was early June (between v3.0-rc1 and v3.0-rc2). Once such patches hit mainline, then the stable team is alerted and the appropriately-labeled patches are sent to the stable repos. Don't know when this will happen though. I'm kinda wondering myself...
Brian
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
Quoted 11 lines · Brian Norris
Quoted 3 lines · Daniel Mack
Has anyone queued this for 3.0 yet? This fixes a serious regression, so we need this merged, along with Lei's other patch titled "MTD:
pxa3xx_nand: fix nand detection issue".Hmm, I'm a little late on this one...I was just sorting through a few e-mails and saw this one.
It looks like it made it as far as Artem's l2-mtd-2.6.git:
http://git.infradead.org/users/dedekind/l2-mtd-2.6.git/commit/e119967aad8df3b87834e28249feca696c650647
Quoted 7 lines
but things have been sitting there for months now. I believe every so often, dwmw sorts through Artem's l2-mtd-2.6 repo, pulls patches into mtd-2.6, and gets them merged upstream. I think the last time this happened was early June (between v3.0-rc1 and v3.0-rc2). Once such patches hit mainline, then the stable team is alerted and the appropriately-labeled patches are sent to the stable repos. Don't know when this will happen though. I'm kinda wondering myself...
My guess is that this patch will reach upstream only when the linux-3.1 merge window opens.
Signature · 2 lines
Best Regards, Artem Bityutskiy
PATCH 2/2 MTD: pxa3xx_nand: Fix blank page ECC mismatch
Quoted 2 lines · Artem Bityutskiy
My guess is that this patch will reach upstream only when the linux-3.1 merge window opens.
And it is open now :-)
Signature · 2 lines
Best Regards, Artem Bityutskiy
PATCH 1/2 MTD: pxa3xx_nand: fix nand detection issue
In reply to Lei WenQuoted 9 lines · Lei Wen
When
keep_configis set, the detection would goes different routine. That the driver would read out the setting which is set previously by bootloader. While most bootloader keep the irq mask as off, and current driver need all irq default open,keep_configbehavior would lead to no irq at all.Signed-off-by Lei Wen <[email protected]>Tested-by Daniel Mack <[email protected]>Cc stable at kernel.org
When the regression was introduced? Commit id?
Signature · 2 lines
Best Regards, Artem Bityutskiy (????? ????????)
PATCH 1/2 MTD: pxa3xx_nand: fix nand detection issue
Hi Artem,
Quoted 7 lines · Artem Bityutskiy
Quoted 6 lines · Lei Wen
When
keep_configis set, the detection would goes different routine. That the driver would read out the setting which is set previously by bootloader. While most bootloader keep the irq mask as off, and current driver need all irq default open,keep_configbehavior would lead to no irq at all.
Quoted 5 lines
Quoted 3 lines
Signed-off-by Lei Wen <[email protected]>Tested-by Daniel Mack <[email protected]>Cc stable at kernel.orgWhen the regression was introduced? Commit id?
This regression should be introduced by below commit:
commit f8155a404db95656f1519b28fdb96cb68f8b2364
Author: Lei Wen <[email protected]> Date: Mon Feb 28 10:32:11 2011 +0800
mtd: pxa3xx_nand: rework irq logic
So its should be:
Cc: stable at kernel.org [2.6.38+]
Best regards,
Lei
PATCH 1/2 MTD: pxa3xx_nand: fix nand detection issue
In reply to Lei WenQuoted 9 lines · Lei Wen
When
keep_configis set, the detection would goes different routine. That the driver would read out the setting which is set previously by bootloader. While most bootloader keep the irq mask as off, and current driver need all irq default open,keep_configbehavior would lead to no irq at all.Signed-off-by Lei Wen <[email protected]>Tested-by Daniel Mack <[email protected]>Cc stable at kernel.org
Pushed both patches to l2-mtd-2.6.git, thanks.
Signature · 2 lines
Best Regards, Artem Bityutskiy (????? ????????)