918 Commits

Author SHA1 Message Date
John Audia
9944b3454c kernel: bump 6.12 to 6.12.82
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.82

Removed upstreamed:
 generic/pending-6.12/360-Revert-MIPS-mm-kmalloc-tlb_vpn-array-to-avoid-stack-.patch[1,2]
 generic/pending-6.12/361-Revert-MIPS-mm-Prevent-a-TLB-shutdown-on-initial-uni.patch[3]

All other patches automatically rebased via update_kernel.sh

Upstream fixed booting the RealTek MIPS 4KEc SoCs. The reverts are not
needed any more.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.82&id=16a49e3fda339aa552cde7f2cdbb25b91426cb8a
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.82&id=497f7f97894684b62a86201953ca028a3836e48e
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.82&id=d937204d13f9a25b559b7fb94faf178640fb6af5

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/22913
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-30 01:31:44 +02:00
Rosen Penev
669a7375a6 treewide: use _scoped for loop
Avoids refcount problems and slightly simplifies code.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21176
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-16 21:17:43 +02:00
Brian Norris
a94c020f38 chromium: Add #{address,size}-cells to /firmware
Commit b4d7263bc3b6 ("kernel: of: avoid some unnecessary bad cell count
warnings") backported Linux commit 6e5773d52f4a ("of/address: Fix WARN
when attempting translating non-translatable addresses"), which started
requiring #address-cells for a device's parent if we want to use the
reg resource in a device node.

Many Chromium devices use a /firmware/coreboot device node that is
patched in by the boot firmware. These structures look something like:

  # find /sys/firmware/devicetree/base/firmware/
  /sys/firmware/devicetree/base/firmware/
  /sys/firmware/devicetree/base/firmware/scm
  /sys/firmware/devicetree/base/firmware/scm/compatible
  /sys/firmware/devicetree/base/firmware/scm/name
  /sys/firmware/devicetree/base/firmware/ranges
  /sys/firmware/devicetree/base/firmware/chromeos
  /sys/firmware/devicetree/base/firmware/chromeos/fmap-offset
  /sys/firmware/devicetree/base/firmware/chromeos/compatible
  /sys/firmware/devicetree/base/firmware/chromeos/readonly-firmware-version
  /sys/firmware/devicetree/base/firmware/chromeos/nonvolatile-context-storage
  /sys/firmware/devicetree/base/firmware/chromeos/hardware-id
  /sys/firmware/devicetree/base/firmware/chromeos/firmware-type
  /sys/firmware/devicetree/base/firmware/chromeos/vboot-shared-data
  /sys/firmware/devicetree/base/firmware/chromeos/nonvolatile-context-offset
  /sys/firmware/devicetree/base/firmware/chromeos/firmware-version
  /sys/firmware/devicetree/base/firmware/chromeos/nonvolatile-context-size
  /sys/firmware/devicetree/base/firmware/chromeos/name
  /sys/firmware/devicetree/base/firmware/coreboot
  /sys/firmware/devicetree/base/firmware/coreboot/compatible
  /sys/firmware/devicetree/base/firmware/coreboot/board-id
  /sys/firmware/devicetree/base/firmware/coreboot/reg
  /sys/firmware/devicetree/base/firmware/coreboot/name
  /sys/firmware/devicetree/base/firmware/name

Notably, there is no #{address,size}-cells in /firmware.

This breaks any driver relying on a device under /firmware, such as the
coreboot_table driver.

This is technically an ill-formatted FDT, and so we might as well just
add the properties ourselves.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22951
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-16 14:18:45 +02:00
Rosen Penev
0bcc77d530 ipq40xx: avoid randomized MAC address on boot
In cases where an nvmem definition is applied to the switch ports,
change to apply to the root gmac so that a randomized MAC address does
not get set.

Also remove the aliases. Since nvmem is used, we don't care about the
bootloader.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22857
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-11 12:16:02 +02:00
Shiji Yang
c3109a565c kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic
This symbol is selected by CONFIG_BPF, which was already enabled
on generic config-6.12.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-06 01:38:41 +02:00
Shiji Yang
499886de05 kernel: enable CRYPTO_RNG2 and CRYPTO_SIG2 by default
These two symbols are selected by CONFIG_CRYPTO_MANAGER2[1-2], which
was already enabled on generic config-{6.12,6.18}.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=fb28fabfad332a731423ffdd2be122b73ea90f1e
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=6cb8815f41a966b217c0d9826c592254d72dcc31
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-06 01:38:41 +02:00
Robert Marko
dad9df16ee ipq40xx: refresh patches
It seems that a refresh is needed after the MXL DSA driver update.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-04-01 13:25:22 +02:00
Paweł Owoc
598b90107e treewide: linksys: remove unnecessary properties
Remove unnecessary properties as there is no
reg property in child node.

Signed-off-by: Paweł Owoc <frut3k7@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22592
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-30 19:35:41 +02:00
Daniel Golle
27568d21d3 kernel: add DSA driver for MaxLinear MxL862xx switches
Backport upstream driver and apply pending downstream patches to
support using the MaxLinear MxL86252 and MxL86282 switches.

The driver supports a native proprietary 8-byte DSA special tag format
(mxl862xx) as well as using an 802.1Q-based DSA tag (mxl862xx-8021q).

All basic bridge, VLAN and LAG operations are supported. A single port
can be used as mirror port. Hardware counters are made available as
ethtool stats or directly serve as interface counters (bytes,
packets).

The switch runs a complex ZephyrOS-based firmware on an integrated
ARC microcontroller, the driver uses the firmware management API over
MDIO to interact with the switch hardware.

Note that the firmware needs to be rather recent (WSP 1.0.78 or later)
to work well with this driver. It can be updated at runtime using devlink.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-03-27 15:49:23 +00:00
Anthony Sepa
52063ff831 ipq40xx: fix art partition name WHW03 V1
In the blamed commit, the wrong partition name for ART was used.

It was later discovered that the partition table uses "0:ART" instead of
"art" for the ART partition name thus breaking caldata extraction.

So, fix the partition name.

Fixes: ee5999cf78d8 ("treewide: linksys: use nvmem MAC for hw_mac_addr")
Signed-off-by: Anthony Sepa <protectivedad@gmail.com>
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-25 21:13:43 +01:00
Bee Cadorna
51f82c452f ipq40xx: enable LP5521 driver for TP-Link Deco M5
TP-Link Deco M5 v1 and v2 models use a separate LP5521 controller to
control the LEDs on the device.

Signed-off-by: Bee Cadorna <r3usrlnd@gmail.com>
Tested-by: Tan Li Boon <undisputed.seraphim@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17537
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-25 10:31:58 +01:00
Bee Cadorna
c60be6e983 ipq40xx: add support for TP-Link Deco-M5
Specifications
--------------
- SoC          : Qualcomm IPQ4019
- RAM          : 256 MiB DDR3-1600 (NT5CC128M16IP)
- Flash        : 32 MiB SPI NOR
  - V1, V2     : GigaDevice GD25Q256C
  - V3         : Winbond W25Q256FV, Micron N25Q128A11
  - V320       : EON EN25QH256, XMC XM25QH256BK (with patch included)
- WLAN         : IPQ4019 On-chip
  - 2.4 GHz    : 2x2 MIMO 802.11b/g/n
  - 5 GHz      : 2x2 MIMO 802.11n/ac
- Ethernet     : QCA8072 10/100/1000BASE-T 1x WAN; 1x LAN
- UART         : 3v3 115200n, use pins under heatsink
- Buttons      : 1x Reset
- LEDs         : 1x Combined RGB LED
  - V1         : Driven by LP5521 channels (Channel 0, 1, 2?)
  - V3, V320   : Driven by GPIO Pins (Pin 28, 32, 35 Active Low)
- Bluetooth    :
  - V1, V2, V3 : CSR8811
  - V320       : AC6368A/B
- Power        : DC 12V @ 1.2A
- FCC ID       :
  - V1         : TE7M5
  - V3         : TE7M5V3
  - V320       : TE7M5V32, 2AXJ4M5V3, 2BCGWM5V3
- TFTP ID      :
  - Client     : 192.168.0.66
  - Router     : 192.168.0.11

MAC Addresses
-------------
Label   : OPAQUE partition @ 0x0008
LAN     : Label
WAN     : Label + 1
WLAN 2G : Label + 2
WLAN 5G : Label + 3

Installation
------------
1. Install TFTP server software
2. Rename the factory image to 'M5v1_tp_recovery.bin' and copy it into
   the TFTP folder
3. Connect an interface configured to 192.168.0.66/24 to the LAN port
   - Note: The LAN port is the ethernet port that is furthest away from
     the power plug
4. Press the 'reset' button down before powering up the device, holding
   for at least 10 seconds
5. Router should download the factory image, install it, and then reboot
6. Router will start up with address 192.168.1.1

Known Issues
------------
- Some devices (including some V1 and V2 devices) may have flash chips
  that are not detected, supported by, or have broken SFDP support

Signed-off-by: Bee Cadorna <r3usrlnd@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17537
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-25 10:31:58 +01:00
John Audia
d0784a69dd kernel: bump 6.12 to 6.12.75
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.75

Removed upstream:
  bcm27xx/patches-6.12/950-0225-media-i2c-ov5647-Correct-pixel-array-offset.patch[1]
  bcm27xx/patches-6.12/950-0226-media-i2c-ov5647-Correct-minimum-VBLANK-value.patch[2]
  bcm27xx/patches-6.12/950-0248-media-i2c-ov5647-Sensor-should-report-RAW-color-spac.patch[3]
  qualcommax/patches-6.12/0074-v6.20-clk-qcom-gcc-ipq5018-flag-sleep-clock-as-critical.patch[4]

Manually rebased:
  bcm27xx/patches-6.12/950-0262-mfd-simple-mfd-i2c-Add-configuration-for-RPi-POE-HAT.patch
  bcm27xx/patches-6.12/950-0071-drivers-mfd-sensehat-Add-Raspberry-Pi-Sense-HAT-to-s.patch
  bcm27xx/patches-6.12/950-0516-media-i2c-ov5647-Add-V4L2_CID_LINK_FREQUENCY-control.patch
  lantiq/patches-6.12/101-find_active_root.patch

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.75&id=58f1767ad5c9eda3dd0befddc1843259d46d64fa
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.75&id=ff65571ffae52b65577121e7696bf22156e1928a
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.75&id=fbf2a108ed5eb1c896d3f354bd05314c2e22e78f
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.75&id=b109dd4970a0fc89d54b1198b163f86125dd2977

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Co-authored-by: Shiji Yang <yangshiji66@outlook.com>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/22276
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-22 12:00:31 +01:00
Rosen Penev
8f33ecf214
ipq40xx: add CONFIG_NVMEM_BLOCK
NVMEM on MMC was added in dts but the corresponding option was not added
to the config.

Fixes: ee5999c ("treewide: linksys: use nvmem MAC for hw_mac_addr")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22539
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-03-21 10:19:54 +01:00
Julius Schwartzenberg
97238c793b ipq40xx: enable Devolo Magic 2 WiFi next
Note that for working G.hn support some packages need to be extracted from the Devolo firmware.

Signed-off-by: Julius Schwartzenberg <julius.schwartzenberg@eclipso.eu>
Link: https://github.com/openwrt/openwrt/pull/22123
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-03-16 01:34:19 +01:00
Tomasz Maciej Nowak
a654fa7fe4 ipq40xx: wrtq-329acn: remove ethernet alias
The mac addresses are sourced from ART partition.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
2026-03-13 11:54:50 +01:00
Tomasz Maciej Nowak
a11b33eb3f ipq40xx: wr-1: wire up switch LEDs
This will allow controlling them from sysfs.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
2026-03-13 11:43:32 +01:00
Tomasz Maciej Nowak
f93dd5ecde ipq40xx: wr-1: remove TODO
The MAC address is sourced from U-Boot environment.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
2026-03-13 11:43:03 +01:00
Tomasz Maciej Nowak
873120b4ff ipq40xx: wr-1: fix WLAN LEDs labels
Restore the lost band label.

Fixes: 502ac21e8fde ("ipq40xx: drop redundant label with new LED color/function format")
Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
2026-03-13 11:42:02 +01:00
Marco von Rosenberg
cd1b70f6f9 ipq40xx: add support for Huawei AP4050DN
Hardware
========
SoC: Qualcomm IPQ4018
ETH: Qualcomm QCA8075 (2 x RJ-45)
WDG: OnSemi SCT706
RAM: Micron MT41K128M16JT-125 (256MB)
NOR: Infineon S25FL512S (64MB)

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

1. Create a ramboot-able image with the command

   { dd if=/dev/zero bs=32 count=1 2>/dev/null; \
     cat openwrt-ipq40xx-generic-huawei_ap4050dn-initramfs-uImage.itb; \
   } > ramboot.bin`

2. Start a TFTP server in the folder with the ramboot.bin.

3. Plug in a USB-RJ45 serial adapter to the CONSOLE port of the device
   and start a serial console session with
   9600 baud, no parity, 1 stop bit.

4. Plug in either 12V power or PoE to the device.

5. On the prompt `Press f or F  to stop Auto-Boot in 3 seconds`,
   press `f` to enter the Huawei U-Boot command line

6. Enter a new password for the u-boot command line

7. In the command line, run these commands to ramboot OpenWrt:

      setenv serverip <IPv4 address of TFTP server>
      setenv ipaddr <IPv4 address for this AP>
      setenv rambootfile ramboot.bin
      run ramboot

8. In OpenWrt, set up the network and then `scp` the files
   `u-boot-huawei_ap4050dn/uImage` and
   `openwrt-ipq40xx-generic-huawei_ap4050dn-squashfs-sysupgrade.bin`
   into `/tmp/`

9. To backup the original firmware, run the following:

      cat /dev/mtd12 /dev/mtd13 > huawei_ap4050dn_fw_backup.bin.bin

10. Run the following commands to flash u-boot and OpenWrt to the device:

      mtd erase uboot
      mtd write /tmp/uImage uboot
      sysupgrade -n /tmp/openwrt-ipq40xx-generic-huawei_ap4050dn-squashfs-sysupgrade.bin

11. The device should now boot OpenWrt! (sometimes the boot process takes a bit
    longer due to the watchdog resetting the device before the watchdog driver runs)

Signed-off-by: Marco von Rosenberg <marcovr@selfnet.de>
2026-03-07 18:52:31 +01:00
Jonas Jelonek
45636e3a2b kernel: refresh patches
Refresh kernel patches with make target/linux/refresh for each target.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22206
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-06 11:33:05 +01:00
Valent Turkovic
a75cc4f18c ipq40xx: re-enable MeshPoint.One target
The MeshPoint.One was disabled during the DSA migration with the
comment "Missing DSA Setup". However, this device inherits its
entire network configuration from 8dev Jalapeno via the
Device/8dev_jalapeno-common template, and shares the same DSA
network setup in 02_network.

The Jalapeno has been working with DSA since the migration. All
MeshPoint.One board support files (DTS, network config, LED config)
are already in place and reference the same QCA8072 switch
configuration as the Jalapeno.

Hardware: Qualcomm IPQ4018, QCA8072 switch, same as 8dev Jalapeno.
Tested: Built firmware from current main branch, boots and network
functions correctly.

Signed-off-by: Valent Turkovic <valent@meshpointone.com>
Link: https://github.com/openwrt/openwrt/pull/22258
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-04 12:35:57 +01:00
Robert Marko
aa78fa72e1 generic: add CONFIG_REGULATOR_QCOM_LABIBB
CONFIG_REGULATOR_QCOM_LABIBB is being disabled by targets manually, so
instead lets disable it in generic config.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:16:55 +01:00
Robert Marko
255c1d3da0 generic: add CONFIG_REGULATOR_QCOM_SPMI
Instead of disabling CONFIG_REGULATOR_QCOM_SPMI manually per target,
lets simply disable it in generic config.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:15:06 +01:00
Robert Marko
fd76f6f08f generic: add CONFIG_REGULATOR_QCOM_USB_VBUS
CONFIG_REGULATOR_QCOM_USB_VBUS showed up on Layerscape recently, and it
looks like multiple targets disable it manually, so simply disable it in
generic configuration instead.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-27 11:13:03 +01:00
Rosen Penev
ee5999cf78 treewide: linksys: use nvmem MAC for hw_mac_addr
Given that Linksys is the same brand and probably use the same OEM, it
stands to reason all devinfo hw_mac_addr implementations are the same.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22092
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-23 10:56:00 +01:00
Hal Martin
88f3c67eb2 ipq40xx: add support for Cisco Meraki MR70
This commit adds support for the Cisco Meraki MR70/Go GR60.

The Meraki MR70 is a Cisco 802.11ac/WiFi 5 outdoor AP with 1 Ethernet port.
It can be powered by a 12V DC barrel jack (5.5x2.5mm, center positive)
or via 802.3af POE.

The Meraki Go GR60 (codename: Dungbeetle Omni) is identical to the MR70
(codename: Toe Biter Omni), so this document will refer to both devices
as the MR70.

MR70 hardware info:
* CPU: Qualcomm IPQ4029
* RAM: 256MB DDR3
* Storage: 128 MB (TSOP48 NAND, 3.3V)
* Networking: 1 Gigabit Ethernet
* WiFi: QCA4019 802.11b/g/n/ac
* Serial: Internal header (J10, 2.54mm, unpopulated)

This device ships with secure boot, and cannot be flashed without
external programmers (TSOP48 NAND and I2C EEPROM)!

Disassembly:

Note: This is an outdoor device that is ultrasonically welded and glued
to weather seal it. Disassembly will compromise the weather seal!

Start by removing the product label on the rear metal mounting plate.
There are four Torx T8 screws under the sticker, remove the screws and
the mounting plate. Remove the two Philips screws under the plate.

Using a chisel (or razor blade) and hammer, cut around the circumfrence
of the device. You need to cut through approximately 2mm of
ultrasonically welded plastic.

After cutting through the plastic, heat the device using a hair drier
(or similar) to soften the glue. A heatgun is NOT recommended as
it will damage the plastic. It is only required to heat the device until
warm (~40C-50C).

Using a plastic pry tool, insert it along the cut you made around
the edge and gently separate.  Insert a guitar pick into the opening
while gently lifting the front to cut the glue. The device is glued around
the entire circumfrence.

Once you have removed the plastic front, remove the 4 Philips screws
holding down the main PCB. Release the two WiFi antennas by gently
bending the antenna PCBs to the middle of the unit and pulling up.

Lift the top of the PCB gently while pushing the Ethernet port into the
housing to release it. Turn the PCB over and remove the three Philips
screws holding the metal heat spreader.

The TSOP48 NAND flash (U9, S34ML01G200 or W29N01HV) is located
under the metal heat spreader.

To flash, you need to desolder the TSOP48 or use a 360 clip.

You also need to reprogram the I2C EEPROM (U20, Atmel 24c64). It is not
necessary to desolder the I2C EEPROM, a ch341a USB programmer and SOP-8
clip are inexpensive (~$10) and work well.

Installation:

The dumps to flash can be found in this repository:
https://github.com/halmartin/meraki-openwrt-docs/tree/main/mr70_gr60

The device has the following flash layout (offsets with OOB data):
```
0x000000000000-0x000000100000 : "sbl1"
0x000000100000-0x000000200000 : "mibib"
0x000000200000-0x000000300000 : "bootconfig"
0x000000300000-0x000000400000 : "qsee"
0x000000400000-0x000000500000 : "qsee_alt"
0x000000500000-0x000000580000 : "cdt"
0x000000580000-0x000000600000 : "cdt_alt"
0x000000600000-0x000000680000 : "ddrparams"
0x000000700000-0x000000900000 : "u-boot"
0x000000900000-0x000000b00000 : "u-boot-backup"
0x000000b00000-0x000000b80000 : "ART"
0x000000c00000-0x000007c00000 : "ubi"
```

* Dump your original NAND (if using nanddump, include OOB data).

* Decompress `u-boot.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `u-boot` portion of NAND from
`0x738000`-`0x948000` (length `0x210000`). Offsets here include OOB data.

* Decompress `ubi.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `ubi` portion of NAND from
`0xc60000-0x7fe0000` (length `0x7380000`). Offsets here include OOB data.

* Dump your original EEPROM. Change the byte at offset `0x49` to `0x1e`
(originally `0x2d` or `0x26`). Remember to re-write the EEPROM with the
modified data.

        * This can be done on Linux via the following command:
    `printf "\x1e" | dd of=/tmp/eeprom.bin bs=1 seek=$((0x49)) conv=notrunc`

**Note**: the device will not boot if you modify the board major number and
have not yet overwritten the `ubi` and `u-boot` regions of NAND.

* Resolder the NAND after overwriting the `u-boot` and `ubi` regions.

OpenWrt Installation:

* After flashing NAND and EEPROM with external programmers. Plug in an
Ethernet cable and power up the device.

* The new U-Boot build uses the space character `" "` (without quotes) to
interrupt boot.

* Interrupt U-Boot and `tftpboot` the OpenWrt initramfs image from your
tftp server
```
dhcp
setenv serverip <your_tftp>
tftpboot openwrt-ipq40xx-generic-meraki_mr70-initramfs-uImage.itb
```

* Once booted into the OpenWrt initramfs, created the `ART` ubivol with
the WiFi radio calibration from the mtd partition:
```
cat /dev/mtd10 > /tmp/ART.bin
ubiupdatevol /dev/ubi0_1 /tmp/ART.bin
```

* `scp` the `sysupgrade` image to
the device and run the normal `sysupgrade` procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_mr70-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_mr70-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22050
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-18 19:14:57 +01:00
Hal Martin
cdf1ef0733 ipq40xx: underdog device tree update
Underdog devices lack a red LED, use the blue LED for
failsafe mode.

Move all config except device name to underdog.dtsi, as
all known underdog devices (MR20/GR10, MR70/GR60) have identical
device tree.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22050
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-02-18 19:14:57 +01:00
Christian Marangi
6c982c7db4
ipq40xx: move Device DTS to dedicated DTS directory
Align the ipq40xx target to the pattern already used on other devices where
the device DTS are placed in a dedicated directory separate from the files
directory.

This, while trying to enforce a common pattern for every target, also permits to
do modification to device DTS without having to trigger a recompilation of the
entire kernel (as the files directory is not touched)

Link: https://github.com/openwrt/openwrt/pull/22040
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-02-16 13:15:08 +01:00
John Audia
2c4a719d26 kernel: bump 6.12 to 6.12.70
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.70

Removed upstreamed:
 backport-6.12/605-01-v6.17-net-phy-add-phy_interface_weight.patch[1]

All patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.70&id=4dc7b69bca8ef6b932a7c6bea63450796b1146ce

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21985
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-14 18:30:02 +01:00
Qingfang Deng
316492b809 kernel: backport pppoe improvements
Backport PPP patches accepted upstream.

Manually rebased:
- target/linux/ipq40xx/patches-6.12/999-atm-mpoa-intel-dsl-phy-support.patch

Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21892
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-11 00:05:55 +01:00
Rosen Penev
618f741494 treewide: remove of_platform.h include
This header is deprecated and typically platform_device.h should be
used.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21164
[Adapted the lantiq patches a bit]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-04 00:50:06 +01:00
John Audia
0bd6a89561 kernel: bump 6.12 to 6.12.68
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.68

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21797
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-01 19:03:59 +01:00
Zeyu Dong
979f70cc7e ipq40xx: fix image pipeline for MR6350
Add two missing $$ in the factory image build pipeline for MR6350

Signed-off-by: Zeyu Dong <dzy201415@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21682
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-25 22:15:48 +01:00
Hal Martin
561a8858f5 ipq40xx: enable PoE output on Meraki MR30H
This commit enables PoE output on port 1 of the Meraki MR30H if
the device is powered via 802.3at PoE.

No PoE output is enabled if the device is powered via 802.3af PoE,
as there is insufficient power.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20645
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-25 22:11:17 +01:00
John Audia
c0fb8e1f35 kernel: bump 6.12 to 6.12.66
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.66

All patches automatically rebased

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21591
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 01:15:32 +01:00
Daniel Golle
468ee567c9 kernel: net: phy: realtek: backport upstream commits
Backport a bunch of upstream commits simplifying the RealTek PHY driver
and re-unifying the C22 and C45 driver instances.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-01-19 13:51:41 +00:00
John Audia
ba6b07a4ab kernel: bump 6.12 to 6.12.64
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.64

Manually rebased:
  bcm27xx/patches-6.12/950-0019-BCM2708-Add-core-Device-Tree-support.patch
  bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch
  bcm27xx/patches-6.12/950-0875-PCI-brcmstb-Add-bcm2712-support.patch
  ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch

Removed upstreamed:
  generic-backport/403-v6.19-mtd-mtdpart-ignore-error-ENOENT-from-parsers-on-subp.patch[1]
  bcm27xx/patches-6.12/950-0873-PCI-brcmstb-Reuse-config-structure.patch[2]
  bcm27xx/patches-6.12/950-0888-PCI-brcmstb-don-t-use-ASPM-state-defines-for-registe.patch[3]
  bcm27xx/patches-6.12/950-0951-media-i2c-imx219-Restore-the-1920x1080-to-using-a-1-.patch[4]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=846ceb1a94460f7331e879c02ff2dd505435b51b
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=8d185636a6299ff9d2e9eec3a4a25026c13d2351
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=38aa6ca6285ff76a7570e5b9acd1151f5cea783a
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=620f9d7bcf771b532bce67ffecf2d97759a4747f

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3
Run-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Co-Authored-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21431
[Fixed: 950-0019-BCM2708-Add-core-Device-Tree-support.patch]
[remove 950-0888-PCI-brcmstb-don-t-use-ASPM-state-defines-for-registe.patch]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 01:22:47 +01:00
Stijn Tintel
f7c5334c4c kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU
Commit ab805ec316b5 ("generic: add missing squashfs config") enabled
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU in the generic config, so it is no
longer needed in the target configs.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Link: https://github.com/openwrt/openwrt/pull/21465
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-11 12:52:54 +01:00
Hauke Mehrtens
b3318fe819 kernel: as21xxx: backport patch improve PHY HW reset
This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

The function phy_id_compare_vendor() is needed by the fix.
Refresh 782-05-v6.16-net-phy-Add-support-for-Aeonsemi-AS21xxx-PHYs.patch with the upstream code.

Fixes: 08a616b2163e ("generic: backport support for Aeonsemi AS21xxx PHY")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-04 16:41:29 +01:00
Hal Martin
5578eb69c2 ipq40xx: add support for Cisco Meraki MR20
This commit adds support for the Cisco Meraki MR20/Go GR10.

The Meraki MR20 is a Cisco 802.11ac/WiFi 5 AP with 1 Ethernet port.
It can be powered by a 12V DC barrel jack (5.5x2.5mm, center positive)
or via 802.3af POE.

The Meraki Go GR10 (codename: Maggot) is identical to the MR20
(codename: Grub), so this document will refer to both devices as the MR20.

MR20 hardware info:
* CPU: Qualcomm IPQ4029
* RAM: 256MB DDR3
* Storage: 128 MB (MX30LF1G18AC)
* Networking: 1 Gigabit Ethernet
* WiFi: QCA4019 802.11b/g/n/ac
* Serial: Internal header (J10, 2.54mm, unpopulated)

This device ships with secure boot, and cannot be flashed without
external programmers (TSOP48 NAND and I2C EEEPROM)!

Disassembly:

Remove the four rubber feet on the rear of the AP and the four
Torx T8 screws under the feet.

Using a guitar pick or similar plastic tool, insert it on the side
along the seam around the edge. Push in gently while gently lifting
the front of the housing to release the plastic retention clips.

There are 15 clips in total.

Once you have removed the plastic front (shown above already removed
so you know where the clips are), remove the 4 Philips screws holding
down the two metal WiFi antennas.

Lift the PCB gently while pushing the Ethernet port into the housing
to release it. The PCB should come free from the metal heat spreader.

The TSOP48 NAND flash (U9, Macronix/MXIC MX30LF1G18AC) is located on
the opposite side of the PCB.

To flash, you need to desolder the TSOP48 or use a 360 clip.

You also need to reprogram the I2C EEPROM (U20, Atmel 24c64).

Installation:

The dumps to flash can be found in this repository:
https://github.com/halmartin/meraki-openwrt-docs/tree/main/mr20_gr10

The device has the following flash layout (offsets with OOB data):
```
0x000000000000-0x000000100000 : "sbl1"
0x000000100000-0x000000200000 : "mibib"
0x000000200000-0x000000300000 : "bootconfig"
0x000000300000-0x000000400000 : "qsee"
0x000000400000-0x000000500000 : "qsee_alt"
0x000000500000-0x000000580000 : "cdt"
0x000000580000-0x000000600000 : "cdt_alt"
0x000000600000-0x000000680000 : "ddrparams"
0x000000700000-0x000000900000 : "u-boot"
0x000000900000-0x000000b00000 : "u-boot-backup"
0x000000b00000-0x000000b80000 : "ART"
0x000000c00000-0x000007c00000 : "ubi"
```

* Dump your original NAND (if using nanddump, include OOB data).

* Decompress `u-boot.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `u-boot` portion of NAND from
`0x738000`-`0x948000` (length `0x210000`). Offsets here include OOB data.

* Decompress `ubi.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `ubi` portion of NAND from
`0xc60000`-`0x8400000` (length `0x77a0000`). Offsets here include OOB data.

* Dump your original EEPROM. Change the byte at offset `0x49` to `0x1e`
(originally `0x2c` or `0x25`). Remember to re-write the EEPROM with the
modified data.
    * This can be done on Linux via the following command:
    `printf "\x1e" | dd of=/tmp/eeprom.bin bs=1 seek=$((0x49)) conv=notrunc`

**Note**: the device will not boot if you modify the board major number and
have not yet overwritten the `ubi` and `u-boot` regions of NAND.

* Resolder the NAND after overwriting the `u-boot` and `ubi` regions.

OpenWrt Installation:

* After flashing NAND and EEPROM with external programmers. Plug in an
Ethernet cable and power up the device.

* The new U-Boot build uses the space character `" "` (without quotes) to
interrupt boot.

* Interrupt U-Boot and `tftpboot` the OpenWrt initramfs image from your
tftp server
```
dhcp
setenv serverip <your_tftp>
tftpboot openwrt-ipq40xx-generic-meraki_mr20-initramfs-uImage.itb
```

* Once booted into the OpenWrt initramfs, created the `ART` ubivol with
the WiFi radio calibration from the mtd partition:
```
cat /dev/mtd10 > /tmp/ART.bin
ubiupdatevol /dev/ubi0_1 /tmp/ART.bin
```

* `scp` the `sysupgrade` image to
the device and run the normal `sysupgrade` procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_mr20-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_mr20-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20646
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-29 19:41:24 +01:00
Hal Martin
593e399568 ipq40xx/meraki: refactor common device tree
qcom-ipq4029-insect-common.dtsi was common to the MR33 and MR74, but was no
longer common with the other supported Meraki devices. I have refactored
insect-common and wired-qca-common into qcom-ipq4029-meraki-common.dtsi
which contains the actual common components (e.g. NAND partitions, ART nvmem).

Individual devices reference qcom-ipq4029-meraki-insect.dtsi
plus their own individual configuration.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20646
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-29 19:41:24 +01:00
Christoph Krapp
3045f205b3 ipq40xx: convert Orbi led labels to function/color
The eight leds controlled by the LED controller are RGB leds themselves
but are flashing white by default. The color part is controlled by GPIOs
53 (green), 54 (red), 57 (blue) and 60 (white).
Therefore define the led nodes of the controller as white instead of RBG
as well as backlight as their function.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-16 10:29:33 +01:00
Christoph Krapp
f0909f7a05 ipq40xx: fix second 5ghz radio on Netgear RBx40
When support was added for the RBR40 and RBS40 it was assumed that they
also share the same second 5ghz wifi chip as their bigger siblings.
Turns out that instead of QCA9984 (RBx50, SRx60) these devices use
QCA9886 like the RBx20 devices to.
They also load different boardfiles for the IPQ4019 chip.

This moves the wifi nodes from the orbi.dtsi to each device dts file and
change the RBx40 boardfile variants.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-16 10:29:33 +01:00
Christoph Krapp
0f0f578d0a ipq40xx: fix Netgear RBR40 wan mac
The WAN port currently has the same MAC set as all the other LAN ports.
Fix this by adding the missing case in ipq40xx_setup_macs().

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-16 10:29:32 +01:00
Christoph Krapp
314dbb7fec ipq40xx: split orbi devices in router and satellite
Netgear Orbi devices are split into router and satellite units. Even
though the hardware is mostly the same, the network configuration is
different. Router units have a designated WAN port while satellite units
have all available ports labeled as "Ethernet".
This splits the device trees into both unit types and adjusts the port
labels.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-16 10:29:32 +01:00
Shiji Yang
9f5cb25867 ipq40xx: dts: remove useless ethernet0 alias for WIA3300-20
The MAC addresses of this device are not assigned by the bootloader.
Therefore, this alias is useless.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20478
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:46:33 +01:00
Shiji Yang
7bbbe77504 ipq40xx: dts: convert WIA3300-20 SPI chipselect to hardware mode
On ipq40xx platform, some specific GPIO can be configured as hardware
controlled SPI CS pin. This commit is an example of how to convert the
chipselect pin to the hardware CS mode.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20478
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-12-01 00:46:33 +01:00
Shiji Yang
1aee2f5567 ipq40xx: convert CRLF line-ending to LF for Linksys MR6350
Use Unix LF style instead of Windows CRLF style.

Fixes: 00bb18b851df ("ipq40xx: Add support for Linksys MR6350")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20973
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 18:04:38 +01:00
Robert Marko
39f2019985 Revert "treewide: fixup ath10k nodes"
This reverts commit 741689a335de75430dc505bcdb9326bf1149f807.

Only after merging I remebered the reason why it was changed to 0,0 [1].

[1] 1e20f7b6c6

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-11-29 17:56:11 +01:00