From 1bc75c26524009005eae17293131e0de69039010 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Mon, 12 Jan 2026 14:12:39 +0100 Subject: [PATCH 1/5] arm: at91: move atmel_serial.h to include/dm/platform_data Move the arch specific atmel_serial.h header from AT91 to the generic include/dm/platform_data. This will be used for support on Microchip LAN969x. Signed-off-by: Robert Marko --- board/bluewater/gurnard/gurnard.c | 2 +- board/siemens/corvus/board.c | 2 +- board/siemens/smartweb/smartweb.c | 2 +- board/siemens/taurus/taurus.c | 2 +- drivers/serial/atmel_usart.c | 2 +- .../include/mach => include/dm/platform_data}/atmel_serial.h | 0 6 files changed, 5 insertions(+), 5 deletions(-) rename {arch/arm/mach-at91/include/mach => include/dm/platform_data}/atmel_serial.h (100%) diff --git a/board/bluewater/gurnard/gurnard.c b/board/bluewater/gurnard/gurnard.c index 3275803226a..71db6409721 100644 --- a/board/bluewater/gurnard/gurnard.c +++ b/board/bluewater/gurnard/gurnard.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/siemens/corvus/board.c b/board/siemens/corvus/board.c index 4c83774fceb..c0a94ac904f 100644 --- a/board/siemens/corvus/board.c +++ b/board/siemens/corvus/board.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/siemens/smartweb/smartweb.c b/board/siemens/smartweb/smartweb.c index 6fa3ca573ae..ce16aad3b98 100644 --- a/board/siemens/smartweb/smartweb.c +++ b/board/siemens/smartweb/smartweb.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/siemens/taurus/taurus.c b/board/siemens/taurus/taurus.c index 252b0787124..690c00046fa 100644 --- a/board/siemens/taurus/taurus.c +++ b/board/siemens/taurus/taurus.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c index 0b35582aaa4..d6c3d4cbcc8 100644 --- a/drivers/serial/atmel_usart.c +++ b/drivers/serial/atmel_usart.c @@ -18,7 +18,7 @@ #include #if CONFIG_IS_ENABLED(DM_SERIAL) -#include +#include #endif #include #include diff --git a/arch/arm/mach-at91/include/mach/atmel_serial.h b/include/dm/platform_data/atmel_serial.h similarity index 100% rename from arch/arm/mach-at91/include/mach/atmel_serial.h rename to include/dm/platform_data/atmel_serial.h From 757a7cbb3e31feaca7c3b52f902b0e1e0f5d2e1a Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Mon, 12 Jan 2026 14:12:40 +0100 Subject: [PATCH 2/5] dm: platform_data: atmel_serial: fix build warning on 64-bit platforms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pointer size cannot be assumed to be 32-bit, so use uintptr_t instead of uint32_t. Fixes the below build warning on 64-bit builds: drivers/serial/atmel_usart.c: In function ‘atmel_serial_probe’: drivers/serial/atmel_usart.c:275:23: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] 275 | priv->usart = (atmel_usart3_t *)plat->base_addr; Signed-off-by: Robert Marko --- include/dm/platform_data/atmel_serial.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/dm/platform_data/atmel_serial.h b/include/dm/platform_data/atmel_serial.h index 5d142693640..96da6f50287 100644 --- a/include/dm/platform_data/atmel_serial.h +++ b/include/dm/platform_data/atmel_serial.h @@ -8,7 +8,7 @@ /* Information about a serial port */ struct atmel_serial_plat { - uint32_t base_addr; + uintptr_t base_addr; }; #endif From a155dbc9f2bb2f060531ec7f9565cde0e6d92b25 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Mon, 12 Jan 2026 14:12:41 +0100 Subject: [PATCH 3/5] serial: atmel-usart: include arch specific headers only for AT91 Microchip LAN969x will not include any arch specific clk.h nor hardware.h, so in order to support it only include and when AT91 is selected. Signed-off-by: Robert Marko --- drivers/serial/atmel_usart.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c index d6c3d4cbcc8..fb1c76fea8d 100644 --- a/drivers/serial/atmel_usart.c +++ b/drivers/serial/atmel_usart.c @@ -20,8 +20,10 @@ #if CONFIG_IS_ENABLED(DM_SERIAL) #include #endif +#if IS_ENABLED(CONFIG_ARCH_AT91) #include #include +#endif #include "atmel_usart.h" From 52be03bdf713807fea7f362c1b9cffe9ead34c18 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Mon, 12 Jan 2026 14:12:42 +0100 Subject: [PATCH 4/5] serial: atmel-usart: add support for skiping debug UART init Currently, atmel-usart does not respect CONFIG_DEBUG_UART_SKIP_INIT so it will always configure the debug UART. However, this is unwanted on platforms on which TF-A or some other firmware has already configured the debug UART. This will be used for Microchip LAN969x support, so simply return early if CONFIG_DEBUG_UART_SKIP_INIT is set. Signed-off-by: Robert Marko --- drivers/serial/atmel_usart.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c index fb1c76fea8d..e1db4dfe00d 100644 --- a/drivers/serial/atmel_usart.c +++ b/drivers/serial/atmel_usart.c @@ -318,6 +318,9 @@ static inline void _debug_uart_init(void) { atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_VAL(DEBUG_UART_BASE); + if (IS_ENABLED(CONFIG_DEBUG_UART_SKIP_INIT)) + return; + _atmel_serial_init(usart, CONFIG_DEBUG_UART_CLOCK, CONFIG_BAUDRATE); } From 1690228bac43cf5bb0dd4473abe68cca8400f23c Mon Sep 17 00:00:00 2001 From: Andy Yan Date: Fri, 30 Jan 2026 10:17:37 +0800 Subject: [PATCH 5/5] mtd: nand: raw: atmel: Access device ofnode through functions According to commit 84a42ae36683 ("dm: core: Rename device node to indicate it is private") node_ should not be aaccess outside driver model. Signed-off-by: Andy Yan --- drivers/mtd/nand/raw/atmel/nand-controller.c | 18 +++++++++--------- drivers/mtd/nand/raw/atmel/pmecc.c | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/mtd/nand/raw/atmel/nand-controller.c b/drivers/mtd/nand/raw/atmel/nand-controller.c index c90a4eab8df..d6e940d4a90 100644 --- a/drivers/mtd/nand/raw/atmel/nand-controller.c +++ b/drivers/mtd/nand/raw/atmel/nand-controller.c @@ -1010,10 +1010,10 @@ static int atmel_nand_pmecc_init(struct nand_chip *chip) if (nc->caps->legacy_of_bindings) { u32 val; - if (!ofnode_read_u32(nc->dev->node_, "atmel,pmecc-cap", &val)) + if (!ofnode_read_u32(dev_ofnode(nc->dev), "atmel,pmecc-cap", &val)) chip->ecc.strength = val; - if (!ofnode_read_u32(nc->dev->node_, + if (!ofnode_read_u32(dev_ofnode(nc->dev), "atmel,pmecc-sector-size", &val)) chip->ecc.size = val; @@ -1671,7 +1671,7 @@ static int atmel_nand_controller_add_nands(struct atmel_nand_controller *nc) * Add support for legacy nands */ - np = nc->dev->node_; + np = dev_ofnode(nc->dev); ret = ofnode_read_u32(np, "#address-cells", &val); if (ret) { @@ -1791,7 +1791,7 @@ static int atmel_nand_attach_chip(struct nand_chip *chip) if (ret) return ret; - if (nc->caps->legacy_of_bindings || !ofnode_valid(nc->dev->node_)) { + if (nc->caps->legacy_of_bindings || !ofnode_valid(dev_ofnode(nc->dev))) { /* * We keep the MTD name unchanged to avoid breaking platforms * where the MTD cmdline parser is used and the bootloader @@ -1855,7 +1855,7 @@ atmel_nand_controller_init(struct atmel_nand_controller *nc, return PTR_ERR(nc->mck); } - ret = ofnode_parse_phandle_with_args(dev->parent->node_, + ret = ofnode_parse_phandle_with_args(dev_ofnode(dev->parent), "atmel,smc", NULL, 0, 0, &args); if (ret) { dev_err(dev, "Missing or invalid atmel,smc property\n"); @@ -1887,7 +1887,7 @@ atmel_smc_nand_controller_init(struct atmel_smc_nand_controller *nc) if (nc->base.caps->legacy_of_bindings) return 0; - ret = ofnode_parse_phandle_with_args(dev->parent->node_, + ret = ofnode_parse_phandle_with_args(dev_ofnode(dev->parent), nc->base.caps->ebi_csa_regmap_name, NULL, 0, 0, &args); if (ret) { @@ -1933,7 +1933,7 @@ static int atmel_hsmc_nand_controller_init(struct atmel_hsmc_nand_controller *nc int ret; u32 addr; - ret = ofnode_parse_phandle_with_args(dev->parent->node_, + ret = ofnode_parse_phandle_with_args(dev_ofnode(dev->parent), "atmel,smc", NULL, 0, 0, &args); if (ret) { dev_err(dev, "Missing or invalid atmel,smc property\n"); @@ -1957,7 +1957,7 @@ static int atmel_hsmc_nand_controller_init(struct atmel_hsmc_nand_controller *nc if (ret) return ret; - ret = ofnode_parse_phandle_with_args(dev->node_, + ret = ofnode_parse_phandle_with_args(dev_ofnode(dev), "atmel,nfc-io", NULL, 0, 0, &args); if (ret) { dev_err(dev, "Missing or invalid atmel,nfc-io property\n"); @@ -1971,7 +1971,7 @@ static int atmel_hsmc_nand_controller_init(struct atmel_hsmc_nand_controller *nc return ret; } - ret = ofnode_parse_phandle_with_args(dev->node_, + ret = ofnode_parse_phandle_with_args(dev_ofnode(dev), "atmel,nfc-sram", NULL, 0, 0, &args); if (ret) { dev_err(dev, "Missing or invalid atmel,nfc-sram property\n"); diff --git a/drivers/mtd/nand/raw/atmel/pmecc.c b/drivers/mtd/nand/raw/atmel/pmecc.c index 1acaa5d0e07..e25d782aa30 100644 --- a/drivers/mtd/nand/raw/atmel/pmecc.c +++ b/drivers/mtd/nand/raw/atmel/pmecc.c @@ -833,9 +833,9 @@ atmel_pmecc_create(struct udevice *dev, pmecc->dev = dev; mutex_init(&pmecc->lock); - ofnode_read_resource(dev->node_, 0, &res); + ofnode_read_resource(dev_ofnode(dev), 0, &res); pmecc->regs.base = (void *)res.start; - ofnode_read_resource(dev->node_, 1, &res); + ofnode_read_resource(dev_ofnode(dev), 1, &res); pmecc->regs.errloc = (void *)res.start; /* pmecc data setup time */ @@ -913,7 +913,7 @@ struct atmel_pmecc *devm_atmel_pmecc_get(struct udevice *userdev) if (!userdev) return ERR_PTR(-EINVAL); - ret = ofnode_parse_phandle_with_args(userdev->node_, + ret = ofnode_parse_phandle_with_args(dev_ofnode(userdev), "ecc-engine", NULL, 0, 0, &args); /* Probe pmecc driver */