[PATCH 24/27] ARM: pxa: move over to MULTIARCH
Sascha Hauer
s.hauer at pengutronix.de
Sun Aug 16 10:56:44 PDT 2026
PXA was one of the architectures left in the "ARM system type" choice,
so a build could contain it or another architecture, never both.
Nothing about the SoC support requires that anymore, but its initcalls
did: the restart handler and the poweroff handler were registered
unconditionally and go straight at PXA registers, which on a multiarch
build would run on whatever else is in the image. Guard both with
of_machine_is_compatible() and move the architecture out of the choice.
For that to work the board has to identify as a PXA3xx. The SoC device
tree include says so, but a board that overrides the root compatible has
to keep it in its list.
While at it, drop the separate device_initcall() for
pxa_detect_reset_source(): pxa3xx_init() already calls it, so the reset
source was detected twice.
Assisted-by: Claude Opus 5
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
arch/arm/Kconfig | 16 ++++++++--------
arch/arm/mach-pxa/common.c | 4 ++++
arch/arm/mach-pxa/pxa3xx.c | 6 ++++--
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 106f3d559e..6a4825fe33 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -118,14 +118,6 @@ config ARCH_MXS
select COMMON_CLK
select HAS_DEBUG_LL
-config ARCH_PXA
- bool "Intel/Marvell PXA based"
- depends on 32BIT
- select GPIOLIB
- select HAS_DEBUG_LL
- select OFTREE
- select OFDEVICE
-
config ARCH_SOCFPGA
bool "Altera SOCFPGA"
select HAS_DEBUG_LL
@@ -188,6 +180,14 @@ config ARCH_K3
select COMMON_CLK_OF_PROVIDER
select PM_GENERIC_DOMAINS
+config ARCH_PXA
+ bool "Intel/Marvell PXA based"
+ depends on 32BIT
+ select GPIOLIB
+ select HAS_DEBUG_LL
+ select OFTREE
+ select OFDEVICE
+
config ARCH_SUNXI
bool "Allwinner (sunxi) SoCs"
depends on ARCH_MULTIARCH
diff --git a/arch/arm/mach-pxa/common.c b/arch/arm/mach-pxa/common.c
index 1da1b58054..fea570c5fa 100644
--- a/arch/arm/mach-pxa/common.c
+++ b/arch/arm/mach-pxa/common.c
@@ -13,6 +13,7 @@
*/
#include <common.h>
+#include <of.h>
#include <init.h>
#include <restart.h>
#include <mach/pxa/pxa-regs.h>
@@ -42,6 +43,9 @@ static void __noreturn pxa_restart_soc(struct restart_handler *rst,
static int restart_register_feature(void)
{
+ if (!of_machine_is_compatible("marvell,pxa3xx"))
+ return 0;
+
restart_handler_register_fn("soc-wdt", pxa_restart_soc);
return 0;
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index ea84efc8b0..6edc55481e 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -13,6 +13,7 @@
*/
#include <common.h>
+#include <of.h>
#include <init.h>
#include <poweroff.h>
#include <reset_source.h>
@@ -47,8 +48,6 @@ void pxa_clear_reset_source(void)
ARSR = ARSR_GPR | ARSR_LPMR | ARSR_WDT | ARSR_HWR;
}
-device_initcall(pxa_detect_reset_source);
-
static void __noreturn pxa3xx_poweroff(struct poweroff_handler *handler,
unsigned long flags)
{
@@ -62,6 +61,9 @@ static void __noreturn pxa3xx_poweroff(struct poweroff_handler *handler,
static int pxa3xx_init(void)
{
+ if (!of_machine_is_compatible("marvell,pxa3xx"))
+ return 0;
+
poweroff_handler_register_fn(pxa3xx_poweroff);
pxa_detect_reset_source();
--
2.47.3
More information about the barebox
mailing list