The following changes since commit f8f9c1f4d0c7a64600e2ca312dec824a0bc2f1da:
Linux 6.19-rc3 (2025-12-28 13:24:26 -0800)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-arm-7.0
for you to fetch changes up to 16868b35b915a8a0fc810cd14b3b4927a5fb2213:
Merge tag 'omap-for-v6.20/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/arm (2026-01-29 10:06:55 +0100)
----------------------------------------------------------------
soc: arm platform code changes for 7.0
These are mainly code cleanups, dropping some unneeded code,
plus a reference counting leak fix.
----------------------------------------------------------------
Arnd Bergmann (2):
Merge tag 'at91-soc-6.20' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/arm
Merge tag 'omap-for-v6.20/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/arm
Randy Dunlap (1):
ARM: omap1: drop unused Kconfig symbol
Rob Herring (Arm) (2):
ARM: at91: Move PM init functions to .init_late hook
ARM: at91: remove unnecessary of_platform_default_populate calls
Wentao Liang (1):
ARM: omap2: Fix reference count leaks in omap_control_init()
arch/arm/mach-at91/at91rm9200.c | 12 +-----------
arch/arm/mach-at91/at91sam9.c | 12 +-----------
arch/arm/mach-at91/sam9x60.c | 12 +-----------
arch/arm/mach-at91/sam9x7.c | 12 +-----------
arch/arm/mach-at91/sama5.c | 21 +++------------------
arch/arm/mach-at91/sama7.c | 11 +----------
arch/arm/mach-omap1/Kconfig | 1 -
arch/arm/mach-omap2/control.c | 14 ++++++++++----
8 files changed, 18 insertions(+), 77 deletions(-)
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c
index 4f8186211619..d15997fff5d7 100644
--- a/arch/arm/mach-at91/at91rm9200.c
+++ b/arch/arm/mach-at91/at91rm9200.c
@@ -7,26 +7,16 @@
* 2012 Joachim Eastwood <manabian@gmail.com>
*/
-#include <linux/of.h>
-#include <linux/of_platform.h>
-
#include <asm/mach/arch.h>
#include "generic.h"
-static void __init at91rm9200_dt_device_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
-
- at91rm9200_pm_init();
-}
-
static const char *const at91rm9200_dt_board_compat[] __initconst = {
"atmel,at91rm9200",
NULL
};
DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200")
- .init_machine = at91rm9200_dt_device_init,
+ .init_late = at91rm9200_pm_init,
.dt_compat = at91rm9200_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-at91/at91sam9.c b/arch/arm/mach-at91/at91sam9.c
index 7e572189a5eb..b9d2909d1b65 100644
--- a/arch/arm/mach-at91/at91sam9.c
+++ b/arch/arm/mach-at91/at91sam9.c
@@ -6,21 +6,11 @@
* 2011 Nicolas Ferre <nicolas.ferre@atmel.com>
*/
-#include <linux/of.h>
-#include <linux/of_platform.h>
-
#include <asm/mach/arch.h>
#include <asm/system_misc.h>
#include "generic.h"
-static void __init at91sam9_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
-
- at91sam9_pm_init();
-}
-
static const char *const at91_dt_board_compat[] __initconst = {
"atmel,at91sam9",
NULL
@@ -28,6 +18,6 @@ static const char *const at91_dt_board_compat[] __initconst = {
DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM9")
/* Maintainer: Atmel */
- .init_machine = at91sam9_init,
+ .init_late = at91sam9_pm_init,
.dt_compat = at91_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-at91/sam9x60.c b/arch/arm/mach-at91/sam9x60.c
index d8c739d25458..744bab2cbb92 100644
--- a/arch/arm/mach-at91/sam9x60.c
+++ b/arch/arm/mach-at91/sam9x60.c
@@ -7,21 +7,11 @@
* Author: Claudiu Beznea <claudiu.beznea@microchip.com>
*/
-#include <linux/of.h>
-#include <linux/of_platform.h>
-
#include <asm/mach/arch.h>
#include <asm/system_misc.h>
#include "generic.h"
-static void __init sam9x60_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
-
- sam9x60_pm_init();
-}
-
static const char *const sam9x60_dt_board_compat[] __initconst = {
"microchip,sam9x60",
NULL
@@ -29,6 +19,6 @@ static const char *const sam9x60_dt_board_compat[] __initconst = {
DT_MACHINE_START(sam9x60_dt, "Microchip SAM9X60")
/* Maintainer: Microchip */
- .init_machine = sam9x60_init,
+ .init_late = sam9x60_pm_init,
.dt_compat = sam9x60_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-at91/sam9x7.c b/arch/arm/mach-at91/sam9x7.c
index e1ff30b5b09b..166c8625509d 100644
--- a/arch/arm/mach-at91/sam9x7.c
+++ b/arch/arm/mach-at91/sam9x7.c
@@ -7,20 +7,10 @@
* Author: Varshini Rajendran <varshini.rajendran@microchip.com>
*/
-#include <linux/of.h>
-#include <linux/of_platform.h>
-
#include <asm/mach/arch.h>
#include "generic.h"
-static void __init sam9x7_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
-
- sam9x7_pm_init();
-}
-
static const char * const sam9x7_dt_board_compat[] __initconst = {
"microchip,sam9x7",
NULL
@@ -28,6 +18,6 @@ static const char * const sam9x7_dt_board_compat[] __initconst = {
DT_MACHINE_START(sam9x7_dt, "Microchip SAM9X7")
/* Maintainer: Microchip */
- .init_machine = sam9x7_init,
+ .init_late = sam9x7_pm_init,
.dt_compat = sam9x7_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-at91/sama5.c b/arch/arm/mach-at91/sama5.c
index bf2b5c6a18c6..e56022f00800 100644
--- a/arch/arm/mach-at91/sama5.c
+++ b/arch/arm/mach-at91/sama5.c
@@ -6,9 +6,6 @@
* 2013 Ludovic Desroches <ludovic.desroches@atmel.com>
*/
-#include <linux/of.h>
-#include <linux/of_platform.h>
-
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -30,12 +27,6 @@ static void __init sama5_secure_cache_init(void)
outer_cache.write_sec = sama5_l2c310_write_sec;
}
-static void __init sama5_dt_device_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
- sama5_pm_init();
-}
-
static const char *const sama5_dt_board_compat[] __initconst = {
"atmel,sama5",
NULL
@@ -43,7 +34,7 @@ static const char *const sama5_dt_board_compat[] __initconst = {
DT_MACHINE_START(sama5_dt, "Atmel SAMA5")
/* Maintainer: Atmel */
- .init_machine = sama5_dt_device_init,
+ .init_late = sama5_pm_init,
.dt_compat = sama5_dt_board_compat,
MACHINE_END
@@ -54,17 +45,11 @@ static const char *const sama5_alt_dt_board_compat[] __initconst = {
DT_MACHINE_START(sama5_alt_dt, "Atmel SAMA5")
/* Maintainer: Atmel */
- .init_machine = sama5_dt_device_init,
+ .init_late = sama5_pm_init,
.dt_compat = sama5_alt_dt_board_compat,
.l2c_aux_mask = ~0UL,
MACHINE_END
-static void __init sama5d2_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
- sama5d2_pm_init();
-}
-
static const char *const sama5d2_compat[] __initconst = {
"atmel,sama5d2",
NULL
@@ -72,8 +57,8 @@ static const char *const sama5d2_compat[] __initconst = {
DT_MACHINE_START(sama5d2, "Atmel SAMA5")
/* Maintainer: Atmel */
- .init_machine = sama5d2_init,
.init_early = sama5_secure_cache_init,
+ .init_late = sama5d2_pm_init,
.dt_compat = sama5d2_compat,
.l2c_aux_mask = ~0UL,
MACHINE_END
diff --git a/arch/arm/mach-at91/sama7.c b/arch/arm/mach-at91/sama7.c
index bd43733ede18..f56828d61199 100644
--- a/arch/arm/mach-at91/sama7.c
+++ b/arch/arm/mach-at91/sama7.c
@@ -6,20 +6,11 @@
*
*/
-#include <linux/of.h>
-#include <linux/of_platform.h>
-
#include <asm/mach/arch.h>
#include <asm/system_misc.h>
#include "generic.h"
-static void __init sama7_dt_device_init(void)
-{
- of_platform_default_populate(NULL, NULL, NULL);
- sama7_pm_init();
-}
-
static const char *const sama7_dt_board_compat[] __initconst = {
"microchip,sama7",
NULL
@@ -27,7 +18,7 @@ static const char *const sama7_dt_board_compat[] __initconst = {
DT_MACHINE_START(sama7_dt, "Microchip SAMA7")
/* Maintainer: Microchip */
- .init_machine = sama7_dt_device_init,
+ .init_late = sama7_pm_init,
.dt_compat = sama7_dt_board_compat,
MACHINE_END
diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig
index 08ec6bd84ada..b114f7ca2173 100644
--- a/arch/arm/mach-omap1/Kconfig
+++ b/arch/arm/mach-omap1/Kconfig
@@ -4,7 +4,6 @@ menuconfig ARCH_OMAP1
depends on ARCH_MULTI_V4T || ARCH_MULTI_V5
depends on CPU_LITTLE_ENDIAN
depends on ATAGS
- select ARCH_HAS_HOLES_MEMORYMODEL
select ARCH_OMAP
select CLKSRC_MMIO
select FORCE_PCI if PCCARD
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c
index 79860b23030d..eb6fc7c61b6e 100644
--- a/arch/arm/mach-omap2/control.c
+++ b/arch/arm/mach-omap2/control.c
@@ -732,7 +732,7 @@ int __init omap2_control_base_init(void)
*/
int __init omap_control_init(void)
{
- struct device_node *np, *scm_conf;
+ struct device_node *np, *scm_conf, *clocks_node;
const struct of_device_id *match;
const struct omap_prcm_init_data *data;
int ret;
@@ -753,16 +753,19 @@ int __init omap_control_init(void)
if (IS_ERR(syscon)) {
ret = PTR_ERR(syscon);
- goto of_node_put;
+ goto err_put_scm_conf;
}
- if (of_get_child_by_name(scm_conf, "clocks")) {
+ clocks_node = of_get_child_by_name(scm_conf, "clocks");
+ if (clocks_node) {
+ of_node_put(clocks_node);
ret = omap2_clk_provider_init(scm_conf,
data->index,
syscon, NULL);
if (ret)
- goto of_node_put;
+ goto err_put_scm_conf;
}
+ of_node_put(scm_conf);
} else {
/* No scm_conf found, direct access */
ret = omap2_clk_provider_init(np, data->index, NULL,
@@ -780,6 +783,9 @@ int __init omap_control_init(void)
return 0;
+err_put_scm_conf:
+ if (scm_conf)
+ of_node_put(scm_conf);
of_node_put:
of_node_put(np);
return ret;
© 2016 - 2026 Red Hat, Inc.