aboutsummaryrefslogtreecommitdiffstats
path: root/package/system/mtd
Commit message (Collapse)AuthorAgeFilesLines
* mtd: fix imagetag compilationÁlvaro Fernández Rojas2021-03-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Commit b5b0796a1322 added an uint32_t to mtd.h without including stdint, which results in a compilation error for those files not including stdint.h. In file included from imagetag.c:36: mtd.h:15:8: error: unknown type name 'uint32_t' extern uint32_t opt_trxmagic; ^~~~~~~~ imagetag.c: In function 'trx_fixup': imagetag.c:180:10: warning: unused variable 'res' [-Wunused-variable] ssize_t res; ^~~ imagetag.c:177:14: warning: unused variable 'scan' [-Wunused-variable] void *ptr, *scan; ^~~~ imagetag.c: In function 'trx_check': imagetag.c:246:27: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] struct bcm_tag *tag = (const struct bcm_tag *) buf; ^ make[3]: *** [<builtin>: imagetag.o] Error 1 Fixes: b5b0796a1322 ("mtd: add option for TRX magic to fixtrx") Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* mediatek: add support for Buffalo WSR-2533DHP2INAGAKI Hiroshi2021-03-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for the Buffalo WSR-2533DHP2. The device uses the Broadcom TRX image format with a special magic. To be able to boot the images or load them they have to be wrapped with different headers depending how it is loaded. There are multiple ways to install OpenWrt on this device. Boot ramdisk from U-Boot ---------------------------- This will load the image and not write it into the flash. 1. Stop boot menu with "space" key 2. Select "System Load Linux to SDRAM via TFTP." 3. Load this image: openwrt-mediatek-mt7622-buffalo_wsr-2533dhp2-initramfs-kernel.bin 4. The system boots the image Write to flash from U-Boot ----------------------------- This will load the image over tftp and directly write it into the flash. 1. Stop boot menu with "space" key 2. Select "System Load Linux Kernel then write to Flash via TFTP." 3. Load this image: openwrt-mediatek-mt7622-buffalo_wsr-2533dhp2-squashfs-factory-uboot.bin 4. The system writes this image into the flash and boots into it. Write to flash from Web UI ----------------------------- This will load the image over over the Web UI and write it into the flash 1. Open the Web UI 2. Go to "管理" -> "ファームウェア更新" 3. Select "ローカルファイル指定" and click "更新実行" 4. Load this image: openwrt-mediatek-mt7622-buffalo_wsr-2533dhp2-squashfs-factory.bin 5. The system writes this image into the flash and boots into it. Specifications ------------------- * SoC: MT7622 (4x4 2.4 GHz Wifi) * Wifi: MT7615 (4x4 5 GHz Wifi) * Flash: Winbond W29N01HZ 128MB SLC NAND * RAM 256MB * Ethernet: Realtek RTL8367S (5 x 1GBit/s, SoC via 2.5GBit/s) Co-Developed-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* mtd: add option for TRX magic to fixtrxINAGAKI Hiroshi2021-03-153-6/+17
| | | | | | | | | | | | Buffalo uses the TRX header with a different magic and even changes this magic with different devices. This change allows to specify the header to use as a command line argument. This is needed for the Buffalo WSR-2533DHP2 based on mt7622. Co-Developed-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* mtd: fixtrx: support CFE imagetag on bmips targetÁlvaro Fernández Rojas2021-02-221-0/+1
| | | | Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* ar71xx: drop targetAdrian Schmutzler2020-08-303-4/+1
| | | | | | | | | | This target has been mostly replaced by ath79 and won't be included in the upcoming release anymore. Finally put it to rest. This also removes all references in packages, tools, etc. as well as the uboot-ar71xx and vsc73x5-ucode packages. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* mtd: enable wrgg support for ath79Stijn Tintel2020-06-111-1/+1
| | | | | | This is required for the D-Link DAP-2695-A1. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* mtd: add linksys_bootcount for ramipsDavide Fioravanti2020-05-171-1/+1
| | | | | | | | | | | | | Reset bc is needed for Linksys EA7500 v2's dual boot. Size impact (tested with Linksys EA7500 v2 @ mt7621): mtd_25_mipsel_24kc.ipk: 13174 -> 13628 (454 bytes) initramfs: 3660350 -> 3660688 (338 bytes) Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com> [add size impact information] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* brcm63xx: rename target to bcm63xxAdrian Schmutzler2020-02-141-1/+1
| | | | | | | | | | This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* brcm47xx: rename target to bcm47xxAdrian Schmutzler2020-02-142-2/+2
| | | | | | | | | | This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* mtd: Activate LTO compile optionHauke Mehrtens2019-11-081-1/+2
| | | | | | | | | | | | This decreases the size of the mtd application by 25% on MIPS BE. old: 20,597 /sbin/mtd new: 16,421 /sbin/mtd Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* mtd: cleanup unused code and variables in fis.cPetr Štetiar2019-07-171-20/+0
| | | | | | | | | | | | | | | While compile checking mtd changes in PR#1359 I've noticed following compiler warnings and cleaned them up: fis.c: In function 'fis_remap': fis.c:143:25: warning: variable 'redboot' set but not used [-Wunused-but-set-variable] struct fis_image_desc *redboot = NULL; ^~~~~~~ fis.c:142:25: warning: variable 'fisdir' set but not used [-Wunused-but-set-variable] struct fis_image_desc *fisdir = NULL; ^~~~~~ Signed-off-by: Petr Štetiar <ynezz@true.cz>
* mtd: add CRC signature to RedBoot partition mapDaniel Gimpelevich2019-07-173-3/+26
| | | | | | | | | | The code for calculating the CRC32 signatures for RedBoot FIS partitions was already included, but for unknown reasons, it was never invoked. Some bootloaders enforce checking these for loaded kernels, so they should be written. This patch does so. Tested-by: Brian Gonyer <bgonyer@gmail.com> Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
* package: mtd: add fixseama command for ath79Chuanhong Guo2019-07-162-1/+2
| | | | | | This is needed by Qihoo C301. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* gemini: Fix up firmware checksum on DIR-685Linus Walleij2019-05-181-0/+1
| | | | | | | | | | | | | | | | | | Using the same method as the D-Link DAP-2695 A1 we use the "mtd" tool to augment the firmware checkum in flash on first boot of a new firmware on the D-Link DIR-685. We need to augment the Makefile for "mtd" to build in the special WRGG fixup support for Gemini as well. This works around the problem of the machine not booting after factory install unless the sysupgrade is applied immediately. Based on commit e3875350f3e4185020b64e0588bba521cd1d6e64 "ar71xx: add support for D-Link DAP-2695 rev. A1" Cc: Stijn Tintel <stijn@linux-ipv6.be> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* mtd: Make fixwrgg command work on DIR-685Linus Walleij2019-05-181-14/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The D-Link DIR-685 has the same problem as the D-Link DAP-2695: when flashing the factory image, the checksum includes the whole flashed image, even the rootfs_data part with the end of filesystem mark. Also the whole flashed image is stored in the flash, so on the first boot, the whole rootfs image is loaded into memory with the kernel. This is fixed using the fixwrgg command to mtd, but for this to work we need to make fixwrgg work with the Little-Endian ARM DIR-685. The code tries to be endian agnostic but this fails because the WRGG image loader doesn't. On ARM, the file size is stored in little endian format, and on big-endian systems it is stored in big endian format, so we can just drop all the friendly htonl() that will make the shdr->size big endian: this will actually break the little endian systems, and on the big endian systems the native endianness will still be correct. The magic number is always stored in little endian format however, so make sure this is always read in LE32 format. I chose to create a straight-forward le32_to_cpu() static inline that IMO is simple and easy to read. Cc: Stijn Tintel <stijn@linux-ipv6.be> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* mtd: base-files: Unify dual-firmware devices (Linksys)Jeff Kletsky2019-05-183-134/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consistently handle boot-count reset and upgrade across ipq40xx, ipq806x, kirkwood, mvebu Dual-firmware devices often utilize a specific MTD partition to record the number of times the boot loader has initiated boot. Most of these devices are NAND, typically with a 2k erase size. When this code was ported to the ipq40xx platform, the device in hand used NOR for this partition, with a 16-byte "record" size. As the implementation of `mtd resetbc` is by-platform, the hard-coded nature of this change prevented proper operation of a NAND-based device. * Unified the "NOR" variant with the rest of the Linksys variants * Added logging to indicate success and failure * Provided a meaningful return value for scripting * "Protected" the use of `mtd resetbc` in start-up scripts so that failure does not end the boot sequence * Moved Linksys-specific actions into common `/etc/init.d/bootcount` For upgrade, these devices need to determine which partition to flash, as well as set certain U-Boot envirnment variables to change the next boot to the newly flashed version. * Moved upgrade-related environment changes out of bootcount * Combined multiple flashes of environment into single one * Current-partition detection now handles absence of `boot_part` Runtime-tested: Linksys EA8300 Signed-off-by: Jeff Kletsky <git-commits@allycomm.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [checkpatch.pl fixes, traded split strings for 80+ chars per line]
* mtd: add logic for TP-Link ramips recovery magicDavid Bauer2019-01-265-3/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | This adds an option to set the recovery flag of newer TP-Link MediaTek boards and remove it after a successful write. To make use of this feature, add the '-t' option to mtd-write. The '-t' option takes the mtd partition containing the recovery flag (usually 'romfile') as an argument. Make sure this partition is not flagged as read-only! Example: > mtd -t romfile write owrt.bin firmware This command writes the recovery-flag before it begins writing the image to the firmware partition. After the image-write has been successful, the recovery flag is removed. This way, the TP-Link web-recovery is automatically enabled on an unsucessful flash (e.g. power loss). This option is only available if the mtd package is compiled for the ramips target. Signed-off-by: David Bauer <mail@david-bauer.net>
* mtd: add linksys_bootcount to the ipq40xx targetOever González2019-01-262-0/+116
| | | | | | | | | | | | This commit adds the object 'linksys_bootcount_fix.o' to the ipq40xx target. This is needed for the Linksys EA6350v3 device. Without this patch, the device will switch-back between the current and the last flashed firmware every 3 (three) reboots. With this patch, the device works as expected. Signed-off-by: Ryan Pannell <ryan@osukl.com> Signed-off-by: Oever González <notengobattery@gmail.com>
* mtd: improve check for TRX header being already fixedRafał Miłecki2018-07-152-8/+9
| | | | | | | | | | | First of all lengths should be compared after checking all blocks for being good/bad. It's because requested length may differ from a final one if there were some bad blocks. Secondly it makes sense to also compare crc32 since we already have a new one calculated. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* mtd: support bad blocks within the mtd_fixtrx()Rafał Miłecki2018-07-152-7/+29
| | | | | | | | | | | | | | | | Reading MTD data with (p)read doesn't return any error when accessing bad block. As the result, with current code, CRC32 covers "data" stored in bad blocks. That behavior doesn't match CFE's one (bootloader simply skips bad blocks) and may result in: 1) Invalid CRC32 2) CFE refusing to boot firmware with a following error: Boot program checksum is invalid Fix that problem by checking every block before reading its content. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* mtd: mark as nonshared to fix FS#484Mirko Parthey2018-06-011-0/+2
| | | | | | | | | | The mtd tool is built with different configurations depending on the target. For example, brcm47xx adds the fixtrx subcommand, without which an image fails when booting the second time. Mark the mtd package as nonshared to really fix FS#484. Signed-off-by: Mirko Parthey <mirko.parthey@web.de>
* mtd: fix erase handling with partition offset on writeFelix Fietkau2018-04-201-1/+1
| | | | | | | | When a partition offset is given, it is used in an lseek call, which affects write, but not erase. Add it to the offset for erase calls as well Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ramips: add support for D-Link DAP-1522 A1George Hopkins2018-02-131-1/+1
| | | | | | | | | | | | | | | | | | D-Link DAP-1522 is a wireless bridge/access point with 4 LAN ports and a dual-band wireless chipset. Specifications: - Ralink RT2880 - 32 MB of RAM - 4 MB of Flash - 4x 10/100/1000 Mbps Ethernet (RTL8366SR) - 802.11abgn (RT2850) Flash Instructions: 1. Download lede-ramips-rt288x-dap-1522-a1-squashfs-factory.bin 2. Open the web interface and upload the image Signed-off-by: George Hopkins <george-hopkins@null.net>
* mtd: add fixwrg commandGeorge Hopkins2018-02-134-3/+233
| | | | | | Add a command to fix WRG headers, based on wrgg.c. Signed-off-by: George Hopkins <george-hopkins@null.net>
* mtd: add fixwrgg commandStijn Tintel2016-10-275-3/+239
| | | | | | | Based on fixseama. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: John Crispin <john@phrozen.org>
* mtd: fix endianness detection on muslStijn Tintel2016-10-272-0/+2
| | | | | Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: John Crispin <john@phrozen.org>
* package/system/mtd: fix usage messagePaul Wassi2016-10-261-1/+1
| | | | | | Minor fix in the usage message on the explanation of the -p option. Signed-off-by: Paul Wassi <p.wassi@gmx.at>
* system/mtd: drop Build/Prepare rule in favor of default oneAlexandru Ardelean2016-10-151-5/+0
| | | | Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
* mtd: fix up error messagesJohn Crispin2016-10-152-2/+2
| | | | | | remove the "Error fixing up TRX header" message which is misleading. Signed-off-by: John Crispin <john@phrozen.org>
* mtd: fix building with glibcJosua Mayer2016-08-181-0/+1
| | | | | | | | src/linksys_bootcount.c misses to include stdint.h. Apparently musl doesn't mind and includes this header by default, but glibc does not and causes the build to fail. Signed-off-by: Josua Mayer <josua.mayer97@gmail.com>
* mtd: support -c (datasize) option for fixseama commandRafał Miłecki2016-06-203-7/+9
| | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: add linksys_bootcount for ipq806xAdrian Panella2016-06-131-0/+1
| | | | | | Reset bc is needed for Linksys EA8500's dual boot. Signed-off-by: Adrian Panella <ianchi74@outlook.com>
* mtd: fix typo in error message for 'c' optionRafał Miłecki2016-06-111-1/+1
| | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* treewide: replace nbd@openwrt.org with nbd@nbd.nameFelix Fietkau2016-06-076-6/+6
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* mtd: imagetag: fix compilation with changed mtd_fixtrx callRafał Miłecki2016-05-111-1/+4
| | | | | | Function mtd_fixtrx was changed during trx improvements. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: add -c option for specifying amount of data to be used for checksumRafał Miłecki2016-05-093-12/+31
| | | | | | | | | | | | | | | So far fixtrx was calculating checksum over amount of data matching partition erase size. It was mostly a workaround of checksum problem after changing anything in initial TRX content (e.g. formatting JFFS2). Its main purpose was to make bootloader accept modified TRX. This didn't provide much protection of flash data against corruption. This new option lets caller request calculating checksum over a bigger amount of data. It may be used e.g. to include whole kernel data for checksum and hopefully make bootloader go info failsafe mode if something goes wrong. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: trx: use separated buffer for TRX headerRafał Miłecki2016-05-091-5/+18
| | | | | | | | We plan to adjust usage of the main buffer to allow reading custom amount of data for CRC32. This means we need another buffer that will be always block aligned. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: seama: exit with error if Seama header wasn't foundrmilecki2016-05-091-1/+1
| | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: seama: fix image data handlingrmilecki2016-05-091-28/+18
| | | | | | | | | | | | 1) Put sanity checks in one place 2) Respect provided offset 3) Read only as much data as needed for MD5 calculation Thanks to the last change this is a great speedup and memory saver. On devices with NAND flash we were allocating & reading about 128 MiB while something about 8 MiB is enough. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: seama: move buf allocation to the MD5 functionrmilecki2016-05-091-16/+22
| | | | | | This buf is only used in this function now, so lets move it there. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: seama: update MD5 using header in the first block bufferrmilecki2016-05-091-4/+3
| | | | | | | This will allow separating first block buffer from a buffer used for MD5 calculation. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: seama: add md5 to header structrmilecki2016-05-092-12/+11
| | | | | | | This allows us to drop some extra offset calculations and simplifies code a bit. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: check for Seama magic early when fixing MD5rmilecki2016-05-091-7/+21
| | | | | | | This avoid long (and unneeded) process of reading all data in case of running on MTD not containig Seama entity. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: add missing breaks in a switchrmilecki2016-05-091-0/+2
| | | | | | | On platforms supporting both: TRX and Seama calling "fixtrx" was resulting in trying to fix Seama as well. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: use tabs for indentsrmilecki2016-05-091-7/+7
| | | | | | This makes code style consistent across the whole file. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
* mtd: fix reading of image magic bytes in smaller chunksJohn Crispin2016-03-031-5/+12
| | | | | | | | | | | | | | | 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
* mtd: fix Seama format after replacing EOF with sysupgrade dataRafał Miłecki2016-02-101-2/+13
| | | | | | | | | | 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
* mtd: detect image format when writingRafał Miłecki2016-02-063-13/+60
| | | | | | | | | | | | | | | 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
* mtd: allow writing Seama files to "firmware" on Broadcom targetsRafał Miłecki2016-01-281-0/+6
| | | | | | Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 48534
* mtd: enable "fixseama" on bcm53xxRafał Miłecki2016-01-281-1/+1
| | | | | | | | There are D-Link bcm53xx devices using Seama format. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 48521