]> git.sur5r.net Git - u-boot/commit
spl: Lightweight UBI and UBI fastmap support
authorThomas Gleixner <tglx@linutronix.de>
Tue, 12 Jul 2016 18:28:12 +0000 (20:28 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 22 Jul 2016 13:53:00 +0000 (09:53 -0400)
commit6f4e7d3c75a81decc20de0218729e9770448ffc0
tree2f0a4f9a9e0fbe9016390e2abfef930f6a9d6f7e
parent735717d18a012a6f34c74dd98cec8f46bac5c51c
spl: Lightweight UBI and UBI fastmap support

Booting a payload out of NAND FLASH from the SPL is a crux today, as
it requires hard partioned FLASH. Not a brilliant idea with the
reliability of todays NAND FLASH chips.

The upstream UBI + UBI fastmap implementation which is about to
brought to u-boot is too heavy weight for SPLs as it provides way more
functionality than needed for a SPL and does not even fit into the
restricted SPL areas which are loaded from the SoC boot ROM.

So this provides a fast and lightweight implementation of UBI scanning
and UBI fastmap attach. The scan and logical to physical block mapping
code is developed from scratch, while the fastmap implementation is
lifted from the linux kernel source and stripped down to fit the SPL
needs.

The text foot print on the board which I used for development is:

6854 0 0 6854 1abd
drivers/mtd/ubispl/built-in.o

Attaching a NAND chip with 4096 physical eraseblocks (4 blocks are
reserved for the SPL) takes:

In full scan mode:      1172ms
In fastmap mode:          95ms

The code requires quite some storage. The largest and unknown part of
it is the number of fastmap blocks to read. Therefor the data
structure is not put into the BSS. The code requires a pointer to free
memory handed in which is initialized by the UBI attach code itself.

See doc/README.ubispl for further information on how to use it.

This shares the ubi-media.h and crc32 implementation of drivers/mtd/ubi
There is no way to share the fastmap code, as UBISPL only utilizes the
slightly modified functions ubi_attach_fastmap() and ubi_scan_fastmap()
from the original kernel ubi fastmap implementation.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Acked-by: Heiko Schocher <hs@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
README
doc/README.ubispl [new file with mode: 0644]
drivers/Makefile
drivers/mtd/ubispl/Makefile [new file with mode: 0644]
drivers/mtd/ubispl/ubi-wrapper.h [new file with mode: 0644]
drivers/mtd/ubispl/ubispl.c [new file with mode: 0644]
drivers/mtd/ubispl/ubispl.h [new file with mode: 0644]
include/ubispl.h [new file with mode: 0644]