From 0eaee44870cb07991d670086c23959dab5cb3b1a Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Wed, 20 May 2026 19:48:32 +0800 Subject: [PATCH] kernel: bump 6.12 to 6.12.90 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.90 All patches are automatically refreshed. Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/23444 (cherry picked from commit 979bad262981e610fa096f3db6534a172f232028) Link: https://github.com/openwrt/openwrt/pull/23538 [Updated and added starfive patches for spi-pl022] Signed-off-by: Hauke Mehrtens --- target/linux/generic/kernel-6.12 | 4 +- .../103-kbuild-export-SUBARCH.patch | 2 +- ...ve-Add-platform-bus-register-to-adap.patch | 16 +------- ...ve-Avoid-power-device-error-when-CON.patch | 8 ++-- ...ve-fix-the-problem-of-spi-overlay-re.patch | 24 +++-------- ...ve-Enable-spi-to-be-compiled-into-mo.patch | 4 +- ...0025-spi-pl022-Fix-spi-overlay-falut.patch | 2 +- ...arfive-fix-controller-deregistration.patch | 40 +++++++++++++++++++ 8 files changed, 58 insertions(+), 42 deletions(-) create mode 100644 target/linux/starfive/patches-6.12/0031-spi-pl022-starfive-fix-controller-deregistration.patch diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index c3b7066ff5..9b244009cf 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .89 -LINUX_KERNEL_HASH-6.12.89 = 585afd804a9d2853a353dba5e3ac05627a8186cb1274668f151c0b10250799a0 +LINUX_VERSION-6.12 = .90 +LINUX_KERNEL_HASH-6.12.90 = 1f1a1ff057468b8a6284d3ce1d181278259beb5670ea16724c46dbf8820fa2a8 diff --git a/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch b/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch index 595b529e72..f11976b9e3 100644 --- a/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch +++ b/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/Makefile +++ b/Makefile -@@ -591,7 +591,7 @@ export RUSTC_BOOTSTRAP := 1 +@@ -593,7 +593,7 @@ export RUSTC_BOOTSTRAP := 1 # Allows finding `.clippy.toml` in out-of-srctree builds. export CLIPPY_CONF_DIR := $(srctree) diff --git a/target/linux/starfive/patches-6.12/0020-spi-pl022-starfive-Add-platform-bus-register-to-adap.patch b/target/linux/starfive/patches-6.12/0020-spi-pl022-starfive-Add-platform-bus-register-to-adap.patch index 6c0f51eaa9..ad644ade4c 100644 --- a/target/linux/starfive/patches-6.12/0020-spi-pl022-starfive-Add-platform-bus-register-to-adap.patch +++ b/target/linux/starfive/patches-6.12/0020-spi-pl022-starfive-Add-platform-bus-register-to-adap.patch @@ -106,19 +106,7 @@ Signed-off-by: Hal Feng 0, "pl022", pl022); if (status < 0) { dev_err(&adev->dev, "probe - cannot get IRQ (%d)\n", status); -@@ -1975,7 +2009,10 @@ static int pl022_probe(struct amba_devic - - /* Register with the SPI framework */ - amba_set_drvdata(adev, pl022); -- status = devm_spi_register_controller(&adev->dev, host); -+ if (platform_flag) -+ status = spi_register_controller(host); -+ else -+ status = devm_spi_register_controller(&adev->dev, host); - if (status != 0) { - dev_err_probe(&adev->dev, status, - "problem registering spi host\n"); -@@ -2000,13 +2037,24 @@ static int pl022_probe(struct amba_devic +@@ -2000,13 +2034,24 @@ static int pl022_probe(struct amba_devic if (platform_info->enable_dma) pl022_dma_remove(pl022); err_no_irq: @@ -143,7 +131,7 @@ Signed-off-by: Hal Feng return status; } -@@ -2205,6 +2253,89 @@ static void __exit pl022_exit(void) +@@ -2211,6 +2256,89 @@ static void __exit pl022_exit(void) } module_exit(pl022_exit); diff --git a/target/linux/starfive/patches-6.12/0021-spi-pl022-starfive-Avoid-power-device-error-when-CON.patch b/target/linux/starfive/patches-6.12/0021-spi-pl022-starfive-Avoid-power-device-error-when-CON.patch index a2ec87131c..fdb7edc325 100644 --- a/target/linux/starfive/patches-6.12/0021-spi-pl022-starfive-Avoid-power-device-error-when-CON.patch +++ b/target/linux/starfive/patches-6.12/0021-spi-pl022-starfive-Avoid-power-device-error-when-CON.patch @@ -26,7 +26,7 @@ Signed-off-by: Hal Feng /* * This macro is used to define some register default values. -@@ -2019,7 +2021,8 @@ static int pl022_probe(struct amba_devic +@@ -2016,7 +2018,8 @@ static int pl022_probe(struct amba_devic goto err_spi_register; } dev_dbg(dev, "probe succeeded\n"); @@ -36,7 +36,7 @@ Signed-off-by: Hal Feng /* let runtime pm put suspend */ if (platform_info->autosuspend_delay > 0) { dev_info(&adev->dev, -@@ -2029,7 +2032,10 @@ static int pl022_probe(struct amba_devic +@@ -2026,7 +2029,10 @@ static int pl022_probe(struct amba_devic platform_info->autosuspend_delay); pm_runtime_use_autosuspend(dev); } @@ -48,7 +48,7 @@ Signed-off-by: Hal Feng return 0; -@@ -2283,8 +2289,33 @@ static int starfive_of_pl022_probe(struc +@@ -2286,8 +2292,33 @@ static int starfive_of_pl022_probe(struc ret = -EINVAL; } @@ -82,7 +82,7 @@ Signed-off-by: Hal Feng return ret; } -@@ -2314,6 +2345,7 @@ static void starfive_of_pl022_remove(str +@@ -2317,6 +2348,7 @@ static void starfive_of_pl022_remove(str size = resource_size(pdev->resource); release_mem_region(pdev->resource->start, size); diff --git a/target/linux/starfive/patches-6.12/0022-spi-pl022-starfive-fix-the-problem-of-spi-overlay-re.patch b/target/linux/starfive/patches-6.12/0022-spi-pl022-starfive-fix-the-problem-of-spi-overlay-re.patch index 15b84adeef..18c90c0253 100644 --- a/target/linux/starfive/patches-6.12/0022-spi-pl022-starfive-fix-the-problem-of-spi-overlay-re.patch +++ b/target/linux/starfive/patches-6.12/0022-spi-pl022-starfive-fix-the-problem-of-spi-overlay-re.patch @@ -250,19 +250,7 @@ Signed-off-by: Hal Feng 0, "pl022", pl022); if (status < 0) { dev_err(&adev->dev, "probe - cannot get IRQ (%d)\n", status); -@@ -2011,18 +2138,16 @@ static int pl022_probe(struct amba_devic - - /* Register with the SPI framework */ - amba_set_drvdata(adev, pl022); -- if (platform_flag) -- status = spi_register_controller(host); -- else -- status = devm_spi_register_controller(&adev->dev, host); -+ -+ status = devm_spi_register_controller(&adev->dev, host); - if (status != 0) { - dev_err_probe(&adev->dev, status, - "problem registering spi host\n"); +@@ -2018,8 +2145,8 @@ static int pl022_probe(struct amba_devic goto err_spi_register; } dev_dbg(dev, "probe succeeded\n"); @@ -273,7 +261,7 @@ Signed-off-by: Hal Feng /* let runtime pm put suspend */ if (platform_info->autosuspend_delay > 0) { dev_info(&adev->dev, -@@ -2032,10 +2157,8 @@ static int pl022_probe(struct amba_devic +@@ -2029,10 +2156,8 @@ static int pl022_probe(struct amba_devic platform_info->autosuspend_delay); pm_runtime_use_autosuspend(dev); } @@ -286,7 +274,7 @@ Signed-off-by: Hal Feng return 0; -@@ -2043,24 +2166,15 @@ static int pl022_probe(struct amba_devic +@@ -2040,24 +2165,15 @@ static int pl022_probe(struct amba_devic if (platform_info->enable_dma) pl022_dma_remove(pl022); err_no_irq: @@ -312,7 +300,7 @@ Signed-off-by: Hal Feng return status; } -@@ -2272,23 +2386,8 @@ static int starfive_of_pl022_probe(struc +@@ -2275,23 +2391,8 @@ static int starfive_of_pl022_probe(struc .mask = 0x000fffff, .data = &vendor_arm }; @@ -336,7 +324,7 @@ Signed-off-by: Hal Feng ret = of_clk_set_defaults(dev->of_node, false); if (ret < 0) goto err_probe; -@@ -2297,16 +2396,11 @@ static int starfive_of_pl022_probe(struc +@@ -2300,16 +2401,11 @@ static int starfive_of_pl022_probe(struc if (ret) goto err_probe; @@ -357,7 +345,7 @@ Signed-off-by: Hal Feng if (ret) { pm_runtime_disable(dev); -@@ -2321,31 +2415,25 @@ err_probe: +@@ -2324,31 +2420,25 @@ err_probe: static void starfive_of_pl022_remove(struct platform_device *pdev) { diff --git a/target/linux/starfive/patches-6.12/0023-spi-pl022-starfive-Enable-spi-to-be-compiled-into-mo.patch b/target/linux/starfive/patches-6.12/0023-spi-pl022-starfive-Enable-spi-to-be-compiled-into-mo.patch index 661a2ea9aa..1ee0fc0c93 100644 --- a/target/linux/starfive/patches-6.12/0023-spi-pl022-starfive-Enable-spi-to-be-compiled-into-mo.patch +++ b/target/linux/starfive/patches-6.12/0023-spi-pl022-starfive-Enable-spi-to-be-compiled-into-mo.patch @@ -14,7 +14,7 @@ Signed-off-by: Hal Feng --- a/drivers/spi/spi-pl022.c +++ b/drivers/spi/spi-pl022.c -@@ -2365,7 +2365,11 @@ static int __init pl022_init(void) +@@ -2370,7 +2370,11 @@ static int __init pl022_init(void) { return amba_driver_register(&pl022_driver); } @@ -26,7 +26,7 @@ Signed-off-by: Hal Feng static void __exit pl022_exit(void) { -@@ -2452,7 +2456,9 @@ static struct platform_driver starfive_o +@@ -2457,7 +2461,9 @@ static struct platform_driver starfive_o .remove = starfive_of_pl022_remove, }; diff --git a/target/linux/starfive/patches-6.12/0025-spi-pl022-Fix-spi-overlay-falut.patch b/target/linux/starfive/patches-6.12/0025-spi-pl022-Fix-spi-overlay-falut.patch index 4d0f276230..ee273b8942 100644 --- a/target/linux/starfive/patches-6.12/0025-spi-pl022-Fix-spi-overlay-falut.patch +++ b/target/linux/starfive/patches-6.12/0025-spi-pl022-Fix-spi-overlay-falut.patch @@ -22,7 +22,7 @@ Signed-off-by: Hal Feng host->handle_err = pl022_handle_err; host->unprepare_transfer_hardware = pl022_unprepare_transfer_hardware; host->rt = platform_info->rt; -@@ -2435,8 +2434,6 @@ static void starfive_of_pl022_remove(str +@@ -2440,8 +2439,6 @@ static void starfive_of_pl022_remove(str if (pl022->host_info->enable_dma) pl022_dma_remove(pl022); diff --git a/target/linux/starfive/patches-6.12/0031-spi-pl022-starfive-fix-controller-deregistration.patch b/target/linux/starfive/patches-6.12/0031-spi-pl022-starfive-fix-controller-deregistration.patch new file mode 100644 index 0000000000..18eec88769 --- /dev/null +++ b/target/linux/starfive/patches-6.12/0031-spi-pl022-starfive-fix-controller-deregistration.patch @@ -0,0 +1,40 @@ +From: Zhihao Xu +Date: Mon, 18 May 2026 14:03:55 +0800 +Subject: [PATCH] spi-pl022-starfive: fix controller deregistration + +Use manually managed spi_register_controller instead of device managed. + +Link: https://lore.kernel.org/all/20260410081757.503099-1-johan@kernel.org/ + +Signed-off-by: Zhihao Xu +--- a/drivers/spi/spi-pl022.c ++++ b/drivers/spi/spi-pl022.c +@@ -1994,7 +1994,7 @@ static int pl022_platform_probe(struct p + /* Register with the SPI framework */ + dev_set_drvdata(dev, pl022); + +- status = devm_spi_register_controller(dev, host); ++ status = spi_register_controller(host); + if (status != 0) { + dev_err(dev, + "probe - problem registering spi host\n"); +@@ -2432,6 +2432,10 @@ static void starfive_of_pl022_remove(str + if (!pl022) + return; + ++ spi_controller_get(pl022->host); ++ ++ spi_unregister_controller(pl022->host); ++ + pm_runtime_get_sync(&pdev->dev); + pm_runtime_get_noresume(&pdev->dev); + +@@ -2444,6 +2448,8 @@ static void starfive_of_pl022_remove(str + pm_runtime_set_suspended(&pdev->dev); + pm_runtime_put_noidle(&pdev->dev); + dev_pm_domain_detach(&pdev->dev, true); ++ ++ spi_controller_put(pl022->host); + } + + static const struct of_device_id starfive_of_pl022_match[] = {