ARM: nxp: lpc32xx: ARM changes for v7.3

NXP LPC32xx ARM changes for v7.3 contain:
 
 - Karl Mehltretter fixes a multiplatform kernel runtime execution by
   limiting LPC32xx SoC specific init functions to be run on this
   platform only,
 - a stale method of populating DMA, SLC and MLC NAND controllers is
   removed from platform code, this change was announced to happen by
   the end of this year, all touched by the change controllers are
   properly described in the platform device tree for years, and very
   old board dtbs are recommended to be updated.
 -----BEGIN PGP SIGNATURE-----
 
 iQJBBAABCgArFiEETKMJMWSwX7CFTVIOqj3i2jwlOWUFAmpj0sYNHHZ6QG1sZWlh
 LmNvbQAKCRCqPeLaPCU5Zf+cD/9xrU205ChyR4mSCTlUCxLcQI8kripeF96Zx7Q7
 Xo+dKlTjzTQYW8omBWlYSvOVY4rZVMB1NzwVPmPHIkBm13xdV0ybMVWmenOY7UD0
 cG4yDcgkQETsH4XJnPLCDFZHDG8HS+eiYCr7Mb2sAmNWcb2iGdoW7y5GxHtiZsJL
 IgydEqu/dOZCVkgnjlr2rS3EjbKpqyI6zPQ2TPAAzWch93Yczwk1NIYKM32ws6u1
 MQ6Mf7hHggDiV85G/hch7k+z6F4LC6UlOxBNEtUmziJ8kjNGq5IMu42jNLMsDlS4
 IGstOpckU0rr8BwuJG+5BNc+xK4EYaPac4uj1RRr1Nqwd/KzSKXjeNfdrds9XRdm
 U6DPFO8q6vADvOdn5SlFaiYKi/vvnUDq2rsl5DjP6cnRLkDzhdIlufWz4n6/zY42
 cmEwNstH1+fiGDeQcrWiG1pI6allKFAfbsBhgd7rXGlmOGeta1MqSyf326E1y/TP
 sqiR9yWDI/rgceOJ4pPsZM7rXmh6kGa+NiYY1paHMR/N0RDKXeh+yeNyPC8RHgfs
 tcFZ/KcRrsKd3huMbCHBQqGgpvKEM3Gh616keb1zZryO2XoSVAPXSy53NXtP7//V
 qx89yYz2gqEl8C8bR+KooFWpK6bhmZpu9cPljA/Pnr0nzZrWEMlp9TueQCp7tAPX
 TFoXag==
 =n2BM
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmpnCA0ACgkQmmx57+YA
 GNn6dw//YKJr1HFeXzPnQHCjULX/oEd20WVFdX/YAHfgz3sBpnGyrMOPsFn0kmHp
 HGKtztBkNOo0oq+IoMoWnpfoIFsYHpW4JB3wFYh0PUZ7tAi5eBTHcTTBJMCIta1a
 huBj4tF5xU5ORv90qRT2cNWTxHYbw4sKxjhuT7RihUC5m2MzelWBY52dCmsSdSTq
 i/wC6m7h7U4eQa81FQK7Q63YvGpBYAuJdfGJKNrtt3BefG5Og3ks3otiOkMcA8hm
 bbY1l+dijHLe3oMD8w1pdu3mejvA+AhI8V1PBTsGKfAB/axsNSY5S/pSLRtowU6B
 ZLoz47tQgqQamkxX/qdFy0PjlC8Juq/IHG/Kb1nyyD4GRVL27Ya8F9IAUt93PIdc
 9V5vQyE4hmcY2oqxpGyK2YZoLRLBlGhjkMTV2qT4F6ejCgpt+J4l62ITwv0RPvNf
 cJrTR3UuZd5BlxIGLx2bCxTISCuzZQy9czHTfhI3SX3o4ywgyxxW4uO6W/E5rzH2
 IBhq7g5II+WXoyEQ8XWRskFbOSzZIWCxTp2inDKumzKCYxqwXD/a4JyjvNjZv/T0
 tnKbtogO0CTvF0gJZhw6JbpdNUlQrwDRnTJOG3P5Do1iHazbdoh4ybzGi0L1y+SL
 GQym1LIpA6ClYz7X13X+tTTDzupdCHgSwkJYMFvSZ2xB/ttIf6U=
 =CrQ8
 -----END PGP SIGNATURE-----

Merge tag 'lpc32xx-arm-for-7.3' of https://github.com/vzapolskiy/linux-lpc32xx into soc/arm

ARM: nxp: lpc32xx: ARM changes for v7.3

NXP LPC32xx ARM changes for v7.3 contain:

- Karl Mehltretter fixes a multiplatform kernel runtime execution by
  limiting LPC32xx SoC specific init functions to be run on this
  platform only,
- a stale method of populating DMA, SLC and MLC NAND controllers is
  removed from platform code, this change was announced to happen by
  the end of this year, all touched by the change controllers are
  properly described in the platform device tree for years, and very
  old board dtbs are recommended to be updated.

* tag 'lpc32xx-arm-for-7.3' of https://github.com/vzapolskiy/linux-lpc32xx:
  ARM: lpc32xx: remove a few manually populated OF devices
  ARM: lpc32xx: only run SoC init on LPC32xx hardware

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2026-07-27 09:25:50 +02:00
commit 77d0531ac4
4 changed files with 6 additions and 68 deletions

View File

@ -106,7 +106,7 @@ void __init lpc32xx_map_io(void)
iotable_init(lpc32xx_io_desc, ARRAY_SIZE(lpc32xx_io_desc));
}
static int __init lpc32xx_check_uid(void)
void __init lpc32xx_check_uid(void)
{
u32 uid[4];
@ -119,7 +119,4 @@ static int __init lpc32xx_check_uid(void)
system_serial_low = uid[0];
system_serial_high = uid[1];
}
return 1;
}
arch_initcall(lpc32xx_check_uid);

View File

@ -16,6 +16,8 @@
* Other arch specific structures and functions
*/
extern void __init lpc32xx_map_io(void);
extern void __init lpc32xx_check_uid(void);
extern void __init lpc32xx_pm_init(void);
extern void __init lpc32xx_serial_init(void);
/*

View File

@ -8,72 +8,14 @@
* Copyright (C) 2010 NXP Semiconductors
*/
#include <linux/amba/pl08x.h>
#include <linux/mtd/lpc32xx_mlc.h>
#include <linux/mtd/lpc32xx_slc.h>
#include <linux/of_platform.h>
#include <asm/mach/arch.h>
#include "common.h"
static struct pl08x_channel_data pl08x_slave_channels[] = {
{
.bus_id = "nand-slc",
.min_signal = 1, /* SLC NAND Flash */
.max_signal = 1,
.periph_buses = PL08X_AHB1,
},
{
.bus_id = "nand-mlc",
.min_signal = 12, /* MLC NAND Flash */
.max_signal = 12,
.periph_buses = PL08X_AHB1,
},
};
static int pl08x_get_signal(const struct pl08x_channel_data *cd)
{
return cd->min_signal;
}
static void pl08x_put_signal(const struct pl08x_channel_data *cd, int ch)
{
}
static struct pl08x_platform_data pl08x_pd = {
/* Some reasonable memcpy defaults */
.memcpy_burst_size = PL08X_BURST_SZ_256,
.memcpy_bus_width = PL08X_BUS_WIDTH_32_BITS,
.slave_channels = &pl08x_slave_channels[0],
.num_slave_channels = ARRAY_SIZE(pl08x_slave_channels),
.get_xfer_signal = pl08x_get_signal,
.put_xfer_signal = pl08x_put_signal,
.lli_buses = PL08X_AHB1,
.mem_buses = PL08X_AHB1,
};
static struct lpc32xx_slc_platform_data lpc32xx_slc_data = {
.dma_filter = pl08x_filter_id,
};
static struct lpc32xx_mlc_platform_data lpc32xx_mlc_data = {
.dma_filter = pl08x_filter_id,
};
static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("arm,pl080", 0x31000000, "pl08xdmac", &pl08x_pd),
OF_DEV_AUXDATA("nxp,lpc3220-slc", 0x20020000, "20020000.flash",
&lpc32xx_slc_data),
OF_DEV_AUXDATA("nxp,lpc3220-mlc", 0x200a8000, "200a8000.flash",
&lpc32xx_mlc_data),
{ }
};
static void __init lpc3250_machine_init(void)
{
lpc32xx_check_uid();
lpc32xx_pm_init();
lpc32xx_serial_init();
of_platform_default_populate(NULL, lpc32xx_auxdata_lookup, NULL);
}
static const char *const lpc32xx_dt_compat[] __initconst = {

View File

@ -120,7 +120,7 @@ static const struct platform_suspend_ops lpc32xx_pm_ops = {
#define EMC_DYN_MEM_CTRL_OFS 0x20
#define EMC_SRMMC (1 << 3)
#define EMC_CTRL_REG io_p2v(LPC32XX_EMC_BASE + EMC_DYN_MEM_CTRL_OFS)
static int __init lpc32xx_pm_init(void)
void __init lpc32xx_pm_init(void)
{
/*
* Setup SDRAM self-refresh clock to automatically disable o
@ -129,7 +129,4 @@ static int __init lpc32xx_pm_init(void)
__raw_writel(__raw_readl(EMC_CTRL_REG) | EMC_SRMMC, EMC_CTRL_REG);
suspend_set_ops(&lpc32xx_pm_ops);
return 0;
}
arch_initcall(lpc32xx_pm_init);