Commit Graph

142 Commits

Author SHA1 Message Date
Abderrahmane JARMOUNI
f66658a52a soc: stm32: fix FLASH_BASE_ADDR for apps linked in ext Q/OSPI Flash
Following changes in e35ac8f and 14c1b4a to how external Q/OSPI Flash
nodes are declared in DT for boards with STM32 SoCs, FLASH_BASE_ADDRESS
needs to be set manually similar to XSPI Flash, so that it does not
default to (dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH)) which gives 0.
This change is critical for running apps with MCUboot from external
Q/OSPI Flash.

Signed-off-by: Abderrahmane JARMOUNI <git@jarmouni.me>
2025-07-16 16:38:41 -05:00
Khaoula Bidani
d469eb3a8d soc: stm32u3: Update ROM_START_OFFSET
Update offset to 0x400 o align with MCUboot image.

Signed-off-by: Khaoula Bidani <khaoula.bidani-ext@st.com>
2025-07-09 17:15:56 -05:00
Oleh Kravchenko
35b8ff43f4 soc: stm32f1x: Remove redundant code and clear SB flag
There is no need to call stm32_pwr_wkup_pin_cfg_pupd() because
the SoC does not have a pull-up/pull-down on the WKUP pin.

Call LL_PWR_ClearFlag_SB() before entering StandBy power mode.

Signed-off-by: Oleh Kravchenko <oleg@kaa.org.ua>
2025-07-08 18:34:22 -05:00
Oleh Kravchenko
a75abdc5df soc: stm32f1x: fix typo/debug in stop/standby modes
Check for STM32F1 series was done with "#ifdef SOC_SERIES_STM32F1X"
but this symbol comes from Kconfig.

Use the correct "CONFIG_SOC_SERIES_STM32F1X" instead.

Signed-off-by: Oleh Kravchenko <oleg@kaa.org.ua>
2025-07-04 13:05:13 -05:00
Pisit Sawangvonganan
0ec49fa570 kconfig: fix typo in (soc, subsys)
Utilize a code spell-checking tool to scan for and correct spelling errors
in `Kconfig` files within the `soc` and `subsys` directory.
Additionally, incorporates a fix recommended by the reviewer.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2025-07-01 10:58:54 -10:00
Romain Jayles
684b90e6b3 bluetooth: stm32wbax: add temperature calibration of linklayer
This patch allows to link the request of the linklayer for a
temperature calibration to the temperature driver.
The linklayer will then adapt and trigger its calibration related to
the current temperature.

Signed-off-by: Romain Jayles <romain.jayles@st.com>
2025-06-26 10:59:31 -05:00
Etienne Carriere
d54c550ba9 soc: st: stm32wbax: refcount backup domain accesses requests
Add LINKLAYER_PLAT_EnableBackupDomainAccess()  and
LINKLAYER_PLAT_DisableBackupDomainAccess() to use Zephyr resources
that use a reference counter for access requests, for enabling
and disabling access the BackupDomain resources.

Bump hal_stm32 module to the revision integrating related stm32wba
BLE updates.

Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
2025-06-26 12:43:17 +02:00
Etienne Carriere
7514c1aedc soc: st: stm32: reference counter for Backup SRAM accesses
Use recently added SoCs functions to request access to SoC backup
domain resources These function use a reference counter to track these
request and ensure the resources are accessible as long as at least a
consumer requires access.

Fixes issue 90942.

Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
2025-06-26 12:43:17 +02:00
Etienne Carriere
e3c2036994 soc: st: stm32: reference counting for backup domain accesses
Add SoC functions to enable/disable STM32 backup Domain access
and use a reference counter to track requests. These helper functions
may be called from a interrupt context. On domain access enable, the
function loops until written bit is set however this is expected to be
effective after very few clock cycles and seems not even required
(not mentioned in any SoC documentation). The loop is preserved as
used in previous implementation.

Among all supported STM32 SoCs, only STM32C0 and STM32WB0 series do not
implement this mechanism hence add option CONFIG_STM32_BACKUP_PROTECTION
that is enabled for all SoC series but these 2.

Fixes issue 90942.

Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
2025-06-26 12:43:17 +02:00
Erwan Gouriou
2f20e78d7d dts: n6: Allow using axisram2 in chainloaded application
Make axisram2 which is used in fsbl mode available as well to
chainloaded application in order not to loose 1M of RAM

In order to avoid conflicts with bootloader, verify that code + ro data
of the loaded application won't go further than bootloader start address.
This is done with a linker assert.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-06-26 09:41:37 +02:00
Erwan Gouriou
51373c77c4 soc: stm32n6: Don't sign mcuboot chainloaded images
This signature is only valid for FSBL images.
MCUBooot will sign images by itself.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-06-26 09:41:37 +02:00
Erwan Gouriou
30705108bd soc: stm32n6: Update ROM_START_OFFSET
Offset is 400 for a good reason (yet to be defined).

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-06-26 09:41:37 +02:00
Mickael Bosch
03bca9bae9 soc: stm32u0: add PM
STM32U0 specific changes to enable the PM feature.
Base on the power-related code from the STM32U5 target.

Signed-off-by: Mickael Bosch <mickael.bosch@linux.com>
2025-06-25 15:33:47 -10:00
Mathieu Choplain
fcd30046cb drivers: pinctrl: stm32: add support for STM32N6 pinctrl
Modify the STM32 pinctrl driver and SoC-specific pinctrl macros
to introduce support of the st,stm32n6-pinctrl variant.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-06-20 13:21:55 -04:00
Alain Volmat
6274df7a0b soc: st: stm32: stm32n6: set 256 SMH buffer alignment for LTDC
Set the LTDC buffer alignment to 256 in order to avoid an
issue when accessing to PSRAM via XSPI.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-19 13:57:51 +02:00
Alain Volmat
d33f579684 soc: st: stm32: set default video buffer align to 16 for DCMIPP
Set the default video buffer alignment constraint to 16 when DCMIPP
is being used.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-19 13:57:51 +02:00
Alain Volmat
7640180e7c soc: st: stm32: set default SMH attribute for LTDC/video buffers
The SMH attribute when using the XSPI PSRAM is set to EXTERNAL (2)
within the driver hence set default for both LTDC and video
buffer SMH attribute to 2 if all conditions are validated.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-19 13:57:51 +02:00
Youssef Zini
c7d8e03ccf soc: linker.ld: add linker script for stm32mp2x
Add a linker script for the stm32mp2x soc series. It includes the
standard arm cortex-m linker and adds standard zephyr relocation
sections.
Replace the rom_start section name with .isr_vectors in the linker
script. This is necessary for the zephyr firmware to be started by the
remote proc driver which expects the section containing the vector table
to be named .isr_vectors.

Signed-off-by: Youssef Zini <youssef.zini@savoirfairelinux.com>
2025-06-17 08:20:33 +02:00
Youssef Zini
e3953f10ad soc: stm32: add initial soc support for stm32mp2x
Add initial soc support for the stm32mp2x series, including
initial Kconfig entries and default configuration files.
This enables Zephyr to recognize and build for the stm32mp2x series,
taking the stm32mp257f_ev1 as a baseline.

Includes:
- Kconfig and defconfig files for SoC selection and defaults
- soc.h for hal headers
- CMakeLists.txt for build system integration
- soc.yml update to register the new SoC

System Clock is configured statically from DTS. So no initialization
hook or soc.c needed.

Signed-off-by: Youssef Zini <youssef.zini@savoirfairelinux.com>
2025-06-17 08:20:33 +02:00
Khaoula Bidani
85e6cc421e soc: st: stm32: Add series stm32u3
Add STM32U3 familly support

Signed-off-by: Khaoula Bidani <khaoula.bidani-ext@st.com>
2025-06-16 13:59:38 -04:00
Mathieu Choplain
1793934e61 soc: st: stm32n6: invoke signing tool in silent mode
The STM32 signing tool (STM32_SigningTool_CLI) is invoked as a post-build
command to generate a signed Zephyr binary, which is required to run from
flash on N6 series. If the file specified as output already exists, the
tool will by default prompt to confirm it should be overwritten. However,
when invoked from the build system rather than a terminal, this prompt
will break the build (freeze during the "Linking zephyr.elf" step). This
can be seen by building the same application twice in a row, as the second
build will not be different enough to make the build artifacts be deleted
and thus the (old) signed image will be seen by the tool.

Invoke the tool in silent mode such that user is never prompted. This fixes
build failures while still working as intended (if present, the existing
signed image will get overwritten properly).

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-06-13 14:29:18 +02:00
Ali Hozhabri
529a8dd147 soc: stm32: stm32wb0x: Restore main stack size to the default value
Restore main stack size to the default value since fake entropy
implementation from mbedtls is replaced by STM32 entropy driver.

Signed-off-by: Ali Hozhabri <ali.hozhabri@st.com>
2025-06-12 09:32:41 -07:00
Mathieu Choplain
4282d67ac2 soc: st: stm32h7: synchronize cores during boot properly
On dual-core STM32H7, the Cortex-M4 core is supposed to wait until the
Cortex-M7 initializes the system before starting to execute. CM7 should
signal this by locking a specific HSEM, which CM4 should poll until locked.
However, the logic on the Cortex-M4 side was reading the "RLR" register of
HSEM, which *locks the semaphore on read* - in turn, this makes the CM4
start directly since it sees that the semaphore is locked (by itself).

Use proper LL API to read HSEM status - which will read the "R" register
instead - to make sure CM4 doesn't begin execution earlier than it should.

Suggested-by: hglassdyb
Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-06-10 12:08:35 +02:00
Mathieu Choplain
86c5135982 soc: st: stm32: hsem: update description for fifth HSEM
The fifth HSEM (#define is equal to 4 due to zero-indexing) is used on
STM32H7 to synchronize the two cores. Update the comment above the SEMID
define to reflect this alternate usage. Also remove the associated define
CFG_HW_ENTRY_STOP_MODE_MASK_SEMID, which is unused.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-06-10 12:08:35 +02:00
Mathieu Choplain
97e2dd28b3 soc: st: stm32: hsem: sort hardware semaphore IDs by value
Reorder the HSEM semaphore ID definitions to be sorted by ascending value.
The dummy defines are also changed to be sorted in the same order. The
definitions for STM32MP1 are already in an order that follows this order
so they don't need to be changed.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-06-10 12:08:35 +02:00
Adam Mitchell
dcf94aaf7b dts: arm: st: h7: Add support for STM32H742
Adds base Devicetree files for H742Xi/g variants

Signed-off-by: Adam Mitchell <adam.mitchell@brillpower.com>
2025-06-10 08:51:45 +02:00
Harris Tomy
d280d89214 dts/kconfig: stm32u5: add f9 and clean up dts node locations
Adds skeleton dtsi for u5f9 for u5g9 to inherit from

Moves the peripheral nodes into dtsi's that actually has the peripheral
and includes them for SoC's higher in the series where applicable.

signed-off-by: Harris Tomy <harristomy@gmail.com>
2025-06-09 14:26:11 -07:00
Henrik Lindblom
24b4ce189f drivers: stm32: dma: fix external dcache support
Several drivers checked for the presense and availability of data cache
through Kconfig symbol. This is supported according to the current
documentation, but the symbol DCACHE masks two types of cache devices: arch
and external caches. The latter is present on some Cortex-M33 chips, like
the STM32U5xx. The external dcache is bypassed when accessing internal
SRAM and only used for external memories.

In commit a2dd232410 ("drivers: adc: stm32: dma support") the rationale
for gating dcache for adc_stm32 behind STM32H7X is only hinted at, but
reason seems to be that it was the only SOC the change was tested on. The
SOC configures DCACHE=y so it is most likely safe to swap the SOC gate for
DCACHE.

The DCACHE ifdefs are now hidden inside the shared stm32_buf_in_nocache()
implementation.

Signed-off-by: Henrik Lindblom <henrik.lindblom@vaisala.com>
2025-06-06 10:19:58 +02:00
Francois Ramu
ad0466f423 soc: st: stm32 Kconfig to retrieve the external Flash Base address
This commit is retrieving the config FLASH_BASE_ADDRESS
from the XSPI node of the stm32 device dtsi <reg> property of the
"st,stm32-xspi" node. For example the CONFIG_FLASH_BASE_ADDRESS
 is 0x90000000 and application is linked for that address.
Size is given by the size property of the "st,stm32-xspi-nor" node.

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2025-05-21 17:35:06 +02:00
Oleh Kravchenko
4f69acc3d4 soc: stm32f1x: Add support for stop/standby modes
Add config and overlay to samples for testing stop/standby modes:

- samples/boards/st/power_mgmt/blinky
- samples/boards/st/power_mgmt/wkup_pins

I've measured consumption for each low-power mode:
- stop (regulator in run mode) ~217 uA
- stop (regulator in low-power mode) ~206 uA
- standby mode ~3.5 uA

Low-power mode wakeup timings from the datasheet,
but it barely meets these in reality:
- stop (regulator in run mode) 3.6 us
- stop (regulator in low-power mode) 5.4 us
- standby 50 us

It's possible to use RTC as idle timer to exit from stop mode.

Signed-off-by: Oleh Kravchenko <oleg@kaa.org.ua>
2025-05-20 10:16:20 +02:00
Harris Tomy
e31a6be0b0 soc: st: add stm32u535 support
Adds the u535 soc, similar to the u545 except without the AES HW
accelerator

signed-off-by: Harris Tomy <harristomy@gmail.com>
2025-05-14 19:36:26 +02:00
Conny Marco Menebröcker
fa53d93107 soc: add stm32l100xb
This patch adds support for the stm32l100 SoC. Tested on private board.

Signed-off-by: Conny Marco Menebröcker <c-m-m@gmx.de>
2025-05-08 01:57:52 +02:00
Guillaume Gautier
83e0ca82b6 soc: st: stm32n6: add arm v8.1 mvei and mvef kconfig
STM32N6 supports M-Profile Vector Extension (MVE) integer and
floating-point instruction set.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-05-06 15:31:51 +02:00
Martin Jäger
70947968d4 soc: stm32: common: wkup_pins: fix log output
Remove newline in log output and simplify log message.

Signed-off-by: Martin Jäger <martin@libre.solar>
2025-05-02 09:15:59 +02:00
Martin Jäger
bb0e580be4 soc: stm32g0x: add poweroff implementation
Same implementation as stm32c0x and stm32l4x. This is required
for wake-up from sleep.

Signed-off-by: Martin Jäger <martin@libre.solar>
2025-05-02 01:17:02 +02:00
Henrik Lindblom
9de3d6bf64 soc: stm32: use cache peripheral driver
Use the Zephyr cache API in soc initialization code instead of calling the
HAL directly. The change does not modify the pre-existing cache settings,
just changes the path they are enabled.

Signed-off-by: Henrik Lindblom <henrik.lindblom@vaisala.com>
2025-04-25 11:04:37 +02:00
Erwan Gouriou
b4c1dc63a8 soc: stm32h7r/s: smps is supported on all SoCs
Remove the sanity check between Cube HAL SMPS symbol and Kconfig SMPS
configuration.
SMPS is available on all STM32H7R/S SoC, so misalignment isn't possible.

Additionally, point to the hal commit which revert the fix which was done
on hal_stm32 to add this symbol.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2025-04-24 10:39:34 +02:00
Ricardo Rivera-Matos
2b553ba74f soc: stm32: Adds support for STM32F401XD variants
Introduces config file entries for STM32F401XD variants. The
STM32F401XD family is related to the STM32F401XE family but with a
reduced flash memory.

Signed-off-by: Ricardo Rivera-Matos <ricardo.rivera-matos@cirrus.com>
2025-04-24 01:27:43 +02:00
Guillaume Gautier
9f02634d3f soc: st: stm32n6: configure regulator for best performance
Configure the main internal Regulator output voltage for best performance
on STM32N6.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-04-22 14:03:22 +02:00
Arnaud Pouliquen
cea2487d3d soc: st: stm32mp13: add missing arm_mmu.h include
The samples/subsys/llext/shell_loader test fails when running as a
twister test on the stm32mp135f_dk/stm32mp135fxx platform, with the
following error:

soc/st/stm32/stm32mp13x/soc.c:46:36:
error: array type has incomplete element type 'struct arm_mmu_region'
   46 | static const struct arm_mmu_region mmu_regions[] = {

This commit adds the missing arm_mmu.h include to fix the build issue.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
2025-04-16 17:08:37 +02:00
Charles Dias
389c9e7b67 soc: st: stm32: add support for stm32u5g9xx
Add Kconfig and YML SoC configurations for STM32U5G9xx.

Signed-off-by: Charles Dias <charlesdias.cd@outlook.com>
2025-04-16 01:10:06 +02:00
Francois Ramu
82d0c7aa5c soc: stm32: Adds the STM32WBA65x device.
This commit adds support for the STM32WBA65x MCU.

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2025-04-15 15:33:15 +02:00
Tomáš Juřena
d700943d29 soc: st: stm32: Add poweroff to F4 family
Allows F4 MCUs to enter standby mode which behave similar to the poweroff
mode.

Signed-off-by: Tomáš Juřena <jurenatomas@gmail.com>
2025-04-11 06:33:56 +02:00
Tomáš Juřena
315ea56fef soc: st: common: Rename STM32_PWR_WKUP_PIN_SRC_x
This renames the STM32_PWR_WKUP_PIN_SRC_x symbols to better match
their meaning. It also adds a new symbol (STM32_PWR_WKUP_PIN_NOT_MUXED)
for SoCs without wake-up mux support.

Signed-off-by: Tomáš Juřena <jurenatomas@gmail.com>
2025-04-09 15:22:59 +02:00
Tomáš Juřena
f1e3784b9d soc: st: stm32: poweroff uses stm32_wkup_pins
Update the poweroff code to use stm32_pwr_wkup_pin_cfg_pupd if enabled.

Signed-off-by: Tomáš Juřena <jurenatomas@gmail.com>
2025-04-08 11:45:24 +02:00
Christopher Cichiwskyj
7dcec3384e soc: add support for STM32F479
This chip shares its design with STM32F469, but with
an added cryptography accelerator.

Signed-off-by: Christopher Cichiwskyj <cichiwskyj@gmail.com>
2025-04-04 12:06:29 +02:00
Julien Racki
c099e27c06 soc: st: stm32: Provide basic support for STM32MP13 series
Enable basic support to STM32MP13, in single core configuration (A7)
with I and D cache enabled.

Signed-off-by: Julien Racki <julien.racki@st.com>
2025-04-04 09:35:03 +02:00
Fin Maaß
d139d84338 drivers: ethernet: stm32: make mac a child like the mdio node
mac and mdio are now on the same level, this way
phy-handle can be used.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2025-04-02 10:31:34 +02:00
Georgij Cernysiov
b2b6b9be7e soc: st: h7: m7: remove voltage scale setting
The voltage scaling is set during h7 clock initialization.

Signed-off-by: Georgij Cernysiov <geo.cgv@gmail.com>
2025-03-31 21:59:28 +02:00
Mathieu Anquetin
bd0de75090 soc: st: stm32: add support for stm32f439
STM32F439 SoC is an STM32F429 with an integrated crypto/hash processor
providing hardware acceleration for encryption (AES and TDES) and hash
(MD5, SHA-1 and SHA-2).

Signed-off-by: Mathieu Anquetin <mathieu.anquetin@groupe-cahors.com>
2025-03-28 16:09:50 +01:00