dreambox: update linux kernel für dm800/dm500hd/dm800se
authorghost <andreas.monzner@multimedia-labs.de>
Fri, 2 Sep 2011 21:26:24 +0000 (23:26 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Sat, 3 Sep 2011 14:09:52 +0000 (16:09 +0200)
- nand flash driver fix to fix broken writenfi userspace tool

recipes/linux/files/opendreambox/stblinux-2.6.18-brcmnand-oob-raw-write-fix.patch [new file with mode: 0644]
recipes/linux/files/opendreambox/stblinux-2.6.18-hw-ecc-compatibility.patch
recipes/linux/linux-opendreambox-2.6.18.inc

diff --git a/recipes/linux/files/opendreambox/stblinux-2.6.18-brcmnand-oob-raw-write-fix.patch b/recipes/linux/files/opendreambox/stblinux-2.6.18-brcmnand-oob-raw-write-fix.patch
new file mode 100644 (file)
index 0000000..a5fe250
--- /dev/null
@@ -0,0 +1,36 @@
+commit 4b53f1aca5fb4503460bc398ef40f296fc5c985c
+Author: ghost <andreas.monzner@multimedia-labs.de>
+Date:   Fri Sep 2 23:06:25 2011 +0200
+
+    brcmnand: fixed oob raw write
+
+diff --git a/drivers/mtd/brcmnand/brcmnand_base.c b/drivers/mtd/brcmnand/brcmnand_base.c
+index 7dc1c33..23fc1db 100644
+--- a/drivers/mtd/brcmnand/brcmnand_base.c
++++ b/drivers/mtd/brcmnand/brcmnand_base.c
+@@ -6067,6 +6067,14 @@ brcmnand_do_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops)
+       int page, status;
+       struct brcmnand_chip *chip = mtd->priv;
+       int toBeWritten, written;
++      int ooblen;
++
++      if (ops->mode == MTD_OOB_AUTO) {
++              ooblen = mtd->ecclayout->oobavail;
++      }
++      else {
++              ooblen = mtd->oobsize;
++      }
+       DEBUG(MTD_DEBUG_LEVEL3, "%s: to = 0x%08x, len = %i\n", __FUNCTION__,
+             (unsigned int)to, (int)ops->len);
+@@ -6119,8 +6127,8 @@ printk("-->%s, to=%08x, len=%d\n", __FUNCTION__, (uint32_t) to, (int)ops->len);}
+               return status;
+               page++;
+-              written += mtd->ecclayout->oobavail;
+-              toBeWritten -= mtd->ecclayout->oobavail;
++              written += ooblen;
++              toBeWritten -= ooblen;
+       }
index 8c20e01..f208613 100644 (file)
@@ -36,8 +36,8 @@
 +              } else {
 +                      if (bits_modified) {
 +                              uint32_t acc = brcmnand_ctrl_read(BCHP_NAND_ACC_CONTROL);
-+if (gdebug > 3) printk("re-enable ecc %08x %08x, old %08x\n", acc, bits_modified, acc);
-+                              brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc);
++if (gdebug > 3) printk("re-enable ecc %08x %08x, old %08x\n", acc | bits_modified, bits_modified, acc);
++                              brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc | bits_modified);
 +                              bits_modified = 0;
 +                      }
 +              }
index 86296af..fabeff1 100644 (file)
@@ -1,7 +1,7 @@
 require linux-opendreambox.inc
 
 SRCREV = "ac6cc9511a5f70eaa584c63fc5c3de33cae1d0e7"
-PR_INC = "r13"
+PR_INC = "r14"
 
 RREPLACES_kernel = "kernel-2.6.18-7.1-${MACHINE}"
 RCONFLICTS_kernel = "kernel-2.6.18-7.1-${MACHINE}"
@@ -11,6 +11,7 @@ RCONFLICTS_kernel-image = "kernel-image-2.6.18-7.1-${MACHINE}"
 SRC_URI += " http://trappist.elis.ugent.be/~mronsse/cdfs/download/cdfs-2.6.18.tar.bz2 \
        file://stblinux-2.6.18-cdfs.patch \
        file://stblinux-2.6.18-extra-version-7.4.patch;patch=1 \
+       file://stblinux-2.6.18-brcmnand-oob-raw-write-fix.patch;patch=1 \
        file://linux-2.6.18-fix-mips-crosscompile.patch;patch=1 \
        file://linux-2.6.18-fix-proc-cputype.patch;patch=1 \
        file://dvb-api-2.6.18-5.3.patch;patch=1 \