Introduce mach-synaptics to support SL2619 SoC-based boards. This adds
the platform Kconfig and build infrastructure, along with initial
SL2619 RDK board support and defconfig

Introduce SYNAPTICS_SL2619, which selects ARM64, along with ARCH_SYNAPTICS
which selects driver model, SYS_NS16550 and GIC-v2.

Signed-off-by: Richard Genoud (Synaptics) <[email protected]>
---
 MAINTAINERS                                      |  11 ++
 arch/arm/Kconfig                                 |  12 ++
 arch/arm/Makefile                                |   1 +
 arch/arm/dts/sl2619-rdk-u-boot.dtsi              |   5 +
 arch/arm/mach-synaptics/Kconfig                  |  36 +++++
 arch/arm/mach-synaptics/Makefile                 |   5 +
 arch/arm/mach-synaptics/cpu.c                    |  45 ++++++
 board/synaptics/sl2619/Kconfig                   |   9 ++
 board/synaptics/sl2619/Makefile                  |   5 +
 board/synaptics/sl2619/sl2619.c                  |  73 ++++++++++
 configs/synaptics_sl2619_defconfig               |  54 +++++++
 doc/board/index.rst                              |   1 +
 doc/board/synaptics/img/sl2610_boot_sequence.svg | 178 +++++++++++++++++++++++
 doc/board/synaptics/index.rst                    |   9 ++
 doc/board/synaptics/sl2619.rst                   | 100 +++++++++++++
 include/configs/synaptics_sl2619.h               |  14 ++
 16 files changed, 558 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 55c394536caa..2558aee73d44 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -714,6 +714,17 @@ F: drivers/pinctrl/sunxi/
 F:     drivers/video/sunxi/
 F:     tools/sunxi*
 
+ARM SYNAPTICS
+M:     Richard Genoud <[email protected]>
+M:     Terry Zhou <[email protected]>
+S:     Maintained
+F:     arch/arm/dts/sl2619-rdk-u-boot.dtsi
+F:     arch/arm/mach-synaptics/
+F:     board/synaptics/
+F:     configs/synaptics_*
+F:     doc/board/synaptics/
+F:     include/configs/synaptics_*.h
+
 ARM TEGRA
 M:     Thierry Reding <[email protected]>
 M:     Svyatoslav Ryhel <[email protected]>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1b474a346bf2..8da162f920ff 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1261,6 +1261,16 @@ config ARCH_SUNXI
        imply USB_GADGET
        imply WDT
 
+config ARCH_SYNAPTICS
+       bool "Support Synaptics SoCs"
+       select DM
+       select GICV2
+       select SYNAPTICS_SL2619
+       select SYS_NS16550
+       help
+         Support for Synaptics SoCs such as the Astra SL2610 product
+         line.
+
 config ARCH_U8500
        bool "ST-Ericsson U8500 Series"
        select CPU_V7A
@@ -2393,6 +2403,8 @@ source "arch/arm/mach-stm32mp/Kconfig"
 
 source "arch/arm/mach-sunxi/Kconfig"
 
+source "arch/arm/mach-synaptics/Kconfig"
+
 source "arch/arm/mach-tegra/Kconfig"
 
 source "arch/arm/mach-u8500/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index de975fc93686..ba7d3d7cee18 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -87,6 +87,7 @@ machine-$(CONFIG_ARCH_SOCFPGA)                += socfpga
 machine-$(CONFIG_ARCH_STM32)           += stm32
 machine-$(CONFIG_ARCH_STM32MP)         += stm32mp
 machine-$(CONFIG_ARCH_SUNXI)           += sunxi
+machine-$(CONFIG_ARCH_SYNAPTICS)       += synaptics
 machine-$(CONFIG_ARCH_TEGRA)           += tegra
 machine-$(CONFIG_ARCH_U8500)           += u8500
 machine-$(CONFIG_ARCH_OCTEONTX)                += octeontx
diff --git a/arch/arm/dts/sl2619-rdk-u-boot.dtsi 
b/arch/arm/dts/sl2619-rdk-u-boot.dtsi
new file mode 100644
index 000000000000..a886ed7355ff
--- /dev/null
+++ b/arch/arm/dts/sl2619-rdk-u-boot.dtsi
@@ -0,0 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+&sm_uart0 {
+       clock-frequency = <25000000>;
+};
diff --git a/arch/arm/mach-synaptics/Kconfig b/arch/arm/mach-synaptics/Kconfig
new file mode 100644
index 000000000000..33282060a8e0
--- /dev/null
+++ b/arch/arm/mach-synaptics/Kconfig
@@ -0,0 +1,36 @@
+if ARCH_SYNAPTICS
+
+config SYS_SOC
+       default "synaptics"
+
+config SYS_VENDOR
+       default "synaptics"
+
+config SYNAPTICS_SL2619
+       bool "Synaptics SL2619 SoC"
+       select ARM64
+       help
+         The Synaptics SL2619 is a ARM64-based SoC with a dual-core Cortex-A55.
+         including UART, SPI, USB2.0 and OTG, EMMC, etc.
+
+config SYNAPTICS_REGMEM_MAP_BASE
+       hex
+       default 0xe0000000 if SYNAPTICS_SL2619
+
+config SYNAPTICS_REGMEM_MAP_SIZE
+       hex
+       default 0x20000000 if SYNAPTICS_SL2619
+
+if SYNAPTICS_SL2619
+
+config TARGET_SL2619
+       bool "Support Synaptics SL2619 RDK board"
+       help
+         Support for the Synaptics Astra Machina SL2619 RDK board based on the
+         Synaptics SL2619 SoC.
+
+source "board/synaptics/sl2619/Kconfig"
+
+endif
+
+endif
diff --git a/arch/arm/mach-synaptics/Makefile b/arch/arm/mach-synaptics/Makefile
new file mode 100644
index 000000000000..5fc4b23719f7
--- /dev/null
+++ b/arch/arm/mach-synaptics/Makefile
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright 2026 Synaptics Incorporated
+
+obj-y += cpu.o
diff --git a/arch/arm/mach-synaptics/cpu.c b/arch/arm/mach-synaptics/cpu.c
new file mode 100644
index 000000000000..2f890f6f7d5d
--- /dev/null
+++ b/arch/arm/mach-synaptics/cpu.c
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2026 Synaptics Incorporated
+ */
+
+#include <asm/armv8/mmu.h>
+#include <fdtdec.h>
+
+#define SYNAPTICS_MEM_MAP_LEN ((CONFIG_NR_DRAM_BANKS) + 2)
+/*
+ * Force synaptics_mem_map initialization since this code runs
+ * before BSS is cleared.
+ * The last entry is the sentinel
+ */
+__section(".data") static struct mm_region 
synaptics_mem_map[SYNAPTICS_MEM_MAP_LEN] = { 0 };
+struct mm_region *mem_map = synaptics_mem_map;
+
+int dram_init(void)
+{
+       return fdtdec_setup_mem_size_base();
+}
+
+int dram_init_banksize(void)
+{
+       struct mm_region *reg_mem = mem_map + CONFIG_NR_DRAM_BANKS;
+       int ret;
+
+       ret = fdtdec_setup_memory_banksize();
+       if (ret)
+               return ret;
+
+       ret = mem_map_from_dram_banks(0, SYNAPTICS_MEM_MAP_LEN,
+                                     PTE_BLOCK_MEMTYPE(MT_NORMAL) |
+                                            PTE_BLOCK_INNER_SHARE);
+       if (ret)
+               return ret;
+
+       reg_mem->virt = CONFIG_SYNAPTICS_REGMEM_MAP_BASE;
+       reg_mem->phys = CONFIG_SYNAPTICS_REGMEM_MAP_BASE;
+       reg_mem->size = CONFIG_SYNAPTICS_REGMEM_MAP_SIZE;
+       reg_mem->attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+               PTE_BLOCK_NON_SHARE | PTE_BLOCK_PXN | PTE_BLOCK_UXN;
+
+       return 0;
+}
diff --git a/board/synaptics/sl2619/Kconfig b/board/synaptics/sl2619/Kconfig
new file mode 100644
index 000000000000..cab256a7750d
--- /dev/null
+++ b/board/synaptics/sl2619/Kconfig
@@ -0,0 +1,9 @@
+if TARGET_SL2619
+
+config SYS_BOARD
+       default "sl2619"
+
+config SYS_CONFIG_NAME
+       default "synaptics_sl2619"
+
+endif
diff --git a/board/synaptics/sl2619/Makefile b/board/synaptics/sl2619/Makefile
new file mode 100644
index 000000000000..c658f81d1c1b
--- /dev/null
+++ b/board/synaptics/sl2619/Makefile
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (c) 2026 Synaptics Incorporated
+
+obj-y := sl2619.o
diff --git a/board/synaptics/sl2619/sl2619.c b/board/synaptics/sl2619/sl2619.c
new file mode 100644
index 000000000000..6876f9667181
--- /dev/null
+++ b/board/synaptics/sl2619/sl2619.c
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2026 Synaptics Incorporated
+ */
+
+#include <asm/io.h>
+#include <dm/ofnode.h>
+#include <linux/bitops.h>
+#include <linux/errno.h>
+#include <linux/ioport.h>
+#include <linux/string.h>
+
+/* UART Software Reset Register */
+#define SYNA_UART_SRR          0x88
+/* Reset bits */
+#define SYNA_UART_RST          BIT(0)
+#define SYNA_UART_RST_FIFO_RCVR        BIT(1)
+#define SYNA_UART_RST_FIFO_XMIT        BIT(2)
+#define SYNA_UART_RST_ALL      (SYNA_UART_RST | SYNA_UART_RST_FIFO_RCVR | \
+                                SYNA_UART_RST_FIFO_XMIT)
+
+/*
+ * ROM boot code leaves the UART console in a non default state,
+ * reset it before probing the serial driver.
+ */
+static int reset_console(void)
+{
+       struct resource res;
+       const char *str;
+       ofnode node;
+       int ret;
+
+       str = ofnode_read_chosen_string("stdout-path");
+       if (!str)
+               return -ENOENT;
+
+       if (str[0] == '/') {
+               node = ofnode_path(str);
+       } else {
+               char alias[32]; /* max recommended length in DT */
+               const char *p;
+               int namelen;
+
+               p = strchr(str, ':');
+               namelen = p ? p - str : strlen(str);
+               if (namelen >= sizeof(alias))
+                       return -ENAMETOOLONG;
+               memcpy(alias, str, namelen);
+               alias[namelen] = '\0';
+               node = ofnode_get_aliases_node(alias);
+       }
+
+       if (!ofnode_valid(node))
+               return -ENOENT;
+
+       ret = ofnode_read_resource(node, 0, &res);
+       if (ret)
+               return ret;
+
+       if (!ofnode_device_is_compatible(node, "syna,sl261x-uart"))
+               return -ENODEV;
+
+       writel(SYNA_UART_RST_ALL, (uintptr_t)(res.start + SYNA_UART_SRR));
+
+       return 0;
+}
+
+int board_early_init_f(void)
+{
+       reset_console();
+
+       return 0;
+}
diff --git a/configs/synaptics_sl2619_defconfig 
b/configs/synaptics_sl2619_defconfig
new file mode 100644
index 000000000000..5fda64ad7ddc
--- /dev/null
+++ b/configs/synaptics_sl2619_defconfig
@@ -0,0 +1,54 @@
+CONFIG_ARM=y
+CONFIG_POSITION_INDEPENDENT=y
+# CONFIG_ARM64_SUPPORT_AARCH32 is not set
+CONFIG_ARCH_SYNAPTICS=y
+CONFIG_SYS_MALLOC_LEN=0x5aa00000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SIZE=0x10000
+CONFIG_DEFAULT_DEVICE_TREE="synaptics/sl2619-rdk"
+CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_DM_RESET=y
+CONFIG_SYS_BOOTM_LEN=0x4000000
+CONFIG_SYS_LOAD_ADDR=0xcf00000
+CONFIG_WATCHDOG_TIMEOUT_MSECS=0
+CONFIG_TARGET_SL2619=y
+CONFIG_BOOTSTD=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOOTDELAY=0
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
+CONFIG_DEFAULT_FDT_FILE="sl2619-rdk.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_BOARD_EARLY_INIT_F=y
+# CONFIG_BOARD_INIT is not set
+CONFIG_HUSH_PARSER=y
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
+CONFIG_CMD_NVEDIT_INFO=y
+# CONFIG_CMD_LZMADEC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_ITEST is not set
+# CONFIG_CMD_SOURCE is not set
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_TIMER=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_UPSTREAM=y
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_VERSION_VARIABLE=y
+# CONFIG_NET is not set
+CONFIG_SYSCON=y
+CONFIG_BOUNCE_BUFFER=y
+# CONFIG_GPIO is not set
+# CONFIG_I2C is not set
+CONFIG_MISC=y
+# CONFIG_MMC is not set
+CONFIG_SPECIFY_CONSOLE_INDEX=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_PSCI=y
+# CONFIG_TOOLS_LIBCRYPTO is not set
+# CONFIG_TOOLS_KWBIMAGE is not set
diff --git a/doc/board/index.rst b/doc/board/index.rst
index cc1d181a8e1d..7a66379a5b0a 100644
--- a/doc/board/index.rst
+++ b/doc/board/index.rst
@@ -66,6 +66,7 @@ Board-specific doc
    st/index
    starfive/index
    ste/index
+   synaptics/index
    tbs/index
    thead/index
    theobroma-systems/index
diff --git a/doc/board/synaptics/img/sl2610_boot_sequence.svg 
b/doc/board/synaptics/img/sl2610_boot_sequence.svg
new file mode 100644
index 000000000000..a0b356b46a24
--- /dev/null
+++ b/doc/board/synaptics/img/sl2610_boot_sequence.svg
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg width="800px" height="600px" viewBox="40 59 1047 740" 
xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink";>
+  <defs/>
+  <g id="Arrière-plan"/>
+  <g id="Background"/>
+  <g id="Background"/>
+  <g id="Background"/>
+  <g id="Background"/>
+  <g id="Background"/>
+  <g id="Hintergrund"/>
+  <g id="Background">
+    <g>
+      <rect style="fill: #e5e5e5; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #868686" x="896.2" y="627" width="153" height="149" 
rx="0" ry="0"/>
+      <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="972.7" y="707.2">
+        <tspan x="972.7" y="707.2"></tspan>
+      </text>
+    </g>
+    <g>
+      <rect style="fill: #e5e5e5; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #868686" x="736.2" y="464" width="312.8" height="149" 
rx="0" ry="0"/>
+      <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="892.6" y="544.2">
+        <tspan x="892.6" y="544.2"></tspan>
+      </text>
+    </g>
+    <g>
+      <rect style="fill: #e5e5e5; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #868686" x="561.2" y="286" width="153" height="149" 
rx="0" ry="0"/>
+      <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="637.7" y="366.2">
+        <tspan x="637.7" y="366.2"></tspan>
+      </text>
+    </g>
+    <g>
+      <rect style="fill: #e5e5e5; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #868686" x="359.2" y="285" width="153" height="149" 
rx="0" ry="0"/>
+      <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="435.7" y="365.2">
+        <tspan x="435.7" y="365.2"></tspan>
+      </text>
+    </g>
+    <g>
+      <rect style="fill: #e5e5e5; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #868686" x="363.2" y="85" width="153" height="149" 
rx="0" ry="0"/>
+      <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="439.7" y="165.2">
+        <tspan x="439.7" y="165.2"></tspan>
+      </text>
+    </g>
+    <rect style="fill: #ffacac; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #cc1f1a" x="172" y="100" width="120" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="236" y="82.7">
+      <tspan x="236" y="82.7">Stored in ROM</tspan>
+    </text>
+    <line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#a34804" x1="140" y1="260" x2="1082" y2="264"/>
+    <text font-size="16.9333" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="40" y="160">
+      <tspan x="40" y="160">Cortex M3</tspan>
+    </text>
+    <rect style="fill: #fff8a8; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #d9cb2f" x="378" y="302" width="120" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="232" y="152">
+      <tspan x="232" y="152">ROM</tspan>
+      <tspan x="232" y="168">code</tspan>
+    </text>
+    <g>
+      <polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" points="442.2,220 438,220 438,292.264 "/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="438,299.764 
433,289.764 438,292.264 443,289.764 "/>
+    </g>
+    <g>
+      <polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" points="292,160 292,160 372.464,160 "/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="379.964,160 
369.964,165 372.464,160 369.964,155 "/>
+    </g>
+    <text font-size="16.9333" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="40" y="360">
+      <tspan x="40" y="360">Cortex M52</tspan>
+    </text>
+    <line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#a34804" x1="140.4" y1="460" x2="1078" y2="461"/>
+    <g>
+      <line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" x1="498" y1="362" x2="567.264" y2="362"/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="574.764,362 
564.764,367 567.264,362 564.764,357 "/>
+    </g>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="438" y="354">
+      <tspan x="438" y="354">System Manager</tspan>
+      <tspan x="438" y="370">Bootloader</tspan>
+    </text>
+    <rect style="fill: #c5e387; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #6a8954" x="748" y="477" width="118" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="807" y="541.731">
+      <tspan x="807" y="541.731">TF-A</tspan>
+    </text>
+    <text font-size="16.9333" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="40" y="560">
+      <tspan x="40" y="560">Cortex A55</tspan>
+    </text>
+    <rect style="fill: #c5e387; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #6a8954" x="911" y="638" width="120" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="971" y="702.95">
+      <tspan x="971" y="702.95">U-Boot</tspan>
+    </text>
+    <g>
+      <line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" x1="971.5" y1="596.5" x2="971.117" y2="628.265"/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="971.027,635.764 
966.148,625.705 971.117,628.265 976.147,625.825 "/>
+    </g>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="980" y="609.95">
+      <tspan x="980" y="609.95">Runs</tspan>
+    </text>
+    <line style="fill: none; stroke-opacity: 1; stroke-width: 2; 
stroke-dasharray: 20; stroke: #cc1f1a" x1="1086" y1="620" x2="145" y2="620"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="402" y="660">
+      <tspan x="402" y="660">Normal world</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="402" y="580">
+      <tspan x="402" y="580">Secure world</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="438" y="73">
+      <tspan x="438" y="73">Bundled in spk.bin</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="869" y="455">
+      <tspan x="869" y="455">Bundled in tkz.subimg</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="882" y="556">
+      <tspan x="882" y="556"></tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="977" y="795">
+      <tspan x="977" y="795">Bundled in bl.subimg</tspan>
+    </text>
+    <rect style="fill: #c5e387; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #6a8954" x="914" y="476.5" width="115" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="971.5" y="541.231">
+      <tspan x="971.5" y="541.231">OP-TEE</tspan>
+    </text>
+    <g>
+      <line style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" x1="866" y1="537" x2="904.264" y2="536.601"/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="911.764,536.523 
901.817,541.627 904.264,536.601 901.713,531.628 "/>
+    </g>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="891.376" y="522.2">
+      <tspan x="891.376" y="522.2">Runs</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="541" y="318.95">
+      <tspan x="541" y="318.95">Loads</tspan>
+      <tspan x="541" y="334.95">and</tspan>
+      <tspan x="541" y="350.95">runs</tspan>
+    </text>
+    <g>
+      <polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" points="638.2,422 638.4,422 638.4,537 738.264,537 "/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="745.764,537 
735.764,542 738.264,537 735.764,532 "/>
+    </g>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="328" y="106.95">
+      <tspan x="328" y="106.95">Loads</tspan>
+      <tspan x="328" y="122.95">and</tspan>
+      <tspan x="328" y="138.95">runs</tspan>
+    </text>
+    <rect style="fill: #ffacac; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #cc1f1a" x="382.2" y="100" width="120" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="440" y="155">
+      <tspan x="440" y="155">SPK</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="417" y="249.731">
+      <tspan x="417" y="249.731">Loads</tspan>
+      <tspan x="417" y="265.731">and</tspan>
+      <tspan x="417" y="281.731">runs</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="435" y="452">
+      <tspan x="435" y="452">Bundled in m52bl.bin</tspan>
+    </text>
+    <rect style="fill: #fff8a8; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #d9cb2f" x="578.2" y="302" width="120" height="120" 
rx="0" ry="0"/>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="639" y="358">
+      <tspan x="639" y="358">System Manager</tspan>
+      <tspan x="639" y="374">Firmware</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="640" y="279">
+      <tspan x="640" y="279">Bundled in sysmgr.subimg</tspan>
+    </text>
+    <g>
+      <polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" points="714.2,360.5 971,360.5 971,462.264 "/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="971,469.764 
966,459.764 971,462.264 976,459.764 "/>
+    </g>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="802" y="355">
+      <tspan x="802" y="355">Loads</tspan>
+    </text>
+    <g>
+      <polyline style="fill: none; stroke-opacity: 1; stroke-width: 2; stroke: 
#000000" points="638.3,422 638,422 638,702 900.264,702 "/>
+      <polygon style="fill: #000000; fill-opacity: 1; stroke-opacity: 1; 
stroke-width: 2; stroke: #000000" fill-rule="evenodd" points="907.764,702 
897.764,707 900.264,702 897.764,697 "/>
+    </g>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="678" y="693">
+      <tspan x="678" y="693">Loads</tspan>
+    </text>
+    <text font-size="12.8" style="fill: #000000; fill-opacity: 1; stroke: 
none;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal"
 x="690" y="498.95">
+      <tspan x="690" y="498.95">Loads</tspan>
+      <tspan x="690" y="514.95">and</tspan>
+      <tspan x="690" y="530.95">runs</tspan>
+    </text>
+  </g>
+</svg>
diff --git a/doc/board/synaptics/index.rst b/doc/board/synaptics/index.rst
new file mode 100644
index 000000000000..03624fa904e1
--- /dev/null
+++ b/doc/board/synaptics/index.rst
@@ -0,0 +1,9 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+Synaptics
+=========
+
+.. toctree::
+   :maxdepth: 2
+
+   sl2619
diff --git a/doc/board/synaptics/sl2619.rst b/doc/board/synaptics/sl2619.rst
new file mode 100644
index 000000000000..8cb167fc2abd
--- /dev/null
+++ b/doc/board/synaptics/sl2619.rst
@@ -0,0 +1,100 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+Synaptics Astra SL2619 RDK
+==========================
+
+The Synaptics SL2619 is an ARM64 SoC with a dual-core Cortex-A55. The
+SL2619 RDK (Astra Machina) is the corresponding reference design.
+
+Official documentation can be found here:
+https://synaptics-astra.github.io/doc/v/latest
+
+Along with official github page:
+https://github.com/synaptics-astra
+
+Mainline support
+----------------
+
+This is early stage support with:
+
+1. ns16550 UART
+2. CPU reset via PSCI
+3. Generic ARMv8 core timer
+
+Boot Flow
+---------
+Below is the pictorial representation of boot flow:
+
+.. image:: img/sl2610_boot_sequence.svg
+   :alt: Boot flow diagram
+
+Building
+--------
+
+U-Boot
+^^^^^^
+.. code-block:: console
+
+   export CROSS_COMPILE=aarch64-linux-gnu-
+   make synaptics_sl2619_defconfig
+   make
+
+This will generate ``u-boot.bin``.
+
+Generate ``bl.subimg``
+^^^^^^^^^^^^^^^^^^^^^^
+
+The boot flow expect a bootloader encapsulated in a ``bl.subimg`` file.
+
+Synaptics provides tools in order to do that.
+
+In U-Boot parent's directory:
+
+.. code-block:: console
+
+    git clone -b scarthgap_6.12_v2.5.0 
https://github.com/synaptics-astra/build.git
+    git clone -b scarthgap_6.12_v2.5.0 
https://github.com/synaptics-astra/security.git
+    git clone https://github.com/synaptics-astra/usb-tool.git
+
+    build/tools/bin/in_extras.py BOOT_LOADER_GENX_V3 in_boot_loader_extras.bin 
0x00000000 0x00000000 0x600000 0x600000
+    build/tools/bin/gen_x_secure_image --chip-name=klamath --chip-rev=A0 \
+       --img_type=BOOT_LOADER --key_type=ree --length=0x0 \
+       --extras=in_boot_loader_extras.bin \
+       --workdir-security-tools=build/tools/lib/sec_tools/bin \
+       --workdir-security-keys=security/keys/chip/klamath/A0 \
+       --tool-version=genx_v3 \
+       --in_payload=u-boot/u-boot.bin \
+       --out_store=usb-tool/astra-usbboot-images/sl2619/bl.subimg
+
+Booting
+-------
+
+USB-BOOT
+^^^^^^^^
+
+Reset the board while pressing the USB_BOOT button, then:
+
+.. code-block:: console
+
+    sudo ./usb-tool/bin/linux/x86_64/astra-boot -b bootloader 
usb-tool/astra-usbboot-images/sl2619
+
+Console
+-------
+
+The console is on UART0 (``sm_uart0``, 0xe5030000) at 115200n8.
+
+Sample boot log
+---------------
+
+.. code-block:: none
+
+   U-Boot 2026.10-00019-gda155cd176f0 (Oct 20 2026 - 16:44:30 +0200)
+
+   Model: Synaptics SL2619 RDK
+   DRAM:  2 GiB
+   Core:  28 devices, 14 uclasses, devicetree: separate
+   Loading Environment from nowhere... OK
+   In:    serial@e5030000
+   Out:   serial@e5030000
+   Err:   serial@e5030000
+   =>
diff --git a/include/configs/synaptics_sl2619.h 
b/include/configs/synaptics_sl2619.h
new file mode 100644
index 000000000000..b1729f814045
--- /dev/null
+++ b/include/configs/synaptics_sl2619.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Configuration settings for the Synaptics sl2619 RDK board.
+ *
+ * Copyright 2026 Synaptics Incorporated
+ */
+
+#ifndef __SYNAPTICS_SL2619_H
+#define __SYNAPTICS_SL2619_H
+
+#define GICD_BASE 0xf7e59000
+#define GICC_BASE 0xf7e5a000
+
+#endif /* __SYNAPTICS_SL2619_H */

-- 
2.55.0

Reply via email to