Commit Graph
334 Commits
Author SHA1 Message Date
Daniel Golle ba45d608b2 rockchip: add support for Herospeed RV1126 IMX415 Base
The Herospeed RV1126 IMX415 "Base" is an IP camera built on a Rockchip
38x38 V10 EMMC DDR3 board, which is also found in cameras of other
makes and is therefore described by a separate dtsi. The stock firmware
identifies itself as ONVIF manufacturer "HeroSpeed", firmware family
RV1126_IMX415_BASE. This adds the 32-bit armv7 subtarget for the
Cortex-A7 based RV11xx SoCs. The camera keeps its stock U-Boot, which
boots an Android boot image from one of two boot/system slots.

Hardware
--------
SoC: Rockchip RV1126, 4x Cortex-A7
RAM: 1 GiB DDR3
Flash: eMMC, 8 GB class, two boot/system slots
Ethernet: 1x 10/100 Mbit/s, JL1101 PHY on RMII
Sensor: Sony IMX415, 4 lane MIPI CSI-2
RTC: PCF8563
LEDs: white illumination LEDs on one PWM output (V4L2 flash)
Buttons: none
UART: 1.8 V TTL on UART2, 1500000 baud 8N1, 90-degree JST-SH connector
at the bottom edge of the board, facing the edge and hidden underneath
the MIPI CSI cable
Power: PoE (IEEE 802.3af) or 12 V 1 A DC through the barrel connector
on the cable whip

Installation
------------
1. Open the web interface of the stock firmware (192.168.1.168 by
   default) and log in as admin.
2. Upload openwrt-rockchip-armv7-herospeed_rv1126-imx415-squashfs-
   factory-RV1126_IMX415.fls on the firmware upgrade page.
3. The camera reboots into OpenWrt at 192.168.1.1.

Later upgrades use the sysupgrade image, which is written to the
inactive slot. The stock firmware can be restored from OpenWrt with
"sysupgrade -F -n" and the original .FLS file.

MAC address
-----------
eth0 uses the label MAC, stored as MAC=xx:xx:xx:xx:xx:xx in net.conf on
the ext4 "param" partition. U-Boot passes a different, derived address
to Linux, which is replaced by the stored one.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-13 10:58:21 +01:00
Daniel Golle 4c5d0264ca rockchip: add RV1126 downstream kernel patches
Add RV1126 support (USB2 PHY and DWC3, TSADC, clocks, I2C and SPI,
cpufreq, I2S and PDM, VICAP, MIPI CSI-2 D-PHY, VPU, RGA, hwrng) and
describe the SoC in rv1126.dtsi. Import and rewrite the unmerged
crypto driver for RK3568 and RK3588 by Corentin Labbe (AES, hashes);
its RK3568 and RK3588 support is untested. Add a newly written driver
for flash LEDs driven by a PWM channel.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-13 10:58:21 +01:00
Daniel Golle 33fe2cce61 rockchip: move 64-bit specifics to the armv8 subtarget
The pci and pcie features and the Image kernel target describe the
64-bit RK33xx/RK35xx boards, not the Rockchip family as a whole. Set
them in the armv8 target.mk so that a 32-bit ARM subtarget can build a
zImage and does not advertise PCIe.

The feature set and kernel targets of armv8 stay as they were.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-13 10:58:21 +01:00
Daniel Golle 48592abf6f rockchip: translate DMA for the media IOMMU masters
The video codecs sit behind their own IOMMUs, but with the default
domain set to passthrough their buffers have to be physically
contiguous and come out of the 16 MiB CMA pool. A 4K frame needs
15.8 MiB of it, so hardware decoding of 4K video fails allocation and
falls back to software: 10 seconds of 4K HEVC then cost 22 seconds of
CPU, where the decoder does the same work with 0.15.

Have rockchip-iommu ask for a translated domain for the masters it
serves, so the display, codec, ISP and RGA blocks get scatter-gather
while everything behind another IOMMU, PCIe included, keeps the system
default and its throughput.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:13 +01:00
Daniel Golle b14b8d95d9 rockchip: add camera capture kernel modules
The RK3588 camera path is two drivers: the video capture unit and the
MIPI CSI-2 receiver that feeds it. Package both, so a board with a
camera connector can use them.

kmod-video-rockchip-cif pulls in the receiver, since MIPI is the only
input the driver supports on RK3568 and RK3588.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:13 +01:00
Daniel Golle ee65abf03a rockchip: backport the rk3588 camera device tree nodes
Add the MIPI CSI-2 receiver nodes and the video capture unit to the
RK3588 device tree, so the drivers have something to bind to. Both
land disabled, and the CSI D-PHY nodes they connect to are already
in 6.18.

No board enables them yet: the connector wiring lives in a per-board
overlay, and upstream carries one only for the ROCK 5B+ so far.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:13 +01:00
Daniel Golle 3d5db97adc rockchip: backport RK3588 MIPI CSI-2 camera capture
The RK3588 camera path needs two drivers that landed after 6.18: the
Rockchip video capture unit, which gained rk3588 support in 7.2, and
the DesignWare MIPI CSI-2 receiver it is fed from, which arrived in
7.0. The CSI D-PHY and the imx415, imx219 and ov5647 sensors are in
6.18 already, so these two are what is missing.

Backport both drivers with their bindings. The i.MX93 and i.MX95
additions to the receiver come along, which keeps it at an upstream
state so that later fixes apply as they are.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:13 +01:00
Daniel Golle 444686aecc rockchip: add display, GPU, codec and audio kernel modules
Package the Rockchip DRM driver with VOP, VOP2, eDP, DP, HDMI, HDMI QP,
MIPI DSI and MIPI DSI2 support, the Rocket NPU driver, the Samsung
HDPTX and DCPHY and the Innosilicon CSI DPHY, the RKVDEC and RGA V4L2
drivers, the Synopsys HDMI receiver, the I2S, I2S/TDM and S/PDIF ASoC
drivers and the DFI DDR monitor, so that every device in the rk3588
device tree has its driver available.

The DFI DDR monitor is a devfreq event driver, so PM_DEVFREQ_EVENT is
set in the target configuration, which is what lets the driver build as
a module and be installed on a released image. The remaining new
symbols are recorded as disabled defaults in the generic configuration,
where a kernel module package can enable the one it needs. The per-SoC
V4L2 mem2mem drivers go there as well: they have no recorded value
anywhere, so kconfig stops to ask for them on any target whose ARCH
symbol matches once kmod-video-mem2mem opens the mem2mem menu.

The DRM driver and the HDMI PHY are marked for /etc/modules-boot.d, as
procd loads those before preinit runs. Loaded from /etc/modules.d
instead, /dev/dri stays empty until the overlay is mounted, which on a
Rock 5B is several seconds in and too late for anything drawing to the
screen during boot.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle da9309fa07 rockchip: select the HDMI codec for the DW HDMI QP output
The DW HDMI QP bridge exposes its audio path through the DRM HDMI audio
helper, which registers an hdmi-audio-codec platform device. Nothing on
that path selects the promptless SND_SOC_HDMI_CODEC, so the RK3588 HDMI
outputs have no audio unless another driver happens to pull the codec
in. Select it from ROCKCHIP_DW_HDMI_QP as the CDN DP option does.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle cde94c23a7 rockchip: backport rk3588 device tree updates
Add the VDPU381 decoder nodes with the register block order and power
domain node names the rkvdec binding expects, correct the PCIe range
mappings and the NPU IOMMU unit addresses, and add the missing eDP
clocks.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle d2e03cdc91 rockchip: backport RK3588 video decoder support
Bring in the media/rkvdec series that adds decoder variants, the HEVC
backend and the VDPU381 and VDPU383 H.264 and HEVC backends used by the
RK3588 and RK3576, together with the Hantro AV1 and G2 fixes, the HEVC
control additions and validations in v4l2-ctrls and the v4l2-mem2mem
changes they build on. Fixes that 6.18.44 stable already carries are
left out.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-07 10:12:12 +01:00
Daniel Golle 059fb193ac rockchip: armv8: drop the virtual terminal layer
target/linux/generic disables CONFIG_VT and this fragment switches it
back on, along with the dummy console and the console translations.
No fbdev or DRM display driver is enabled here, so the terminal has
nothing to bind to; it is kernel size every image pays for. Drop it.
The serial console is unaffected and INPUT stays enabled in its own
right.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-10-06 18:35:40 +01:00
Daniel Golle de2f69bf89 treewide: drop the audio and display target features
Both features describe an SoC family, which is the wrong granularity: a
mediatek/mt7623 board claims a display while a filogic board with a MIPI
DBI panel cannot, and rockchip claims audio for a NanoPi R2S as much as
for a Rock 5B. The audio-support and video-support packages carry that
information per image, and the modules depend on them.

Drop both features from every target that declares them.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2026-09-29 15:29:43 +01:00
Tianling Shen 12fa348112 rockchip: import pending naneng ComboPHY RTERM detection fix
Some RK356x ComboPHY revisions can fail to detect the PCIe endpoint
RX termination, leaving the link down before endpoint enumeration.

Import the Rockchip workaround to force the RTERM detection-ready
signal. This restores the RTL8111H PCIe link on a 1 GiB NanoPi R3S.

Link: https://lore.kernel.org/linux-rockchip/1788158204-161347-1-git-send-email-shawn.lin@rock-chips.com/
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/25089
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-13 13:14:55 +02:00
Tianling Shen e36c1c0caf uboot-rockchip: switch to dedicated profile for NanoPi R76S
Support for NanoPi R76S has been merged upstream u-boot, so use
it instead of the generic profile.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/25047
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-09-06 21:12:57 +02:00
John Audia 7105bec48f kernel: bump 6.18 to 6.18.40
Removed upstreamed:
  airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch[1]
  airoha/patches-6.18/112-v6.19-pinctrl-airoha-fix-pinctrl-function-mismatch-issue.patch[2]
  airoha/patches-6.18/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch[3]
  airoha/patches-6.18/171-v7.2-net-airoha-Fix-debugfs-new-tuple-display-for-IPv4-RO.patch[4]
  airoha/patches-6.18/172-v7.2-net-airoha-fix-foe_check_time-allocation-size.patch[5]
  airoha/patches-6.18/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch[6]
  generic/backport-6.18/300-v7.1-MIPS-mm-fix-highmem-init.patch[7]
  generic/backport-6.18/627-v7.2-net-pse-pd-scope-pse_control-regulator-handle-to-kre.patch[8]
  generic/backport-6.18/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch[9]
  qualcommax/patches-6.18/0084-v7.2-clk-qcom-cmnpll-Account-for-reference-clock-divider.patch[10]
  airoha/patches-6.18/180-02-v7.2-pinctrl-airoha-an7581-add-missed-gpio32-pin-group.patch[11]
  airoha/patches-6.18/180-04-v7.2-pinctrl-airoha-an7581-fix-misprint-in-gpio19-pinconf.patch[12]

Manually rebased:
  airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch
  bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch
  mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch

Removed CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG, it was removed upstream [13]

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.40&id=db3cd694ded4c8d492b62c7228e9c0d9230b13d0
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=a888f3d5970ff21e092bc9edcf3d9ffee9ae68a7
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=dcac6e4221f39f4f80adc7fb761c358a612fca62
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=4d48c08a0bf6c6ab8c07df37ee8794da891eec80
5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=112b5eff24e044561ee9599a0d34e0fcea1df4e0
6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=2066e692ec7a10af63d9c75899c9a66946cfede9
7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=3d3638fe921371e52be77baefe792c126fcdfc8c
8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=8d501b1411548442aaf1de3268654046f5bcf4c1
9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=10e05634ddc19953d7357a39eebee4e142dc8397
10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=226feccaac81833f227e7ad4b7702ff5c918211f
11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=5985ddfd3e83fee2e021ed6908d4026516f47278
12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=ad6963c3bb458fc1b722627405800c32e4cd840b
13. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=c401492e01c7bfd38cf14c94d85c7efafe7d1a25

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

Signed-off-by: John Audia <therealgraysky@proton.me>
[Fixed 0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch,
180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch
and removed CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG]
Link: https://github.com/openwrt/openwrt/pull/24419
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-08-01 23:43:05 +02:00
Grische e54f0353c2 rockchip: add support for FriendlyARM NanoPi R2S Plus
The NanoPi R2S Plus is a NanoPi R2S with on-board eMMC added. The device
tree (rk3328-nanopi-r2s-plus.dts) is already present in kernel 6.12, and
U-Boot support has been present since v2025.01, so neither a kernel DTS
backport nor a U-Boot patch is required.

Hardware
--------
Rockchip RK3328 (4x Cortex-A53, up to 1.4 GHz)
1GB DDR4 RAM
32GB eMMC 5.1
microSD slot (up to 128GB)
1x 1000 Base-T (native, RTL8211F via GMAC) - WAN
1x 1000 Base-T (USB 3.0, RTL8153B) - LAN
Optional M.2 SDIO Wi-Fi
2x USB 2.0 Type-A host
1x USB-C (5V power input, USB device for Maskrom update)
1x USB-C (onboard USB-to-UART debug console, 1500000 bps)
1x serial debug header / UART0 (3.3V TTL, 3-pin 2.54mm)
2 Buttons (GPIO key, Maskrom)
3 LEDs (SYS red, WAN green, LAN green)
DC 5V/2A power
Operating temperature 0 to 70 C

The MAC addresses are derived from the eMMC CID, so they are stable
regardless of whether the device boots from microSD or eMMC.

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

On RK3328 the BootROM boots the eMMC before the microSD slot, so the
Maskrom button must be held to boot from microSD while stock firmware is
still on the eMMC.

How to boot from eMMC:

1. Write the uncompressed sysupgrade image to sdcard
2. Hold the "Mask" button while powering on the device
3. Wait until OpenWrt is fully booted
4. Copy the compressed .gz sysupgrade image to the machine's /tmp folder using scp
5. Run: gunzip -c /tmp/openwrt-...-friendlyarm_nanopi-r2s-plus-squashfs-sysupgrade.img.gz | dd of=/dev/mmcblk1 bs=4M conv=fsync
6. Power the device off, remove the sdcard and power it back on

Tested:
- microSD boot (via Maskrom button) and native eMMC boot
- Both Ethernet ports (RTL8211F WAN, RTL8153B LAN)
- eMMC-derived MAC addresses

Signed-off-by: Grische <github@grische.xyz>
Assisted-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Link: https://github.com/openwrt/openwrt/pull/23854
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-29 09:13:34 +02:00
xiao bo 219daaa240 rockchip: backport upstream fix R76S SD suspend power loss
This patch is a full backport of Linux upstream commit a9c1acebfe0484343a443d082e039ca77186ed22
for rk3576-nanopi-r76s.dts device tree, resolving SD card power dropout in runtime suspend.

When runtime suspend is active, the SD power domain is shut down, wiping power control
registers and cutting card power. I/O recovery relies on mmc_blk_mq_rw_recovery(),
which results in poor performance and unstable card detection.

Implement GPIO-controlled vcc3v3_sd regulator and attach vmmc-supply to sdmmc node
to maintain SD power during suspend. Also add cd-gpios to guarantee working hotplug
when system enters idle/suspend state.

Modifications in DTS:
- vcc3v3_sd fixed regulator + sdmmc_pwren pinctrl
- vmmc-supply & vqmmc-supply for sdmmc bus power retention
- cd-gpios for SD card presence detection

Signed-off-by: xiao bo <peterwillcn@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23924
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-06-25 23:41:13 +02:00
John Audia c430788f5d kernel: bump 6.18 to 6.18.36
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.36

Removed upstreamed:
  airoha/patches-6.18/162-v7.2-net-airoha-Fix-use-after-free-in-metadata-dst-teardo.patch[1]
  airoha/patches-6.18/164-v7.2-net-airoha-Add-NULL-check-for-of_reserved_mem_lookup.patch[2]

All other patches automatically rebased via update_kernel.sh

A new option was introduced with this release[3]. Updated configs on
affected targets: armsr/armv8 and rockchip/armv8.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.36&id=6f829e2c17a53a35321268339cd252aff6d6d723
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.36&id=01f7d4b504580664d36faea5671cde5e3f0d8a5b
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/arch/arm64/Kconfig?id=v6.18.36&id2=v6.18.35

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/23887
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-23 09:05:22 +02:00
Chukun Pan 58ba08c493 rockchip: enable dwc3 usb dual-role mode for otg
Most Rockchip boards have an OTG port. Enable DWC3 USB Dual-role
mode for the OTG port to fix the following error:

Configuration mismatch. dr_mode forced to host

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/23770
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-21 20:55:29 +02:00
Chukun Pan c97b4da1a8 rockchip: replace rk3528 usb patch with upstream
Replace the RK3528 USB driver and DT patch with the upstream version.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/23770
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-21 20:55:29 +02:00
Chukun Pan a4095b1f32 rockchip: replace nvmem otp patch with upstream
Replace the rockchip-otp patch with the upstream version.
Also backports OTP support for RK3562 and RK3568 SoCs.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/23770
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-06-21 20:55:29 +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
Tianling Shen 67740e311b rockchip: switch to kernel 6.18
Switch to kernel 6.18 and remove kernel 6.12 files.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/23528
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-26 16:00:35 +02:00
Ryan Leung f9dd769052 rockchip: add support for FriendlyELEC NanoPi M5
Ethernet LAN port is set to `eth1` (silkscreen "ETH2" and case label "2") next to the 2x USB Type-A
ports and WAN is set to `eth0` (silkscreen "ETH1" and case label "1") next to the USB Type-C port.

The USER ("reset") button serves as the reset button. A short press will reboot and a long press
will reset to factory settings (deleting all data) if using squashfs image.

MASK ("maskrom") and RCRY ("recovery") buttons are enabled but are not set to any specific function

Pressing the POWER button will `poweroff` the device and it will stay off until a power cycle.

Hardware
---------------
* SoC: RockChip RK3576 64-bit ARMv8-A 8 cores big.LITTLE (4x A72 and 4x A53)
* RAM: 3/4GB LPDDR4X or 8/16GB LPDDR5
* Ethernet: 2x GbE (SoC RGMII MAC, RTL8211F PHY)
* 3x LEDs (SYS - red / 1 (WAN) - green / 2 (LAN) - green)
* 4x Buttons (MASK ("maskrom"), RCRY ("recovery"), USER ("reset" - OpenWrt reset), POWER)
* 1x 16MiB SPI NOR on board
* 1x UFS slot for optional UFS 2.0 module (currently not supported)
* 1x microSD card slot (UHS-I)
* 1x HDMI OUT
* 1x Headphone OUT 3.5mm
* 1x M.2 M-key 2280 PCIe slot (PCIe 2.1 x1 supports NVMe SSD)
* 1x M.2 E-key *SDIO* slot for optional RTL8822CS Wi-Fi 5
 * the case has integrated antennae as well as 2x knockouts
 * the device tree is missing the nodes relevant to Wi-Fi operations so it's not supported for now.
* 2x USB 3.2 Gen 1 Type-A Ports
* Power: 1x USB Type-C 6V-20V with both DC and USB PD supported
* Serial: 1500000 8N1 3.3V - 2.54mm 3-pin header next to HDMI

MAC addresses
---------------
WAN (`eth0` case label "1"): generated from /sys/.../mmcblk0/cid (CID of SD card)
LAN (`eth1` case label "2"): WAN + 1

Installation
---------------
Decompress the archive of the OpenWrt sysupgrade image and write it to a microSD card using `dd`
or use Balena Etcher (no need to decompress).

Boot
---------------
Insert microSD card, set boot switch to "UFS/SD" and then supply power.

Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23008
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-14 17:52:56 +02:00
Ryan Leung e13cbab684 rockchip: enable SARADC; add buttons hotplug and ADC kmods to default packages
Select `CONFIG_ROCKCHIP_SARADC=y` to enable Rockchip SAR ADC

Add ADC Ladder Buttons driver as a kernel module as well as `kmod-button-hotplug` to the list of
default packages for Rockchip targets that have buttons connected to ADC, not including some
devices (e.g. NanoPi R76S) that have ADC buttons which are not in the device tree.

This is needed to use buttons on Rockchip devices that are connected to ADC and not GPIO

Tested on FriendlyELEC NanoPi M5

Signed-off-by: Ryan Leung <untilscour@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/23008
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-14 17:52:56 +02:00
Mieczyslaw Nalewaj 9bca272330 kernel: sync target configs after JUMP_LABEL changes
CONFIG_JUMP_LABEL is no longer meant to be set explicitly in target
kernel configs after 3be02c118f ("kernel: enable static key").

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/23293
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-11 10:33:46 +02:00
Hauke Mehrtens 66aa0bc397 rockchip: refresh kernel patches
This was not refresh before because of a merge race.

Fixes: 4c942c06b8 ("kernel: bump 6.18 to 6.18.27")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-09 13:43:50 +02:00
John Audia f72b368b51 kernel: bump 6.12 to 6.12.86
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.86

Removed upstreamed:
  mvebu/patches-6.12/101-arm64-dts-marvell-uDPU-add-ethernet-aliases.patch[1]

Manually rebased:
  pending-6.12/151-net-bridge-do-not-send-arp-replies-if-src-and-target.patch

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.12.86&id=e58e97c1441ecbc1f153795f5857e725ebb96bdf

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/23253
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-09 11:01:27 +02:00
Tianling Shen dfbacabec6 rockchip: add kernel 6.18 as testing kernel
Add kernel 6.18 as testing kernel.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/23139
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-05-09 00:29:35 +02:00
Tianling Shen 8fe77c20c6 rockchip: refresh kernel 6.18 configs
Refresh kernel configs with `make kernel_oldconfig CONFIG_TARGET=subtarget`.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/23139
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-05-09 00:29:35 +02:00
Tianling Shen 2f0f39951d rockchip: refresh kernel 6.18 patches
Remove upstreamed patches and refresh remaining ones.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/23139
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-05-09 00:29:35 +02:00
Tianling Shen 86e3c31bcc rockchip: restore files for v6.12
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.

For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/23139
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-05-09 00:29:35 +02:00
Tianling Shen 2c9986eedd rockchip: create files for v6.18 (from v6.12)
This is an automatically generated commit.

When doing `git bisect`, consider `git bisect --skip`.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/23139
Signed-off-by: Nick Hainke <vincent@systemli.org>
2026-05-09 00:29:34 +02:00
Chukun Pan 55cb7a0195 rockchip: update irq affinity for RK3528 devices
Since DW PCIe can adjust interrupts on SoC that only support
MSI, adjust the interrupt of r8169 for the RK3528 devices.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/21770
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-26 14:28:31 +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
Roman Pyatikonov d3a905e0cd rockchip: add reset button support for NanoPi R5S LTS
Backport upstream commit 954f07012794 ("arm64: dts: rockchip:
Add reset button to NanoPi R5S").

The NanoPi R5S LTS variant has a reset button wired to GPIO4_A0,
but the current OpenWrt rockchip 6.12 patch set lacks the
corresponding gpio-keys definition in rk3568-nanopi-r5s.dts.

As a result, pressing the button generates no reset event.
rockchip already includes kmod-gpio-button-hotplug by default,
so backporting the upstream DTS change restores the expected
behavior.

Rename the patch to
011-v6.17-arm64-dts-rockchip-Add-reset-button-to-NanoPi-R5S.patch
to match the upstream source.

The non-LTS NanoPi R5S leaves this pin unconnected, matching the
upstream rationale for using the shared rk3568-nanopi-r5s.dts.

Link: https://lore.kernel.org/r/20250711142138.197445-1-didi.debian@cknow.org
Signed-off-by: Roman Pyatikonov <moyciti.volga.bk.ru92@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22700
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-05 02:08:54 +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
John Audia b4759469c9 kernel: bump 6.12 to 6.12.69
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.69

All patches automatically rebased.

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

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21904
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-07 17:20:33 +01:00
John Audia 0bd6a89561 kernel: bump 6.12 to 6.12.68
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.68

All patches automatically rebased.

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

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21797
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-02-01 19:03:59 +01:00
Chukun Pan cf84e8ee86 rockchip: add HINLINK H66K / H68K support
Hardware (common):
- RK3568 SoC
- 2/4GB LPDDR4
- 1x HDMI Type A
- 3.5mm jack with mic
- 1x PCIE 2.0 WiFi slot
- 1x USB 3.0, 2x USB 2.0
- 2x 2.5GbE RTL8125B Ethernet
- MicroSD card slot / eMMC 32GB

Additions to HINLINK H68K:
- 2x 1GbE RTL8211F/YT8531 Ethernet

Installation:
  Use dd or balenaEtcher to flash the firmware.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
Link: https://github.com/openwrt/openwrt/pull/21270
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-24 23:46:23 +01:00
John Audia 2228b7048c kernel: bump 6.12 to 6.12.67
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.67

Manually rebased:
  rockchip/patches-6.12/160-01-phy-rockchip-inno-usb2-Simplify-rockchip-usbgrf-handling.patch

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

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21629
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-24 21:36:10 +01:00
Tianling Shen 609deedd87 rockchip: fix set default serial_{addr,port} in boot script
On some SoCs like RK3399, U-Boot no longer export the serial
address in $stdout variable, it has been changed to something like
`stdout=serial,vidconsole` since video supported was added. So
detect $soc variable instead, this also makes the script more clear.

Addtional note: rk3566 is reported as rk3568, rk3582 is reported as
rk3588 in $soc.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/21610
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-21 23:56:42 +01:00
John Audia c0fb8e1f35 kernel: bump 6.12 to 6.12.66
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.66

All patches automatically rebased

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

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21591
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 01:15:32 +01:00
Chukun Pan e8997e7e03 rockchip: add HINLINK H28K support
Hardware:
- RK3528 SoC
- 1x USB 2.0
- 8/32GB eMMC
- 1/2/4GB LPDDR4
- 1x 1GbE RTL8111H
- 1x 1GbE RTL8211F
- MicroSD card slot

Installation:
  Use dd or balenaEtcher to flash the firmware.

Note:
  The RK3528 SoC does not support MSI-X, so it can't
  adjust the interrupts of r8169 to other CPU cores.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2026-01-19 13:44:58 +00:00
Chukun Pan 7a07d38f33 rockchip: correct MAC address for Radxa E20C
Use the unique MAC address in EEPROM for eth0.
The MAC address of RTL8111H (eth1) is correct.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2026-01-19 13:44:58 +00:00
Chukun Pan dccfc10957 rockchip: configure WAN port LED of Radxa E20C
The WAN(eth1) port LED on the Radxa E20C is completely off.
Since the r8169 driver supports configuring LEDs, using it.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
2026-01-19 13:44:58 +00:00
FUKAUMI Naoki 43039157ba rockchip: add "compat_version": "1.1" for Radxa E52C
This is something I missed in https://github.com/openwrt/openwrt/pull/20608

Fixes: 1f1db75432 ("rockchip: make NIC name predictable for Radxa E52C/ROCK 5 ITX/ROCK 5T")
Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/21533
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-14 11:20:00 +01:00
Stijn Tintel f7c5334c4c kernel: cleanup CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU
Commit ab805ec316 ("generic: add missing squashfs config") enabled
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU in the generic config, so it is no
longer needed in the target configs.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Link: https://github.com/openwrt/openwrt/pull/21465
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-11 12:52:54 +01:00