boot: kobs-ng: update kobs-ng for newer kernels
[openwrt/staging/wigyori.git] / package / boot / kobs-ng / patches / 004-fix-cal_nfc_geometry.patch
diff --git a/package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch b/package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch
new file mode 100644 (file)
index 0000000..ebfd623
--- /dev/null
@@ -0,0 +1,27 @@
+The Freescale downstream vendor kernel has a patch that exports the bch
+flash geometry via a debugfs file. This is not available in mainline linux
+kernels so the fallback method calculates the geometry based on known info
+from the mtd partition. A bug exists in this funcion where it fails to
+assume that block0 ECC is the same as the other blocks by default.
+--- a/src/mtd.c
++++ b/src/mtd.c
+@@ -610,7 +610,7 @@ static int cal_nfc_geometry(struct mtd_d
+       /* The two are fixed, please change them when the driver changes. */
+       geo->metadata_size_in_bytes = 10;
+       geo->gf_len = 13;
+-      geo->ecc_chunkn_size_in_bytes = 512;
++      geo->ecc_chunkn_size_in_bytes = geo->ecc_chunk0_size_in_bytes = 512;
+       if (mtd->oobsize > geo->ecc_chunkn_size_in_bytes) {
+               geo->gf_len = 14;
+@@ -700,8 +700,9 @@ int parse_nfc_geometry(struct mtd_data *
+       unsigned int       value;
+       if (!plat_config_data->m_u32UseNfcGeo) {
++              /* fsl kernel patch provides bch_geometry via debugfs */
+               if (!(node = fopen(dbg_geometry_node_path, "r"))) {
+-                      fprintf(stderr, "Cannot open BCH geometry node: \"%s\"",
++                      fprintf(stderr, "Cannot open BCH geometry node: \"%s\"\n",
+                               dbg_geometry_node_path);
+                       return cal_nfc_geometry(md);
+               }