openwrtv4/package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch
Tim Harvey a4b86b292a boot: kobs-ng: update kobs-ng for newer kernels
This allows kobs-ng to flash the SPL successfully on the 4.4 kernel used by
the Gateworks IMX boards supporting NAND. The previous version of kobs-ng
worked with the 3.14 kernel but will brick a board making its SPL unbootable
for the 4.4 kernel.

See http://trac.gateworks.com/wiki/ventana/bootloader#nandspl for instructions
on updating the SPL from Linux.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
2016-09-04 13:36:09 +02:00

27 lines
1.2 KiB
Diff

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);
}