aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/mt7622
Commit message (Collapse)AuthorAgeFilesLines
* mediatek: fix Unifi 6LR network configStijn Tintel2022-09-201-2/+1
| | | | | | | | | | | | | | | | | When the v1 and v2 variants of the U6LR were introduced, the board network config was not adapted to the new device names. Due to this, the wrong network config is applied during initial boot. The resulting config has lan, wan and a switch, while this device only has a single ethernet interface without a switch. Fix this by using a wildcard that matches all the variants. Fixes: 15a02471bb85 ("mediatek: new target mt7622-ubnt-unifi-6-lr-v1") Fixes: 5c8d3893a78f ("mediatek: new target ubnt_unifi-6-lr-v1-ubootmod") Fixes: 31d86a1a1192 ("mediatek: add Ubiquiti UniFi 6 LR v2 targets") Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 117f41ee95ec445dce5ab9332bc27a6311747c0d)
* mediatek: mt7622: use variable sector size for spi-norDaniel Golle2022-09-031-0/+1
| | | | | | | Make use of minor sector size (4k) on supported SPI-NOR flash chips. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 51f4c8417819bc0ba6bc1808328478503e179fc4)
* mediatek: build ubnt-ledbar as a moduleChuanhong Guo2022-07-041-1/+0
| | | | | | | | | The config for LEDS_UBNT_LEDBAR doesn't stay in mt7629 kconfig because of its I2C dependency. Build it as a module and let buildroot handle this config option instead. Signed-off-by: Chuanhong Guo <gch981213@gmail.com> (cherry picked from commit d9ea9c06e98b597174e0e94e0a13934637c0c03e)
* mediatek/mt7622: enable accelerated crypto driversEneas U de Queiroz2022-04-151-0/+10
| | | | | | | | | | Use ARMv8 Crypto Extensions for AES, ghash and sha256. This results in a 16 times speed gain in speed for aes-128-ctr, 17x in aes-128-gcm, and 9 times in sha256. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com> (cherry picked from commit c9c2b01b8441195807e8b492c7d3e385e6c6afdc)
* mediatek: Add support for Xiaomi Redmi Router AX6SRichard Huynh2022-03-213-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also known as the "Xiaomi Router AX3200" in western markets, but only the AX6S is widely installation-capable at this time. SoC: MediaTek MT7622B RAM: DDR3 256 MiB (ESMT M15T2G16128A) Flash: SPI-NAND 128 MiB (ESMT F50L1G41LB or Gigadevice GD5F1GQ5xExxG) WLAN: 2.4/5 GHz 4T4R 2.4 GHz: MediaTek MT7622B 5 GHz: MediaTek MT7915E Ethernet: 4x 10/100/1000 Mbps Switch: MediaTek MT7531B LEDs/Keys: 2/2 (Internet + System LED, Mesh button + Reset pin) UART: Marked J1 on board VCC RX GND TX, beginning from "1". 3.3v, 115200n8 Power: 12 VDC, 1.5 A Notes: U-Boot passes through the ethaddr from uboot-env partition, but also has been known to reset it to a generic mac address hardcoded in the bootloader. However, bdata is also populated with the ethernet mac addresses, but is also typically never written to. Thus this is used instead. Installation: 1. Flash stock Xiaomi "closed beta" image labelled 'miwifi_rb03_firmware_stable_1.2.7_closedbeta.bin'. (MD5: 5eedf1632ac97bb5a6bb072c08603ed7) 2. Calculate telnet password from serial number and login 3. Execute commands to prepare device nvram set ssh_en=1 nvram set uart_en=1 nvram set boot_wait=on nvram set flag_boot_success=1 nvram set flag_try_sys1_failed=0 nvram set flag_try_sys2_failed=0 nvram commit 4. Download and flash image On computer: python -m http.server On router: cd /tmp wget http://<IP>:8000/factory.bin mtd -r write factory.bin firmware Device should reboot at this point. Reverting to stock: Stock Xiaomi recovery tftp that accepts their signed images, with default ips of 192.168.31.1 + 192.168.31.100. Stock image should be renamed to tftp server ip in hex (Eg. C0A81F64.img) Triggered by holding reset pin on powerup. A simple implementation of this would be via dnsmasq's dhcp-boot option or using the vendor's (Windows only) recovery tool available on their website. Signed-off-by: Richard Huynh <voxlympha@gmail.com> (cherry picked from commit 9f9477b2751231d57cdd8c227149b88c93491d93)
* mediatek: add support for Ruijie RG-EW3200GX PROLanghua Ye2022-03-052-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | X32 Pro is another product name for it in the Chinese market. Specifications: - SoC: MT7622B - RAM: 256MB - Flash: XMC XM25QH128C or Winbond WQ25Q128JVSQ 16MB SPI NOR - Ethernet: 5x1GbE - Switch: MT7531BE - WiFi: 2.4G: MT7622 5G: MT7915AN+MT7975AN - 3LEDs: System LED(blue) + Mesh LED(green) + Mesh LED(red) - 2Keys: Mesh button + Reset button - UART: Marked J19 on board. 3.3v, 115200n1 - Power: 12V 2.5A MAC addresses as verified by OEM firmware: use address source WAN *:F4 ethaddr@product_info LAN *:F5 5g *:F6 2g *:F7 Flash instruction: 1. Serve the initramfs.img using a TFTP server with address 10.10.10.3. 2. Interrupt the uboot startup process via UART. 3. Select "System Load Linux to SDRAM via TFTP" item. 4. (important) Back up firmware(mtd7) partitions with: dd if=/dev/mtd7 of=/tmp/firmware.bin and then download the firmware.bin image via SCP. 5. Flash the OpenWrt sysupgrade firmware. Recovery stock firmware: 1. Transfer the firmware.bin image to the device. 2. Flash the image with: mtd write firmware.bin firmware Signed-off-by: Langhua Ye <y1248289414@outlook.com>
* kernel: 5.10: remove CONFIG_DEVTMPFS{,_MOUNT} from kconfigsRui Salvaterra2022-03-011-2/+0
| | | | | | They are required for container support, but are handled in Config-kernel.in. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* mediatek: mt7622: drop RAMFS_COPY_BIN and RAMFS_COPY_DATADaniel Golle2022-02-221-2/+0
| | | | | | | | | Now that both, fw_printenv/fw_setenv and fwtool are always present during stage2 sysupgrade, we no longer need to list them in RAMFS_COPY_BIN and RAMFS_COPY_DATA in platform.sh. Drop both variables as they are now unneeded. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: backport MediaTek Ethernet PHY driverDENG Qingfang2022-02-091-0/+1
| | | | | | | | | | | | | | Add support for MediaTek Gigabit Ethernet PHYs found in MT7530 and MT7531. Fix some link up/down issues. The errornous check for the PHY mode which broke things with MT7531 has been removed as suggested by patch net: phy: mediatek: remove PHY mode check on MT7531 As a result, things are working fine now on MT7622+MT7531 as well. Signed-off-by: DENG Qingfang <dqfext@gmail.com> Tested-by: Daniel Golle <daniel@makrotopia.org> Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com> Tested-by: Stijn Tintel <stijn@linux-ipv6.be>
* Revert "kernel: backport MediaTek Ethernet PHY driver"Hauke Mehrtens2022-02-051-1/+0
| | | | | | | | | | | | | | | | | | This reverts commit 8b4cba53a9402f44da2dced4a78ca065b15dca94. This broke the mt7530 on Linksys e8450 (mt7622) for me. [ 1.312943] mt7530 mdio-bus:00 lan1 (uninitialized): failed to connect to PHY: -EINVAL [ 1.320890] mt7530 mdio-bus:00 lan1 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 0 [ 1.331163] mt7530 mdio-bus:00 lan2 (uninitialized): failed to connect to PHY: -EINVAL [ 1.339085] mt7530 mdio-bus:00 lan2 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 1 [ 1.349321] mt7530 mdio-bus:00 lan3 (uninitialized): failed to connect to PHY: -EINVAL [ 1.357241] mt7530 mdio-bus:00 lan3 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 2 [ 1.367452] mt7530 mdio-bus:00 lan4 (uninitialized): failed to connect to PHY: -EINVAL [ 1.375367] mt7530 mdio-bus:00 lan4 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 3 [ 1.385750] mt7530 mdio-bus:00 wan (uninitialized): failed to connect to PHY: -EINVAL [ 1.393575] mt7530 mdio-bus:00 wan (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 4 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: backport MediaTek Ethernet PHY driverDENG Qingfang2022-02-051-0/+1
| | | | | | | | | Add support for MediaTek Gigabit Ethernet PHYs found in MT7530. Fix some link up/down issues. Signed-off-by: DENG Qingfang <dqfext@gmail.com> Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com> Tested-by: Stijn Tintel <stijn@linux-ipv6.be>
* mediatek: rework and fix mt7622-rfb1-ubi supportFelix Fietkau2022-01-132-3/+5
| | | | | | | | Limit bmt remapping range to cover everything up to and including the kernel image, use the rest of the flash area for ubi. Fix partition table and sysupgrade support Signed-off-by: Felix Fietkau <nbd@nbd.name>
* mediatek: mt7622: enable driver for Aquantia PHYsDaniel Golle2021-12-261-0/+1
| | | | | | | Enable Aquantia Ethernet PHY driver as there is an AQR112C 2500Base-T PHY in the Ubiquiti UniFi 6 LR access point. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: 5.10: consolidate mac80211 crypto optionsSergey Ryazanov2021-12-171-7/+0
| | | | | | | | | | | | | | | | | | | | | | Each of - CRYPTO_AEAD2 - CRYPTO_AEAD - CRYPTO_GF128MUL - CRYPTO_GHASH - CRYPTO_HASH2 - CRYPTO_HASH - CRYPTO_MANAGER2 - CRYPTO_MANAGER - CRYPTO_NULL2 either directly required for mac80211 crypto support, or directly selected by such options. Support for the mac80211 crypto was enabled in the generic config since c7182123b9 ("kernel: make cryptoapi support needed by mac80211 built-in"). So move the above options from the target configs to the generic config to make it clear why do we need them. CC: Felix Fietkau <nbd@nbd.name> Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: filter out both Clang and LLD versionsSergey Ryazanov2021-12-171-1/+0
| | | | | | | | Both CLANG_VERSION and LLD_VERISON are autogenerated runtime configuration options, so add them to the kernel configuration filter and remove from generic and per-target configs to keep configs clean. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* mediatek: mt7622: switch to generic eMMC sysupgradeDaniel Golle2021-12-021-17/+4
| | | | | | | Use functions in newly introduced emmc.sh for sysupgrade of the BananaPi BPi-R64. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek/mt7622: unifi-6-lr: fix ucidef network configuration typoMark Mentovai2021-11-191-1/+1
| | | | | | | | There's no such thing as ucidef_set_interfaces_lan. It's ucidef_set_interface_lan. Cc: David Bauer <mail@david-bauer.net> Signed-off-by: Mark Mentovai <mark@moxienet.com>
* mediatek: mt7622: bpi-r64: rewrite MMC uImage.FIT sysupgradeDaniel Golle2021-11-122-17/+14
| | | | | | | | | | Similar to mt7623, also no longer use 'blockdev' and stop relying on in-kernel partition parsers. Instead, strip off all metadata using 'fwtool' while writing the firmware image and scrape the number of blocks written from 'dd', then use that block offset to stash the configuration backup. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: make use of find_mmc_partDaniel Golle2021-11-011-6/+6
| | | | | | | Use find_mmc_part instead of previously introduced get_partition_by_name which requires a custom kernel patch. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: make sure MMC is not busy before commencing sysupgradeDaniel Golle2021-10-281-0/+1
| | | | | | | | | In case of the block device still being in use, re-reading the partition table fails. In that case, abort sysupgrade to avoid corrupting the just-written image because of wrong offsets caused by failure to re-read the partition table. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: enable configfs for DT overlay on mt7622 and mt7623Daniel Golle2021-10-091-0/+3
| | | | | | | | | Enable kernel options to allow loading device tree overlay via configfs at runtime. This is useful for devboards like the BPi-R2 and BPi-R64 which got RasbPi-compatible 40-pin GPIO header which allow all sorts of extensions. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: Deactivate some ARM64 errata workaroundsHauke Mehrtens2021-10-031-5/+0
| | | | | | | | | | | This deactivates the following workarounds for erratas in ARM64 CPUS: CONFIG_ARM64_ERRATUM_1165522: Cortex-A76 cores (r0p0, r1p0, r2p0) CONFIG_ARM64_ERRATUM_1286807: Cortex-A76 cores (r0p0 to r3p0) CONFIG_ARM64_ERRATUM_1418040: Cortex-A76/Neoverse-N1 cores (r0p0 to r3p1) CONFIG_CAVIUM_TX2_ERRATUM_219: Cavium ThunderX2 CONFIG_FUJITSU_ERRATUM_010001: Fujitsu-A64FX Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* mediatek: add support for TOTOLINK A8000RUChuanhong Guo2021-09-031-0/+6
| | | | | | | | | | | | | | | | | | Specifications: - SoC: MT7622 - RAM: 512MB - Flash: MX35LF1GE4AB 128MB SPI NAND - Ethernet: RTL8367S 5x1GbE - WiFi: 2.4G: MT7622 5G: MT7615N x2 - Other ports: USB3.0 x1 Flash instruction: *important*: upgrade vendor firmware to at least V7.1cu.643_B20200521 1. hold the reset button and power on the device. wait for about 10s before releasing the reset button. 2. upload sysupgrade.bin via u-boot recovery page on http://192.168.1.1 Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* kernel: move two symbols to the generic kconfigsRui Salvaterra2021-08-291-2/+0
| | | | | | | CONFIG_RCU_{NEED_SEGCBLIST,STALL_COMMON} are set basically everywhere. Move them to the generic kconfigs. And resort the generic kconfigs while at it. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* mediatek: mt7629: build with linux 5.10Chuanhong Guo2021-08-271-1/+0
| | | | Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* mediatek: enable new spi-nand driver for kernel 5.10Weijie Gao2021-08-271-0/+1
| | | | | | | This patch enables new spi-nand driver for mt7622 and mt7629. Signed-off-by: Weijie Gao <hackpascal@gmail.com> Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* mediatek: add missing config symbolDavid Bauer2021-08-111-0/+1
| | | | Signed-off-by: David Bauer <mail@david-bauer.net>
* treewide: add various missing config symbolsDavid Bauer2021-08-101-0/+1
| | | | | | Fixes commit 91a52f22a13d ("treewide: backport support for nvmem on non platform devices") Signed-off-by: David Bauer <mail@david-bauer.net>
* mediatek: mt7622: enable HW RNGDavid Bauer2021-08-051-0/+2
| | | | | | | MT7622 provides are hardware RNG with upstream Linux driver. Enable compilation of this driver to make use of the hardware RNG. Signed-off-by: David Bauer <mail@david-bauer.net>
* mediatek: reserve memory for ramoops and enable PSTOREDaniel Golle2021-05-081-3/+30
| | | | | | | Reserve 64KiB of memory for crashlogs and enable PSTORE feature in kernel config for MT7622. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: build AHCI driver as moduleDaniel Golle2021-04-231-1/+0
| | | | | | | | | Build the driver for the in-SoC AHCI SATA host as module, just like for the other subtargets. No board requires booting off SATA, so we don't need to have it built-in. All boards with SATA support already select kmod-ata-ahci-mtk which provides the module. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* treewide: switch the timer frequency to 100 HzRui Salvaterra2021-04-211-2/+0
| | | | | | | | Some targets select HZ=100, others HZ=250. There's no reason to select a higher timer frequency (and 100 Hz are available in every architecture), so change all targets to 100 Hz. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* treewide: remove redundant ubifs kconfig symbolsRui Salvaterra2021-04-211-3/+0
| | | | | | | For the targets which enable ubifs, these symbols are already part of the generic kconfigs. Drop them from the target kconfigs. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* mediatek: fix Ubiquiti UniFi 6 LR LEDDavid Bauer2021-04-161-0/+5
| | | | | | | | | | When adding Kernel 5.10 support, the kernel configuration did not include the LED driver required for the UniFi 6 LR. Also the actual driver source went missing. Fixes commit c46ccb69d17e ("mediatek: mt7622: add Linux 5.10 support") Signed-off-by: David Bauer <mail@david-bauer.net>
* mediatek: mt7622: add spi-nand support for bananapi bpi-r64Oskari Lemmela2021-04-111-11/+23
| | | | | | | | | | Some of bpi-r64 boards have serial NAND attached to SPI bus. Add SD card image support for installing openwrt to it. Default to nand upgrade if root device is not mmc block device. Separate preloader and uboot images for snand are generated. Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
* mediatek: add alternative bootchain variant for UniFi 6 LRDaniel Golle2021-04-091-1/+2
| | | | | | | | Builds images for the Ubiquiti Network UniFi 6 LR device running the U-Boot build added by the previous commits. Everything but MTD partitions is moved to dtsi. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: improve sysupgrade on MMCDaniel Golle2021-03-311-49/+12
| | | | | | | Use generic functions to acquire rootdev. Make sure to wipe rootfs_data in case of '-n'. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: move some disabled symbols to genericAleksander Jan Bajkowski2021-03-191-3/+0
| | | | | | Move some disabled symbols found in armvirt target to generic. Signed-off-by: Aleksander Jan Bajkowski <A.Bajkowski@stud.elka.pw.edu.pl>
* mediatek: add support for Buffalo WSR-2533DHP2INAGAKI Hiroshi2021-03-155-0/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* mediatek: remove no longer needed sysupgrade hackDaniel Golle2021-03-071-18/+0
| | | | | | | Keeping configuration is now handled in fstools like for other types of flash as well. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: remove execute bit and shebang from 01_ledsAdrian Schmutzler2021-03-061-2/+0
| | | | | | | This was added recently and thus overlooked in 85b1f4d8ca2d ("treewide: remove execute bit and shebang from board.d files"). Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* treewide: remove execute bit and shebang from board.d filesAdrian Schmutzler2021-03-061-1/+0
| | | | | | | | | | | | | | | | So far, board.d files were having execute bit set and contained a shebang. However, they are just sourced in board_detect, with an apparantly unnecessary check for execute permission beforehand. Replace this check by one for existance and make the board.d files "normal" files, as would be expected in /etc anyway. Note: This removes an apparantly unused '#!/bin/sh /etc/rc.common' in target/linux/bcm47xx/base-files/etc/board.d/01_network Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* mediatek: mt7622: check firmware metadataDaniel Golle2021-03-041-0/+1
| | | | | | | | | | All mt7622 devices except for the UBI-variant of the mt7622-rfb1 carry metadata appended to the sysupgrade image. Add it for the mt7622-rfb1-ubi as well and check it on sysupgrade to avoid accidentally flashing firmware for the wrong device (or variant or future DEVICE_COMPAT_VERSION). Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: bpi-r64: fix sysupgrade on empty diskDaniel Golle2021-03-011-1/+8
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: enable CONFIG_SPI_MTK_NORDaniel Golle2021-03-011-1/+1
| | | | | | Somehow this got disabled in the transition to 5.10. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: rework support for BananaPi BPi-R64Daniel Golle2021-02-284-14/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **What's new** * Bring support for the Bananapi BPi-R64 to the level desirable for a nice hackable routerboard. * Use ARM Trusted Firmware A from source. (goodbye binary preloader) * Use Das U-Boot from source. (see previous commit) * Assemble SD-card image using OpenWrt image-commands. (no gen_sd_cruz_foo.sh added, this is not Raspbian) * Updated kernel options to support root filesystem. * Updated DTS to match OpenWrt LAN ports, known LEDs, buttons, ... * Detect root device, handle sysupgrade, config restore, ... * Wire up (known) LEDs and buttons in OpenWrt-fashion. * Build one set of images from SD-card and eMMC. * Hopefully provide a good example of how things can be done right from scratch. **Installation and images** * Have an empty SD-card at hand * Write stuff to the card, as root (card device is /dev/mmcblkX) - write header, gpt, bl2, atf, u-boot and recovery kernel: `cat *bpi-r64-boot-sdcard.img *bpi-r64-initramfs-recovery.fit > /dev/mmcblkX` - rescan partitions: `blockdev --rereadpt /dev/mmcblkX` - write main system to production partition: `cat *bpi-r64-squashfs-sysupgrade.fit > /dev/mmcblkXp5` * Installation to eMMC works using SD-card bootloader via TFTP When running OpenWrt of SD-card, issue this to trigger installation to eMMC: `fw_setenv bootcmd run emmc_init` Be prepared to serve the content of bin/targets/mediatek/mt7622 on TFTP server address 192.168.1.254. **What's missing** * The red LED is always on, probably a hardware bug. * AHCI (probably needs DTS changes) * Ship SD-card image ready with every needed for eMMC install. * The eMMC has a second, currently unused boot partition. This would be ideal to store the WiFi EEPROM and Ethernet MAC address(es). @sinovoip ideas? Thanks to Thomas Hühn @thuehn for providing the hardware! Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: add alternative UBI NAND layout for Linksys E8450Daniel Golle2021-02-284-18/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The vendor flash layout of the Linksys E8450 is problematic as it uses the SPI-NAND chip without any wear-leveling while at the same time wasting a lot of space for padding. Use an all-UBI layout instead, storing the kernel+dtb+squashfs in uImage.FIT standard format in UBI volume 'fit', the read-write overlay in UBI volume 'rootfs_data' as well as reduntant U-Boot environments 'ubootenv' and 'ubootenv2', and a 'recovery' kernel+dtb+initramfs uImage.FIT for dual-boot. ** WARNING ** THIS PROCEDURE CAN EASILY BRICK YOUR DEVICE PERMANENTLY IF NOT CARRIED OUT VERY CAREFULLY AND EXACTLY AS DESCRIBED! Step 0 * Configure your PC to have the static IPv4 address 192.168.1.254/24 * Provide bin/targets/mediatek/mt7622 via TFTP Now continue EITHER with step 1A or 1B, depending on your preference (and on having serial console wired up or not). Step 1A (Using the vendor web interface (or non-UBI OpenWrt install)) In order to update to the new bootloader and UBI-based firmware, use the web browser of your choice to open the routers web-interface accessible on http://192.168.1.1 * Navigate to 'Configuration' -> 'Administration' -> 'Firmware Upgrade' * Upload the file openwrt-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery.itb and proceed with the upgrade. * Once OpenWrt comes up, use SCP to upload the new bootloader files to /tmp on the router: *-mt7622-linksys_e8450-ubi-preloader.bin *-mt7622-linksys_e8450-ubi-bl31-uboot.fip * Connect via SSH as you will now need to replace the bootloader in the Flash. ssh root@192.168.1.1 (the usual warnings) * First of all, backup all the flash now: for mtd in /dev/mtdblock*; do dd if=$mtd of=/tmp/$(basename $mtd); done * Then use SCP to copy /tmp/mtdblock* from the router and keep them safe. You will need them should you ever want to return to the factory firmware! * Now flow the uploaded files: mtd -e /dev/mtd0 write /tmp/*linksys_e8450-ubi-preloader.bin /dev/mtd0 mtd -e /dev/mtd1 write /tmp/*linksys_e8450-ubi-bl31-uboot.fip /dev/mtd1 If and only if both writes look like the completed successfully reboot the router. Now continue with step 2. Step 1B (Using the vendor bootloader serial console) * Use the serial to backup all /dev/mtd* devices before using the stock firmware (you got root shell when connected to serial). * Then reboot and select 'U-Boot Console' in the boot menu. * Copy the following lines, one by one: tftpboot 0x40080000 openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin tftpboot 0x40100000 openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip nand erase 0x0 0x180000 nand write 0x40080000 0x0 0x180000 reset Now continue with step 2 Step 2 Once the new bootchain comes up, the loader will initialize UBI and the ubootenv volumes. It will then of course fail to find any bootable volume and hence resort to load kernel via TFTP from server 192.168.1.254 while giving itself the address 192.168.1.1 The requested file is called openwrt-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery.itb and your TFTP server should provide exactly that :) It will be written to UBI as recovery image and booted. You can then continue and flash the production OS image, either by using sysupgrade in the booted initramfs recovery OS, or by using the bootloader menu and TFTP. That's it. Go ahead and mess around with a bootchain built almost completely from source (only DRAM calibration blobs are fitted in bl2, and the irreplacable on-chip ROM loader remains, of course). And enjoy U-Boot built with many great features out-of-the-box. You can access the bootloader environment from within OpenWrt using the 'fw_printenv' and 'fw_setenv' commands. Don't be afraid, once you got the new bootchain installed the device should be fairly unbrickable (holding reset button before and during power-on resets things and allows reflashing recovery image via TFTP) Special thanks to @dvn0 (Devan Carpenter) for providing amazingly fast infra for test-builds, allowing for `make clean ; make -j$(nproc)` in less than two minutes :) Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: add Linksys E8450 supportJohn Crispin2021-02-284-3/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Linksys E8450, also known as Belkin RT3200, is a dual-band IEEE 802.11bgn/ac/ax router based on MediaTek MT7622BV and MediaTek MT7915AN chips. FCC: K7S-03571 and K7S-03572 Hardware highlights: - CPU: MediaTek MT7622BV (2x ARM Cortex-A53 @ 1350 MHz max.) - RAM: 512MB DDR3 - Flash: 128MB SPI-NAND (2k+64) - Ethernet: MT7531BE switch with 5 1000Base-T ports CPU port connected with 2500Base-X - WiFi 2.4 GHz: 802.11bgn 4T4R built-in antennas MT7622VB built-in - WiFi 5 GHz: 802.11ac/ax 4T4R built-in antennas MT7915AN chip on-board via PCIe MT7975AN front-end - Buttons: Reset and WPS - LEDS: 3 user controllable LEDs, 4 wired to switch - USB: USB2.0, single port - no Bluetooth (supported by SoC, not wired on board) - Serial: JST PH 2.0MM 6 Pin connector inside device ----_____________---- [ GND RX - TX - - ] --------------------- - JTAG: unpopulated ARM JTAG 20-pin connector (works) This commit adds support for the device in a way that is compatible with the vendor firmware's bootloader and dual-boot flash layout, the resulting image can directly be flashed using the vendor firmware. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: John Crispin <john@phrozen.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
* mediatek: mt7622: add Linux 5.10 supportFelix Fietkau2021-02-282-169/+10
| | | | | | | Switch mt7622 subtarget to Linux 5.10, it has been tested by many of us on several devices for a couple of weeks already. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* mediatek: implement bad-block management table supportFelix Fietkau2021-02-281-0/+1
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>