Commit graph

25 commits

Author SHA1 Message Date
John Crispin
4a4c324cd2 mtd: fix reading of image magic bytes in smaller chunks
The image_check currently fails when it cannot read all magic bytes in a
single chunk. But this can happen when the data are read from a pipe. This
currently breaks the openmesh.sh upgrade script with musl because it uses
dd with a blocksize of 1 to copy the image file to the mtd process.

The read can simply be repeated until enough bytes are read for the magic
byte check. It only stops when either an error was returned or 0 bytes were
read.

Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>

SVN-Revision: 48891
2016-03-03 20:24:38 +00:00
Rafał Miłecki
358ae42152 mtd: fix Seama format after replacing EOF with sysupgrade data
Seama header has MD5 similarly to TRX and its CRC32. We need to update
it after replacing anything in Seama entity content to make bootloader
accept it.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48688
2016-02-10 11:35:50 +00:00
Rafał Miłecki
b5c41ad28c mtd: detect image format when writing
Recently TRX checking code was changed to detect Seama format and don't
abort whole writing operation because of it. This isn't a good long-term
solution. It's a poor idea to teach every format handler recognizing all
possible formats. Instead it should be handled in a generic code which
should run check depending on the detected format.

This will also allow further improvements like fixing formats other than
TRX after replacing JFFS2.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48639
2016-02-06 16:29:12 +00:00
Rafał Miłecki
b4468a0d61 mtd: allow writing Seama files to "firmware" on Broadcom targets
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48534
2016-01-28 22:38:30 +00:00
Rafał Miłecki
60ef46b903 mtd: enable "fixseama" on bcm53xx
There are D-Link bcm53xx devices using Seama format.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48521
2016-01-28 08:51:52 +00:00
Luka Perkov
ea8ac0999c kirkwood: support Linksys boot counter on EA[34]500
This is done with existing code from the WRT1900AC port.
It makes sure the "auto_recovery" bootloader option is set,
and resets the s_env boot counter after a successful boot.

This gives users without a serial console connection some
measure of safety.

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 47433
2015-11-10 00:16:37 +00:00
Imre Kaloz
20fac016e4 mvebu: add support for the Linksys boot counter
The u-boot boot counter was never reset after a successful boot,
which sometimes could make some variables become out of sync.
This patch adds support for the boot counter and enables
auto_recovery unconditionally.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
Signed-off-by: Rob Mosher <nyt-openwrt@countercultured.net>
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>

SVN-Revision: 46690
2015-08-19 08:31:23 +00:00
Felix Fietkau
9e233fb241 mtd: add missing <endian.h> include
trx.c in mtd would not include endian.h, so on systems that do not have
this header implicitly included from the other headers (like musl), both
__BYTE_ORDER and __BIG_ENDIAN would be undefined and thus 0, leading to
it always presuming a big-endian system. this would lead to issues when
running mtd fixtrx on little-endian systems, as it would never recognize
the TRX magic as result of the broken STORE32_LE() macro.

Signed-off-by: Shiz <hi@shiz.me>
Tested-by: Shiz <hi@shiz.me>

SVN-Revision: 45896
2015-06-05 09:00:02 +00:00
John Crispin
b48b7a7689 mtd: fix md5sum error checking
In mtd_verify(), the return value of md5sum() has been
interpreted as error if nonzero, while the function
returns number of processed bytes, which caused
mtd_verify() to always fail.

This patch fixes error checking to interpret only
negative values as errors.

Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>

SVN-Revision: 44605
2015-03-05 20:25:02 +00:00
Jonas Gorski
92eb27f56d package: mtd: move bcm963xx_tag definition into source code
Remove the need for the header file to be exported - we don't need most
of it anyway; all we care about are the offset of the rootfs length and
header crc fields.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 44557
2015-02-27 17:38:25 +00:00
John Crispin
c3bb3906ee mtd: make the dump commnd honour the -o option
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43512
2014-12-03 20:22:32 +00:00
John Crispin
ff02ea36e0 mtd: make the mtd dump call run properly on nand flash
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43503
2014-12-02 19:28:23 +00:00
John Crispin
da988d582f mtd: add ability to dump a mtd device
this can be used on nand flashes and will skip bad blocks and run ecc on the
read data before dumping it.

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43500
2014-12-02 18:27:49 +00:00
John Crispin
9a70c8ef9b mtd: fix 2 compiler warnings
mtd.c:544:7: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘ssize_t’ [-Wformat]
mtd.c:602:1: warning: label ‘done’ defined but not used [-Wunused-label]

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43383
2014-11-26 08:59:17 +00:00
Hauke Mehrtens
c977fad4fd bcm53xx: add fixtrx
Without running fixtrx the image will not boot at the second time,
because the CRC the boot loader check is invalid at that time.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 42639
2014-09-21 21:56:31 +00:00
Felix Fietkau
833c5aab7e mtd: disable trx_check() for ar71xx, fixes a regression introduced in r42403
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42405
2014-09-02 21:06:35 +00:00
Felix Fietkau
766dff7445 mtd: Fix trx check after partition rename ("linux" to "firmware")
On brcm47xx (Huawei E970), I noticed that sysupgrade now tries to flash trx images which don't fit into the flash, resulting in non-booting system.

I found that mtd does trx size checking only when flashing to a partition called "linux". This patch changes this to be "firmware".

This matches the following patch which changed partition name in bcm47xxpart.c driver to "firmware":

commit 86b4d5ef68ca77ff6724ebb9bddd6b93239c87fc
Author: hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>
 Date:   Sun Dec 1 16:32:32 2013 +0000

    brcm47xx: use "firmware" partition name
    ...
    Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

    SVN-Revision: 38973

Signed-off-by: Mathias Adam <m.adam--openwrt@adamis.de>

SVN-Revision: 42403
2014-09-02 17:13:42 +00:00
Felix Fietkau
962575f201 mtd: fix compile error with musl
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 40819
2014-05-21 14:09:53 +00:00
John Crispin
00d7e84af6 mtd: improve mtd detection
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 40301
2014-03-30 09:14:58 +00:00
Felix Fietkau
608f4fe3b0 mtd: add support for bad blocks in NAND flash
NAND flash is very likely to contain bad blocks.

Currently, mtd and therefore sysupgrade fails when it encounters a single bad block, potentially leaving an unbootable system.

This patch allows the mtd utility to skip bad blocks in NAND flash and complete sysupgrade successfully.

Patch by: Matthew Redfearn <matt.redfearn@nxp.com>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 40021
2014-03-26 10:50:09 +00:00
John Crispin
ee41b41a30 mtd: add a "mtd verify" call
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 38871
2013-11-19 20:56:23 +00:00
Felix Fietkau
ff17114ba1 ar71xx: Unifi AP Pro sysupgrade patch
The current implementation of mtd will not append the backup
file created by sysupgrade to the correct partition, as mtd will append
the data to first jffs2 partition it finds. As the kernel is also
stored on a jffs2 partition (which resides before the overlay
partition), the data will be appended to this partition.

To fix this problem, a new option

-s <number>             skip the first n bytes when appending data to the jffs2 partiton, defaults to "0"

is added to mtd.

Signed-off-by: Peter Wagner <tripolar@gmx.at>

SVN-Revision: 38807
2013-11-14 19:38:54 +00:00
Gabor Juhos
8b50ecc6ff package/mtd: enable seama fixup code for ar71xx
It will be used for the WD My Net N600.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38073
2013-09-19 22:36:40 +00:00
Felix Fietkau
b95bdc8ab5 kernel/base-files: clean up old code related to refreshing mtd partitions, it is no longer used anywhere
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 37282
2013-07-14 12:56:58 +00:00
John Crispin
4ebf19b48f packages: clean up the package folder
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37007
2013-06-21 16:54:37 +00:00