Commit Graph
129 Commits
Author SHA1 Message Date
Satoshi Ikeuchi a1743ae5cc qualcommbe: add Bluetooth support for Linksys LN6001
Enable the Bluetooth UART and pin configuration for Linksys Velop WRT
Pro 7 (LN6001/MBE70). Describe the ISP and reset outputs through the
existing named GPIO export mechanism, holding both high at boot.

Select the generic bluetooth-uart package in DEVICE_PACKAGES so images
include kmod-hci-uart and BlueZ btattach through its dependencies.
Initialize the LN6001 UCI defaults to attach /dev/ttyMSM1 using H4 at
115200 baud. Preserve already configured UARTs, including disabled ones.
The generic package remains disabled until a board or user configures it.

The combined series passed cold-start controller initialization, LE
discovery, connection and service discovery without a userspace reset
pulse. Keep Bluetooth support separate from Wi-Fi enablement.

Signed-off-by: Satoshi Ikeuchi <satosan.ikm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/25594
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-10-05 13:55:37 +02:00
Satoshi Ikeuchi 614d968227 qualcommbe: add Linksys LN6001 support
Add wired support and an eMMC A/B sysupgrade path for the Linksys LN6001.
Write and verify the inactive kernel/rootfs pair before changing the boot
selectors. Confirm an installed boot by clearing the s_env boot counter
and updating its checksum.

Identify the board as IPQ9554, using the shared ipq9574.dtsi and family
fallback compatible. Disable the absent UNIPHY1 block and provide the
board clocks required by eMMC, MDIO and PWM. Let U-Boot populate memory
size, use the default GPIO-key debounce and allow 10 ms for QCA8081 reset
assertion while retaining the 150 ms deassertion delay. Use decimal 28
for the QCA8081 PHY address. The assertion delay follows the QCA8081
precedent in 904aa43865.

Return to common upgrade cleanup and reboot after safe staging failures,
while stopping on uncertain boot selector state.

Hardware specification:

- SoC: Qualcomm IPQ9554
- RAM: 1 GiB DDR4
- Flash: 8 GB Samsung 8GTF4R eMMC
- Ethernet: four 1 GbE LAN ports through QCA8075 over PSGMII
- Ethernet: one 2.5 GbE WAN port through QCA8081
- LEDs: red, green, blue and white PWM status channels
- Buttons: reset and WPS GPIO keys
- UART: 115200 8N1
- Power: 12 V, 2.5 A
- Wireless and Bluetooth: not enabled

Installation:

The initial installation uses serial access and an OpenWrt RAM boot.
Keep a bootable stock slot and start with that slot selected. The updater
accepts only the observed retail GPT geometry, matching bootconfig copies,
boot_part_ready=3, auto_recovery=yes and matching Wi-Fi firmware slots.
It does not repair an inconsistent layout or selector state.

Copy this image to the TFTP server as ln6001-initramfs.itb:

openwrt-qualcommbe-ipq95xx-linksys_ln6001-initramfs-uImage.itb

Connect Ethernet to LAN4 and configure the TFTP server as 192.168.1.254/24.
Interrupt U-Boot autoboot through the serial console and run:

setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.254
setenv netmask 255.255.255.0
tftp 0x4d100000 ln6001-initramfs.itb
bootm 0x4d100000#config@1

Do not save these temporary network settings or write the initramfs FIT
to eMMC. In RAM-booted OpenWrt, transfer the following image to
/tmp/ln6001-sysupgrade.bin:

openwrt-qualcommbe-ipq95xx-linksys_ln6001-squashfs-sysupgrade.bin

Check the selected slot and validate the image, then install:

fw_printenv boot_part boot_part_ready auto_recovery
sysupgrade -T /tmp/ln6001-sysupgrade.bin
sysupgrade -n /tmp/ln6001-sysupgrade.bin

Run the last command only after validation succeeds. boot_part=1 selects
A and installation writes B; boot_part=2 selects B and installation
writes A. Do not force a failed check. The sysupgrade archive is not a
Linksys web-update image. Subsequent OpenWrt sysupgrades use the same
inactive-slot path; omit -n to request preservation of OpenWrt settings.

Recovery:

The serial TFTP/bootm procedure remains available without depending on
the installed rootfs. Before installation, resetting a RAM-only session
returns to the selected existing firmware. After installation, a normal
reboot uses the newly selected slot and does not itself return to stock.

With consistent selector copies and environment, a recovery RAM boot can
run the same checked sysupgrade path. Inconsistent selectors are rejected;
do not bypass these checks. Keep serial access and a bootable other slot.

Partition and MAC address handling:

Discover the existing GPT at runtime and require the retail partition
labels, starts and sizes before writing. Preserve the GPT, bootloader,
devinfo and both Wi-Fi firmware payloads. The upgrade writes the inactive
HLOS/rootfs pair, then updates both bootconfig selector sectors and the
boot_part environment variable. Successful installed boots clear the
boot counter and update its checksum in s_env after verifying the active
slot. A stale checksum on an already-zero counter is repaired as well.

Read hw_mac_addr from devinfo through read-only block NVMEM. Stock LAN
and WAN use the same base address; assign offset zero to all five wired
ports. Configuration persists in a per-slot F2FS overlay.

Validation:

Retail-hardware testing passed RAM boot with U-Boot supplying 1
GiB RAM, and sysupgrade -n from stock-selected A into B followed
by two successful installed boots. The boot-count record
contained a zero count and valid checksum after both boots. F2FS
remained writable and a UCI setting persisted across reboot.
Kernel/rootfs readback matched the image; full stock A hashes and
non-selector protected partition hashes were unchanged.

LAN4 linked at 1 Gbps. WAN-to-WAN testing against a stock LN6001
negotiated 2500 Mbps full duplex at both ends and recovered to
that rate after cable replug without reboot or interface reset.
Normal and full-MTU IPv6 pings passed without loss before and
after replug. Separate four-stream TCP endpoint tests measured
2.313 Gbit/s received by this image and 2.311 Gbit/s by the peer,
then 2.316 Gbit/s received after replug. These are router-local
tests, not forwarding benchmarks. One RX error at the
disconnected checkpoint did not increase during subsequent
traffic; TX and peer RX/TX error counters remained zero.

Fifteen local synthetic tests cover boot-counter checksum
validation and repair, write/readback failures, upgrade guards
and safe return versus deliberate halt. Seven temporary-file
bootcount test groups also passed on the device. Real boot
selectors were not corrupted for failure tests. Image-macro
checks confirm sysupgrade.bin only with the size guard retained.

Signed-off-by: Satoshi Ikeuchi <satosan.ikm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24736
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-27 11:28:20 +02:00
krava e8ca976eff qualcommbe: fix PPE EDMA RX DMA mappings
EDMA maps RX fill buffers with DMA_TO_DEVICE but unmaps them with DMA_FROM_DEVICE. Use DMA_FROM_DEVICE consistently, release mappings left on RX rings during teardown, and flush ring-disable writes before descriptor cleanup.

Signed-off-by: krava <igor.kravchenko05@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24218
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-25 21:46:38 +02:00
Robert Marko da141cba5c qualcommbe: ipq957x: add reset to SDHCI controller
Add a pending upstream patch[1] to add the reset to the SDHCI controller.
This allows it to reset itself on probe and avoids warnings due to leftover
bootloader configuration.

[1] https://patchwork.kernel.org/project/linux-arm-msm/patch/20260925191706.1579990-1-robert.marko@sartura.hr/
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-09-25 21:21:30 +02:00
Jackie Han 2c0a72ffe9 qualcommbe: ipq95xx: SBE1V1K: fix boot failure via kernel loadaddr
The Charter Spectrum SBE1V1K fails to boot with the default kernel
load address. The device gets stuck early in the boot process due to
the stock bootloader encountering memory overlap or alignment issues
with the default `0x41000000` address.

Changing `KERNEL_LOADADDR` to `0x42200000` resolves the boot failure
and ensures stable operation.

Why `0x42200000` instead of `0x42000000`?
While testing showed that `0x42000000` also boots successfully,
`0x42200000` was explicitly chosen for two primary safety reasons:

1. Avoid U-Boot `loadaddr` Overlap: On many QCA/IPQ platforms,
   `0x42000000` is commonly used as the default `loadaddr` to fetch
   the FIT image into memory. Setting the extraction destination
   (`KERNEL_LOADADDR`) to the exact same base address risks in-place
   decompression overlaps.
2. Reserved Memory Buffer: The memory range below `0x42000000`
   is heavily utilized by TZ, SMEM, and vendor-specific reserved
   memory in newer Askey firmwares. Adding a 2MB aligned offset
   (`0x200000`) provides a safer buffer against shifting vendor
   memory boundaries in future OEM bootloader updates, while still
   strictly satisfying the ARM64 2MB alignment requirement.

This fix and the `0x42200000` address have been successfully tested
on actual SBE1V1K hardware by community member motolav.

Link: https://forum.openwrt.org/t/spectrum-sbe1v1k-ipq9574-openwrt-support/245244/262
Tested-by: motolav <https://forum.openwrt.org/u/motolav>

Signed-off-by: Jackie Han <jackie.han@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/25344
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-24 15:07:58 +02:00
Jackie Han f6442c8840 qualcommbe: ipq95xx: drop KERNEL_LOADADDR for askey_sbe1v1k
askey_sbe1v1k currently sets KERNEL_LOADADDR to 0x42080000, which is not
2MB-aligned. This trips the arm64 boot code's alignment check and
prints the following warning on every boot:

  [Firmware Bug]: Kernel image misaligned at boot, please fix your
  bootloader!

0x42080000 is a 2MB-aligned base plus the legacy TEXT_OFFSET of
0x80000, which arm64 kernels used before v5.8. Since v5.8, TEXT_OFFSET
is fixed at 0, so the kernel now expects the load address itself to sit
on a 2MB boundary. This target runs on much newer kernels, so the old
offset is stale and only serves to trigger the FW_BUG warning.

Instead of manually shifting the address, drop the device-specific
KERNEL_LOADADDR override entirely. This allows the image to fall back
to the target's default load address (0x41000000), which is properly
2MB-aligned and cleanly resolves the alignment warning.

Verified by both TFTP-booting the .itb and flashing the generated
sysupgrade image to a physical bare-metal device. The device boots
cleanly, operates stably, and the misalignment warning no longer appears.

Signed-off-by: Jackie Han <jackie.han@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/25283
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-22 10:03:38 +02:00
Robert Marko 928cd26bd9 generic: 6.18: add CONFIG_QCOMTEE
It showed up after a kernel refresh on qualcommax, as it only shows up
with ALL_KMODS.

So, to avoid dropping it again from target config, move it to generic.

Fixes: 4f9740c734 ("qualcommax: refresh config")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-17 11:15:04 +02:00
Robert Marko b6e9ec5cfc treewide: drop CONFIG_VIDEO_QCOM_IRIS from target configs
Now that its disabled in generic config, we can drop it from individual
target configs.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-17 00:20:32 +02:00
John Audia ddbf9c8557 kernel: bump 6.18 to 6.18.52
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.52

Removed upstreamed:
  linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch[1]
  linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch[2]
  linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch[3]
  linux/airoha/patches-6.18/111-v6.19-wifi-mt76-Introduce-the-NPU-generic-layer.patch[4]
  linux/airoha/patches-6.18/113-v6.19-pinctrl-airoha-Fix-AIROHA_PINCTRL_CONFS_DRIVE_E2.patch[5]
  linux/airoha/patches-6.18/180-03-v7.2-pinctrl-airoha-an7583-add-missed-gpio32-pin-group.patch[6]
  linux/airoha/patches-6.18/180-05-v7.2-pinctrl-airoha-an7583-fix-misprint-in-gpio19-pinconf.patch[7]
  linux/airoha/patches-6.18/180-06-v7.2-pinctrl-airoha-an7581-fix-incorrect-led-mapping-in-p.patch[8]
  linux/airoha/patches-6.18/180-07-v7.2-pinctrl-airoha-an7583-fix-incorrect-led-mapping-in-p.patch[9]
  linux/airoha/patches-6.18/180-08-v7.2-pinctrl-airoha-fix-pwm-pin-function-for-an7581-and-a.patch[10]
  linux/airoha/patches-6.18/180-09-v7.2-pinctrl-airoha-an7583-fix-gpio21-pin-group.patch[11]
  linux/airoha/patches-6.18/180-10-v7.2-pinctrl-airoha-an7583-add-missed-gpio22-pin-group.patch[12]
  linux/airoha/patches-6.18/180-11-v7.2-pinctrl-airoha-an7583-fix-phy1_led1-pin-function.patch[13]
  linux/airoha/patches-6.18/180-12-v7.2-pinctrl-airoha-an7583-remove-undefined-groups-from-p.patch[14]
  linux/airoha/patches-6.18/202-01-v7.3-pinctrl-airoha-fix-mdio-bitfield-names.patch[15]
  linux/airoha/patches-6.18/202-02-v7.3-pinctrl-airoha-an7581-fix-pinconf-of-i2c_scl-i2c.patch[16]
  linux/airoha/patches-6.18/202-03-v7.3-pinctrl-airoha-an7583-fix-I2C0_SDA_PD-register-b.patch[17]
  linux/airoha/patches-6.18/202-04-v7.3-pinctrl-airoha-an7581-fix-mux-conf-of-pcie_reset.patch[18]
  linux/airoha/patches-6.18/202-05-v7.3-pinctrl-airoha-an7583-fix-muxing-of-non-gpio-def.patch[19]
  linux/airoha/patches-6.18/202-09-v7.3-pinctrl-airoha-an7583-fix-spi-group-pins.patch[20]
  linux/airoha/patches-6.18/202-10-v7.3-pinctrl-airoha-add-missed-get_direction-function.patch[21]
  linux/airoha/patches-6.18/202-13-v7.3-pinctrl-airoha-fix-getting-gpiochip-pinctrl-poin.patch[22]
  linux/airoha/patches-6.18/202-14-v7.3-pinctrl-airoha-add-missed-IRQ-resource-helpers.patch[23]
  linux/airoha/patches-6.18/202-15-v7.3-pinctrl-airoha-fix-IRQ-mask-unmask-code.patch[24]
  linux/airoha/patches-6.18/202-16-v7.3-pinctrl-airoha-fix-edge-triggered-interrupts-han.patch[25]
  linux/apm821xx/patches-6.18/100-powerpc-44x-Set-GPIO-chip-firmware-node.patch[26]
  linux/econet/patches-6.18/042-01-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch[27]
  linux/econet/patches-6.18/042-02-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch[28]
  linux/econet/patches-6.18/042-03-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch[29]
  linux/econet/patches-6.18/042-04-v6.19-pinctrl-airoha-Fix-AIROHA_PINCTRL_CONFS_DRIVE_E2.patch[30]
  linux/realtek/patches-6.18/032-01-v7.2-irqchip-irq-realtek-rtl-Add-simplify-register-helper.patch[31]
  linux/realtek/patches-6.18/032-02-v7.2-irqchip-irq-realtek-rtl-Add-multicore-support.patch[32]
  linux/realtek/patches-6.18/038-v7.3-irqchip-irq-realtek-rtl-change-to-__raw-reads-and-writes.patch[33]
  linux/econet/patches-6.18/043-03-v7.2-pinctrl-airoha-an7583-add-missed-gpio32-pin-group.patch[34]
  linux/econet/patches-6.18/043-04-v7.2-pinctrl-airoha-an7583-fix-misprint-in-gpio19-pinconf.patch[35]
  linux/econet/patches-6.18/043-05-v7.2-pinctrl-airoha-an7581-fix-incorrect-led-mapping-in-p.patch[36]
  linux/econet/patches-6.18/043-06-v7.2-pinctrl-airoha-an7583-fix-incorrect-led-mapping-in-p.patch[37]
  linux/econet/patches-6.18/043-07-v7.2-pinctrl-airoha-fix-pwm-pin-function-for-an7581-and-a.patch[38]
  linux/econet/patches-6.18/043-08-v7.2-pinctrl-airoha-an7583-fix-gpio21-pin-group.patch[39]
  linux/econet/patches-6.18/043-09-v7.2-pinctrl-airoha-an7583-add-missed-gpio22-pin-group.patch[40]
  linux/econet/patches-6.18/043-10-v7.2-pinctrl-airoha-an7583-fix-phy1_led1-pin-function.patch[41]
  linux/econet/patches-6.18/043-11-v7.2-pinctrl-airoha-an7583-remove-undefined-groups-from-p.patch[42]
  linux/econet/patches-6.18/044-01-v7.3-pinctrl-airoha-fix-mdio-bitfield-names.patch[43]
  linux/econet/patches-6.18/044-02-v7.3-pinctrl-airoha-an7581-fix-pinconf-of-i2c_scl-i2c.patch[44]
  linux/econet/patches-6.18/044-03-v7.3-pinctrl-airoha-an7583-fix-I2C0_SDA_PD-register-b.patch[45]
  linux/econet/patches-6.18/044-04-v7.3-pinctrl-airoha-an7581-fix-mux-conf-of-pcie_reset.patch[46]
  linux/econet/patches-6.18/044-05-v7.3-pinctrl-airoha-an7583-fix-muxing-of-non-gpio-def.patch[47]
  linux/econet/patches-6.18/044-09-v7.3-pinctrl-airoha-an7583-fix-spi-group-pins.patch[48]
  linux/econet/patches-6.18/044-10-v7.3-pinctrl-airoha-add-missed-get_direction-function.patch[49]
  linux/econet/patches-6.18/044-13-v7.3-pinctrl-airoha-fix-getting-gpiochip-pinctrl-poin.patch[50]
  linux/econet/patches-6.18/044-14-v7.3-pinctrl-airoha-add-missed-IRQ-resource-helpers.patch[51]
  linux/econet/patches-6.18/044-15-v7.3-pinctrl-airoha-fix-IRQ-mask-unmask-code.patch[52]
  linux/econet/patches-6.18/044-16-v7.3-pinctrl-airoha-fix-edge-triggered-interrupts-han.patch[53]
  linux/mvebu/patches-6.18/101-arm64-dts-armada-3720-turris-mox-fix-usb3-phys.patch[54]
  linux/qualcommax/patches-6.18/0085-v7.3-arm64-dts-qcom-ipq5018-Correct-CMN-PLL-reference-clock-rate.patch[55]
  linux/qualcommax/patches-6.18/0090-v7.3-arm64-qcom-ipq5018-Add-GEPHY-RX-and-TX-clocks.patch[56]
  linux/realtek/patches-6.18/032-04-v7.3-irqchip-irq-realtek-rtl-Add-interrupt-data-structure.patch[57]
  linux/realtek/patches-6.18/032-05-v7.3-irqchip-irq-realtek-rtl-Add-mask-for-interrupt-handl.patch[58]
  linux/realtek/patches-6.18/032-03-v7.3-irqchip-irq-realtek-rtl-Use-helper-for-parent-setup.patch[59]

Manually rebased:
  linux/generic/hack-6.18/200-tools_portability.patch
  linux/airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch
  linux/airoha/patches-6.18/202-17-v7.3-pinctrl-airoha-remove-not-needed-irq_type-array.patch
  linux/airoha/patches-6.18/402-01-thermal-airoha-convert-to-regmap-API.patch
  linux/econet/patches-6.18/043-02-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch
  linux/econet/patches-6.18/044-17-v7.3-pinctrl-airoha-remove-not-needed-irq_type-array.patch
  linux/mediatek/patches-6.18/361-clk-mediatek-add-clock-driver-for-mt7987-from-sdk.patch
  linux/octeon/patches-6.18/105-staging-octeon-support-EPROBE_DEFER-when-reading-MAC.patch
  linux/realtek/patches-6.18/032-06-v7.3-irqchip-irq-realtek-rtl-Add-a-select-function.patch
  linux/realtek/patches-6.18/032-07-v7.3-irqchip-irq-realtek-rtl-Allow-shuffled-interrupt-ord.patch

Dropped obsolete:
  linux/bcm27xx/patches-6.18/0082-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch

All other patches automatically rebased via update_kernel.sh

For target/linux/x86/generic/config-6.18, added new config option:
  # CONFIG_X86_AMD_PSTATE_DYNAMIC_EPP is not set

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=74c2c5b459b42e23e8b06e5685efb6a4ab39bea1
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=cfe4350fdcb53a31cb91faef26af200c6b8e18c7
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=4bf51df55d7bdbd5f6a694a54fc0a82e41df483a
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=6e9207ac476ca50be95a552d1fc24dfa94a94266
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=0ca274a45eaead8284fb86ebc1782b4488cfd072
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2e7c3c433fd791b95bc2264cab3c27f34e3b88b9
7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=46bae3189cf5c4e37d72a542a717c52b579638c4
8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=caf1e44e672b5c8751f7fbef1708204771d9bb8e
9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=591424f9f5d51acde3ec478ea6c80ad20c6cec87
10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2ad214708259220add587f5a0bd3d7823fc3ed81
11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=cf2e698957b65038ed0bfd27b95aa7baff3d3703
12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=7bca33d6f6e00ea7f9c31bffbfecd4f2713fb2cb
13. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=6d0bcb2153128976038b61220a3297c80d273b22
14. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=5331bf0d5ca05e1d79386e41aeb9622e1a6cadf8
15. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=75ceddfa7df7ef1cee3f8d2b2095eb3b5f61a501
16. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=cbde1169bdd2cfda7b53f31bb0f6a32839c4d04e
17. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=fa27ddca660225863b3c301ad9f52b082af5bba6
18. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2313f262999c72fbc940b3db9fa7e500ff9f7b96
19. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=38a2a4d6c7ac7d183a91f8d95a483884269b8059
20. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=7d2b3f8a996d1c3dceb95a10e766769f2951b92e
21. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=f3b8fe04dbfe3e9aaa00bd1febf2a6a1d600b79a
22. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=9ea692247ee2485e2fdd325bbe40d08fd0606a22
23. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=fda7350f257e59eee1bc7537c202e36bd56aea97
24. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=c7596135e7e9a77db9b34e61e24c7ac4562f88a3
25. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=244d0299008144e5c8f0c52cd23f85e4876ad993
26. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=7969b571ae940da0d429724a1a8ce141feda6583
27. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=74c2c5b459b42e23e8b06e5685efb6a4ab39bea1
28. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=cfe4350fdcb53a31cb91faef26af200c6b8e18c7
29. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=4bf51df55d7bdbd5f6a694a54fc0a82e41df483a
30. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=0ca274a45eaead8284fb86ebc1782b4488cfd072
31. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=a9be52993526640e99b5c49163e9efa9e7f4d93d
32. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=f7d818afcc22532cb9e854b204970a8d790576bf
33. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=5f02599590a4e4eb1dde3d17367b2b58dfe5ac4b
34. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2e7c3c433fd791b95bc2264cab3c27f34e3b88b9
35. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=46bae3189cf5c4e37d72a542a717c52b579638c4
36. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=caf1e44e672b5c8751f7fbef1708204771d9bb8e
37. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=591424f9f5d51acde3ec478ea6c80ad20c6cec87
38. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2ad214708259220add587f5a0bd3d7823fc3ed81
39. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=cf2e698957b65038ed0bfd27b95aa7baff3d3703
40. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=7bca33d6f6e00ea7f9c31bffbfecd4f2713fb2cb
41. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=6d0bcb2153128976038b61220a3297c80d273b22
42. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=5331bf0d5ca05e1d79386e41aeb9622e1a6cadf8
43. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=75ceddfa7df7ef1cee3f8d2b2095eb3b5f61a501
44. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=cbde1169bdd2cfda7b53f31bb0f6a32839c4d04e
45. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=fa27ddca660225863b3c301ad9f52b082af5bba6
46. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2313f262999c72fbc940b3db9fa7e500ff9f7b96
47. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=38a2a4d6c7ac7d183a91f8d95a483884269b8059
48. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=7d2b3f8a996d1c3dceb95a10e766769f2951b92e
49. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=f3b8fe04dbfe3e9aaa00bd1febf2a6a1d600b79a
50. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=9ea692247ee2485e2fdd325bbe40d08fd0606a22
51. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=fda7350f257e59eee1bc7537c202e36bd56aea97
52. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=c7596135e7e9a77db9b34e61e24c7ac4562f88a3
53. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=244d0299008144e5c8f0c52cd23f85e4876ad993
54. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=19ebf0422fe916304220d33f701c5fd8ed7532da
55. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=c9fed0c7056c59294da36e05617ee8f6f629bf74
56. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=4e59a0b78e04884669ac22019a98f2112f834531
57. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=2aa9fcf31f3877311d90ed4519df999e6e684d31
58. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=5aa7bbe0bac89e7b127f0742e5536d02db491c74
59. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.52&id=421615e833d73b4c3bd49953a14fdfc5386c93b2

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/24800
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-16 11:43:34 +02:00
John Audia 5edc3c1b8a kernel: bump 6.18 to 6.18.45
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.45

Manually rebased:
  generic/pending-6.18/804-nvmem-core-support-mac-base-fixed-layout-cells.patch
  generic/pending-6.18/809-01-nvmem-core-generalize-mac-base-cells-handling.patch

Removed upstreamed:
  bcm53xx/patches-6.18/353-ARM-dts-bcm-ns-fix-PCIe-controller-2-second-interrup.patch[1]

All other patches automatically rebased via update_kernel.sh

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.45&id=9e5e88fbfc87d6a9edf72f8febc94061a6d0395e

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/24800
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-16 11:43:33 +02:00
George Moussalem b6a035fc2b generic: update to latest fwnode phylink PCS patches
Backport v7.3 phylink patches to the generic target required for the
latest fwnode phylink PCS patches which support multiple (sub-)targets,
including MTK and qualcommax.

This update includes better PCS release logic, switch to full notifier
add/release PCS handling, devres managed PCS provider variant and
general code improvements.

In addition, update every user to the latest fwnode phylink PCS API.

In the latest API, fwnode_pcs_add_provider() returns a pointer to
the provider or the error code instead of the previous plain return
value. As such, update error handling and add a descriptive error
message upon failure. Also the provider remove logic changed and with
the support of devres API, switch every user to devm_ variant.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
[ improve commit description, refresh patch, update any driver to new API]
Co-Developed-by: Christian Marangi <ansuelsmth@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24973
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2026-09-10 10:22:17 +02:00
Balsam CHIHI 05d2d5626d qualcommbe: fix 1000BASE-X SFP support on IPQ9574
Update the existing 0342-net-qualcomm-Update-IPQ9574-PPE-driver.patch
to fix an oversight in the out-of-tree qcom_ppe driver where
PHY_INTERFACE_MODE_1000BASEX was missing from the MAC speed clock rate
configuration switch statement.

Without this fix, inserting a 1G fiber SFP module into the 10G MAC throws
an -EOPNOTSUPP (-95) error during phylink negotiation, preventing the link
from coming up. Routing 1000BASE-X to the GMII clock helper restores native
1G SFP module hot-swapping on IPQ9574 boards like the 8devices Kiwi-DVK.

Signed-off-by: Balsam CHIHI <balsam.chihi@moment.tech>
2026-08-24 19:38:49 +02:00
Andrew LaMarche 3d902d07a9 qualcommbe: remove source-only
Drop source-only from qualcommbe target as we have some supported
devices now.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21586
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-23 18:07:01 +02:00
Andrew LaMarcheandKenneth Kasilag 31c49dd076 qualcommbe: add support for Askey SBE1V1K
This commit adds support for Askey SBE1V1K.

Device specification
--------------------
SoC:		Qualcomm IPQ9570
RAM:		Micron (2GB)
Flash:		8GB eMMC
Ethernet:	1x 10G RTL8261BE
		1x 2.5G QCA8081
		2x 1G QCA8075
Wi-Fi:		QCN6214 2.4GHz 4x4
		QCN6274 5GHz 4x4
		QCN6274 6GHz 4x4
LEDs:		1 LED, power/status
Buttons:	1 reset
USB ports:	none
Bootloader:	U-Boot 1.0.9 [spf12.2_CSU2] (Jun 28 2024 - 17:47:10 +0000)

Installation (serial required):

**NOTE** This procedure requires glitching the eMMC. It is very possible
that you may damage or corrupt your bootloader in doing so. Proceed with
caution, and always make a full eMMC backup!

**NOTE** If the bootloader has trouble accessing eMMC due to glitching it, any
U-Boot env updates are written directly to the start of flash, overwriting
the bootloader. For this reason, it is strongly NOT recommended to make any
persistent U-Boot env changes from U-Boot itself; do this in Linux.

- Open the chasis and connect to the serial port.
- While booting, short eMMC CLK to UART VCC during FIT image load to enter
  U-Boot.
- setenv ipaddr 192.168.1.1
- setenv serverip 192.168.1.2
**NOTE** DO NOT SAVE THE ENV
- Set your PC IP address to 192.168.1.2 and host the initramfs on a tftp
  server.
- tftpboot 0x44000000 initramfs.itb
- bootm 0x44000000
If you get an error and it reboots, try loading to 0x80000000.

In the initramfs:
- fw_setenv bootargs 'console=ttyMSM0,115200n8 rootwait root=/dev/mmcblk0p27'
- fw_setenv bootcmd 'echo "Hit ctrl+c for shell..."; if sleep 3; then run do_boot; else do_nothing; fi;'
- fw_setenv do_boot 'mmc read 0x44000000 0x00014022 0x3800; bootm 0x44000000'
- Install a sysupgrade

U-Boot hardcodes the bootargs to reset on each boot, which is why it is
necessary for the bootcmd to override them. Thankfully, the vendor did
not bother to secure U-Boot any further. As long as the vendor software
does not boot, the U-Boot env will stay. If a vendor image boots, the
U-Boot env will revert to default. The vendor U-Boot also ignores
bootdelay, which is why we add a dummy sleep to allow the user time to
drop into a shell without needing to glitch any more.

Co-authored-by: Kenneth Kasilag <kenneth@kasilag.me>
Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21586
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-23 18:07:01 +02:00
Andrew LaMarche f1c1d8b76d qualcommbe: enable CONFIG_NVMEM_BLOCK
Enable CONFIG_NVMEM_BLOCK to support block devices in dts, used for
reading nvmem.

Signed-off-by: Andrew LaMarche <andrewjlamarche@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21586
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-23 18:07:01 +02:00
Chukun Pan 48ce7fbdbd qualcommbe: remove useless cpu erratum
This target currently uses cpu erratums for Cortex-A76, Cortex-A510,
Cortex-A710, and Neoverse-N2. The commit 0b25cef also added erratums
for Ampere AmpereOne and Rockchip RK3568. Remove these useless items.

Fixes: 0b25cef ("qualcommbe: enable 6.18 testing kernel")
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/24770
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-08-18 14:58:48 +02:00
Shiji Yang a4c51ebd76 kernel: bump 6.18 to 6.18.43
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.42
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.43

Upstream merged patches:
- generic/backport-6.18/625-v7.0-ppp-enable-TX-scatter-gather.patch[1]
- generic/pending-6.18/303-powerpc-85xx-Add-fsl-ifc-to-common-device-ids.patch[2]
- bcm27xx/patches-6.18/0866-drm-v3d-Reach-the-GMP-through-the-hub-registers-on-V.patch[3]

Manually rebased patches:
- bcm27xx/patches-6.18/0282-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch[4]
- bcm27xx/patches-6.18/0283-xhci-quirks-add-link-TRB-quirk-for-VL805.patch[4]
- bcm27xx/patches-6.18/0284-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch[4]
- bcm27xx/patches-6.18/0285-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch[4]

New kconfig symbol:
- GPU_BUDDY [5]

Obsolete kconfig symbol:
- DRM_LIB_RANDOM [5]

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.42&id=cb9d3e0b55699979b4f4cc333d641edc764056ad
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.42&id=c1bbd0a6906b8d06f1f28a5e1b6d243c81c1f8fa
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.42&id=a096a6aba601152a45d4e272207bd37e03ca3f92
[4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.42&id=fe7892d46921ee56b135779d32c40cb462e6c6c5
[5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.42&id=65677f7a20c48cf9ed02c56db389cc327d2b61b2
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Co-authored-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/24551
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-13 00:22:31 +02:00
Shiji Yang abf32eb922 qualcommbe: disable kernel config symbol VIDEO_QCOM_IRIS
This symbol was introduced in the 6.18 LTS kernel, and we must
explicitly disable it to fix build halt.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/24551
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-13 00:22:31 +02:00
Julius Bairaktaris 6e1fdb9ea1 qualcommbe: dts: disable the driverless QCE crypto nodes
Commit ce120be361 ("kernel: disable qualcomm crypto") dropped the
CRYPTO_DEV_QCE kernel configs, so crypto@73a000 and its BAM no longer
have a driver. Unlike ipq8074, mainline ipq9574.dtsi ships both nodes
enabled by default, and gcc-ipq9574 registers its interconnect provider
with icc_sync_state; an enabled consumer that can never probe defers
that callback forever, so every boot logs

  sync_state() pending due to 73a000.crypto

and the interconnect bandwidth votes are never allowed to drop from
their boot-time maximum. Disable both nodes explicitly in the board
device tree.

Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24379
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-07-25 22:41:44 +02:00
Daniel Golle 0f256a0a7a kernel: modules: package OP-TEE and fTPM modules
Add kmod packages to support accessing the fTPM (in-firmware TPM) which
can be implemented in the boot firmware of most modern platforms.

 - kmod-optee: Open Portable Trusted Execution Environment
 - kmod-optee-rng: OP-TEE random number generator client
 - kmod-rtc-optee: OP-TEE real-time clock client
 - kmod-scmi-transport-optee: SCMI OP-TEE transport
 - kmod-tee: Generic Trusted Execution Environment
 - kmod-tee-stmm-efi: EFI variable service Trusted Application
 - kmod-tpm-ftpm-tee: Microsoft fTPM Trusted Application

Using the TPM 2.0 can be useful for various security applications,
such as encrypting on-disk credentials. OP-TEE itself alone is also
useful as it can provide a PKCS#11 token for authentication (eg. to
connect to a VPN) and significantly lower the risk of leaking secrets
used for authentication. Also, on some platforms RNG and RTC can only be
accessed via OP-TEE, and some ARM SystemReady platforms require EFI
variables to be access via a TA.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-07-21 11:56:04 +01:00
Rosen Penev ce120be361 kernel: disable qualcomm crypto
Upstream has marked it as BROKEN. Quote:

This driver is harmful:

- It is much slower than the CPU.
- It Has a history of bugs.
- It does not have exclusive access to the hardware, causing races
  with the secure world.
- It register its implementations with too low a cra_priority for them
  to be actually used.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24326
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-07-21 09:01:40 +02:00
John Audia 276214fc06 kernel: bump 6.18 to 6.18.39
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.39

Removed upstreamed:
  backport-6.18/704-v7.2-netfilter-flowtable-fix-offloaded-ct-timeout-never-b.patch[1]

All other patches automatically rebased via update_kernel.sh

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.39&id=81a5971cbe18b474b49c651e32f2194b2fb171fe

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/24282
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-07-20 20:05:54 +02:00
Kenneth Kasilag c16ef4f318 qualcommbe: ipq9574: align USXGMII bring-up with SSDK
Align the USXGMII configuration sequence with the vendor SSDK:

- Reset the PCS PLL by programming the whole reset register with the
  documented assert and release values and 100ms holds, instead of
  toggling a single bit for 1ms and relying on the power-on state of
  the remaining analog enables.

- Keep the uniphy port clocks disabled across the reconfiguration and
  re-enable them after calibration, before releasing the XPCS reset.

- Select in-band link detection explicitly rather than the SFP
  loss-of-signal input, which does not exist on non-SFP ports.

- Wait for the 10GBASE-R receiver to link before enabling the USXGMII
  adaptation layer. Best-effort, since the PHY SerDes may only come
  up later.

Other interface modes keep the previous behaviour.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/24033
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-07-06 11:53:43 +02:00
Kenneth Kasilag d9a98ed59d qualcommbe: ipq9574: fix MISC2 mode field and cover USXGMII
The MISC2 phy mode field is modelled as two bits at the wrong offset:
the hardware field is three bits wide and starts one bit lower. The
SGMII and 2500BASE-X values only come out right because the power-on
default happens to keep the missed bit set, and USXGMII is not
programmed at all, leaving the uniphy in its power-on SGMII
personality.

Model the field at its documented position, add the USXGMII mode
value and write the rate field explicitly instead of relying on its
power-on default, matching the values the vendor SSDK programs.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/24033
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-07-06 11:53:43 +02:00
Kenneth Kasilag 8a108c529c qualcommbe: ipq9574: pulse uniphy sys/soft resets during config
The uniphy never receives a software reset pulse during interface mode
configuration. The vendor SSDK asserts the GCC system reset and the
NSSCC soft reset together for 100ms on every uniphy mode change;
without the pulse, parts of the uniphy analog block can remain in
their power-on state.

Pulse both resets, when the devicetree provides them, after the mode
is programmed. Both resets are optional so existing devicetrees keep
working.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/24033
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-07-06 11:53:43 +02:00
Kenneth Kasilag da0bafe19a qualcommbe: ipq9574: enable uniphy 25MHz clock output
Some board designs feed an external PHY its reference clock from the
uniphy 25MHz clock output instead of a local crystal. Enable the
output when the devicetree opts in with "qcom,uniphy-clkout-25mhz".

The clock output register only becomes writable once the PLL reset
and calibration have completed, so program it at the end of the mode
configuration rather than at probe time.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/24033
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-07-06 11:53:43 +02:00
Kenneth Kasilag 69c55aaaee qualcommbe: ipq9574: complete USXGMII in-band AN
The XPCS signals USXGMII in-band autonegotiation completion through an
interrupt that is never enabled, waited for or acknowledged, so rate
adaptation never starts and the MAC receives nothing even though the
SerDes achieves block lock. The advertised speed and duplex are also
left at their reset values while autonegotiation runs.

Follow the vendor SSDK sequence: enable the completion interrupt and
advertise 10G/full duplex when configuring the PCS, and on link-up
restart the in-band autonegotiation, wait for completion and
acknowledge it before programming the negotiated speed. The wait is
best-effort, as in the vendor driver.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/24033
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-07-06 11:53:43 +02:00
Kenneth Kasilag 2d35c376d8 qualcommbe: ipq9574: describe remaining uniphy resets
Each uniphy has, besides the XPCS reset, a system reset in the GCC and
a soft reset in the NSSCC. The vendor driver pulses both on every
interface mode change as part of the uniphy bring-up. Describe them,
and name the resets while at it, so the PCS driver can pick them up.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/24033
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-07-06 11:53:43 +02:00
Sven Eckelmann 4abe97b2bc rtl826x-firmware: ship rtl8261n and rtl8264b in single firmware package
The firmware loading does not depend (solely) on the PHY id. The driver
needs to read out the vendor version id of the PHY before it can decide
which firmware file needs to be loaded.

A split in an RTL8261N and an RTL8264B firmware package is therefore
misleading. And it could even be that a product ships an RTL8264B but
switches the revision of the chip in the middle of its product lifetime. In
this case, the first identification based on the chip ID or the actual chip
ID for the OpenWrt porter might fail for another user with a later/earlier
produced device.

Shipping both files in the same package avoids this problem. Only the "low
power" firmware package is slightly misleading because there is only a
RTL8261N firmware binary for low power but no corresponding RTL8264B
version. It will ship simply the non-low power version for RTL8264B.

Suggested-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://github.com/openwrt/openwrt/pull/23947
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-07-01 00:13:59 +02:00
John Audia 27ca0a3eef kernel: bump 6.18 to 6.18.37
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.37

All patches automatically rebased via update_kernel.sh

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/23971
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-06-28 22:29:48 +02:00
Igor Kravchenko 03aa344b2c qualcommbe: fold kernel fixes
Move the QCA8084 XPCS channel lookup fix into the SerDes speed config
patch, so qca8084_qxgmii_set_speed() walks the channel table with the
loop index from the start.

Move the PPE port reset loop fix into the PPE driver update patch, so
ppe_port_mac_reset() asserts and deasserts each reset control instead of
reusing the MAC reset for every iteration.

Signed-off-by: Igor Kravchenko <igor.kravchenko05@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23900
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-06-23 11:05:07 +02:00
Kenneth Kasilag ea57b794fc qualcommbe: use kernel 6.18 by default and drop 6.12
Switch the qualcommbe target to use kernel 6.18 and drop 6.12.

Kernel 6.18 for qualcommbe resolves some issues regarding
PCS support and reduces maintenance load maintaining two
kernel branches.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/23908
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-23 10:51:19 +02:00
Kenneth Kasilag 8db23dc91a qualcommbe: fix pwm period calculation
During testing on the Askey SBE1V1K, it was noticed that only very low
PWM frequencies would work, and 100% duty cycles also did not work.

Comparing the proposed upstream pwm-ipq driver to the downstream vendor
driver, `ipq_pwm_apply()` fixed pwm_div at its maximum and derived only
pre_div from the requested period. Since the period spans
`(pre_div + 1) * (pwm_div + 1)` input clocks, pinning pwm_div near its
maximum forces pre_div towards zero for short periods: once pre_div
rounds to 0 the shortest representable period is
`(pwm_div + 1) / clk_rate` (~2.7 ms, i.e. ~366 Hz, at a 24 MHz clock),
and any shorter request is silently stretched to that. The high
duration then truncates to 0, so the output collapses to ~0% duty.

Since 4-wire fans commonly expect a ~25kHz PWM, it was effectively
unusable, since every duty cycle programs a ~zero high time.

Search for the (pre_div, pwm_div) pair whose period best approximates
the request instead of fixing pwm_div. Starting pre_div at the smallest
value that keeps pwm_div within its field and stopping once pre_div
exceeds pwm_div bounds the loop and keeps pwm_div as large as possible
for fine duty resolution. For a 25 kHz request at 24 MHz this selects
pre_div = 0, pwm_div = 959, giving full 0..960 duty resolution.

While reworking the high-duration computation, round it to nearest
rather than truncating, so mid-range duty cycles are not biased low, and
clamp it to pwm_div + 1. Rounding, or a 100% duty request, could
otherwise push hi_dur past the period length and overflow the 16-bit
HI_DURATION field.

Also compute hi_div in `get_state()` in 64-bit; `hi_dur * (pre_div + 1)`
can exceed 32 bits before the existing promotion.

Fixes: 01fb4a6daa ("qualcommbe: update pwm patches and add missing symbol")
Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: https://github.com/openwrt/openwrt/pull/23916
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
2026-06-23 07:40:16 +02:00
Rosen Penev 0c9548a058 treewide: add linux,rootfs to rootfs labeled partitions
A step towards removing hack/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20951
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-14 23:58:17 +02:00
Robert Marko 4fa4766986 qualcommbe: kiwi: include Realtek PHY kmod and RTL8261N firmware
Since 6.18 RTL8261N support was added to the generic Realtek PHY driver
and was dropped from the downstream driver.

So, fix the missing RTL8261N support by including the Realtek PHY kmod
and the relevant firmware.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-06-11 13:35:29 +02:00
Robert Marko eee679b9b3 qualcommbe: ipq95xx: 6.18: refresh config
Refresh the really outdated kernel config.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-06-11 13:35:29 +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
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 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
Alexandru Gagniuc 7ea10c7015 qualcommbe: kernel-6.18: renumber patches
I generate patches form git, so maintaining an old numbering scheme
does not integrate well with my workflow. renumber the pacthes here so
that the commit shows only the changes to the patches.

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 b0534d0d41 qualcommbe: remove upstreamed patches
Remove patches that are upstream in v6.18, but were not identified as
upstreamed in the patch naming.

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 0efbee297a qualcommbe: create files for v6.18 from v6.12
Create the config and relevant patches for 6.18 from 6.12. The
"standard" openwrt devel process seems to be to move the files and
restore the old ones. I find this process confusing, and I don't see
any git benefits for doing things this way. So just copy the files.

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 05db696f30 qualcommbe: drop "port_" from PPE port clock and reset names
The lastest ethernet PPE driver, uses "mac", "rx", and "tx", without
the "port_" prefix for the port clocks and resets. The PPE ports are
declared by the device dts. In order to support v6.12 and v6.18
kernels simultaneously, update the kernel patches and kiwi-dvk
devicetree to use the newer naming scheme.

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
John Audia 82e97a66de kernel: bump 6.12 to 6.12.88
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.88

Manually rebased:
  bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch
  bcm27xx/patches-6.12/950-0750-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch

All other patches automatically rebased via update_kernel.sh

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/23370
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-16 21:26:01 +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
John Audia bb3da35c90 kernel: bump 6.12 to 6.12.78
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.78

Removed upstreamed:
  generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch[1]
  generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch[2]
  airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch[3]
  airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch[4]
  airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch[5]
  airoha/patches-6.12/128-v7.1-net-airoha-Remove-airoha_dev_stop-in-airoha_remove.patch[6]

Manually rebased:
  airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch

All patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=bbdf6d378e1ddbeadc04c57b182aadefcc3aa917
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=241cd64cf2e32b28ead151b1795cd8fef2b6e482
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a04ac7bc97afe313e10ae4c73797c668dee47c5c
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a9ed47c3663219e20406d566f02809de05373a42
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=4cba4373abac7ba27fdb33057a29b92efa8fd15d
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=652ec118d8dc1b088e685d5562995b6665463771

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/22607
[Fix 048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-03-30 13:42:44 +02:00
John AudiaandShiji Yang 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