From 6476ed9b41a60cd87ee02e7cb35ee747c85230ba Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 05:52:42 +0200 Subject: [PATCH 1/7] rockchip64-7.1:(1/2) rewrite patches against 7.1.6 --- .../board-rgds-04-usb-otg-dual-role.patch | 18 ++--- ...oard-rockpi-4a-cap-spi-nor-frequency.patch | 7 +- ...rd-broken-park-link-quirk-v6.16-plus.patch | 29 ++++--- .../general-cryptov1-trng.patch | 2 +- .../general-disable-mtu-validation.patch | 2 +- .../general-driver-tm16xx-led-driver.patch | 10 +-- ...al-drm-panel-add-yixian-yx0345-panel.patch | 4 +- ...ral-dw-hdmi-qp-error2info-logging-k7.patch | 46 ++++------- ...i2s-mclk-output-gate-5-ignore-unused.patch | 3 +- .../orangepi5-ultra-hdmirx-dts-fix.patch | 20 ++--- .../rk3328-add-dmc-driver.patch | 10 +-- ...-tcpm-unregister-existing-source-cap.patch | 4 +- ...ix-PD-devices-capabilities-registrat.patch | 6 +- ...nregister-altmodes-before-registerin.patch | 2 +- ...-can-rockchip-add-rk3588-can-support.patch | 79 +++++-------------- .../rk35xx-montjoie-crypto-v2-rk35xx.patch | 2 +- .../rockchip64-7.1/rk35xx-panthor-1GHz.patch | 12 +-- .../temporary-workaround-dma-reset.patch | 2 +- 18 files changed, 97 insertions(+), 161 deletions(-) diff --git a/patch/kernel/archive/rockchip64-7.1/board-rgds-04-usb-otg-dual-role.patch b/patch/kernel/archive/rockchip64-7.1/board-rgds-04-usb-otg-dual-role.patch index 726a33a510b0..b8f14f8ef6a0 100644 --- a/patch/kernel/archive/rockchip64-7.1/board-rgds-04-usb-otg-dual-role.patch +++ b/patch/kernel/archive/rockchip64-7.1/board-rgds-04-usb-otg-dual-role.patch @@ -1,8 +1,8 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques Date: Fri, 3 Jul 2026 12:00:00 +0200 -Subject: [PATCH] arm64: dts: rockchip: rg-ds: make OTG-C port dual-role so USB - hubs work +Subject: arm64: dts: rockchip: rg-ds: make OTG-C port dual-role so USB hubs + work The mainline rk3568-anbernic-rg-ds DTS pins the type-C OTG controller to dr_mode = "peripheral" so the ttyGS0 gadget console is guaranteed. The side @@ -22,30 +22,30 @@ was declared but had no consumer). Signed-off-by: crackerjacques --- - .../dts/rockchip/rk3568-anbernic-rg-ds.dts | 3 ++- + arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts b/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts +++ b/arch/arm64/boot/dts/rockchip/rk3568-anbernic-rg-ds.dts -@@ -1217,7 +1217,7 @@ +@@ -1219,7 +1219,7 @@ &uart2 { }; - + &usb_host0_xhci { - dr_mode = "peripheral"; + dr_mode = "otg"; phy-names = "usb2-phy"; phys = <&usb2phy0_otg>; maximum-speed = "high-speed"; -@@ -1237,6 +1237,7 @@ +@@ -1239,6 +1239,7 @@ &usb2phy0 { }; - + &usb2phy0_otg { + phy-supply = <&otg_switch>; status = "okay"; }; - --- + +-- Armbian diff --git a/patch/kernel/archive/rockchip64-7.1/board-rockpi-4a-cap-spi-nor-frequency.patch b/patch/kernel/archive/rockchip64-7.1/board-rockpi-4a-cap-spi-nor-frequency.patch index a869d62b1421..ce4b1f0327c2 100644 --- a/patch/kernel/archive/rockchip64-7.1/board-rockpi-4a-cap-spi-nor-frequency.patch +++ b/patch/kernel/archive/rockchip64-7.1/board-rockpi-4a-cap-spi-nor-frequency.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Igor Velkov -Date: Tue, 22 Jul 2026 05:30:00 +0000 +Date: Wed, 22 Jul 2026 05:30:00 +0000 Subject: arm64: dts: rockchip: cap SPI NOR frequency on ROCK Pi 4A Commit fa16d7a820e4 ("arm64: dts: rockchip: Increase maximum frequency of @@ -32,7 +32,7 @@ diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a.dts b/arch/arm64/boo index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a.dts -@@ -19,6 +19,6 @@ +@@ -19,6 +19,6 @@ &spi1 { flash@0 { compatible = "jedec,spi-nor"; reg = <0>; @@ -40,3 +40,6 @@ index 111111111111..222222222222 100644 + spi-max-frequency = <10000000>; }; }; +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch b/patch/kernel/archive/rockchip64-7.1/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch index 3ddc29b865d8..80b7fb1b186d 100644 --- a/patch/kernel/archive/rockchip64-7.1/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch +++ b/patch/kernel/archive/rockchip64-7.1/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch @@ -1,25 +1,24 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paolo Sabatino Date: Thu, 16 Jun 2022 19:19:49 +0000 -Subject: [PATCH] fix spreadtrum (sprd) bluetooth broken park link status +Subject: fix spreadtrum (sprd) bluetooth broken park link status Spreadtrum/uwe5622 Bluetooth firmware reports Park link mode support but rejects HCI commands to enable it. This patch adds HCI_QUIRK_BROKEN_PARK_LINK_STATUS. - --- drivers/bluetooth/hci_ldisc.c | 6 ++++++ include/net/bluetooth/hci.h | 6 ++++++ - net/bluetooth/hci_sync.c | 2 +- + net/bluetooth/hci_sync.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c -index 10e936b87cc8..c895fffb6080 100644 +index 111111111111..222222222222 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c -@@ -694,6 +694,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) +@@ -700,6 +700,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) hdev->setup = hci_uart_setup; SET_HCIDEV_DEV(hdev, hu->tty->dev); - + + // Set the broken Park link status quirk, specific for spreadtrum (sprd) + // bluetooth devices + if (hdev->manufacturer == 0xffff && hu->tty->driver && @@ -28,15 +27,15 @@ index 10e936b87cc8..c895fffb6080 100644 + if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags)) hci_set_quirk(hdev, HCI_QUIRK_RAW_DEVICE); - + diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h -index cb4c02d00759..f7aab69d03da 100644 +index 111111111111..222222222222 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -378,6 +378,12 @@ enum { */ HCI_QUIRK_BROKEN_READ_PAGE_SCAN_TYPE, - + + /* + * Device declares that support Park link status, but it really + * does not support it and fails to initialize @@ -45,20 +44,20 @@ index cb4c02d00759..f7aab69d03da 100644 + __HCI_NUM_QUIRKS, }; - + diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c -index 10b8c24a3fbe..69641902f78b 100644 +index 111111111111..222222222222 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4216,7 +4216,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) +@@ -4275,7 +4275,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) link_policy |= HCI_LP_HOLD; if (lmp_sniff_capable(hdev)) link_policy |= HCI_LP_SNIFF; - if (lmp_park_capable(hdev)) + if (lmp_park_capable(hdev) && !hci_test_quirk(hdev, HCI_QUIRK_BROKEN_PARK_LINK_STATUS)) link_policy |= HCI_LP_PARK; - + cp.policy = cpu_to_le16(link_policy); +-- +Armbian --- -2.30.2 diff --git a/patch/kernel/archive/rockchip64-7.1/general-cryptov1-trng.patch b/patch/kernel/archive/rockchip64-7.1/general-cryptov1-trng.patch index df321b6190db..c2883ec08b37 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-cryptov1-trng.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-cryptov1-trng.patch @@ -18,7 +18,7 @@ diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 111111111111..222222222222 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig -@@ -700,6 +700,14 @@ config CRYPTO_DEV_ROCKCHIP +@@ -699,6 +699,14 @@ config CRYPTO_DEV_ROCKCHIP This driver interfaces with the hardware crypto accelerator. Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode. diff --git a/patch/kernel/archive/rockchip64-7.1/general-disable-mtu-validation.patch b/patch/kernel/archive/rockchip64-7.1/general-disable-mtu-validation.patch index 6656d1d0dc3f..922346de0778 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-disable-mtu-validation.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-disable-mtu-validation.patch @@ -18,7 +18,7 @@ diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/eth index 111111111111..222222222222 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -6103,27 +6103,15 @@ static void stmmac_set_rx_mode(struct net_device *dev) +@@ -6089,27 +6089,15 @@ static void stmmac_set_rx_mode(struct net_device *dev) static int stmmac_change_mtu(struct net_device *dev, int new_mtu) { struct stmmac_priv *priv = netdev_priv(dev); diff --git a/patch/kernel/archive/rockchip64-7.1/general-driver-tm16xx-led-driver.patch b/patch/kernel/archive/rockchip64-7.1/general-driver-tm16xx-led-driver.patch index 24cd08ef8e31..ce23485e3152 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-driver-tm16xx-led-driver.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-driver-tm16xx-led-driver.patch @@ -489,7 +489,7 @@ diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentat index 111111111111..222222222222 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml -@@ -586,6 +586,8 @@ patternProperties: +@@ -588,6 +588,8 @@ patternProperties: description: Fastrax Oy "^fcs,.*": description: Fairchild Semiconductor @@ -498,7 +498,7 @@ index 111111111111..222222222222 100644 "^feixin,.*": description: Shenzhen Feixin Photoelectic Co., Ltd "^feiyang,.*": -@@ -1327,6 +1329,8 @@ patternProperties: +@@ -1329,6 +1331,8 @@ patternProperties: description: Prime View International (PVI) "^primux,.*": description: Primux Trading, S.L. @@ -507,7 +507,7 @@ index 111111111111..222222222222 100644 "^probox2,.*": description: PROBOX2 (by W2COMP Co., Ltd.) "^pri,.*": -@@ -1688,6 +1692,8 @@ patternProperties: +@@ -1690,6 +1694,8 @@ patternProperties: description: Texas Instruments "^tianma,.*": description: Tianma Micro-electronics Co., Ltd. @@ -516,7 +516,7 @@ index 111111111111..222222222222 100644 "^tlm,.*": description: Trusted Logic Mobility "^tmt,.*": -@@ -1857,6 +1863,8 @@ patternProperties: +@@ -1861,6 +1867,8 @@ patternProperties: description: Wingtech Technology Co., Ltd. "^winlink,.*": description: WinLink Co., Ltd @@ -525,7 +525,7 @@ index 111111111111..222222222222 100644 "^winsen,.*": description: Winsen Corp. "^winstar,.*": -@@ -1873,6 +1881,8 @@ patternProperties: +@@ -1877,6 +1885,8 @@ patternProperties: description: Wobo "^wolfvision,.*": description: WolfVision GmbH diff --git a/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-yixian-yx0345-panel.patch b/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-yixian-yx0345-panel.patch index add280329eac..692742987263 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-yixian-yx0345-panel.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-yixian-yx0345-panel.patch @@ -13,7 +13,7 @@ diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -1288,6 +1288,15 @@ config DRM_PANEL_WIDECHIPS_WS2401 +@@ -1309,6 +1309,15 @@ config DRM_PANEL_WIDECHIPS_WS2401 480x800 display controller used in panels such as Samsung LMS380KF01. This display is used in the Samsung Galaxy Ace 2 GT-I8160 (Codina). @@ -33,7 +33,7 @@ diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile -@@ -129,3 +129,4 @@ obj-$(CONFIG_DRM_PANEL_VISIONOX_VTDR6130) += panel-visionox-vtdr6130.o +@@ -130,3 +130,4 @@ obj-$(CONFIG_DRM_PANEL_VISIONOX_VTDR6130) += panel-visionox-vtdr6130.o obj-$(CONFIG_DRM_PANEL_VISIONOX_R66451) += panel-visionox-r66451.o obj-$(CONFIG_DRM_PANEL_WIDECHIPS_WS2401) += panel-widechips-ws2401.o obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o diff --git a/patch/kernel/archive/rockchip64-7.1/general-dw-hdmi-qp-error2info-logging-k7.patch b/patch/kernel/archive/rockchip64-7.1/general-dw-hdmi-qp-error2info-logging-k7.patch index 92b35945199e..aff202aee991 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-dw-hdmi-qp-error2info-logging-k7.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-dw-hdmi-qp-error2info-logging-k7.patch @@ -1,12 +1,7 @@ -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 1/3] drm/bridge: dw-hdmi-qp: Return 0 in audio prepare - when disconnected +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Detlev Casanova Date: Tue, 22 Jul 2025 15:54:35 -0400 -Message-Id: <20250722195437.1347865-2-detlev.casanova@collabora.com> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit +Subject: drm/bridge: dw-hdmi-qp: Return 0 in audio prepare when disconnected To configure audio registers, the clock of the video port in use must be enabled. @@ -41,10 +36,10 @@ Signed-off-by: Detlev Casanova 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c -index 5e5f8c2f95be1..9b9d43c02e3a5 100644 +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c -@@ -458,8 +458,16 @@ static int dw_hdmi_qp_audio_prepare(struct drm_connector *connector, +@@ -483,8 +483,16 @@ static int dw_hdmi_qp_audio_prepare(struct drm_bridge *bridge, struct dw_hdmi_qp *hdmi = dw_hdmi_qp_from_bridge(bridge); bool ref2stream = false; @@ -63,17 +58,12 @@ index 5e5f8c2f95be1..9b9d43c02e3a5 100644 if (fmt->bit_clk_provider | fmt->frame_clk_provider) { dev_err(hdmi->dev, "unsupported clock settings\n"); -- -2.50.1 +Armbian -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 2/3] ASoC: hdac_hdmi: Use dev_info on invalid ELD - version +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Detlev Casanova Date: Tue, 22 Jul 2025 15:54:36 -0400 -Message-Id: <20250722195437.1347865-3-detlev.casanova@collabora.com> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit +Subject: ASoC: hdac_hdmi: Use dev_info on invalid ELD version When disconnected, the ELD data cannot be read by the display driver, so it just sets the data to 0. @@ -94,10 +84,10 @@ Signed-off-by: Detlev Casanova 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c -index 1139a2754ca33..4cc3b7a1062bd 100644 +index 111111111111..222222222222 100644 --- a/sound/soc/codecs/hdac_hdmi.c +++ b/sound/soc/codecs/hdac_hdmi.c -@@ -1236,7 +1236,7 @@ static int hdac_hdmi_parse_eld(struct hd +@@ -1238,7 +1238,7 @@ static int hdac_hdmi_parse_eld(struct hdac_device *hdev, >> DRM_ELD_VER_SHIFT; if (ver != ELD_VER_CEA_861D && ver != ELD_VER_PARTIAL) { @@ -106,19 +96,13 @@ index 1139a2754ca33..4cc3b7a1062bd 100644 "HDMI: Unknown ELD version %d\n", ver); return -EINVAL; } - -- -2.50.1 +Armbian -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 3/3] drm/bridge: synopsys: Do not warn about audio - params computation +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Detlev Casanova Date: Tue, 22 Jul 2025 15:54:37 -0400 -Message-Id: <20250722195437.1347865-4-detlev.casanova@collabora.com> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit +Subject: drm/bridge: synopsys: Do not warn about audio params computation There is no need to warn about non pre-computed values, just change it to dbg. @@ -130,10 +114,10 @@ Signed-off-by: Detlev Casanova 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c -index 9b9d43c02e3a5..d974bcad8f94a 100644 +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c -@@ -276,8 +276,7 @@ static unsigned int dw_hdmi_qp_find_n(struct dw_hdmi_qp *hdmi, unsigned long pix +@@ -301,8 +301,7 @@ static unsigned int dw_hdmi_qp_find_n(struct dw_hdmi_qp *hdmi, unsigned long pix if (n > 0) return n; @@ -144,5 +128,5 @@ index 9b9d43c02e3a5..d974bcad8f94a 100644 return dw_hdmi_qp_compute_n(hdmi, pixel_clk, sample_rate); } -- -2.50.1 +Armbian diff --git a/patch/kernel/archive/rockchip64-7.1/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch b/patch/kernel/archive/rockchip64-7.1/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch index 1b4f91206392..87609b136c29 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch @@ -21,7 +21,7 @@ Signed-off-by: SuperKali 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/clk/rockchip/clk-rk3588.c b/drivers/clk/rockchip/clk-rk3588.c -index 2cc85fb..169ed47 100644 +index 111111111111..222222222222 100644 --- a/drivers/clk/rockchip/clk-rk3588.c +++ b/drivers/clk/rockchip/clk-rk3588.c @@ -896,7 +896,7 @@ static struct rockchip_clk_branch rk3588_early_clk_branches[] __initdata = { @@ -62,3 +62,4 @@ index 2cc85fb..169ed47 100644 GATE(CLK_DDR_FAIL_SAFE, "clk_ddr_fail_safe", "clk_pmu0", CLK_IGNORE_UNUSED, -- Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/orangepi5-ultra-hdmirx-dts-fix.patch b/patch/kernel/archive/rockchip64-7.1/orangepi5-ultra-hdmirx-dts-fix.patch index d44d4753fe37..43bfb13b164d 100644 --- a/patch/kernel/archive/rockchip64-7.1/orangepi5-ultra-hdmirx-dts-fix.patch +++ b/patch/kernel/archive/rockchip64-7.1/orangepi5-ultra-hdmirx-dts-fix.patch @@ -1,8 +1,8 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: pdapandapda Date: Mon, 13 Jul 2026 21:47:55 +0000 -Subject: arm64: dts: rk3588-orangepi-5-ultra: Enable HDMI RX with HPD detection - arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts +Subject: arm64: dts: rk3588-orangepi-5-ultra: Enable HDMI RX with HPD + detection arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts Signed-off-by: pdapandapda --- @@ -10,12 +10,10 @@ Signed-off-by: pdapandapda 1 file changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts -index f8c6c080e418..9b5ca029134b 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts -@@ -49,10 +49,17 @@ &hdmi1_sound { - - &hdptxphy1 { +@@ -51,6 +51,13 @@ &hdptxphy1 { status = "okay"; }; @@ -29,11 +27,7 @@ index f8c6c080e418..9b5ca029134b 100644 &i2s6_8ch { status = "okay"; }; - - &led_blue_pwm { -@@ -62,10 +69,16 @@ &led_blue_pwm { - &led_green_pwm { - pwms = <&pwm5 0 25000 PWM_POLARITY_INVERTED>; +@@ -64,6 +71,12 @@ &led_green_pwm { }; &pinctrl { @@ -46,8 +40,6 @@ index f8c6c080e418..9b5ca029134b 100644 usb { usb_otg_pwren: usb-otg-pwren { rockchip,pins = <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; - }; - }; -- -Created with Armbian build tools https://github.com/armbian/build +Armbian diff --git a/patch/kernel/archive/rockchip64-7.1/rk3328-add-dmc-driver.patch b/patch/kernel/archive/rockchip64-7.1/rk3328-add-dmc-driver.patch index 330eff2bb5e2..a04c05c2ef7c 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3328-add-dmc-driver.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3328-add-dmc-driver.patch @@ -6,19 +6,19 @@ Subject: rk3328 dmc driver --- arch/arm64/boot/dts/rockchip/rk3328-dram-default-timing.dtsi | 311 ++++ arch/arm64/boot/dts/rockchip/rk3328.dtsi | 61 + - drivers/clk/rockchip/clk-ddr.c | 130 ++ + drivers/clk/rockchip/clk-ddr.c | 133 ++ drivers/clk/rockchip/clk-rk3328.c | 13 +- drivers/clk/rockchip/clk.h | 3 +- drivers/devfreq/Kconfig | 12 + drivers/devfreq/Makefile | 1 + - drivers/devfreq/event/rockchip-dfi.c | 77 +- + drivers/devfreq/event/rockchip-dfi.c | 82 +- drivers/devfreq/rk3328_dmc.c | 836 ++++++++++ include/dt-bindings/clock/rockchip-ddr.h | 63 + include/dt-bindings/memory/rk3328-dram.h | 159 ++ include/soc/rockchip/rk3228_grf.h | 14 + include/soc/rockchip/rk3328_grf.h | 14 + include/soc/rockchip/rockchip_sip.h | 11 + - 14 files changed, 1691 insertions(+), 14 deletions(-) + 14 files changed, 1696 insertions(+), 17 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3328-dram-default-timing.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-dram-default-timing.dtsi new file mode 100644 @@ -410,7 +410,7 @@ index 111111111111..222222222222 100644 compatible = "rockchip,rk3328-efuse"; reg = <0x0 0xff260000 0x0 0x50>; diff --git a/drivers/clk/rockchip/clk-ddr.c b/drivers/clk/rockchip/clk-ddr.c -index 81ae8a4ee30e..42dd7a37aa16 100644 +index 111111111111..222222222222 100644 --- a/drivers/clk/rockchip/clk-ddr.c +++ b/drivers/clk/rockchip/clk-ddr.c @@ -88,6 +88,136 @@ static const struct clk_ops rockchip_ddrclk_sip_ops = { @@ -636,7 +636,7 @@ index 111111111111..222222222222 100644 obj-$(CONFIG_ARM_TEGRA_DEVFREQ) += tegra30-devfreq.o diff --git a/drivers/devfreq/event/rockchip-dfi.c b/drivers/devfreq/event/rockchip-dfi.c -index 5e6e7e900bda..ade65e839c93 100644 +index 111111111111..222222222222 100644 --- a/drivers/devfreq/event/rockchip-dfi.c +++ b/drivers/devfreq/event/rockchip-dfi.c @@ -25,6 +25,8 @@ diff --git a/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch b/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch index 5e68ca36a241..86da92da49dd 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch @@ -13,7 +13,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -3306,7 +3306,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3311,7 +3311,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port) { struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; @@ -22,7 +22,7 @@ index 111111111111..222222222222 100644 if (!port->partner_pd) port->partner_pd = usb_power_delivery_register(NULL, &desc); -@@ -3316,11 +3316,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3321,11 +3321,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port) memcpy(caps.pdo, port->source_caps, sizeof(u32) * port->nr_source_caps); caps.role = TYPEC_SOURCE; diff --git a/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch b/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch index 25e7d7bb3d39..23f6a93dea2b 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch @@ -18,7 +18,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -3307,15 +3307,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3312,15 +3312,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port) struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; struct usb_power_delivery_capabilities *cap; @@ -45,7 +45,7 @@ index 111111111111..222222222222 100644 cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) return PTR_ERR(cap); -@@ -3330,15 +3337,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port) +@@ -3335,15 +3342,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port) struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; struct usb_power_delivery_capabilities *cap; @@ -72,7 +72,7 @@ index 111111111111..222222222222 100644 cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) return PTR_ERR(cap); -@@ -7743,10 +7757,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port) +@@ -7748,10 +7762,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port) port->pds[i] = usb_power_delivery_register(port->dev, &desc); if (IS_ERR(port->pds[i])) { ret = PTR_ERR(port->pds[i]); diff --git a/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch b/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch index 4e2dd4267cd9..e11601681e1d 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch @@ -37,7 +37,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -2030,6 +2030,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port) +@@ -2035,6 +2035,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port) return; for (i = 0; i < modep->altmodes; i++) { diff --git a/patch/kernel/archive/rockchip64-7.1/rk3588-1230-can-rockchip-add-rk3588-can-support.patch b/patch/kernel/archive/rockchip64-7.1/rk3588-1230-can-rockchip-add-rk3588-can-support.patch index f69712f52ac0..7c2d841d1b37 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3588-1230-can-rockchip-add-rk3588-can-support.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3588-1230-can-rockchip-add-rk3588-can-support.patch @@ -45,12 +45,10 @@ Signed-off-by: luch00 <1579567540@qq.com> 5 files changed, 76 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml b/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml -index a077c0330013..81e2b6dfeb02 100644 +index 111111111111..222222222222 100644 --- a/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml +++ b/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml -@@ -14,11 +14,13 @@ allOf: - - $ref: can-controller.yaml# - +@@ -16,7 +16,9 @@ allOf: properties: compatible: oneOf: @@ -61,15 +59,11 @@ index a077c0330013..81e2b6dfeb02 100644 - items: - const: rockchip,rk3568v3-canfd - const: rockchip,rk3568v2-canfd - - reg: diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi -index c47bb3c68c6c..4c36e7602588 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi -@@ -2658,10 +2658,49 @@ dmac1: dma-controller@fea30000 { - clocks = <&cru ACLK_DMAC1>; - clock-names = "apb_pclk"; +@@ -2461,6 +2461,45 @@ dmac1: dma-controller@fea30000 { #dma-cells = <1>; }; @@ -115,15 +109,11 @@ index c47bb3c68c6c..4c36e7602588 100644 i2c1: i2c@fea90000 { compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c"; reg = <0x0 0xfea90000 0x0 0x1000>; - clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>; - clock-names = "i2c", "pclk"; diff --git a/drivers/net/can/rockchip/rockchip_canfd-core.c b/drivers/net/can/rockchip/rockchip_canfd-core.c -index 29de0c01e4ed..37c1c22c40c9 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/can/rockchip/rockchip_canfd-core.c +++ b/drivers/net/can/rockchip/rockchip_canfd-core.c -@@ -48,17 +48,25 @@ static const struct rkcanfd_devtype_data rkcanfd_devtype_data_rk3568v3 = { - RKCANFD_QUIRK_RK3568_ERRATUM_8 | RKCANFD_QUIRK_RK3568_ERRATUM_10 | - RKCANFD_QUIRK_RK3568_ERRATUM_11 | RKCANFD_QUIRK_RK3568_ERRATUM_12 | +@@ -50,6 +50,12 @@ static const struct rkcanfd_devtype_data rkcanfd_devtype_data_rk3568v3 = { RKCANFD_QUIRK_CANFD_BROKEN, }; @@ -136,7 +126,7 @@ index 29de0c01e4ed..37c1c22c40c9 100644 static const char *__rkcanfd_get_model_str(enum rkcanfd_model model) { switch (model) { - case RKCANFD_MODEL_RK3568V2: +@@ -57,6 +63,8 @@ static const char *__rkcanfd_get_model_str(enum rkcanfd_model model) return "rk3568v2"; case RKCANFD_MODEL_RK3568V3: return "rk3568v3"; @@ -145,11 +135,7 @@ index 29de0c01e4ed..37c1c22c40c9 100644 } return ""; - } - -@@ -146,10 +154,16 @@ static int rkcanfd_set_bittiming(struct rkcanfd_priv *priv) - FIELD_PREP(RKCANFD_REG_FD_DATA_BITTIMING_TSEG1, - dbt->prop_seg + dbt->phase_seg1 - 1); +@@ -148,6 +156,12 @@ static int rkcanfd_set_bittiming(struct rkcanfd_priv *priv) rkcanfd_write(priv, RKCANFD_REG_FD_DATA_BITTIMING, reg_dbt); @@ -162,11 +148,7 @@ index 29de0c01e4ed..37c1c22c40c9 100644 tdco = (priv->can.clock.freq / dbt->bitrate) * 2 / 3; tdco = min(tdco, FIELD_MAX(RKCANFD_REG_TRANSMIT_DELAY_COMPENSATION_TDC_OFFSET)); - reg_tdc = FIELD_PREP(RKCANFD_REG_TRANSMIT_DELAY_COMPENSATION_TDC_OFFSET, tdco) | - RKCANFD_REG_TRANSMIT_DELAY_COMPENSATION_TDC_ENABLE; -@@ -844,10 +858,13 @@ static const struct of_device_id rkcanfd_of_match[] = { - .compatible = "rockchip,rk3568v2-canfd", - .data = &rkcanfd_devtype_data_rk3568v2, +@@ -846,6 +860,9 @@ static const struct of_device_id rkcanfd_of_match[] = { }, { .compatible = "rockchip,rk3568v3-canfd", .data = &rkcanfd_devtype_data_rk3568v3, @@ -176,15 +158,11 @@ index 29de0c01e4ed..37c1c22c40c9 100644 }, { /* sentinel */ }, - }; - MODULE_DEVICE_TABLE(of, rkcanfd_of_match); diff --git a/drivers/net/can/rockchip/rockchip_canfd-rx.c b/drivers/net/can/rockchip/rockchip_canfd-rx.c -index 475c0409e215..24e87daa1df0 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/can/rockchip/rockchip_canfd-rx.c +++ b/drivers/net/can/rockchip/rockchip_canfd-rx.c -@@ -279,11 +279,14 @@ static int rkcanfd_handle_rx_int_one(struct rkcanfd_priv *priv) - static inline unsigned int - rkcanfd_rx_fifo_get_len(const struct rkcanfd_priv *priv) +@@ -281,7 +281,10 @@ rkcanfd_rx_fifo_get_len(const struct rkcanfd_priv *priv) { const u32 reg = rkcanfd_read(priv, RKCANFD_REG_RX_FIFO_CTRL); @@ -196,15 +174,11 @@ index 475c0409e215..24e87daa1df0 100644 } int rkcanfd_handle_rx_int(struct rkcanfd_priv *priv) - { - unsigned int len; diff --git a/drivers/net/can/rockchip/rockchip_canfd.h b/drivers/net/can/rockchip/rockchip_canfd.h -index 93131c7d7f54..95bea9bfd8a2 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/can/rockchip/rockchip_canfd.h +++ b/drivers/net/can/rockchip/rockchip_canfd.h -@@ -212,11 +212,12 @@ - #define RKCANFD_REG_TXEVENT_FIFO_CTRL_TXE_FIFO_CNT GENMASK(8, 5) - #define RKCANFD_REG_TXEVENT_FIFO_CTRL_TXE_FIFO_WATERMARK GENMASK(4, 1) +@@ -214,7 +214,8 @@ #define RKCANFD_REG_TXEVENT_FIFO_CTRL_TXE_FIFO_ENABLE BIT(0) #define RKCANFD_REG_RX_FIFO_CTRL 0x118 @@ -214,11 +188,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 #define RKCANFD_REG_RX_FIFO_CTRL_RX_FIFO_FULL_WATERMARK GENMASK(3, 1) #define RKCANFD_REG_RX_FIFO_CTRL_RX_FIFO_ENABLE BIT(0) - #define RKCANFD_REG_AFC_CTRL 0x11c - #define RKCANFD_REG_AFC_CTRL_UAF5 BIT(4) -@@ -329,10 +330,15 @@ - * - * On the rk3568v2 and rk3568v3, this problem only occurs extremely +@@ -331,6 +332,11 @@ * rarely with the standard clock of 300 MHz, but almost immediately * at 80 MHz. * @@ -230,11 +200,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 * To workaround this problem, check for empty FIFO with * rkcanfd_fifo_header_empty() in rkcanfd_handle_rx_int_one() and exit * early. - * - * To reproduce: -@@ -342,10 +348,12 @@ - #define RKCANFD_QUIRK_RK3568_ERRATUM_5 BIT(4) - +@@ -344,6 +350,8 @@ /* Erratum 6: The CAN controller's transmission of extended frames may * intermittently change into standard frames * @@ -243,11 +209,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 * Work around this issue by activating self reception (RXSTX). If we * have pending TX CAN frames, check all RX'ed CAN frames in * rkcanfd_rxstx_filter(). - * - * If it's a frame we've send and it's OK, call the TX complete -@@ -422,20 +430,24 @@ - * DUT: - * cangen can0 -I2 -L1 -Di -p10 -c10 -g 1 -e +@@ -424,6 +432,9 @@ * cansequence -rv -i 1 * * - TX starvation after repeated Bus-Off @@ -257,10 +219,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 * To reproduce: * host: * sleep 3 && cangen can0 -I2 -Li -Di -p10 -g 0.0 - * DUT: - * cangen can0 -I2 -Li -Di -p10 -g 0.05 - */ - +@@ -434,6 +445,7 @@ enum rkcanfd_model { RKCANFD_MODEL_RK3568V2 = 0x35682, RKCANFD_MODEL_RK3568V3 = 0x35683, @@ -268,8 +227,6 @@ index 93131c7d7f54..95bea9bfd8a2 100644 }; struct rkcanfd_devtype_data { - enum rkcanfd_model model; - u32 quirks; -- -Created with Armbian build tools https://github.com/armbian/build +Armbian diff --git a/patch/kernel/archive/rockchip64-7.1/rk35xx-montjoie-crypto-v2-rk35xx.patch b/patch/kernel/archive/rockchip64-7.1/rk35xx-montjoie-crypto-v2-rk35xx.patch index b3aba4da55cf..cad80edf8e40 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk35xx-montjoie-crypto-v2-rk35xx.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk35xx-montjoie-crypto-v2-rk35xx.patch @@ -345,7 +345,7 @@ diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 111111111111..222222222222 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig -@@ -739,6 +739,35 @@ config CRYPTO_DEV_XILINX_TRNG +@@ -737,6 +737,35 @@ config CRYPTO_DEV_XILINX_TRNG To compile this driver as a module, choose M here: the module will be called xilinx-trng. diff --git a/patch/kernel/archive/rockchip64-7.1/rk35xx-panthor-1GHz.patch b/patch/kernel/archive/rockchip64-7.1/rk35xx-panthor-1GHz.patch index 43fa6b58c0c5..93cb5347d22f 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk35xx-panthor-1GHz.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk35xx-panthor-1GHz.patch @@ -212,7 +212,7 @@ index 111111111111..222222222222 100644 opp-300000000 { opp-hz = /bits/ 64 <300000000>; opp-microvolt = <712500 712500 875000>; -@@ -1259,10 +1265,10 @@ power-domain@RK3576_PD_VO1 { +@@ -1285,10 +1291,10 @@ power-domain@RK3576_PD_VO1 { gpu: gpu@27800000 { compatible = "rockchip,rk3576-mali", "arm,mali-bifrost"; reg = <0x0 0x27800000 0x0 0x20000>; @@ -691,7 +691,7 @@ diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/panthor/ index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c -@@ -72,6 +72,12 @@ static int panthor_clk_init(struct panthor_device *ptdev) +@@ -73,6 +73,12 @@ static int panthor_clk_init(struct panthor_device *ptdev) PTR_ERR(ptdev->clks.coregroup), "get 'coregroup' clock failed"); @@ -704,7 +704,7 @@ index 111111111111..222222222222 100644 drm_info(&ptdev->base, "clock rate = %lu\n", clk_get_rate(ptdev->clks.core)); return 0; } -@@ -509,10 +515,14 @@ int panthor_device_resume(struct device *dev) +@@ -517,10 +523,14 @@ int panthor_device_resume(struct device *dev) atomic_set(&ptdev->pm.state, PANTHOR_DEVICE_PM_STATE_RESUMING); @@ -720,7 +720,7 @@ index 111111111111..222222222222 100644 ret = clk_prepare_enable(ptdev->clks.stacks); if (ret) goto err_disable_core_clk; -@@ -571,6 +581,9 @@ int panthor_device_resume(struct device *dev) +@@ -579,6 +589,9 @@ int panthor_device_resume(struct device *dev) err_disable_core_clk: clk_disable_unprepare(ptdev->clks.core); @@ -730,7 +730,7 @@ index 111111111111..222222222222 100644 err_set_suspended: atomic_set(&ptdev->pm.state, PANTHOR_DEVICE_PM_STATE_SUSPENDED); atomic_set(&ptdev->pm.recovery_needed, 1); -@@ -618,6 +631,7 @@ int panthor_device_suspend(struct device *dev) +@@ -626,6 +639,7 @@ int panthor_device_suspend(struct device *dev) clk_disable_unprepare(ptdev->clks.coregroup); clk_disable_unprepare(ptdev->clks.stacks); clk_disable_unprepare(ptdev->clks.core); @@ -742,7 +742,7 @@ diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/panthor/ index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h -@@ -138,6 +138,9 @@ struct panthor_device { +@@ -141,6 +141,9 @@ struct panthor_device { /** @clks: GPU clocks. */ struct { diff --git a/patch/kernel/archive/rockchip64-7.1/temporary-workaround-dma-reset.patch b/patch/kernel/archive/rockchip64-7.1/temporary-workaround-dma-reset.patch index fe9ee57a8976..7fc34ccefbe3 100644 --- a/patch/kernel/archive/rockchip64-7.1/temporary-workaround-dma-reset.patch +++ b/patch/kernel/archive/rockchip64-7.1/temporary-workaround-dma-reset.patch @@ -17,7 +17,7 @@ diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/eth index 111111111111..222222222222 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -3284,8 +3284,8 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv) +@@ -3270,8 +3270,8 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv) ret = stmmac_reset(priv); if (ret) { From be178e7d13d93c69d7770fc9358592e63063fb7e Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 05:56:34 +0200 Subject: [PATCH 2/7] rockchip64-7.1: (2/2) fix magic marker and rewrite patches against 7.1.6 --- ...al-drm-panel-add-rocknix-generic-dsi.patch | 27 ++++++++----- ...-input-add-spi-mcu-joypad-01-options.patch | 31 ++++++++++++--- ...ral-input-add-spi-mcu-joypad-02-core.patch | 21 ++++++++-- ...al-input-add-spi-mcu-joypad-03-input.patch | 15 +++++++- ...ral-input-add-spi-mcu-joypad-04-leds.patch | 15 +++++++- .../general-input-rmi4-reset-gpio.patch | 26 +++++++++---- .../general-power-supply-add-cw221x.patch | 26 +++++++++++-- .../general-power-supply-add-sgm41542.patch | 18 +++++++-- ...eneral-usb-typec-rt1711h-add-husb311.patch | 16 ++++++-- ...ckchip-vop2-fix-gamma-lut-write-mask.patch | 12 +++++- ...-drm-rockchip-vop2-vp2-primary-plane.patch | 10 ++++- ...chip-usbdp-replay-hpd-on-dp-phy-init.patch | 12 +++++- ...i-dwcmshc-rk3576-dll-tap-calibration.patch | 38 ++++++++++++------- 13 files changed, 205 insertions(+), 62 deletions(-) diff --git a/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-rocknix-generic-dsi.patch b/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-rocknix-generic-dsi.patch index 30813e23ecc5..d6f0ed6534b9 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-rocknix-generic-dsi.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-drm-panel-add-rocknix-generic-dsi.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] drm/panel: add generic DSI panel driver (ROCKNIX) +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: drm/panel: add generic DSI panel driver (ROCKNIX) Add the ROCKNIX "rocknix,generic-dsi" MIPI-DSI panel driver, which reads its display timings and init sequence from a device-tree "panel_description" @@ -10,14 +12,19 @@ Driver by Danil Zagoskin (ROCKNIX); Kconfig/Makefile added for mainline. Signed-off-by: crackerjacques --- + drivers/gpu/drm/panel/Kconfig | 11 + + drivers/gpu/drm/panel/Makefile | 1 + + drivers/gpu/drm/panel/panel-rocknix-generic-dsi.c | 699 ++++++++++ + 3 files changed, 711 insertions(+) + diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig -index 7450b27..884e722 100644 +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -770,6 +770,17 @@ config DRM_PANEL_RENESAS_R69328 +@@ -772,6 +772,17 @@ config DRM_PANEL_RENESAS_R69328 This panel controller can be found in LG Optimus 4X P895 smartphone in combination with LCD panel. - + +config DRM_PANEL_ROCKNIX_GENERIC_DSI + tristate "Generic DSI panel (ROCKNIX, timings via DT panel_description)" + depends on OF @@ -33,10 +40,10 @@ index 7450b27..884e722 100644 tristate "Ronbo Electronics RB070D30 panel" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile -index c2c5cf8..5a316b2 100644 +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile -@@ -76,6 +76,7 @@ obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM69380) += panel-raydium-rm69380.o +@@ -77,6 +77,7 @@ obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM692E5) += panel-raydium-rm692e5.o obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM69380) += panel-raydium-rm69380.o obj-$(CONFIG_DRM_PANEL_RENESAS_R61307) += panel-renesas-r61307.o obj-$(CONFIG_DRM_PANEL_RENESAS_R69328) += panel-renesas-r69328.o @@ -44,12 +51,9 @@ index c2c5cf8..5a316b2 100644 obj-$(CONFIG_DRM_PANEL_RONBO_RB070D30) += panel-ronbo-rb070d30.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_AMS581VF01) += panel-samsung-ams581vf01.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_AMS639RQ08) += panel-samsung-ams639rq08.o - obj-$(CONFIG_DRM_PANEL_LVDS) += panel-lvds.o - obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o - obj-$(CONFIG_DRM_PANEL_EDP) += panel-edp.o diff --git a/drivers/gpu/drm/panel/panel-rocknix-generic-dsi.c b/drivers/gpu/drm/panel/panel-rocknix-generic-dsi.c new file mode 100644 -index 0000000..74e1be2 +index 000000000000..111111111111 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-rocknix-generic-dsi.c @@ -0,0 +1,699 @@ @@ -752,3 +756,6 @@ index 0000000..74e1be2 +MODULE_AUTHOR("Danil Zagoskin "); +MODULE_DESCRIPTION("DRM driver for generic MIPI DSI panel"); +MODULE_LICENSE("GPL v2"); +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-01-options.patch b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-01-options.patch index 6bd71f6f68cc..a8dfd31dc11c 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-01-options.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-01-options.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] input: joystick: add spi-mcu-joypad Kconfig and Makefile +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: input: joystick: add spi-mcu-joypad Kconfig and Makefile Wire up the spi-mcu-joypad driver in the joystick subsystem Kconfig and Makefile, and add the driver's own Kconfig/Makefile @@ -9,9 +11,17 @@ where an MCU exposes them over SPI. Driver from ROCKNIX. Signed-off-by: crackerjacques --- + drivers/input/joystick/Kconfig | 2 ++ + drivers/input/joystick/Makefile | 1 + + drivers/input/joystick/spi-mcu-joypad/Kconfig | 15 ++++++++++ + drivers/input/joystick/spi-mcu-joypad/Makefile | 7 +++++ + 4 files changed, 25 insertions(+) + +diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig +index 111111111111..222222222222 100644 --- a/drivers/input/joystick/Kconfig +++ b/drivers/input/joystick/Kconfig -@@ -364,6 +364,8 @@ +@@ -364,6 +364,8 @@ config JOYSTICK_PSXPAD_SPI_FF To drive rumble motor a dedicated power supply is required. @@ -20,9 +30,11 @@ Signed-off-by: crackerjacques config JOYSTICK_PXRC tristate "PhoenixRC Flight Controller Adapter" depends on USB_ARCH_HAS_HCD +diff --git a/drivers/input/joystick/Makefile b/drivers/input/joystick/Makefile +index 111111111111..222222222222 100644 --- a/drivers/input/joystick/Makefile +++ b/drivers/input/joystick/Makefile -@@ -26,6 +26,7 @@ +@@ -26,6 +26,7 @@ obj-$(CONFIG_JOYSTICK_MAGELLAN) += magellan.o obj-$(CONFIG_JOYSTICK_MAPLE) += maplecontrol.o obj-$(CONFIG_JOYSTICK_N64) += n64joy.o obj-$(CONFIG_JOYSTICK_PSXPAD_SPI) += psxpad-spi.o @@ -30,7 +42,10 @@ Signed-off-by: crackerjacques obj-$(CONFIG_JOYSTICK_PXRC) += pxrc.o obj-$(CONFIG_JOYSTICK_QWIIC) += qwiic-joystick.o obj-$(CONFIG_JOYSTICK_SEESAW) += adafruit-seesaw.o ---- a/drivers/input/joystick/spi-mcu-joypad/Kconfig +diff --git a/drivers/input/joystick/spi-mcu-joypad/Kconfig b/drivers/input/joystick/spi-mcu-joypad/Kconfig +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null +++ b/drivers/input/joystick/spi-mcu-joypad/Kconfig @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0-only @@ -48,7 +63,10 @@ Signed-off-by: crackerjacques + + To compile this driver as a module, choose M here: the + module will be called spi-mcu-joypad. ---- a/drivers/input/joystick/spi-mcu-joypad/Makefile +diff --git a/drivers/input/joystick/spi-mcu-joypad/Makefile b/drivers/input/joystick/spi-mcu-joypad/Makefile +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null +++ b/drivers/input/joystick/spi-mcu-joypad/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0-only @@ -58,3 +76,6 @@ Signed-off-by: crackerjacques + +obj-$(CONFIG_JOYSTICK_SPI_MCU_JOYPAD) += spi-mcu-joypad.o +spi-mcu-joypad-y := spi-mcu-joypad-core.o spi-mcu-joypad-input.o spi-mcu-joypad-leds.o +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-02-core.patch b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-02-core.patch index d6f6cc95eace..884cada17667 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-02-core.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-02-core.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] input: joystick: add spi-mcu-joypad core driver +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: input: joystick: add spi-mcu-joypad core driver Add the core of the SPI MCU joypad driver: the SPI transport, periodic polling via delayed_work and RX frame parsing, plus the shared header. @@ -9,7 +11,14 @@ ROCKNIX. Signed-off-by: crackerjacques --- ---- a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-core.c + drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-core.c | 325 ++++++++++ + drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad.h | 143 ++++ + 2 files changed, 468 insertions(+) + +diff --git a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-core.c b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-core.c +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null +++ b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-core.c @@ -0,0 +1,325 @@ +// SPDX-License-Identifier: GPL-2.0-or-later @@ -337,7 +346,10 @@ Signed-off-by: crackerjacques +MODULE_AUTHOR("ROCKNIX"); +MODULE_DESCRIPTION("SPI MCU Joypad — analog sticks and RGB LEDs"); +MODULE_LICENSE("GPL"); ---- a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad.h +diff --git a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad.h b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad.h +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null +++ b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad.h @@ -0,0 +1,143 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ @@ -483,3 +495,6 @@ Signed-off-by: crackerjacques +void mcu_joypad_leds_suspend(struct mcu_joypad *mjp); + +#endif /* _SPI_MCU_JOYPAD_H */ +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-03-input.patch b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-03-input.patch index 54645e4af755..998a367a6d89 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-03-input.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-03-input.patch @@ -1,12 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] input: joystick: spi-mcu-joypad - input device +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: input: joystick: spi-mcu-joypad - input device Register the input_dev and report the six analog axes decoded from the MCU frames. Part of the spi-mcu-joypad module. Driver from ROCKNIX. Signed-off-by: crackerjacques --- ---- a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-input.c + drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-input.c | 424 ++++++++++ + 1 file changed, 424 insertions(+) + +diff --git a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-input.c b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-input.c +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null +++ b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-input.c @@ -0,0 +1,424 @@ +// SPDX-License-Identifier: GPL-2.0-or-later @@ -433,3 +441,6 @@ Signed-off-by: crackerjacques + + return 0; +} +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-04-leds.patch b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-04-leds.patch index 2eb1907355d6..76b3ac05b381 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-04-leds.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-input-add-spi-mcu-joypad-04-leds.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] input: joystick: spi-mcu-joypad - multicolor LED rings +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: input: joystick: spi-mcu-joypad - multicolor LED rings Expose the two RGB LED rings (one per stick) via the multicolor LED class, driven over the same SPI MCU link. Part of the spi-mcu-joypad @@ -7,7 +9,13 @@ module (needs LEDS_CLASS_MULTICOLOR). Driver from ROCKNIX. Signed-off-by: crackerjacques --- ---- a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-leds.c + drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-leds.c | 204 ++++++++++ + 1 file changed, 204 insertions(+) + +diff --git a/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-leds.c b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-leds.c +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null +++ b/drivers/input/joystick/spi-mcu-joypad/spi-mcu-joypad-leds.c @@ -0,0 +1,204 @@ +// SPDX-License-Identifier: GPL-2.0-or-later @@ -214,3 +222,6 @@ Signed-off-by: crackerjacques + + spi_sync_transfer(mjp->spi, &xfer, 1); +} +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-input-rmi4-reset-gpio.patch b/patch/kernel/archive/rockchip64-7.1/general-input-rmi4-reset-gpio.patch index 34bd96f4d39a..fa56599eeb96 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-input-rmi4-reset-gpio.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-input-rmi4-reset-gpio.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] Input: synaptics-rmi4 - hard-reset via reset GPIO instead of +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: Input: synaptics-rmi4 - hard-reset via reset GPIO instead of chip-wide SW reset The rmi4 core issues an F01 device reset command (0x01) over i2c during @@ -19,6 +21,11 @@ Patch from ROCKNIX (RK3576 device patch 0008). Signed-off-by: crackerjacques --- + drivers/input/rmi4/rmi_i2c.c | 52 +++++++++- + 1 file changed, 51 insertions(+), 1 deletion(-) + +diff --git a/drivers/input/rmi4/rmi_i2c.c b/drivers/input/rmi4/rmi_i2c.c +index 111111111111..222222222222 100644 --- a/drivers/input/rmi4/rmi_i2c.c +++ b/drivers/input/rmi4/rmi_i2c.c @@ -8,6 +8,7 @@ @@ -37,7 +44,7 @@ Signed-off-by: crackerjacques */ struct rmi_i2c_xport { struct rmi_transport_dev xport; -@@ -40,6 +42,8 @@ +@@ -40,6 +42,8 @@ struct rmi_i2c_xport { struct regulator_bulk_data supplies[2]; u32 startup_delay; @@ -46,7 +53,7 @@ Signed-off-by: crackerjacques }; #define RMI_PAGE_SELECT_REGISTER 0xff -@@ -198,6 +202,28 @@ +@@ -198,6 +202,28 @@ static void rmi_i2c_unregister_transport(void *data) rmi_unregister_transport_device(&rmi_i2c->xport); } @@ -75,7 +82,7 @@ Signed-off-by: crackerjacques static int rmi_i2c_probe(struct i2c_client *client) { struct rmi_device_platform_data *pdata; -@@ -251,21 +277,43 @@ +@@ -251,21 +277,43 @@ static int rmi_i2c_probe(struct i2c_client *client) msleep(rmi_i2c->startup_delay); @@ -98,7 +105,7 @@ Signed-off-by: crackerjacques i2c_set_clientdata(client, rmi_i2c); - /* ++ /* + * Read reset_delay_ms from DT now so rmi_i2c_reset() can use it + * before rmi_driver_of_probe() is called later during transport + * device registration. @@ -108,7 +115,7 @@ Signed-off-by: crackerjacques + + rmi_i2c_reset(rmi_i2c); + -+ /* + /* * Setting the page to zero will (a) make sure the PSR is in a * known state, and (b) make sure we can talk to the device. */ @@ -120,7 +127,7 @@ Signed-off-by: crackerjacques dev_err(&client->dev, "Failed to set page select to 0\n"); return error; } -@@ -315,6 +363,7 @@ +@@ -315,6 +363,7 @@ static int rmi_i2c_resume(struct device *dev) return ret; msleep(rmi_i2c->startup_delay); @@ -128,7 +135,7 @@ Signed-off-by: crackerjacques ret = rmi_driver_resume(rmi_i2c->xport.rmi_dev, true); if (ret) -@@ -351,6 +400,7 @@ +@@ -351,6 +400,7 @@ static int rmi_i2c_runtime_resume(struct device *dev) return ret; msleep(rmi_i2c->startup_delay); @@ -136,3 +143,6 @@ Signed-off-by: crackerjacques ret = rmi_driver_resume(rmi_i2c->xport.rmi_dev, false); if (ret) +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-cw221x.patch b/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-cw221x.patch index 28950d70bf28..b873bdee979a 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-cw221x.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-cw221x.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] power: supply: add CW221x battery fuel gauge driver +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: power: supply: add CW221x battery fuel gauge driver Add the CellWise CW2215/CW2217/CW2218 fuel gauge driver (I2C; reports SoC, voltage, current, temperature, cycle count and SoH). Used for the @@ -8,12 +10,19 @@ in the board DT). Driver from ROCKNIX (RK3576 device patch 0006). Signed-off-by: crackerjacques --- + drivers/power/supply/Kconfig | 14 + + drivers/power/supply/Makefile | 1 + + drivers/power/supply/cw221x_battery.c | 958 ++++++++++ + 3 files changed, 973 insertions(+) + +diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig +index 111111111111..222222222222 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig -@@ -138,6 +138,20 @@ config BATTERY_CW2015 +@@ -141,6 +141,20 @@ config BATTERY_CW2015 This driver can also be built as a module. If so, the module will be called cw2015_battery. - + +config BATTERY_CW221X + tristate "CW221x Battery Fuel Gauge" + depends on I2C @@ -31,15 +40,21 @@ Signed-off-by: crackerjacques config BATTERY_DS2760 tristate "DS2760 battery driver (HP iPAQ & others)" depends on W1 +diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile +index 111111111111..222222222222 100644 --- a/drivers/power/supply/Makefile +++ b/drivers/power/supply/Makefile -@@ -27,5 +27,6 @@ obj-$(CONFIG_BATTERY_CHAGALL) += chagall-battery.o +@@ -27,6 +27,7 @@ obj-$(CONFIG_CHARGER_AXP20X) += axp20x_ac_power.o + obj-$(CONFIG_BATTERY_CHAGALL) += chagall-battery.o obj-$(CONFIG_BATTERY_CPCAP) += cpcap-battery.o obj-$(CONFIG_BATTERY_CW2015) += cw2015_battery.o +obj-$(CONFIG_BATTERY_CW221X) += cw221x_battery.o obj-$(CONFIG_BATTERY_DS2760) += ds2760_battery.o obj-$(CONFIG_BATTERY_DS2780) += ds2780_battery.o obj-$(CONFIG_BATTERY_DS2781) += ds2781_battery.o +diff --git a/drivers/power/supply/cw221x_battery.c b/drivers/power/supply/cw221x_battery.c +new file mode 100644 +index 000000000000..111111111111 --- /dev/null +++ b/drivers/power/supply/cw221x_battery.c @@ -0,0 +1,958 @@ @@ -1001,3 +1016,6 @@ Signed-off-by: crackerjacques +MODULE_AUTHOR("Xu Shengfei "); +MODULE_DESCRIPTION("CW221X FGADC Device Driver V0.1"); +MODULE_LICENSE("GPL"); +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-sgm41542.patch b/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-sgm41542.patch index 3539cbc702ef..1cb18ba1581c 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-sgm41542.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-power-supply-add-sgm41542.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] power: supply: add SGM41542 charger driver +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: power: supply: add SGM41542 charger driver Add the SGMICRO SGM41542 single-cell Li-ion charger driver (I2C; OTG VBUS regulator, input DPM, watchdog, NTC monitoring). Used by the @@ -9,8 +11,13 @@ regenerated against linux-7.1.y. Signed-off-by: crackerjacques --- + drivers/power/supply/Kconfig | 11 + + drivers/power/supply/Makefile | 1 + + drivers/power/supply/sgm41542_charger.c | 1419 ++++++++++ + 3 files changed, 1431 insertions(+) + diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig -index d8cf38f..1ed16da 100644 +index 111111111111..222222222222 100644 --- a/drivers/power/supply/Kconfig +++ b/drivers/power/supply/Kconfig @@ -870,6 +870,17 @@ config CHARGER_RK817 @@ -32,7 +39,7 @@ index d8cf38f..1ed16da 100644 tristate "Summit Microelectronics SMB3XX Battery Charger" depends on I2C diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile -index d0b3058..b64e41e 100644 +index 111111111111..222222222222 100644 --- a/drivers/power/supply/Makefile +++ b/drivers/power/supply/Makefile @@ -108,6 +108,7 @@ obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o @@ -45,7 +52,7 @@ index d0b3058..b64e41e 100644 obj-$(CONFIG_CHARGER_TPS65217) += tps65217_charger.o diff --git a/drivers/power/supply/sgm41542_charger.c b/drivers/power/supply/sgm41542_charger.c new file mode 100644 -index 0000000..b438237 +index 000000000000..111111111111 --- /dev/null +++ b/drivers/power/supply/sgm41542_charger.c @@ -0,0 +1,1419 @@ @@ -1468,3 +1475,6 @@ index 0000000..b438237 +MODULE_AUTHOR("Xu Shengfei "); +MODULE_DESCRIPTION("sgm4154x charger driver"); +MODULE_LICENSE("GPL"); +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/general-usb-typec-rt1711h-add-husb311.patch b/patch/kernel/archive/rockchip64-7.1/general-usb-typec-rt1711h-add-husb311.patch index 7b51b6dd97fb..d1233de57a41 100644 --- a/patch/kernel/archive/rockchip64-7.1/general-usb-typec-rt1711h-add-husb311.patch +++ b/patch/kernel/archive/rockchip64-7.1/general-usb-typec-rt1711h-add-husb311.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] usb: typec: tcpci_rt1711h: add Hynetek HUSB311 IDs +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: usb: typec: tcpci_rt1711h: add Hynetek HUSB311 IDs The Hynetek HUSB311 is a pin- and register-compatible drop-in replacement for the Richtek RT1711H (same approach as the existing @@ -13,11 +15,14 @@ what linux-7.1.y still needs. Signed-off-by: crackerjacques --- + drivers/usb/typec/tcpm/tcpci_rt1711h.c | 2 ++ + 1 file changed, 2 insertions(+) + diff --git a/drivers/usb/typec/tcpm/tcpci_rt1711h.c b/drivers/usb/typec/tcpm/tcpci_rt1711h.c -index 4b3e4e2..31980ad 100644 +index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpci_rt1711h.c +++ b/drivers/usb/typec/tcpm/tcpci_rt1711h.c -@@ -374,6 +374,7 @@ static const struct rt1711h_chip_info rt1715 = { +@@ -378,6 +378,7 @@ static const struct rt1711h_chip_info rt1715 = { static const struct i2c_device_id rt1711h_id[] = { { "et7304", (kernel_ulong_t)&rt1715 }, @@ -25,7 +30,7 @@ index 4b3e4e2..31980ad 100644 { "rt1711h", (kernel_ulong_t)&rt1711h }, { "rt1715", (kernel_ulong_t)&rt1715 }, {} -@@ -382,6 +383,7 @@ MODULE_DEVICE_TABLE(i2c, rt1711h_id); +@@ -386,6 +387,7 @@ MODULE_DEVICE_TABLE(i2c, rt1711h_id); static const struct of_device_id rt1711h_of_match[] = { { .compatible = "etekmicro,et7304", .data = &rt1715 }, @@ -33,3 +38,6 @@ index 4b3e4e2..31980ad 100644 { .compatible = "richtek,rt1711h", .data = &rt1711h }, { .compatible = "richtek,rt1715", .data = &rt1715 }, {} +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/rk3576-0010-drm-rockchip-vop2-fix-gamma-lut-write-mask.patch b/patch/kernel/archive/rockchip64-7.1/rk3576-0010-drm-rockchip-vop2-fix-gamma-lut-write-mask.patch index 1da72582f751..edfe20b3ec9b 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3576-0010-drm-rockchip-vop2-fix-gamma-lut-write-mask.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3576-0010-drm-rockchip-vop2-fix-gamma-lut-write-mask.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] drm/rockchip: vop2: fix gamma LUT port select on rk3576 +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: drm/rockchip: vop2: fix gamma LUT port select on rk3576 On rk3576 the LUT_PORT_SEL register (0x058) is a write-masked register (bits [31:16] are a write-enable mask for bits [15:0]), unlike rk3588 @@ -17,8 +19,11 @@ Set the write-enable bits when the VOP is an rk3576. Signed-off-by: crackerjacques --- + drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 15 ++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c -index 843c7ef..33dce5a 100644 +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -1475,8 +1475,19 @@ static void vop2_crtc_atomic_set_gamma_seamless(struct vop2 *vop2, @@ -43,3 +48,6 @@ index 843c7ef..33dce5a 100644 vop2_vp_dsp_lut_enable(vp); vop2_crtc_write_gamma_lut(vop2, crtc); vop2_vp_dsp_lut_update_enable(vp); +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/rk3576-0011-drm-rockchip-vop2-vp2-primary-plane.patch b/patch/kernel/archive/rockchip64-7.1/rk3576-0011-drm-rockchip-vop2-vp2-primary-plane.patch index 79e5b01f775f..361952650d32 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3576-0011-drm-rockchip-vop2-vp2-primary-plane.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3576-0011-drm-rockchip-vop2-vp2-primary-plane.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] drm/rockchip: vop2: give RK3576 VP2 a primary plane +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: drm/rockchip: vop2: give RK3576 VP2 a primary plane The RK3576 VOP2 has three video ports: VP0 and VP1 each have a Cluster window as their primary plane, but VP2 (the one connected to @@ -30,9 +32,10 @@ Signed-off-by: crackerjacques 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c -@@ -895,7 +895,7 @@ +@@ -895,7 +895,7 @@ static const struct vop2_win_data rk3576_vop_win_data[] = { .format_modifiers = format_modifiers, .layer_sel_id = { 2, 0xf, 0, 0xf }, .supported_rotations = DRM_MODE_REFLECT_Y, @@ -41,3 +44,6 @@ diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rock .axi_bus_id = 0, .axi_yrgb_r_id = 0x10, .axi_uv_r_id = 0x11, +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/rk3576-0012-phy-rockchip-usbdp-replay-hpd-on-dp-phy-init.patch b/patch/kernel/archive/rockchip64-7.1/rk3576-0012-phy-rockchip-usbdp-replay-hpd-on-dp-phy-init.patch index 90b93aee9860..5d5c582adace 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3576-0012-phy-rockchip-usbdp-replay-hpd-on-dp-phy-init.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3576-0012-phy-rockchip-usbdp-replay-hpd-on-dp-phy-init.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] phy: rockchip: usbdp: replay HPD state on DP PHY init +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: phy: rockchip: usbdp: replay HPD state on DP PHY init When a USB-C DP Alt Mode display is already connected before the DP PHY is initialized (TCPM negotiates the alt mode at boot, before the @@ -15,8 +17,11 @@ rk_udphy_dp_phy_init(). Based on ROCKNIX RK3576 device patch 0018. Signed-off-by: crackerjacques --- + drivers/phy/rockchip/phy-rockchip-usbdp.c | 4 ++++ + 1 file changed, 4 insertions(+) + diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockchip/phy-rockchip-usbdp.c -index fba3551..053d3b2 100644 +index 111111111111..222222222222 100644 --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c @@ -1048,6 +1048,10 @@ static int rk_udphy_dp_phy_init(struct phy *phy) @@ -30,3 +35,6 @@ index fba3551..053d3b2 100644 mutex_unlock(&udphy->mutex); return 0; +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-7.1/rk3576-0013-mmc-sdhci-dwcmshc-rk3576-dll-tap-calibration.patch b/patch/kernel/archive/rockchip64-7.1/rk3576-0013-mmc-sdhci-dwcmshc-rk3576-dll-tap-calibration.patch index 8eac90bd05d4..ab75c23d26ab 100644 --- a/patch/kernel/archive/rockchip64-7.1/rk3576-0013-mmc-sdhci-dwcmshc-rk3576-dll-tap-calibration.patch +++ b/patch/kernel/archive/rockchip64-7.1/rk3576-0013-mmc-sdhci-dwcmshc-rk3576-dll-tap-calibration.patch @@ -1,5 +1,7 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: crackerjacques -Subject: [PATCH] mmc: sdhci-of-dwcmshc: rk3576: calibrate the HS400 DLL taps +Date: Wed, 29 Jul 2026 19:19:21 +0200 +Subject: mmc: sdhci-of-dwcmshc: rk3576: calibrate the HS400 DLL taps On dwcmshc revision 1 (rk3576) the HS400 path programs fixed DLL taps (TX and CMDOUT at 90 degrees, STRBIN at the generic default) and never @@ -28,6 +30,11 @@ Port the vendor calibration for revision 1 only, leaving revision 0 Signed-off-by: crackerjacques --- + drivers/mmc/host/sdhci-of-dwcmshc.c | 44 ++++++++-- + 1 file changed, 38 insertions(+), 6 deletions(-) + +diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c +index 111111111111..222222222222 100644 --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -117,6 +117,13 @@ @@ -41,29 +48,29 @@ Signed-off-by: crackerjacques +#define DLL_TXCLK_TAPNUM_RK3576 0x7 +#define DLL_CMDOUT_TAPNUM_RK3576 0x7 +#define DLL_STRBIN_TAPNUM_RK3576 0x5 - + #define DLL_LOCK_WO_TMOUT(x) \ ((((x) & DWCMSHC_EMMC_DLL_LOCKED) == DWCMSHC_EMMC_DLL_LOCKED) && \ -@@ -756,7 +763,7 @@ +@@ -756,7 +763,7 @@ static void dwcmshc_rk3568_set_clock(struct sdhci_host *host, unsigned int clock struct rk35xx_priv *priv = dwc_priv->priv; const struct rockchip_pltfm_data *rockchip_pdata = to_pltfm_data(dwc_priv, rockchip); u8 txclk_tapnum = DLL_TXCLK_TAPNUM_DEFAULT; - u32 extra, reg; + u32 extra, reg, dll_lock_value; int err; - + host->mmc->actual_clock = 0; -@@ -842,23 +849,40 @@ +@@ -842,23 +849,40 @@ static void dwcmshc_rk3568_set_clock(struct sdhci_host *host, unsigned int clock goto enable_clk; } - + + dll_lock_value = ((sdhci_readl(host, DWCMSHC_EMMC_DLL_STATUS0) & 0xFF) * 2) & 0xFF; + extra = 0x1 << 16 | /* tune clock stop en */ 0x3 << 17 | /* pre-change delay */ 0x3 << 19; /* post-change delay */ sdhci_writel(host, extra, dwc_priv->vendor_specific_area1 + DWCMSHC_EMMC_ATCTRL); -+ + + /* + * Revision 1 (rk3576) feeds the measured DLL lock value back as the + * tap-value select on every DLL clock line. Without that calibration @@ -76,15 +83,15 @@ Signed-off-by: crackerjacques + dll_lock_value << DLL_TAP_VALUE_OFFSET; + sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); + } - ++ if (host->mmc->ios.timing == MMC_TIMING_MMC_HS200 || host->mmc->ios.timing == MMC_TIMING_MMC_HS400) txclk_tapnum = priv->txclk_tapnum; - + if (rockchip_pdata->revision == 1 && host->mmc->ios.timing == MMC_TIMING_MMC_HS400) { - txclk_tapnum = DLL_TXCLK_TAPNUM_90_DEGREES; + txclk_tapnum = DLL_TXCLK_TAPNUM_RK3576; - + extra = DLL_CMDOUT_SRC_CLK_NEG | - DLL_CMDOUT_EN_SRC_CLK_NEG | + DLL_CMDOUT_BOTH_CLK_EDGE | @@ -97,8 +104,8 @@ Signed-off-by: crackerjacques + dll_lock_value << DLL_TAP_VALUE_OFFSET; sdhci_writel(host, extra, DECMSHC_EMMC_DLL_CMDOUT); } - -@@ -866,11 +892,19 @@ + +@@ -866,11 +890,19 @@ static void dwcmshc_rk3568_set_clock(struct sdhci_host *host, unsigned int clock DLL_TXCLK_TAPNUM_FROM_SW | DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL | txclk_tapnum; @@ -106,7 +113,7 @@ Signed-off-by: crackerjacques + extra |= DLL_TAP_VALUE_SEL | + dll_lock_value << DLL_TAP_VALUE_OFFSET; sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_TXCLK); - + extra = DWCMSHC_EMMC_DLL_DLYENA | - DLL_STRBIN_TAPNUM_DEFAULT | DLL_STRBIN_TAPNUM_FROM_SW; @@ -117,5 +124,8 @@ Signed-off-by: crackerjacques + else + extra |= DLL_STRBIN_TAPNUM_DEFAULT; sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN); - + enable_clk: +-- +Armbian + From 6444620b7027ede19360826c5bdaf9d5afeb7069 Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 06:07:01 +0200 Subject: [PATCH 3/7] rockchip64-6.18: rewrite patches against 6.18.42 --- ...oard-rockpi-4a-cap-spi-nor-frequency.patch | 7 +- ...rd-broken-park-link-quirk-v6.16-plus.patch | 29 ++++--- .../general-disable-mtu-validation.patch | 2 +- .../general-driver-tm16xx-led-driver.patch | 10 +-- ...al-drm-panel-add-yixian-yx0345-panel.patch | 2 +- ...l-dw-hdmi-qp-error2info-logging-k618.patch | 31 +++----- ...i2s-mclk-output-gate-5-ignore-unused.patch | 3 +- .../media-0001-Add-rkvdec-Support-v5.patch | 6 +- .../orangepi5-ultra-hdmirx-dts-fix.patch | 20 ++--- ...-tcpm-unregister-existing-source-cap.patch | 4 +- ...chip-naneng-Add-fallback-for-old-DTs.patch | 16 ++-- ...-the-power-state-of-usb3_generic_phy.patch | 6 +- ...ix-PD-devices-capabilities-registrat.patch | 6 +- ...nregister-altmodes-before-registerin.patch | 2 +- ...0010-fix-clk-divisions-INLINE-REWORK.patch | 4 +- ...-can-rockchip-add-rk3588-can-support.patch | 79 +++++-------------- .../rk35xx-montjoie-crypto-v2-rk35xx.patch | 2 +- .../temporary-workaround-dma-reset.patch | 2 +- 18 files changed, 86 insertions(+), 145 deletions(-) diff --git a/patch/kernel/archive/rockchip64-6.18/board-rockpi-4a-cap-spi-nor-frequency.patch b/patch/kernel/archive/rockchip64-6.18/board-rockpi-4a-cap-spi-nor-frequency.patch index 127edfedad45..8d38a6df600b 100644 --- a/patch/kernel/archive/rockchip64-6.18/board-rockpi-4a-cap-spi-nor-frequency.patch +++ b/patch/kernel/archive/rockchip64-6.18/board-rockpi-4a-cap-spi-nor-frequency.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Igor Velkov -Date: Tue, 22 Jul 2026 20:10:00 +0000 +Date: Wed, 22 Jul 2026 20:10:00 +0000 Subject: arm64: dts: rockchip: cap SPI NOR frequency on ROCK Pi 4A Commit fa16d7a820e4 ("arm64: dts: rockchip: Increase maximum frequency of @@ -32,7 +32,7 @@ diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a.dts b/arch/arm64/boo index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a.dts -@@ -19,6 +19,6 @@ +@@ -19,6 +19,6 @@ &spi1 { flash@0 { compatible = "jedec,spi-nor"; reg = <0>; @@ -40,3 +40,6 @@ index 111111111111..222222222222 100644 + spi-max-frequency = <10000000>; }; }; +-- +Armbian + diff --git a/patch/kernel/archive/rockchip64-6.18/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch b/patch/kernel/archive/rockchip64-6.18/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch index 3ddc29b865d8..5566c924712a 100644 --- a/patch/kernel/archive/rockchip64-6.18/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch +++ b/patch/kernel/archive/rockchip64-6.18/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch @@ -1,25 +1,24 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paolo Sabatino Date: Thu, 16 Jun 2022 19:19:49 +0000 -Subject: [PATCH] fix spreadtrum (sprd) bluetooth broken park link status +Subject: fix spreadtrum (sprd) bluetooth broken park link status Spreadtrum/uwe5622 Bluetooth firmware reports Park link mode support but rejects HCI commands to enable it. This patch adds HCI_QUIRK_BROKEN_PARK_LINK_STATUS. - --- drivers/bluetooth/hci_ldisc.c | 6 ++++++ include/net/bluetooth/hci.h | 6 ++++++ - net/bluetooth/hci_sync.c | 2 +- + net/bluetooth/hci_sync.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c -index 10e936b87cc8..c895fffb6080 100644 +index 111111111111..222222222222 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c -@@ -694,6 +694,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) +@@ -700,6 +700,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) hdev->setup = hci_uart_setup; SET_HCIDEV_DEV(hdev, hu->tty->dev); - + + // Set the broken Park link status quirk, specific for spreadtrum (sprd) + // bluetooth devices + if (hdev->manufacturer == 0xffff && hu->tty->driver && @@ -28,15 +27,15 @@ index 10e936b87cc8..c895fffb6080 100644 + if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags)) hci_set_quirk(hdev, HCI_QUIRK_RAW_DEVICE); - + diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h -index cb4c02d00759..f7aab69d03da 100644 +index 111111111111..222222222222 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -378,6 +378,12 @@ enum { */ HCI_QUIRK_BROKEN_READ_PAGE_SCAN_TYPE, - + + /* + * Device declares that support Park link status, but it really + * does not support it and fails to initialize @@ -45,20 +44,20 @@ index cb4c02d00759..f7aab69d03da 100644 + __HCI_NUM_QUIRKS, }; - + diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c -index 10b8c24a3fbe..69641902f78b 100644 +index 111111111111..222222222222 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4216,7 +4216,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) +@@ -4261,7 +4261,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) link_policy |= HCI_LP_HOLD; if (lmp_sniff_capable(hdev)) link_policy |= HCI_LP_SNIFF; - if (lmp_park_capable(hdev)) + if (lmp_park_capable(hdev) && !hci_test_quirk(hdev, HCI_QUIRK_BROKEN_PARK_LINK_STATUS)) link_policy |= HCI_LP_PARK; - + cp.policy = cpu_to_le16(link_policy); +-- +Armbian --- -2.30.2 diff --git a/patch/kernel/archive/rockchip64-6.18/general-disable-mtu-validation.patch b/patch/kernel/archive/rockchip64-6.18/general-disable-mtu-validation.patch index e093cdb219d8..63e473557f58 100644 --- a/patch/kernel/archive/rockchip64-6.18/general-disable-mtu-validation.patch +++ b/patch/kernel/archive/rockchip64-6.18/general-disable-mtu-validation.patch @@ -18,7 +18,7 @@ diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/eth index 111111111111..222222222222 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -5851,27 +5851,15 @@ static void stmmac_set_rx_mode(struct net_device *dev) +@@ -5833,27 +5833,15 @@ static void stmmac_set_rx_mode(struct net_device *dev) static int stmmac_change_mtu(struct net_device *dev, int new_mtu) { struct stmmac_priv *priv = netdev_priv(dev); diff --git a/patch/kernel/archive/rockchip64-6.18/general-driver-tm16xx-led-driver.patch b/patch/kernel/archive/rockchip64-6.18/general-driver-tm16xx-led-driver.patch index c79318594154..0be3546b59d7 100644 --- a/patch/kernel/archive/rockchip64-6.18/general-driver-tm16xx-led-driver.patch +++ b/patch/kernel/archive/rockchip64-6.18/general-driver-tm16xx-led-driver.patch @@ -718,7 +718,7 @@ diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentat index 111111111111..222222222222 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml -@@ -562,6 +562,8 @@ patternProperties: +@@ -564,6 +564,8 @@ patternProperties: description: Fastrax Oy "^fcs,.*": description: Fairchild Semiconductor @@ -727,7 +727,7 @@ index 111111111111..222222222222 100644 "^feixin,.*": description: Shenzhen Feixin Photoelectic Co., Ltd "^feiyang,.*": -@@ -1279,6 +1281,8 @@ patternProperties: +@@ -1281,6 +1283,8 @@ patternProperties: description: Prime View International (PVI) "^primux,.*": description: Primux Trading, S.L. @@ -736,7 +736,7 @@ index 111111111111..222222222222 100644 "^probox2,.*": description: PROBOX2 (by W2COMP Co., Ltd.) "^pri,.*": -@@ -1632,6 +1636,8 @@ patternProperties: +@@ -1634,6 +1638,8 @@ patternProperties: description: Texas Instruments "^tianma,.*": description: Tianma Micro-electronics Co., Ltd. @@ -745,7 +745,7 @@ index 111111111111..222222222222 100644 "^tlm,.*": description: Trusted Logic Mobility "^tmt,.*": -@@ -1791,6 +1797,8 @@ patternProperties: +@@ -1793,6 +1799,8 @@ patternProperties: description: Wingtech Technology Co., Ltd. "^winlink,.*": description: WinLink Co., Ltd @@ -754,7 +754,7 @@ index 111111111111..222222222222 100644 "^winsen,.*": description: Winsen Corp. "^winstar,.*": -@@ -1807,6 +1815,8 @@ patternProperties: +@@ -1809,6 +1817,8 @@ patternProperties: description: Wobo "^wolfvision,.*": description: WolfVision GmbH diff --git a/patch/kernel/archive/rockchip64-6.18/general-drm-panel-add-yixian-yx0345-panel.patch b/patch/kernel/archive/rockchip64-6.18/general-drm-panel-add-yixian-yx0345-panel.patch index b53f507bb16d..5cd557752eb0 100644 --- a/patch/kernel/archive/rockchip64-6.18/general-drm-panel-add-yixian-yx0345-panel.patch +++ b/patch/kernel/archive/rockchip64-6.18/general-drm-panel-add-yixian-yx0345-panel.patch @@ -13,7 +13,7 @@ diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -1147,6 +1147,15 @@ config DRM_PANEL_WIDECHIPS_WS2401 +@@ -1155,6 +1155,15 @@ config DRM_PANEL_WIDECHIPS_WS2401 480x800 display controller used in panels such as Samsung LMS380KF01. This display is used in the Samsung Galaxy Ace 2 GT-I8160 (Codina). diff --git a/patch/kernel/archive/rockchip64-6.18/general-dw-hdmi-qp-error2info-logging-k618.patch b/patch/kernel/archive/rockchip64-6.18/general-dw-hdmi-qp-error2info-logging-k618.patch index 7ddd406d118b..03ffeadc20c7 100644 --- a/patch/kernel/archive/rockchip64-6.18/general-dw-hdmi-qp-error2info-logging-k618.patch +++ b/patch/kernel/archive/rockchip64-6.18/general-dw-hdmi-qp-error2info-logging-k618.patch @@ -1,12 +1,7 @@ -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 1/2] drm/bridge: dw-hdmi-qp: Return 0 in audio prepare - when disconnected +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Detlev Casanova Date: Tue, 22 Jul 2025 15:54:35 -0400 -Message-Id: <20250722195437.1347865-2-detlev.casanova@collabora.com> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit +Subject: drm/bridge: dw-hdmi-qp: Return 0 in audio prepare when disconnected To configure audio registers, the clock of the video port in use must be enabled. @@ -41,10 +36,10 @@ Signed-off-by: Detlev Casanova 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c -index 5e5f8c2f95be1..9b9d43c02e3a5 100644 +index 111111111111..222222222222 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c -@@ -460,8 +460,16 @@ static int dw_hdmi_qp_audio_prepare(stru +@@ -460,8 +460,16 @@ static int dw_hdmi_qp_audio_prepare(struct drm_bridge *bridge, struct dw_hdmi_qp *hdmi = dw_hdmi_qp_from_bridge(bridge); bool ref2stream = false; @@ -63,17 +58,12 @@ index 5e5f8c2f95be1..9b9d43c02e3a5 100644 if (fmt->bit_clk_provider | fmt->frame_clk_provider) { dev_err(hdmi->dev, "unsupported clock settings\n"); -- -2.50.1 +Armbian -From git@z Thu Jan 1 00:00:00 1970 -Subject: [PATCH v2 2/2] ASoC: hdac_hdmi: Use dev_info on invalid ELD - version +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Detlev Casanova Date: Tue, 22 Jul 2025 15:54:36 -0400 -Message-Id: <20250722195437.1347865-3-detlev.casanova@collabora.com> -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 7bit +Subject: ASoC: hdac_hdmi: Use dev_info on invalid ELD version When disconnected, the ELD data cannot be read by the display driver, so it just sets the data to 0. @@ -94,10 +84,10 @@ Signed-off-by: Detlev Casanova 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c -index 1139a2754ca33..4cc3b7a1062bd 100644 +index 111111111111..222222222222 100644 --- a/sound/soc/codecs/hdac_hdmi.c +++ b/sound/soc/codecs/hdac_hdmi.c -@@ -1230,7 +1230,7 @@ static int hdac_hdmi_parse_eld(struct hd +@@ -1232,7 +1232,7 @@ static int hdac_hdmi_parse_eld(struct hdac_device *hdev, >> DRM_ELD_VER_SHIFT; if (ver != ELD_VER_CEA_861D && ver != ELD_VER_PARTIAL) { @@ -106,7 +96,6 @@ index 1139a2754ca33..4cc3b7a1062bd 100644 "HDMI: Unknown ELD version %d\n", ver); return -EINVAL; } - -- -2.50.1 +Armbian diff --git a/patch/kernel/archive/rockchip64-6.18/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch b/patch/kernel/archive/rockchip64-6.18/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch index 1b4f91206392..87609b136c29 100644 --- a/patch/kernel/archive/rockchip64-6.18/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch +++ b/patch/kernel/archive/rockchip64-6.18/general-rk3588-i2s-mclk-output-gate-5-ignore-unused.patch @@ -21,7 +21,7 @@ Signed-off-by: SuperKali 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/clk/rockchip/clk-rk3588.c b/drivers/clk/rockchip/clk-rk3588.c -index 2cc85fb..169ed47 100644 +index 111111111111..222222222222 100644 --- a/drivers/clk/rockchip/clk-rk3588.c +++ b/drivers/clk/rockchip/clk-rk3588.c @@ -896,7 +896,7 @@ static struct rockchip_clk_branch rk3588_early_clk_branches[] __initdata = { @@ -62,3 +62,4 @@ index 2cc85fb..169ed47 100644 GATE(CLK_DDR_FAIL_SAFE, "clk_ddr_fail_safe", "clk_pmu0", CLK_IGNORE_UNUSED, -- Armbian + diff --git a/patch/kernel/archive/rockchip64-6.18/media-0001-Add-rkvdec-Support-v5.patch b/patch/kernel/archive/rockchip64-6.18/media-0001-Add-rkvdec-Support-v5.patch index 390c2e0bb071..fb1c0562fa57 100644 --- a/patch/kernel/archive/rockchip64-6.18/media-0001-Add-rkvdec-Support-v5.patch +++ b/patch/kernel/archive/rockchip64-6.18/media-0001-Add-rkvdec-Support-v5.patch @@ -3630,8 +3630,8 @@ index 111111111111..222222222222 100644 case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX: pr_cont("HEVC_SCALING_MATRIX"); break; -@@ -1173,6 +1179,12 @@ static int std_validate_compound(const struct v4l2_ctrl *ctrl, u32 idx, - case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS: +@@ -1186,6 +1192,12 @@ static int std_validate_compound(const struct v4l2_ctrl *ctrl, u32 idx, + return -EINVAL; break; + case V4L2_CTRL_TYPE_HEVC_EXT_SPS_ST_RPS: @@ -3643,7 +3643,7 @@ index 111111111111..222222222222 100644 case V4L2_CTRL_TYPE_HDR10_CLL_INFO: break; -@@ -1925,6 +1937,12 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, +@@ -1938,6 +1950,12 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS: elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params); break; diff --git a/patch/kernel/archive/rockchip64-6.18/orangepi5-ultra-hdmirx-dts-fix.patch b/patch/kernel/archive/rockchip64-6.18/orangepi5-ultra-hdmirx-dts-fix.patch index d44d4753fe37..43bfb13b164d 100644 --- a/patch/kernel/archive/rockchip64-6.18/orangepi5-ultra-hdmirx-dts-fix.patch +++ b/patch/kernel/archive/rockchip64-6.18/orangepi5-ultra-hdmirx-dts-fix.patch @@ -1,8 +1,8 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: pdapandapda Date: Mon, 13 Jul 2026 21:47:55 +0000 -Subject: arm64: dts: rk3588-orangepi-5-ultra: Enable HDMI RX with HPD detection - arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts +Subject: arm64: dts: rk3588-orangepi-5-ultra: Enable HDMI RX with HPD + detection arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts Signed-off-by: pdapandapda --- @@ -10,12 +10,10 @@ Signed-off-by: pdapandapda 1 file changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts -index f8c6c080e418..9b5ca029134b 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dts -@@ -49,10 +49,17 @@ &hdmi1_sound { - - &hdptxphy1 { +@@ -51,6 +51,13 @@ &hdptxphy1 { status = "okay"; }; @@ -29,11 +27,7 @@ index f8c6c080e418..9b5ca029134b 100644 &i2s6_8ch { status = "okay"; }; - - &led_blue_pwm { -@@ -62,10 +69,16 @@ &led_blue_pwm { - &led_green_pwm { - pwms = <&pwm5 0 25000 PWM_POLARITY_INVERTED>; +@@ -64,6 +71,12 @@ &led_green_pwm { }; &pinctrl { @@ -46,8 +40,6 @@ index f8c6c080e418..9b5ca029134b 100644 usb { usb_otg_pwren: usb-otg-pwren { rockchip,pins = <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; - }; - }; -- -Created with Armbian build tools https://github.com/armbian/build +Armbian diff --git a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch index 4e5108877901..f0de79263e8c 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch @@ -13,7 +13,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -3146,7 +3146,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3151,7 +3151,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port) { struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; @@ -22,7 +22,7 @@ index 111111111111..222222222222 100644 if (!port->partner_pd) port->partner_pd = usb_power_delivery_register(NULL, &desc); -@@ -3156,11 +3156,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3161,11 +3161,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port) memcpy(caps.pdo, port->source_caps, sizeof(u32) * port->nr_source_caps); caps.role = TYPEC_SOURCE; diff --git a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-phy-rockchip-naneng-Add-fallback-for-old-DTs.patch b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-phy-rockchip-naneng-Add-fallback-for-old-DTs.patch index cd40990599a3..95e27b643cca 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-phy-rockchip-naneng-Add-fallback-for-old-DTs.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-phy-rockchip-naneng-Add-fallback-for-old-DTs.patch @@ -86,7 +86,7 @@ index 111111111111..222222222222 100644 dwc3_core_soft_reset(dwc); dwc3_event_buffers_setup(dwc); -@@ -1848,6 +1881,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) +@@ -1868,6 +1901,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) dwc->dis_split_quirk = device_property_read_bool(dev, "snps,dis-split-quirk"); @@ -95,7 +95,7 @@ index 111111111111..222222222222 100644 dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = tx_de_emphasis; -@@ -2461,6 +2496,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) +@@ -2481,6 +2516,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: @@ -103,7 +103,7 @@ index 111111111111..222222222222 100644 if (pm_runtime_suspended(dwc->dev)) break; ret = dwc3_gadget_suspend(dwc); -@@ -2525,11 +2561,12 @@ static int dwc3_resume_common(struct dwc3 *dwc, pm_message_t msg) +@@ -2545,11 +2581,12 @@ static int dwc3_resume_common(struct dwc3 *dwc, pm_message_t msg) switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: @@ -117,7 +117,7 @@ index 111111111111..222222222222 100644 dwc3_gadget_resume(dwc); break; case DWC3_GCTL_PRTCAP_HOST: -@@ -2593,6 +2630,7 @@ static int dwc3_runtime_checks(struct dwc3 *dwc) +@@ -2613,6 +2650,7 @@ static int dwc3_runtime_checks(struct dwc3 *dwc) { switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: @@ -125,7 +125,7 @@ index 111111111111..222222222222 100644 if (dwc->connected) return -EBUSY; break; -@@ -2631,6 +2669,7 @@ int dwc3_runtime_resume(struct dwc3 *dwc) +@@ -2651,6 +2689,7 @@ int dwc3_runtime_resume(struct dwc3 *dwc) switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: @@ -133,7 +133,7 @@ index 111111111111..222222222222 100644 if (dwc->pending_events) { pm_runtime_put(dev); dwc->pending_events = false; -@@ -2655,6 +2694,7 @@ int dwc3_runtime_idle(struct dwc3 *dwc) +@@ -2675,6 +2714,7 @@ int dwc3_runtime_idle(struct dwc3 *dwc) switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: @@ -158,7 +158,7 @@ index 111111111111..222222222222 100644 #define DWC3_GCTL_CORESOFTRESET BIT(11) #define DWC3_GCTL_SOFITPSYNC BIT(10) -@@ -1164,6 +1170,10 @@ struct dwc3_glue_ops { +@@ -1167,6 +1173,10 @@ struct dwc3_glue_ops { * @sys_wakeup: set if the device may do system wakeup. * @wakeup_configured: set if the device is configured for remote wakeup. * @suspended: set to track suspend event due to U3/L2. @@ -169,7 +169,7 @@ index 111111111111..222222222222 100644 * @susphy_state: state of DWC3_GUSB2PHYCFG_SUSPHY + DWC3_GUSB3PIPECTL_SUSPHY * before PM suspend. * @imod_interval: set the interrupt moderation interval in 250ns -@@ -1409,6 +1419,8 @@ struct dwc3 { +@@ -1413,6 +1423,8 @@ struct dwc3 { unsigned suspended:1; unsigned susphy_state:1; diff --git a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch index d931e9fe5fd5..65fe84b53f98 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch @@ -18,7 +18,7 @@ diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 111111111111..222222222222 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -933,6 +933,7 @@ static int dwc3_phy_power_on(struct dwc3 *dwc) +@@ -951,6 +951,7 @@ static int dwc3_phy_power_on(struct dwc3 *dwc) goto err_power_off_usb3_phy; } @@ -26,7 +26,7 @@ index 111111111111..222222222222 100644 return 0; err_power_off_usb3_phy: -@@ -953,8 +954,10 @@ static void dwc3_phy_power_off(struct dwc3 *dwc) +@@ -971,8 +972,10 @@ static void dwc3_phy_power_off(struct dwc3 *dwc) { int i; @@ -43,7 +43,7 @@ diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 111111111111..222222222222 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h -@@ -1238,6 +1238,8 @@ struct dwc3 { +@@ -1241,6 +1241,8 @@ struct dwc3 { u8 num_usb2_ports; u8 num_usb3_ports; diff --git a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch index ef8a4df23846..85f3ac702cc3 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch @@ -18,7 +18,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -3147,15 +3147,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3152,15 +3152,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port) struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; struct usb_power_delivery_capabilities *cap; @@ -45,7 +45,7 @@ index 111111111111..222222222222 100644 cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) return PTR_ERR(cap); -@@ -3170,15 +3177,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port) +@@ -3175,15 +3182,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port) struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; struct usb_power_delivery_capabilities *cap; @@ -72,7 +72,7 @@ index 111111111111..222222222222 100644 cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) return PTR_ERR(cap); -@@ -7245,10 +7259,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port) +@@ -7250,10 +7264,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port) port->pds[i] = usb_power_delivery_register(port->dev, &desc); if (IS_ERR(port->pds[i])) { ret = PTR_ERR(port->pds[i]); diff --git a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch index 7e6c06ad85d3..87053acb1820 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3399-usbc-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch @@ -37,7 +37,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -1870,6 +1870,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port) +@@ -1875,6 +1875,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port) return; for (i = 0; i < modep->altmodes; i++) { diff --git a/patch/kernel/archive/rockchip64-6.18/rk3588-0010-fix-clk-divisions-INLINE-REWORK.patch b/patch/kernel/archive/rockchip64-6.18/rk3588-0010-fix-clk-divisions-INLINE-REWORK.patch index 0c385afa017a..56b29d2d6f28 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3588-0010-fix-clk-divisions-INLINE-REWORK.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3588-0010-fix-clk-divisions-INLINE-REWORK.patch @@ -74,7 +74,7 @@ index 111111111111..222222222222 100644 down = parent_rate / rate; if (flags & CLK_DIVIDER_POWER_OF_TWO) { -@@ -414,7 +425,7 @@ int divider_get_val(unsigned long rate, unsigned long parent_rate, +@@ -458,7 +469,7 @@ int divider_get_val(unsigned long rate, unsigned long parent_rate, { unsigned int div, value; @@ -111,7 +111,7 @@ index 111111111111..222222222222 100644 #include static u8 clk_composite_get_parent(struct clk_hw *hw) -@@ -106,10 +107,7 @@ static int clk_composite_determine_rate(struct clk_hw *hw, +@@ -119,10 +120,7 @@ static int clk_composite_determine_rate(struct clk_hw *hw, if (ret) continue; diff --git a/patch/kernel/archive/rockchip64-6.18/rk3588-1230-can-rockchip-add-rk3588-can-support.patch b/patch/kernel/archive/rockchip64-6.18/rk3588-1230-can-rockchip-add-rk3588-can-support.patch index f69712f52ac0..d102592ad817 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk3588-1230-can-rockchip-add-rk3588-can-support.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk3588-1230-can-rockchip-add-rk3588-can-support.patch @@ -45,12 +45,10 @@ Signed-off-by: luch00 <1579567540@qq.com> 5 files changed, 76 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml b/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml -index a077c0330013..81e2b6dfeb02 100644 +index 111111111111..222222222222 100644 --- a/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml +++ b/Documentation/devicetree/bindings/net/can/rockchip,rk3568v2-canfd.yaml -@@ -14,11 +14,13 @@ allOf: - - $ref: can-controller.yaml# - +@@ -16,7 +16,9 @@ allOf: properties: compatible: oneOf: @@ -61,15 +59,11 @@ index a077c0330013..81e2b6dfeb02 100644 - items: - const: rockchip,rk3568v3-canfd - const: rockchip,rk3568v2-canfd - - reg: diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi -index c47bb3c68c6c..4c36e7602588 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi -@@ -2658,10 +2658,49 @@ dmac1: dma-controller@fea30000 { - clocks = <&cru ACLK_DMAC1>; - clock-names = "apb_pclk"; +@@ -2460,6 +2460,45 @@ dmac1: dma-controller@fea30000 { #dma-cells = <1>; }; @@ -115,15 +109,11 @@ index c47bb3c68c6c..4c36e7602588 100644 i2c1: i2c@fea90000 { compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c"; reg = <0x0 0xfea90000 0x0 0x1000>; - clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>; - clock-names = "i2c", "pclk"; diff --git a/drivers/net/can/rockchip/rockchip_canfd-core.c b/drivers/net/can/rockchip/rockchip_canfd-core.c -index 29de0c01e4ed..37c1c22c40c9 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/can/rockchip/rockchip_canfd-core.c +++ b/drivers/net/can/rockchip/rockchip_canfd-core.c -@@ -48,17 +48,25 @@ static const struct rkcanfd_devtype_data rkcanfd_devtype_data_rk3568v3 = { - RKCANFD_QUIRK_RK3568_ERRATUM_8 | RKCANFD_QUIRK_RK3568_ERRATUM_10 | - RKCANFD_QUIRK_RK3568_ERRATUM_11 | RKCANFD_QUIRK_RK3568_ERRATUM_12 | +@@ -50,6 +50,12 @@ static const struct rkcanfd_devtype_data rkcanfd_devtype_data_rk3568v3 = { RKCANFD_QUIRK_CANFD_BROKEN, }; @@ -136,7 +126,7 @@ index 29de0c01e4ed..37c1c22c40c9 100644 static const char *__rkcanfd_get_model_str(enum rkcanfd_model model) { switch (model) { - case RKCANFD_MODEL_RK3568V2: +@@ -57,6 +63,8 @@ static const char *__rkcanfd_get_model_str(enum rkcanfd_model model) return "rk3568v2"; case RKCANFD_MODEL_RK3568V3: return "rk3568v3"; @@ -145,11 +135,7 @@ index 29de0c01e4ed..37c1c22c40c9 100644 } return ""; - } - -@@ -146,10 +154,16 @@ static int rkcanfd_set_bittiming(struct rkcanfd_priv *priv) - FIELD_PREP(RKCANFD_REG_FD_DATA_BITTIMING_TSEG1, - dbt->prop_seg + dbt->phase_seg1 - 1); +@@ -148,6 +156,12 @@ static int rkcanfd_set_bittiming(struct rkcanfd_priv *priv) rkcanfd_write(priv, RKCANFD_REG_FD_DATA_BITTIMING, reg_dbt); @@ -162,11 +148,7 @@ index 29de0c01e4ed..37c1c22c40c9 100644 tdco = (priv->can.clock.freq / dbt->bitrate) * 2 / 3; tdco = min(tdco, FIELD_MAX(RKCANFD_REG_TRANSMIT_DELAY_COMPENSATION_TDC_OFFSET)); - reg_tdc = FIELD_PREP(RKCANFD_REG_TRANSMIT_DELAY_COMPENSATION_TDC_OFFSET, tdco) | - RKCANFD_REG_TRANSMIT_DELAY_COMPENSATION_TDC_ENABLE; -@@ -844,10 +858,13 @@ static const struct of_device_id rkcanfd_of_match[] = { - .compatible = "rockchip,rk3568v2-canfd", - .data = &rkcanfd_devtype_data_rk3568v2, +@@ -847,6 +861,9 @@ static const struct of_device_id rkcanfd_of_match[] = { }, { .compatible = "rockchip,rk3568v3-canfd", .data = &rkcanfd_devtype_data_rk3568v3, @@ -176,15 +158,11 @@ index 29de0c01e4ed..37c1c22c40c9 100644 }, { /* sentinel */ }, - }; - MODULE_DEVICE_TABLE(of, rkcanfd_of_match); diff --git a/drivers/net/can/rockchip/rockchip_canfd-rx.c b/drivers/net/can/rockchip/rockchip_canfd-rx.c -index 475c0409e215..24e87daa1df0 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/can/rockchip/rockchip_canfd-rx.c +++ b/drivers/net/can/rockchip/rockchip_canfd-rx.c -@@ -279,11 +279,14 @@ static int rkcanfd_handle_rx_int_one(struct rkcanfd_priv *priv) - static inline unsigned int - rkcanfd_rx_fifo_get_len(const struct rkcanfd_priv *priv) +@@ -281,7 +281,10 @@ rkcanfd_rx_fifo_get_len(const struct rkcanfd_priv *priv) { const u32 reg = rkcanfd_read(priv, RKCANFD_REG_RX_FIFO_CTRL); @@ -196,15 +174,11 @@ index 475c0409e215..24e87daa1df0 100644 } int rkcanfd_handle_rx_int(struct rkcanfd_priv *priv) - { - unsigned int len; diff --git a/drivers/net/can/rockchip/rockchip_canfd.h b/drivers/net/can/rockchip/rockchip_canfd.h -index 93131c7d7f54..95bea9bfd8a2 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/can/rockchip/rockchip_canfd.h +++ b/drivers/net/can/rockchip/rockchip_canfd.h -@@ -212,11 +212,12 @@ - #define RKCANFD_REG_TXEVENT_FIFO_CTRL_TXE_FIFO_CNT GENMASK(8, 5) - #define RKCANFD_REG_TXEVENT_FIFO_CTRL_TXE_FIFO_WATERMARK GENMASK(4, 1) +@@ -214,7 +214,8 @@ #define RKCANFD_REG_TXEVENT_FIFO_CTRL_TXE_FIFO_ENABLE BIT(0) #define RKCANFD_REG_RX_FIFO_CTRL 0x118 @@ -214,11 +188,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 #define RKCANFD_REG_RX_FIFO_CTRL_RX_FIFO_FULL_WATERMARK GENMASK(3, 1) #define RKCANFD_REG_RX_FIFO_CTRL_RX_FIFO_ENABLE BIT(0) - #define RKCANFD_REG_AFC_CTRL 0x11c - #define RKCANFD_REG_AFC_CTRL_UAF5 BIT(4) -@@ -329,10 +330,15 @@ - * - * On the rk3568v2 and rk3568v3, this problem only occurs extremely +@@ -331,6 +332,11 @@ * rarely with the standard clock of 300 MHz, but almost immediately * at 80 MHz. * @@ -230,11 +200,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 * To workaround this problem, check for empty FIFO with * rkcanfd_fifo_header_empty() in rkcanfd_handle_rx_int_one() and exit * early. - * - * To reproduce: -@@ -342,10 +348,12 @@ - #define RKCANFD_QUIRK_RK3568_ERRATUM_5 BIT(4) - +@@ -344,6 +350,8 @@ /* Erratum 6: The CAN controller's transmission of extended frames may * intermittently change into standard frames * @@ -243,11 +209,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 * Work around this issue by activating self reception (RXSTX). If we * have pending TX CAN frames, check all RX'ed CAN frames in * rkcanfd_rxstx_filter(). - * - * If it's a frame we've send and it's OK, call the TX complete -@@ -422,20 +430,24 @@ - * DUT: - * cangen can0 -I2 -L1 -Di -p10 -c10 -g 1 -e +@@ -424,6 +432,9 @@ * cansequence -rv -i 1 * * - TX starvation after repeated Bus-Off @@ -257,10 +219,7 @@ index 93131c7d7f54..95bea9bfd8a2 100644 * To reproduce: * host: * sleep 3 && cangen can0 -I2 -Li -Di -p10 -g 0.0 - * DUT: - * cangen can0 -I2 -Li -Di -p10 -g 0.05 - */ - +@@ -434,6 +445,7 @@ enum rkcanfd_model { RKCANFD_MODEL_RK3568V2 = 0x35682, RKCANFD_MODEL_RK3568V3 = 0x35683, @@ -268,8 +227,6 @@ index 93131c7d7f54..95bea9bfd8a2 100644 }; struct rkcanfd_devtype_data { - enum rkcanfd_model model; - u32 quirks; -- -Created with Armbian build tools https://github.com/armbian/build +Armbian diff --git a/patch/kernel/archive/rockchip64-6.18/rk35xx-montjoie-crypto-v2-rk35xx.patch b/patch/kernel/archive/rockchip64-6.18/rk35xx-montjoie-crypto-v2-rk35xx.patch index b9045b256b7f..7da7c00832c5 100644 --- a/patch/kernel/archive/rockchip64-6.18/rk35xx-montjoie-crypto-v2-rk35xx.patch +++ b/patch/kernel/archive/rockchip64-6.18/rk35xx-montjoie-crypto-v2-rk35xx.patch @@ -345,7 +345,7 @@ diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 111111111111..222222222222 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig -@@ -745,6 +745,35 @@ config CRYPTO_DEV_XILINX_TRNG +@@ -744,6 +744,35 @@ config CRYPTO_DEV_XILINX_TRNG To compile this driver as a module, choose M here: the module will be called xilinx-trng. diff --git a/patch/kernel/archive/rockchip64-6.18/temporary-workaround-dma-reset.patch b/patch/kernel/archive/rockchip64-6.18/temporary-workaround-dma-reset.patch index 0b3ca3246bfb..122d5ac28e30 100644 --- a/patch/kernel/archive/rockchip64-6.18/temporary-workaround-dma-reset.patch +++ b/patch/kernel/archive/rockchip64-6.18/temporary-workaround-dma-reset.patch @@ -17,7 +17,7 @@ diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/eth index 111111111111..222222222222 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -3063,8 +3063,8 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv) +@@ -3045,8 +3045,8 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv) ret = stmmac_reset(priv, priv->ioaddr); if (ret) { From 82fb315dfaa5ab580af619c89116de44e068e95a Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 06:08:16 +0200 Subject: [PATCH 4/7] meson64-6.18: rewrite patches against 6.18.42 --- .../meson64-6.18/board-t95z-add-rc-remote-keymap.patch | 2 +- ...Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch | 2 +- ...CH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/patch/kernel/archive/meson64-6.18/board-t95z-add-rc-remote-keymap.patch b/patch/kernel/archive/meson64-6.18/board-t95z-add-rc-remote-keymap.patch index 21ddcf9d67fd..3fc9d937d686 100644 --- a/patch/kernel/archive/meson64-6.18/board-t95z-add-rc-remote-keymap.patch +++ b/patch/kernel/archive/meson64-6.18/board-t95z-add-rc-remote-keymap.patch @@ -34,7 +34,7 @@ diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentat index 111111111111..222222222222 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml -@@ -1560,6 +1560,8 @@ patternProperties: +@@ -1562,6 +1562,8 @@ patternProperties: description: Sundance DSP Inc. "^sunplus,.*": description: Sunplus Technology Co., Ltd. diff --git a/patch/kernel/archive/meson64-6.18/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch b/patch/kernel/archive/meson64-6.18/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch index 3075962326b5..bb28bf069368 100644 --- a/patch/kernel/archive/meson64-6.18/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch +++ b/patch/kernel/archive/meson64-6.18/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch @@ -73,7 +73,7 @@ index 111111111111..222222222222 100644 + pc->chip.to_irq = meson_gpio_to_irq; pc->chip.base = -1; pc->chip.ngpio = pc->data->num_pins; - pc->chip.can_sleep = true; + pc->chip.can_sleep = false; @@ -680,6 +716,11 @@ static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc) pc->fwnode = gpiochip_node_get_first(pc->dev); gpio_np = to_of_node(pc->fwnode); diff --git a/patch/kernel/archive/meson64-6.18/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch b/patch/kernel/archive/meson64-6.18/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch index 7176b878eab2..a3129eee2038 100644 --- a/patch/kernel/archive/meson64-6.18/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch +++ b/patch/kernel/archive/meson64-6.18/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch @@ -18,7 +18,7 @@ diff --git a/drivers/pci/controller/dwc/pci-meson.c b/drivers/pci/controller/dwc index 111111111111..222222222222 100644 --- a/drivers/pci/controller/dwc/pci-meson.c +++ b/drivers/pci/controller/dwc/pci-meson.c -@@ -272,22 +272,6 @@ static int meson_size_to_payload(struct meson_pcie *mp, int size) +@@ -274,22 +274,6 @@ static int meson_size_to_payload(struct meson_pcie *mp, int size) return fls(size) - 8; } @@ -41,7 +41,7 @@ index 111111111111..222222222222 100644 static void meson_set_max_rd_req_size(struct meson_pcie *mp, int size) { struct dw_pcie *pci = &mp->pci; -@@ -362,7 +346,6 @@ static int meson_pcie_host_init(struct dw_pcie_rp *pp) +@@ -364,7 +348,6 @@ static int meson_pcie_host_init(struct dw_pcie_rp *pp) pp->bridge->ops = &meson_pci_ops; From 59b7f081fc0a9f19812b3fa4289582e61f6e40cd Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 06:08:46 +0200 Subject: [PATCH 5/7] meson64-7.1: rewrite patches against 7.1.6 --- .../meson64-7.1/board-t95z-add-rc-remote-keymap.patch | 2 +- ...eneral-meson-aiu-Fix-HDMI-codec-control-selection.patch | 7 +++++-- ...-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch | 2 +- ...v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/patch/kernel/archive/meson64-7.1/board-t95z-add-rc-remote-keymap.patch b/patch/kernel/archive/meson64-7.1/board-t95z-add-rc-remote-keymap.patch index 5dc6a923980d..2eb5302d3c1a 100644 --- a/patch/kernel/archive/meson64-7.1/board-t95z-add-rc-remote-keymap.patch +++ b/patch/kernel/archive/meson64-7.1/board-t95z-add-rc-remote-keymap.patch @@ -34,7 +34,7 @@ diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentat index 111111111111..222222222222 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml -@@ -1612,6 +1612,8 @@ patternProperties: +@@ -1614,6 +1614,8 @@ patternProperties: description: Sundance DSP Inc. "^sunplus,.*": description: Sunplus Technology Co., Ltd. diff --git a/patch/kernel/archive/meson64-7.1/general-meson-aiu-Fix-HDMI-codec-control-selection.patch b/patch/kernel/archive/meson64-7.1/general-meson-aiu-Fix-HDMI-codec-control-selection.patch index fe61f1ff40cb..91550e8c3443 100644 --- a/patch/kernel/archive/meson64-7.1/general-meson-aiu-Fix-HDMI-codec-control-selection.patch +++ b/patch/kernel/archive/meson64-7.1/general-meson-aiu-Fix-HDMI-codec-control-selection.patch @@ -59,7 +59,7 @@ Signed-off-by: Martin Blumenstingl 2 files changed, 80 insertions(+), 34 deletions(-) diff --git a/sound/soc/meson/aiu-codec-ctrl.c b/sound/soc/meson/aiu-codec-ctrl.c -index 60bb4cd..33f7118 100644 +index 111111111111..222222222222 100644 --- a/sound/soc/meson/aiu-codec-ctrl.c +++ b/sound/soc/meson/aiu-codec-ctrl.c @@ -12,62 +12,114 @@ @@ -206,7 +206,7 @@ index 60bb4cd..33f7118 100644 static const struct snd_soc_dapm_widget aiu_hdmi_ctrl_widgets[] = { diff --git a/sound/soc/meson/aiu-encoder-i2s.c b/sound/soc/meson/aiu-encoder-i2s.c -index 3b40615..7eea1e7 100644 +index 111111111111..222222222222 100644 --- a/sound/soc/meson/aiu-encoder-i2s.c +++ b/sound/soc/meson/aiu-encoder-i2s.c @@ -23,7 +23,6 @@ @@ -229,3 +229,6 @@ index 3b40615..7eea1e7 100644 return 0; } +-- +Armbian + diff --git a/patch/kernel/archive/meson64-7.1/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch b/patch/kernel/archive/meson64-7.1/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch index 47a3bca9b285..75a5fc25e67f 100644 --- a/patch/kernel/archive/meson64-7.1/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch +++ b/patch/kernel/archive/meson64-7.1/jethome-0001-Fix-meson64-add-gpio-irq-patch-from-https-lkml.org-l.patch @@ -73,7 +73,7 @@ index 111111111111..222222222222 100644 + pc->chip.to_irq = meson_gpio_to_irq; pc->chip.base = -1; pc->chip.ngpio = pc->data->num_pins; - pc->chip.can_sleep = true; + pc->chip.can_sleep = false; @@ -680,6 +716,11 @@ static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc) pc->fwnode = gpiochip_node_get_first(pc->dev); gpio_np = to_of_node(pc->fwnode); diff --git a/patch/kernel/archive/meson64-7.1/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch b/patch/kernel/archive/meson64-7.1/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch index 035555cdadc5..43b8cffbfca1 100644 --- a/patch/kernel/archive/meson64-7.1/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch +++ b/patch/kernel/archive/meson64-7.1/x-PATCH-v7-2-2-PCI-dwc-Remove-redundant-MPS-configuration.patch @@ -82,7 +82,7 @@ diff --git a/drivers/pci/controller/dwc/pci-meson.c b/drivers/pci/controller/dwc index 111111111111..222222222222 100644 --- a/drivers/pci/controller/dwc/pci-meson.c +++ b/drivers/pci/controller/dwc/pci-meson.c -@@ -272,22 +272,6 @@ static int meson_size_to_payload(struct meson_pcie *mp, int size) +@@ -274,22 +274,6 @@ static int meson_size_to_payload(struct meson_pcie *mp, int size) return fls(size) - 8; } @@ -105,7 +105,7 @@ index 111111111111..222222222222 100644 static void meson_set_max_rd_req_size(struct meson_pcie *mp, int size) { struct dw_pcie *pci = &mp->pci; -@@ -362,7 +346,6 @@ static int meson_pcie_host_init(struct dw_pcie_rp *pp) +@@ -364,7 +348,6 @@ static int meson_pcie_host_init(struct dw_pcie_rp *pp) pp->bridge->ops = &meson_pci_ops; From 75aa0c0501252f4ba4ae920852c02d56768e217c Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 06:11:18 +0200 Subject: [PATCH 6/7] sunxi-6.18: rewrite patches against 6.18.42 --- ...sunxi-ng-ccu-common-atomic-lock-wait.patch | 41 +++++++++++++- .../0999-rtw88-sdio-fix-interrupt-storm.patch | 8 +-- ...50i-h616-bigtreetech-cb1-emac1-ac300.patch | 9 ++-- ...rm64-dts-sun50i-h616-bigtreetech-cb1.patch | 25 +++++---- ...-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch | 37 ++++++++++--- ...-h618-orangepi-zero3-enable-gpu-mali.patch | 2 +- ...rd-broken-park-link-quirk-v6.16-plus.patch | 29 +++++----- ...-media-sunxi-cedrus-add-H616-variant.patch | 4 +- .../drv-staging-rtl8723bs-AP-bugfix.patch | 2 +- ...composite-rename-serial-manufacturer.patch | 2 +- ...ner-a523-Add-DMA-controller-device-n.patch | 34 ++++++------ ...ner-a523-Add-GMAC200-ethernet-contro.patch | 4 +- ...ner-a523-Add-I2S2-pins-on-PI-pin-gro.patch | 2 +- ...ner-a523-Add-SPDIF-TX-pin-on-PB-and-.patch | 2 +- ...ner-a523-Add-device-node-for-SPDIF-b.patch | 2 +- ...ner-a523-Add-device-nodes-for-I2S-co.patch | 2 +- ...-support-for-A523-THS0-1-controllers.patch | 4 +- ...lwinner-a523-support-spi-controllers.patch | 6 +-- .../media-cedrus-Increase-H6-clock-rate.patch | 2 +- ...on-t-report-error-when-the-device-is.patch | 2 +- ...onfusing-error-when-no-regulator-is-.patch | 2 +- ...n-add-reset_resume-callback-for-WWAN.patch | 2 +- ...Abort-suspend-on-soft-disconnect-fai.patch | 54 +++++++++---------- ...Input-goodix-Add-config-debugfs-file.patch | 4 +- ...-option-to-power-off-the-controller-.patch | 8 +-- ...-to-keep-regulator-enable-disable-ba.patch | 2 +- ...n-goodix-Respect-IRQ-flags-from-DT-w.patch | 2 +- ...-tcpm-unregister-existing-source-cap.patch | 4 +- ...nregister-altmodes-before-registerin.patch | 2 +- ...ix-PD-devices-capabilities-registrat.patch | 6 +-- .../0005-usb-typec-tcpm-Improve-logs.patch | 6 +-- 31 files changed, 185 insertions(+), 126 deletions(-) diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch index 3a9d3c6e108f..44c1aeeb6f5f 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch @@ -1,3 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alastair D'Silva +Date: Sat, 4 Jul 2026 11:18:58 +0200 +Subject: [ARCHEOLOGY] clk: sunxi-ng: ccu_common: Replace ktime-dependent lock + wait loop with udelay (#10119) + +> X-Git-Archeology: > recovered message: > The Allwinner sunxi-ng clock control unit (CCU) driver utilizes +> X-Git-Archeology: > recovered message: > readl_relaxed_poll_timeout_atomic() inside ccu_helper_wait_for_lock() +> X-Git-Archeology: > recovered message: > to wait for PLLs to lock. This timeout loop relies internally on ktime_get() +> X-Git-Archeology: > recovered message: > and timekeeping APIs. +> X-Git-Archeology: > recovered message: > During early boot or clock transitions (such as CPUfreq DVFS scaling), +> X-Git-Archeology: > recovered message: > the system's clock sources and timekeeping may be unstable or temporarily +> X-Git-Archeology: > recovered message: > suspended. This causes ktime_get() to fail to increment or return invalid +> X-Git-Archeology: > recovered message: > readings, turning the timeout calculation into an infinite busy-wait loop +> X-Git-Archeology: > recovered message: > and triggering critical RCU stalls / kernel lockups. +> X-Git-Archeology: > recovered message: > Decouple the PLL lock wait loop from the timekeeping framework by replacing +> X-Git-Archeology: > recovered message: > the poll timeout loop with a robust, timekeeping-independent iteration loop +> X-Git-Archeology: > recovered message: > utilizing udelay(1) (up to 100,000 iterations / 100ms timeout limit). This +> X-Git-Archeology: > recovered message: > avoids timekeeping dependencies during sensitive frequency scaling operations +> X-Git-Archeology: > recovered message: > and prevents infinite CPU lockups when timer interrupts are suspended. +> X-Git-Archeology: > recovered message: > Assisted-by: Antigravity +> X-Git-Archeology: > recovered message: > Signed-off-by: Alastair D'Silva +> X-Git-Archeology: - Revision 522c9611efc1dc2a1fc318595cac46b7653567d2: https://github.com/armbian/build/commit/522c9611efc1dc2a1fc318595cac46b7653567d2 +> X-Git-Archeology: Date: Sat, 04 Jul 2026 11:18:58 +0200 +> X-Git-Archeology: From: Alastair D'Silva +> X-Git-Archeology: Subject: clk: sunxi-ng: ccu_common: Replace ktime-dependent lock wait loop with udelay (#10119) +> X-Git-Archeology: +--- + drivers/clk/sunxi-ng/ccu_common.c | 12 ++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c +index 111111111111..222222222222 100644 --- a/drivers/clk/sunxi-ng/ccu_common.c +++ b/drivers/clk/sunxi-ng/ccu_common.c @@ -10,6 +10,7 @@ @@ -8,7 +41,7 @@ #include #include "ccu_common.h" -@@ -25,7 +26,7 @@ +@@ -25,7 +26,7 @@ struct sunxi_ccu { void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock) { void __iomem *addr; @@ -17,7 +50,7 @@ if (!lock) return; -@@ -35,7 +36,14 @@ +@@ -35,7 +36,14 @@ void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock) else addr = common->base + common->reg; @@ -32,3 +65,7 @@ + pr_warn("%s: clock lock timeout\n", clk_hw_get_name(&common->hw)); } EXPORT_SYMBOL_NS_GPL(ccu_helper_wait_for_lock, "SUNXI_CCU"); + +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch index bc18f5d7f29b..fb30da05d770 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch @@ -1,7 +1,8 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alastair D'Silva Date: Tue, 30 Jun 2026 21:16:30 +1000 -Subject: [PATCH] wifi: rtw88: sdio: Fix RCU stalls / interrupt storm by clearing RX_REQUEST interrupt +Subject: wifi: rtw88: sdio: Fix RCU stalls / interrupt storm by clearing + RX_REQUEST interrupt In rtw_sdio_handle_interrupt(), the HISR status register is cleared using W1C (Write 1 to Clear) semantics. However, the driver masks out the @@ -20,7 +21,7 @@ Assisted-by: Antigravity 1 file changed, 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c -index 2614b0b8c6ea..6301a086b51c 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c @@ -1085,7 +1085,6 @@ static void rtw_sdio_handle_interrupt(struct sdio_func *sdio_func) @@ -32,4 +33,5 @@ index 2614b0b8c6ea..6301a086b51c 100644 } -- -2.34.1 +Armbian + diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch index af6059c126eb..4229c6661531 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch @@ -9,10 +9,10 @@ Signed-off-by: JohnTheCoolingFan 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi -index 00c497b..5eab23b 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi -@@ -100,6 +100,15 @@ +@@ -100,6 +100,15 @@ ws2812: ws2812 { status = "disabled"; }; @@ -28,7 +28,7 @@ index 00c497b..5eab23b 100644 i2c_gpio: i2c-gpio { #address-cells = <1>; #size-cells = <0>; -@@ -137,27 +146,66 @@ +@@ -137,27 +146,66 @@ &cpu0 { cpu-supply = <®_dcdc2>; }; @@ -100,3 +100,6 @@ index 00c497b..5eab23b 100644 }; &mmc0 { +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch index 5d977b4cd7e3..c3f9eb7a2273 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch @@ -16,11 +16,11 @@ Allwinner H616 SoC, including: Signed-off-by: Alan Signed-off-by: JohnTheCoolingFan --- - arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi | 267 +++++++++- - 1 file changed, 250 insertions(+), 17 deletions(-) + arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi | 253 +++++++++- + 1 file changed, 237 insertions(+), 16 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi -index bebfeb2..00c497b 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi @@ -1,6 +1,7 @@ @@ -78,7 +78,7 @@ index bebfeb2..00c497b 100644 compatible = "regulator-fixed"; regulator-name = "vcc-5v"; regulator-min-microvolt = <5000000>; -@@ -36,7 +55,17 @@ +@@ -36,7 +55,17 @@ reg_vcc5v: regulator-vcc5v { regulator-always-on; }; @@ -96,7 +96,7 @@ index bebfeb2..00c497b 100644 compatible = "regulator-fixed"; regulator-name = "vcc33-wifi"; regulator-min-microvolt = <3300000>; -@@ -46,6 +75,7 @@ +@@ -46,6 +75,7 @@ reg_vcc33_wifi: vcc33-wifi { }; reg_vcc_wifi_io: vcc-wifi-io { @@ -104,7 +104,7 @@ index bebfeb2..00c497b 100644 compatible = "regulator-fixed"; regulator-name = "vcc-wifi-io"; regulator-min-microvolt = <1800000>; -@@ -61,6 +91,46 @@ +@@ -61,6 +91,46 @@ wifi_pwrseq: wifi-pwrseq { reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */ post-power-on-delay-ms = <200>; }; @@ -151,7 +151,7 @@ index bebfeb2..00c497b 100644 }; &cpu0 { -@@ -72,11 +142,29 @@ +@@ -72,11 +142,29 @@ &gpu { status = "okay"; }; @@ -182,7 +182,7 @@ index bebfeb2..00c497b 100644 status = "okay"; }; -@@ -85,12 +173,56 @@ +@@ -85,12 +173,56 @@ &mmc1 { vqmmc-supply = <®_vcc_wifi_io>; mmc-pwrseq = <&wifi_pwrseq>; bus-width = <4>; @@ -240,7 +240,7 @@ index bebfeb2..00c497b 100644 }; }; -@@ -100,29 +232,34 @@ +@@ -100,29 +232,34 @@ &r_i2c { axp313a: pmic@36 { compatible = "x-powers,axp313a"; reg = <0x36>; @@ -283,7 +283,7 @@ index bebfeb2..00c497b 100644 regulator-always-on; }; -@@ -130,6 +267,8 @@ +@@ -130,6 +267,8 @@ reg_aldo1: aldo1 { regulator-name = "vcc-1v8-pll"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -292,7 +292,7 @@ index bebfeb2..00c497b 100644 regulator-always-on; }; -@@ -137,12 +276,94 @@ +@@ -137,12 +276,94 @@ reg_dldo1: dldo1 { regulator-name = "vcc-3v3-io"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; @@ -387,3 +387,6 @@ index bebfeb2..00c497b 100644 + dr_mode = "peripheral"; status = "okay"; }; +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch index 55eda0f90a5b..ae543f4388f2 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch @@ -1,8 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MichaIng +Date: Sun, 2 Aug 2026 18:58:58 +0200 +Subject: [ARCHEOLOGY] orangepizero2w/zero3: add dvfs patch more cleanly + +> X-Git-Archeology: > recovered message: > Skip all the redundant stuff from the old patch. Just add the delays to the existing regulator nodes. +> X-Git-Archeology: > recovered message: > Apply patch to Orange Pi Zero 2W as well, which suffers from the same stability issues when the uwe5622 driver is loaded. +> X-Git-Archeology: > recovered message: > Signed-off-by: MichaIng +> X-Git-Archeology: - Revision de29319443c007fb968eb4aec96faaf565534d37: https://github.com/armbian/build/commit/de29319443c007fb968eb4aec96faaf565534d37 +> X-Git-Archeology: Date: Sun, 02 Aug 2026 18:58:58 +0200 +> X-Git-Archeology: From: MichaIng +> X-Git-Archeology: Subject: orangepizero2w/zero3: add dvfs patch more cleanly +> X-Git-Archeology: +--- + arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts | 7 +++++++ + arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 7 +++++++ + 2 files changed, 14 insertions(+) + diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts -index b340bbcb710de..92c3be8053174 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts -@@ -130,6 +130,8 @@ reg_dcdc1: dcdc1 { +@@ -292,6 +292,8 @@ reg_dcdc1: dcdc1 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <990000>; regulator-name = "vdd-gpu-sys"; @@ -11,7 +29,7 @@ index b340bbcb710de..92c3be8053174 100644 }; reg_dcdc2: dcdc2 { -@@ -137,6 +139,9 @@ reg_dcdc2: dcdc2 { +@@ -299,6 +301,9 @@ reg_dcdc2: dcdc2 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-cpu"; @@ -21,7 +39,7 @@ index b340bbcb710de..92c3be8053174 100644 }; reg_dcdc3: dcdc3 { -@@ -144,6 +149,8 @@ reg_dcdc3: dcdc3 { +@@ -306,6 +311,8 @@ reg_dcdc3: dcdc3 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-dram"; @@ -31,10 +49,10 @@ index b340bbcb710de..92c3be8053174 100644 }; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -index c51d4d9120dee..5426db41cc3c5 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -@@ -77,6 +77,8 @@ reg_dcdc1: dcdc1 { +@@ -82,6 +82,8 @@ reg_dcdc1: dcdc1 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <990000>; regulator-name = "vdd-gpu-sys"; @@ -43,7 +61,7 @@ index c51d4d9120dee..5426db41cc3c5 100644 }; reg_dcdc2: dcdc2 { -@@ -84,6 +86,9 @@ reg_dcdc2: dcdc2 { +@@ -89,6 +91,9 @@ reg_dcdc2: dcdc2 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-cpu"; @@ -53,7 +71,7 @@ index c51d4d9120dee..5426db41cc3c5 100644 }; reg_dcdc3: dcdc3 { -@@ -91,6 +96,8 @@ reg_dcdc3: dcdc3 { +@@ -96,6 +101,8 @@ reg_dcdc3: dcdc3 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-dram"; @@ -62,3 +80,6 @@ index c51d4d9120dee..5426db41cc3c5 100644 }; }; }; +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch index ede9b707ff8d..4358d53793aa 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch @@ -11,7 +11,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -@@ -30,6 +30,7 @@ &ext_rgmii_phy { +@@ -29,6 +29,7 @@ &ext_rgmii_phy { &gpu { mali-supply = <®_dcdc1>; diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch index 3ddc29b865d8..5566c924712a 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch @@ -1,25 +1,24 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paolo Sabatino Date: Thu, 16 Jun 2022 19:19:49 +0000 -Subject: [PATCH] fix spreadtrum (sprd) bluetooth broken park link status +Subject: fix spreadtrum (sprd) bluetooth broken park link status Spreadtrum/uwe5622 Bluetooth firmware reports Park link mode support but rejects HCI commands to enable it. This patch adds HCI_QUIRK_BROKEN_PARK_LINK_STATUS. - --- drivers/bluetooth/hci_ldisc.c | 6 ++++++ include/net/bluetooth/hci.h | 6 ++++++ - net/bluetooth/hci_sync.c | 2 +- + net/bluetooth/hci_sync.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c -index 10e936b87cc8..c895fffb6080 100644 +index 111111111111..222222222222 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c -@@ -694,6 +694,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) +@@ -700,6 +700,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) hdev->setup = hci_uart_setup; SET_HCIDEV_DEV(hdev, hu->tty->dev); - + + // Set the broken Park link status quirk, specific for spreadtrum (sprd) + // bluetooth devices + if (hdev->manufacturer == 0xffff && hu->tty->driver && @@ -28,15 +27,15 @@ index 10e936b87cc8..c895fffb6080 100644 + if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags)) hci_set_quirk(hdev, HCI_QUIRK_RAW_DEVICE); - + diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h -index cb4c02d00759..f7aab69d03da 100644 +index 111111111111..222222222222 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -378,6 +378,12 @@ enum { */ HCI_QUIRK_BROKEN_READ_PAGE_SCAN_TYPE, - + + /* + * Device declares that support Park link status, but it really + * does not support it and fails to initialize @@ -45,20 +44,20 @@ index cb4c02d00759..f7aab69d03da 100644 + __HCI_NUM_QUIRKS, }; - + diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c -index 10b8c24a3fbe..69641902f78b 100644 +index 111111111111..222222222222 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4216,7 +4216,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) +@@ -4261,7 +4261,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) link_policy |= HCI_LP_HOLD; if (lmp_sniff_capable(hdev)) link_policy |= HCI_LP_SNIFF; - if (lmp_park_capable(hdev)) + if (lmp_park_capable(hdev) && !hci_test_quirk(hdev, HCI_QUIRK_BROKEN_PARK_LINK_STATUS)) link_policy |= HCI_LP_PARK; - + cp.policy = cpu_to_le16(link_policy); +-- +Armbian --- -2.30.2 diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch index 4782979e143b..bf408cce80c2 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch @@ -12,7 +12,7 @@ diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media index 111111111111..222222222222 100644 --- a/drivers/staging/media/sunxi/cedrus/cedrus.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -649,6 +649,15 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { +@@ -651,6 +651,15 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { .mod_rate = 648000000, }; @@ -28,7 +28,7 @@ index 111111111111..222222222222 100644 static const struct of_device_id cedrus_dt_match[] = { { .compatible = "allwinner,sun4i-a10-video-engine", -@@ -694,6 +703,10 @@ static const struct of_device_id cedrus_dt_match[] = { +@@ -696,6 +705,10 @@ static const struct of_device_id cedrus_dt_match[] = { .compatible = "allwinner,sun50i-h6-video-engine", .data = &sun50i_h6_cedrus_variant, }, diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-rtl8723bs-AP-bugfix.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-rtl8723bs-AP-bugfix.patch index 933fa4247cef..64b781c28ec2 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-rtl8723bs-AP-bugfix.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-staging-rtl8723bs-AP-bugfix.patch @@ -11,7 +11,7 @@ diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging index 111111111111..222222222222 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c -@@ -1925,7 +1925,7 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame, +@@ -1933,7 +1933,7 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame, else /* WIFI_REASSOCREQ */ ie_offset = _REASOCREQ_IE_OFFSET_; diff --git a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-usb-gadget-composite-rename-serial-manufacturer.patch b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-usb-gadget-composite-rename-serial-manufacturer.patch index 50bd2c8e9ab1..323502a40120 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-usb-gadget-composite-rename-serial-manufacturer.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.armbian/drv-usb-gadget-composite-rename-serial-manufacturer.patch @@ -13,7 +13,7 @@ diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 111111111111..222222222222 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c -@@ -2759,7 +2759,7 @@ EXPORT_SYMBOL_GPL(usb_composite_setup_continue); +@@ -2760,7 +2760,7 @@ EXPORT_SYMBOL_GPL(usb_composite_setup_continue); static char *composite_default_mfr(struct usb_gadget *gadget) { diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-DMA-controller-device-n.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-DMA-controller-device-n.patch index e79847e4dd8f..82ecc47eb4f7 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-DMA-controller-device-n.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-DMA-controller-device-n.patch @@ -17,7 +17,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -231,6 +231,8 @@ uart0: serial@2500000 { +@@ -232,6 +232,8 @@ uart0: serial@2500000 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART0>; resets = <&ccu RST_BUS_UART0>; @@ -26,7 +26,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -242,6 +244,8 @@ uart1: serial@2500400 { +@@ -243,6 +245,8 @@ uart1: serial@2500400 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART1>; resets = <&ccu RST_BUS_UART1>; @@ -35,7 +35,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -253,6 +257,8 @@ uart2: serial@2500800 { +@@ -254,6 +258,8 @@ uart2: serial@2500800 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART2>; resets = <&ccu RST_BUS_UART2>; @@ -44,7 +44,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -264,6 +270,8 @@ uart3: serial@2500c00 { +@@ -265,6 +271,8 @@ uart3: serial@2500c00 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART3>; resets = <&ccu RST_BUS_UART3>; @@ -53,7 +53,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -275,6 +283,8 @@ uart4: serial@2501000 { +@@ -276,6 +284,8 @@ uart4: serial@2501000 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART4>; resets = <&ccu RST_BUS_UART4>; @@ -62,7 +62,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -286,6 +296,8 @@ uart5: serial@2501400 { +@@ -287,6 +297,8 @@ uart5: serial@2501400 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART5>; resets = <&ccu RST_BUS_UART5>; @@ -71,7 +71,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -297,6 +309,8 @@ uart6: serial@2501800 { +@@ -298,6 +310,8 @@ uart6: serial@2501800 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART6>; resets = <&ccu RST_BUS_UART6>; @@ -80,7 +80,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -308,6 +322,8 @@ uart7: serial@2501c00 { +@@ -309,6 +323,8 @@ uart7: serial@2501c00 { reg-io-width = <4>; clocks = <&ccu CLK_BUS_UART7>; resets = <&ccu RST_BUS_UART7>; @@ -89,7 +89,7 @@ index 111111111111..222222222222 100644 status = "disabled"; }; -@@ -319,6 +335,8 @@ i2c0: i2c@2502000 { +@@ -320,6 +336,8 @@ i2c0: i2c@2502000 { interrupts = ; clocks = <&ccu CLK_BUS_I2C0>; resets = <&ccu RST_BUS_I2C0>; @@ -98,7 +98,7 @@ index 111111111111..222222222222 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -332,6 +350,8 @@ i2c1: i2c@2502400 { +@@ -333,6 +351,8 @@ i2c1: i2c@2502400 { interrupts = ; clocks = <&ccu CLK_BUS_I2C1>; resets = <&ccu RST_BUS_I2C1>; @@ -107,7 +107,7 @@ index 111111111111..222222222222 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -345,6 +365,8 @@ i2c2: i2c@2502800 { +@@ -346,6 +366,8 @@ i2c2: i2c@2502800 { interrupts = ; clocks = <&ccu CLK_BUS_I2C2>; resets = <&ccu RST_BUS_I2C2>; @@ -116,7 +116,7 @@ index 111111111111..222222222222 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -358,6 +380,8 @@ i2c3: i2c@2502c00 { +@@ -359,6 +381,8 @@ i2c3: i2c@2502c00 { interrupts = ; clocks = <&ccu CLK_BUS_I2C3>; resets = <&ccu RST_BUS_I2C3>; @@ -125,7 +125,7 @@ index 111111111111..222222222222 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -371,6 +395,8 @@ i2c4: i2c@2503000 { +@@ -372,6 +396,8 @@ i2c4: i2c@2503000 { interrupts = ; clocks = <&ccu CLK_BUS_I2C4>; resets = <&ccu RST_BUS_I2C4>; @@ -134,7 +134,7 @@ index 111111111111..222222222222 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -384,6 +410,8 @@ i2c5: i2c@2503400 { +@@ -385,6 +411,8 @@ i2c5: i2c@2503400 { interrupts = ; clocks = <&ccu CLK_BUS_I2C5>; resets = <&ccu RST_BUS_I2C5>; @@ -143,7 +143,7 @@ index 111111111111..222222222222 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -398,6 +426,19 @@ syscon: syscon@3000000 { +@@ -399,6 +427,19 @@ syscon: syscon@3000000 { ranges; }; @@ -163,7 +163,7 @@ index 111111111111..222222222222 100644 sid: efuse@3006000 { compatible = "allwinner,sun55i-a523-sid", "allwinner,sun50i-a64-sid"; -@@ -674,6 +715,8 @@ r_i2c0: i2c@7081400 { +@@ -675,6 +716,8 @@ r_i2c0: i2c@7081400 { reg = <0x07081400 0x400>; interrupts = ; clocks = <&r_ccu CLK_BUS_R_I2C0>; @@ -172,7 +172,7 @@ index 111111111111..222222222222 100644 resets = <&r_ccu RST_BUS_R_I2C0>; pinctrl-names = "default"; pinctrl-0 = <&r_i2c_pins>; -@@ -720,6 +763,19 @@ mcu_ccu: clock-controller@7102000 { +@@ -721,6 +764,19 @@ mcu_ccu: clock-controller@7102000 { #reset-cells = <1>; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-GMAC200-ethernet-contro.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-GMAC200-ethernet-contro.patch index 94964d139af4..f75c0a1b9cd5 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-GMAC200-ethernet-contro.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-GMAC200-ethernet-contro.patch @@ -20,7 +20,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -182,6 +182,16 @@ rgmii0_pins: rgmii0-pins { +@@ -183,6 +183,16 @@ rgmii0_pins: rgmii0-pins { bias-disable; }; @@ -37,7 +37,7 @@ index 111111111111..222222222222 100644 uart0_pb_pins: uart0-pb-pins { pins = "PB9", "PB10"; allwinner,pinmux = <2>; -@@ -644,6 +654,51 @@ mdio0: mdio { +@@ -645,6 +655,51 @@ mdio0: mdio { }; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-I2S2-pins-on-PI-pin-gro.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-I2S2-pins-on-PI-pin-gro.patch index deea05325854..d8d8cb9c5d8c 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-I2S2-pins-on-PI-pin-gro.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-I2S2-pins-on-PI-pin-gro.patch @@ -20,7 +20,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -145,6 +145,14 @@ pio: pinctrl@2000000 { +@@ -146,6 +146,14 @@ pio: pinctrl@2000000 { interrupt-controller; #interrupt-cells = <3>; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-SPDIF-TX-pin-on-PB-and-.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-SPDIF-TX-pin-on-PB-and-.patch index fc2fa5f12a16..dfd192da66f6 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-SPDIF-TX-pin-on-PB-and-.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-SPDIF-TX-pin-on-PB-and-.patch @@ -28,7 +28,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -200,6 +200,20 @@ rgmii1_pins: rgmii1-pins { +@@ -201,6 +201,20 @@ rgmii1_pins: rgmii1-pins { bias-disable; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-node-for-SPDIF-b.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-node-for-SPDIF-b.patch index 2e4fe9dd60aa..f806c96e9900 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-node-for-SPDIF-b.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-node-for-SPDIF-b.patch @@ -19,7 +19,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -840,6 +840,21 @@ mcu_ccu: clock-controller@7102000 { +@@ -841,6 +841,21 @@ mcu_ccu: clock-controller@7102000 { #reset-cells = <1>; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-nodes-for-I2S-co.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-nodes-for-I2S-co.patch index d3a68902374f..0bed27cf60cd 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-nodes-for-I2S-co.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/0001-arm64-dts-allwinner-a523-Add-device-nodes-for-I2S-co.patch @@ -20,7 +20,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -840,6 +840,62 @@ mcu_ccu: clock-controller@7102000 { +@@ -841,6 +841,62 @@ mcu_ccu: clock-controller@7102000 { #reset-cells = <1>; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/10-Allwinner-A523-add-support-for-A523-THS0-1-controllers.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/10-Allwinner-A523-add-support-for-A523-THS0-1-controllers.patch index aab84c80136c..b3d3261163d4 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/10-Allwinner-A523-add-support-for-A523-THS0-1-controllers.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/10-Allwinner-A523-add-support-for-A523-THS0-1-controllers.patch @@ -649,7 +649,7 @@ index 111111111111..222222222222 100644 }; }; -@@ -471,12 +480,46 @@ dma: dma-controller@3002000 { +@@ -472,12 +481,46 @@ dma: dma-controller@3002000 { #dma-cells = <1>; }; @@ -696,7 +696,7 @@ index 111111111111..222222222222 100644 }; gic: interrupt-controller@3400000 { -@@ -936,4 +979,115 @@ npu: npu@7122000 { +@@ -937,4 +980,115 @@ npu: npu@7122000 { power-domains = <&ppu PD_NPU>; }; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.backports/30-allwinner-a523-support-spi-controllers.patch b/patch/kernel/archive/sunxi-6.18/patches.backports/30-allwinner-a523-support-spi-controllers.patch index b67d721dd88e..17d08631a78e 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.backports/30-allwinner-a523-support-spi-controllers.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.backports/30-allwinner-a523-support-spi-controllers.patch @@ -48,7 +48,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi b/arch/arm64/boot/dt index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi -@@ -223,6 +223,43 @@ spdif_out_pi_pin: spdif-pi-pin { +@@ -224,6 +224,43 @@ spdif_out_pi_pin: spdif-pi-pin { allwinner,pinmux = <2>; }; @@ -92,7 +92,7 @@ index 111111111111..222222222222 100644 uart0_pb_pins: uart0-pb-pins { pins = "PB9", "PB10"; allwinner,pinmux = <2>; -@@ -606,6 +643,49 @@ mmc2: mmc@4022000 { +@@ -607,6 +644,49 @@ mmc2: mmc@4022000 { #size-cells = <0>; }; @@ -142,7 +142,7 @@ index 111111111111..222222222222 100644 usb_otg: usb@4100000 { compatible = "allwinner,sun55i-a523-musb", "allwinner,sun8i-a33-musb"; -@@ -858,6 +938,20 @@ rtc: rtc@7090000 { +@@ -859,6 +939,20 @@ rtc: rtc@7090000 { #clock-cells = <1>; }; diff --git a/patch/kernel/archive/sunxi-6.18/patches.media/media-cedrus-Increase-H6-clock-rate.patch b/patch/kernel/archive/sunxi-6.18/patches.media/media-cedrus-Increase-H6-clock-rate.patch index 1b94425c9284..2ffbd3964f0e 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.media/media-cedrus-Increase-H6-clock-rate.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.media/media-cedrus-Increase-H6-clock-rate.patch @@ -15,7 +15,7 @@ diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media index 111111111111..222222222222 100644 --- a/drivers/staging/media/sunxi/cedrus/cedrus.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -646,7 +646,7 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { +@@ -648,7 +648,7 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { CEDRUS_CAPABILITY_H265_DEC | CEDRUS_CAPABILITY_H265_10_DEC | CEDRUS_CAPABILITY_VP8_DEC, diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0004-iio-st_sensors-Don-t-report-error-when-the-device-is.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0004-iio-st_sensors-Don-t-report-error-when-the-device-is.patch index b58d8b85b71e..03c7778ea856 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0004-iio-st_sensors-Don-t-report-error-when-the-device-is.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0004-iio-st_sensors-Don-t-report-error-when-the-device-is.patch @@ -16,7 +16,7 @@ diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/commo index 111111111111..222222222222 100644 --- a/drivers/iio/common/st_sensors/st_sensors_core.c +++ b/drivers/iio/common/st_sensors/st_sensors_core.c -@@ -599,6 +599,13 @@ int st_sensors_verify_id(struct iio_dev *indio_dev) +@@ -610,6 +610,13 @@ int st_sensors_verify_id(struct iio_dev *indio_dev) err = regmap_read(sdata->regmap, sdata->sensor_settings->wai_addr, &wai); if (err < 0) { diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0005-opp-core-Avoid-confusing-error-when-no-regulator-is-.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0005-opp-core-Avoid-confusing-error-when-no-regulator-is-.patch index 728ff0ebc209..90e4d327573f 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0005-opp-core-Avoid-confusing-error-when-no-regulator-is-.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/err-6.18/0005-opp-core-Avoid-confusing-error-when-no-regulator-is-.patch @@ -14,7 +14,7 @@ diff --git a/drivers/opp/core.c b/drivers/opp/core.c index 111111111111..222222222222 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c -@@ -2265,6 +2265,11 @@ static int _opp_set_regulators(struct opp_table *opp_table, struct device *dev, +@@ -2264,6 +2264,11 @@ static int _opp_set_regulators(struct opp_table *opp_table, struct device *dev, for (i = 0; i < count; i++) { reg = regulator_get_optional(dev, names[i]); if (IS_ERR(reg)) { diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0019-usb-serial-option-add-reset_resume-callback-for-WWAN.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0019-usb-serial-option-add-reset_resume-callback-for-WWAN.patch index 391998079e63..25e9c389a51a 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0019-usb-serial-option-add-reset_resume-callback-for-WWAN.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0019-usb-serial-option-add-reset_resume-callback-for-WWAN.patch @@ -20,7 +20,7 @@ diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 111111111111..222222222222 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -2563,6 +2563,7 @@ static struct usb_serial_driver option_1port_device = { +@@ -2580,6 +2580,7 @@ static struct usb_serial_driver option_1port_device = { #ifdef CONFIG_PM .suspend = usb_wwan_suspend, .resume = usb_wwan_resume, diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0024-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0024-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch index 094596d813a7..4ea83592f6cd 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0024-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/fixes-6.18/0024-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch @@ -5,15 +5,15 @@ Subject: Revert "usb: dwc3: Abort suspend on soft disconnect failure" This reverts commit 630a1dec3b0eba2a695b9063f1c205d585cbfec9. --- - drivers/usb/dwc3/core.c | 9 +--- - drivers/usb/dwc3/gadget.c | 22 ++++++---- - 2 files changed, 15 insertions(+), 16 deletions(-) + drivers/usb/dwc3/core.c | 9 ++---- + drivers/usb/dwc3/gadget.c | 16 ++++++---- + 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 111111111111..222222222222 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -2444,7 +2444,6 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) +@@ -2464,7 +2464,6 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) { u32 reg; int i; @@ -21,7 +21,7 @@ index 111111111111..222222222222 100644 if (!pm_runtime_suspended(dwc->dev) && !PMSG_IS_AUTO(msg)) { dwc->susphy_state = (dwc3_readl(dwc, DWC3_GUSB2PHYCFG(0)) & -@@ -2463,9 +2462,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) +@@ -2483,9 +2482,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) case DWC3_GCTL_PRTCAP_DEVICE: if (pm_runtime_suspended(dwc->dev)) break; @@ -32,7 +32,7 @@ index 111111111111..222222222222 100644 synchronize_irq(dwc->irq_gadget); dwc3_core_exit(dwc); break; -@@ -2500,9 +2497,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) +@@ -2520,9 +2517,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) break; if (dwc->current_otg_role == DWC3_OTG_ROLE_DEVICE) { @@ -47,38 +47,32 @@ diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 111111111111..222222222222 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c -@@ -4840,15 +4840,8 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) +@@ -4872,19 +4872,23 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) int ret; ret = dwc3_gadget_soft_disconnect(dwc); -- /* -- * Attempt to reset the controller's state. Likely no -- * communication can be established until the host -- * performs a port reset. -- */ -- if (ret && dwc->softconnect) { -- dwc3_gadget_soft_connect(dwc); -- return -EAGAIN; -- } + if (ret) + goto err; - - spin_lock_irqsave(&dwc->lock, flags); - if (dwc->gadget_driver) -@@ -4856,6 +4849,17 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) - spin_unlock_irqrestore(&dwc->lock, flags); - - return 0; ++ ++ dwc3_disconnect_gadget_sleepable(dwc); ++ ++ return 0; + +err: -+ /* -+ * Attempt to reset the controller's state. Likely no -+ * communication can be established until the host -+ * performs a port reset. -+ */ + /* + * Attempt to reset the controller's state. Likely no + * communication can be established until the host + * performs a port reset. + */ +- if (ret && dwc->softconnect) { + if (dwc->softconnect) -+ dwc3_gadget_soft_connect(dwc); -+ + dwc3_gadget_soft_connect(dwc); +- return -EAGAIN; +- } +- +- dwc3_disconnect_gadget_sleepable(dwc); + +- return 0; + return ret; } diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0001-Input-goodix-Add-config-debugfs-file.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0001-Input-goodix-Add-config-debugfs-file.patch index 4ebccaea6806..ff724ba83ea9 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0001-Input-goodix-Add-config-debugfs-file.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0001-Input-goodix-Add-config-debugfs-file.patch @@ -38,7 +38,7 @@ index 111111111111..222222222222 100644 /** * goodix_read_config - Read the embedded configuration of the panel * -@@ -1067,6 +1078,10 @@ static void goodix_read_config(struct goodix_ts_data *ts) +@@ -1068,6 +1079,10 @@ static void goodix_read_config(struct goodix_ts_data *ts) } ts->chip->calc_config_checksum(ts); @@ -49,7 +49,7 @@ index 111111111111..222222222222 100644 } /** -@@ -1422,6 +1437,8 @@ static void goodix_ts_remove(struct i2c_client *client) +@@ -1423,6 +1438,8 @@ static void goodix_ts_remove(struct i2c_client *client) if (ts->load_cfg_from_disk) wait_for_completion(&ts->firmware_loading_complete); diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0002-Input-goodix-Add-option-to-power-off-the-controller-.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0002-Input-goodix-Add-option-to-power-off-the-controller-.patch index 8137a45e24d3..88e6e8413e8c 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0002-Input-goodix-Add-option-to-power-off-the-controller-.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0002-Input-goodix-Add-option-to-power-off-the-controller-.patch @@ -19,7 +19,7 @@ diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/good index 111111111111..222222222222 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c -@@ -1322,6 +1322,7 @@ static void goodix_disable_regulators(void *arg) +@@ -1323,6 +1323,7 @@ static void goodix_disable_regulators(void *arg) static int goodix_ts_probe(struct i2c_client *client) { @@ -27,7 +27,7 @@ index 111111111111..222222222222 100644 struct goodix_ts_data *ts; const char *cfg_name; int error; -@@ -1341,6 +1342,7 @@ static int goodix_ts_probe(struct i2c_client *client) +@@ -1342,6 +1343,7 @@ static int goodix_ts_probe(struct i2c_client *client) i2c_set_clientdata(client, ts); init_completion(&ts->firmware_loading_complete); ts->contact_size = GOODIX_CONTACT_SIZE; @@ -35,7 +35,7 @@ index 111111111111..222222222222 100644 error = goodix_get_gpio_config(ts); if (error) -@@ -1450,6 +1452,15 @@ static int goodix_suspend(struct device *dev) +@@ -1451,6 +1453,15 @@ static int goodix_suspend(struct device *dev) if (ts->load_cfg_from_disk) wait_for_completion(&ts->firmware_loading_complete); @@ -51,7 +51,7 @@ index 111111111111..222222222222 100644 /* We need gpio pins to suspend/resume */ if (ts->irq_pin_access_method == IRQ_PIN_ACCESS_NONE) { goodix_disable_irq(ts); -@@ -1495,6 +1506,32 @@ static int goodix_resume(struct device *dev) +@@ -1496,6 +1507,32 @@ static int goodix_resume(struct device *dev) u8 config_ver; int error; diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0003-Input-goodix-Try-to-keep-regulator-enable-disable-ba.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0003-Input-goodix-Try-to-keep-regulator-enable-disable-ba.patch index bb01871d785f..9a8c801dc5a4 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0003-Input-goodix-Try-to-keep-regulator-enable-disable-ba.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0003-Input-goodix-Try-to-keep-regulator-enable-disable-ba.patch @@ -15,7 +15,7 @@ diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/good index 111111111111..222222222222 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c -@@ -1515,6 +1515,7 @@ static int goodix_resume(struct device *dev) +@@ -1516,6 +1516,7 @@ static int goodix_resume(struct device *dev) error = regulator_enable(ts->vddio); if (error) { diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0004-input-touchscreen-goodix-Respect-IRQ-flags-from-DT-w.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0004-input-touchscreen-goodix-Respect-IRQ-flags-from-DT-w.patch index ee8401932459..781dd5ad6a17 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0004-input-touchscreen-goodix-Respect-IRQ-flags-from-DT-w.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/goodix-6.18/0004-input-touchscreen-goodix-Respect-IRQ-flags-from-DT-w.patch @@ -35,7 +35,7 @@ index 111111111111..222222222222 100644 } static int goodix_check_cfg_8(struct goodix_ts_data *ts, const u8 *cfg, int len) -@@ -1338,6 +1343,7 @@ static int goodix_ts_probe(struct i2c_client *client) +@@ -1339,6 +1344,7 @@ static int goodix_ts_probe(struct i2c_client *client) if (!ts) return -ENOMEM; diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0001-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0001-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch index 4e5108877901..f0de79263e8c 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0001-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0001-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch @@ -13,7 +13,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -3146,7 +3146,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3151,7 +3151,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port) { struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; @@ -22,7 +22,7 @@ index 111111111111..222222222222 100644 if (!port->partner_pd) port->partner_pd = usb_power_delivery_register(NULL, &desc); -@@ -3156,11 +3156,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3161,11 +3161,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port) memcpy(caps.pdo, port->source_caps, sizeof(u32) * port->nr_source_caps); caps.role = TYPEC_SOURCE; diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0003-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0003-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch index 7e6c06ad85d3..87053acb1820 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0003-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0003-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch @@ -37,7 +37,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -1870,6 +1870,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port) +@@ -1875,6 +1875,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port) return; for (i = 0; i < modep->altmodes; i++) { diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0004-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0004-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch index 8079e7c1894e..6cd26a92b0f8 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0004-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0004-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch @@ -18,7 +18,7 @@ diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 111111111111..222222222222 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c -@@ -3150,15 +3150,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port) +@@ -3155,15 +3155,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port) struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; struct usb_power_delivery_capabilities *cap; @@ -45,7 +45,7 @@ index 111111111111..222222222222 100644 cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) return PTR_ERR(cap); -@@ -3173,15 +3180,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port) +@@ -3178,15 +3185,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port) struct usb_power_delivery_desc desc = { port->negotiated_rev }; struct usb_power_delivery_capabilities_desc caps = { }; struct usb_power_delivery_capabilities *cap; @@ -72,7 +72,7 @@ index 111111111111..222222222222 100644 cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) return PTR_ERR(cap); -@@ -7248,10 +7262,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port) +@@ -7253,10 +7267,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port) port->pds[i] = usb_power_delivery_register(port->dev, &desc); if (IS_ERR(port->pds[i])) { ret = PTR_ERR(port->pds[i]); diff --git a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0005-usb-typec-tcpm-Improve-logs.patch b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0005-usb-typec-tcpm-Improve-logs.patch index 1ed7f36807df..8742f5eca960 100644 --- a/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0005-usb-typec-tcpm-Improve-logs.patch +++ b/patch/kernel/archive/sunxi-6.18/patches.megous/tcpm-6.18/0005-usb-typec-tcpm-Improve-logs.patch @@ -30,7 +30,7 @@ index 111111111111..222222222222 100644 reinit_completion(&port->tx_complete); ret = port->tcpc->pd_transmit(port->tcpc, tx_sop_type, msg, negotiated_rev); -@@ -3833,6 +3836,10 @@ void tcpm_pd_receive(struct tcpm_port *port, const struct pd_message *msg, +@@ -3838,6 +3841,10 @@ void tcpm_pd_receive(struct tcpm_port *port, const struct pd_message *msg, enum tcpm_transmit_type rx_sop_type) { struct pd_rx_event *event; @@ -41,7 +41,7 @@ index 111111111111..222222222222 100644 event = kzalloc(sizeof(*event), GFP_ATOMIC); if (!event) -@@ -6193,7 +6200,7 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, +@@ -6198,7 +6205,7 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1, static void _tcpm_pd_vbus_on(struct tcpm_port *port) { @@ -50,7 +50,7 @@ index 111111111111..222222222222 100644 port->vbus_present = true; /* * When vbus_present is true i.e. Voltage at VBUS is greater than VSAFE5V implicitly -@@ -6283,7 +6290,7 @@ static void _tcpm_pd_vbus_on(struct tcpm_port *port) +@@ -6288,7 +6295,7 @@ static void _tcpm_pd_vbus_on(struct tcpm_port *port) static void _tcpm_pd_vbus_off(struct tcpm_port *port) { From 49537897713b32aa9e45b3484e918447f3613377 Mon Sep 17 00:00:00 2001 From: EvilOlaf Date: Tue, 4 Aug 2026 06:14:45 +0200 Subject: [PATCH 7/7] sunxi-7.0: rewrite patches against 7.0.14 giving it one last cleanup --- ...drv-mmc-sunxi-add-h5-emmc-compatible.patch | 4 +- ...drv-mmc-sunxi-disable-ddr52-a20-emmc.patch | 2 +- .../0503-drv-mmc-sunxi-fix-h6-emmc.patch | 6 +-- ...sunxi-ng-ccu-common-atomic-lock-wait.patch | 40 +++++++++++++++- .../0997-i2c-mv64xxx-pin-runtime-pm.patch | 46 ++++++++++++++++++- .../0998-sunxi-mmc-pin-runtime-pm.patch | 46 ++++++++++++++++++- .../0999-rtw88-sdio-fix-interrupt-storm.patch | 8 ++-- ...50i-h616-bigtreetech-cb1-emac1-ac300.patch | 9 ++-- ...rm64-dts-sun50i-h616-bigtreetech-cb1.patch | 25 +++++----- ...-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch | 37 +++++++++++---- ...-h618-orangepi-zero3-enable-gpu-mali.patch | 2 +- ...rd-broken-park-link-quirk-v6.16-plus.patch | 27 ++++++----- ...-media-sunxi-cedrus-add-H616-variant.patch | 4 +- .../media-cedrus-Increase-H6-clock-rate.patch | 2 +- 14 files changed, 203 insertions(+), 55 deletions(-) diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0501-drv-mmc-sunxi-add-h5-emmc-compatible.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0501-drv-mmc-sunxi-add-h5-emmc-compatible.patch index 5ad258142a8c..0005ad4a8536 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0501-drv-mmc-sunxi-add-h5-emmc-compatible.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0501-drv-mmc-sunxi-add-h5-emmc-compatible.patch @@ -11,7 +11,7 @@ diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c index 111111111111..222222222222 100644 --- a/drivers/mmc/host/sunxi-mmc.c +++ b/drivers/mmc/host/sunxi-mmc.c -@@ -1197,6 +1197,13 @@ static const struct sunxi_mmc_cfg sun50i_a64_emmc_cfg = { +@@ -1191,6 +1191,13 @@ static const struct sunxi_mmc_cfg sun50i_a64_emmc_cfg = { .needs_new_timings = true, }; @@ -25,7 +25,7 @@ index 111111111111..222222222222 100644 static const struct sunxi_mmc_cfg sun50i_h616_cfg = { .idma_des_size_bits = 16, .idma_des_shift = 2, -@@ -1224,6 +1231,7 @@ static const struct of_device_id sunxi_mmc_of_match[] = { +@@ -1218,6 +1225,7 @@ static const struct of_device_id sunxi_mmc_of_match[] = { { .compatible = "allwinner,sun50i-a64-emmc", .data = &sun50i_a64_emmc_cfg }, { .compatible = "allwinner,sun50i-a100-mmc", .data = &sun20i_d1_cfg }, { .compatible = "allwinner,sun50i-a100-emmc", .data = &sun50i_a100_emmc_cfg }, diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0502-drv-mmc-sunxi-disable-ddr52-a20-emmc.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0502-drv-mmc-sunxi-disable-ddr52-a20-emmc.patch index 5efbec185fb5..8ef1a1d8b767 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0502-drv-mmc-sunxi-disable-ddr52-a20-emmc.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0502-drv-mmc-sunxi-disable-ddr52-a20-emmc.patch @@ -11,7 +11,7 @@ diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c index 111111111111..222222222222 100644 --- a/drivers/mmc/host/sunxi-mmc.c +++ b/drivers/mmc/host/sunxi-mmc.c -@@ -1449,7 +1449,9 @@ static int sunxi_mmc_probe(struct platform_device *pdev) +@@ -1443,7 +1443,9 @@ static int sunxi_mmc_probe(struct platform_device *pdev) */ if ((host->cfg->clk_delays || host->use_new_timings) && !of_device_is_compatible(pdev->dev.of_node, diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0503-drv-mmc-sunxi-fix-h6-emmc.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0503-drv-mmc-sunxi-fix-h6-emmc.patch index 7cc62dff0246..ff003c9ee004 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0503-drv-mmc-sunxi-fix-h6-emmc.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0503-drv-mmc-sunxi-fix-h6-emmc.patch @@ -12,7 +12,7 @@ diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c index 111111111111..222222222222 100644 --- a/drivers/mmc/host/sunxi-mmc.c +++ b/drivers/mmc/host/sunxi-mmc.c -@@ -1232,6 +1232,7 @@ static const struct of_device_id sunxi_mmc_of_match[] = { +@@ -1226,6 +1226,7 @@ static const struct of_device_id sunxi_mmc_of_match[] = { { .compatible = "allwinner,sun50i-a100-mmc", .data = &sun20i_d1_cfg }, { .compatible = "allwinner,sun50i-a100-emmc", .data = &sun50i_a100_emmc_cfg }, { .compatible = "allwinner,sun50i-h5-emmc", .data = &sun50i_h5_emmc_cfg }, @@ -20,7 +20,7 @@ index 111111111111..222222222222 100644 { .compatible = "allwinner,sun50i-h616-mmc", .data = &sun50i_h616_cfg }, { /* sentinel */ } }; -@@ -1441,7 +1442,7 @@ static int sunxi_mmc_probe(struct platform_device *pdev) +@@ -1435,7 +1436,7 @@ static int sunxi_mmc_probe(struct platform_device *pdev) MMC_CAP_SDIO_IRQ; /* @@ -29,7 +29,7 @@ index 111111111111..222222222222 100644 * use HS DDR mode for their eMMC chips. * * We still enable HS DDR modes for all the other controller -@@ -1450,6 +1451,8 @@ static int sunxi_mmc_probe(struct platform_device *pdev) +@@ -1444,6 +1445,8 @@ static int sunxi_mmc_probe(struct platform_device *pdev) if ((host->cfg->clk_delays || host->use_new_timings) && !of_device_is_compatible(pdev->dev.of_node, "allwinner,sun50i-h5-emmc") && diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch index 52b1cb69673e..aeec96b6bf78 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0996-sunxi-ng-ccu-common-atomic-lock-wait.patch @@ -1,3 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alastair D'Silva +Date: Sat, 4 Jul 2026 11:18:58 +0200 +Subject: [ARCHEOLOGY] clk: sunxi-ng: ccu_common: Replace ktime-dependent lock + wait loop with udelay (#10119) + +> X-Git-Archeology: > recovered message: > The Allwinner sunxi-ng clock control unit (CCU) driver utilizes +> X-Git-Archeology: > recovered message: > readl_relaxed_poll_timeout_atomic() inside ccu_helper_wait_for_lock() +> X-Git-Archeology: > recovered message: > to wait for PLLs to lock. This timeout loop relies internally on ktime_get() +> X-Git-Archeology: > recovered message: > and timekeeping APIs. +> X-Git-Archeology: > recovered message: > During early boot or clock transitions (such as CPUfreq DVFS scaling), +> X-Git-Archeology: > recovered message: > the system's clock sources and timekeeping may be unstable or temporarily +> X-Git-Archeology: > recovered message: > suspended. This causes ktime_get() to fail to increment or return invalid +> X-Git-Archeology: > recovered message: > readings, turning the timeout calculation into an infinite busy-wait loop +> X-Git-Archeology: > recovered message: > and triggering critical RCU stalls / kernel lockups. +> X-Git-Archeology: > recovered message: > Decouple the PLL lock wait loop from the timekeeping framework by replacing +> X-Git-Archeology: > recovered message: > the poll timeout loop with a robust, timekeeping-independent iteration loop +> X-Git-Archeology: > recovered message: > utilizing udelay(1) (up to 100,000 iterations / 100ms timeout limit). This +> X-Git-Archeology: > recovered message: > avoids timekeeping dependencies during sensitive frequency scaling operations +> X-Git-Archeology: > recovered message: > and prevents infinite CPU lockups when timer interrupts are suspended. +> X-Git-Archeology: > recovered message: > Assisted-by: Antigravity +> X-Git-Archeology: > recovered message: > Signed-off-by: Alastair D'Silva +> X-Git-Archeology: - Revision 522c9611efc1dc2a1fc318595cac46b7653567d2: https://github.com/armbian/build/commit/522c9611efc1dc2a1fc318595cac46b7653567d2 +> X-Git-Archeology: Date: Sat, 04 Jul 2026 11:18:58 +0200 +> X-Git-Archeology: From: Alastair D'Silva +> X-Git-Archeology: Subject: clk: sunxi-ng: ccu_common: Replace ktime-dependent lock wait loop with udelay (#10119) +> X-Git-Archeology: +--- + drivers/clk/sunxi-ng/ccu_common.c | 12 ++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c +index 111111111111..222222222222 100644 --- a/drivers/clk/sunxi-ng/ccu_common.c +++ b/drivers/clk/sunxi-ng/ccu_common.c @@ -10,6 +10,7 @@ @@ -8,7 +41,7 @@ #include #include "ccu_common.h" -@@ -25,7 +26,7 @@ +@@ -25,7 +26,7 @@ struct sunxi_ccu { void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock) { void __iomem *addr; @@ -17,7 +50,7 @@ if (!lock) return; -@@ -35,7 +36,14 @@ +@@ -35,7 +36,14 @@ void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock) else addr = common->base + common->reg; @@ -33,3 +66,6 @@ } EXPORT_SYMBOL_NS_GPL(ccu_helper_wait_for_lock, "SUNXI_CCU"); +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0997-i2c-mv64xxx-pin-runtime-pm.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0997-i2c-mv64xxx-pin-runtime-pm.patch index edbbf701250c..bedbfbfa744c 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0997-i2c-mv64xxx-pin-runtime-pm.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0997-i2c-mv64xxx-pin-runtime-pm.patch @@ -1,8 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alastair D'Silva +Date: Sat, 4 Jul 2026 11:13:33 +0200 +Subject: [ARCHEOLOGY] sunxi: pin mmc and i2c controllers to active to break + circular PM deadlock (#10120) + +> X-Git-Archeology: > recovered message: > Kernel v7.0 introduced runtime PM suspend capabilities for both Allwinner +> X-Git-Archeology: > recovered message: > sunxi-mmc and mv64xxx I2C controllers. During system frequency scaling (DVFS), +> X-Git-Archeology: > recovered message: > this setup introduces a critical circular dependency deadlock: +> X-Git-Archeology: > recovered message: > 1. The cpufreq governor holds the global clock lock (clk_prepare_lock) +> X-Git-Archeology: > recovered message: > to scale the CPU PLL. +> X-Git-Archeology: > recovered message: > 2. To scale CPU voltage, cpufreq writes to the AXP PMIC over I2C, +> X-Git-Archeology: > recovered message: > triggering a resume of the runtime-suspended I2C host controller. +> X-Git-Archeology: > recovered message: > 3. The I2C host controller resume path calls clk_prepare(), which blocks +> X-Git-Archeology: > recovered message: > waiting on clk_prepare_lock. +> X-Git-Archeology: > recovered message: > 4. Concurrently, a systemd runtime suspend worker blocks trying to acquire +> X-Git-Archeology: > recovered message: > clk_prepare_lock to suspend the MMC host controller. +> X-Git-Archeology: > recovered message: > This circular dependency results in immediate kernel hangs and RCU stalls. +> X-Git-Archeology: > recovered message: > Upstream megi/orange-pi-7.0 carried a legacy 145-line patch (0016-mmc-sunxi-mmc-Remove-runtime-PM.patch) +> X-Git-Archeology: > recovered message: > that completely stripped runtime PM out of the sunxi-mmc driver. However, this +> X-Git-Archeology: > recovered message: > approach was insufficient as the direct two-way deadlock between the cpufreq governor and the +> X-Git-Archeology: > recovered message: > I2C controller remained active whenever the I2C host entered runtime suspend. +> X-Git-Archeology: > recovered message: > We drop the intrusive MMC-only PM removal patch and instead break the deadlock +> X-Git-Archeology: > recovered message: > robustly by pinning both the sunxi-mmc and mv64xxx I2C controllers to their active +> X-Git-Archeology: > recovered message: > states using pm_runtime_get_sync() during driver probe. This approach keeps both +> X-Git-Archeology: > recovered message: > controllers awake, completely avoiding runtime suspend operations that collide with +> X-Git-Archeology: > recovered message: > global clock locks during voltage scaling, while keeping the driver source changes +> X-Git-Archeology: > recovered message: > to a clean, non-intrusive 1-line addition per driver. +> X-Git-Archeology: > recovered message: > Assisted-by: Antigravity +> X-Git-Archeology: > recovered message: > Signed-off-by: Alastair D'Silva +> X-Git-Archeology: - Revision e46f5a400d2d0a4c05406ad03b64fe0dab047cf2: https://github.com/armbian/build/commit/e46f5a400d2d0a4c05406ad03b64fe0dab047cf2 +> X-Git-Archeology: Date: Sat, 04 Jul 2026 11:13:33 +0200 +> X-Git-Archeology: From: Alastair D'Silva +> X-Git-Archeology: Subject: sunxi: pin mmc and i2c controllers to active to break circular PM deadlock (#10120) +> X-Git-Archeology: +--- + drivers/i2c/busses/i2c-mv64xxx.c | 4 ++++ + 1 file changed, 4 insertions(+) + diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c -index 1acba628e16c..dfa935b5c640 100644 +index 111111111111..222222222222 100644 --- a/drivers/i2c/busses/i2c-mv64xxx.c +++ b/drivers/i2c/busses/i2c-mv64xxx.c -@@ -1045,6 +1053,10 @@ mv64xxx_i2c_probe(struct platform_device *pd) +@@ -1053,6 +1053,10 @@ mv64xxx_i2c_probe(struct platform_device *pd) pm_runtime_set_autosuspend_delay(&pd->dev, MSEC_PER_SEC); pm_runtime_use_autosuspend(&pd->dev); pm_runtime_enable(&pd->dev); @@ -13,3 +52,6 @@ index 1acba628e16c..dfa935b5c640 100644 if (!pm_runtime_enabled(&pd->dev)) { rc = mv64xxx_i2c_runtime_resume(&pd->dev); if (rc) +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0998-sunxi-mmc-pin-runtime-pm.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0998-sunxi-mmc-pin-runtime-pm.patch index 728f939a37b3..9b3e6a654f7c 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0998-sunxi-mmc-pin-runtime-pm.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0998-sunxi-mmc-pin-runtime-pm.patch @@ -1,8 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alastair D'Silva +Date: Sat, 4 Jul 2026 11:13:33 +0200 +Subject: [ARCHEOLOGY] sunxi: pin mmc and i2c controllers to active to break + circular PM deadlock (#10120) + +> X-Git-Archeology: > recovered message: > Kernel v7.0 introduced runtime PM suspend capabilities for both Allwinner +> X-Git-Archeology: > recovered message: > sunxi-mmc and mv64xxx I2C controllers. During system frequency scaling (DVFS), +> X-Git-Archeology: > recovered message: > this setup introduces a critical circular dependency deadlock: +> X-Git-Archeology: > recovered message: > 1. The cpufreq governor holds the global clock lock (clk_prepare_lock) +> X-Git-Archeology: > recovered message: > to scale the CPU PLL. +> X-Git-Archeology: > recovered message: > 2. To scale CPU voltage, cpufreq writes to the AXP PMIC over I2C, +> X-Git-Archeology: > recovered message: > triggering a resume of the runtime-suspended I2C host controller. +> X-Git-Archeology: > recovered message: > 3. The I2C host controller resume path calls clk_prepare(), which blocks +> X-Git-Archeology: > recovered message: > waiting on clk_prepare_lock. +> X-Git-Archeology: > recovered message: > 4. Concurrently, a systemd runtime suspend worker blocks trying to acquire +> X-Git-Archeology: > recovered message: > clk_prepare_lock to suspend the MMC host controller. +> X-Git-Archeology: > recovered message: > This circular dependency results in immediate kernel hangs and RCU stalls. +> X-Git-Archeology: > recovered message: > Upstream megi/orange-pi-7.0 carried a legacy 145-line patch (0016-mmc-sunxi-mmc-Remove-runtime-PM.patch) +> X-Git-Archeology: > recovered message: > that completely stripped runtime PM out of the sunxi-mmc driver. However, this +> X-Git-Archeology: > recovered message: > approach was insufficient as the direct two-way deadlock between the cpufreq governor and the +> X-Git-Archeology: > recovered message: > I2C controller remained active whenever the I2C host entered runtime suspend. +> X-Git-Archeology: > recovered message: > We drop the intrusive MMC-only PM removal patch and instead break the deadlock +> X-Git-Archeology: > recovered message: > robustly by pinning both the sunxi-mmc and mv64xxx I2C controllers to their active +> X-Git-Archeology: > recovered message: > states using pm_runtime_get_sync() during driver probe. This approach keeps both +> X-Git-Archeology: > recovered message: > controllers awake, completely avoiding runtime suspend operations that collide with +> X-Git-Archeology: > recovered message: > global clock locks during voltage scaling, while keeping the driver source changes +> X-Git-Archeology: > recovered message: > to a clean, non-intrusive 1-line addition per driver. +> X-Git-Archeology: > recovered message: > Assisted-by: Antigravity +> X-Git-Archeology: > recovered message: > Signed-off-by: Alastair D'Silva +> X-Git-Archeology: - Revision e46f5a400d2d0a4c05406ad03b64fe0dab047cf2: https://github.com/armbian/build/commit/e46f5a400d2d0a4c05406ad03b64fe0dab047cf2 +> X-Git-Archeology: Date: Sat, 04 Jul 2026 11:13:33 +0200 +> X-Git-Archeology: From: Alastair D'Silva +> X-Git-Archeology: Subject: sunxi: pin mmc and i2c controllers to active to break circular PM deadlock (#10120) +> X-Git-Archeology: +--- + drivers/mmc/host/sunxi-mmc.c | 4 ++++ + 1 file changed, 4 insertions(+) + diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c -index 8dbcff53a631..a37dd8ca06b5 100644 +index 111111111111..222222222222 100644 --- a/drivers/mmc/host/sunxi-mmc.c +++ b/drivers/mmc/host/sunxi-mmc.c -@@ -1475,6 +1478,10 @@ static int sunxi_mmc_probe(struct platform_device *pdev) +@@ -1478,6 +1478,10 @@ static int sunxi_mmc_probe(struct platform_device *pdev) pm_runtime_set_autosuspend_delay(&pdev->dev, 50); pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_enable(&pdev->dev); @@ -13,3 +52,6 @@ index 8dbcff53a631..a37dd8ca06b5 100644 ret = mmc_add_host(mmc); if (ret) +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch index bc18f5d7f29b..fb30da05d770 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/0999-rtw88-sdio-fix-interrupt-storm.patch @@ -1,7 +1,8 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Alastair D'Silva Date: Tue, 30 Jun 2026 21:16:30 +1000 -Subject: [PATCH] wifi: rtw88: sdio: Fix RCU stalls / interrupt storm by clearing RX_REQUEST interrupt +Subject: wifi: rtw88: sdio: Fix RCU stalls / interrupt storm by clearing + RX_REQUEST interrupt In rtw_sdio_handle_interrupt(), the HISR status register is cleared using W1C (Write 1 to Clear) semantics. However, the driver masks out the @@ -20,7 +21,7 @@ Assisted-by: Antigravity 1 file changed, 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c -index 2614b0b8c6ea..6301a086b51c 100644 +index 111111111111..222222222222 100644 --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c @@ -1085,7 +1085,6 @@ static void rtw_sdio_handle_interrupt(struct sdio_func *sdio_func) @@ -32,4 +33,5 @@ index 2614b0b8c6ea..6301a086b51c 100644 } -- -2.34.1 +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch index af6059c126eb..4229c6661531 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1-emac1-ac300.patch @@ -9,10 +9,10 @@ Signed-off-by: JohnTheCoolingFan 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi -index 00c497b..5eab23b 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi -@@ -100,6 +100,15 @@ +@@ -100,6 +100,15 @@ ws2812: ws2812 { status = "disabled"; }; @@ -28,7 +28,7 @@ index 00c497b..5eab23b 100644 i2c_gpio: i2c-gpio { #address-cells = <1>; #size-cells = <0>; -@@ -137,27 +146,66 @@ +@@ -137,27 +146,66 @@ &cpu0 { cpu-supply = <®_dcdc2>; }; @@ -100,3 +100,6 @@ index 00c497b..5eab23b 100644 }; &mmc0 { +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch index 5d977b4cd7e3..c3f9eb7a2273 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch @@ -16,11 +16,11 @@ Allwinner H616 SoC, including: Signed-off-by: Alan Signed-off-by: JohnTheCoolingFan --- - arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi | 267 +++++++++- - 1 file changed, 250 insertions(+), 17 deletions(-) + arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi | 253 +++++++++- + 1 file changed, 237 insertions(+), 16 deletions(-) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi -index bebfeb2..00c497b 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi @@ -1,6 +1,7 @@ @@ -78,7 +78,7 @@ index bebfeb2..00c497b 100644 compatible = "regulator-fixed"; regulator-name = "vcc-5v"; regulator-min-microvolt = <5000000>; -@@ -36,7 +55,17 @@ +@@ -36,7 +55,17 @@ reg_vcc5v: regulator-vcc5v { regulator-always-on; }; @@ -96,7 +96,7 @@ index bebfeb2..00c497b 100644 compatible = "regulator-fixed"; regulator-name = "vcc33-wifi"; regulator-min-microvolt = <3300000>; -@@ -46,6 +75,7 @@ +@@ -46,6 +75,7 @@ reg_vcc33_wifi: vcc33-wifi { }; reg_vcc_wifi_io: vcc-wifi-io { @@ -104,7 +104,7 @@ index bebfeb2..00c497b 100644 compatible = "regulator-fixed"; regulator-name = "vcc-wifi-io"; regulator-min-microvolt = <1800000>; -@@ -61,6 +91,46 @@ +@@ -61,6 +91,46 @@ wifi_pwrseq: wifi-pwrseq { reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */ post-power-on-delay-ms = <200>; }; @@ -151,7 +151,7 @@ index bebfeb2..00c497b 100644 }; &cpu0 { -@@ -72,11 +142,29 @@ +@@ -72,11 +142,29 @@ &gpu { status = "okay"; }; @@ -182,7 +182,7 @@ index bebfeb2..00c497b 100644 status = "okay"; }; -@@ -85,12 +173,56 @@ +@@ -85,12 +173,56 @@ &mmc1 { vqmmc-supply = <®_vcc_wifi_io>; mmc-pwrseq = <&wifi_pwrseq>; bus-width = <4>; @@ -240,7 +240,7 @@ index bebfeb2..00c497b 100644 }; }; -@@ -100,29 +232,34 @@ +@@ -100,29 +232,34 @@ &r_i2c { axp313a: pmic@36 { compatible = "x-powers,axp313a"; reg = <0x36>; @@ -283,7 +283,7 @@ index bebfeb2..00c497b 100644 regulator-always-on; }; -@@ -130,6 +267,8 @@ +@@ -130,6 +267,8 @@ reg_aldo1: aldo1 { regulator-name = "vcc-1v8-pll"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; @@ -292,7 +292,7 @@ index bebfeb2..00c497b 100644 regulator-always-on; }; -@@ -137,12 +276,94 @@ +@@ -137,12 +276,94 @@ reg_dldo1: dldo1 { regulator-name = "vcc-3v3-io"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; @@ -387,3 +387,6 @@ index bebfeb2..00c497b 100644 + dr_mode = "peripheral"; status = "okay"; }; +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch index 55eda0f90a5b..ae543f4388f2 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero2w-zero3-cpu-dvfs.dtsi.patch @@ -1,8 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MichaIng +Date: Sun, 2 Aug 2026 18:58:58 +0200 +Subject: [ARCHEOLOGY] orangepizero2w/zero3: add dvfs patch more cleanly + +> X-Git-Archeology: > recovered message: > Skip all the redundant stuff from the old patch. Just add the delays to the existing regulator nodes. +> X-Git-Archeology: > recovered message: > Apply patch to Orange Pi Zero 2W as well, which suffers from the same stability issues when the uwe5622 driver is loaded. +> X-Git-Archeology: > recovered message: > Signed-off-by: MichaIng +> X-Git-Archeology: - Revision de29319443c007fb968eb4aec96faaf565534d37: https://github.com/armbian/build/commit/de29319443c007fb968eb4aec96faaf565534d37 +> X-Git-Archeology: Date: Sun, 02 Aug 2026 18:58:58 +0200 +> X-Git-Archeology: From: MichaIng +> X-Git-Archeology: Subject: orangepizero2w/zero3: add dvfs patch more cleanly +> X-Git-Archeology: +--- + arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts | 7 +++++++ + arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts | 7 +++++++ + 2 files changed, 14 insertions(+) + diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts -index b340bbcb710de..92c3be8053174 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts -@@ -130,6 +130,8 @@ reg_dcdc1: dcdc1 { +@@ -292,6 +292,8 @@ reg_dcdc1: dcdc1 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <990000>; regulator-name = "vdd-gpu-sys"; @@ -11,7 +29,7 @@ index b340bbcb710de..92c3be8053174 100644 }; reg_dcdc2: dcdc2 { -@@ -137,6 +139,9 @@ reg_dcdc2: dcdc2 { +@@ -299,6 +301,9 @@ reg_dcdc2: dcdc2 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-cpu"; @@ -21,7 +39,7 @@ index b340bbcb710de..92c3be8053174 100644 }; reg_dcdc3: dcdc3 { -@@ -144,6 +149,8 @@ reg_dcdc3: dcdc3 { +@@ -306,6 +311,8 @@ reg_dcdc3: dcdc3 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-dram"; @@ -31,10 +49,10 @@ index b340bbcb710de..92c3be8053174 100644 }; }; diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -index c51d4d9120dee..5426db41cc3c5 100644 +index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -@@ -77,6 +77,8 @@ reg_dcdc1: dcdc1 { +@@ -82,6 +82,8 @@ reg_dcdc1: dcdc1 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <990000>; regulator-name = "vdd-gpu-sys"; @@ -43,7 +61,7 @@ index c51d4d9120dee..5426db41cc3c5 100644 }; reg_dcdc2: dcdc2 { -@@ -84,6 +86,9 @@ reg_dcdc2: dcdc2 { +@@ -89,6 +91,9 @@ reg_dcdc2: dcdc2 { regulator-min-microvolt = <810000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-cpu"; @@ -53,7 +71,7 @@ index c51d4d9120dee..5426db41cc3c5 100644 }; reg_dcdc3: dcdc3 { -@@ -91,6 +96,8 @@ reg_dcdc3: dcdc3 { +@@ -96,6 +101,8 @@ reg_dcdc3: dcdc3 { regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-dram"; @@ -62,3 +80,6 @@ index c51d4d9120dee..5426db41cc3c5 100644 }; }; }; +-- +Armbian + diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch index ede9b707ff8d..4358d53793aa 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/arm64-dts-sun50i-h618-orangepi-zero3-enable-gpu-mali.patch @@ -11,7 +11,7 @@ diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts b/arch index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts -@@ -30,6 +30,7 @@ &ext_rgmii_phy { +@@ -29,6 +29,7 @@ &ext_rgmii_phy { &gpu { mali-supply = <®_dcdc1>; diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch index 3ddc29b865d8..cffaefce07e4 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-bluetooth-hci-sprd-broken-park-link-quirk-v6.16-plus.patch @@ -1,25 +1,24 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paolo Sabatino Date: Thu, 16 Jun 2022 19:19:49 +0000 -Subject: [PATCH] fix spreadtrum (sprd) bluetooth broken park link status +Subject: fix spreadtrum (sprd) bluetooth broken park link status Spreadtrum/uwe5622 Bluetooth firmware reports Park link mode support but rejects HCI commands to enable it. This patch adds HCI_QUIRK_BROKEN_PARK_LINK_STATUS. - --- drivers/bluetooth/hci_ldisc.c | 6 ++++++ include/net/bluetooth/hci.h | 6 ++++++ - net/bluetooth/hci_sync.c | 2 +- + net/bluetooth/hci_sync.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c -index 10e936b87cc8..c895fffb6080 100644 +index 111111111111..222222222222 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c @@ -694,6 +694,12 @@ static int hci_uart_register_dev(struct hci_uart *hu) hdev->setup = hci_uart_setup; SET_HCIDEV_DEV(hdev, hu->tty->dev); - + + // Set the broken Park link status quirk, specific for spreadtrum (sprd) + // bluetooth devices + if (hdev->manufacturer == 0xffff && hu->tty->driver && @@ -28,15 +27,15 @@ index 10e936b87cc8..c895fffb6080 100644 + if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags)) hci_set_quirk(hdev, HCI_QUIRK_RAW_DEVICE); - + diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h -index cb4c02d00759..f7aab69d03da 100644 +index 111111111111..222222222222 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -378,6 +378,12 @@ enum { */ HCI_QUIRK_BROKEN_READ_PAGE_SCAN_TYPE, - + + /* + * Device declares that support Park link status, but it really + * does not support it and fails to initialize @@ -45,20 +44,20 @@ index cb4c02d00759..f7aab69d03da 100644 + __HCI_NUM_QUIRKS, }; - + diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c -index 10b8c24a3fbe..69641902f78b 100644 +index 111111111111..222222222222 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4216,7 +4216,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) +@@ -4230,7 +4230,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev) link_policy |= HCI_LP_HOLD; if (lmp_sniff_capable(hdev)) link_policy |= HCI_LP_SNIFF; - if (lmp_park_capable(hdev)) + if (lmp_park_capable(hdev) && !hci_test_quirk(hdev, HCI_QUIRK_BROKEN_PARK_LINK_STATUS)) link_policy |= HCI_LP_PARK; - + cp.policy = cpu_to_le16(link_policy); +-- +Armbian --- -2.30.2 diff --git a/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch b/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch index 4782979e143b..ab2d03da1248 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.armbian/drv-staging-media-sunxi-cedrus-add-H616-variant.patch @@ -12,7 +12,7 @@ diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media index 111111111111..222222222222 100644 --- a/drivers/staging/media/sunxi/cedrus/cedrus.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -649,6 +649,15 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { +@@ -647,6 +647,15 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { .mod_rate = 648000000, }; @@ -28,7 +28,7 @@ index 111111111111..222222222222 100644 static const struct of_device_id cedrus_dt_match[] = { { .compatible = "allwinner,sun4i-a10-video-engine", -@@ -694,6 +703,10 @@ static const struct of_device_id cedrus_dt_match[] = { +@@ -692,6 +701,10 @@ static const struct of_device_id cedrus_dt_match[] = { .compatible = "allwinner,sun50i-h6-video-engine", .data = &sun50i_h6_cedrus_variant, }, diff --git a/patch/kernel/archive/sunxi-7.0/patches.media/media-cedrus-Increase-H6-clock-rate.patch b/patch/kernel/archive/sunxi-7.0/patches.media/media-cedrus-Increase-H6-clock-rate.patch index 1b94425c9284..a8a19371c08f 100644 --- a/patch/kernel/archive/sunxi-7.0/patches.media/media-cedrus-Increase-H6-clock-rate.patch +++ b/patch/kernel/archive/sunxi-7.0/patches.media/media-cedrus-Increase-H6-clock-rate.patch @@ -15,7 +15,7 @@ diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media index 111111111111..222222222222 100644 --- a/drivers/staging/media/sunxi/cedrus/cedrus.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -646,7 +646,7 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { +@@ -644,7 +644,7 @@ static const struct cedrus_variant sun50i_h6_cedrus_variant = { CEDRUS_CAPABILITY_H265_DEC | CEDRUS_CAPABILITY_H265_10_DEC | CEDRUS_CAPABILITY_VP8_DEC,