aboutsummaryrefslogtreecommitdiff
path: root/target/linux/apm821xx/image/nand.mk
Commit message (Collapse)AuthorAge
* apm821xx: prepare WNDR4700 for 6.6 - add preliminary u-boot-env accessChristian Lamparter2024-04-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the default BUILD_BOT configuration on a linux 6.6 kernel, the WNDR4700's kernel no longer fits into the alloted ~3.5MiB, even with LZMA compression. Bigger kernels are possible, but there's a problem with Netgear's "bootcmd": > if loadn_dniimg 0 0x180000 0x4e0000 && chk_dniimg 0x4e0000; then nand read 0x800000 0x180000 0x20000;bootm 0x500000 - 0x800040;else fw_recovery; fi" This loads the dni-image starting offset 0x180000 from the NAND flash (which is the DTB partition) to 0x4e0000 in the RAM. It then checks whenever the provided image is "valid". If it is then it reads the DTB again to 0x800000 in the RAM and starts the extraction and boot process. (If the image wasn't valid then it starts the automated firmware recovery). The issues here are that first: the kernel image gets "squeezed" between 0x500040 and 0x7fffff... And second, the decompressor only has area 0x0 - 0x500000 for decompression. Hence the image now requires to update the bootcmd by providing new values (which have been successfully tested with the original Netgear WNDR4700 v1.0.0.56 firmware) for the RAM locations and make full use of the fact that loadn_dniimg loads the DTB as well. This needs to be done only once. Just connect a serial adapter to interface with uboot and overwrite (and save) the new bootcmd. WARNING: The serial port needs a TTL/RS-232 3.3v level converter! Steps: 0. Power-off the WNDR4700 1. Connect the serial interface (you need to open the WNDR4700) 2. Power-up the WNDR4700 3. Monitor the boot-sequence and hit "Enter"-key when it says: "Hit any key to stop autoboot" (Be quick, you have a ~2 second window) 4. in the Prompt enter the following commands (copy & paste) setenv bootcmd "if loadn_dniimg 0 0x180000 0xce0000 && chk_dniimg 0xce0000; then bootm 0xd00000 - 0xce0040;else fw_recovery; fi" saveenv run bootcmd Note: This new bootcmd will also unbrick devices that were bricked by the bigger 4.19-6.1 kernels. Note2: This method was tested with a WNDR4700. A big kernel with most debug features enabled on v6.6.22 measured 4.30 MiB when compressed with lzma. The uncompressed kernel is 12.34 MiB. This is over the 3 MiB, the device reserves for the kernel... But it booted! For bigger kernels, the device needs repartitioning of the the ubi partition due to the kernel+dtb not fitting into the partition. Note3: For initramfs development. I would advice to load the initramfs images to 0x800000 (or higher). i.e.: tftp 800000 wndr4700.bin Note4: the fw_recovery uboot command to transfer the factory image to the flash still works. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: WNDR4700: fix broken sysupgrade, factory imagesChristian Lamparter2023-10-20
| | | | | | | | | | | | | | | | | | prepend-dtb got extended to handle the Meraki devices too, the problem here was that the Netgear WNDR4700 expects an u-boot header in front of the DTB, whereas Meraki devices don't. Since the header was dropped, the WNDR4700's uboot started to complain: Bad Magic Number,it is forbidden to be written to flash!! when flashing the factory.img since it expects an u-boot header there. Fixes: 5dece2d9355a ("apm821xx: switch over from DTB_SIZE to DEVICE_DTC_FLAGS") Reported-by: @kisgezenguz Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: switch over from DTB_SIZE to DEVICE_DTC_FLAGSChristian Lamparter2023-06-09
| | | | | | | DEVICE_DTC_FLAGS is more flexible and can be used in place of APM821xx own DTB_SIZE. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: make ata-dwc as a standalone moduleChristian Lamparter2023-05-30
| | | | | | | | In order to cut down on the Netgear WNDR4700, the ata driver can be outsourced. This helps other apm821xx devices too to save up on kernel size (~200 kb). Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: rename MerakiNAND -> meraki-headerChristian Lamparter2023-05-14
| | | | | | | specify that this functions adds a Cisco Meraki special-sauce header for their custom loader/uboot. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: Migrate to libdeflateChristian Lamparter2023-03-26
| | | | | | | | | | libdeflate's gzip compressor provides a better compression ratio and uboot's decompressor has no problem with the data streams. Tested on MX60, WNDR4700, WNDAP660 Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: add alternative names for supported devicesChristian Lamparter2022-02-19
| | | | | | | with the introduction of the DEVICE_ALTX_VENDOR, DEVICE_ALTX_MODEL multiple/sibiling devices can seemingly supported by one device entry. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: MX60(W): re-enable + allow bigger future kernelsChristian Lamparter2021-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The MX60's kernel is limited to 0x3EFC00 by the values in mkmerakifw.c. Since the initramfs method of loading the kernel seems to be working, this patch does away with the use of the mkmerakifw tool for the MX60(W). But this will go along with a change in u-boot as well. So before you upgrade, please attach the serial cable and perform: | setenv owrt510_boot run meraki_ubi owrt_bootargs\; run owrt_load1 owrt_bootkernel\; run owrt_load2 owrt_bootkernel | setenv bootcmd run owrt510_boot | saveenv Note: You won't be able to use older OpenWrt releases without switching the bootcmd back to owrt_boot! Note2: We are no longer compatible with older OpenWrt MX60 installs. the legacy BOARD_NAME and SUPPORTED_DEVICES can be dropped. This is because upgrades from older images are not possible without uboot env changes anymore. Also the bogus BLOCKSIZE value (which was set to 63k back then, in order to get the kernel properly aligned after the fdt + meraki header) can be set to the NANDs real value. The FDT size (which was needed for alignment) can now be slimmed down as well. Co-developed-by: Martin Kennedy <hurricos@gmail.com> Signed-off-by: Martin Kennedy <hurricos@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: disable MX60(W) due to kernel sizeChristian Lamparter2021-10-10
| | | | | | | | disables the MX60(W) from being built by the builders for now. But there's an effort to bring it back: <https://github.com/openwrt/openwrt/pull/4617> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: WNDAP620 + WNDAP660: reorganize partitions for 5.10Christian Lamparter2021-10-10
| | | | | | | | | | | | | | | | | | | | | | Due to 5.10 increased kernel size, the current 4MiB-ish kernel partition got too small. Luckily, netgear's uboot environment is setup to read 0x60000 bytes from the kernel partition location. ... While at it: also do some cleanups in the DTS in there. The original (re-)installation described in commit d82d84694e60 ("apm821xx: add support for the Netgear WNDAP620 and WNDAP660") seemed to be still working for now. What I noticed though is that the bigger initramfs images needed to use a different destination address (1000000) to prevent it overwriting itself during decompression. i.e: # tftp 1000000 openwrt-...-wndap620-initramfs-kernel.bin # bootm However, in case of the WNDAP620+660 the factory.img image can be written directly to the flash through uboot. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: Netgear WNDR4700 limit kernel lzma dictionaryWiktor Stasiak2020-12-22
| | | | | | | | | | | | | | | | | WNDR4700 uboot has an issue with decompressing kernel with default dictionary size (-d23 which is about 8MB). Limiting lzma dictionary lowers memory footprint and allows device to boot the kernel. The highest bootable dictonary size is 18, choosing 16 for an extra safety margin. Kernel size befor and after: -d23: 2663665 Bytes -d16: 2892757 Bytes Kernel size increased by 230kB (9%) Fixes: FS#3258 Signed-off-by: Wiktor Stasiak <wiktor.stasiak@gmail.com>
* apm821xx: disable WNDR4700 5.4 imageChristian Lamparter2020-07-31
| | | | | | | | | | | | | | | The compressed image that the buildbots are building is too large for the netgear uboot and it crashes and soft-bricks the device. | Uncompressing Kernel Image ... | LZMA: uncompress or overwrite error 1 - must RESET board to recover The whole target likely needs to be switched zImage which is a major hassle due to powerpc's legacy bootwrapper setup as compared to ARM. So for now, disable the device. Reported-by: Wiktor Stasiak (FS#3258) Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: derive DEVICE_DTS from device nameAdrian Schmutzler2020-07-21
| | | | | | | | | | | The DEVICE_DTS variable always matches the device definition name, just with "_" replaced by "-". Thus, create a DEVICE_DTS definition in Device/Default and drop all the individual statements. If necessary in the future, local DEVICE_DTS will still overwrite that default. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* apm821xx: move device definitions to subfilesAdrian Schmutzler2020-06-11
With several subtargets, the image/Makefile becomes crowded after a while. Many targets have moved their device definitions to $subtarget.mk files to have them more organized, let's do this here as well. While at it, also move subtarget-specific build recipes. Cc: Christian Lamparter <chunkeey@gmail.com> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Acked-by: Christian Lamparter <chunkeey@gmail.com>