openwrt/openwrt.git
17 months agomediatek: add support for Mercusys MR90X v1
Mikhail Zhilkin [Sat, 13 May 2023 13:51:45 +0000 (13:51 +0000)]
mediatek: add support for Mercusys MR90X v1

This commit adds support for Mercusys MR90X(EU) v1 router.

Device specification
--------------------
SoC Type:   MediaTek MT7986BLA, Cortex-A53, 64-bit
RAM:        MediaTek MT7986BLA (512MB)
Flash:      SPI NAND GigaDevice GD5F1GQ5UEYIGY (128 MB)
Ethernet:   MediaTek MT7531AE + 2.5GbE MaxLinear GPY211C0VC (SLNW8)
Ethernet:   1x2.5Gbe (WAN/LAN 2.5Gbps), 3xGbE (WAN/LAN 1Gbps, LAN1, LAN2)
WLAN 2g:    MediaTek MT7975N, b/g/n/ax, MIMO 4x4
WLAN 5g:    MediaTek MT7975P(N), a/n/ac/ax, MIMO 4x4
LEDs:       1 orange and 1 green status LEDs, 4 green gpio-controlled
            LEDs on ethernet ports
Button:     1 (Reset)
USB ports:  No
Power:      12 VDC, 2 A
Connector:  Barrel
Bootloader: Main U-Boot - U-Boot 2022.01-rc4. Additionally, both UBI
            slots contain "seconduboot" (also U-Boot 2022.01-rc4)

Serial console (UART)
---------------------
                            V
+-------+-------+-------+-------+
| +3.3V |  GND  |  TX   |  RX   |
+---+---+-------+-------+-------+
    |
    +--- Don't connect

The R3 (TX line) and R6 (RX line) are absent on the PCB. You should
solder them or solder the jumpers.

Installation (UART)
-------------------
1. Place OpenWrt initramfs image on tftp server with IP 192.168.1.2
2. Attach UART, switch on the router and interrupt the boot process by
   pressing 'Ctrl-C'
3. Load and run OpenWrt initramfs image:
      tftpboot initramfs-kernel.bin
      bootm
4. Once inside OpenWrt, set / update env variables:
      fw_setenv baudrate 115200
      fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
      fw_setenv fdtcontroladdr 5ffc0e70
      fw_setenv ipaddr 192.168.1.1
      fw_setenv loadaddr 0x46000000
      fw_setenv mtdids "spi-nand0=spi-nand0"
      fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data)"
      fw_setenv netmask 255.255.255.0
      fw_setenv serverip 192.168.1.2
      fw_setenv stderr serial@11002000
      fw_setenv stdin serial@11002000
      fw_setenv stdout serial@11002000
      fw_setenv tp_boot_idx 0
5. Run 'sysupgrade -n' with the sysupgrade OpenWrt image

Installation (without UART)
---------------------------
1.  Login as root via SSH (router IP, port 20001, password - your web
    interface password)
2.  Open for editing /etc/hotplug.d/iface/65-iptv (e.g., using WinSCP and
    SSH settings from the p.1)
3.  Add a newline after "#!/bin/sh":
       telnetd -l /bin/login.sh
4.  Save "65-iptv" file
5.  Toggle "IPTV/VLAN Enable" checkbox in the router web interface and
    save
6.  Make sure that telnetd is running:
       netstat -ltunp | grep 23
7.  Login via telnet to router IP, port 23 (no username and password are
    required)
8  Upload OpenWrt "initramfs-kernel.bin" to the "/tmp" folder of the
    router (e.g., using WinSCP and SSH settings from the p.1)
9.  Stock busybox doesn't contain ubiupdatevol command. Hence, we need to
    download and upload the full version of busybox to the router. For
    example, from here:
    https://github.com/xerta555/Busybox-Binaries/raw/master/busybox-arm64
    Upload busybox-arm64 to the /tmp dir of the router and run:
    in the telnet shell:
       cd /tmp
       chmod a+x busybox-arm64
10. Check "initramfs-kernel.bin" size:
       du -h initramfs-kernel.bin
11. Delete old and create new "kernel" volume with appropriate size
    (greater than "initramfs-kernel.bin" size):
       ubirmvol /dev/ubi0 -N kernel
       ubimkvol /dev/ubi0 -n 1 -N kernel -s 9MiB
12. Write OpenWrt "initramfs-kernel.bin" to the flash:
       ./busybox-arm64 ubiupdatevol /dev/ubi0_1 /tmp/initramfs-kernel.bin
13. u-boot-env can be empty so lets create it (or overwrite it if it
    already exists) with the necessary values:
       fw_setenv baudrate 115200
       fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
       fw_setenv fdtcontroladdr 5ffc0e70
       fw_setenv ipaddr 192.168.1.1
       fw_setenv loadaddr 0x46000000
       fw_setenv mtdids "spi-nand0=spi-nand0"
       fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data)"
       fw_setenv netmask 255.255.255.0
       fw_setenv serverip 192.168.1.2
       fw_setenv stderr serial@11002000
       fw_setenv stdin serial@11002000
       fw_setenv stdout serial@11002000
       fw_setenv tp_boot_idx 0
14. Reboot to OpenWrt initramfs:
       reboot
15. Login as root via SSH (IP 192.168.1.1, port 22)
16. Upload OpenWrt sysupgrade.bin image to the /tmp dir of the router
17. Run sysupgrade:
       sysupgrade -n /tmp/sysupgrade.bin

Recovery
--------
1. Press Reset button and power on the router
2. Navigate to U-Boot recovery web server (http://192.168.1.1/) and
   upload the OEM firmware

Recovery (UART)
---------------
1. Place OpenWrt initramfs image on tftp server with IP 192.168.1.2
2. Attach UART, switch on the router and interrupt the boot process by
   pressing 'Ctrl-C'
3. Load and run OpenWrt initramfs image:
      tftpboot initramfs-kernel.bin
      bootm
4. Do what you need (restore partitions from a backup, install OpenWrt
   etc.)

Stock layout
------------
0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"

ubi0/ubi1 format
----------------
U-Boot at boot checks that all volumes are in place:
+-------------------------------+
| Volume Name: uboot   Vol ID: 0|
| Volume Name: kernel  Vol ID: 1|
| Volume Name: rootfs  Vol ID: 2|
+-------------------------------+

MAC addresses
-------------
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| label   | 00:eb:xx:xx:xx:be | label     |
| LAN     | 00:eb:xx:xx:xx:be | label     |
| WAN     | 00:eb:xx:xx:xx:bf | label+1   |
| WLAN 2g | 00:eb:xx:xx:xx:be | label     |
| WLAN 5g | 00:eb:xx:xx:xx:bd | label-1   |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file
"default-mac". OEM wireless eeprom is also there (file
"MT7986_EEPROM.bin").

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
(cherry picked from commit e4fe3097ef6a961874b66932a0ac4be18070630a)
[Fix merging conflict]
Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
17 months agoipq4019: add support for ZTE MF287+ aka DreiNeo
Andreas Böhler [Wed, 7 Jun 2023 19:24:18 +0000 (21:24 +0200)]
ipq4019: add support for ZTE MF287+ aka DreiNeo

The ZTE MF287+ is a LTE router used (exclusively?) by the network operator
"3". The MF287 (i.e. non-plus aka 3Neo) is also supported (the only
difference is the LTE modem)

Specifications
==============

SoC: IPQ4018
RAM: 256MiB
Flash: 8MiB SPI-NOR + 128MiB SPI-NAND
LAN: 4x GBit LAN
LTE: ZTE Cat12 (MF287+) / ZTE Cat6 (MF287)
WiFi: 802.11a/b/g/n/ac SoC-integrated

MAC addresses
=============

LAN: from config + 2
WiFi 1: from config
WiFi 2: from config + 1

Installation
============

Option 1 - TFTP
---------------

TFTP installation using UART is preferred. Disassemble the device and
connect serial. Put the initramfs image as openwrt.bin to your TFTP server
and configure a static IP of 192.168.1.100. Load the initramfs image by
typing:

  setenv serverip 192.168.1.100
  setenv ipaddr 192.168.1.1
  tftpboot 0x82000000 openwrt.bin
  bootm 0x82000000

From this intiramfs boot you can take a backup of the currently installed
partitions as no vendor firmware is available for download:

  ubiattach -m14
  cat /dev/ubi0_0 > /tmp/ubi0_0
  cat /dev/ubi0_1 > /tmp/ubi0_1

Copy the files /tmp/ubi0_0 and /tmp/ubi0_1 somewhere save.

Once booted, transfer the sysupgrade image and run sysupgrade. You might
have to delete the stock volumes first:

  ubirmvol /dev/ubi0 -N ubi_rootfs
  ubirmvol /dev/ubi0 -N kernel

Option 2 - From stock firmware
------------------------------

The installation from stock requires an exploit first. The exploit consists
of a backup file that forces the firmware to download telnetd via TFTP from
192.168.0.22 and run it. Once exploited, you can connect via telnet and
login as admin:admin.

The exploit will be available at the device wiki page.

Once inside the stock firmware, you can transfer the -factory.bin file to
/tmp by using "scp" from the stock frmware or "tftp".

ZTE has blocked writing to the NAND. Fortunately, it's easy to allow write
access - you need to read from one file in /proc. Once done, you need to
erase the UBI partition and flash OpenWrt. Before performing the operation,
make sure that mtd13 is the partition labelled "rootfs" by calling
"cat /proc/mtd".

Complete commands:

  cd /tmp
  tftp -g -r factory.bin 192.168.0.22
  cat /proc/driver/sensor_id
  flash_erase /dev/mtd13 0 0
  dd if=/tmp/factory.bin of=/dev/mtdblock13 bs=131072

Afterwards, reboot your device and you should have a working OpenWrt
installation.

Restore Stock
=============

Option 1 - via UART
-------------------

Boot an OpenWrt initramfs image via TFTP as for the initial installation.
Transfer the two backed-up files to your box to /tmp.

Then, run the following commands - replace $kernel_length and $rootfs_size
by the size of ubi0_0 and ubi0_1 in bytes.

  ubiattach -m 14
  ubirmvol /dev/ubi0 -N kernel
  ubirmvol /dev/ubi0 -N rootfs
  ubirmvol /dev/ubi0 -N rootfs_data
  ubimkvol /dev/ubi0 -N kernel -s $kernel_length
  ubimkvol /dev/ubi0 -N ubi_rootfs -s $rootfs_size
  ubiupdatevol /dev/ubi0_0 /tmp/ubi0_0
  ubiupdatevol /dev/ubi0_1 /tmp/ubi0_1

Option 2 - from within OpenWrt
------------------------------

This option requires to flash an initramfs version first so that access
to the flash is possible. This can be achieved by sysupgrading to the
recovery.bin version and rebooting. Once rebooted, you are again in a
default OpenWrt installation, but no partition is mounted.

Follow the commands from Option 1 to flash back to stock.

LTE Modem
=========

The LTE modem is similar to other ZTE devices and controls some more LEDs
and battery management.

Configuring the connection using uqmi works properly, the modem
provides three serial ports and a QMI CDC ethernet interface.

Signed-off-by: Andreas Böhler <dev@aboehler.at>
(cherry picked from commit f70ee53b08466f612546f699c556cbdaa39e1466)

17 months agoipq40xx: Enable gpio-restart in kernel configuration
Andreas Böhler [Sun, 14 May 2023 14:39:15 +0000 (16:39 +0200)]
ipq40xx: Enable gpio-restart in kernel configuration

Some ZTE devices require the gpio-restart driver to support restarting the
LTE modem along with OpenWrt

Signed-off-by: Andreas Böhler <dev@aboehler.at>
(cherry picked from commit 9ffdaa7fa1478146b5d8c77d4b3a5d4d4007a487)

17 months agouboot-envtools: Add u-boot env config for GL-MT3000
Jianhui Zhao [Mon, 5 Jun 2023 03:02:07 +0000 (03:02 +0000)]
uboot-envtools: Add u-boot env config for GL-MT3000

This commit add u-boot env config for GL-MT3000, so
that we can use fw_printenv to print u-boot env and
use fw_setenv to set u-boot env in GL-MT3000.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
(cherry picked from commit 6892603efa11603c6f365bee1cf94e98336d72aa)

17 months agoOpenWrt v23.05.0-rc2: revert to branch defaults
Hauke Mehrtens [Tue, 27 Jun 2023 22:08:33 +0000 (00:08 +0200)]
OpenWrt v23.05.0-rc2: revert to branch defaults

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
17 months agoOpenWrt v23.05.0-rc2: adjust config defaults v23.05.0-rc2
Hauke Mehrtens [Tue, 27 Jun 2023 22:08:24 +0000 (00:08 +0200)]
OpenWrt v23.05.0-rc2: adjust config defaults

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
17 months agofilogic: add support for Netgear WAX220
Flole Systems [Mon, 10 Apr 2023 21:36:59 +0000 (23:36 +0200)]
filogic: add support for Netgear WAX220

Hardware
--------
SOC:   MediaTek MT7986
RAM:   1024MB DDR3
FLASH: 128MB SPI-NAND (Winbond)
WIFI:  Mediatek MT7986 DBDC 802.11ax 2.4/5 GHz
ETH:   Realtek RTL8221B-VB-CG 2.5 N-Base-T PHY with PoE
UART:  3V3 115200 8N1 (Pinout silkscreened / Do not connect VCC)

Installation
------------

1. Download the OpenWrt initramfs image. Copy the image to a TFTP server
2. Connect the TFTP server to the WAX220. Conect to the serial console,
   interrupt the autoboot process by pressing '0' when prompted.
3. Download & Boot the OpenWrt initramfs image.

   $ setenv ipaddr 192.168.2.1
   $ setenv serverip 192.168.2.2
   $ tftpboot openwrt.bin
   $ bootm

4. Wait for OpenWrt to boot. Transfer the sysupgrade image to the device
   using scp and install using sysupgrade.

   $ sysupgrade -n <path-to-sysupgrade.bin>

Signed-off-by: Flole Systems <flole@flole.de>
Signed-off-by: Stefan Agner <stefan@agner.ch>
(cherry picked from commit 984786a2f7ec622c99e8c9cdada65d0ea0cf4e0b)

17 months agouhttpd: update to latest git HEAD
Hauke Mehrtens [Sun, 25 Jun 2023 18:03:42 +0000 (20:03 +0200)]
uhttpd: update to latest git HEAD

34a8a74 uhttpd/file: fix string out of buffer range on uh_defer_script

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7a6f6b812632a5983cd34ab5c41271d5d4de5fbf)

17 months agokernel: bump 5.15 to 5.15.118
John Audia [Wed, 21 Jun 2023 16:17:06 +0000 (12:17 -0400)]
kernel: bump 5.15 to 5.15.118

All patches automatically rebased.

Build system: x86_64
Build-tested: ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod
Run-tested: ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod

Signed-off-by: John Audia <therealgraysky@proton.me>
(cherry picked from commit 1f5fce27c195373fedcf233a48470de97752058f)

17 months agoipq40xx: meraki-mr33, meraki-mr74: disable image generation
Lech Perczak [Wed, 21 Jun 2023 00:30:20 +0000 (02:30 +0200)]
ipq40xx: meraki-mr33, meraki-mr74: disable image generation

After migrating to kernel 5.15, upgrading causes the units to become
soft-bricked, hanging forever at the kernel startup.
Kernel size limitation of 4000000 bytes is suspected here, but this is
not fully confirmed.

Disable the images to protect users from inadvertent bricking of units,
because recovery of those is painful with Cisco's U-boot, until the root
cause is found and fixed.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
(cherry picked from commit 9d64cc068fbb15d9e6498c1eba79851823b2f4f5)

17 months agoramips: fix lan leds for Wavlink WL-WN535K1
Davide Fioravanti [Wed, 21 Jun 2023 19:53:07 +0000 (21:53 +0200)]
ramips: fix lan leds for Wavlink WL-WN535K1

Previously both lan1 and lan2 leds were wrongly labelled as lan2.
Moreover they were connected to the wrong lan port.
Fixes 8fde82095ba0 ("ramips: add support for Wavlink WL-WN535K1")

Reported-by: Nicolò Maria Semprini <nicosemp@gmail.com>
Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
(cherry picked from commit c71dada92654a53c63bbc5bebcc40fe924750ed7)

17 months agoramips: mt7621: add support for Zbtlink ZBT-WG1608 (32M)
Kim DoHyoung [Thu, 11 Aug 2022 08:13:35 +0000 (08:13 +0000)]
ramips: mt7621: add support for Zbtlink ZBT-WG1608 (32M)

Zbtlink ZBT-WG1608 is a Wi-Fi router intendent to use with WWAN (4G/5G)
modems.

Specifications:
* SoC: MediaTek MT7621A
* RAM: 256/512 MiB
* Flash: 16/32 MiB (SPI NOR)
* Wi-Fi:
  * MediaTek MT7603E : 2.4Ghz
  * MediaTek MT7613BE : 5Ghz
* Ethernet: 10/100/1000 Mbps Ethernet x5 ports (4xLAN + WAN)
* M.2: 1x slot with USB&SIM
  * EM7455/EM12-G/EM160R/RM500Q-AE
* USB: 1x 3.0 Type-A port
* External storage: 1x microSD (SDXC) slot
* UART: console (115200 baud)
* LED:
  * 1 power indicator
  * 1 WLAN 2.4G controlled (wlan 2G)
  * 3 SoC controlled (wlan 5G, wwan, internet)
  * 5 per Eth phy (4xLAN + WAN)

MAC Addresses:
* LAN    : f8:5e:3c:xx:xx:e0 (Factory, 0xe000 (hex))
* WAN    : f8:5e:3c:xx:xx:e1 (Factory, 0xe006 (hex))
* 2.4 GHz: f8:5e:3c:xx:xx:de (Factory, 0x0004 (hex))
* 5 GHz  : f8:5e:3c:xx:xx:df (Factory, 0x8004 (hex))

Installation:
* Vendor's firmware is OpenWrt (LEDE) based, so the sysupgrade image can
  be directly used to install OpenWrt. Firmware must be upgraded using the
  'force' and 'do not save configuration' command line options (or
  correspondig web interface checkboxes) since the vendor firmware is from
  the pre-DSA era.

Recovery Mode:
 * Press reset button, power up the device, wait for about 10sec.
 * Upload sysupgrade image through the firmware recovery mode web page at
  192.168.1.1.

Signed-off-by: Kim DoHyoung <azusahmr@k-on.kr>
(cherry picked from commit 0bbd5699c81d6887c4d895e85b56d8c23b1211ec)

17 months agoodhcpd: bump to latest git HEAD
Christian Marangi [Sat, 24 Jun 2023 17:06:42 +0000 (19:06 +0200)]
odhcpd: bump to latest git HEAD

5211264 odhcpd: add support for dhcpv6_pd_min_len parameter
c6bff6f router: Add PREF64 (RFC 8781) support

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit acd9981b4ef750544202df9d9e2d0143a6dfd478)

17 months agonetfilter: fix typo in nf-socket and nf-tproxy kconfig
Christian Marangi [Fri, 23 Jun 2023 15:44:10 +0000 (17:44 +0200)]
netfilter: fix typo in nf-socket and nf-tproxy kconfig

Fix a typo where the wrong KCONFIG was used and fix selecting the
correct kernel config option to use these packages.

Fixes: 4f443c885ded ("netfilter: separate packages for kmod-ipt-socket and kmod-ipt-tproxy")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 3ebebf08be950a8a0f3bf5b2c3db910621f2cc21)

17 months agomac80211: always use mac80211 loss detection
David Bauer [Wed, 17 May 2023 10:04:00 +0000 (12:04 +0200)]
mac80211: always use mac80211 loss detection

ath10k does not report excessive loss in case of broken block-ack
sessions. The loss is communicated to the host-os, but ath10k does not
trigger a low-ack events by itself.

The mac80211 framework for loss detection however detects this
circumstance well in case of ath10k. So use it regardless of ath10k's
own loss detection mechanism.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit ed816f6ba8b5e3df609e5fc53f7bcb09bdaa16be)

17 months agoath79: add support for Aruba AP-115
David Bauer [Mon, 3 Apr 2023 11:56:58 +0000 (13:56 +0200)]
ath79: add support for Aruba AP-115

Hardware
========

CPU   Qualcomm Atheros QCA9558
RAM   256MB DDR2
FLASH 2x 16M SPI-NOR (Macronix MX25L12805D)
WIFI  Qualcomm Atheros QCA9558
      Atheros AR9590

Installation
============

1. Attach to the serial console of the AP-105.
   Interrupt autoboot and change the U-Boot env.

   $ setenv rb_openwrt "setenv ipaddr 192.168.1.1;
     setenv serverip 192.168.1.66;
     netget 0x80060000 ap115.bin; go 0x80060000"
   $ setenv fb_openwrt "bank 1;
     cp.b 0xbf100040 0x80060000 0x10000; go 0x80060000"
   $ setenv bootcmd "run fb_openwrt"
   $ saveenv

2. Load the OpenWrt initramfs image on the device using TFTP.
   Place the initramfs image as "ap105.bin" in the TFTP server
   root directory, connect it to the AP and make the server reachable
   at 192.168.1.66/24.

   $ run rb_openwrt

3. Once OpenWrt booted, transfer the sysupgrade image to the device
   using scp and use sysupgrade to install the firmware.

Signed-off-by: David Bauer <mail@david-bauer.net>
(cherry picked from commit 1b467a902ec9b8bf29805c6928627e8bbad0f14c)

17 months agobmips: add support for Arcadyan AR7516
Daniel González Cabanelas [Wed, 21 Jun 2023 21:14:02 +0000 (23:14 +0200)]
bmips: add support for Arcadyan AR7516

The Arcadyan AR7516, AKA Orange Bright Box or EE Bright Box 1, is a wifi
fast ethernet router, 2.4 GHz single band with two internal antennas. It
comes with a horizontal stand black shiny casing.

Newer Bright Box 1 model stands vertically, and comes with a totally
different board inside, not compatible with this firmware.

Hardware:
 - SoC: Broadcom BCM6328
 - CPU: single core BMIPS4350 V7.5 @ 320Mhz
 - RAM: 64 MB DDR2
 - Flash: 8 MB SPI NOR
 - Ethernet LAN: 4x 100Mbit
 - Wifi 2.4 GHz: Broadcom BCM43227 802.11bgn (onboard)
 - USB: 1x 2.0
 - ADSL: yes, unsupported
 - Buttons: 2x
 - LEDs: 9x, power LED is hardware controlled
 - UART: yes

Installation in two steps, new CFE bootloader and firmware:

Install new CFE:
  1. Power off the router and press the RESET button
  2. Power on the router and wait some seconds
  3. Release the RESET button
  3. Browse to http://192.168.1.1, this web interface will offer both
     firmware (“Software”) upgrade and bootloader upgrade; be sure to
     use the bootloader section of the upload form.
  4. Upload the new CFE (availabe at the wiki page)
  5. Wait about a minute for flashing to finish and reboot into the new bootloader.

Install OpenWrt via new CFE web UI:
  1. After installing the new CFE, visit http://192.168.1.1
  2. Upload the Openwrt cfe firmware
  5. Wait a few minutes for it to finish

Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
(cherry-picked from df8e4b6c2e6440bc9a31467de1739c69c328e391)

17 months agokernel: remove bridge offload hack
Etienne Champetier [Sun, 11 Jun 2023 03:13:33 +0000 (23:13 -0400)]
kernel: remove bridge offload hack

This patch initially introduced in 94b4da9b4aaded6ed8a5bd93bf38a7c92753fe68
breaks mvebu devices when using vlan filtering with kernel 5.15 or 6.1,
it was working ok in 5.10.

With this patch, frame that should exit untagged from the switch exit tagged.
Running 'tcpdump -Q out -evnnli eth1' (eth1 being the dsa interface)
- with the hack, frame is sent directly to the
destination port 4 with VID 2, so the switch leave the tag as instructed:
11:22:33:44:55:66 > 77:88:99:aa:bb:cc, Marvell EDSA ethertype 0xdada (Unknown), rsvd 0 0, mode From CPU, target dev 0, port 4, tagged, VID 2, FPri 0, ethertype ARP (0x0806), length 50: Ethernet (len 6), IPv4 (len 4), Request who-has 5.6.7.8 tell 1.2.3.4, length 28

- without the hack, frame is sent to the switch that
performs the forwarding decision and untagging:
11:22:33:44:55:66 > 77:88:99:aa:bb:cc, Marvell EDSA ethertype 0xdada (Unknown), rsvd 0 0, mode Forward, dev 1, port 0, tagged, VID 2, FPri 0, ethertype ARP (0x0806), length 50: Ethernet (len 6), IPv4 (len 4), Request who-has 5.6.7.8 tell 1.2.3.4, length 28

Removing this patch makes my Turris Omnia usable with vlan filtering,
ie wifi device can talk to wired device again.
Using kernel 5.15 some broadcast/multicast traffic is still leaked
(on a VLAN 2 access port I see tagged VLAN 3 frame),
using kernel 6.1 fixes that.

People needing the extra performance should try the bridger package.

Acked-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
(cherry picked from commit 244328b19c3943bb145b72f0d85062f535e56fbd)

17 months agobmips: add support for NuCom R5010UNv2
Daniel González Cabanelas [Sun, 18 Jun 2023 19:34:59 +0000 (21:34 +0200)]
bmips: add support for NuCom R5010UNv2

The NuCom R5010UNv2 is a wifi fast ethernet router, 2.4 GHz single band
with two external antennas.

Hardware:
 - SoC: Broadcom BCM6328
 - CPU: single core BMIPS4350 V7.5 @ 320Mhz
 - RAM: 64 MB DDR2
 - Flash: 16 MB SPI NOR
 - Ethernet LAN: 4x 100Mbit
 - Wifi 2.4 GHz: Broadcom BCM43217 802.11bgn (onboard)
 - USB: 1x 2.0
 - Buttons: 2x
 - ADSL: yes, unsupported
 - LEDs: 7x
 - UART: yes

Installation via CFE web UI:
  1. Power off the router and press the RESET button
  2. Power on the router and wait 12 or more seconds
  3. Release the RESET button
  4. Browse to http://192.168.1.1 and upload the Openwrt cfe firmware
  5. Wait a few minutes for it to finish

Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
(cherry picked from commit 6cb3328b4fd4939f3800d4be9d52744b753de1b6)

17 months agobmips: enable the data Read Ahead Cache for BMIPS4350
Daniel González Cabanelas [Sat, 17 Jun 2023 17:34:05 +0000 (19:34 +0200)]
bmips: enable the data Read Ahead Cache for BMIPS4350

The data RAC is left disabled by the bootloader in some SoCs, at least in
the core it boots from. Enabling this feature increases the performance up
to +30% depending on the task.

The kernel enables the whole RAC unconditionally on BMIPS3300 CPUs. Enable
the data RAC in a similar way also for BMIPS4350.

Tested on DGND3700 v1 (BCM6368) and HG556a (BCM6358).

Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
(cherry picked from commit 6d1265b14850abaf8980e5cebef3e559b1fdcfb9)

17 months agobmips: fix DMA RAC flush
Álvaro Fernández Rojas [Sat, 10 Jun 2023 15:17:11 +0000 (17:17 +0200)]
bmips: fix DMA RAC flush

BMIPS_GET_CBR() returns an invalid address on some SoCs.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 62cdca25edc7e02249a7dd01c2218ee83e6ed145)

17 months agoramips: Add support for Beeline SmartBox TURBO+
Maximilian Weinmann [Wed, 7 Dec 2022 16:44:09 +0000 (23:44 +0700)]
ramips: Add support for Beeline SmartBox TURBO+

This adds support for Beeline Smart Box TURBO+ (Serсomm S3 CQR) router.

Device specification
--------------------
SoC Type: MediaTek MT7621AT (880 MHz, 2 cores)
RAM (Nanya NT5CC64M16GP): 128 MiB
Flash (Macronix MX30LF1G18AC): 128 MiB
Wireless 2.4 GHz (MT7603EN): b/g/n, 2x2
Wireless 5 GHz (MT7615N): a/n/ac, 4x4
Ethernet: 5 ports - 5×GbE (WAN, LAN1-4)
USB ports: 1xUSB3.0
Buttons: 2 button (reset, wps)
LEDs: Red, Green, Blue
Zigbee (EFR32MG1B232GG): 3.0
Stock bootloader: U-Boot 1.1.3
Power: 12 VDC, 1.5 A

Installation (fw 2.0.9)
-----------------------
1.  Login to the web interface under SuperUser (root) credentials.
    Password: SDXXXXXXXXXX, where SDXXXXXXXXXX is serial number of the
    device written on the backplate stick.
2.  Navigate to Setting -> WAN. Add:
       Name - WAN1
       Connection Type - Static
       IP Address - 172.16.0.1
       Netmask - 255.255.255.0
    Save -> Apply. Set default: WAN1
3.  Enable SSH and HTTP on WAN. Setting -> Remote control. Add:
       Protocol - SSH
       Port - 22
       IP Address - 172.16.0.1
       Netmask - 255.255.255.0
       WAN Interface - WAN1
    Save ->Apply
    Add:
       Protocol - HTTP
       Port - 80
       IP Address - 172.16.0.1
       Netmask - 255.255.255.0
       WAN interface - WAN1
    Save -> Apply
4.  Set up your PC ethernet:
       Connection Type - Static
       IP Address - 172.16.0.2
       Netmask - 255.255.255.0
       Gateway - 172.16.0.1
5.  Connect PC using ethernet cable to the WAN port of the router
6.  Connect to the router using SSH shell under SuperUser account
7.  Make a mtd backup (optional, see related section)
8.  Change bootflag to Sercomm1 and reboot:
        printf 1 | dd bs=1 seek=7 count=1 of=/dev/mtdblock3
        reboot
9.  Login to the router web interface under admin account
10. Remove dots from the OpenWrt factory image filename
11. Update firmware via web using OpenWrt factory image

Revert to stock
---------------
Change bootflag to Sercomm1 in OpenWrt CLI and then reboot:
   printf 1 | dd bs=1 seek=7 count=1 of=/dev/mtdblock3

mtd backup
----------
1. Set up a tftp server (e.g. tftpd64 for windows)
2. Connect to a router using SSH shell and run the following commands:
      cd /tmp
      for i in 0 1 2 3 4 5 6 7 8 9 10; do nanddump -f mtd$i /dev/mtd$i; \
      tftp -l mtd$i -p 172.16.0.2; md5sum mtd$i >> mtd.md5; rm mtd$i; done
      tftp -l mtd.md5 -p 171.16.0.2

Recovery
--------
Use sercomm-recovery tool.
Link: https://github.com/danitool/sercomm-recovery
MAC Addresses (fw 2.0.9)
------------------------
+-----+------------+---------+
| use | address    | example |
+-----+------------+---------+
| LAN | label      | *:e8    |
| WAN | label + 1  | *:e9    |
| 2g  | label + 4  | *:ec    |
| 5g  | label + 5  | *:ed    |
+-----+------------+---------+
The label MAC address was found in Factory 0x21000

Factory image format
--------------------
+---+-------------------+-------------+--------------------+
| # | Offset            | Size        | Description        |
+---+-------------------+-------------+--------------------+
| 1 | 0x0               | 0x200       | Tag Header Factory |
| 2 | 0x200             | 0x100       | Tag Header Kernel1 |
| 3 | 0x300             | 0x100       | Tag Header Kernel2 |
| 4 | 0x400             | SIZE_KERNEL | Kernel             |
| 5 | 0x400+SIZE_KERNEL | SIZE_ROOTFS | RootFS(UBI)        |
+---+-------------------+-------------+--------------------+

Co-authored-by: Mikhail Zhilkin <csharper2005@gmail.com>
Signed-off-by: Maximilian Weinmann <x1@disroot.org>
(cherry picked from commit 8fcfb21b16e7537b9a871a1f67cb218c6be93149)

17 months agoscripts: sercomm-kernel-header.py: improve compatibility
Mikhail Zhilkin [Fri, 2 Dec 2022 15:26:17 +0000 (15:26 +0000)]
scripts: sercomm-kernel-header.py: improve compatibility

This improves compatibility with the elder stock firmwares of the
following devices, which have not yet been merged into OpenWrt:
 - Beeline SmartBox Pro
 - Beeline SmartBox Turbo+
 - WiFire S1500.NBN

Without this, OpenWrt factory image installation may fail.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Signed-off-by: Maximilian Weinmann <x1@disroot.org>
(cherry picked from commit 35a4418d3966ccf6229916b0021bd18871ef22dd)

17 months agoopenssl: passing cflags to configure
Jitao Lu [Wed, 14 Jun 2023 09:25:03 +0000 (17:25 +0800)]
openssl: passing cflags to configure

openssl sets additional cflags in its configuration script. We need to
make it aware of our custom cflags to avoid adding conflicting cflags.

Fixes: #12866
Signed-off-by: Jitao Lu <dianlujitao@gmail.com>
(cherry picked from commit 51f57e7c2dd2799e34036ec74b3436bf490fade0)

17 months agorockchip: fix setup network config for nanopi r2c
Tianling Shen [Wed, 14 Jun 2023 11:25:28 +0000 (19:25 +0800)]
rockchip: fix setup network config for nanopi r2c

Without it the WAN port won't be initialized properly.

Fixes: 8f578c15b314 ("rockchip: add NanoPi R2C support")
Reviewed-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
(cherry picked from commit d312f12b1a6ee41e7bf1e07ec0349e141c07b92e)

17 months agokernel: bump 5.15 to 5.15.117
John Audia [Thu, 15 Jun 2023 20:00:09 +0000 (16:00 -0400)]
kernel: bump 5.15 to 5.15.117

Manually rebased:
generic/backport-5.15/346-v5.18-01-Revert-ata-ahci-mvebu-Make-SATA-PHY-optional-for-Arm.patch

Removed upstreamed:
generic/backport-5.15/830-v6.2-ata-ahci-fix-enum-constants-for-gcc-13.patch

All other patches automatically rebased.

Build system: x86_64
Build-tested: ramips/tplink_archer-a6-v3
Run-tested: ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
(cherry picked from commit 0e89ba8430a5d9a638f71d9534ea4152fc26e278)

17 months agokernel: bump 5.15 to 5.15.116
John Audia [Sat, 10 Jun 2023 20:57:15 +0000 (16:57 -0400)]
kernel: bump 5.15 to 5.15.116

All patches rebased automatically.

Build system: x86_64
Build-tested: ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod
Run-tested: ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod

Signed-off-by: John Audia <therealgraysky@proton.me>
(cherry picked from commit 5dc78d8f18e8f536317d9438b096a484a9c49862)

17 months agokernel: add CONFIG_DRM_RCAR_USE_LVDS is not set
John Audia [Sun, 11 Jun 2023 17:11:52 +0000 (13:11 -0400)]
kernel: add CONFIG_DRM_RCAR_USE_LVDS is not set

Added missing symbol.

Signed-off-by: John Audia <therealgraysky@proton.me>
(cherry picked from commit fc3383a55877150ffe8068c46fe61f6881b1033c)

17 months agokernel: bump 5.15 to 5.15.115
John Audia [Tue, 6 Jun 2023 14:45:47 +0000 (10:45 -0400)]
kernel: bump 5.15 to 5.15.115

Manually rebased:
backport-5.15/603-v5.19-page_pool-Add-recycle-stats-to-page_pool_put_page_bu.patch
pending-5.15/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch*

Removed upstreamed:
generic-backport/610-v6.3-net-page_pool-use-in_softirq-instead.patch[1]
backport-5.15/705-12-v6.0-net-dsa-mt7530-rework-mt753-01-_setup.patch[2]
backport-5.15/790-v6.4-0010-net-dsa-mt7530-split-off-common-parts-from-mt7531_se.patch[3]
backport-5.15/703-10-v5.16-net-dsa-introduce-helpers-for-iterating-through-port.patch[4]

All other patches automatically rebased.

* Modified to define the variable i as suggested by DragonBluep in PR discussion.
  See: https://github.com/openwrt/openwrt/pull/12823#issuecomment-1578518576

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.115&id=3af319d5147454dc63665ef451229c674b538377
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.115&id=0753c1ef24194580f7165ae6e259b59a851392f2
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.115&id=5a7266feaa6d708fc6880a161786eaa884ef3c8e
4. https://github.com/gregkh/linux/commit/9902f91cf666124a6b50bbcf483b46ecb09ef408

Build system: x86_64
Build-tested: bcm2711/RPi4B, ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod
Run-tested: bcm2711/RPi4B, ramips/tplink_archer-a6-v3, filogic/xiaomi_redmi-router-ax6000-ubootmod

Signed-off-by: John Audia <therealgraysky@proton.me>
(cherry picked from commit 5714660643e9170920be2abbb2297d9aac0b9533)

17 months agoipq806x: set PERFORMANCE as the default cpufreq governor
Christian Marangi [Fri, 16 Jun 2023 09:18:05 +0000 (11:18 +0200)]
ipq806x: set PERFORMANCE as the default cpufreq governor

Move default cpufreq governor from ONDEMAND to PERFORMANCE. The temp
increase is just 2°C and Watt usage the change is minimal in the order
of additional millwatt. The SoC and krait in general looks to suffer for
some problem with cache scaling. To have better system stability, force
cpu freq and cache freq to the max value supported by the system. This
follows mvebu platform where cpufreq is broken and cause minimal
temp/watt increase.

User can still tweak the governor to ondemand using sysfs entry if
needed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 6f5ea752d7c95ba426ca21a6588cae8812bb3e7c)

17 months agoRevert "ipq806x: disable cache and fabric devfreq driver to improve stability"
Christian Marangi [Fri, 16 Jun 2023 09:32:52 +0000 (11:32 +0200)]
Revert "ipq806x: disable cache and fabric devfreq driver to improve stability"

This reverts commit 60fc93b35935a88b1e31d853a0abacf0847d8de4.

Reenable devfreq and revert for both 5.15 and 6.1.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 37e459321360aab13ed89647ed5c5033281047ae)

17 months agoCI: labeler: add sifiveu target
Piotr Dymacz [Mon, 12 Jun 2023 19:22:52 +0000 (21:22 +0200)]
CI: labeler: add sifiveu target

Add support for 'sifiveu' target and its specific packages in labeler.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
(cherry picked from commit 92b8b18c2685e9e509d2b8b797de7e03424d17d1)

17 months agotoolchain: gcc: backport inline subword atomic support for riscv
Tianling Shen [Sat, 10 Jun 2023 11:08:04 +0000 (19:08 +0800)]
toolchain: gcc: backport inline subword atomic support for riscv

RISC-V has no support for subword atomic operations; code currently
generates libatomic library calls.

This patch changes the default behavior to fast inline subword atomic
calls that do not require libatomic.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
(cherry picked from commit 7b4a966de88aa0e1f9b7faa62a4d6cb7b01e9f8f)

17 months agobcm63xx: fix the Home Hub 2a power LED
Daniel González Cabanelas [Fri, 16 Jun 2023 12:24:13 +0000 (14:24 +0200)]
bcm63xx: fix the Home Hub 2a power LED

Power LED register is wrong at dts. Fix it.

Fixes: 9ceeaf4c6cac ("brcm63xx: switch to hardware led controllers")
Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
(cherry picked from commit 0e01ba93610240ad84f9bbc5fc6e5982a07d39f9)

17 months agobmips: add support for Comtrend VG-8050
Álvaro Fernández Rojas [Thu, 15 Jun 2023 16:16:21 +0000 (18:16 +0200)]
bmips: add support for Comtrend VG-8050

The Comtrend VG-8050 is a wifi gigabit ethernet router, 2.4 GHz single band with
two external antennas.

Hardware:
 - SoC: Broadcom BCM63169
 - CPU: dual core BMIPS4350 @ 400Mhz
 - RAM: 128 MB DDR
 - Flash: 128 MB NAND
 - LAN switch: Broadcom BCM53125, 5x 1Gbit
 - Wifi 2.4 GHz: SoC (BCM63268) 802.11bgn
 - USB: 1x 2.0 (optional)
 - Buttons: 2x (reset)
 - LEDs: yes
 - UART: yes

Installation via CFE web UI:
  1. Power off the router.
  2. Press reset button near the power switch.
  3. Keep it pressed while powering up during ~20+ seconds.
  4. Browse to http://192.168.1.1 and upload the firmware.
  5. Wait a few minutes for it to finish.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 47cc09aa7a9a12cb7b18ef96f0b5d0bcb5d84b9e)

17 months agobmips: dts: dgnd3700: fix WAN port
Álvaro Fernández Rojas [Thu, 15 Jun 2023 18:53:11 +0000 (20:53 +0200)]
bmips: dts: dgnd3700: fix WAN port

All switch ports are labeled as port@address so let's follow the same pattern.

Fixes: ed79519b8d89 ("bmips: add support for Netgear DGND3700 v1, DGND3800B")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit d9210c5ff797896317d1b6293a5ad768b7482cfe)

17 months agobmips: add support for Sercomm AD1018
Álvaro Fernández Rojas [Mon, 12 Jun 2023 17:51:22 +0000 (19:51 +0200)]
bmips: add support for Sercomm AD1018

The Sercomm AD1018 is a wifi fast ethernet router, 2.4 GHz single band with
two internal antennas.

Hardware:
 - SoC: Broadcom BCM6328
 - CPU: single core BMIPS4350 @ 320Mhz
 - RAM: 64 MB (v1) / 128 MB (v2) DDR
 - Flash: 128 MB NAND
 - Ethernet LAN: 4x 100Mbit
 - Wifi 2.4 GHz: miniPCI Broadcom BCM43217 802.11bgn
 - USB: 1x 2.0
 - Buttons: 3x (reset)
 - LEDs: yes
 - UART: yes

Installation via OEM web UI:
  1. Use the admin credentials to login via web UI
  2. Go to Managament->Update firmware and select the OpenWrt CFE firmware
  3. Press "Update Firmware" button and wait some minutes until it finish

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 38ebb2eafde604ff6d9b0021d1d21208070a2d09)

17 months agobmips: bump LOADER_ENTRY to RAM + 16M
Álvaro Fernández Rojas [Thu, 15 Jun 2023 11:21:18 +0000 (13:21 +0200)]
bmips: bump LOADER_ENTRY to RAM + 16M

This is needed on devices like Sercomm AD1018 for booting recent kernels due
to bigger kernels.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 434434ca4748ba669176ce38b70a6525f90598b6)

17 months agobmips: add support for Actiontec R1000H
Daniel González Cabanelas [Tue, 13 Jun 2023 20:45:53 +0000 (22:45 +0200)]
bmips: add support for Actiontec R1000H

The  Actiontec R1000H is a gigabit wifi router, 2.4 GHz single band with
two external antennas. It comes with a coaxial HomePNA port.

Hardware:
 - SoC: Broadcom BCM6368
 - CPU: dual core BMIPS4350 V3.1 @400Mhz
 - RAM: 64 MB DDR
 - Flash: 32 MB parallel NOR
 - LAN switch: Broadcom BCM53115, 5x 1Gbit
 - LAN coaxial : 1x HPNA 3.1, CG3211 + CG3213
 - Wifi 2.4 GHz: Broadcom BCM4322 802.11bgn
 - USB: 1x 2.0
 - Buttons: 2x, 1 reset
 - LEDs: 7x
 - UART: yes

The HPNA hardware probably needs a firmware to make the coaxial port work.
In the OEM firmware, it's apparently sent with an utility (inhpna) through
the ethernet port.

Installation via CFE web UI:
  1. Connect the UART serial port.
  2. Power on the router and press enter at the console prompt to stop the
     bootloader.
  4. Browse to http://192.168.1.1 and upload the OpenWrt CFE firmware
  5. Wait a few minutes for it to finish

Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
(cherry picked from commit e1a55de7a7eafd40a4fab5f29153a1a3c3606818)

17 months agobcm63xx: switch to standard nand_do_upgrade
Álvaro Fernández Rojas [Thu, 15 Jun 2023 08:53:08 +0000 (10:53 +0200)]
bcm63xx: switch to standard nand_do_upgrade

Now that JFFS2 cleanmarkers are supported on the standard nand_do_upgrade
function we can start using it on bcm63xx.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from 60fc3bc9487cbda7092e1b926467b07ea041bc60)

17 months agobmips: switch to standard nand_do_upgrade
Álvaro Fernández Rojas [Thu, 15 Jun 2023 08:48:25 +0000 (10:48 +0200)]
bmips: switch to standard nand_do_upgrade

Now that JFFS2 cleanmarkers are supported on the standard nand_do_upgrade
function we can start using it on bmips.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from 464dfac049daecad145184f8c2dd4a46a7fdd37c)

17 months agobase-files: upgrade: nand: add JFFS2 cleanmarkers support
Álvaro Fernández Rojas [Thu, 15 Jun 2023 08:46:10 +0000 (10:46 +0200)]
base-files: upgrade: nand: add JFFS2 cleanmarkers support

Some Broadcom MIPS devices require JFFS2 cleanmarkers to be present on the
kernel partition or the bootloader will identify the partition as corrupt and
won't boot the kernel.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 434df8df549a4d709be9eb19c0d2bd8abb4d4881)

17 months agobcm63xx: fix NETGEAR DGND3700v2 boot loop
Álvaro Fernández Rojas [Wed, 14 Jun 2023 21:27:29 +0000 (23:27 +0200)]
bcm63xx: fix NETGEAR DGND3700v2 boot loop

The DGND3700v2 renames the cferam bootloader from cferam to cfeXXX, where XXX
is the number of firmware upgrades performed by the bootloader. Other bcm63xx
devices rename cferam.000 to cferam.XXX, but this device is special because
the cferam name isn't changed on the first firmware flashing but it's changed
on the subsequent ones.
Therefore, we need to look for "cfe" instead of "cferam" to properly detect
the cferam partition and fix the bootlop.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit cdfcac6e246de9f237d1425e498db3f34ddebbaf)

17 months agobmips: fix NETGEAR DGND3700v2 boot loop
Álvaro Fernández Rojas [Wed, 14 Jun 2023 21:23:14 +0000 (23:23 +0200)]
bmips: fix NETGEAR DGND3700v2 boot loop

The DGND3700v2 renames the cferam bootloader from cferam to cfeXXX, where XXX
is the number of firmware upgrades performed by the bootloader. Other bcm63xx
devices rename cferam.000 to cferam.XXX, but this device is special because
the cferam name isn't changed on the first firmware flashing but it's changed
on the subsequent ones.
Therefore, we need to look for "cfe" instead of "cferam" to properly detect
the cferam partition and fix the bootlop.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 915e914cfaa243ea36f8c7a4f0f045ec890304fa)

17 months agokernel: mtd: bcm-wfi: add cferam name support
Álvaro Fernández Rojas [Wed, 14 Jun 2023 21:21:34 +0000 (23:21 +0200)]
kernel: mtd: bcm-wfi: add cferam name support

Some devices rename cferam bootloader using specific patterns and don't follow
broadcom standards for renaming cferam files. This requires supporting
different cferam file names.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 8813edd8d9695d4e3939fdaa3c530c682f91de11)

17 months agosifiveu: add new target for SiFive U-based boards
Zoltan HERPAI [Sun, 16 Dec 2018 10:05:58 +0000 (11:05 +0100)]
sifiveu: add new target for SiFive U-based boards

RISC-V is a new CPU architecture aimed to be fully free and open. This
target will add support for it, based on 5.15.

Supports running on:
 - HiFive Unleashed - FU540, first generation
 - HiFive Unmatched - FU740, current latest generation, PCIe

SD-card images are generated, where the partitions are required to have
specific type codes. As it is commonplace nowadays, OpenSBI is used as the
first stage, with U-boot following as the proper bootloader.

Specifications:

HiFive Unleashed:
 - CPU: SiFive FU540 quad-core RISC-V (U54, RV64IMAFDC or RV64GC)
 - Memory: 8Gb
 - Ethernet: 1x 10/100/1000
 - Console: via microUSB

HiFive Unmatched:
 - CPU: SiFive FU740 quad-core RISC-V (U74, RV64IMAFDCB or RV64GCB)
 - Memory: 16Gb
 - Ethernet: 1x 10/100/1000
 - USB: 4x USB 3.2
 - PCIe:  - 1x PCIe Gen3 x8
          - 1x M.2 key M (PCIe x4)
          - 1x M.2 Key E (PCIe x1 / USB2.0)
 - Console: via microUSB

Installation:
Standard SD-card installation via dd-ing the generated image to
an SD-card of at least 256Mb.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
(cherry picked from commit a3469a90c47edd94daae6a23b810b74cd8389ce3)

17 months agouboot-sifiveu: add bootloader package for SiFive Ux40 boards
Zoltan HERPAI [Sun, 26 Jan 2020 22:46:18 +0000 (23:46 +0100)]
uboot-sifiveu: add bootloader package for SiFive Ux40 boards

Add new package for building bootloader for the SiFive U-series boards. Supported
boards at this stage are the HiFive Unleashed and HiFive Unmatched.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
(cherry picked from commit 91406797f9d06c0008f0a8c2c8455abfb37bf28c)

17 months agofirmware-utils: ptgen: add SiFive-related GUID types
Zoltan HERPAI [Sat, 23 Apr 2022 17:06:28 +0000 (19:06 +0200)]
firmware-utils: ptgen: add SiFive-related GUID types

Add patch until it gets accepted in firmware-utils upstream.

The SiFive RISC-V SoCs use two special partition types in the boot process.
As a first step, the ZSBL (zero-stage bootloader) in the CPU looks for a
partition with a GUID of 5B193300-FC78-40CD-8002-E86C45580B47 to load the
first-stage bootloader - which in OpenWrt's case is an SPL image. The FSBL
(SPL) then looks for a partition with a GUID of
2E54B353-1271-4842-806F-E436D6AF6985 to load the SSBL which is usually an
u-boot.

With ptgen already supporting GPT partition creation, add the required GUID
types and name them accordingly to be invoked with the '-T <GPT partition
type>' parameter.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
(cherry picked from commit 18238c442866a6ae93533e2421a6f44bc9e57ac6)

17 months agoopenssl: add linux-riscv64 into the targets list
Zoltan HERPAI [Wed, 15 May 2019 15:21:45 +0000 (17:21 +0200)]
openssl: add linux-riscv64 into the targets list

Add "linux-riscv64-openwrt" into openssl configurations to enable building
on riscv64.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
(cherry picked from commit a0840ecd5309921b62fcf5f563180ef8f955509e)

17 months agoopensbi: add package for RISC-V
Zoltan HERPAI [Sun, 26 Jan 2020 22:45:48 +0000 (23:45 +0100)]
opensbi: add package for RISC-V

OpenSBI is a form of a first-stage bootloader, which initializes
certain parts of an SoC and then passes on control to the second
stage bootloader i.e. an u-boot image.

We're introducing the package with release v1.2, which provides
SBI v0.3 and the SBI SRST extensions which helps to gracefully
reboot/shutdown various HiFive-U SoCs.

Tested on SiFive Unleashed and Unmatched boards.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
(cherry picked from commit 944b13b3ee1d89e11a0121fbeeaa465ab1e25c3c)

17 months agogeneric: groundwork for RISC-V
Zoltan HERPAI [Sun, 16 Dec 2018 09:45:53 +0000 (10:45 +0100)]
generic: groundwork for RISC-V

Add build infrastructure for RISC-V.

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
(cherry picked from commit 50c05f6cd721130701cbbc77a75d2e090259c4e5)

17 months agouboot-armsr: add support for QEMU armv7/armv8
Petr Štetiar [Fri, 2 Jun 2023 11:48:38 +0000 (13:48 +0200)]
uboot-armsr: add support for QEMU armv7/armv8

Add new package so we can use self-compiled bootloader during QEMU based
testing and development.

Backported fix[1] is needed for EFI boot from virtio devices.

1. https://patchwork.ozlabs.org/project/uboot/patch/20230424134946.v10.7.Ia5f5e39c882ac22b5f71c4d576941b34e868eeba@changeid/

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit b8e3fa2d1205213c71bc356744e9bed6cd8e69f9)

17 months agou-boot.mk: add support for config customization
Petr Štetiar [Fri, 2 Jun 2023 11:54:20 +0000 (13:54 +0200)]
u-boot.mk: add support for config customization

Make it possible to easily customize U-Boot config options via new
`UBOOT_CUSTOMIZE_CONFIG` variable, so we don't need to patch config
files or override config step with shell hackery.

This generic approach uses `config` CLI to tweak the .config as needed,
for example:

 UBOOT_CUSTOMIZE_CONFIG := \
--enable CMD_EFIDEBUG \
--enable CMD_BOOTMENU \
--enable AUTOBOOT \
--enable AUTOBOOT_MENU_SHOW \
--disable AUTOBOOT_KEYED \
--disable AUTOBOOT_USE_MENUKEY \
--disable BOOTMENU_DISABLE_UBOOT_CONSOLE \
--set-val BOOTDELAY 2

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 186b97590b9b2f47abc535c9df0687e00e60f78e)

17 months agoCI: change armvirt reference to armsr
Mathew McBride [Fri, 9 Jun 2023 03:57:52 +0000 (03:57 +0000)]
CI: change armvirt reference to armsr

The armvirt target has been renamed to armsr.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 3df01b1aa40a8e783dbbebdbe6088a49aed186f8)

17 months agoscripts: qemustart: change armvirt references to armsr
Mathew McBride [Fri, 9 Jun 2023 02:19:40 +0000 (02:19 +0000)]
scripts: qemustart: change armvirt references to armsr

The armvirt target has been renamed to 'armsr' (Arm SystemReady)
after inclusion of EFI support.
Change references (including subtargets) accordingly.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 36bf9d861082d30fdb1cf1d00f819e60b8bb84a7)

17 months agowolfssl: change armvirt reference to armsr
Mathew McBride [Tue, 6 Jun 2023 23:24:18 +0000 (23:24 +0000)]
wolfssl: change armvirt reference to armsr

armvirt target has been renamed to armsr (Arm SystemReady).

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 203deef82cdcb2c4deb01e2a4cee62a600723320)

17 months agokernel: netdevices: change armvirt references to armsr
Mathew McBride [Tue, 6 Jun 2023 23:23:33 +0000 (23:23 +0000)]
kernel: netdevices: change armvirt references to armsr

armvirt target has been renamed to armsr (Arm SystemReady)

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit c0bcfde58e751d674adfac51944df9e20ab978e4)

17 months agogrub2: change armvirt reference to armsr
Mathew McBride [Tue, 6 Jun 2023 23:22:36 +0000 (23:22 +0000)]
grub2: change armvirt reference to armsr

The armvirt target has been renamed to armsr (Arm SystemReady),
so the GRUB configuration also needs to change.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 4ce7d6c8885a0e1873011f8f48b67e2ecd18e43d)

17 months agoconfig: change references from armvirt to armsr
Mathew McBride [Tue, 6 Jun 2023 23:22:01 +0000 (23:22 +0000)]
config: change references from armvirt to armsr

armvirt target has been renamed to armsr (Arm SystemReady),
so the config defaults need to be changed as well.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 40ce6a7920a8f56d07228795a526576a8762aead)

17 months agoarmsr: rename from armvirt
Mathew McBride [Fri, 9 Jun 2023 00:43:33 +0000 (00:43 +0000)]
armsr: rename from armvirt

Now that the armvirt target supports real hardware, not just
VMs, thanks to the addition of EFI, rename it to something
more appropriate.

'armsr' (Arm SystemReady) was chosen after the name of
the Arm standards program.

The 32 and 64 bit targets have also been renamed
armv7 and armv8 respectively, to allow future profiles
where required (such as armv9).

See https://developer.arm.com/documentation/102858/0100/Introduction
for more information.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05 version of commit 40b02a230167626def69389452f19b7109aaeac1)

17 months agokernel: kmod-amazon-ena: move to top level netdevices
Mathew McBride [Wed, 5 Oct 2022 01:40:22 +0000 (12:40 +1100)]
kernel: kmod-amazon-ena: move to top level netdevices

The Amazon ENA network devices are also used on the
AWS Arm (Graviton) instance types, so move it from
the x86-only module file to the top level netdevices.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 3a7c8fd15e89237c8c9db62393d057f3a47429d2)

17 months agoarmvirt: 64: disable CONFIG_SMC91X
Mathew McBride [Mon, 13 Feb 2023 06:51:26 +0000 (06:51 +0000)]
armvirt: 64: disable CONFIG_SMC91X

The SMC91X family is a ISA-age Ethernet controller.
I'm not particularly sure what it's doing in armvirt/64,
as it's unlikely there is a QEMU or real hardware configuration
that exists with it.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05/5.15 version of commit 214e94cddf1bfd4e6141f79a70f532267fe1bea0)

17 months agoarmvirt: base-files: add tty0 to inittab
Mathew McBride [Mon, 5 Sep 2022 06:56:49 +0000 (16:56 +1000)]
armvirt: base-files: add tty0 to inittab

tty0 is the default console for devices with screens/framebuffers.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit e41b82f619ca02f427f34ae439d4584ab441e245)

17 months agoarmvirt: config changes required for framebuffer console
Mathew McBride [Mon, 5 Sep 2022 06:55:02 +0000 (16:55 +1000)]
armvirt: config changes required for framebuffer console

These Kconfig options are required to get a screen console
working with the VMware Fusion ARM (Apple Silicon) preview.
They are likely to be the same for other Arm standard
"desktop" hardware that may emerge.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05/5.15 version of 83f564f7464c34c7713b20b61007b24b217f0b88)

17 months agoarmvirt: package and select Rockchip DWMAC Ethernet driver
Mathew McBride [Tue, 18 Apr 2023 03:34:23 +0000 (03:34 +0000)]
armvirt: package and select Rockchip DWMAC Ethernet driver

For devices that implement the "rockchip,*-gmac" compatible controller,
including:
- RK3328
- RK3399
- RK3568
- RK3588
- PX30

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit abbffe55ddded36d2a4d0eee6e96c742eaffbbd2)

17 months agoarmvirt: 64: add Allwinner A3/A83T/A64 (sun8i family) Ethernet
Mathew McBride [Mon, 20 Mar 2023 02:53:31 +0000 (02:53 +0000)]
armvirt: 64: add Allwinner A3/A83T/A64 (sun8i family) Ethernet

Add support for the dwmac (stmmac) variant used by Allwinner
Arm64 boards.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 847467a5729995a98aa34329f6fa0ed4cb79d210)

17 months agokernel: modules: fix mdio-bus-mux description
Luiz Angelo Daros de Luca [Fri, 9 Jun 2023 02:41:54 +0000 (23:41 -0300)]
kernel: modules: fix mdio-bus-mux description

Simple error during copy/paste

Fixes: 2dbeb607251b ("kernel: add mdio-bus-mux support")
Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
(cherry picked from commit 1e4bc13eaa3fdba897ca1721b2bfe9f2dbb30770)

17 months agoarmvirt: 64: add Marvell (formerly Cavium) ThunderX series network driver
Mathew McBride [Sat, 11 Feb 2023 03:58:09 +0000 (03:58 +0000)]
armvirt: 64: add Marvell (formerly Cavium) ThunderX series network driver

Based on working configuration supplied by Anton Antonov.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 5d2a5f739840caa6e72b5c907d355f6aaca227d4)

17 months agoarmvirt: 64: Add storage support for qemu-sbsa platform
Anton Antonov [Thu, 22 Dec 2022 12:01:59 +0000 (12:01 +0000)]
armvirt: 64: Add storage support for qemu-sbsa platform

Enable SATA support, which is used by the Server Base
System Architecture reference board[1].

Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
Signed-off-by: Mathew McBride <matt@traverse.com.au>
[1] - https://qemu.readthedocs.io/en/latest/system/arm/sbsa.html
(23.05/5.15 version of 26905c96124af10a795167509116252e9357baea)

17 months agoarmvirt: 64: Add NXP i.MX 8M Mini/Nano/Quad/Plus EVK support
Anton Antonov [Thu, 22 Dec 2022 12:00:12 +0000 (12:00 +0000)]
armvirt: 64: Add NXP i.MX 8M Mini/Nano/Quad/Plus EVK support

Also includes Advantech RSB-3720 (iMX8 Plus) support.

Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
Signed-off-by: Mathew McBride <matt@traverse.com.au>
[Re-sort into kernel config, move network into modules]
(23.05/5.15 version of commit 3efb3b801bb1393897ff58b9af3753157f28f441)

17 months agoarmvirt: 64: add support for other SystemReady-compatible vendors
Mathew McBride [Fri, 15 Jul 2022 02:38:02 +0000 (02:38 +0000)]
armvirt: 64: add support for other SystemReady-compatible vendors

These changes are to support other vendors that have SystemReady/EFI
support, including:
* Marvell Armada
** (This is speculative as I don't have a machine of my own to test)
* Amazon Graviton (tested bare-metal and virtualized instances)
* VMware (Fusion for ARM Mac preview)
* NXP/Freescale (Layerscape series not already selected)
* HiSilicon
* Allwinner/sunxi
* Rockchip (untested, options taken from arm64 defconfig)

To give an idea of the hardware certified for SystemReady,
see
https://www.arm.com/architecture/system-architectures/systemready-certification-program/ir
and
https://www.arm.com/architecture/system-architectures/systemready-certification-program/es

Other vendors that _should_ work include Marvell Octeon 10
and Ampere. I understand these systems should work
"out of the box" in ACPI mode but may require other drivers
(e.g PCIe NICs and storage controllers).

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05/5.15 version of c3151b6f04579a937b7cb166bbeff0d0ee539946)

17 months agoarmvirt: add options and driver modules for NXP Layerscape DPAA2 platform
Mathew McBride [Fri, 10 Jun 2022 05:57:03 +0000 (05:57 +0000)]
armvirt: add options and driver modules for NXP Layerscape DPAA2 platform

Tested with a Traverse Technologies Ten64 (LS1088A) board.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05/5.15 version of commit 54bb95f879aaa62c4253d30390e77bc8180f4ed7)

17 months agoarmvirt: add 5.15 patches for NXP DPAA2 platform
Mathew McBride [Fri, 15 Jul 2022 02:47:52 +0000 (02:47 +0000)]
armvirt: add 5.15 patches for NXP DPAA2 platform

This fixes an issue with NXP's DPAA2 platforms (LS1088/2088/LX2160)
* A deadlock issue when attempting to detach the SFP management from
  a PHY interface (e.g when trying to reboot). These issues were fixed
  in kernel 6.2[1], but it's version does not cleanly apply onto 5.15.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
[1] - see patch series "Fix rtnl_mutex deadlock with DPAA2 and SFP modules",
https://patchwork.kernel.org/project/netdevbpf/cover/20221129141221.872653-1-vladimir.oltean@nxp.com/

17 months agoarmvirt: add ACPI support
Mathew McBride [Thu, 9 Jun 2022 04:51:59 +0000 (04:51 +0000)]
armvirt: add ACPI support

ACPI support is required for Arm 'SystemReady' server and workstation
systems (and as an option on embedded platforms).

These config changes allow OpenWrt to boot in a QEMU virtual machine
with a UEFI/EDKII 'BIOS', but with no other hardware enabled yet.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05/5.15 version of cb3bbbf00cfb465de3333e4b84e8da9138985595)

17 months agobuild: enable vmdk/vmware images for arm64 target
Mathew McBride [Wed, 12 Jan 2022 05:53:55 +0000 (05:53 +0000)]
build: enable vmdk/vmware images for arm64 target

This is useful for VMware's ARM64 products, e.g Fusion for M1/ARM Macs.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit f899e0e024825861e129b0e8fbfb31c1d614273a)

17 months agobuild: use 128MiB as the boot/kernel partition size on armvirt target
Mathew McBride [Tue, 1 Jun 2021 01:48:25 +0000 (01:48 +0000)]
build: use 128MiB as the boot/kernel partition size on armvirt target

The nominal partition type for EFI boot partitions is FAT32,
which has a minimum size of 32MiB on a 512-byte-sector block device.

To ensure that the boot partition is created as FAT32 set a size
well above this minimum.

A useful discussion about EFI partition sizes can be found here:
https://superuser.com/questions/1310927/what-is-the-absolute-minimum-size-a-uefi-system-partition-can-be

I have found 128MiB works pretty consistently across both
tools (mkfs.fat) and firmwares (EDKII)

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 71e56b2ff1e8aeb3205784c0b5f8ca6ba0fbbf63)

17 months agoarmvirt: remove model name override
Mathew McBride [Mon, 24 Jan 2022 23:16:56 +0000 (23:16 +0000)]
armvirt: remove model name override

Now that armvirt has been expanded to boot on more generic
ARM machines, remove the board and model name override.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 3d99314569a059a1d5e015086e534b3e04ff2097)

17 months agoarmvirt: set kernel partition as the EFI system partition
Mathew McBride [Thu, 20 Apr 2023 06:38:22 +0000 (06:38 +0000)]
armvirt: set kernel partition as the EFI system partition

U-Boot with EFI boot manager functionality will store
EFI boot order data on the ESP in the ubootefi.var file.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 9a76b99c1bd781248c18d69abe570f35932db8a3)

17 months agoscripts: gen_image_generic: allow the partition types to be set
Mathew McBride [Thu, 20 Apr 2023 06:36:50 +0000 (06:36 +0000)]
scripts: gen_image_generic: allow the partition types to be set

The use case for this is to set the kernel partition as the
EFI system partition. Versions of U-Boot with the
EFI boot manager (eficonfig and efidebug commands) will
store their boot order data on the ESP.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 701d774f54aef2f9fe3c584700773dcb260dd03c)

17 months agogrub2: enable EFI for armvirt
Mathew McBride [Wed, 24 Feb 2021 04:53:40 +0000 (04:53 +0000)]
grub2: enable EFI for armvirt

This adds a separate package for EFI on Arm SystemReady
compatible machines. 32-bit Arm UEFI is supported as well.

It is very similar to x86-64 EFI setup, without the
need for BIOS backward compatibility and slightly
different default modules.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 8f29b1573ddf3b7ed7c53bee1a7d55e574806205)

17 months agoarmvirt: update README with new image names
Mathew McBride [Wed, 19 Jan 2022 03:24:45 +0000 (03:24 +0000)]
armvirt: update README with new image names

The introduction of EFI support has changed how armvirt
images are generated. The kernel and filesystem binaries
can still be used as before with QEMU directly.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(cherry picked from commit 97c5d317f59e071c9f691add5748a74a75665038)

17 months agoarmvirt: disable LD dead code elimination on ARM32
Mathew McBride [Wed, 28 Sep 2022 05:47:30 +0000 (15:47 +1000)]
armvirt: disable LD dead code elimination on ARM32

This interferes with the generation of the EFI stub section for
ARM32. As this target is not size constrained, disable the dead code
data elimination hack.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05 version of eb0e61285d4da910317e082de559337a305fa1dc)

17 months agoarmvirt: add EFI support
Mathew McBride [Wed, 19 Jan 2022 02:25:23 +0000 (02:25 +0000)]
armvirt: add EFI support

EFI booting is used on newer machines compatible with the
Arm SystemReady specifications.

This commit restructures armvirt into a more 'generic'
target similar to x86.

See https://github.com/openwrt/openwrt/pull/4956
for a history of this port.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05 version of e0f06ddc23b2503a1791ae7e97b02e2647e8a70d)

17 months agoipq807x: image: fix eMMC flashing/recovery from within initramfs
Petr Štetiar [Mon, 5 Jun 2023 12:10:44 +0000 (14:10 +0200)]
ipq807x: image: fix eMMC flashing/recovery from within initramfs

Having initramfs image built with same config as on buildbots:

 CONFIG_TARGET_MULTI_PROFILE=y
 CONFIG_TARGET_ALL_PROFILES=y
 CONFIG_TARGET_PER_DEVICE_ROOTFS=y

Its currently impossible to flash/recover the device using that image as
losetup is missing:

 root@OpenWrt:/# sysupgrade -v /tmp/openwrt-ipq807x-generic-prpl_haze-squashfs-sysupgrade.bin
 ...
 /lib/upgrade/do_stage2: line 38: losetup: not found
 Failed to detach all loop devices. Skip this try.

So lets fix it by including the needed utils for sysupgrade in
DEFAULT_PACKAGES set.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 07fe8bc62a866e78e131c3f63a08554a94e931f8)

17 months agoipq807x: add initial support for prpl Foundation Haze board
Petr Štetiar [Mon, 5 Jun 2023 10:13:04 +0000 (12:13 +0200)]
ipq807x: add initial support for prpl Foundation Haze board

Haze is prpl Foundation's reference board (WNC LVRP).

Board info:

 - IPQ8072A SoC
 - 2 GiB RAM
 - 4 GiB eMMC
 - 8MiB SPI NOR (MX25U6435F)

 - 3x 1GigE ports (QCA8075)
 - 1x 10GigE port (AQR113C)
 - 1x SFP cage

 - WiFi 6GHz 160MHz (QCN9074)
 - WiFi 5GHz 80+80MHz (QCN5054)
 - WiFi 2.4G (QCN5024)

 - ARM Standard 20-pin 2.54mm/0.1" JTAG (1V8 !!!)
 - Bluetooth v5.0 + EDR with integrated Class 1 PA (CYW20704)
 - 1x M.2 B-key socket with PCIe 3.0
 - 1x USB 3.0 port
 - UART marked J6 is 4-pin 2.54mm/0.1" connector 3V3(arrow),RX,TX,GND (115200 8N1)
 - Reset and WPS buttons

Flashing instructions:

 1. From U-Boot boot OpenWrt using initramfs image:

    IPQ807x# tftpboot openwrt-ipq807x-generic-prpl_haze-initramfs-uImage.itb && bootm

 2. In OpenWrt running from initramfs execute sysupgrade:

    root@OpenWrt:/# sysupgrade -n /tmp/openwrt-ipq807x-generic-prpl_haze-squashfs-sysupgrade.bin

Work in progress/known issues:

 * SFP feature not implemented/tested
 * M.2 feature not implemented/tested
 * Bluetooth feature not implemented/tested
 * 6GHz wireless should be working, but not tested
 * MAC address assigments for LAN interfaces

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 2e910039dd7170fd28641e7686c376dba6f0d8a5)

17 months agoipq-wifi: update to version 2023-06-03
Petr Štetiar [Mon, 5 Jun 2023 10:06:41 +0000 (12:06 +0200)]
ipq-wifi: update to version 2023-06-03

Contains following updates:

 * ipq8074: update RegDB in new submitted BDF
 * Revert "ipq8074: update RegDB in new submitted BDF"
 * qcn9074: update RegDB in new submitted BDF
 * ipq8074: update RegDB in new submitted BDF
 * qca-wireless: ipq40xx: add BDFs for ZTE MF287+
 * Add BDFs for prpl Foundation Haze board

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit c2bb9f055b252f167d58540bddb9e5e9586fa986)

17 months agoipq-wifi: bump to latest git HEAD
Antti Nykänen [Thu, 25 May 2023 06:43:46 +0000 (09:43 +0300)]
ipq-wifi: bump to latest git HEAD

0f73d32 ipq8074: update RegDB in new submitted BDF
a4cd21f ipq8074: add Compex WPQ873 BDF
c888dd0 qca-wireless: ipq40xx: Add BDFs for Eero Cento
6388ba9 ipq8074: update regdb for Netgear SXK80 BDF
77775d2 ipq8074: add Netgear SXK80

Signed-off-by: Antti Nykänen <antti.nykanen@nokia.com>
(cherry picked from commit 86e7614e0deb5e97083103600b045833c6517c6b)

17 months agoipq807x: image: cleanup unused variables
Petr Štetiar [Tue, 30 May 2023 14:31:39 +0000 (16:31 +0200)]
ipq807x: image: cleanup unused variables

BLOCKSIZE and PAGESIZE seems to be unused on qnap_301w and zyxel_nbg7815
device which use eMMC storage.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit fdea7cb61776192ddb808a639af0a585d5b01b5b)

17 months agotools/coreutils: rename list of installed programs
Michael Pratt [Tue, 30 May 2023 09:22:54 +0000 (05:22 -0400)]
tools/coreutils: rename list of installed programs

Rename the list of programs installed by coreutils
to PKG_PROGRAMS, which will create a stampfile for each
through a new feature in host-build.mk.

Also, cleanup a bit to save lines
regarding the usage of this list.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit 14a85d929b4a0a728dc4390ad34dcf8d69ac3475)

17 months agotools/findutils: define list of installed programs
Michael Pratt [Tue, 30 May 2023 09:43:00 +0000 (05:43 -0400)]
tools/findutils: define list of installed programs

Define the variable PKG_PROGRAMS for the list
of programs installed by findutils,
which will create a stampfile for each
through a new feature in host-build.mk.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit 04053e3f2050b6ea2cdb83c0956034e5fd368d10)

17 months agohost-build: add support for a stampfile per installed binary
Michael Pratt [Tue, 30 May 2023 11:20:19 +0000 (07:20 -0400)]
host-build: add support for a stampfile per installed binary

Some individual build items install a group of programs
instead of a program matching the name of the build item.

Add support for installing stampfiles for each of the
programs installed by that build item,
which will allow more control and awareness
of what is installed by the rest of the build system,
if, for example, prereq symlink checks are looking
for the same program which is built already.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit 84f7a45e9e83339d84bcc15f06259b1064cb961a)

17 months agoprereq-build: replace relative symlinks only if broken
Michael Pratt [Mon, 29 May 2023 09:38:33 +0000 (05:38 -0400)]
prereq-build: replace relative symlinks only if broken

Some programs installed to staging_dir/host/bin
also install some symlinks to itself
for an alternative name.

Some of those new symlinks are overwriting
symlinks that were installed by prereq stage.

If prereq stage were to somehow be run again,
it should not be overwriting symlinks
that point to programs that are already built.

To filter that out, catch all symlinks
after first catching all symlinks
that have an absolute target
after all other cases in the case statement,
make sure it is not broken, and if so exit successfully.

Suggested-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit b890e2fbf9211648ad4a74f3e8b47bbf04a3cc7a)

17 months agoprereq-build: do not replace binaries with symlinks
Michael Pratt [Sat, 27 May 2023 21:11:47 +0000 (17:11 -0400)]
prereq-build: do not replace binaries with symlinks

Some programs, like bash and patch, are checked by prereq stage
and have a symlink installed, but then is later built from source.

Now that the prereq-build checks are not successful
just by finding the file alone, it is possible for
a new symlink to overwrite the installed binary.

If a normal file is found in staging_dir/host/bin,
let the check look for the associated stampfile, and if found,
skip creation of a symlink and exit successfully.

Suggested-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit 729909c07fae4201591e51895833112cb88485e1)

17 months agoprereq-build: fix inconsistent value of $PATH
Michael Pratt [Thu, 25 May 2023 06:31:52 +0000 (02:31 -0400)]
prereq-build: fix inconsistent value of $PATH

In the recipe SetupHostCommand for checking
and creating symlinks, $PATH was only overridden
for one of several commands.

This causes the symlinks to be included
in the paths to pick a program from
when the check was repeated, because
staging_dir/host/bin was included in $PATH,
but only *sometimes*.

When the check ran again, the command succeded
with a $PATH including the symlink,
(eval "$$$$$$$$cmd")
while the path to the program was evaluated
with a $PATH NOT including the symlink,
(bin=...)
causing the symlink to be relinked incorrectly,
instead of passing as exactly the same.

Coincidentally, this was only a problem
if the symlink targeted the alternative
program with a different name.

By overriding the value of $PATH at the invocation of Make,
it will apply to the entire environment of the checks.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit 665fe2f818300f0b84c8c458fc49ae58ff8853aa)

17 months agotreewide: add ORIG_PATH variable
Michael Pratt [Thu, 25 May 2023 06:31:17 +0000 (02:31 -0400)]
treewide: add ORIG_PATH variable

Add a variable that stores the original value of $PATH
in the host system's shell, before Make alters it.

This can be useful for when it is necessary
to ignore symlinks and programs made by the build system.

Define this new variable before all instances of
'export PATH:=' or similar.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit d87a8aa148ddf93b199a759deb088fff73787025)

17 months agoipq807x: image: factor out common eMMC bits
Petr Štetiar [Tue, 30 May 2023 14:36:05 +0000 (16:36 +0200)]
ipq807x: image: factor out common eMMC bits

For better maintainability and reusability.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit a9be186466fdb4987c158916781d99329d1c3712)

17 months agoqca-nss-dp: fix oops in nss_dp_probe
Petr Štetiar [Mon, 29 May 2023 17:27:15 +0000 (19:27 +0200)]
qca-nss-dp: fix oops in nss_dp_probe

Currently kernel crashes when of_phy_connect has issues:

 Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000308
 ...
 pc : phy_attached_print+0x28/0x1b0
 lr : phy_attached_info+0x14/0x20
 ...
 Call trace:
  phy_attached_print+0x28/0x1b0
  phy_attached_info+0x14/0x20
  nss_dp_adjust_link+0x544/0x6c4 [qca_nss_dp]

of_phy_connect returns either pointer or NULL, so can't be checked with
IS_ERR macro.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 38c7cf0e69aeefdec44d513307732e4daf7d9794)

17 months agolibubox: update to the latest version
Felix Fietkau [Wed, 24 May 2023 08:21:23 +0000 (10:21 +0200)]
libubox: update to the latest version

b09b316aeaf6 blobmsg: add blobmsg_parse_attr function
eac92a4d5d82 blobmsg: add blobmsg_parse_array_attr
ef5e8e38bd38 usock: fix poll return code check
6fc29d1c4292 jshn.sh: Add pretty-printing to json_dump
5893cf78da40 blobmsg: Don't do at run-time what can be done at compile-time
362951a2d96e uloop: fix uloop_run_timeout
75a3b870cace uloop: add support for integrating with a different event loop

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit b6e0a24c492537e5bbfa015e2a3638ccc53c164b)

17 months agounetd: update to the latest version
Felix Fietkau [Sun, 4 Jun 2023 14:54:19 +0000 (16:54 +0200)]
unetd: update to the latest version

412d03012f13 network: prevent adding endpoint routes for addresses on the network
faaf9cee6ef4 utils: fix ipv4 checksum issue
0e1c2fad3540 pex-msg: fix memory leak on fread fail in pex_msg_update_request_init
51be0ed659d0 host: fix crash parsing gateway when no endpoint is specified
ca17601dc24e wg-linux: add support for splitting netlink messages for allowed ips
7d3986b7a5a2 wg-linux: increase default messages size

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit 7b1e8983365746876034534ef22004d423c390e0)

17 months agomac80211: ath11k: sync with ath-next
Robert Marko [Fri, 2 Jun 2023 12:12:01 +0000 (14:12 +0200)]
mac80211: ath11k: sync with ath-next

Synchronize the ath11k backports with the current ath-next tree.

This introduces support for MBSSID and EMA, adds factory test mode and
some new HTT stats.

Tested-by: Francisco G Luna <frangonlun@gmail.com>
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit acde5271a68835f51185aae1b11343439a9d4cab)