]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.1 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Nov 2011 20:44:08 +0000 (12:44 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 8 Nov 2011 20:44:08 +0000 (12:44 -0800)
added patches:
mtd-provide-an-alias-for-the-redboot-module-name.patch
mtd-pxa3xx_nand-fix-blank-page-ecc-mismatch.patch
mtd-pxa3xx_nand-fix-nand-detection-issue.patch

queue-3.1/mtd-provide-an-alias-for-the-redboot-module-name.patch [new file with mode: 0644]
queue-3.1/mtd-pxa3xx_nand-fix-blank-page-ecc-mismatch.patch [new file with mode: 0644]
queue-3.1/mtd-pxa3xx_nand-fix-nand-detection-issue.patch [new file with mode: 0644]
queue-3.1/series

diff --git a/queue-3.1/mtd-provide-an-alias-for-the-redboot-module-name.patch b/queue-3.1/mtd-provide-an-alias-for-the-redboot-module-name.patch
new file mode 100644 (file)
index 0000000..5d1b41e
--- /dev/null
@@ -0,0 +1,37 @@
+From d5de1907d0af22e1a02de2b16a624148517a39c2 Mon Sep 17 00:00:00 2001
+From: Andres Salomon <dilinger@queued.net>
+Date: Fri, 14 Oct 2011 07:33:20 -0700
+Subject: mtd: provide an alias for the redboot module name
+
+From: Andres Salomon <dilinger@queued.net>
+
+commit d5de1907d0af22e1a02de2b16a624148517a39c2 upstream.
+
+parse_mtd_partitions takes a list of partition types; if the driver
+isn't loaded, it attempts to load it, and then it grabs the partition
+parser.  For redboot, the module name is "redboot.ko", while the parser
+name is "RedBoot".  Since modprobe is case-sensitive, attempting to
+modprobe "RedBoot" will never work.  I suspect the embedded systems that
+make use of redboot just always manually loaded redboot prior to loading
+their specific nand chip drivers (or statically compiled it in).
+
+Signed-off-by: Andres Salomon <dilinger@queued.net>
+Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/mtd/redboot.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/mtd/redboot.c
++++ b/drivers/mtd/redboot.c
+@@ -297,6 +297,9 @@ static struct mtd_part_parser redboot_pa
+       .name = "RedBoot",
+ };
++/* mtd parsers will request the module by parser name */
++MODULE_ALIAS("RedBoot");
++
+ static int __init redboot_parser_init(void)
+ {
+       return register_mtd_parser(&redboot_parser);
diff --git a/queue-3.1/mtd-pxa3xx_nand-fix-blank-page-ecc-mismatch.patch b/queue-3.1/mtd-pxa3xx_nand-fix-blank-page-ecc-mismatch.patch
new file mode 100644 (file)
index 0000000..e91d309
--- /dev/null
@@ -0,0 +1,39 @@
+From 543e32d5ff165d0d68deedb0e3557478c7c36a4a Mon Sep 17 00:00:00 2001
+From: Daniel Mack <zonque@gmail.com>
+Date: Tue, 7 Jun 2011 03:01:07 -0700
+Subject: mtd: pxa3xx_nand: Fix blank page ECC mismatch
+
+From: Daniel Mack <zonque@gmail.com>
+
+commit 543e32d5ff165d0d68deedb0e3557478c7c36a4a upstream.
+
+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 <zonque@gmail.com>
+Acked-by: Lei Wen <leiwen@marvell.com>
+Cc: Haojian Zhuang <haojian.zhuang@marvell.com>
+Cc: David Woodhouse <David.Woodhouse@intel.com>
+Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/mtd/nand/pxa3xx_nand.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/mtd/nand/pxa3xx_nand.c
++++ b/drivers/mtd/nand/pxa3xx_nand.c
+@@ -685,6 +685,8 @@ static int pxa3xx_nand_read_page_hwecc(s
+                * OOB, ignore such double bit errors
+                */
+               if (is_buf_blank(buf, mtd->writesize))
++                      info->retcode = ERR_NONE;
++              else
+                       mtd->ecc_stats.failed++;
+       }
diff --git a/queue-3.1/mtd-pxa3xx_nand-fix-nand-detection-issue.patch b/queue-3.1/mtd-pxa3xx_nand-fix-nand-detection-issue.patch
new file mode 100644 (file)
index 0000000..dbc62f7
--- /dev/null
@@ -0,0 +1,68 @@
+From 0fab028b77d714ad302404b23306cf7adb885223 Mon Sep 17 00:00:00 2001
+From: Lei Wen <leiwen@marvell.com>
+Date: Tue, 7 Jun 2011 03:01:06 -0700
+Subject: mtd: pxa3xx_nand: fix nand detection issue
+
+From: Lei Wen <leiwen@marvell.com>
+
+commit 0fab028b77d714ad302404b23306cf7adb885223 upstream.
+
+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.
+
+Signed-off-by: Lei Wen <leiwen@marvell.com>
+Tested-by: Daniel Mack <zonque@gmail.com>
+Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/mtd/nand/pxa3xx_nand.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/mtd/nand/pxa3xx_nand.c
++++ b/drivers/mtd/nand/pxa3xx_nand.c
+@@ -813,7 +813,7 @@ static int pxa3xx_nand_detect_config(str
+       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_i
+       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_i
+       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;
index a8277196304353126d695f40108cdec5ffec7950..168edf644c7a6d4cf018967f3d6e8155cba948bc 100644 (file)
@@ -244,3 +244,6 @@ mac80211-fix-remain_off_channel-regression.patch
 mac80211-config-hw-when-going-back-on-channel.patch
 mac80211-disable-powersave-for-broken-aps.patch
 mtd-mtdchar-add-missing-initializer-on-raw-write.patch
+mtd-provide-an-alias-for-the-redboot-module-name.patch
+mtd-pxa3xx_nand-fix-nand-detection-issue.patch
+mtd-pxa3xx_nand-fix-blank-page-ecc-mismatch.patch