mtd: afs: add v2 partition parsing
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 6 May 2019 19:55:51 +0000 (21:55 +0200)
committerRichard Weinberger <richard@nod.at>
Mon, 6 May 2019 19:57:03 +0000 (21:57 +0200)
commitb7cf5e2830bbb128699d7635ce8404b7f605bc95
tree9bd10b1e0c49d59acbcce27b42e3911fda3102ca
parent32e68bea9338101253b72f594796c76acd68da11
mtd: afs: add v2 partition parsing

The AFS v2 partition type appear in later ARM reference designs
such as RealView, Versatile Express and the 64bit Juno Development
Platform.

The image informations is padded with a 32bit word (4 bytes) on
the 32bit platforms and a 64bit word (8 bytes) on the 64bit
platforms. The boot monitor source code gives at hand that this
is because the first entry in the struct mapped over the image
information is a "next" pointer for a linked list, filled in
by firmware after reading in the info block, and always zero
in the flash. We adjust padding by checking what padding gives
the right checksum.

This was tested on:
- Integrator/AP (v1 partitions)
- RealView PB11MPCore (v2 32bit partitions)
- Juno Development System (v2 64bit partitions)

All systems display the images in flash very nicely as separate
partitions, e.g on Juno:

4 afs partitions found on MTD device 8000000.flash
Creating 4 MTD partitions on "8000000.flash":
0x000000040000-0x0000000c0000 : "fip"
0x000000ec0000-0x0000018c0000 : "Image"
0x000000f00000-0x000000f40000 : "juno"
0x000003ec0000-0x000003f00000 : "bl1"

Cc: Ryan Harkin <ryan.harkin@linaro.org>
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/parsers/afs.c