mtd: partitions: add support for partition parsers
authorRafał Miłecki <rafal@milecki.pl>
Wed, 21 Jun 2017 06:26:46 +0000 (08:26 +0200)
committerBrian Norris <computersforpeace@gmail.com>
Thu, 22 Jun 2017 20:13:09 +0000 (13:13 -0700)
commit1a0915be192606fee64830b9c5d70b7ed59426b6
treeb8c5dcc0c867c8be40515b862b248bd00b0a9e6a
parent97519dc52b44af054d7654776e78eaa211cf1842
mtd: partitions: add support for partition parsers

Some devices have partitions that are kind of containers with extra
subpartitions / volumes instead of e.g. a simple filesystem data. To
support such cases we need to first create normal flash device
partitions and then take care of these special ones.

It's very common case for home routers. Depending on the vendor there
are formats like TRX, Seama, TP-Link, WRGG & more. All of them are used
to embed few partitions into a single one / single firmware file.

Ideally all vendors would use some well documented / standardized format
like UBI (and some probably start doing so), but there are still
countless devices on the market using these poor vendor specific
formats.

This patch extends MTD subsystem by allowing to specify list of parsers
that should be tried for a given partition. Supporting such poor formats
is highly unlikely to be the top priority so these changes try to
minimize maintenance cost to the minimum. It reuses existing code for
these new parsers and just adds a one property and one new function.

This implementation requires setting partition parsers in a flash
parser. A proper change of bcm47xxpart will follow and in the future we
will hopefully also find a solution for doing it with ofpart
("fixed-partitions").

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/mtdpart.c
include/linux/mtd/partitions.h