openwrtv4/package/boot/kobs-ng/patches/002-add-init-size-param.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

45 lines
1.6 KiB
Diff

Add --chip_0_size param to override the size of the mtd partition which is
required if the SPL does not occupy the entire partition. For Gateworks
Ventana boards the 'uboot' partition contains both the SPL and uboot.
--- a/src/main.c
+++ b/src/main.c
@@ -94,6 +94,7 @@ void usage(void)
" [KOBS] boot structures config options\n"
" --chip_0_device_path=<path> .......... Device of boot (default /dev/mtd0)\n"
" --chip_1_device_path=<path> .......... The second chip in case of multichip NAND\n"
+ " --chip_0_size=<size> ................. Override size of chip_0 device\n"
" --search_exponent=<value> ............ NCB field (default 2)\n"
" --data_setup_time=<value> ............ NCB field (default 80)\n"
" --data_hold_time=<value> ............. NCB field (default 60)\n"
--- a/src/mtd.c
+++ b/src/mtd.c
@@ -876,6 +876,11 @@ struct mtd_data *mtd_open(const struct m
goto out;
}
+ /* override MTD size */
+ if (md->cfg.chip_0_size) {
+ miu->size = md->cfg.chip_0_size;
+ }
+
/* verify it's a nand */
if (miu->type != MTD_NANDFLASH
&& miu->type != MTD_MLCNANDFLASH) {
@@ -3385,7 +3390,7 @@ static const struct {
} mtd_int_args[] = {
ARG_IGNORE(chip_count),
ARG_IGNORE(chip_0_offset),
- ARG_IGNORE(chip_0_size),
+ ARG(chip_0_size),
ARG_IGNORE(chip_1_offset),
ARG_IGNORE(chip_1_size),
ARG(search_exponent),
@@ -3578,7 +3583,7 @@ void mtd_cfg_dump(struct mtd_config *cfg
// Pd(chip_count);
Ps(chip_0_device_path);
// Pd(chip_0_offset);
-// Pd(chip_0_size);
+ Pd(chip_0_size);
Ps(chip_1_device_path);
// Pd(chip_1_offset);
// Pd(chip_1_size);