From 214ca04a2170f27e23c6ecb0c0e2657a851a9c32 Mon Sep 17 00:00:00 2001 From: Ozan Durgut Date: Wed, 5 Aug 2026 17:09:40 +0200 Subject: [PATCH 1/6] board: adi: sc846: share board_init sc846-som and sc846-som-ezkit each carried their own board_init(), differing only by the carrier-board ethernet init and RGMII enable call. Move the shared logic into common-sc846-som/sc846-som.c, gated on CONFIG_ADI_CARRIER_SOMCRR2_EZKIT, matching the pattern already used by common-sc594-som and common-sc598-som. Signed-off-by: Ozan Durgut --- board/adi/common-sc846-som/Makefile | 6 ++++++ .../sc846-som.c | 0 board/adi/sc846-som-ezkit/Makefile | 2 +- board/adi/sc846-som/Makefile | 2 +- board/adi/sc846-som/sc846-som.c | 17 ----------------- 5 files changed, 8 insertions(+), 19 deletions(-) create mode 100644 board/adi/common-sc846-som/Makefile rename board/adi/{sc846-som-ezkit => common-sc846-som}/sc846-som.c (100%) delete mode 100644 board/adi/sc846-som/sc846-som.c diff --git a/board/adi/common-sc846-som/Makefile b/board/adi/common-sc846-som/Makefile new file mode 100644 index 000000000000..018acfa4e9ff --- /dev/null +++ b/board/adi/common-sc846-som/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# (C) Copyright 2026 - Analog Devices, Inc. +# + +obj-y := sc846-som.o diff --git a/board/adi/sc846-som-ezkit/sc846-som.c b/board/adi/common-sc846-som/sc846-som.c similarity index 100% rename from board/adi/sc846-som-ezkit/sc846-som.c rename to board/adi/common-sc846-som/sc846-som.c diff --git a/board/adi/sc846-som-ezkit/Makefile b/board/adi/sc846-som-ezkit/Makefile index 6acc331e6e6b..d806fd1a390d 100644 --- a/board/adi/sc846-som-ezkit/Makefile +++ b/board/adi/sc846-som-ezkit/Makefile @@ -3,5 +3,5 @@ # (C) Copyright 2026 - Analog Devices, Inc. # -obj-y := sc846-som.o +obj-y := ../common-sc846-som/sc846-som.o obj-y += ../carriers/ diff --git a/board/adi/sc846-som/Makefile b/board/adi/sc846-som/Makefile index 8fee798dde8a..8d71c8790f80 100644 --- a/board/adi/sc846-som/Makefile +++ b/board/adi/sc846-som/Makefile @@ -3,5 +3,5 @@ # (C) Copyright 2025 - Analog Devices, Inc. # -obj-y := sc846-som.o +obj-y := ../common-sc846-som/sc846-som.o obj-y += ../carriers/ diff --git a/board/adi/sc846-som/sc846-som.c b/board/adi/sc846-som/sc846-som.c deleted file mode 100644 index 5a8ba516795b..000000000000 --- a/board/adi/sc846-som/sc846-som.c +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * (C) Copyright 2026 - Analog Devices, Inc. - */ - -#include -#include -#include -#include -#include -#include -#include "../carriers/somcrr.h" - -int board_init(void) -{ - return 0; -} From 9caa2f80bb5193390c5f5b665bc8ecf62f5f23d5 Mon Sep 17 00:00:00 2001 From: Ozan Durgut Date: Wed, 5 Aug 2026 17:36:52 +0200 Subject: [PATCH 2/6] arch: sc5xx: fix wrongly forced symbol The "Analog Devices SC84x SOM Carrier Board Variant" choice depended on SC846 (the whole SoC family) with default ADI_CARRIER_SOMCRR2_EZKIT, so the symbol was always true regardless of which SC846 target was selected. board_init gates adi_somcrr_init_ethernet on this symbol. On the bare SOM it now called into adi_somcrr_enable_ethernet, which looks up the "eth0-reset" gpio-hog. That hog only exists in sc846-som-ezkit.dts, not sc846-som.dts, so gpio_hog_lookup_name returns NULL. Scope the choice to TARGET_SC846_SOM_EZKIT so ADI_CARRIER_SOMCRR2_EZKIT is only set for the carrier-board target, matching the SC59x pattern where carrier selection is tied to the specific board target rather than the SoC family. Signed-off-by: Ozan Durgut --- arch/arm/mach-sc5xx/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mach-sc5xx/Kconfig b/arch/arm/mach-sc5xx/Kconfig index 3f6468ba743e..2547e646d122 100644 --- a/arch/arm/mach-sc5xx/Kconfig +++ b/arch/arm/mach-sc5xx/Kconfig @@ -326,7 +326,7 @@ endchoice choice prompt "Analog Devices SC84x SOM Carrier Board Variant" - depends on (SC846) + depends on TARGET_SC846_SOM_EZKIT default ADI_CARRIER_SOMCRR2_EZKIT help Select the specific EV-SOMCRR2 carrier board that you are using. From 786661080af7c6171602e1a002ba471317faa76a Mon Sep 17 00:00:00 2001 From: Ozan Durgut Date: Wed, 5 Aug 2026 22:03:32 +0200 Subject: [PATCH 3/6] arch: sc5xx: remove dead symbol GIC_600_CLEAR_RDPD not mentioned anywhere else. Signed-off-by: Ozan Durgut --- arch/arm/mach-sc5xx/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm/mach-sc5xx/Kconfig b/arch/arm/mach-sc5xx/Kconfig index 2547e646d122..5c272328bad6 100644 --- a/arch/arm/mach-sc5xx/Kconfig +++ b/arch/arm/mach-sc5xx/Kconfig @@ -57,7 +57,6 @@ config SC846 select COMMON_CLK_ADI_SC846 select GICV3 select GICV3_SUPPORT_GIC600 - select GIC_600_CLEAR_RDPD select MMC_SDHCI_ADMA_FORCE_32BIT select NOP_PHY if PHY endchoice From dea2d72063644856ad9fe7cfc7336b20f611c8de Mon Sep 17 00:00:00 2001 From: Ozan Durgut Date: Wed, 5 Aug 2026 22:17:34 +0200 Subject: [PATCH 4/6] configs: adi: sc846-som: set SPI bus to match hardware IS25WP02GG is wired to SPI1 per schematic and the board dts, matching SF_DEFAULT_BUS=1 already set. Without an explicit CONFIG_SC_BOOT_SPI_BUS, the SOM defconfig fell back to the Kconfig default of 2, mismatching the ezkit defconfig and the actual wiring. Signed-off-by: Ozan Durgut --- configs/sc846-som_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/sc846-som_defconfig b/configs/sc846-som_defconfig index 21ffedb72184..9ee4e935246e 100644 --- a/configs/sc846-som_defconfig +++ b/configs/sc846-som_defconfig @@ -14,6 +14,7 @@ CONFIG_SPL_TEXT_BASE=0x20430000 CONFIG_SPL_BSS_START_ADDR=0x206e0000 CONFIG_SPL_BSS_MAX_SIZE=0x8000 CONFIG_SC846=y +CONFIG_SC_BOOT_SPI_BUS=1 CONFIG_SYS_BOOTM_LEN=0x4000000 CONFIG_SYS_LOAD_ADDR=0x90000000 # CONFIG_SC5XX_DMC_INIT is not set From 32218876eed77221eecf5ea6245c1054dbb86d5c Mon Sep 17 00:00:00 2001 From: Ozan Durgut Date: Sat, 8 Aug 2026 12:39:05 +0200 Subject: [PATCH 5/6] board: adi: sc846: drop bare-SOM-only config TARGET_SC846_SOM offered a no-carrier SC846 configuration, but the SC59x boards never supported that mode and now isn't the time to add it for SC846 either without also adding it there. Drop TARGET_SC846_SOM, its board dir, and sc846-som_defconfig, leaving sc846-som-ezkit as the only SC846 target. This matches the SC594/SC598 pattern where board selection is always tied to a specific carrier. board_init() no longer needs to branch on the carrier symbol since SOMCRR2-EZKIT is now unconditionally selected by the sole remaining target. Signed-off-by: Ozan Durgut --- .github/workflows/top-level.yml | 1 - arch/arm/mach-sc5xx/Kconfig | 13 +- board/adi/common-sc846-som/sc846-som.c | 4 +- board/adi/sc846-som/Kconfig | 162 ------------------------- board/adi/sc846-som/Makefile | 7 -- board/adi/sc846-som/sc846-som.env | 17 --- configs/sc846-som_defconfig | 115 ------------------ 7 files changed, 3 insertions(+), 316 deletions(-) delete mode 100644 board/adi/sc846-som/Kconfig delete mode 100644 board/adi/sc846-som/Makefile delete mode 100644 board/adi/sc846-som/sc846-som.env delete mode 100644 configs/sc846-som_defconfig diff --git a/.github/workflows/top-level.yml b/.github/workflows/top-level.yml index 2bcceb878c98..f2a320a89ee4 100644 --- a/.github/workflows/top-level.yml +++ b/.github/workflows/top-level.yml @@ -38,7 +38,6 @@ jobs: - 'sc598-htol-spl_defconfig' - 'sc598-som-ezkit-spl_defconfig' - 'sc598-som-ezlite-spl_defconfig' - - 'sc846-som_defconfig' - 'sc846-som-ezkit_defconfig' - 'xilinx_zynqmp_virt_defconfig' diff --git a/arch/arm/mach-sc5xx/Kconfig b/arch/arm/mach-sc5xx/Kconfig index 5c272328bad6..b472bae8b802 100644 --- a/arch/arm/mach-sc5xx/Kconfig +++ b/arch/arm/mach-sc5xx/Kconfig @@ -130,18 +130,10 @@ endif if SC846 -choice - prompt "SC846 64-bit board select" - -config TARGET_SC846_SOM - bool - prompt "SC846-SOM (no carrier board)" - config TARGET_SC846_SOM_EZKIT - bool - prompt "SC846-SOM with SOMCRR2-EZKIT (carrier board)" + bool "SC846-SOM with SOMCRR2-EZKIT (carrier board)" select ADI_CARRIER_SOMCRR2_EZKIT -endchoice + endif config SC5XX_UBOOT_SPL_OFFSET @@ -678,7 +670,6 @@ config PINCTRL_ADI default y source "board/adi/sc846-som-ezkit/Kconfig" -source "board/adi/sc846-som/Kconfig" source "board/adi/sc598-som-ezkit/Kconfig" source "board/adi/sc598-som-ezlite/Kconfig" source "board/adi/sc594-som-ezkit/Kconfig" diff --git a/board/adi/common-sc846-som/sc846-som.c b/board/adi/common-sc846-som/sc846-som.c index 71549ab00a49..48680443299e 100644 --- a/board/adi/common-sc846-som/sc846-som.c +++ b/board/adi/common-sc846-som/sc846-som.c @@ -13,9 +13,7 @@ int board_init(void) { - if (IS_ENABLED(CONFIG_ADI_CARRIER_SOMCRR2_EZKIT)) - adi_somcrr_init_ethernet(); - + adi_somcrr_init_ethernet(); sc5xx_enable_rgmii(); return 0; diff --git a/board/adi/sc846-som/Kconfig b/board/adi/sc846-som/Kconfig deleted file mode 100644 index c59d78b64ec0..000000000000 --- a/board/adi/sc846-som/Kconfig +++ /dev/null @@ -1,162 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# -# (C) Copyright 2026 - Analog Devices, Inc. - -if TARGET_SC846_SOM - -config LDR_CPU - default "ADSP-SC846-0.0" - -config SYS_BOARD - default "sc846-som" - -config SYS_CONFIG_NAME - default "sc846-som" - -config DEFAULT_DEVICE_TREE - default "sc846-som" - -config ADI_IMAGE - default "minimal" - -config CUSTOM_SYS_INIT_SP_ADDR - default 0x96000000 - -# SPL - -config SPL_OF_LIBFDT_ASSUME_MASK - default 0x0 - -# SPI Flash - -config SF_DEFAULT_BUS - default 2 - -config SF_DEFAULT_CS - default 1 - -config SF_DEFAULT_SPEED - default 10000000 - -# Clock Configs - -config CGU0_DF_DIV - default 0 - -# MSEL -config CGU0_VCO_MULT - default 80 - -# Core Clock divider -config CGU0_CCLK_DIV - default 1 - -# System Clock divider -config CGU0_SCLK_DIV - default 2 - -config CGU0_SCLK0_DIV - default 4 - -config CGU0_SCLK1_DIV - default 2 - -# DDR Clock divider -config CGU0_DCLK_DIV - default 2 - -# Output Clock divider -config CGU0_OCLK_DIV - default 10 - -# SCLK1 extended divisor -config CGU0_DIV_S1SELEX - default 3 - -# CGU1 MSEL -config CGU1_VCO_MULT - default 72 - -config CGU1_DF_DIV - default 0 - -# Core Clock divider -config CGU1_CCLK_DIV - default 2 - -# System Clock divider -config CGU1_SCLK_DIV - default 5 - -config CGU1_SCLK0_DIV - default 4 - -config CGU1_SCLK1_DIV - default 2 - -# Linkport Clock divider -config CGU1_DCLK_DIV - default 3 - -# Output Clock divider -config CGU1_OCLK_DIV - default 8 - -# SCLK1 extended divisor -config CGU1_DIV_S0SELEX - default 8 - -# SCLK1 extended divisor -config CGU1_DIV_S1SELEX - default 5 - -# SHARC-FX - -config CDU0_CLKO0 - default 1 - -# CORE 0 -config CDU0_CLKO1 - default 7 - -# CORE 1 -config CDU0_CLKO2 - default 7 - -# DDR -config CDU0_CLKO3 - default 1 - -# CAN -# 1 sets the input as OCLK_0 -# OCLK_0 = CGU0_VCO / 40 = 100MHz -config CDU0_CLKO4 - default 1 - -# SPDIF -# 1 sets the input as SCLK1_0 -# SCLK1_0 = CGU0_VCO / 12 = 333MHz -config CDU0_CLKO5 - default 1 - -# SPI -config CDU0_CLKO6 - default 1 - -# GIGE -config CDU0_CLKO7 - default 1 - -# xSPI2 -# 5 sets the input as SCLK1_1 -# SCLK1_0 = CGU1_VCO / 20 = 180MHz -config CDU0_CLKO8 - default 5 - -# LINKPORT -# 5 sets the input as SCLK1_0 -# SCLK1_0 = CGU1_VCO / 12 = 300MHz -config CDU0_CLKO9 - default 5 - -endif diff --git a/board/adi/sc846-som/Makefile b/board/adi/sc846-som/Makefile deleted file mode 100644 index 8d71c8790f80..000000000000 --- a/board/adi/sc846-som/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# -# (C) Copyright 2025 - Analog Devices, Inc. -# - -obj-y := ../common-sc846-som/sc846-som.o -obj-y += ../carriers/ diff --git a/board/adi/sc846-som/sc846-som.env b/board/adi/sc846-som/sc846-som.env deleted file mode 100644 index ae3d93d10d51..000000000000 --- a/board/adi/sc846-som/sc846-som.env +++ /dev/null @@ -1,17 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later+ */ - -/* - * (C) Copyright 2026 - Analog Devices, Inc. - */ - -fdt_addr_r=CONFIG_SYS_LOAD_ADDR -kernel_addr_r=0x9a200000 -ramdisk_addr_r=0x9c000000 - -#define USE_NFS -#define USE_SPI -#define USE_OSPI -#define USE_RAM -#define USE_MMC - -#include diff --git a/configs/sc846-som_defconfig b/configs/sc846-som_defconfig deleted file mode 100644 index 9ee4e935246e..000000000000 --- a/configs/sc846-som_defconfig +++ /dev/null @@ -1,115 +0,0 @@ -CONFIG_ARM=y -CONFIG_COUNTER_FREQUENCY=31250000 -# CONFIG_ARM64_SUPPORT_AARCH32 is not set -CONFIG_ARCH_SC5XX=y -CONFIG_TEXT_BASE=0x80200000 -CONFIG_SYS_MALLOC_LEN=0x80000 -CONFIG_SPL_GPIO=y -CONFIG_DM_GPIO=y -CONFIG_SPL_DM_SPI=y -CONFIG_SPL_SERIAL=y -CONFIG_SPL_STACK=0x207f0000 -CONFIG_SPL_SYS_MALLOC_F_LEN=0x8000 -CONFIG_SPL_TEXT_BASE=0x20430000 -CONFIG_SPL_BSS_START_ADDR=0x206e0000 -CONFIG_SPL_BSS_MAX_SIZE=0x8000 -CONFIG_SC846=y -CONFIG_SC_BOOT_SPI_BUS=1 -CONFIG_SYS_BOOTM_LEN=0x4000000 -CONFIG_SYS_LOAD_ADDR=0x90000000 -# CONFIG_SC5XX_DMC_INIT is not set -CONFIG_SF_DEFAULT_BUS=1 -CONFIG_SYS_MEMTEST_START=0x80000000 -CONFIG_SYS_MEMTEST_END=0xB0000000 -# CONFIG_EFI_LOADER is not set -CONFIG_FIT=y -CONFIG_FIT_SIGNATURE=y -CONFIG_LEGACY_IMAGE_FORMAT=y -CONFIG_USE_BOOTCOMMAND=y -CONFIG_BOOTCOMMAND="run spiboot" -CONFIG_SYS_CBSIZE=512 -CONFIG_CYCLIC_MAX_CPU_TIME_US=1000 -CONFIG_SPL_MAX_SIZE=0x50000 -CONFIG_SPL_HAVE_INIT_STACK=y -# CONFIG_SPL_SEPARATE_BSS is not set -CONFIG_SPL_I2C=y -CONFIG_SPL_DM_SPI_FLASH=y -CONFIG_CMD_MEMTEST=y -CONFIG_CMD_DM=y -CONFIG_CMD_GPT=y -CONFIG_CMD_MMC=y -CONFIG_CMD_MTD=y -# CONFIG_CMD_PINMUX is not set -CONFIG_CMD_REMOTEPROC=y -CONFIG_CMD_SPI=y -CONFIG_DEFAULT_SPI_BUS=1 -CONFIG_CMD_USB=y -CONFIG_SYS_DISABLE_AUTOLOAD=y -CONFIG_CMD_DHCP=y -CONFIG_CMD_DNS=y -CONFIG_CMD_MII=y -# CONFIG_CMD_MDIO is not set -CONFIG_CMD_PING=y -CONFIG_CMD_WGET=y -CONFIG_CMD_EXT4=y -CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_OF_EMBED=y -# CONFIG_OF_TAG_MIGRATE is not set -CONFIG_USE_HOSTNAME=y -CONFIG_HOSTNAME="sc846" -CONFIG_NET_RETRY_COUNT=20 -CONFIG_NETCONSOLE=y -CONFIG_IP_DEFRAG=y -CONFIG_USE_GATEWAYIP=y -CONFIG_GATEWAYIP="192.168.0.1" -CONFIG_USE_IPADDR=y -CONFIG_IPADDR="192.168.0.15" -CONFIG_USE_NETMASK=y -CONFIG_NETMASK="255.255.255.0" -CONFIG_USE_ROOTPATH=y -CONFIG_ROOTPATH="/romfs" -CONFIG_USE_SERVERIP=y -CONFIG_SERVERIP="192.168.0.2" -CONFIG_REGMAP=y -CONFIG_SYSCON=y -CONFIG_DMA=y -CONFIG_DMA_CHANNELS=y -CONFIG_ADI_DMA=y -CONFIG_GPIO_HOG=y -CONFIG_SPL_GPIO_HOG=y -CONFIG_DM_GPIO_LOOKUP_LABEL=y -CONFIG_SPL_DM_GPIO_LOOKUP_LABEL=y -CONFIG_MCP230XX_GPIO=y -CONFIG_ADP5588_GPIO=y -CONFIG_DM_I2C=y -CONFIG_DM_I2C_GPIO=y -CONFIG_SYS_I2C_ADI=y -CONFIG_MMC_BROKEN_CD=y -CONFIG_MMC_SDHCI_ADI=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_ADMA=y -CONFIG_MTD=y -CONFIG_DM_SPI_FLASH=y -CONFIG_SPI_FLASH_SFDP_SUPPORT=y -CONFIG_SPI_FLASH_SOFT_RESET=y -CONFIG_SPI_FLASH_ISSI=y -CONFIG_SPI_FLASH_MACRONIX=y -CONFIG_SPI_FLASH_MTD=y -CONFIG_DWC_ETH_QOS=y -CONFIG_DWC_ETH_QOS_ADI=y -CONFIG_PHY=y -CONFIG_PINCTRL=y -# CONFIG_PINCTRL_GENERIC is not set -CONFIG_SPL_PINCTRL=y -# CONFIG_SPL_PINCTRL_GENERIC is not set -CONFIG_REMOTEPROC_ADI_SC5XX=y -CONFIG_SPI=y -CONFIG_DM_SPI=y -CONFIG_ADI_SPI3=y -CONFIG_CADENCE_QSPI=y -CONFIG_SPL_TIMER=y -CONFIG_USB=y -CONFIG_USB_DWC2=y -CONFIG_USB_STORAGE=y -# CONFIG_SPL_CRC8 is not set From 9c538eaa560e8f1fc849b14f0643da610e2acf89 Mon Sep 17 00:00:00 2001 From: Ozan Durgut Date: Sat, 8 Aug 2026 22:54:08 +0200 Subject: [PATCH 6/6] board: adi: carriers: check gpio_hog_lookup_name adi_somcrr_enable_ethernet/disable_ethernet ignored the lookup result and dereferenced eth0_reset unconditionally. somcrr_ezkit.c and somcrr_ezlite.c already guard this call; somcrr2_ezkit.c did not. Match the sibling carriers and skip dm_gpio_set_value on lookup failure. Signed-off-by: Ozan Durgut --- board/adi/carriers/somcrr2_ezkit.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/board/adi/carriers/somcrr2_ezkit.c b/board/adi/carriers/somcrr2_ezkit.c index e24924b74ba0..6a4fc6468f66 100644 --- a/board/adi/carriers/somcrr2_ezkit.c +++ b/board/adi/carriers/somcrr2_ezkit.c @@ -10,16 +10,14 @@ void adi_somcrr_enable_ethernet(void) { struct gpio_desc *eth0_reset; - gpio_hog_lookup_name("eth0-reset", ð0_reset); - - dm_gpio_set_value(eth0_reset, 0); + if (!gpio_hog_lookup_name("eth0-reset", ð0_reset)) + dm_gpio_set_value(eth0_reset, 0); } void adi_somcrr_disable_ethernet(void) { struct gpio_desc *eth0_reset; - gpio_hog_lookup_name("eth0-reset", ð0_reset); - - dm_gpio_set_value(eth0_reset, 1); + if (!gpio_hog_lookup_name("eth0-reset", ð0_reset)) + dm_gpio_set_value(eth0_reset, 1); }