Commit graph zephyr/soc
Author SHA1 Message Date
Ofir Shemesh
7bc9e93d3f soc: nxp: imxrt: fix FlexSPI clock after DTS change
After commit b1afb494b0, zephyr,flash points to the
soc-nv-flash child node instead of the
nxp,imx-flexspi-nor controller. This shifts the DTS
hierarchy by one level, so
DT_PARENT(DT_CHOSEN(zephyr_flash)) now returns the
flash controller node, not the FlexSPI bus node.

Use DT_CHOSEN(zephyr_flash_controller) to directly
reference the flash controller, and DT_PARENT of it
to reach the FlexSPI bus where needed.

Signed-off-by: Ofir Shemesh <ofirshemesh777@gmail.com>
2026-04-06 10:36:09 -05:00
Johan Hedberg
a588efe679 soc: silabs: siwx91x: Fix defaults for Bluetooth buffer counts
Having a differing number of ACL buffers available between the host
and controller causes unnecessary "impedance" when communicating over HCI.
The Zephyr Bluetooth host also warns about this during initialization:

  Num of Controller's ACL packets != ACL bt_conn_tx contexts (15 != 3)

Update the default for BT_BUF_ACL_TX_COUNT to match the controller. Also
update BT_BUF_EVT_RX_COUNT and BT_CONN_TX_MAX appropriately. The latter
should generally match TX_COUNT, while the former needs to be at least as
large to deal with Number of Completed Packets events from the controller.

Signed-off-by: Johan Hedberg <johan.hedberg@silabs.com>
2026-04-06 10:34:11 -05:00
Marek Matej
149c8b1758 soc: espressif: psram entry mismatch in esp32s3
This fixes the mismatched object name in linker.

Signed-off-by: Marek Matej <marek.matej@espressif.com>
2026-04-04 11:01:00 -05:00
Laura Carlesso
f82d97e3d5 soc: infineon: edge: Force syslib assembly relocation to ramfunc/itcm
The syslib delay function are implemented in an assembly file.
Even with the relocation done in CMakeLists.txt this file does not
properly get copied because gen_relocate_app.py does not keep
in consideration plain regions (e.g. just .text rather than .text.xyz).
Therefore force the relocation using the ramfunc and itcm linker
section for cm33 and cm55 respectively.

Signed-off-by: Laura Carlesso <laura.carlesso@infineon.com>
2026-04-03 14:48:04 -05:00
Laura Carlesso
a3177bd575 soc: infineon: edge: Correct linker regions
The linker region rwdata was including sections ramfunc
and itcm which should instead be placed in a code region.
Created itcm_mem.ld and ramfunc_mem.ld for cm55 and
cm33 respectfully to place the section accordingly.
Added the linker sources in cmakelists.txt

Signed-off-by: Laura Carlesso <laura.carlesso@infineon.com>
2026-04-03 14:48:04 -05:00
Laura Carlesso
3a026add24 soc: infineon: edge: Correct initialization of MPU regions and linker fix
Now that the cores have dedicated executable regions
for the code relocation, give executable permissions only
to those rather than the entire RAM region.
Additionally, removed the rwdata exception for the assembly
file given that it now gets properly placed in the correct region
by the relocate script.

Signed-off-by: Laura Carlesso <laura.carlesso@infineon.com>
2026-04-03 14:48:04 -05:00
Ibrahim Abdalkader
455e70d068 soc: xlnx: zynqmp: use imply instead of select for ARM_MPU
Change 'select ARM_MPU' to 'imply ARM_MPU' so that tests and
applications can override it with CONFIG_ARM_MPU=n. The previous
'select' caused a prefetch abort in the LLEXT module_build sample,
which disables MPU to allow execution from heap-allocated memory.

Signed-off-by: Ibrahim Abdalkader <i.abdalkader@gmail.com>
2026-04-03 23:16:53 +09:00
Sylvio Alves
97fc526073 soc: esp32: fix SPIRAM memtest default to disabled
The SPI SRAM memory test runs on the entire mapped PSRAM
region during boot. At lower clock speeds (e.g. 40MHz),
this can take over 10 seconds for a 4MB device, delaying
startup significantly.

Remove the default y so the memtest is opt-in. Users can
still enable it with CONFIG_ESP_SPIRAM_MEMTEST=y when
needed for hardware validation.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-04-03 23:10:58 +09:00
Sylvio Alves
e26cfb1d9d soc: esp32: fix SPIRAM heap address to use runtime mapping
The SPIRAM heap address was set from the linker symbol
_ext_ram_heap_start, which may not match the actual MMU
mapping at runtime. On SoCs with unified cache (C5, C6,
H2), the virtual address depends on MMU page allocation
and can differ from the linker estimate.

Use esp_psram_get_mapped_region() to obtain the actual
mapped address and size at runtime.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-04-03 23:10:58 +09:00
Sylvio Alves
a5be8aafca soc: esp32c5: fix SPIRAM linker script mapping
The ext_dram_seg was placed at DROM_SEG_ORG + DROM_SEG_LEN
(0x43000000), but the MMU maps PSRAM into the first free
pages in the unified cache address space (0x42000000+).
This mismatch caused the SPIRAM heap to point to unmapped
memory, resulting in data corruption and crashes.

Move ext_dram_seg origin to IROM_SEG_ORG and add an
.ext_ram.dummy section that skips past both IROM and DROM
MMU page reservations, matching the runtime behavior of
esp_mmu_map_reserve_block_with_caps().

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-04-03 23:10:58 +09:00
Sylvio Alves
78cd957f97 soc: espressif: fix soc_random ref count underflow on mcuboot
soc_random_enable() was called inside hardware_init() which
only runs for CONFIG_MCUBOOT and CONFIG_ESP_SIMPLE_BOOT. For
MCUboot-loaded apps (CONFIG_BOOTLOADER_MCUBOOT), hardware_init
is skipped, so soc_random_enable() never ran. However,
soc_random_disable() was called unconditionally in loader.c,
causing periph_module_disable() to decrement the peripheral
clock reference counter below zero. This prevented
periph_module_enable() from actually enabling the hardware
clock for any peripheral touched by soc_random_disable(),
such as I2S0 on ESP32, breaking drivers that depend on it.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-04-02 08:50:03 -05:00
Krzysztof Chruściński
f0c7574695 soc: nordic: common: mram_latency: Move initialization to the POST_KERNEL
Move to the post kernel. Set priority which is higher than the
IPC service and NRFS.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2026-04-02 08:49:17 -05:00
Zhiyuan Tang
56db42dc7e soc: realtek: bee: conditionally init BT controller
Wrap BT controller initialization with CONFIG_BT to prevent its
background thread from starting in non-Bluetooth applications.
This avoids unexpected preemption that causes kernel scheduler tests
like `priority_preemptible_wait_prio` to fail.

Signed-off-by: Zhiyuan Tang <zhiyuan_tang@realsil.com.cn>
2026-04-02 08:46:29 -05:00
David Jewsbury
171b1adc76 soc: nordic: nrf71: Update NUM_IRQs for RISC-V core
Setting NUM_IRQS on RISC-V core to only the IRQ's used (up to GPIOTE30_1)
where VREGUSB, LFXO, LFRC, HFXO64M, AUXPLL interrupts aren't
used in drivers.

This is because on RISC-V with CONFIG_RISCV_GP, the linker may relax
accesses to some globals into gp-relative instructions; the offset from
__global_pointer$ to each such symbol must fit in a 12-bit signed range
(+/-2 KiB). _sw_isr_table in RAM is NUM_IRQS × 8 bytes and sits between
small data and much of .bss, so a smaller NUM_IRQS shortens that gap
and can keep symbols such as _kernel within gp-relative range, avoiding
R_RISCV_GPREL_I relocation truncation at link time.

Signed-off-by: David Jewsbury <david.jewsbury@nordicsemi.no>
2026-04-02 08:45:34 -05:00
Amneesh Singh
18c008af08 soc: ti: k3: am6x: prevent control module warning
Prevent unused function warning that comes from having a control module
node but no ti,unlock-offsets property. Do this by checking for the
aforementioned property alongside already present compat string.

Signed-off-by: Amneesh Singh <amneesh@ti.com>
2026-04-02 08:44:04 -05:00
Holt Sun
81753e71cc soc: nxp: imxrt: enable LMEM cache on RT11xx CM4
RT1166 and RT1176 CM4 parts use the MCUX LMEM cache block
and expose both code and system-bus cache in their HAL
feature headers.

Select the LMEM cache driver path, advertise both ICACHE
and DCACHE, and default these CM4 builds to
CACHE_MANAGEMENT with the external cache driver.

Signed-off-by: Holt Sun <holt.sun@nxp.com>
2026-04-01 15:11:35 -05:00
Laura Carlesso
e23a7a0190 soc: infineon: edge: pse84: Clean up the init process on cm33/ns
This commit introduces 2 changes:
- cleans up the mpu initialziation, the old function is not
required because the initialziation is done properly via
mpu_regions.c for all cores
- defaults to using SystemCoreClockSetup instead of
SystemCoreClockUpdate because the former takes the
input from DT whereas the latter would read the info
from the HF clocks which in case of TF-M are secured
and not directly accessible from the cm33/ns (if SRF is
not set up)

Signed-off-by: Laura Carlesso <laura.carlesso@infineon.com>
2026-04-01 11:54:51 -05:00
Mathieu Choplain
233681da20 soc: st: stm32: l5: delete unused Kconfig.defconfig.<soc> files
71aa3be37b removed the directive which used
to source these files but forgot to delete them - do so now.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-04-01 11:52:04 -05:00
Quy Tran
d7876f59e1 soc: renesas: rx: add mcu_clock_setup for RX14T
Add the lacking of mcu_clock_setup in soc early init function
of the RX14T MCU

Signed-off-by: Quy Tran <quy.tran.pz@renesas.com>
2026-03-31 14:01:10 -05:00
Bill Waters
390596dd79 soc: infineon: cyw20829 linker.ld update
To address the "warning: orphan section", added
.llext_heap, .llext_ext_heap, and .llext_metadata_heap
sections to the #ifndef CONFIG_USERSPACE noinit section
in the linker script, wrapped in #ifdef CONFIG_LLEXT.

Signed-off-by: Bill Waters <bill.waters@infineon.com>
2026-03-31 13:59:45 -05:00
Daniel Leung
8a977567b9 soc: cdns_swerv: allow running without external IRQ controller
SweRV S4xx SoCs has an external interrupt controller by design.
The corresponding driver is enabled via CONFIG_SWERV_PIC.

However, it is not fully supported in the whisper simulator.
Accessing the controller's MMIO space will result in access
fault when PMP is enabled with catchall entry. To workaround
this, we simply skip building the driver so there will be no
invalid memory access at boot. For this to work correctly,
we need to implement some basic arch_irq_*() function to
utilize the internal interrupt controller so we can still
boot and test. For non-PMP boards, we still have the driver
enabled so it is built in CI to avoid breakage.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2026-03-31 13:56:50 -05:00
Furkan Akkiz
1df6f82029 soc: adi: max32: Remove unused header from power.c
This commit removes the unused mcr_regs.h header from the power.c file
in the MAX32 SoC directory.
The header is not required for current power management implementation.
Furthermore, since some MAX32 SoC variants do not include this specific
register definition, removing it prevents potential build failures and
improves cross-SoC compatibility within the series.

Signed-off-by: Furkan Akkiz <hasanfurkan.akkiz@analog.com>
2026-03-31 13:52:01 -05:00
Jiafei Pan
ac48cb5df1 soc: imx93: add enet clock initialization
If Zephyr is booted from U-Boot, ENET clock has been initialized by
U-Boot and it works, but if Zephyr is booted by using SPSDK runner,
ENET clock is not initialized and ENET will not work, so adding ENET
clock initialization in Zephyr to fix this issue.

Fixes: #106398

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
2026-03-31 10:29:57 -05:00
Sylvio Alves
53c8eccf91 soc: espressif: fix ulp_shm memory region overlap
The ulp_shm DTS node at 0x3bf0 overlapped with the last
16 bytes of the ulp_ram region (0x0..0x3c00) on both
ESP32-C5 and ESP32-C6.

Move ulp_shm to 0x3c00, right after ulp_ram, and shift
lp_rtc from 0x3c00 to 0x3c10 (shrinking it by 16 bytes
from 0xf8 to 0xe8) to make room. All other regions
(retainedmem, ipc_shm, mbox0) keep their addresses.

Update LP core linker scripts to stop subtracting
shared mem size from the ram segment length, since
ulp_shm is now outside the coprocessor reservation.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-03-31 10:29:02 -05:00
Lauren Murphy
bfd0c29335 intel_adsp: NOLOAD .noinit
Mark .noinit as NOLOAD to prevent LLEXT heaps included in
snippets-noinit.ld from being marked as PROGBITS.

Fixes #105858

Signed-off-by: Lauren Murphy <lauren.murphy@intel.com>
2026-03-30 15:06:56 -05:00
Ofir Shemesh
b1afb494b0 flash: nxp: align FlexSPI NOR DTS with soc-nv-flash layout
NXP FlexSPI NOR flash nodes were missing the soc-nv-flash child
node expected by Zephyr's flash map API.

Without this child node, DT_MTD_FROM_FIXED_PARTITION resolved to
the FlexSPI memory controller instead of the flash device. Since
the controller has api = NULL, MCUboot could hit a NULL pointer
dereference during boot on Zephyr 4.4.

Fix this by updating the DTS structure to match the soc-nv-flash
convention used by the flash map infrastructure.

Changes:
- add a soc-nv-flash child under each nxp,imx-flexspi-nor node
- move erase-block-size, write-block-size, and partitions into it
- add ranges to flash controller nodes for address translation
- update zephyr,flash to point to the soc-nv-flash child
- add zephyr,flash-controller chosen for the flash driver node
- remove soc-nv-flash.yaml from nxp,imx-flexspi-nor.yaml
- use zephyr,flash-controller in flash CMake XIP decisions
- update FlexSPI XIP Kconfig logic to walk to the grandparent

This keeps the controller and flash device roles separate and
restores correct flash map resolution for MCUboot and XIP logic.

Signed-off-by: Ofir Shemesh <ofirshemesh777@gmail.com>
2026-03-30 15:04:48 -05:00
Mateusz Michalek
77eb31e860 soc: nordic: nrf54l: glitch detector Kconfig
defaults SOC_NRF54LX_SKIP_GLITCHDETECTOR_DISABLE
for MCUBOOT so detector stays on.

Signed-off-by: Mateusz Michalek <mateusz.michalek@nordicsemi.no>
2026-03-30 10:19:14 -05:00
Bas van Loon
c89ff75107 soc: mimxrt11xx: Remove call to CLOCK_OSC_GateOscRc400M.
Since RM1170 Rev. 5 the RC400 gate control bits are marked reserved.
Remove the call to CLOCK_OSC_GateOscRc400M since the headers need
updating to remove it completely as done with the RT1180.

Signed-off-by: Bas van Loon <bas@arch-embedded.com>
2026-03-30 10:02:41 -05:00
Jjateen Gundesha
10390471ee soc: intel_adsp/ace30: disable spin validation on simulator
- xt-clang seems to generate some memory access patterns which
result in the simulator accessing incorrect memory or messing
with cached TLB entries when spinlock validation is enabled.

- This is the same issue that was fixed for ace40 in commit
b98fc2740a (fixes #100885). Apply the same workaround to
ace30/ptl/sim and ace30/wcl/sim.

Signed-off-by: Jjateen Gundesha <jjateen97@gmail.com>
2026-03-30 09:59:04 -05:00
Jianxiong Gu
fc4a381bd2 soc: wch: unify SOC series naming for CH32V00X
Replace SOC_SERIES_CH32V00X with SOC_SERIES_QINGKE_V2C to maintain
consistent naming across SOC series.

Signed-off-by: Jianxiong Gu <jianxiong.gu@outlook.com>
2026-03-28 08:04:33 -04:00
McAtee Maxwell
f9ac7aac14 soc: add shared_memory region to custom mpu regions for pse84 soc
- Add shared_memory to custom mpu regions for Infineon pse84 soc series
- This resolves a bug in the wdt_basic_api test running on the m55 core
  for both the kit_pse84_eval and kit_pse84_ai platform

Signed-off-by: McAtee Maxwell <maxwell.mcatee@infineon.com>
2026-03-28 08:03:54 -04:00
Tom Burdick
649c842740 soc: realtek: Hide SOC Kconfigs
These Kconfigs were showing up in my build for a completely different
vendor. These are meant to be hidden Kconfigs meaning they do not have
descriptor strings next to their type.

Signed-off-by: Tom Burdick <thomas.burdick@infineon.com>
2026-03-27 20:20:02 -04:00
Benjamin Cabé
0a4886730e boards: soc: dts: Synaptics file should be in syna/ not synaptics/
SoC, DTS, and board files should live in directories named after the
vendor prefix so rename all occurrences of synaptics/ to syna/.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2026-03-27 13:55:37 -05:00
Martin Hoff
22fe218f76 soc: silabs: siwx91x: fix ram retention with power management
The real RAM size from DT is correct but the power manager API expect to
receive either 192/256/320 KB value, so we need to round it up to the
next boundary to avoid powering down the top M4 SRAM bank.

Signed-off-by: Martin Hoff <martin.hoff@silabs.com>
2026-03-27 08:16:40 -04:00
Jacob Wienecke
1723832511 soc: nxp: rw: fix RTC wakeup status early clear
POWER_ClearWakeupStatus for RTC was called on the PM3 exit path,
clearing the status before the application could query the wakeup source
via NXP_GET_WAKEUP_SIGNAL_STATUS().

Move the clear to the PM3 entry path, just before re-arming the wakeup
source. This matches the existing GPIO wakeup status handling which
already clears on entry.

Signed-off-by: Jacob Wienecke <jacob.wienecke@nxp.com>
2026-03-26 19:27:55 -04:00
Jonathan Keller
05c6f600c2 soc: infineon: pse84: initialize clock frequency in an m33/ns app
The system clock frequency was not initialized, causing the
`Cy_SysLib_Delay` family of PDL functions to delay for an incorrect amount
of time.

This was fixed for the M55 in #101015, but the fix was not applied to the
M33.

Fixes #106232.

Signed-off-by: Jonathan Keller <jonathan.keller@infineon.com>
2026-03-26 19:26:09 -04:00
Holt Sun
250d291ccb soc: nxp: kinetis: wire LMEM cache support
Wire the Kinetis LMEM-capable SoCs into the generic cache
management path by selecting the LMEM driver, enabling the
available instruction and system-bus cache capabilities, and
defaulting these parts to CACHE_MANAGEMENT with the external
cache backend.

Keep MCUX eDMA descriptors in the default SRAM placement on
SYSMPU-based Kinetis parts. Their SRAM region remains outside
the cached LMEM area, so they do not use the generic
NOCACHE_MEMORY path.

Signed-off-by: Holt Sun <holt.sun@nxp.com>
2026-03-25 07:57:21 -04:00
Jonathan Nilsen
75eae03f93 soc: nordic: uicr: fix outputs and dependencies
Update the UICR generator image to correctly track outputs and
dependencies as these depend on the options provided. This fixes
an issue where the UICR generation step was always rebuilt when
secondary PERIPHCONF was disabled, since secondary_periphconf.hex
was specified as an output but never produced. It also fixes
missing outputs/dependencies for mpcconf.hex/secondary_mpcconf.hex.

Signed-off-by: Jonathan Nilsen <jonathan.nilsen@nordicsemi.no>
2026-03-25 07:55:11 -04:00
Camille BAUD
93cc308192 soc: bflb: Fix typo in Kconfig names BL602L
Fix using lowercase L instead of uppercase L

Signed-off-by: Camille BAUD <mail@massdriver.space>
2026-03-25 07:52:50 -04:00
William Markezana
675c8ceb6a soc: bflb: bl70x: add BL706C00Q2I SoC variant
Add Kconfig and soc.yml entries for the BL706C00Q2I, which is the
base BL706 in QFN48 package without internal flash or PSRAM.

Signed-off-by: William Markezana <william.markezana@gmail.com>
2026-03-24 15:43:08 -05:00
Lauren Murphy
77a5e6cb94 llext: place heap sections for intel_adsp/ace/*
Place heap custom sections for intel_adsp/ace/*.

Fixes #105858

Signed-off-by: Lauren Murphy <lauren.murphy@intel.com>
2026-03-24 15:40:38 -05:00
Lauren Murphy
24b5de4d07 llext: place heap sections for imx8mp_evk/mimx8ml8/adsp
Place heap custom sections for imx8mp_evk/mimx8ml8/adsp.

Fixes #105853

Signed-off-by: Lauren Murphy <lauren.murphy@intel.com>
2026-03-24 15:40:38 -05:00
Marek Matej
94161f7233 soc: espressif: fix iterable sections include order
Fix the cases where iterable sections in RAM are used.

Signed-off-by: Marek Matej <marek.matej@espressif.com>
2026-03-24 15:38:38 -05:00
Vincent Tardy
9439366997 soc: stm32: fix issue about k_work_q used by soc and flash driver
In driver file flash_stm32wba_fm.c, rename ble_ctrl_work_q
to ble_ctle_work_q and make ble_ctle_work_q non-static
in SoC code

Signed-off-by: Vincent Tardy <vincent.tardy@st.com>
2026-03-24 10:52:29 -05:00
Mohit Talwar
43047d7c93 soc: nordic: guard RTC base address checks with ifdef
NRF_RTC and its numbered variants (NRF_RTC0, NRF_RTC1, NRF_RTC2,
NRF_RTC130, NRF_RTC131) are not defined on RTC-less SoCs such as
the nRF54L and nRF54H series. Wrapping the CHECK_DT_REG calls in
#ifdef guards prevents a build error when a devicetree node (e.g.
an external I2C RTC) happens to use one of these node labels.

Fixes #101686

Signed-off-by: Mohit Talwar <talwarmohit2005@gmail.com>
2026-03-24 10:51:29 -05:00
Raffael Rostagno
bf1e600e0c drivers: pinctrl: esp32: Add sleep hold flag
Add sleep hold flag to allow setting groups of pins to
automatically hold pad value during low power states (light/deep sleep).

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-24 09:05:47 -04:00
Raffael Rostagno
6af0ee72b3 soc: pm: esp32: Add gpio/pinctrl hold function
Add hardware pad function, configurable in DTS, which holds the pin
state when transitioning to a low power state (light/deep sleep).
Once set in DTS, PM interface will automatically handle holding
the pin state before transitioning it into a low power state.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2026-03-24 09:05:47 -04:00
Lubos Koudelka
2f18cf906b soc: arm: stm32: fix STM32WBA power build without MPU
Guard the STM32WBAX power driver `mpu_state` variable with
CONFIG_ARM_MPU.
With this change, CONFIG_PM=y and CONFIG_ARM_MPU=n now build
correctly on STM32WBA.

Signed-off-by: Lubos Koudelka <lubos.koudelka@st.com>
2026-03-24 09:05:09 -04:00
Guillaume Gautier
c2d711f605 soc: st: stm32: common: add const on read bitops operations
Read bitops operations now take const arguments.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-03-24 07:06:55 -04:00
Fabin V Martin
e8cafe53c7 soc: microchip: pic32cz_ca80: Include sercom mapping file
Include file for mapping DFP macros to follow a common
macro name across multiple SoC for sercom uart g1 driver

Signed-off-by: Fabin V Martin <Fabinv.Martin@microchip.com>
2026-03-24 07:06:16 -04:00