From aa1cfba75b77ca93ab9a0b03c2c9124a16d96479 Mon Sep 17 00:00:00 2001 From: Thomas Perrot Date: Fri, 20 Oct 2023 15:02:19 +0200 Subject: [PATCH 01/19] ARM: at91: pm: set soc_pm.data.mode in at91_pm_secure_init() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In non secure mode, soc_pm.data.mode is set when entering pm in at91_pm_begin(). This value is used (not only) to determine if the system is going into slow clock mode (at91_suspend_entering_slow_clock()). This function is called from various drivers to check this and act accordingly. If not set, the driver might enter an incorrect suspend mode. When using secure suspend mode, at91_pm_begin() is not called and thus soc_pm.data.mode is not set. Since when using secure suspend, only one suspend mode is supported, set this value directly in at91_pm_secure_init(). Signed-off-by: Clément Léger Signed-off-by: Thomas Perrot Acked-by: Nicolas Ferre Link: https://lore.kernel.org/r/20231020130219.1255937-1-thomas.perrot@bootlin.com Signed-off-by: Claudiu Beznea --- arch/arm/mach-at91/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 1a26af0fabc7..345b91dc6627 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c @@ -1103,6 +1103,7 @@ static void __init at91_pm_secure_init(void) if (res.a0 == 0) { pr_info("AT91: Secure PM: suspend mode set to %s\n", pm_modes[suspend_mode].pattern); + soc_pm.data.mode = suspend_mode; return; } @@ -1112,6 +1113,7 @@ static void __init at91_pm_secure_init(void) res = sam_smccc_call(SAMA5_SMC_SIP_GET_SUSPEND_MODE, 0, 0); if (res.a0 == 0) { pr_warn("AT91: Secure PM: failed to get default mode\n"); + soc_pm.data.mode = -1; return; } @@ -1119,6 +1121,7 @@ static void __init at91_pm_secure_init(void) pm_modes[suspend_mode].pattern); soc_pm.data.suspend_mode = res.a1; + soc_pm.data.mode = soc_pm.data.suspend_mode; } static const struct of_device_id atmel_shdwc_ids[] = { { .compatible = "atmel,sama5d2-shdwc" }, From 6353ed6f311b9daab93df4d968d72ddf2070fe7f Mon Sep 17 00:00:00 2001 From: Lukas Bulwahn Date: Wed, 15 Nov 2023 11:44:34 +0100 Subject: [PATCH 02/19] MAINTAINERS: add omap bus drivers to OMAP2+ SUPPORT While doing some code cleanup in drivers/bus/, I noticed that the files drivers/bus/omap*.[ch] have no maintainer. As far as I see from the git history, important changes to those files went through Tony Lindgren. Further, the inclusion of those drivers depend on the config ARCH_OMAP2PLUS being enabled. This suggests these drivers are part of the section OMAP2+ SUPPORT. Add the omap bus drivers to OMAP2+ SUPPORT. Signed-off-by: Lukas Bulwahn Message-ID: <20231115104434.25796-1-lukas.bulwahn@gmail.com> Signed-off-by: Tony Lindgren --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 97f51d5ec1cf..cf877dc7ff6c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15860,6 +15860,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git F: Documentation/devicetree/bindings/arm/ti/omap.yaml F: arch/arm/configs/omap2plus_defconfig F: arch/arm/mach-omap2/ +F: drivers/bus/omap*.[ch] F: drivers/bus/ti-sysc.c F: drivers/gpio/gpio-tps65219.c F: drivers/i2c/busses/i2c-omap.c From d99cfab43cbd5206ac3eb79fec0fda817dd8f536 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Wed, 15 Nov 2023 15:03:18 -0600 Subject: [PATCH 03/19] ARM: imx: Use device_get_match_data() Use preferred device_get_match_data() instead of of_match_device() to get the driver match data. With this, adjust the includes to explicitly include the correct headers. Signed-off-by: Rob Herring Signed-off-by: Shawn Guo --- arch/arm/mach-imx/mmdc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c index 2157493b78a9..897e6def59ee 100644 --- a/arch/arm/mach-imx/mmdc.c +++ b/arch/arm/mach-imx/mmdc.c @@ -13,7 +13,8 @@ #include #include #include -#include +#include +#include #include #include @@ -103,7 +104,7 @@ struct mmdc_pmu { struct device *dev; struct perf_event *mmdc_events[MMDC_NUM_COUNTERS]; struct hlist_node node; - struct fsl_mmdc_devtype_data *devtype_data; + const struct fsl_mmdc_devtype_data *devtype_data; struct clk *mmdc_ipg_clk; }; @@ -474,8 +475,6 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b struct mmdc_pmu *pmu_mmdc; char *name; int ret; - const struct of_device_id *of_id = - of_match_device(imx_mmdc_dt_ids, &pdev->dev); pmu_mmdc = kzalloc(sizeof(*pmu_mmdc), GFP_KERNEL); if (!pmu_mmdc) { @@ -503,7 +502,7 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b GFP_KERNEL, "mmdc%d", ret); pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk; - pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data; + pmu_mmdc->devtype_data = device_get_match_data(&pdev->dev); hrtimer_init(&pmu_mmdc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); From c8705471b94d0d869e2e3ac80c0d960f0215474f Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Tue, 5 Dec 2023 11:47:12 -0300 Subject: [PATCH 04/19] ARM: mxs: Do not search for "fsl,clkctrl" The "fsl,clkctrl" compatible string is not documented. It is used only to find the base address of the clock controller. Instead of searching for an undocumented compatible string, search for "fsl,imx23-clkctrl" and "fsl,imx28-clkctrl". Signed-off-by: Fabio Estevam Signed-off-by: Shawn Guo --- arch/arm/mach-mxs/mach-mxs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index 3faf9a1e3e36..6e017fa306c8 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c @@ -356,7 +356,9 @@ static int __init mxs_restart_init(void) { struct device_node *np; - np = of_find_compatible_node(NULL, NULL, "fsl,clkctrl"); + np = of_find_compatible_node(NULL, NULL, "fsl,imx23-clkctrl"); + if (!np) + np = of_find_compatible_node(NULL, NULL, "fsl,imx28-clkctrl"); reset_addr = of_iomap(np, 0); if (!reset_addr) return -ENODEV; From a2c568ad9936014020e5586a0bdb5f5bf1d94e21 Mon Sep 17 00:00:00 2001 From: Lukas Bulwahn Date: Tue, 21 Nov 2023 10:34:14 +0100 Subject: [PATCH 05/19] MAINTAINERS: add Marvell MBus driver to Marvell EBU SoCs support While doing some code cleanup in drivers/bus/, I noticed that the file drivers/bus/mvebu-mbus.c has no maintainer. Although the file has not been touched a lot lately, the git history tells us that Gregory Clement and Andrew Lunn integrated patches specific to this driver code. Further, the driver's config depends on config PLAT_ORION, and the code for this platform is defined in arch/arm/plat-orion/, which is part of ARM/Marvell Dove/MV78xx0/Orion SOC support with Gregory and Andrew already being its maintainer. Add drivers/bus/mvebu-mbus.c to ARM/Marvell Dove/MV78xx0/Orion SOC support. Signed-off-by: Lukas Bulwahn Reviewed-by: Andrew Lunn Signed-off-by: Gregory CLEMENT --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 97f51d5ec1cf..ea7895b1697a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2318,6 +2318,7 @@ F: arch/arm/mach-dove/ F: arch/arm/mach-mv78xx0/ F: arch/arm/mach-orion5x/ F: arch/arm/plat-orion/ +F: drivers/bus/mvebu-mbus.c F: drivers/soc/dove/ ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support From 2560cffd2134c2e070dee369b37f6e55438087f9 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Thu, 7 Dec 2023 14:33:35 +0100 Subject: [PATCH 06/19] ARM: Delete ARM11MPCore (ARM11 ARMv6K SMP) support This ARM11 SMP configuration was one of the first SMP configurations the ARM kernel supported, but it has the downside of odd DMA handling, odd cache tagging, and often (as of recent) completely broken cache handling on the ARM RealView PB11MPCore test chips. To boot the platform it was necessary to completely disable the cache. When it comes to the EB 11MPCore it is unclear if this ever worked. These reference designs are now the only ARMv6K SMP platforms. As only reference designs of purely academic interest remain, and since the special-cased DMA and PMU code is hard to maintain and doesn't really work, it is not really worth our time. Delete the ARM11MPCore support along with: - The special DMA quirk CONFIG_DMA_CACHE_RWFO that is only used on ARMv6K SMP, and we are the last ARMV6K system leaving the building and the cache handling is awkward, so good-bye. - The special PMU handling that was only used by ARM11MPCore. The following is left behind: - TIMER_OF_DECLARE(arm_twd_11mp, "arm,arm11mp-twd-timer", ...) in arch/arm/kernel/smp_twd.c, this is still in use by Marvell MMP3 arch/arm/boot/dts/marvell/mmp3.dtsi - IRQCHIP_DECLARE(arm11mp_gic, "arm,arm11mp-gic", ...) in drivers/irqchip/irq-gic.c, this is still in use by Marvell MMP3 arch/arm/boot/dts/marvell/mmp3.dtsi - A compatible for the arm11mpcore SCU, since this was mistakedly used for the Cortex-A9 version of RealView EB. These are unfortunate but will need to be kept around for compatibility. New Marvell-specific compatibles should however probably be added. Acked-by: Mark Rutland Reviewed-by: Arnd Bergmann Signed-off-by: Linus Walleij Acked-by: Liviu Dudau Link: https://lore.kernel.org/r/20231207-drop-11mpcore-v2-1-560b396f3bf5@linaro.org Signed-off-by: Arnd Bergmann --- arch/arm/kernel/perf_event_v6.c | 34 ---------------------- arch/arm/mach-versatile/Kconfig | 17 ----------- arch/arm/mach-versatile/platsmp-realview.c | 6 +++- arch/arm/mach-versatile/realview.c | 1 - arch/arm/mm/Kconfig | 18 ------------ arch/arm/mm/cache-v6.S | 31 -------------------- 6 files changed, 5 insertions(+), 102 deletions(-) diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index 1ae99deeec54..3115077f6abc 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c @@ -525,40 +525,7 @@ static int armv6_1176_pmu_init(struct arm_pmu *cpu_pmu) return 0; } -/* - * ARMv6mpcore is almost identical to single core ARMv6 with the exception - * that some of the events have different enumerations and that there is no - * *hack* to stop the programmable counters. To stop the counters we simply - * disable the interrupt reporting and update the event. When unthrottling we - * reset the period and enable the interrupt reporting. - */ - -static int armv6mpcore_map_event(struct perf_event *event) -{ - return armpmu_map_event(event, &armv6mpcore_perf_map, - &armv6mpcore_perf_cache_map, 0xFF); -} - -static int armv6mpcore_pmu_init(struct arm_pmu *cpu_pmu) -{ - cpu_pmu->name = "armv6_11mpcore"; - cpu_pmu->handle_irq = armv6pmu_handle_irq; - cpu_pmu->enable = armv6pmu_enable_event; - cpu_pmu->disable = armv6mpcore_pmu_disable_event; - cpu_pmu->read_counter = armv6pmu_read_counter; - cpu_pmu->write_counter = armv6pmu_write_counter; - cpu_pmu->get_event_idx = armv6pmu_get_event_idx; - cpu_pmu->clear_event_idx = armv6pmu_clear_event_idx; - cpu_pmu->start = armv6pmu_start; - cpu_pmu->stop = armv6pmu_stop; - cpu_pmu->map_event = armv6mpcore_map_event; - cpu_pmu->num_events = 3; - - return 0; -} - static const struct of_device_id armv6_pmu_of_device_ids[] = { - {.compatible = "arm,arm11mpcore-pmu", .data = armv6mpcore_pmu_init}, {.compatible = "arm,arm1176-pmu", .data = armv6_1176_pmu_init}, {.compatible = "arm,arm1136-pmu", .data = armv6_1136_pmu_init}, { /* sentinel value */ } @@ -568,7 +535,6 @@ static const struct pmu_probe_info armv6_pmu_probe_table[] = { ARM_PMU_PROBE(ARM_CPU_PART_ARM1136, armv6_1136_pmu_init), ARM_PMU_PROBE(ARM_CPU_PART_ARM1156, armv6_1156_pmu_init), ARM_PMU_PROBE(ARM_CPU_PART_ARM1176, armv6_1176_pmu_init), - ARM_PMU_PROBE(ARM_CPU_PART_ARM11MPCORE, armv6mpcore_pmu_init), { /* sentinel value */ } }; diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig index b1519b4dc03a..e029270c2687 100644 --- a/arch/arm/mach-versatile/Kconfig +++ b/arch/arm/mach-versatile/Kconfig @@ -201,23 +201,6 @@ config REALVIEW_EB_A9MP Enable support for the Cortex-A9MPCore tile fitted to the Realview(R) Emulation Baseboard platform. -config REALVIEW_EB_ARM11MP - bool "Support ARM11MPCore Tile" - depends on MACH_REALVIEW_EB && ARCH_MULTI_V6 - select HAVE_SMP - help - Enable support for the ARM11MPCore tile fitted to the Realview(R) - Emulation Baseboard platform. - -config MACH_REALVIEW_PB11MP - bool "Support RealView(R) Platform Baseboard for ARM11MPCore" - depends on ARCH_MULTI_V6 - select HAVE_SMP - help - Include support for the ARM(R) RealView(R) Platform Baseboard for - the ARM11MPCore. This platform has an on-board ARM11MPCore and has - support for PCI-E and Compact Flash. - # ARMv6 CPU without K extensions, but does have the new exclusive ops config MACH_REALVIEW_PB1176 bool "Support RealView(R) Platform Baseboard for ARM1176JZF-S" diff --git a/arch/arm/mach-versatile/platsmp-realview.c b/arch/arm/mach-versatile/platsmp-realview.c index 5d363385c801..6965a1de727b 100644 --- a/arch/arm/mach-versatile/platsmp-realview.c +++ b/arch/arm/mach-versatile/platsmp-realview.c @@ -18,6 +18,11 @@ #define REALVIEW_SYS_FLAGSSET_OFFSET 0x30 static const struct of_device_id realview_scu_match[] = { + /* + * The ARM11MP SCU compatible is only provided as fallback for + * old RealView EB Cortex-A9 device trees that were using this + * compatible by mistake. + */ { .compatible = "arm,arm11mp-scu", }, { .compatible = "arm,cortex-a9-scu", }, { .compatible = "arm,cortex-a5-scu", }, @@ -27,7 +32,6 @@ static const struct of_device_id realview_scu_match[] = { static const struct of_device_id realview_syscon_match[] = { { .compatible = "arm,core-module-integrator", }, { .compatible = "arm,realview-eb-syscon", }, - { .compatible = "arm,realview-pb11mp-syscon", }, { .compatible = "arm,realview-pbx-syscon", }, { }, }; diff --git a/arch/arm/mach-versatile/realview.c b/arch/arm/mach-versatile/realview.c index a3933e2373d5..36a6f6bc4fdd 100644 --- a/arch/arm/mach-versatile/realview.c +++ b/arch/arm/mach-versatile/realview.c @@ -9,7 +9,6 @@ static const char *const realview_dt_platform_compat[] __initconst = { "arm,realview-eb", "arm,realview-pb1176", - "arm,realview-pb11mp", "arm,realview-pba8", "arm,realview-pbx", NULL, diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index c164cde50243..2b6f50dd5478 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -937,24 +937,6 @@ config VDSO You must have glibc 2.22 or later for programs to seamlessly take advantage of this. -config DMA_CACHE_RWFO - bool "Enable read/write for ownership DMA cache maintenance" - depends on CPU_V6K && SMP - default y - help - The Snoop Control Unit on ARM11MPCore does not detect the - cache maintenance operations and the dma_{map,unmap}_area() - functions may leave stale cache entries on other CPUs. By - enabling this option, Read or Write For Ownership in the ARMv6 - DMA cache maintenance functions is performed. These LDR/STR - instructions change the cache line state to shared or modified - so that the cache operation has the desired effect. - - Note that the workaround is only valid on processors that do - not perform speculative loads into the D-cache. For such - processors, if cache maintenance operations are not broadcast - in hardware, other workarounds are needed (e.g. cache - maintenance broadcasting in software via FIQ). config OUTER_CACHE bool diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index 250c83bf7158..44211d8a296f 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S @@ -201,10 +201,6 @@ ENTRY(v6_flush_kern_dcache_area) * - end - virtual end address of region */ v6_dma_inv_range: -#ifdef CONFIG_DMA_CACHE_RWFO - ldrb r2, [r0] @ read for ownership - strb r2, [r0] @ write for ownership -#endif tst r0, #D_CACHE_LINE_SIZE - 1 bic r0, r0, #D_CACHE_LINE_SIZE - 1 #ifdef HARVARD_CACHE @@ -213,10 +209,6 @@ v6_dma_inv_range: mcrne p15, 0, r0, c7, c11, 1 @ clean unified line #endif tst r1, #D_CACHE_LINE_SIZE - 1 -#ifdef CONFIG_DMA_CACHE_RWFO - ldrbne r2, [r1, #-1] @ read for ownership - strbne r2, [r1, #-1] @ write for ownership -#endif bic r1, r1, #D_CACHE_LINE_SIZE - 1 #ifdef HARVARD_CACHE mcrne p15, 0, r1, c7, c14, 1 @ clean & invalidate D line @@ -231,10 +223,6 @@ v6_dma_inv_range: #endif add r0, r0, #D_CACHE_LINE_SIZE cmp r0, r1 -#ifdef CONFIG_DMA_CACHE_RWFO - ldrlo r2, [r0] @ read for ownership - strlo r2, [r0] @ write for ownership -#endif blo 1b mov r0, #0 mcr p15, 0, r0, c7, c10, 4 @ drain write buffer @@ -248,9 +236,6 @@ v6_dma_inv_range: v6_dma_clean_range: bic r0, r0, #D_CACHE_LINE_SIZE - 1 1: -#ifdef CONFIG_DMA_CACHE_RWFO - ldr r2, [r0] @ read for ownership -#endif #ifdef HARVARD_CACHE mcr p15, 0, r0, c7, c10, 1 @ clean D line #else @@ -269,10 +254,6 @@ v6_dma_clean_range: * - end - virtual end address of region */ ENTRY(v6_dma_flush_range) -#ifdef CONFIG_DMA_CACHE_RWFO - ldrb r2, [r0] @ read for ownership - strb r2, [r0] @ write for ownership -#endif bic r0, r0, #D_CACHE_LINE_SIZE - 1 1: #ifdef HARVARD_CACHE @@ -282,10 +263,6 @@ ENTRY(v6_dma_flush_range) #endif add r0, r0, #D_CACHE_LINE_SIZE cmp r0, r1 -#ifdef CONFIG_DMA_CACHE_RWFO - ldrblo r2, [r0] @ read for ownership - strblo r2, [r0] @ write for ownership -#endif blo 1b mov r0, #0 mcr p15, 0, r0, c7, c10, 4 @ drain write buffer @@ -301,13 +278,7 @@ ENTRY(v6_dma_map_area) add r1, r1, r0 teq r2, #DMA_FROM_DEVICE beq v6_dma_inv_range -#ifndef CONFIG_DMA_CACHE_RWFO b v6_dma_clean_range -#else - teq r2, #DMA_TO_DEVICE - beq v6_dma_clean_range - b v6_dma_flush_range -#endif ENDPROC(v6_dma_map_area) /* @@ -317,11 +288,9 @@ ENDPROC(v6_dma_map_area) * - dir - DMA direction */ ENTRY(v6_dma_unmap_area) -#ifndef CONFIG_DMA_CACHE_RWFO add r1, r1, r0 teq r2, #DMA_TO_DEVICE bne v6_dma_inv_range -#endif ret lr ENDPROC(v6_dma_unmap_area) From 20e3ab9ecb37a0e7ff4e820b79952280a3317d1d Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:51 -0600 Subject: [PATCH 07/19] ARM: Kconfig: move platform selection into its own Kconfig file Mostly just for better organization for now. This matches what is done on some other platforms including ARM64. This also lets us start to reduce the number of mach- directories that only exist to store the platform selection. Start with "Platform selection" and ARCH_VIRT. Signed-off-by: Andrew Davis Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 67 +------------------------------------ arch/arm/Kconfig.platforms | 68 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 66 deletions(-) create mode 100644 arch/arm/Kconfig.platforms diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f8567e95f98b..c39e3db46689 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -340,72 +340,7 @@ config ARCH_MULTIPLATFORM Selecting N here allows using those options, including DEBUG_UNCOMPRESS, XIP_KERNEL and ZBOOT_ROM. If unsure, say Y. -menu "Platform selection" - depends on MMU - -comment "CPU Core family selection" - -config ARCH_MULTI_V4 - bool "ARMv4 based platforms (FA526, StrongARM)" - depends on !ARCH_MULTI_V6_V7 - # https://github.com/llvm/llvm-project/issues/50764 - depends on !LD_IS_LLD || LLD_VERSION >= 160000 - select ARCH_MULTI_V4_V5 - select CPU_FA526 if !(CPU_SA110 || CPU_SA1100) - -config ARCH_MULTI_V4T - bool "ARMv4T based platforms (ARM720T, ARM920T, ...)" - depends on !ARCH_MULTI_V6_V7 - # https://github.com/llvm/llvm-project/issues/50764 - depends on !LD_IS_LLD || LLD_VERSION >= 160000 - select ARCH_MULTI_V4_V5 - select CPU_ARM920T if !(CPU_ARM7TDMI || CPU_ARM720T || \ - CPU_ARM740T || CPU_ARM9TDMI || CPU_ARM922T || \ - CPU_ARM925T || CPU_ARM940T) - -config ARCH_MULTI_V5 - bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)" - depends on !ARCH_MULTI_V6_V7 - select ARCH_MULTI_V4_V5 - select CPU_ARM926T if !(CPU_ARM946E || CPU_ARM1020 || \ - CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \ - CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON) - -config ARCH_MULTI_V4_V5 - bool - -config ARCH_MULTI_V6 - bool "ARMv6 based platforms (ARM11)" - select ARCH_MULTI_V6_V7 - select CPU_V6K - -config ARCH_MULTI_V7 - bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)" - default y - select ARCH_MULTI_V6_V7 - select CPU_V7 - select HAVE_SMP - -config ARCH_MULTI_V6_V7 - bool - select MIGHT_HAVE_CACHE_L2X0 - -config ARCH_MULTI_CPU_AUTO - def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7) - select ARCH_MULTI_V5 - -endmenu - -config ARCH_VIRT - bool "Dummy Virtual Machine" - depends on ARCH_MULTI_V7 - select ARM_AMBA - select ARM_GIC - select ARM_GIC_V2M if PCI - select ARM_GIC_V3 - select ARM_GIC_V3_ITS if PCI - select ARM_PSCI - select HAVE_ARM_ARCH_TIMER +source "arch/arm/Kconfig.platforms" config ARCH_AIROHA bool "Airoha SoC Support" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms new file mode 100644 index 000000000000..ed1f6da11e24 --- /dev/null +++ b/arch/arm/Kconfig.platforms @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: GPL-2.0-only + +menu "Platform selection" + depends on MMU + +comment "CPU Core family selection" + +config ARCH_MULTI_V4 + bool "ARMv4 based platforms (FA526, StrongARM)" + depends on !ARCH_MULTI_V6_V7 + # https://github.com/llvm/llvm-project/issues/50764 + depends on !LD_IS_LLD || LLD_VERSION >= 160000 + select ARCH_MULTI_V4_V5 + select CPU_FA526 if !(CPU_SA110 || CPU_SA1100) + +config ARCH_MULTI_V4T + bool "ARMv4T based platforms (ARM720T, ARM920T, ...)" + depends on !ARCH_MULTI_V6_V7 + # https://github.com/llvm/llvm-project/issues/50764 + depends on !LD_IS_LLD || LLD_VERSION >= 160000 + select ARCH_MULTI_V4_V5 + select CPU_ARM920T if !(CPU_ARM7TDMI || CPU_ARM720T || \ + CPU_ARM740T || CPU_ARM9TDMI || CPU_ARM922T || \ + CPU_ARM925T || CPU_ARM940T) + +config ARCH_MULTI_V5 + bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)" + depends on !ARCH_MULTI_V6_V7 + select ARCH_MULTI_V4_V5 + select CPU_ARM926T if !(CPU_ARM946E || CPU_ARM1020 || \ + CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \ + CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON) + +config ARCH_MULTI_V4_V5 + bool + +config ARCH_MULTI_V6 + bool "ARMv6 based platforms (ARM11)" + select ARCH_MULTI_V6_V7 + select CPU_V6K + +config ARCH_MULTI_V7 + bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)" + default y + select ARCH_MULTI_V6_V7 + select CPU_V7 + select HAVE_SMP + +config ARCH_MULTI_V6_V7 + bool + select MIGHT_HAVE_CACHE_L2X0 + +config ARCH_MULTI_CPU_AUTO + def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7) + select ARCH_MULTI_V5 + +endmenu + +config ARCH_VIRT + bool "Dummy Virtual Machine" + depends on ARCH_MULTI_V7 + select ARM_AMBA + select ARM_GIC + select ARM_GIC_V2M if PCI + select ARM_GIC_V3 + select ARM_GIC_V3_ITS if PCI + select ARM_PSCI + select HAVE_ARM_ARCH_TIMER From b6ed4800136f591cb9b1d95031ba1856f6647dcc Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:52 -0600 Subject: [PATCH 08/19] ARM: mach-asm9260: Move ASM9260 support into Kconfig.platforms This removes the need for a dedicated Kconfig and mach directory. Signed-off-by: Andrew Davis Reviewed-by: Oleksij Rempel Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 2 -- arch/arm/Kconfig.platforms | 9 +++++++++ arch/arm/mach-asm9260/Kconfig | 9 --------- 3 files changed, 9 insertions(+), 11 deletions(-) delete mode 100644 arch/arm/mach-asm9260/Kconfig diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c39e3db46689..b31489f05ba8 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -364,8 +364,6 @@ source "arch/arm/mach-alpine/Kconfig" source "arch/arm/mach-artpec/Kconfig" -source "arch/arm/mach-asm9260/Kconfig" - source "arch/arm/mach-aspeed/Kconfig" source "arch/arm/mach-at91/Kconfig" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index ed1f6da11e24..b80a5b49d276 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -66,3 +66,12 @@ config ARCH_VIRT select ARM_GIC_V3_ITS if PCI select ARM_PSCI select HAVE_ARM_ARCH_TIMER + +config MACH_ASM9260 + bool "Alphascale ASM9260" + depends on ARCH_MULTI_V5 + depends on CPU_LITTLE_ENDIAN + select CPU_ARM926T + select ASM9260_TIMER + help + Support for Alphascale ASM9260 based platform. diff --git a/arch/arm/mach-asm9260/Kconfig b/arch/arm/mach-asm9260/Kconfig deleted file mode 100644 index 74e0f61c74c8..000000000000 --- a/arch/arm/mach-asm9260/Kconfig +++ /dev/null @@ -1,9 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -config MACH_ASM9260 - bool "Alphascale ASM9260" - depends on ARCH_MULTI_V5 - depends on CPU_LITTLE_ENDIAN - select CPU_ARM926T - select ASM9260_TIMER - help - Support for Alphascale ASM9260 based platform. From 8b7776fe93de08188f91acf1b11eb0a08a2476a0 Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:53 -0600 Subject: [PATCH 09/19] ARM: mach-rda: Move RDA Micro support into Kconfig.platforms This removes the need for a dedicated Kconfig and empty mach directory. Signed-off-by: Andrew Davis Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 2 -- arch/arm/Kconfig.platforms | 8 ++++++++ arch/arm/mach-rda/Kconfig | 8 -------- 3 files changed, 8 insertions(+), 10 deletions(-) delete mode 100644 arch/arm/mach-rda/Kconfig diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index b31489f05ba8..e1aeaf25d7aa 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -438,8 +438,6 @@ source "arch/arm/mach-pxa/Kconfig" source "arch/arm/mach-qcom/Kconfig" -source "arch/arm/mach-rda/Kconfig" - source "arch/arm/mach-realtek/Kconfig" source "arch/arm/mach-rpc/Kconfig" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index b80a5b49d276..80f5b040e6ef 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -75,3 +75,11 @@ config MACH_ASM9260 select ASM9260_TIMER help Support for Alphascale ASM9260 based platform. + +config ARCH_RDA + bool "RDA Micro SoCs" + depends on ARCH_MULTI_V7 + select RDA_INTC + select RDA_TIMER + help + This enables support for the RDA Micro 8810PL SoC family. diff --git a/arch/arm/mach-rda/Kconfig b/arch/arm/mach-rda/Kconfig deleted file mode 100644 index 4d2e4e046cb3..000000000000 --- a/arch/arm/mach-rda/Kconfig +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -menuconfig ARCH_RDA - bool "RDA Micro SoCs" - depends on ARCH_MULTI_V7 - select RDA_INTC - select RDA_TIMER - help - This enables support for the RDA Micro 8810PL SoC family. From 93911741574ea2334f3a36a3ec560f733692ee2a Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:54 -0600 Subject: [PATCH 10/19] ARM: mach-uniphier: Move Socionext UniPhier support into Kconfig.platforms This removes the need for a dedicated Kconfig and empty mach directory. Signed-off-by: Andrew Davis Reviewed-by: Masami Hiramatsu (Google) Signed-off-by: Arnd Bergmann --- MAINTAINERS | 1 - arch/arm/Kconfig | 2 -- arch/arm/Kconfig.platforms | 15 +++++++++++++++ arch/arm/mach-uniphier/Kconfig | 15 --------------- 4 files changed, 15 insertions(+), 18 deletions(-) delete mode 100644 arch/arm/mach-uniphier/Kconfig diff --git a/MAINTAINERS b/MAINTAINERS index bf4def55293f..d378e05ff680 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2958,7 +2958,6 @@ F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml F: Documentation/devicetree/bindings/soc/socionext/socionext,uniphier*.yaml F: arch/arm/boot/dts/socionext/uniphier* F: arch/arm/include/asm/hardware/cache-uniphier.h -F: arch/arm/mach-uniphier/ F: arch/arm/mm/cache-uniphier.c F: arch/arm64/boot/dts/socionext/uniphier* F: drivers/bus/uniphier-system-bus.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index e1aeaf25d7aa..cfdfba4d52e1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -466,8 +466,6 @@ source "arch/arm/mach-sunxi/Kconfig" source "arch/arm/mach-tegra/Kconfig" -source "arch/arm/mach-uniphier/Kconfig" - source "arch/arm/mach-ux500/Kconfig" source "arch/arm/mach-versatile/Kconfig" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index 80f5b040e6ef..0e6d7172bf61 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -83,3 +83,18 @@ config ARCH_RDA select RDA_TIMER help This enables support for the RDA Micro 8810PL SoC family. + +config ARCH_UNIPHIER + bool "Socionext UniPhier SoCs" + depends on ARCH_MULTI_V7 + select ARCH_HAS_RESET_CONTROLLER + select ARM_AMBA + select ARM_GLOBAL_TIMER + select ARM_GIC + select HAVE_ARM_SCU + select HAVE_ARM_TWD if SMP + select PINCTRL + select RESET_CONTROLLER + help + Support for UniPhier SoC family developed by Socionext Inc. + (formerly, System LSI Business Division of Panasonic Corporation) diff --git a/arch/arm/mach-uniphier/Kconfig b/arch/arm/mach-uniphier/Kconfig deleted file mode 100644 index e661d2626675..000000000000 --- a/arch/arm/mach-uniphier/Kconfig +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -config ARCH_UNIPHIER - bool "Socionext UniPhier SoCs" - depends on ARCH_MULTI_V7 - select ARCH_HAS_RESET_CONTROLLER - select ARM_AMBA - select ARM_GLOBAL_TIMER - select ARM_GIC - select HAVE_ARM_SCU - select HAVE_ARM_TWD if SMP - select PINCTRL - select RESET_CONTROLLER - help - Support for UniPhier SoC family developed by Socionext Inc. - (formerly, System LSI Business Division of Panasonic Corporation) From dcfbe025c29b0df82cadd25cc0bbb89a5bda71fb Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:55 -0600 Subject: [PATCH 11/19] ARM: mach-moxart: Move MOXA ART support into Kconfig.platforms This removes the need for a dedicated Kconfig and empty mach directory. Signed-off-by: Andrew Davis Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 2 -- arch/arm/Kconfig.platforms | 28 ++++++++++++++++++++++++++++ arch/arm/Makefile | 1 - arch/arm/mach-moxart/Kconfig | 28 ---------------------------- arch/arm/mach-moxart/Makefile | 4 ---- arch/arm/mach-moxart/moxart.c | 6 ------ 6 files changed, 28 insertions(+), 41 deletions(-) delete mode 100644 arch/arm/mach-moxart/Kconfig delete mode 100644 arch/arm/mach-moxart/Makefile delete mode 100644 arch/arm/mach-moxart/moxart.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index cfdfba4d52e1..dc906d0c3948 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -412,8 +412,6 @@ source "arch/arm/mach-milbeaut/Kconfig" source "arch/arm/mach-mmp/Kconfig" -source "arch/arm/mach-moxart/Kconfig" - source "arch/arm/mach-mstar/Kconfig" source "arch/arm/mach-mv78xx0/Kconfig" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index 0e6d7172bf61..4b5fad18ca8b 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -76,6 +76,34 @@ config MACH_ASM9260 help Support for Alphascale ASM9260 based platform. +menuconfig ARCH_MOXART + bool "MOXA ART SoC" + depends on ARCH_MULTI_V4 + depends on CPU_LITTLE_ENDIAN + select CPU_FA526 + select ARM_DMA_MEM_BUFFERABLE + select FARADAY_FTINTC010 + select FTTMR010_TIMER + select GPIOLIB + select PHYLIB if NETDEVICES + help + Say Y here if you want to run your kernel on hardware with a + MOXA ART SoC. + The MOXA ART SoC is based on a Faraday FA526 ARMv4 32-bit + 192 MHz CPU with MMU and 16KB/8KB D/I-cache (UC-7112-LX). + Used on models UC-7101, UC-7112/UC-7110, IA240/IA241, IA3341. + +if ARCH_MOXART + +config MACH_UC7112LX + bool "MOXA UC-7112-LX" + depends on ARCH_MOXART + help + Say Y here if you intend to run this kernel on a MOXA + UC-7112-LX embedded computer. + +endif + config ARCH_RDA bool "RDA Micro SoCs" depends on ARCH_MULTI_V7 diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 5ba42f69f8ce..826738b7c7a7 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -192,7 +192,6 @@ machine-$(CONFIG_ARCH_LPC18XX) += lpc18xx machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx machine-$(CONFIG_ARCH_MESON) += meson machine-$(CONFIG_ARCH_MMP) += mmp -machine-$(CONFIG_ARCH_MOXART) += moxart machine-$(CONFIG_ARCH_MV78XX0) += mv78xx0 machine-$(CONFIG_ARCH_MVEBU) += mvebu machine-$(CONFIG_ARCH_MXC) += imx diff --git a/arch/arm/mach-moxart/Kconfig b/arch/arm/mach-moxart/Kconfig deleted file mode 100644 index 909c6573ba8b..000000000000 --- a/arch/arm/mach-moxart/Kconfig +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -menuconfig ARCH_MOXART - bool "MOXA ART SoC" - depends on ARCH_MULTI_V4 - depends on CPU_LITTLE_ENDIAN - select CPU_FA526 - select ARM_DMA_MEM_BUFFERABLE - select FARADAY_FTINTC010 - select FTTMR010_TIMER - select GPIOLIB - select PHYLIB if NETDEVICES - help - Say Y here if you want to run your kernel on hardware with a - MOXA ART SoC. - The MOXA ART SoC is based on a Faraday FA526 ARMv4 32-bit - 192 MHz CPU with MMU and 16KB/8KB D/I-cache (UC-7112-LX). - Used on models UC-7101, UC-7112/UC-7110, IA240/IA241, IA3341. - -if ARCH_MOXART - -config MACH_UC7112LX - bool "MOXA UC-7112-LX" - depends on ARCH_MOXART - help - Say Y here if you intend to run this kernel on a MOXA - UC-7112-LX embedded computer. - -endif diff --git a/arch/arm/mach-moxart/Makefile b/arch/arm/mach-moxart/Makefile deleted file mode 100644 index ded3e38fb98d..000000000000 --- a/arch/arm/mach-moxart/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -# Object file lists. - -obj-$(CONFIG_MACH_UC7112LX) += moxart.o diff --git a/arch/arm/mach-moxart/moxart.c b/arch/arm/mach-moxart/moxart.c deleted file mode 100644 index f1f58c0c0fa1..000000000000 --- a/arch/arm/mach-moxart/moxart.c +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * arch/arm/mach-moxart/moxart.c - * - * (C) Copyright 2013, Jonas Jensen - */ From 00e58c36d20aa011cb0e2f087d9422bf4c6da75d Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:56 -0600 Subject: [PATCH 12/19] ARM: mach-airoha: Rework support and directory structure Having a platform need a mach-* directory should be seen as a negative, it means the platform needs special non-standard handling. ARM64 support does not allow mach-* directories at all. While we may not get to that given all the non-standard architectures we support, we should still try to get as close as we can and reduce the number of mach directories. The mach-airoha/ directory, and files within, provide just one "feature": having the kernel print the machine name if the DTB does not also contain a "model" string (which they always do). To reduce the number of mach-* directories let's do without that feature and remove this directory. It also seems there was a copy/paste error and the "MEDIATEK_DT" name was re-used in the DT_MACHINE_START macro. This may have caused conflicts if this was built in a multi-arch configuration. NOTE: The default l2c_aux_mask is now ~0 but these devices never have this type of cache controller so this is safe. Signed-off-by: Andrew Davis Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 11 ----------- arch/arm/Kconfig.platforms | 11 +++++++++++ arch/arm/Makefile | 1 - arch/arm/mach-airoha/Makefile | 2 -- arch/arm/mach-airoha/airoha.c | 16 ---------------- 5 files changed, 11 insertions(+), 30 deletions(-) delete mode 100644 arch/arm/mach-airoha/Makefile delete mode 100644 arch/arm/mach-airoha/airoha.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index dc906d0c3948..fbdf366d260a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -342,17 +342,6 @@ config ARCH_MULTIPLATFORM source "arch/arm/Kconfig.platforms" -config ARCH_AIROHA - bool "Airoha SoC Support" - depends on ARCH_MULTI_V7 - select ARM_AMBA - select ARM_GIC - select ARM_GIC_V3 - select ARM_PSCI - select HAVE_ARM_ARCH_TIMER - help - Support for Airoha EN7523 SoCs - # # This is sorted alphabetically by mach-* pathname. However, plat-* # Kconfigs may be included either alphabetically (according to the diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index 4b5fad18ca8b..38457d5a18ff 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -67,6 +67,17 @@ config ARCH_VIRT select ARM_PSCI select HAVE_ARM_ARCH_TIMER +config ARCH_AIROHA + bool "Airoha SoC Support" + depends on ARCH_MULTI_V7 + select ARM_AMBA + select ARM_GIC + select ARM_GIC_V3 + select ARM_PSCI + select HAVE_ARM_ARCH_TIMER + help + Support for Airoha EN7523 SoCs + config MACH_ASM9260 bool "Alphascale ASM9260" depends on ARCH_MULTI_V5 diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 826738b7c7a7..eb72b092d7b4 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -167,7 +167,6 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 # Machine directory name. This list is sorted alphanumerically # by CONFIG_* macro name. machine-$(CONFIG_ARCH_ACTIONS) += actions -machine-$(CONFIG_ARCH_AIROHA) += airoha machine-$(CONFIG_ARCH_ALPINE) += alpine machine-$(CONFIG_ARCH_ARTPEC) += artpec machine-$(CONFIG_ARCH_ASPEED) += aspeed diff --git a/arch/arm/mach-airoha/Makefile b/arch/arm/mach-airoha/Makefile deleted file mode 100644 index a5857d0d02eb..000000000000 --- a/arch/arm/mach-airoha/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -obj-y += airoha.o diff --git a/arch/arm/mach-airoha/airoha.c b/arch/arm/mach-airoha/airoha.c deleted file mode 100644 index ea23b5abb478..000000000000 --- a/arch/arm/mach-airoha/airoha.c +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * Device Tree support for Airoha SoCs - * - * Copyright (c) 2022 Felix Fietkau - */ -#include - -static const char * const airoha_board_dt_compat[] = { - "airoha,en7523", - NULL, -}; - -DT_MACHINE_START(MEDIATEK_DT, "Airoha Cortex-A53 (Device Tree)") - .dt_compat = airoha_board_dt_compat, -MACHINE_END From ae73dadb1285301967253c8f859116bf90b69b06 Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:57 -0600 Subject: [PATCH 13/19] ARM: mach-sunplus: Rework support and directory structure Having a platform need a mach-* directory should be seen as a negative, it means the platform needs special non-standard handling. ARM64 support does not allow mach-* directories at all. While we may not get to that given all the non-standard architectures we support, we should still try to get as close as we can and reduce the number of mach directories. The mach-sunplus/ directory and files, provides just one "feature": having the kernel print the machine name if the DTB does not also contain a "model" string (which they always do). To reduce the number of mach-* directories let's do without that feature and remove this directory. NOTE: The default l2c_aux_mask is now ~0 but these devices never have this type of cache controller so this is safe. Signed-off-by: Andrew Davis Signed-off-by: Arnd Bergmann --- MAINTAINERS | 1 - arch/arm/Kconfig | 2 -- arch/arm/Kconfig.platforms | 29 +++++++++++++++++++++++++++++ arch/arm/Makefile | 1 - arch/arm/mach-sunplus/Kconfig | 27 --------------------------- arch/arm/mach-sunplus/Makefile | 8 -------- arch/arm/mach-sunplus/sp7021.c | 16 ---------------- 7 files changed, 29 insertions(+), 55 deletions(-) delete mode 100644 arch/arm/mach-sunplus/Kconfig delete mode 100644 arch/arm/mach-sunplus/Makefile delete mode 100644 arch/arm/mach-sunplus/sp7021.c diff --git a/MAINTAINERS b/MAINTAINERS index d378e05ff680..a3ad4f9bd2ec 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2838,7 +2838,6 @@ F: Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.ya F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml F: arch/arm/boot/dts/sunplus/ F: arch/arm/configs/sp7021_*defconfig -F: arch/arm/mach-sunplus/ F: drivers/clk/clk-sp7021.c F: drivers/irqchip/irq-sp7021-intc.c F: drivers/reset/reset-sunplus.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index fbdf366d260a..395530fe2240 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -447,8 +447,6 @@ source "arch/arm/mach-sti/Kconfig" source "arch/arm/mach-stm32/Kconfig" -source "arch/arm/mach-sunplus/Kconfig" - source "arch/arm/mach-sunxi/Kconfig" source "arch/arm/mach-tegra/Kconfig" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index 38457d5a18ff..acaced2f0ab0 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -123,6 +123,35 @@ config ARCH_RDA help This enables support for the RDA Micro 8810PL SoC family. +menuconfig ARCH_SUNPLUS + bool "Sunplus SoCs" + depends on ARCH_MULTI_V7 + help + Support for Sunplus SoC family: SP7021 and succeeding SoC-based systems, + such as the Banana Pi BPI-F2S development board (and derivatives). + () + () + +if ARCH_SUNPLUS + +config SOC_SP7021 + bool "Sunplus SP7021 SoC support" + default ARCH_SUNPLUS + select HAVE_ARM_ARCH_TIMER + select ARM_GIC + select ARM_PSCI + select PINCTRL + select PINCTRL_SPPCTL + select SERIAL_SUNPLUS if TTY + select SERIAL_SUNPLUS_CONSOLE if TTY + help + Support for Sunplus SP7021 SoC. It is based on ARM 4-core + Cortex-A7 with various peripherals (e.g.: I2C, SPI, SDIO, + Ethernet, etc.), FPGA interface, chip-to-chip bus. + It is designed for industrial control. + +endif + config ARCH_UNIPHIER bool "Socionext UniPhier SoCs" depends on ARCH_MULTI_V7 diff --git a/arch/arm/Makefile b/arch/arm/Makefile index eb72b092d7b4..699be64a74be 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -216,7 +216,6 @@ machine-$(CONFIG_ARCH_RENESAS) += shmobile machine-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga machine-$(CONFIG_ARCH_STI) += sti machine-$(CONFIG_ARCH_STM32) += stm32 -machine-$(CONFIG_ARCH_SUNPLUS) += sunplus machine-$(CONFIG_ARCH_SUNXI) += sunxi machine-$(CONFIG_ARCH_TEGRA) += tegra machine-$(CONFIG_ARCH_U8500) += ux500 diff --git a/arch/arm/mach-sunplus/Kconfig b/arch/arm/mach-sunplus/Kconfig deleted file mode 100644 index d0c2416e6f24..000000000000 --- a/arch/arm/mach-sunplus/Kconfig +++ /dev/null @@ -1,27 +0,0 @@ -# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) - -menuconfig ARCH_SUNPLUS - bool "Sunplus SoCs" - depends on ARCH_MULTI_V7 - help - Support for Sunplus SoC family: SP7021 and succeeding SoC-based systems, - such as the Banana Pi BPI-F2S development board (and derivatives). - () - () - -config SOC_SP7021 - bool "Sunplus SP7021 SoC support" - depends on ARCH_SUNPLUS - default ARCH_SUNPLUS - select HAVE_ARM_ARCH_TIMER - select ARM_GIC - select ARM_PSCI - select PINCTRL - select PINCTRL_SPPCTL - select SERIAL_SUNPLUS if TTY - select SERIAL_SUNPLUS_CONSOLE if TTY - help - Support for Sunplus SP7021 SoC. It is based on ARM 4-core - Cortex-A7 with various peripherals (e.g.: I2C, SPI, SDIO, - Ethernet, etc.), FPGA interface, chip-to-chip bus. - It is designed for industrial control. diff --git a/arch/arm/mach-sunplus/Makefile b/arch/arm/mach-sunplus/Makefile deleted file mode 100644 index d211de6af2db..000000000000 --- a/arch/arm/mach-sunplus/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# -# Makefile for the linux kernel. -# - -# Object file lists. - -obj-$(CONFIG_SOC_SP7021) += sp7021.o diff --git a/arch/arm/mach-sunplus/sp7021.c b/arch/arm/mach-sunplus/sp7021.c deleted file mode 100644 index 774d0a5bd4eb..000000000000 --- a/arch/arm/mach-sunplus/sp7021.c +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -/* - * Copyright (C) Sunplus Technology Co., Ltd. - * All rights reserved. - */ -#include -#include - -static const char *sp7021_compat[] __initconst = { - "sunplus,sp7021", - NULL -}; - -DT_MACHINE_START(SP7021_DT, "SP7021") - .dt_compat = sp7021_compat, -MACHINE_END From 671c08ec007b2f859d9075fc9bc0c06320c90cd4 Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Mon, 13 Nov 2023 08:43:59 -0600 Subject: [PATCH 14/19] ARM: mach-nspire: Rework support and directory structure Having a platform need a mach-* directory should be seen as a negative, it means the platform needs special non-standard handling. ARM64 support does not allow mach-* directories at all. While we may not get to that given all the non-standard architectures we support, we should still try to get as close as we can and reduce the number of mach directories. The mach-nspire/ directory and files, provides just one "feature": having the kernel print the machine name if the DTB does not also contain a "model" string (which they always do). To reduce the number of mach-* directories let's do without that feature and remove this directory. NOTE: The default l2c_aux_mask is now ~0 but these devices never have this type of cache controller so this is safe. Signed-off-by: Andrew Davis Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 2 -- arch/arm/Kconfig.platforms | 15 +++++++++++++++ arch/arm/Makefile | 1 - arch/arm/mach-nspire/Kconfig | 15 --------------- arch/arm/mach-nspire/Makefile | 2 -- arch/arm/mach-nspire/nspire.c | 18 ------------------ 6 files changed, 15 insertions(+), 38 deletions(-) delete mode 100644 arch/arm/mach-nspire/Kconfig delete mode 100644 arch/arm/mach-nspire/Makefile delete mode 100644 arch/arm/mach-nspire/nspire.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 395530fe2240..2afa519deebe 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -413,8 +413,6 @@ source "arch/arm/mach-nomadik/Kconfig" source "arch/arm/mach-npcm/Kconfig" -source "arch/arm/mach-nspire/Kconfig" - source "arch/arm/mach-omap1/Kconfig" source "arch/arm/mach-omap2/Kconfig" diff --git a/arch/arm/Kconfig.platforms b/arch/arm/Kconfig.platforms index acaced2f0ab0..845ab08e20a4 100644 --- a/arch/arm/Kconfig.platforms +++ b/arch/arm/Kconfig.platforms @@ -115,6 +115,21 @@ config MACH_UC7112LX endif +config ARCH_NSPIRE + bool "TI-NSPIRE based" + depends on ARCH_MULTI_V4T + depends on CPU_LITTLE_ENDIAN + select CPU_ARM926T + select GENERIC_IRQ_CHIP + select ARM_AMBA + select ARM_VIC + select ARM_TIMER_SP804 + select NSPIRE_TIMER + select POWER_RESET + select POWER_RESET_SYSCON + help + This enables support for systems using the TI-NSPIRE CPU + config ARCH_RDA bool "RDA Micro SoCs" depends on ARCH_MULTI_V7 diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 699be64a74be..473280d5adce 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -200,7 +200,6 @@ machine-$(CONFIG_ARCH_MXS) += mxs machine-$(CONFIG_ARCH_MSTARV7) += mstar machine-$(CONFIG_ARCH_NOMADIK) += nomadik machine-$(CONFIG_ARCH_NPCM) += npcm -machine-$(CONFIG_ARCH_NSPIRE) += nspire machine-$(CONFIG_ARCH_OMAP1) += omap1 machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2 machine-$(CONFIG_ARCH_ORION5X) += orion5x diff --git a/arch/arm/mach-nspire/Kconfig b/arch/arm/mach-nspire/Kconfig deleted file mode 100644 index 0ffdcaca1e6b..000000000000 --- a/arch/arm/mach-nspire/Kconfig +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -config ARCH_NSPIRE - bool "TI-NSPIRE based" - depends on ARCH_MULTI_V4T - depends on CPU_LITTLE_ENDIAN - select CPU_ARM926T - select GENERIC_IRQ_CHIP - select ARM_AMBA - select ARM_VIC - select ARM_TIMER_SP804 - select NSPIRE_TIMER - select POWER_RESET - select POWER_RESET_SYSCON - help - This enables support for systems using the TI-NSPIRE CPU diff --git a/arch/arm/mach-nspire/Makefile b/arch/arm/mach-nspire/Makefile deleted file mode 100644 index 4716b9b9aa7b..000000000000 --- a/arch/arm/mach-nspire/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -obj-y += nspire.o diff --git a/arch/arm/mach-nspire/nspire.c b/arch/arm/mach-nspire/nspire.c deleted file mode 100644 index 2fbfc23237ff..000000000000 --- a/arch/arm/mach-nspire/nspire.c +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2013 Daniel Tang - */ - -#include - -static const char *const nspire_dt_match[] __initconst = { - "ti,nspire", - "ti,nspire-cx", - "ti,nspire-tp", - "ti,nspire-clp", - NULL, -}; - -DT_MACHINE_START(NSPIRE, "TI-NSPIRE") - .dt_compat = nspire_dt_match, -MACHINE_END From ced296f636358c1593df0ef15523fa9aa93468ac Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Sun, 24 Dec 2023 23:24:38 +0100 Subject: [PATCH 15/19] ARM: Delete ARM11MPCore perf leftovers My commit deleting the PB11MPCore apparently left a few dangling structs in the perf event code. Fix it up. Fixes: 2560cffd2134 ("ARM: Delete ARM11MPCore (ARM11 ARMv6K SMP) support") Signed-off-by: Linus Walleij Reviewed-by: Liviu Dudau Link: https://lore.kernel.org/r/20231224-drop-11mpcore-fix-v1-1-d8b16d1c1fae@linaro.org Signed-off-by: Arnd Bergmann --- arch/arm/kernel/perf_event_v6.c | 94 --------------------------------- 1 file changed, 94 deletions(-) diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index 3115077f6abc..0cbf46233d6b 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c @@ -113,69 +113,6 @@ static const unsigned armv6_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] [C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV6_PERFCTR_ITLB_MISS, }; -enum armv6mpcore_perf_types { - ARMV6MPCORE_PERFCTR_ICACHE_MISS = 0x0, - ARMV6MPCORE_PERFCTR_IBUF_STALL = 0x1, - ARMV6MPCORE_PERFCTR_DDEP_STALL = 0x2, - ARMV6MPCORE_PERFCTR_ITLB_MISS = 0x3, - ARMV6MPCORE_PERFCTR_DTLB_MISS = 0x4, - ARMV6MPCORE_PERFCTR_BR_EXEC = 0x5, - ARMV6MPCORE_PERFCTR_BR_NOTPREDICT = 0x6, - ARMV6MPCORE_PERFCTR_BR_MISPREDICT = 0x7, - ARMV6MPCORE_PERFCTR_INSTR_EXEC = 0x8, - ARMV6MPCORE_PERFCTR_DCACHE_RDACCESS = 0xA, - ARMV6MPCORE_PERFCTR_DCACHE_RDMISS = 0xB, - ARMV6MPCORE_PERFCTR_DCACHE_WRACCESS = 0xC, - ARMV6MPCORE_PERFCTR_DCACHE_WRMISS = 0xD, - ARMV6MPCORE_PERFCTR_DCACHE_EVICTION = 0xE, - ARMV6MPCORE_PERFCTR_SW_PC_CHANGE = 0xF, - ARMV6MPCORE_PERFCTR_MAIN_TLB_MISS = 0x10, - ARMV6MPCORE_PERFCTR_EXPL_MEM_ACCESS = 0x11, - ARMV6MPCORE_PERFCTR_LSU_FULL_STALL = 0x12, - ARMV6MPCORE_PERFCTR_WBUF_DRAINED = 0x13, - ARMV6MPCORE_PERFCTR_CPU_CYCLES = 0xFF, -}; - -/* - * The hardware events that we support. We do support cache operations but - * we have harvard caches and no way to combine instruction and data - * accesses/misses in hardware. - */ -static const unsigned armv6mpcore_perf_map[PERF_COUNT_HW_MAX] = { - PERF_MAP_ALL_UNSUPPORTED, - [PERF_COUNT_HW_CPU_CYCLES] = ARMV6MPCORE_PERFCTR_CPU_CYCLES, - [PERF_COUNT_HW_INSTRUCTIONS] = ARMV6MPCORE_PERFCTR_INSTR_EXEC, - [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV6MPCORE_PERFCTR_BR_EXEC, - [PERF_COUNT_HW_BRANCH_MISSES] = ARMV6MPCORE_PERFCTR_BR_MISPREDICT, - [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = ARMV6MPCORE_PERFCTR_IBUF_STALL, - [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = ARMV6MPCORE_PERFCTR_LSU_FULL_STALL, -}; - -static const unsigned armv6mpcore_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] - [PERF_COUNT_HW_CACHE_OP_MAX] - [PERF_COUNT_HW_CACHE_RESULT_MAX] = { - PERF_CACHE_MAP_ALL_UNSUPPORTED, - - [C(L1D)][C(OP_READ)][C(RESULT_ACCESS)] = ARMV6MPCORE_PERFCTR_DCACHE_RDACCESS, - [C(L1D)][C(OP_READ)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_DCACHE_RDMISS, - [C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)] = ARMV6MPCORE_PERFCTR_DCACHE_WRACCESS, - [C(L1D)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_DCACHE_WRMISS, - - [C(L1I)][C(OP_READ)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_ICACHE_MISS, - - /* - * The ARM performance counters can count micro DTLB misses, micro ITLB - * misses and main TLB misses. There isn't an event for TLB misses, so - * use the micro misses here and if users want the main TLB misses they - * can use a raw counter. - */ - [C(DTLB)][C(OP_READ)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_DTLB_MISS, - [C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_DTLB_MISS, - - [C(ITLB)][C(OP_READ)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_ITLB_MISS, - [C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_ITLB_MISS, -}; - static inline unsigned long armv6_pmcr_read(void) { @@ -452,37 +389,6 @@ static void armv6pmu_disable_event(struct perf_event *event) raw_spin_unlock_irqrestore(&events->pmu_lock, flags); } -static void armv6mpcore_pmu_disable_event(struct perf_event *event) -{ - unsigned long val, mask, flags, evt = 0; - struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu); - struct hw_perf_event *hwc = &event->hw; - struct pmu_hw_events *events = this_cpu_ptr(cpu_pmu->hw_events); - int idx = hwc->idx; - - if (ARMV6_CYCLE_COUNTER == idx) { - mask = ARMV6_PMCR_CCOUNT_IEN; - } else if (ARMV6_COUNTER0 == idx) { - mask = ARMV6_PMCR_COUNT0_IEN; - } else if (ARMV6_COUNTER1 == idx) { - mask = ARMV6_PMCR_COUNT1_IEN; - } else { - WARN_ONCE(1, "invalid counter number (%d)\n", idx); - return; - } - - /* - * Unlike UP ARMv6, we don't have a way of stopping the counters. We - * simply disable the interrupt reporting. - */ - raw_spin_lock_irqsave(&events->pmu_lock, flags); - val = armv6_pmcr_read(); - val &= ~mask; - val |= evt; - armv6_pmcr_write(val); - raw_spin_unlock_irqrestore(&events->pmu_lock, flags); -} - static int armv6_map_event(struct perf_event *event) { return armpmu_map_event(event, &armv6_perf_map, From fcf410e050a9c046b2907e3ab9145eb974044e0e Mon Sep 17 00:00:00 2001 From: Krzysztof Kozlowski Date: Mon, 18 Dec 2023 14:45:32 +0100 Subject: [PATCH 16/19] ARM: MAINTAINERS: drop empty entries for removed boards Drop empty and redundant maintainer entries for boards which were removed to fix `scripts/get_maintainer.pl --self-test=sections` errors like: ./MAINTAINERS:2021: warning: section without file pattern ARM/CIRRUS LOGIC EDB9315A MACHINE SUPPORT [arnd: only remove the obviously stale ones for now] Cc: Lennert Buytenhek Cc: Steve Sakoman Cc: Mark F. Brown Cc: Robert Jarzmik Cc: Florian Fainelli Cc: Simtec Linux Team Signed-off-by: Krzysztof Kozlowski Link: https://lore.kernel.org/r/20231218134532.50599-1-krzysztof.kozlowski@linaro.org Signed-off-by: Arnd Bergmann --- MAINTAINERS | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index a3ad4f9bd2ec..d1793fa3ae0e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2029,11 +2029,6 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Odd Fixes N: clps711x -ARM/CIRRUS LOGIC EDB9315A MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE M: Hartley Sweeten M: Alexander Sverdlin @@ -2853,11 +2848,6 @@ F: arch/arm/boot/dts/synaptics/ F: arch/arm/mach-berlin/ F: arch/arm64/boot/dts/synaptics/ -ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT -M: Lennert Buytenhek -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - ARM/TEGRA HDMI CEC SUBSYSTEM SUPPORT M: Hans Verkuil L: linux-tegra@vger.kernel.org @@ -2874,11 +2864,6 @@ L: linux-samsung-soc@vger.kernel.org S: Maintained F: arch/arm64/boot/dts/tesla/ -ARM/TETON BGA MACHINE SUPPORT -M: "Mark F. Brown" -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Maintained - ARM/TEXAS INSTRUMENT AEMIF/EMIF DRIVERS M: Santosh Shilimkar L: linux-kernel@vger.kernel.org @@ -19847,11 +19832,6 @@ F: Documentation/devicetree/bindings/display/simple-framebuffer.yaml F: drivers/video/fbdev/simplefb.c F: include/linux/platform_data/simplefb.h -SIMTEC EB110ATX (Chalice CATS) -M: Simtec Linux Team -S: Supported -W: http://www.simtec.co.uk/products/EB110ATX/ - SIOX M: Thorsten Scherer M: Uwe Kleine-König From 50d9edd33df50f3ce570818880fe2c6785ca8bf1 Mon Sep 17 00:00:00 2001 From: Martin Kaiser Date: Wed, 3 Jan 2024 12:04:09 +0100 Subject: [PATCH 17/19] ARM: debug: fix DEBUG_UNCOMPRESS help for !MULTIPLATFORM Commit 84fc86360623 ("ARM: make ARCH_MULTIPLATFORM user-visible") modified DEBUG_UNCOMPRESS to prevent using it with multiplatform kernels. Update the help text, remove references to multiplatform. Signed-off-by: Martin Kaiser Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig.debug | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index fc2b41d41447..5fbbac1b708b 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug @@ -1809,15 +1809,8 @@ config DEBUG_UNCOMPRESS (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \ !DEBUG_BRCMSTB_UART && !DEBUG_SEMIHOSTING help - This option influences the normal decompressor output for - multiplatform kernels. Normally, multiplatform kernels disable - decompressor output because it is not possible to know where to - send the decompressor output. - - When this option is set, the selected DEBUG_LL output method - will be re-used for normal decompressor output on multiplatform - kernels. - + Say Y here to enable debug output in the decompressor code, using + the selected DEBUG_LL output method. config UNCOMPRESS_INCLUDE string From 6db359b5eef5de3d5fbf4cb412958186850df106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Duje=20Mihanovi=C4=87?= Date: Sat, 6 Jan 2024 15:11:33 +0100 Subject: [PATCH 18/19] soc: pxa: ssp: fix casts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On ARM64 platforms, id->data is a 64-bit value and casting it to a 32-bit integer causes build errors. Cast it to uintptr_t instead. The id->driver_data cast is unnecessary, so drop it. Signed-off-by: Duje Mihanović Reviewed-by: Uwe Kleine-König Link: https://lore.kernel.org/r/20240106-pxa-ssp-v2-1-69ac9f028bba@skole.hr Signed-off-by: Arnd Bergmann --- drivers/soc/pxa/ssp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/soc/pxa/ssp.c b/drivers/soc/pxa/ssp.c index a1e8a07f7275..7af04e8b8163 100644 --- a/drivers/soc/pxa/ssp.c +++ b/drivers/soc/pxa/ssp.c @@ -152,11 +152,11 @@ static int pxa_ssp_probe(struct platform_device *pdev) if (dev->of_node) { const struct of_device_id *id = of_match_device(of_match_ptr(pxa_ssp_of_ids), dev); - ssp->type = (int) id->data; + ssp->type = (uintptr_t) id->data; } else { const struct platform_device_id *id = platform_get_device_id(pdev); - ssp->type = (int) id->driver_data; + ssp->type = id->driver_data; /* PXA2xx/3xx SSP ports starts from 1 and the internal pdev->id * starts from 0, do a translation here From 40974ee421b4d1fc74ac733d86899ce1b83d8f65 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Mon, 8 Jan 2024 12:00:36 +0100 Subject: [PATCH 19/19] ARM: davinci: always select CONFIG_CPU_ARM926T The select was lost by accident during the multiplatform conversion. Any davinci-only arm-linux-gnueabi-ld: arch/arm/mach-davinci/sleep.o: in function `CACHE_FLUSH': (.text+0x168): undefined reference to `arm926_flush_kern_cache_all' Fixes: f962396ce292 ("ARM: davinci: support multiplatform build for ARM v5") Acked-by: Bartosz Golaszewski Link: https://lore.kernel.org/r/20240108110055.1531153-1-arnd@kernel.org Signed-off-by: Arnd Bergmann --- arch/arm/mach-davinci/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig index 4316e1370627..59de137c6f53 100644 --- a/arch/arm/mach-davinci/Kconfig +++ b/arch/arm/mach-davinci/Kconfig @@ -4,6 +4,7 @@ menuconfig ARCH_DAVINCI bool "TI DaVinci" depends on ARCH_MULTI_V5 depends on CPU_LITTLE_ENDIAN + select CPU_ARM926T select DAVINCI_TIMER select ZONE_DMA select PM_GENERIC_DOMAINS if PM