1
1
Commit Graph

69188 Commits

Author SHA1 Message Date
Martin Schiller
07a5e432c8 imx: add support for Kontron OSM-S/BL i.MX8MP
This adds support for the Kontron i.MX8MP OSM-S size system-on-module +
eval board.

CPU:      NXP i.MX8MP @ 1600MHz (quad-core A53)
Memory:   4 (up to 8) GByte LPDDR4-RAM
Storage:  32 (up to 128) GByte eMMC + microSD slot
Ethernet: 2x 1 Gbit/s IEEE (1x with TSN)
UART:     1x UART console output on the Mini-B USB Debug Port
          (signals are really UART on this Mini-B USB port!!!, there is
          an adapter with ftdi available from Kontron)
          1x RS232, 1x RS485
USB:	  2x USB 2.0 Type-A, 1x USB 3.0 Type-C DRP
Misc:	  8 (up to 128) kByte EEPROM (at24), RTC, 2x CAN, HDMI, 1x PCIe

This will create an SD card image for the board.
To use this image you have to bring the board to the recovery boot mode
(normal boot mode is eMMC). At the time of writing, the SoM (or the SoC)
has a bug that the FORCE_RECOVERY signal (switch S1 on the eval board)
doesn't work as long as the eMMC boot0 partition contains data.
Therefore you have to wipe this boot0 partition to be able to boot from
SD card. To do this call the following commands at uboot:

mmc dev 0 1
mmc erase 0 0x2000

After that, the system will try to boot from SD card.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2026-06-01 17:49:36 +02:00
Martin Schiller
a35efecca8 kernel/modules: add RV3028 I2C RTC kernel module support
Add support for the Micro Crystal RV3028 I2C real-time clock chip.

Tested on a Kontron OSM-S/BL i.MX8MP eval board.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2026-06-01 17:49:36 +02:00
Martin Schiller
1076584bc3 uboot-imx: add support for Kontron OSM-S/BL i.MX8MP
Add mainline U-Boot flavour for Kontron OSM-S/BL i.MX8MP board.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2026-06-01 17:49:36 +02:00
Martin Schiller
23cd613f40 arm-trusted-firmware-imx: add new package
Build ATF images for i.MX8MP. Tested on Kontron OSM-S/BL i.MX8MP.

The default IMX_BOOT_UART_BASE for imx8mp platforms is 0x30890000, which
would be UART2. The Kontron board however uses UART3 as serial debug
console. As a result, after loading BL31 the system hangs.

Setting IMX_BOOT_UART_BASE=auto will fix it.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2026-06-01 17:49:36 +02:00
Martin Schiller
36d567b9ef firmware-imx: add package for NXP i.MX8 DDR/HDMI firmware files
This package will install the DDR/HDMI firmwares for i.MX8.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2026-06-01 17:49:36 +02:00
Martin Schiller
158651a6d7 uboot-imx: bump to 2026.04 release
This version bump is in preparation for support of new targets.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
2026-06-01 17:49:36 +02:00
Rosen Penev
805098d8b6
gpio-button-hotplug: avoid a const cast
Introduce a variable inside probe to avoid having to cast const away.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22619
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-01 09:34:39 +02:00
Jonas Jelonek
80a44d6a52
realtek: pcs: reject SerDes modes unsupported by the instance
Add a per-SerDes supported_modes bitmap, filled at probe by each
variant from the SerDes id or type, and reject unsupported modes in
determine_hw_mode() via test_bit().

This replaces the rtl838x is_hw_mode_supported() switch and adds the
same gating to rtl839x/rtl93xx, which previously relied only on the
per-variant mode-value table. Unlike that table, the bitmap is per
SerDes instance, so it also rejects modes the table can encode but that
a given SerDes cannot actually use. Rejection uses the uapi -EOPNOTSUPP
instead of the internal -ENOTSUPP.

Link: https://github.com/openwrt/openwrt/pull/23608
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-01 09:17:15 +02:00
Jonas Jelonek
e74d236e07
realtek: pcs: drop dead SerDes modes
SerDes modes HISGMII and QHSGMII are practically dead but were added/kept
for documentation purposes. However, these modes will likely never be
used and we have other documentation than in the code. Drop them to
reduce the modes to what we actually use.

Link: https://github.com/openwrt/openwrt/pull/23608
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-01 09:17:15 +02:00
Han Sol Jin
f13150d12f
mediatek: mt7622: enable CONFIG_MTD_VIRT_CONCAT
Some devices have a ton of unused space found in other partitions that
can be used to expand rootfs_data.

In particular, the D-Link DIR-X3260 device can squeeze another ~24MiB
from its backup partition, with a few tricks, allowing for ~48MiB of
usable space rather than ~24MiB by itself.

As of v25.12.1, with the official release build config, this gives us
~35MiB of rootfs_data, where without it there would only be ~11MiB.

Enable this config to allow this function.

Signed-off-by: Han Sol Jin <jhs@jinhansol.com>
Link: https://github.com/openwrt/openwrt/pull/22555
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-01 00:32:38 +02:00
Anna Kiri
df26b8723a
mtd: jffs2: add missing malloc NULL check
In mtd_replace_jffs2(), the return value of malloc(erasesize) is never
checked. If the allocation fails, buf remains NULL and the subsequent
memcpy(buf + ofs, ...) in add_data() will dereference NULL, causing a
segfault.

Add a NULL check and return -1 on allocation failure. Match the
diagnostic message used by the sibling mtd_write_jffs2() so the
out-of-memory cause is visible at the call site.

Signed-off-by: Anna Kiri <bredcorn@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23553
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 23:57:14 +02:00
John Audia
e13430ef1d
toolchain: glibc: Update to HEAD from release/2.43/master
% git log --oneline f762cc..4070d80
4070d808bea1 sdio-common: Fix buffer overflow in scanf %mc [BZ #34008]
2890b35cd361 libio: Fix ungetwc operating on byte stream [BZ #33998]
e9517114acc7 abilist.awk: Handle weak unversioned defined symbols
1634cc11a5a5 Linux: Only define OPEN_TREE_* macros in <sys/mount.h> if undefined (bug 33921)
d1d8d27164e9 include: isolate __O_CLOEXEC flag for sys/mount.h and fcntl.h
8362e8ce10b2 Use pending character state in IBM1390, IBM1399 character sets (CVE-2026-4046)
ce1013a197eb tests: fix tst-rseq with Linux 7.0
60cabd0464c6 riscv: Resolve calls to memcpy using memcpy-generic in early startup
02ffd413cf83 elf: Use dl-symbol-redir-ifunc.h instead _dl_strlen
26953143787b elf: parse /proc/self/maps as the last resort to find the gap for tst-link-map-contiguous-ldso
dd9945c0ba40 resolv: Check hostname for validity (CVE-2026-4438)
5c6fca0c62ce resolv: Count records correctly (CVE-2026-4437)
2be6cf2e75d0 posix: Run tst-wordexp-reuse-mem test
305ce0b58809 aarch64: Tests for locking GCS
2ee41ba6ecd3 aarch64: Lock GCS status at startup
fa4a40c7d497 tests: aarch64: fix makefile dependencies for dlopen tests for BTI
9898ea58b538 malloc: Avoid accessing /sys/kernel/mm files
c3ceb93dc4f6 Add BZ 33904 entry to NEWS
911bd469f80c debug: Fix build with --enable-fortify-source=1 (BZ 33904)
48f5a05a7a1e nss: Missing checks in __nss_configure_lookup, __nss_database_get (bug 28940)
d6cb7ce0e98b Linux: In getlogin_r, use utmp fallback only for specific errors
140c760d711d nss: Introduce dedicated struct nss_database_for_fork type
856c426a7534 Don't include <bits/openat2.h> directly (bug 33848)
144ba302089c po: Incorporate translatins (nl updated, ar new)
022abaeacbc8 Fix ldbl-128ibm ceill, floorl, roundl and truncl zero-sign handling
45b58d6bd185 NEWS: add new section 2.43.1
f02515d8a696 Replace advisories directory with file ADVISORIES

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/23467
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 23:48:19 +02:00
Daniel Golle
0f381e2fc5 linux-firmware: fix mediatek 2.5G PHY firmware dependency
Fixes: bf0825a2d0 ("mediatek: build driver for built-in 2.5GE PHY as module")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-05-31 20:14:45 +01:00
Jonas Jelonek
ed2a36afae
realtek: fix macro usage in F1100W-4SX-4XGT DTSI
A recent target-wide change missed the DTSI for a few devices causing a
build issue for RTL930x. Fix that.

Fixes: 43562f97e7 ("realtek: dts: add link index cell to pcs-handle phandles")
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:51:56 +00:00
Manuel Stocker
267886991a realtek: mdio: skip over ethernet-phy-package nodes
When we look up the PHY for each switch port, we traverse to the parent
node to find the corresponding MDIO bus. This approach breaks down
when an explicit ethernet-phy-package is used to bundle multiple
PHYs in the same chip.

Signed-off-by: Manuel Stocker <mensi@mensi.ch>
Link: https://github.com/openwrt/openwrt/pull/23591
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-31 13:07:38 +02:00
Jonas Jelonek
ee6e8c88dc
realtek: dsa,pcs: drop rtpcs_create
Drop the shared rtpcs_create function and references in both drivers
since that is now done via the fwnode PCS provider framework.

Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:41 +02:00
Jonas Jelonek
a4965dbf48
realtek: migrate PCS to fwnode_pcs provider/consumer API
PCS driver registers each SerDes as an fwnode_pcs provider in probe;
the resolver returns the cached or freshly-allocated rtpcs_link for
the requested (sds, link_idx) cell. DSA glue stops calling
rtpcs_create directly, drops .mac_select_pcs, and instead populates
phylink_config.num_available_pcs / fill_available_pcs from each
port's pcs-handle in phylink_get_caps. The rtl838x_port.pcs pointer
becomes a has_pcs bool populated at port probe via fwnode_property_
present, since nothing assigns the actual phylink_pcs anymore but the
"does this port use a PCS?" checks elsewhere still need a presence
flag.

Without .mac_select_pcs, phylink_major_config only searches the
pcs_list when state->interface is set in phylink_config.pcs_interfaces
(drivers/net/phy/phylink.c:1378). Populate it per port whenever the
port has a pcs-handle, listing the SerDes-routable interface modes for
each SoC variant -- without this, pcs_config / pcs_link_up are never
called and the SerDes is left unconfigured.

pcs_get_state still needs the MAC port number to index per-port link
status registers. Recover it at probe via rtpcs_map_links: walk the
sibling switch's ethernet-ports subtree (same backwards topology
lookup the sibling MDIO driver does for phy-handle), and for every
port whose pcs-handle resolves to one of our SerDes, store the port's
reg in sds->link_port[]. The resolver consults link_port[] when
allocating rtpcs_link and fails with -ENODEV if a consumer requested
a link the map step didn't record. Avoids a driver-side port_base
table that would have to encode per-SoC SerDes-to-port wiring (and
would silently break on non-contiguous variants); the DT is the
single source of truth.

Kconfig selects FWNODE_PCS.

Assisted-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:41 +02:00
Jonas Jelonek
c4f5c34fa4
realtek: pcs: add per-link port storage to rtpcs_serdes
Add an s16 link_port[] array to struct rtpcs_serdes, initialised to
-1 in probe. This is preparatory storage for the port number that
each link serves; it will be populated in the follow-up fwnode_pcs
migration commit by scanning consumer DT nodes for their reg, and
consumed by the resolver when allocating rtpcs_link.

Assisted-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:41 +02:00
Jonas Jelonek
dbd9a35bf3
realtek: pcs: index links per SerDes via pcs-handle cell
Move the rtpcs_link pointer array from rtpcs_ctrl (keyed by global
DSA port) into rtpcs_serdes (keyed by the per-SerDes link index).
This matches how the hardware is structured -- a SerDes hosts up to
RTPCS_MAX_LINKS_PER_SDS PCS links -- and aligns the in-driver
addressing with the cell the DTSes just gained on pcs-handle, so the
upcoming fwnode_pcs resolver becomes a direct sds->link[cell] lookup.

rtpcs_create() takes a new link_idx parameter and stores into
sds->link[link_idx] instead of ctrl->link[port]; the DSA glue switches
its phandle lookup to of_parse_phandle_with_args() and forwards the
cell. The port number stays on rtpcs_link for legacy callers that
still need it. Bounds and double-bind checks (-EINVAL, -EBUSY) guard
against malformed DT references that would otherwise OOB or silently
overwrite an existing link.

Drops RTPCS_PORT_CNT, whose only user was the relocated array, and
fixes a pre-existing of_node_put leak on the pcs-handle phandle in
the DSA glue as a side effect of the parse-with-args conversion.

Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:40 +02:00
Jonas Jelonek
43562f97e7
realtek: dts: add link index cell to pcs-handle phandles
A SerDes can host multiple PCS links: QSGMII binds four ports to one
SerDes, USXGMII variants up to eight. Today pcs-handle references the
SerDes as a whole, with no way to express which link inside the SerDes
a port wants. The driver gets away with this because it carries its own
port->link bookkeeping and the link slot is implicit in DSA's port
iteration order -- functional, but the wiring information lives nowhere
in DT.

The upcoming fwnode_pcs migration moves PCS lookup to the generic
fwnode provider API, which disambiguates multiple instances per fwnode
via phandle cells. To make that landable as small, code-only commits,
the DT needs to carry the link index ahead of time.

Bump #pcs-cells from 0 to 1 on every SerDes node in the four SoC DTSIs
and append the link cell to every pcs-handle reference across boards
and the SWITCH_PORT_* macros. Cell values match the existing wiring:
0 for single-link SerDes (10GBase-R, SGMII, fiber, single-link
USXGMII), 0..3 per SerDes for QSGMII and USXGMII-QX, 0..7 for the
RTL9311 octal USXGMII layout.

No code reads the new cell yet -- of_parse_phandle_with_args() in the
PCS driver already cooperates with cells = 0 or 1, and the DSA glue
uses of_parse_phandle() which ignores cells entirely. The change is
runtime-neutral on its own; it exists so the follow-up code patches
can be a few lines each instead of dragging a bridge counter into the
driver to invent slot numbers DT could have provided directly.

Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:40 +02:00
Jonas Jelonek
b3faefcc32
realtek: pcs: store SerDes fwnode instead of device_node
Switch rtpcs_serdes from struct device_node * to struct fwnode_handle *
in preparation for fwnode_pcs_add_provider, which keys providers by
fwnode. Storing the fwnode directly avoids of_fwnode_handle() wrappers
at every API boundary.

The conversion is mechanical: of_node_get/put become fwnode_handle_get/
put (same refcount on OF-backed fwnodes), polarity helpers drop their
of_fwnode_handle() wrapping, and the link counter compares fwnodes
directly via of_fwnode_handle(arg_np). No behavior change.

Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:39 +02:00
Lorenzo Bianconi
58ce7f3699
airoha: Fix max RX size configuration
Set max RX size configuration (AIROHA_MAX_RX_SIZE) to 0x3f00.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://github.com/openwrt/openwrt/pull/23585
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-05-31 12:12:49 +02:00
Carlo Szelinsky
d048137e85 realtek: add Hasivo MCU watchdog driver
Add a watchdog driver for the external management MCU on Hasivo /
Horaco network switches, reachable over I2C. Without periodic
keepalive the MCU resets the board every ~3 minutes.

The driver arms the MCU at probe and registers a struct
watchdog_device with WDOG_HW_RUNNING so the watchdog core feeds the
chip via a kernel timer until userspace opens the watchdog node.
Timeout is fixed at 15s; the hardware threshold is baked into MCU
firmware and is not software-configurable.

The I2C address is supplied per-board in the device tree via the
`reg` property. The driver does not constrain or probe a specific
address. Known addresses across current Hasivo / Horaco silicon:

  - 0x6F: Hasivo S1300WP-8XGT-4S+, Hasivo F5800W-12S+,
          Horaco ZX-SW82TS-L2P (default / most common)
  - 0x6E: alternate Hasivo / Horaco variant

The driver, its device-tree binding and the Kconfig/Makefile wiring
are added to the kernel tree as a realtek target patch and exposed as
the kmod-hasivo-mcu-wdt KernelPackage. Keeping the binding in the
kernel tree lets dt_binding_check exercise it during the build and
makes the whole driver easy to drop once it lands upstream.

Tested on Hasivo S1300WP-8XGT-4S+ (RTL9313). Unbinding the driver
causes the MCU to power-cycle the board within ~15s.

Signed-off-by: Carlo Szelinsky <github@szelinsky.de>
Link: https://github.com/openwrt/openwrt/pull/23418
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-31 10:57:26 +02:00
Jonas Jelonek
c9406df918
realtek: fix SFP support on Plasma Cloud ESX28/PSX28
Like other RTL931x devices, the Plasma Cloud ESX28 and PSX28 also have
inverted polarity on the SerDes which drive the SFP ports. Commonly,
those always seem to have inverted TX polarity. This was missing from
when the devices were added at which time SFP on RTL931x wasn't working
at all yet. Add the polarity to the DTS now.

Verified on Plasma Cloud PSX28.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-30 21:00:12 +00:00
Shiji Yang
aa96b3ad55
tools/fakeroot: update to 1.38.1
Changelog:
https://salsa.debian.org/clint/fakeroot/-/blob/debian/1.38.1-1/debian/changelog?ref_type=tags

Remove upstreamed patches:
- 400-alpine-libc.musl-fix.patch[1]
- 600-macOS.patch[2][3]

[1] 0b79007b7d
[2] 6fc4f9d8b1
[3] 6bce2e7837
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/23577
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-30 11:20:25 +02:00
Aleksander Jan Bajkowski
6b579482db
airoha: disable unused crypto algorithms
Disable unused crypto algorithms. If needed, install required packages.

Suggested-by: Qingfang Deng <dqfext@gmail.com>
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/23536
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-30 11:15:04 +02:00
Markus Stockhausen
2b4503c7c9 realtek: eth: convert to page_pool
Drop the legacy receive handling and convert the driver to make
use of a zero-copy receive path. To save memory use the page
pool fragment feature. This way two SKBs will fit into one 4KB
page. With the parametrization of this patch the driver will
allocate about 600KB of receive buffers (2 rings with 300KB
each. This already includes space for the SKB header.

iperf3 benchmark gives:

RTL930x
- 1x stream send / from switch 170 Mbit -> 170 MBit
- 4x stream send / from switch 150 MBit -> 150 MBit
- 1x stream receive / to switch 320 MBit -> 400 MBit
- 4x stream receive / to switch 260 MBit -> 300 MBit

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Markus Stockhausen
8fd3e2fbec realtek: eth: avoid TX buffer memory leak
Although never observed, a transmit timeout might happen.
In that case there is a resource leak inside rteth_tx_timeout().
This happens when rteth_setup_ring_buffer() reinitializes the
transmit buffers and overwrites all transmit slots. Any linked
SKB is lost and leaked at this point.

Be defensive and add a cleanup rteth_free_tx_buffers() function.
Call this alongside rteth_free_rx_buffers() where needed.

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Markus Stockhausen
b0e263a5ed realtek: eth: Use right helper for SKB cleanup
There are two helpers to cleanup SKBs that call iternally
dev_kfree_skb_any_reason() but with different error codes.

- dev_kfree_skb_any() reason SKB_DROP_REASON_NOT_SPECIFIED
- dev_consume_skb_any() reason SKB_CONSUMED

The driver does not distinct between the two. Change this and
clean up a SKB that was handed over to the hardware with
dev_consume_skb_any(). This way kernel knows that everything
went well.

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Markus Stockhausen
934de59abe realtek: eth: drop device managed netdev registration
The cleanup order of the driver is quite confusing. At least
two issues exist.

- phylink_destroy() is missing
- The implicit unregister_netdev() at the end of rteth_remove() is called
  too late. The manually managed resources are removed before. This can
  lead to stale data access.

Convert to register_netdev() and bring rteth_remove() into a meaningful
order to avoid such issues when converting to page_pool.

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Markus Stockhausen
8508bcb42e realtek: eth: Add return value to rteth_setup_ring_buffer()
In the future this function will work on page_pool and might fail.
Add a return code to it and handle it where needed.

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Markus Stockhausen
0a80500fb0 realtek: eth: convert to scoped_guard
In the future there will be some error paths inside locking.
Make cleanup easier by converting the sections to scoped_guard.

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Markus Stockhausen
c5bab7288c realtek: eth: improve error handling during probe
The error handling flow during probing has some shortcomings.

1. In case an error occurs after netif_napi_add() this must be
   cleaned up with a call to netif_napi_del().
2. If devm_register_netdev() fails not only NAPI must be cleaned
   up but also the phylink.

Add a cleanup section for the probe. Implement it generically
(checking for 0/NULL values) so it can be called any time when
encountering probe failures.

Link: https://github.com/openwrt/openwrt/pull/23483
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-30 08:50:00 +02:00
Guoxin Pu
246b216df5 image: fix per device targz rootfs wrong suffix and redundant images
In commit d89cb72c23 , a new rootfs type "targz" was introduced, to correctly pack the rootfs AFTER `DEVICE_PACKAGES` installation (unlike the old simple `rootfs.tar.gz`) .

The expected release artifact shall be a single corresponding tar gz release accompanying or relacing the old simple `rootfs.tar.gz`.

However, if one take a look at the v25.12 series release download pages, e.g. [25.12.4/x86/64](https://downloads.openwrt.org/releases/25.12.4/targets/x86/64/), one could see that there're now four release artifacts related to rootfs targz:

- [generic-targz-combined-efi.img.gz](https://downloads.openwrt.org/releases/25.12.4/targets/x86/64/openwrt-25.12.4-x86-64-generic-targz-combined-efi.img.gz)
- [generic-targz-combined.img.gz](https://downloads.openwrt.org/releases/25.12.4/targets/x86/64/openwrt-25.12.4-x86-64-generic-targz-combined.img.gz)
- [generic-targz-rootfs.img.gz](https://downloads.openwrt.org/releases/25.12.4/targets/x86/64/openwrt-25.12.4-x86-64-generic-targz-rootfs.img.gz)
- [rootfs.tar.gz](https://downloads.openwrt.org/releases/25.12.4/targets/x86/64/openwrt-25.12.4-x86-64-rootfs.tar.gz)

It's obvious the new `targz` release actually reuses the same `TARGET_ROOTFS_{TYPE}` handler same as `squashfs`, `ext4` and alike. And the three `generic-targz` img.gz contains the same expected tar gz either as their second partition, or as the whole image. This could be verified by the following script:

```bash
URL_PARENT=https://downloads.openwrt.org/releases/25.12.4/targets/x86/64/openwrt-25.12.4-x86-64-
for TYPE in combined-efi combined rootfs; do
        curl -L "${URL_PARENT}generic-targz-${TYPE}.img.gz" | gzip -cd > "${TYPE}.img"
done
for TYPE in combined-efi combined; do
        INFO=$(sfdisk -d "${TYPE}.img" | sed -n 's/^'"${TYPE}.img"'2 : start= \+\([0-9]\+\), size= \+\([0-9]\+\),.\+.\+$/\1 \2/p')
        dd if="${TYPE}.img" of="${TYPE}.tar.gz" bs=512 skip="${INFO%% *}" count="${INFO##* }"
done
cp rootfs.img rootfs.tar.gz
sha256sum combined-efi.tar.gz combined.tar.gz rootfs.tar.gz
file rootfs.tar.gz
```

Output:
```log
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100 13.12M 100 13.12M   0      0 194.6M      0                              0
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100 12.93M 100 12.93M   0      0 190.9M      0                              0
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
100  7.13M 100  7.13M   0      0 257.6M      0                              0
GPT PMBR size mismatch (246304 != 246334) will be corrected by write.
The backup GPT table is corrupt, but the primary appears OK, so that will be used.
The backup GPT table is not on the end of the device.
212992+0 records in
212992+0 records out
109051904 bytes (109 MB, 104 MiB) copied, 0.258064 s, 423 MB/s
212992+0 records in
212992+0 records out
109051904 bytes (109 MB, 104 MiB) copied, 0.261621 s, 417 MB/s
18b98d3562dc3067ae095ee44d4ff3158cf84e89063c3df66c0ef6638922ba71  combined-efi.tar.gz
18b98d3562dc3067ae095ee44d4ff3158cf84e89063c3df66c0ef6638922ba71  combined.tar.gz
18b98d3562dc3067ae095ee44d4ff3158cf84e89063c3df66c0ef6638922ba71  rootfs.tar.gz
rootfs.tar.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 0
```

The checksum of the extracted, actually expected .tar.gz are all same. And if we peek inside its content, it's indeed what we expected:

```
> tar -tzf rootfs.tar.gz
./
./bin/
./bin/ash
./bin/board_detect
./bin/busybox
./bin/cat
./bin/chgrp
./bin/chmod
./bin/chown
./bin/config_generate
./bin/cp
./bin/date
...
```

A disk image with a `tar.gz` as its second partiton doesn't boot anyway and I doubt if there's any mechanic to make it bootable. So `generic-targz-combined-efi.img.gz` and `generic-targz-combined.img.gz` are not needed at all, and `generic-targz-rootfs.img.gz` shall be renamed to have a `tar.gz` suffix instead.

Therefore work around this by skipping creating images for fs `targz` in the general loop, and only create the rootfs.tar.gz later for `targz` "fs"

This affects both the real builder and imagebuilder. I've tested this with multiple imagebuilders.

Tested with `openwrt-imagebuilder-25.12.4-mvebu-cortexa53.Linux-x86_64`:

```sh
rm -rf bin && make image PROFILE=generic
```

Without the fix:

```
> tree bin/
bin/
└── targets
    └── x86
        └── 64
            ├── openwrt-25.12.4-x86-64-generic.bom.cdx.json
            ├── openwrt-25.12.4-x86-64-generic-ext4-combined-efi.img.gz
            ├── openwrt-25.12.4-x86-64-generic-ext4-combined.img.gz
            ├── openwrt-25.12.4-x86-64-generic-ext4-rootfs.img.gz
            ├── openwrt-25.12.4-x86-64-generic-kernel.bin
            ├── openwrt-25.12.4-x86-64-generic.manifest
            ├── openwrt-25.12.4-x86-64-generic-rootfs.tar.gz
            ├── openwrt-25.12.4-x86-64-generic-squashfs-combined-efi.img.gz
            ├── openwrt-25.12.4-x86-64-generic-squashfs-combined.img.gz
            ├── openwrt-25.12.4-x86-64-generic-squashfs-rootfs.img.gz
            ├── openwrt-25.12.4-x86-64-generic-targz-combined-efi.img.gz
            ├── openwrt-25.12.4-x86-64-generic-targz-combined.img.gz
            ├── openwrt-25.12.4-x86-64-generic-targz-rootfs.img.gz
            ├── profiles.json
            └── sha256sums
```

With the fix:
```
> tree bin/
bin/
└── targets
    └── x86
        └── 64
            ├── openwrt-25.12.4-x86-64-generic.bom.cdx.json
            ├── openwrt-25.12.4-x86-64-generic-ext4-combined-efi.img.gz
            ├── openwrt-25.12.4-x86-64-generic-ext4-combined.img.gz
            ├── openwrt-25.12.4-x86-64-generic-ext4-rootfs.img.gz
            ├── openwrt-25.12.4-x86-64-generic-kernel.bin
            ├── openwrt-25.12.4-x86-64-generic.manifest
            ├── openwrt-25.12.4-x86-64-generic-rootfs.tar.gz
            ├── openwrt-25.12.4-x86-64-generic-squashfs-combined-efi.img.gz
            ├── openwrt-25.12.4-x86-64-generic-squashfs-combined.img.gz
            ├── openwrt-25.12.4-x86-64-generic-squashfs-rootfs.img.gz
            ├── openwrt-25.12.4-x86-64-generic-targz-rootfs.tar.gz
            ├── profiles.json
            └── sha256sums
```

And with `openwrt-imagebuilder-25.12.4-mvebu-cortexa53.Linux-x86_64`:

```sh
rm -rf bin && make image PROFILE=ripe_atlas-v5
```

Without the fix:
```
> tree bin/
bin/
└── targets
    └── mvebu
        └── cortexa53
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5.bom.cdx.json
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-ext4-sdcard.img.gz
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5.manifest
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-rootfs.tar.gz
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-squashfs-sdcard.img.gz
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-targz-sdcard.img.gz
            ├── profiles.json
            └── sha256sums
```

With the fix:
```
> tree bin/
bin/
└── targets
    └── mvebu
        └── cortexa53
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5.bom.cdx.json
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-ext4-sdcard.img.gz
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5.manifest
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-rootfs.tar.gz
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-squashfs-sdcard.img.gz
            ├── openwrt-25.12.4-mvebu-cortexa53-ripe_atlas-v5-targz-rootfs.tar.gz
            ├── profiles.json
            └── sha256sums
```

Signed-off-by: Guoxin Pu <pugokushin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23570
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-29 13:10:23 +02:00
Paul Donald
4271b0b0b4 ethtool: update to 7.0
Version 7.0 - Apr 28, 2026
	* Feature: support MSE display (--show-mse)
	* Feature: add 2 new link_ext_state names
	* Fix: fix index calculation in ixgbe register dump (-d)
	* Fix: cmis wavelength tolerance output (-m)
	* Fix: duplicate sfpid Active Cu compliance output (-m)

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23574
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-29 10:50:41 +02:00
Ryan Leung
f37476a856
rockchip: enable maskrom button for NanoPi R5C/R5S
The MASKROM button was added to the device tree for FriendlyELEC NanoPi R5C/R5S in Linux 6.17 in
07e04c071a35 ("arm64: dts: rockchip: Add maskrom button to NanoPi R5S + R5C").

Now that rockchip target has switched to 6.18 in 67740e311b ("rockchip: switch to kernel 6.18"),
add `kmod-button-hotplug` and `kmod-input-adc-keys` to the default packages for NanoPi R5C/R5S

Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23558
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-29 08:29:03 +02:00
Taiga Ogawa
6cd72f21c7
ramips: add support for ELECOM WMC-C2533GST
ELECOM WMC-C2533GST is a 2.4/5 GHz band 11ac (Wi-Fi 5) mesh
router, based on MT7621A.

It shares the same basic hardware and 32 MiB flash layout as
WRC-2533GST2, but the factory image uses the WMC-2HC hardware name.

Specification:

- SoC           : MediaTek MT7621A
- RAM           : DDR3 256 MiB
- Flash         : SPI-NOR 32 MiB (Macronix MX25L25635E)
- WLAN          : 2.4/5 GHz 4T4R (2x MediaTek MT7615)
- Ethernet      : 10/100/1000 Mbps x5
  - Switch      : MediaTek MT7530 (SoC)
- LED/keys      : 4x/6x (2x buttons, 1x slide-switch)
- UART          : through-hole on PCB
  - J4: 3.3V, GND, TX, RX from ethernet port side
  - 57600n8
- Power         : 12VDC, 1.5A

Flash instruction using factory image:

1. Boot WMC-C2533GST normally with "Router" mode
2. Access to "http://192.168.2.1/" and open firmware update page
   ("ファームウェア更新")
3. Select the OpenWrt factory image and click apply ("適用") button
4. Wait ~150 seconds to complete flashing

MAC addresses:

LAN     : 04:AB:18:xx:xx:BF (Factory, 0xFFF4 (hex))
WAN     : 04:AB:18:xx:xx:C0 (Factory, 0xFFFA (hex))
2.4GHz  : 04:AB:18:xx:xx:C1 (Factory, 0x4    (hex))
5GHz    : 04:AB:18:xx:xx:C2 (Factory, 0x8004 (hex))

Signed-off-by: Taiga Ogawa <zectaiga@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23568
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-29 08:27:50 +02:00
Chukun Pan
4c2be83d5d
uboot-sunxi: bump to 2026.04
This version supports boards with 1.5GB or 3GB of RAM.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/23360
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-29 08:23:24 +02:00
Paul Donald
e0b9d1fdce
lldpd: bump to 1.0.22
Changes:
https://github.com/lldpd/lldpd/releases/tag/1.0.22

Fixes:

- Fix out-of-bound read access when removing VLAN tag (CVE-2026-46433, issue 787)
- Reject 0-length management address in LLDP
- Fix race condition when creating the control socket
- Fix FDP MAC address
- Fix memory leak in the BSD bridge query path
- Fix duplicate management addresses when merging EDP VLAN frames

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23567
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-28 22:14:27 +02:00
Lars Gierth
0a907daa80
realtek: rtl930x: add support for Hasivo F1100W-4SX-4XGT and variants
This commit adds support for the Hasivo F1100W-4SX-4XGT ethernet 10Gbase and PoE switch.
It also adds support for a whole matrix of variants of this device:

| Device              | Revision | RAM    | PoE | Console  |
|---------------------|----------|--------|-----|----------|
| F1100W-4SX-4XGT     | v1.03    | 256 MB | n/a | RJ45     |
| F1100W-4SX-4XGT     | v1.02    | 512 MB | n/a | RJ45     |
| F1100W-4SX-4XGT-SE  | v1.03    | 256 MB | n/a | internal |
| F1100W-4SX-4XGT-SE  | v1.02    | 512 MB | n/a | internal |
| F1100WP-4SX-4XGT    | v1.03    | 256 MB | yes | RJ45     |
| F1100WP-4SX-4XGT    | v1.02    | 512 MB | yes | RJ45     |
| F1100WP-4SX-4XGT-SE | v1.03    | 256 MB | yes | internal |
| F1100WP-4SX-4XGT-SE | v1.02    | 512 MB | yes | internal |

The devices are identical except for presence of the PoE daughter board,
RJ45 console port, and 256 or 512 MB RAM.

The non-512 MB image also works on the older 512 MB board revisions, but not vice versa.

Credit to @mensi @bevanweiss @markc1984

Hardware
--------

|          |                                                           |
|----------|-----------------------------------------------------------|
| SoC      | RTL9303 rev B                                             |
| RAM      | 256 MB Samsung K4B2G1646F DDR3L (board revision v1.03),   |
|          | or 512 MB unknown module (board revision v1.02 and older) |
| Flash    | 32 MB Macronix MX25L25645G SPI NOR,                       |
|          | 29 MiB usable by OpenWrt                                  |
| Ethernet | 4x SFP+ via SoC (10G/2.5G/1G),                            |
|          | 4x RJ45 via 4x RTL8261BE PHY (10G/5G/2.5G/1G/100M/10M)    |
| PoE      | only on WP variants                                       |
|          | 1x 802.3bt 90 W (port 5)                                  |
|          | 3x 802.3at 30 W (ports 6, 7, 8)                           |
|          | via daughter board with Hasivo HS104PTI controller        |
|          | PoE works but is unmanaged --> future work                |
| LEDs     | 1x system orange/green, 8x link green/red, 4x PoE orange  |
| Button   | Reset                                                     |
| Console  | RJ45 38400 bps 8n1, or pin holes on SE variants           |

Installing OpenWrt
------------------

Note: With vendor firmware 7.1.9, the bootloader's network profile is broken.
We need to select a different profile with port/phy overlap to make the TFTP
transfer work. Then only port 5 works in the OpenWrt initramfs, but all ports
work fine after flashing, when we don't need the profile trick anymore.

1. Attach to RJ45 serial console port using a cisco cable.
2. Attach your computer to Port 5 (the first RJ45 port).
3. Serve initramfs-kernel.bin on TFTP 192.168.1.111.
4. Power on the device.
5. Interrupt U-Boot by pressing `Ctrl+C`, then `Z`, then `H`, during 3 second countdown.
6. Run: `setenv boardmodel 'RTL9303_5x8261BE_2XGE_ZHIHUI' ; rtk network on`
7. Run: `tftpboot 0x84f00000 initramfs-kernel.bin ; bootm 0x84f00000`
8. Use `mtd dump` to make backups of all flash partitions.
9. Use SCP to copy `squashfs-sysupgrade.bin` to the device, then run `sysupgrade`.

Restoring factory firmware
--------------------------

OpenWrt uses the `RUNTIME` and `RUNTIME2` partitions as one combined partition.
To restore them from backups, boot from `initramfs-kernel.bin` just like during
the installation, then use `mtd write` to write your backups of the factory
`mtd5` and `mtd6` partitions.

Notes/Quirks
------------

- U-Boot interruption is obfuscated. Press `Ctrl+C`, then `Z`, then `H`,
  during the 3 second countdown.
- U-Boot rtk network profile is broken. Use the `RTL9303_5x8261BE_2XGE_ZHIHUI` profile
  instead, it makes at least port 5 work.
- MAC address is stored on the `RUNTIME` or `RUNTIME2` partitions, which are used by OpenWrt.
  Instead, we generate one random MAC address and store it in the U-Boot environment.
- PoE works but is unmanaged. The HS104 driver is worked on in
  https://github.com/openwrt/openwrt/pull/22245 and will work with ethtool and the
  kernel's new `pse-pd` subsystem.

Signed-off-by: Lars Gierth <larsg@systemli.org>
Link: https://github.com/openwrt/openwrt/pull/23020
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-28 22:10:00 +02:00
John Audia
755e6e5ed4
linux-firmware: update to 20260519
% git log --no-merges --pretty=oneline --abbrev-commit 20260410...20260519
2f90f4fe5c67 ASoC: tas2783: Add Firmware files for tas2783A projects
238e3a14b64b linux-firmware: add firmware for MT7927 WiFi device
1b9b0fbf2d85 Add HP ISH firmware for Intel Panther Lake systems
4ea6552ba82d ti: Add PCM6240 firmware with multiple audio profiles support
a21fb799c496 qcom: add CDSP firmware for shikra platform
87e59b4701dd amdgpu: DMCUB updates for various ASICs
321c5c3195b8 qcom: update ADSP firmware for x1e80100 platform
1290919565f9 lt*_fw.bin: move to Lontium subdir
d2e0a05bbbd1 qcom: Add cdsp1r.jsn for sa8775p platform
7a8ddf10f67d amdgpu: rembrandt DMCUB v4.0.74.0
dec60417e513 linux-firmware: Add firmware for Lontium LT9611C
fb0889c0d3de xe: Update GUC to v70.65.0 for LNL, BMG, PTL
3dd246799540 amdgpu: update SMU 14.0.3 kicker firmware
dbb56961ead8 amdgpu: update navy flounder firmware
21af5fe0422f amdgpu: update SDMA 6.1.3 firmware
aa91bd8573d1 amdgpu: update PSP 14.0.5 firmware
68049393d5d4 amdgpu: update GC 11.5.3 firmware
0924d64e216d amdgpu: update yellow carp firmware
39d7abb0c9fa amdgpu: update VCN 5.0.0 firmware
5ff473283bf1 amdgpu: update PSP 14.0.3 firmware
e6f6fdd4ad2a amdgpu: update GC 12.0.1 firmware
472586fd9eac amdgpu: update VPE 6.1.3 firmware
5942cfb5487d amdgpu: update SDMA 6.1.2 firmware
1343c08dd15c amdgpu: update PSP 14.0.4 firmware
59e6ce956f97 amdgpu: update GC 11.5.2 firmware
2a12d06438f2 amdgpu: update PSP 14.0.2 firmware
bb95ff5c914f amdgpu: update GC 12.0.0 firmware
37ade0c7205b amdgpu: update sienna cichlid firmware
bfbd965f8839 amdgpu: update VCN 3.1.2 firmware
5c75f58bd82a amdgpu: update PSP 13.0.5 firmware
c2f407e38895 amdgpu: update GC 10.3.6 firmware
fae4beb09486 amdgpu: update VCN 4.0.4 firmware
fa4afb3116e4 amdgpu: update SDMA 6.0.2 firmware
d959c79c63b4 amdgpu: update PSP 13.0.7 firmware
e89391b4b91c amdgpu: update GC 11.0.2 firmware
e8df2b87fc5f amdgpu: update navi14 firmware
d16d7da80b95 amdgpu: update SDMA 6.0.3 firmware
75d99d4ebe1f amdgpu: update PSP 13.0.10 firmware
6dc4bf52e586 amdgpu: update GC 11.0.3 firmware
06f06f8378bb amdgpu: update navi12 firmware
c0132eeaec47 amdgpu: update vangogh firmware
00109c672c23 amdgpu: update navi10 firmware
6bc21819c102 amdgpu: update green sardine firmware
9f3ccdf673cc amdgpu: update PSP 13.0.0 kicker firmware
d00803ea1b88 amdgpu: update VCN 4.0.0 firmware
12715bb901e7 amdgpu: update SDMA 6.0.0 firmware
1960eb3ec865 amdgpu: update PSP 13.0.0 firmware
d1363e897346 amdgpu: update GC 11.0.0 firmware
68be13f1422b amdgpu: update SDMA 4.4.4 firmware
e086a9c4f819 amdgpu: update VCN 5.0.1 firmware
cb8c635cb280 amdgpu: update PSP 13.0.12 firmware
a00faff4e370 amdgpu: update GC 9.5.0 firmware
6997f8cc462d amdgpu: update SDMA 4.4.5 firmware
b04f8515c3a7 amdgpu: update PSP 13.0.14 firmware
08c008bef3e5 amdgpu: update VPE 6.1.1 firmware
c3f882e6ff02 amdgpu: update VCN 4.0.6 firmware
fd629bbf8365 amdgpu: update SDMA 6.1.1 firmware
42a0642a7881 amdgpu: update PSP 14.0.1 firmware
62dfb617c8f6 amdgpu: update GC 11.5.1 firmware
fc8d40beffc2 amdgpu: update PSP 13.0.11 firmware
3ee38497f3f8 amdgpu: update GC 11.0.4 firmware
72c6e45ecaee amdgpu: update beige goby firmware
0b9330f11138 amdgpu: update VCN 4.0.3 firmware
0eedad7763a8 amdgpu: update SDMA 4.4.2 firmware
f30853cced89 amdgpu: update PSP 13.0.6 firmware
94b4108ecf55 amdgpu: update GC 9.4.3 firmware
f3ac5b46667c amdgpu: update VPE 6.1.0 firmware
7982621581e3 amdgpu: update VCN 4.0.5 firmware
889bcab02fd1 amdgpu: update SDMA 6.1.0 firmware
a6422828b542 amdgpu: update PSP 14.0.0 firmware
e559dd46ec6a amdgpu: update GC 11.5.0 firmware
d3074835ee00 amdgpu: update VCN 4.0.2 firmware
b9d2ce0e0ce6 amdgpu: update SDMA 6.0.1 firmware
bcd00e14c880 amdgpu: update PSP 13.0.4 firmware
dd067330ca05 amdgpu: update GC 11.0.1 firmware
0ace74c183b0 amdgpu: update dimgrey cavefish firmware
baa74997c081 amdgpu: update renoir firmware
f233a517c46e amdgpu: update aldebaran firmware
59ea796e7015 rtl_bt: Add missing rtl8761a_config.bin for RTL8761AU
b9a35af9f69b amdgpu: DMCUB updates for various ASICs
9701f2d151af Linux-firmware: Add Dell ISH firmware 581.7783.0 for Intel Panther Lake systems.
af7f25c1a3e8 qcom: update ADSP firmware for x1e80100 platform
530ac96c5dcb linux-firmware:Add firmware for Lontium LT7911EXC bridge
92b146e268b1 qcom/x1e80100/dell: mark that qcom/NOTICE.txt is applicable too
0cbdd055b089 qcom: Update CDSP firmware for Kaanapali platform
d85214426650 qcom: vpu: add Gen2 firmware binary for Agatti
79fdaa874dd4 amdgpu: DMCUB updates for various ASICs
d4e97389c0c0 linux-firmware: Add firmware file for Intel BlazarIW
2f2ece2a354e linux-firmware: Add firmware file for Intel ScorpiusGfp2 core
516559a30542 linux-firmware: Add firmware file for Intel BlazarIGfp2 core
157d0ab4184c linux-firmware: Update firmware file for Intel BlazarU-HrPGfP core
6e32025feb2a linux-firmware: Update firmware file for Intel BlazarU core
ca5c0d6dc291 linux-firmware: Update firmware file for Intel Scorpius core
7df47664dd1d linux-firmware: Update firmware file for Intel BlazarI core
ac6960e346e6 qcom: Update ADSP firmware for Glymur platform
c8949c63516c mediatek MT7925: update bluetooth firmware to 20260414153243
b981cd3786e8 linux-firmware: update firmware for MT7925 WiFi device
2dc39aa6bbd6 Revert "linux-firmware: Update firmware file for Intel Quasar core"
9a8575e403b9 qcom: Add gpdspr.jsn for qcs8300 platform
17f67c01d5cb ath12k: QCC2072 hw1.0: add to WLAN.COL.1.0.c2-00074-QCACOLSWPL_V1_TO_SILICONZ-1
395b087f655d ath12k: QCC2072 hw1.0: add board-2.bin
f083d1af6c0d ath12k: IPQ5424 hw1.0: add to WLAN.WBE.1.6-01275-QCAHKSWPL_SILICONZ-1
da9dd85ef7e4 ath12k: IPQ5424 hw1.0: add board-2.bin
c3ab9e9d0c49 qcom: Update ADSP firmware for Kaanapali platform
604cb45fbe6d cirrus: cs35l56: Add firmware for Cirrus Amps for some Lenovo laptops
fd246bfaf937 cirrus: cs35l56: Add firmware for Cirrus Amps for some Lenovo laptops (17aa235c 17aa235d)
5f99e9952fe4 QCA: Update Bluetooth WCN6856 firmware 2.1.0-00665 to 2.1.0-00666
75f520719af8 amdgpu: DMCUB updates for DCN36
8c0d4738ee35 linux-firmware: Update AMD cpu microcode
fe1a0a75caa6 powervr: update Imagination Rogue firmware images
d06d0303836b qcom: Update ADSP firmware for Kaanapali platform
a3d046ca8eee i915: Xe3LPD DMC v2.34
a9488d15e031 i915: Xe3LPD_3002 DMC v2.29
4bedb0e45e82 qcom: Update ADSP firmware for QCM6490 platform
cfb7366afd8f firmware/amdgpu: Update DMCUB fw to Release 0.1.55.0
c6c7a3f2cd47 mediatek: vpu: drop old sym link

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/23440
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-28 21:53:41 +02:00
Markus Stockhausen
fc61e795ee realtek: mach: specify alignment topology
The kernel has two helper defines that guide about hardware
characteristics.

MIPS_L1_CACHE_SHIFT defines the cache line sizes (1<<x) of the
target. It defaults to 5 - so it is assumed that the device has
a cache line size of 32 bytes. This is not true for MIPS 4KEc
cores that are driving the RTL838x SOCs. These cores have 16
byte cache line sizes. Adapt the CONFIG properties for this
target to match the hardware.

ARCH_DMA_MINALIGN definies the alignment for memory allocations.
Other than its name suggests on MIPS devices that have non
coherent DMA kmalloc() respects this configuration. This ensures
that no normal memory is corrupted by DMA blocks that share the
same cache line.

The default for this is 128 bytes. And kernel states itself
"Total overkill for most systems but need as a safe default. Set
this one if any device in the system might do non-coherent DMA".

Realtek devices use non coherent DMA so they are affected by the
setting of ARCH_DMA_MINALIGN. Set this to cache line size for
all devices to reduce memory waste.

Link: https://github.com/openwrt/openwrt/pull/23492
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-05-28 21:02:24 +02:00
Lorenzo Bianconi
0324d9e4e0
airoha: apply minor fix for MTU and LRO for ethernet driver
Apply minor fixup for PPE_MTU configuration and LRO queue configuration.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ improve commit title/description ]
Link: https://github.com/openwrt/openwrt/pull/23566
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-05-28 11:45:40 +02:00
Robert Marko
7f6ae9d34b qualcommbe: 6.18: refresh config
Lets refresh the config as generic config was wastly updated, and we
need the CONFIG_PAGE_BLOCK_MAX_ORDER to be defined.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-05-28 10:47:03 +02:00
Robert Marko
df660e89c4 qualcommbe: 6.18: refresh patches
Lets make the PCS one actually apply and refresh the rest.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-05-28 10:47:03 +02:00
Lech Perczak
aadcb4abef ath79: add Cisco Meraki Z1
Specifications:

SOC:	Atheros AR9344 @ 560MHz
RAM:	2x Winbond W9751G6KB-25 (128 MiB)
FLASH:	Hynix H27U1G8F2BTR (128 MiB)
WIFI1:	Atheros AR9340 5.0GHz (SoC)
WIFI2:	Atheros AR9280 2.4GHz
SWITCH:	Atheros AR8327 (5x Gigabit (1x WAN, 4x LAN)
LED:	1x Power-LED, 1 x RGB Tricolor-LED
INPUT:	One Reset Button
USB:	One USB 2.0 Port
UART:	JP1 on PCB (Labeled UART), 3.3v-Level, 115200n8
        (GND, TX, RX, VCC - GND is next to the UART silk screen)

Flashing Instructions:

If your device still has vulnerable firmware, then existing installation
instructions can be used. Devices currently running ar71xx firmware can
be upgraded directly, although ar71xx firmware will complain,
because of changed metadata format. So you'll have to force the upgrade.

If your firmware is too new, there are two options
- temporarily adding a SPI-NOR flash to boot initramfs from
  (recommended)
- patching NAND image with initramfs with external programmer
  (recommended if and only if you have access to 360-clip, or
  similar device, that doesn't require desoldering a TSOP48 chip))

Since this device is brought over from an old AR71xx, there's
already a wiki-page with detailed instructions:
<https://openwrt.org/toh/meraki/z1>

Installing from SPI-NOR:
- Download pre-built image from
  <https://github.com/Leo-PL/OpenWrt-Meraki-Z1>
  or assemble your own by splicing
  router-u-boot <https://github.com/CodeFetch/router-u-boot>
  image for TP-Link WDR4300 with Z1 initramfs in uImage format.
  To build uImage initramfsf from source, remove the "KERNEL_INITRAMFS"
  variable from target/linux/ath79/image/nand.mk for Z1.
  Put the U-boot image at offset 0, initramfs at offset 131072.
- Write the image to an 8MB (or greater) SPI flash
- Temporarily bridge - or solder in a 220-ohm resistor between pins 6
  and 8 of the SPI-NOR chip to override boot source to SPI
- When the initramfs first boots, write the standard initramfs to NAND,
  to both 'kernel' and 'recovery' partitions

  $ mtd write /tmp/openwrt-ath79-nand-meraki_z1-initramfs-kernel.bin kernel
  $ mtd write /tmp/openwrt-ath79-nand-meraki_z1-initramfs-kernel.bin recovery

  Now you can disconnect the resistor and try to boot the system from
  NAND. If it works, continue with installation, as described for legacy
  method using vulnerable stock firmware.
- When done, you can remove SPI-NOR chip and the resistor altogether,
  it can be reused to perform installation on other devices,
  or act as a recovery boot source if needed, if the recovery initramfs
  fails for any reason.

Installing by patching NAND
- If you'd like to desolder NAND to perform this, I highly advise
  against it, use SPI-NOR method above instead.
- If you have external programmer and a NAND clip, read out the whole
  chip image, while keeping the device in reset by shorting SRST
  (pin 11) to ground in JTAG connector,
  and store a backup in a safe place.
- Patch the chip image with initramfs for raw NAND from
  <https://github.com/Leo-PL/OpenWrt-Meraki-Z1>, by using a script
  there, or manually:

  $ dd if=openwrt-ath79-nand-meraki_z1-initramfs-kernel-rawnand.bin of=z1_dump.img bs=135168 seek=1 conv=notrunc
  $ dd if=openwrt-ath79-nand-meraki_z1-initramfs-kernel-rawnand.bin of=z1_dump.img bs=135168 seek=65 conv=notrunc

  This will write the initramfs to both kernel and recovery partitions,
  which is highly recommended, as due to device architecture it is
  notoriously hard to unbrick.
- Write the image back to the NAND, again, keeping the CPU in the reset.
- When the unit boots to initramfs, proceed as per existing instructions
  for volnerable firmware.

Legacy installation on vulnerable stock firmware:
The gist:
1. Get a root-shell on the device (see wiki). (needs UART access)
2. make a backup (to a PC/safe location) of the existing Meraki
   firmware.
3. copy over the OpenWrt initramfs kernel for the Z1.
   This gets written into the kernel NAND partition.
   (Verify that written image is complete!)

After the following reboot and successfull boot of the staging
OpenWrt initramfs image:

4. Free up space by removing Meraki firmware partitions from UBI volume
   to free up space for OpenWrt (example given for the latest wired-14
   version):
   $ ubirmvol -N storage /dev/ubi0
   $ ubirmvol -N rootfs-wired-14-202005181203-G201ba9ed-rel-gazebo-1 /dev/ubi0
   $ ubirmvol -N rootfs-wired-14-202005181203-G201ba9ed-rel-gazebo-2 /dev/ubi0

4. copy over the sysupgrade.bin for the router and use sysupgrade
   to make the installation permanent.

Notable changes from ar71xx support:
- LED colors are now different, because nu801 userspace driver is used
  for the RGB LED.

Acknowledgments:
- Hal Martin, for providing additional devices for research, including
  one modded for SPI boot and with removable NAND
- Christian Lamparter for initial device tree and image configuration

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>

[Finished support, updated commit message with new installation
methods]
Co-authored-by: Christian Lamparter <chunkeey@gmail.com>
Co-authored-by: Lech Perczak <lech.perczak@gmail.com>
Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17665
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-28 10:38:36 +02:00
Alexandru Gagniuc
cc2d924f81 qualcommbe: enable pwm support for linux 6.18
The 6.18 kernel port and PWM patches were developed independently. the
initial 6.18 port did not include the PWM patches, so add them now.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21506
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-28 10:15:20 +02:00
Alexandru Gagniuc
3de10be03f kernel: crypto-sha512-arm64: do not package with kernel 6.18
Since upstream commit 60e3f1e9b7a5 ("lib/crypto: arm64/sha512:
Migrate optimized SHA-512 code to library"), the kernel module is no
longer available, and its fucntionality os provided by the kernel
core. Thus do not try to package this for linux 6.18 and later.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21506
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-28 10:15:20 +02:00
Alexandru Gagniuc
0b25cef749 qualcommbe: enable 6.18 testing kernel
Now that everything is in place for kernel 6.18, enable it as a
testing kernel for qualcommbe.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21506
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-28 10:15:20 +02:00
Alexandru Gagniuc
809ca978d1 qualcommbe: kernel-6.18: update patches
Generate new patches for 6.18 from my ipq95xx development branch.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21506
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-28 10:15:20 +02:00