Commit graph zephyr/drivers/hwinfo/hwinfo_stm32.c
Author SHA1 Message Date
Fabrice DJIATSA
1a3b487382 drivers: hwinfo: stm32: add STM32WL33 UID handling
STM32WL33 LL driver do not implement a 96-bit UID, matching
the behavior of STM32WB0 devices. Although LL_GetUID_WordN()
is present, it exposes the 64-bit UID and does not provide a
third UID word.

Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
2026-09-04 06:22:42 -04:00
Vilhelm Engström
6d6202afb8 drivers: hwinfo: stm32: Do not read reserved memory
According to Table 6 in the reference manual, the system memory ranging
from 0x1ff00000 to 0x1ff1ffff on STM32H7 SoCs may be accessed only by
the Cortex-M7. Notably, this range includes the 96 bit UID located at
0x1ff1e800. Attempting to access this address from the Cortex-M4 results
in a HardFault.

Simply omit the z_impl_hwinfo_get_device_id function entirely on the
Cortex-M4 and rely on the weak default symbol to return an error.

Signed-off-by: Vilhelm Engström <vilhelm.engstrom@tuta.io>
2026-07-31 13:21:15 -04:00
Mathieu Choplain
f4ad8ed152 drivers: hwinfo: stm32: fix reset flags handling for STM32C5
The LL function is named differently on STM32C5 because the hardware is
different: the `RMVF` bit must be cleared by software, whereas hardware
clears it automatically on all other series.

Rework the implementation to be functional, and rename the function to
match intent while at it. Also, switch to a series-specific #if guard
since this is hardware-specific rather than related to HAL1/HAL2.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-05-29 10:49:49 +02:00
Mathieu Choplain
9af0576e8e drivers: hwinfo: stm32: add support for STM32WB0 series
Add support for STM32WB0 series to the STM32 HWINFO driver, using the SoC's
`UID64` as source for both UID and EUI64.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-04-30 14:03:53 -04:00
Mathieu Choplain
9e78d17742 drivers: *: stm32: use CONFIG_HAS_STM32_UNCACHED_ACCESS_ONLY_OTP
Instead of performing series check, use the new common Kconfig option
CONFIG_HAS_STM32_UNCACHED_ACCESS_ONLY_OTP in drivers which access the
internal NVM's OTP/read-only area.

While at it, use the public `sys_cache_xxx()` API in flash_stm32 instead
of the internal `cache_xxx()` API.

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-04-30 14:02:59 -04:00
Guillaume Gautier
1455833a13 drivers: hwinfo: stm32: add support for stm32c5
Add HWINFO support for STM32C5 SoCs.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2026-03-19 11:39:33 +00:00
Guillaume Gautier
124448582f drivers: stm32: replace READ_REG HAL macro by stm32_reg_read
For all STM32 drivers and SoC, replace the READ_REG macro and the
LL_xxx_ReadReg functions (defined in the STM32 HAL) by
stm32_reg_read defined in Zephyr.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
2025-10-24 08:58:25 -07:00
Youssef Zini
0c583441f1 drivers: hwinfo_stm32.c: add support for stm32mp2
Add support for STM32MP2 series in the hwinfo driver.
The STM32MP2 series uses the HAL functions since it doesn't have a
ll_utils.

Signed-off-by: Youssef Zini <youssef.zini@savoirfairelinux.com>
2025-06-17 08:20:33 +02:00
Emil Lindqvist
65b7470972 hwinfo: stm32: reverse device id byte order to match v4.1 order
Reverse back the device id byte order to the way it was in v4.1 to
return the same device id.

Signed-off-by: Emil Lindqvist <emil@lindq.gr>
2025-05-23 11:04:10 +02:00
Henrik Lindblom
1a3fb4adfc drivers: stm32: use cache peripheral driver
Use cache API for disabling and enabling ICACHE. The driver handles waiting
for ongoing cache invalidation.

Signed-off-by: Henrik Lindblom <henrik.lindblom@vaisala.com>
2025-04-25 11:04:37 +02:00
Arnaud Pouliquen
42463cbee8 drivers: hwinfo: stm32: add support for STM32MP13
Adds the support for the STM32MP13 series to the existing STM32
Hardware Information driver.

Note that there is no  LL_GetUID_Word<x> functions for the STM32MP13
series. to allow to use HAL_GetUIDw<x> functions create macros to
fill the stm32_uid structure.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
2025-04-16 01:09:56 +02:00
IBEN EL HADJ MESSAOUD Marwa
1ac85d3492 drivers: hwinfo: stm32u0: Clear standby and stop flags
Add the function that clear standby and stop flags

Signed-off-by: IBEN EL HADJ MESSAOUD Marwa <marwa.ibenelhadjmessaoud-ext@st.com>
2024-08-26 11:28:04 -04:00
Francois Ramu
895ef1d6c5 drivers: hwinfo: stm32 driver supports the stm32h7rs serie
Add the support of the stm32h7rs serie to the HWinfo
driver. UID base is 0x8FFF800

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2024-06-14 11:13:54 +02:00
Aurelien Jarno
185edca797 drivers: hwinfo: stm32: Add support for reading EUI64 on STM32W*
The STM32WB, STM32WB and STM32WBA families devices include a EUI64 ID
(called "IEEE 64-bit unique device ID register" in the reference manual
that is distinct from the standard device ID. Add support for reading
it, noting that it is stored in little endian format in the registers.

On other families the weak implementation takes over and returns
-ENOSYS.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2024-04-30 19:29:10 -05:00
Marc Desvaux
3392eb6af3 drivers: hwinfo: modification into hwinfo_get_reset_cause()
add retrieve flag SB into hwinfo_get_reset_cause()
add Clear flag SB into clear_reset_cause()

Signed-off-by: Marc Desvaux <marc.desvaux-ext@st.com>
2023-04-17 10:15:35 +02:00
Kenneth J. Miller
41db73dc80 Revert "drivers: hwinfo: modification into hwinfo_get_reset_cause()"
This reverts commit b523e33c48.

Signed-off-by: Kenneth J. Miller <ken@miller.ec>
2023-03-31 09:18:54 +02:00
Marc Desvaux
b523e33c48 drivers: hwinfo: modification into hwinfo_get_reset_cause()
add retrieve flag SB into hwinfo_get_reset_cause()
add Clear flag SB into clear_reset_cause()

Signed-off-by: Marc Desvaux <marc.desvaux-ext@st.com>
2023-03-30 09:50:55 +02:00
Francois Ramu
8d5ff8cb68 drivers: hwinfo stm32h5 device must disable icache to access UID_BASE
Reading the UID_BASE_ADDRESS requires disabling the icache
of the stm32h5x mcu.
Else a bus fault error occurs reading Address: 0x8fff800-0x8fff808
Enable afterwards.

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2023-03-29 10:04:39 +02:00
Erwan Gouriou
50473ec0a9 drivers: hwinfo: stm32: Deal with iwdgX and wwdgX instances
On some STM32 series (H7, MP1), iwdg and wwdg have multiple instances.
Due to current driver implementation, these wdg instances were not
checked in the function.

Fixes #53002

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2022-12-19 09:22:28 +00:00
Gerard Marull-Paretas
fb60aab245 drivers: migrate includes to <zephyr/...>
In order to bring consistency in-tree, migrate all drivers to the new
prefix <zephyr/...>. Note that the conversion has been scripted, refer
to #45388 for more details.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-05-06 19:58:21 +02:00
Arvin Farahmand
98a0ccd5c5 drivers: hwinfo: Add reset cause support
Add `hwinfo_get_reset_cause` and `hwinfo_clear_reset_cause` to retrieve
and to clear cause of system reset on supported platforms.

Different platforms can provide different causes of reset, however
there is a great deal of overlap. `enum reset_cause` can be expanded in
the future to support additional reasons, as additional platforms are
supported.

Signed-off-by: Arvin Farahmand <arvinf@ip-logix.com>
2021-06-08 10:16:17 +02:00
Martin Jäger
39d388287f drivers: hwinfo: stm32: use generic LL headers
Use generic LL headers instead of depending on soc.h.

Signed-off-by: Martin Jäger <martin@libre.solar>
2020-11-30 15:50:03 +01:00
Kumar Gala
a1b77fd589 zephyr: replace zephyr integer types with C99 types
git grep -l 'u\(8\|16\|32\|64\)_t' | \
		xargs sed -i "s/u\(8\|16\|32\|64\)_t/uint\1_t/g"
	git grep -l 's\(8\|16\|32\|64\)_t' | \
		xargs sed -i "s/s\(8\|16\|32\|64\)_t/int\1_t/g"

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2020-06-08 08:23:57 -05:00
Peter Bigot
8c749ffc0a drivers: hwinfo: update stm32 implementation byte order
The unique identifier for this platform is a 96-bit value, where the
upper 56 bits provide an ASCII encoding of the lot number, and the
lower 40 bits provide the wafer number and X, Y position on the wafer.
Extract the value into big-endian form for device-independent
interpretation.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2020-04-20 19:04:26 +02:00
Anas Nashif
f901e26de9 cleanup: include/: move hwinfo.h to drivers/hwinfo.h
move hwinfo.h to drivers/hwinfo.h and
create a shim for backward-compatibility.

No functional changes to the headers.
A warning in the shim can be controlled with CONFIG_COMPAT_INCLUDES.

Related to #16539

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2019-06-27 22:55:49 -04:00
Patrik Flykt
4344e27c26 all: Update reserved function names
Update reserved function names starting with one underscore, replacing
them as follows:
   '_k_' with 'z_'
   '_K_' with 'Z_'
   '_handler_' with 'z_handl_'
   '_Cstart' with 'z_cstart'
   '_Swap' with 'z_swap'

This renaming is done on both global and those static function names
in kernel/include and include/. Other static function names in kernel/
are renamed by removing the leading underscore. Other function names
not starting with any prefix listed above are renamed starting with
a 'z_' or 'Z_' prefix.

Function names starting with two or three leading underscores are not
automatcally renamed since these names will collide with the variants
with two or three leading underscores.

Various generator scripts have also been updated as well as perf,
linker and usb files. These are
   drivers/serial/uart_handlers.c
   include/linker/kobject-text.ld
   kernel/include/syscall_handler.h
   scripts/gen_kobject_list.py
   scripts/gen_syscall_header.py

Signed-off-by: Patrik Flykt <patrik.flykt@intel.com>
2019-03-11 13:48:42 -04:00
Alexander Wachter
1ed18b8988 drivers: hwinfo: change stm32 device id driver from HAL to LL
Use LL drivers instead of HAL driver because LL driver is available
for all soc while HAL driver is not.

Signed-off-by: Alexander Wachter <alexander.wachter@student.tugraz.at>
2019-03-09 16:05:20 -05:00
Alexander Wachter
8f3e6ab5d2 drivers: hwinfo: add driver support for STM32 device ID
Add driver support for STM32 ID device.
This device has an ID of 12 bytes.

Signed-off-by: Alexander Wachter <alexander.wachter@student.tugraz.at>
2019-02-03 12:07:20 -05:00