OpenThread can leave crypto operation contexts to the platform
(OPENTHREAD_CONFIG_CRYPTO_PLATFORM_ALLOCS_CONTEXT) instead of embedding
them in the core. Add OPENTHREAD_CRYPTO_PLATFORM_ALLOCS_CONTEXT, off by
default. When it is set, each operation type is drawn from its own
memory slab, with a Kconfig count, so the number of live contexts is
fixed and unrelated heap use cannot displace one.
An empty slab calls k_panic(). OpenThread core does not reliably check
otPlatCrypto*Init(), and a NULL context would leave crypto output
buffers unwritten.
The option depends on OPENTHREAD_CRYPTO_PSA.
Move the existing radio tests under tests/subsys/openthread/radio so the
crypto test can sit beside them. The radio test contents are unchanged.
Assisted-by: Cursor:grok-4.7
Signed-off-by: Michiba Toryu <Michiba.Toryu@silabs.com>
Add memc drivers for the NXP Smart External Memory Controller (SEMC)
and for SDRAM devices attached to it. The controller driver provides
reconfigure/soft-reset and SDRAM/SRAM/NOR/NAND configuration entry
points, while the SDRAM device driver is configured from devicetree
timing properties and implements the generic memc API
(get_mem_base/get_size; read/write default to a memcpy).
Switch the imxrt SoC dtsi files to the new nxp,semc compatible and
keep the SEMC node disabled by default, since the ROM boot code may
already initialize external memory that the kernel runs from.
Signed-off-by: Albort Xue <yao.xue@nxp.com>
Expose CONFIG_NRFX_WDT_CONFIG_STOP_AT_INIT and enable it by default
when nrfx WDT support is selected.
Map the option to an explicit nrfx configuration value. Document the
temporary loss of watchdog supervision and the failure behavior when
the inherited WDT configuration prohibits stopping.
Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
Using new symbol if available to select proper clock
source. Reqires nrfx API version bump to 4.7.0.
Signed-off-by: Michał Stasiak <michal.stasiak@nordicsemi.no>
fsl_opamp.h's OPAMP_Init()/OPAMP_Deinit() manage the instance's clock
themselves, calling CLOCK_EnableClock()/CLOCK_DisableClock() through a
per-instance lookup table rather than through clock_control. This
driver calls neither function, and the only things it does use from
the header -- OPAMP_Enable(), OPAMP_SetBiasCurrent() and
OPAMP_SetCompensationCapcitor() -- are each a one-line OPAMP_CTRL
read-modify-write using masks that live in the device's own CMSIS
register header, not in fsl_opamp.h.
Inline all three as the same read-modify-write on OPAMP_CTRL. Retype
bias_current from the HAL's opamp_bias_current_t to uint8_t: it was
only ever assigned a DT_INST_ENUM_IDX() index and passed to a uint8_t
parameter, never used as an enum.
Drop the #include entirely: OPAMP_Type and the register masks come
from the device's own CMSIS header, which the SoC's fsl_common.h
already makes available to every driver, so no explicit include is
needed here.
CONFIG_MCUX_COMPONENT_driver.opamp_fast only ever gated the MCUX
HAL's own fsl_opamp.c/.h; with that dependency gone, drop the
drivers.cmake line that turned it on for this driver's Kconfig
symbol.
Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
The HAL's OPAMP_Init()/OPAMP_Deinit() manage the instance's clock
themselves, calling CLOCK_EnableClock()/CLOCK_DisableClock() through a
per-instance lookup table rather than through clock_control. This
driver calls neither function.
Every register mask this file uses (OPAMP_OPAMP_CTR_*) is defined in
the device's own CMSIS register header, not in fsl_opamp.h; the only
things fsl_opamp.h was actually supplying were two one-line static
inline wrappers (OPAMP_DoNegGainConfig/OPAMP_DoPosGainConfig, both
just an OPAMP_CTR read-modify-write) and three enum constants used
only as fixed field encodings (kOPAMP_NegGainBufferMode,
kOPAMP_PosGainNonInvert1X, kOPAMP_PosRefVoltVrefh4). Inline the
wrappers as the same read-modify-write on OPAMP_CTR, and replace the
enum constants with local named constants carrying the same values.
Drop the #include entirely: OPAMP_Type and the register masks come
from the device's own CMSIS header, which the SoC's fsl_common.h
already makes available to every driver, so no explicit include is
needed here.
CONFIG_MCUX_COMPONENT_driver.opamp only ever gated the MCUX HAL's own
fsl_opamp.c/.h; with that dependency gone, drop the drivers.cmake line
that turned it on for this driver's Kconfig symbol.
Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
Each Arm CPU selected HAS_CMSIS_CORE, which the cmsis and the cmsis_6
glue both define, so a build without the module for its CPU passed
Kconfig and failed in the compiler on cmsis_core.h. Select the CPU's
own HAS_CMSIS_CORE_M, HAS_CMSIS_CORE_A or HAS_CMSIS_CORE_R instead,
which only the glue of the module that provides it defines, so that
Kconfig stops on the missing module. Configurations that have the
modules are unchanged.
Assisted-by: Claude:opus-5.5
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Add USE_INFINEON_MXCRYPTOLITE_* Kconfig symbols and CMake rules to build
the PDL source for the MXCRYPTOLITE block: cy_cryptolite_aes.c,
cy_cryptolite_aes_ccm.c, cy_cryptolite_vu.c, cy_cryptolite_trng.c, and the
unified cy_cryptolite_sha.c (SHA-256/384/512).
Signed-off-by: Niranjan M <niranjan@aerlync.com>
wpa_cli_cmd_v() discards the control interface reply, so a "FAIL"
from "SET country" (e.g. the driver rejecting the country code) was
reported as success.
Send the raw "SET country" command with a response buffer and return
-EINVAL unless the reply is "OK".
Signed-off-by: Kapil Bhatt <kapil.bhatt@nordicsemi.no>
ENABLE_NETWORK and SELECT_NETWORK both schedule scans, causing
an extra scan immediately after connection. This can cause
packet loss during DHCP and initial data exchange, and trigger
unwanted roaming.
Remove ENABLE_NETWORK in STA mode, as SELECT_NETWORK already
enables the selected network. Retain it for SoftAP mode.
Signed-off-by: Triveni Danda <triveni.danda@nordicsemi.no>
Link the OT platform utilities when link metrics subject support
is enabled. link_metrics.cpp depends on the OpenThread core
library, so the utils archive has to come before those libraries
on the link line.
Signed-off-by: sree sreerajatha <sree.sreerajatha@silabs.com>
A custom linker had been put in place to handle the assembly
file for cy_syslib_ext. That caused the custom linker to drift from
the original and miss important fixes. Rather than keeping the
copy in place and aligned, revisited the way the assembly file is
handled. Instead of hand-picking the one shipped with mtb-dsl
that matches the right toolchain, maintain a copy of it in Zephyr
(the linker changes often, the .S never does).
Assisted-by: Claude:claude-opus4.8
Signed-off-by: Laura Carlesso <laura.carlesso@infineon.com>
Add the SoC glue for the BL808 wifi4 firmware blob on the wifi4 driver:
MAC clock ungate, PHY power tables from devicetree, the firmware task
running the blob's own wifi_main(), the WIFI_RAM sections, and the IPC
glue for the BL808 shared environment, whose TX path queues descriptors
on list_ongoing and recycles them from list_cfm. Data frames use all
four descriptors; only EAPOL frames wait for their confirmation, as the
PTK is installed once handshake message 4 has left.
blob_printf() moves from the BLE OS shim to bflb_rf.c, shared by the
BLE controller, the WiFi firmware and the PHY library, and is quiet
outside WiFi debug builds as both blobs trace every scanned channel.
The first RF calibration, run at bring-up, executes with interrupts
locked: preempting it hangs the SoC. Unlike the BL602 one, the BL808
firmware also recalibrates periodically while it tracks a BSS
(mm_sta_tbtt -> rfc_channel_ops -> rf_init). Those calibrations keep
interrupts enabled, as locking them stalls the MAC for the whole
calibration: firmware timers run late and auth/assoc responses are
missed (join status 11/14).
Provide link stubs for the firmware symbols the driver and SoC glue
reference, for CONFIG_BUILD_ONLY_NO_BLOBS builds.
Signed-off-by: William Markezana <william.markezana@gmail.com>
Build bflb_rf.c and link the PHY library whenever a driver selects
CONFIG_BFLB_PHYRF, instead of listing the BLE and WiFi drivers.
Signed-off-by: William Markezana <william.markezana@gmail.com>
Point the hal_bouffalolab module at the revision that moves the wifi4
firmware host interface headers to include/bouffalolab/common/wifi4,
shared by BL60x and BL808, and the BL808 WiFi blobs.
Update the BL60x include path accordingly and drop the lmac_types.h
includes, as the shared headers use the standard integer types.
Signed-off-by: William Markezana <william.markezana@gmail.com>
The default NRFX configuration comes from
`hal/nordic/nrfx/bsp/stable/templates` directory and needs
to be overwritten for Zephyr purposes.
Signed-off-by: Adam Kondraciuk <adam.kondraciuk@nordicsemi.no>
Add a dedicated USE_INFINEON_SAR2_ADC symbol and build cy_sar2.c
from it instead of the generic USE_INFINEON_ADC, so the SAR2 PDL
source is only compiled for the SAR-v2 driver, not for every
Infineon ADC.
Signed-off-by: Alexpandi Muniyandi <alexpandi@linumiz.com>
When LV_Z_DRAW_PXP is enabled, the build requires the PXP driver
sources. Add it to the build.
Additionally, ensure `MCUX_PXP` is not enabled at the same time as
the PXP IRQ is required by both LVGL and the DMA driver resulting
in conflicts.
Signed-off-by: André Costa <andre_miguel_costa@hotmail.com>
The mDNS platform socket module declares a static array of
`zsock_pollfd` entries sized by
CONFIG_OPENTHREAD_ZEPHYR_BORDER_ROUTER_MAX_MDNS_SERVICES (2 when both
IPv6 and IPv4 are enabled), but never initializes it. Being a static
array it is zero-initialized, so every unused entry ends up with
`fd == 0` instead of the `-1` used to denote an unused slot.
`mdns_socket_init_v6()` only fills index 0 and then registers the whole
array with `net_socket_service_register(..., ARRAY_SIZE(sockfd_udp), ...)`,
so a bogus `{ .fd = 0, .events = 0 }` entry is registered as well. When
another module legitimately owns fd 0, the socket service steals its
events: `find_svc_and_event()` matches on the file descriptor alone and
returns the first service in linker order, then `trigger_work()` sees a
mismatch on `events` and permanently disarms the descriptor in the global
poll array. The real owner stops receiving data, with no handler ever
invoked and no error reported.
Initialize the array to -1 in `mdns_plat_socket_init()`, which runs
before any `otPlatMdnsSetListeningEnabled()` call, mirroring what
`udp_plat_init_sockfd()`, `infra_if_init()` and `dhcpv6_pd_client_init()`
already do for their own pollfd arrays.
Signed-off-by: Baptiste Coffin <baptiste.coffin_1@nxp.com>
The station and access point glue now keep their own copies of
the enterprise certificates and keys until the credentials are
replaced. With the build-time test certificates these used to
stay in read-only memory, so the heap now carries an extra load
of up to about 12 KB for the station and 6 KB for the access
point.
Reserve that memory in the system heap when the supplicant uses
it, and raise the dedicated supplicant heap defaults by the same
amount for each enterprise combination.
Assisted-by: Claude:opus-5
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
supplicant_connect() saved a shallow copy of the connect request
for NET_REQUEST_WIFI_CONN_PARAMS. Its string members point to the
caller's buffers, such as the shell arguments or a stack frame,
which are no longer valid once the request returns, and include
the passphrase and other secrets.
Build the saved parameters from an allowlist of scalar settings
on a zeroed struct, with an own copy of the SSID, so a pointer
member added later is not exposed. Document what the request
returns and note the change in the release notes.
Assisted-by: Claude:opus-5
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
hostapd_add_enterprise_creds() kept a shallow copy of the
caller's credentials, and AP enable handed those raw pointers to
the hostapd configuration blobs. The Wi-Fi certificate library
frees the buffers when the AP is disabled or the credentials are
replaced, so a later AP enable parsed freed memory, also when it
failed before setting the blobs again or used PSK, since
eap_server stays enabled.
Keep copies owned by the hostapd glue, wipe them when they are
replaced, and clear the configuration blobs that point to them
first. Refuse the replacement while the interface is enabled.
Assisted-by: Claude:opus-5
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
supplicant_add_enterprise_creds() kept a shallow copy of the
caller's credentials, so the certificate and key pointers were
only read at the next connect. The Wi-Fi certificate library
frees those buffers on disconnect and when the credentials are
replaced, so a later connect that does not set them again first
copied freed memory into the supplicant blobs.
Keep copies owned by the supplicant glue, made under the
supplicant mutex, and wipe them when they are replaced.
Assisted-by: Claude:opus-5
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
The members of struct net_if are internal to the network subsystem.
Get the interface configuration through net_if_get_config() instead of
accessing the config member directly.
Assisted-by: Claude:claude-opus-5.5
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
Adding missing PRA driver for PSoC6_64. This series calls
PRA functions unconditionally and failed to build.
Assisted-by: Claude:claude-opus-5
Signed-off-by: Zayne Stites <Zayne.Stites@infineon.com>
OpenThread requires OPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE
whenever timed reception is compiled into the sub-MAC. Besides the
CSL receiver and the wake-up listener, that is the case for radio-only
and raw link builds with software RX timing, which the Zephyr core
config enables for Thread 1.2 and newer.
OPENTHREAD_PLATFORM_USEC_TIMER has no prompt and defaulted to y for
the CSL receiver and the Wake-up End Device only, so an RCP or a raw
link build with Thread 1.2 or newer failed to compile. Default it to y
for those configurations as well.
Assisted-by: Claude:claude-fable-5.1
Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
Fixes an issue with a Kconfig which is improperly named and depends
on to indicate it only applies to direct-xip with revert, when it
actually applies to RAM load with revert also
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Enable the MCUboot bootutil library when the MCUmgr image management
server or client is enabled.
Add a Zephyr-side Kconfig option for linking applications with the
MCUboot bootutil headers and select the bootutil library from the
MCUmgr image management Kconfig symbols.
This ensures the required bootutil dependency is enabled automatically
for MCUmgr image management functionality.
Signed-off-by: Martin Meyer <meyer.m90@gmail.com>
There is no reason to enforce this and
it blocks customization when required.
Use imply to not change behavior otherwise.
Signed-off-by: Camille BAUD <mail@massdriver.space>
otPlatRadioSetMacKey() requires the platform to ignore aKeyIdMode
and treat the configured keys as Key ID Mode 1. The previous code
used aKeyIdMode to decide whether to install the keys, so a value
other than 1 left the driver with no MAC key.
Always pass key id mode 1 to the IEEE 802.15.4 driver. Install the
previous, current, and next keys when aKeyId is non-zero. aKeyId 0
still clears the keys.
Signed-off-by: Michiba Toryu <Michiba.Toryu@silabs.com>
CONFIG_TFM_MCUBOOT_ENCRYPTION_KEY_FILE is passed verbatim to the TF-M
build and to imgtool, whereas CONFIG_TFM_KEY_FILE_S and
CONFIG_TFM_KEY_FILE_NS go through string(CONFIGURE) first. A value set
in a .conf file that references a CMake variable, such as
"${ZEPHYR_MCUBOOT_MODULE_DIR}/enc-rsa2048-priv.pem", therefore reaches
TF-M unexpanded. The variable is undefined there and the build fails:
ninja: error: '/enc-rsa2048-priv.pem', needed by
'bl2/ext/mcuboot/keys_enc_generated.c', missing and no known rule to
make it
Expand the value the same way as the signing key paths. The default is
not affected, Kconfig already resolves $(ZEPHYR_MCUBOOT_MODULE_DIR) in
it to an absolute path.
Signed-off-by: Tim Pambor <tim.pambor@codewrights.de>
Changes the display setup code to not pass NULL as a value while setting up
the rounder callback, as this might raises asserts in future LVGL versions.
Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
Update LVGL to 9.6.0
The LVGL module now sources a zephyr/Kconfig.defaults before the
LVGL Kconfig.
The Zephyr tree no longer re-declares or references symbols of the
LVGL module Kconfig. Boards, shields and SoCs set Zephyr owned LV_Z_*
options instead, and Kconfig.defaults in the LVGL module turns them
into defaults of the matching LVGL options.
LVGL 9.6 replaces the color depth option with the
LV_COLOR_FORMAT_DEFAULT choice. The LV_Z_COLOR_FORMAT choice provides
its SoC, board and shield default, with a no default option that
keeps the LVGL default. LV_Z_DPI_DEF and LV_Z_DRAW_BUF_ALIGN have no
prompt and default to 0, which also keeps the LVGL default.
LV_ATTRIBUTE_MEM_ALIGN_SIZE has no LVGL counterpart and becomes
LV_Z_ATTRIBUTE_MEM_ALIGN_SIZE. LV_USE_GPU_NXP_PXP is used by hal_nxp
and keeps its name.
The render buffers are sized from the bits per pixel of
LV_COLOR_FORMAT_DEFAULT unless LV_Z_BITS_PER_PIXEL is set,
and the monochrome buffer layout follows CONFIG_LV_COLOR_FORMAT_I1,
so both follow a color format set by the application.
Logging and the system monitor stay with the LVGL module. The glue
logs through its own log module using the log level template, and
samples using the system monitor enable CPU_LOAD themselves.
Co-authored-by: Fabian Blatz <fabianblatz@gmail.com>
Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
Signed-off-by: André Costa <andre_miguel_costa@hotmail.com>
Move the LVGL configuration macros derived from Zephyr Kconfig options
from lv_conf.h into the new lvgl_zephyr_kconfig.h, which lv_conf.h
includes. The header becomes the single place mapping the Zephyr LVGL
Kconfig options to the LVGL configuration macros, similar to
nrfx_kconfig.h for nrfx.
lv_conf_internal.h includes lv_conf.h before it evaluates the options of
the LVGL module Kconfig, so the macros defined there take precedence.
Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
Add hardening rules for Trusted Firmware-M exception information
dumps and SPM debug logging.
- CONFIG_TFM_EXCEPTION_INFO_DUMP: n (strict)
- CONFIG_TFM_SPM_LOG_LEVEL_DEBUG: n (strict)
Assisted-by: Claude:fable-5
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Utilize a code spell-checking tool to scan for and correct spelling errors
in all files within:
- `modules/nrf_wifi`
- `modules/openthread`
Assisted-by: Claude:claude-sonnet-5-5 codespell
Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
supplicant_status() passes an uninitialized struct signal_poll_resp to
z_wpa_ctrl_signal_poll(). If parsing the SIGNAL_POLL reply does not fill
both fields, rssi and current_phy_tx_rate are reported from stack
garbage.
Signed-off-by: Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
Assisted-by: Claude:claude-opus-5
Add hardening rules for the hostap-based Wi-Fi supplicant:
constant-time SAE password element derivation and key material
logging.
- CONFIG_SAE_PWE_EARLY_EXIT: n (base)
- CONFIG_WIFI_NM_WPA_SUPPLICANT_DEBUG_SHOW_KEYS: n (base)
Assisted-by: Claude:fable-5
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Add hardening rules for Mbed TLS: debug output, the PSA RNG fallback to
a non-cryptographic source, TLS 1.3 early data, the TLS 1.2
Encrypt-then-MAC and Extended Master Secret extensions, and the set of
enabled PSA algorithms.
- CONFIG_MBEDTLS_DEBUG_C: n (base)
- CONFIG_MBEDTLS_MEMORY_DEBUG: n (strict)
- CONFIG_MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG_ALLOW_NON_CSPRNG: n (base)
- CONFIG_MBEDTLS_SSL_EARLY_DATA: n (base)
- CONFIG_MBEDTLS_SSL_ENCRYPT_THEN_MAC: y (base)
- CONFIG_MBEDTLS_SSL_EXTENDED_MASTER_SECRET: y (base)
- CONFIG_PSA_CRYPTO_ENABLE_ALL: n (base)
Assisted-by: Claude:fable-5
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
The option only enabled the driver.pxp HAL component, which
CONFIG_MCUX_PXP already enables, defaulting to y when the
nxp,pxp devicetree node is enabled. Remove the option and its
set_variable_ifdef so the component is driven solely by
MCUX_PXP.
Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
The generic firmware key API derives the cipher from the key length and
stores a group key in slot vif * 4 + key_idx. The IGTK (key_idx 4) thus
went in as a CCMP key over the pairwise key of station 0 whenever the
link used interface 1, as the first connection after boot always does:
the link came up but no unicast frame decrypted and DHCP never completed.
Install it with bl_wifi_set_igtk_internal() instead.
Signed-off-by: William Markezana <william.markezana@gmail.com>
The firmware caches only a handful of BSSes seen while scanning, and
drops every frame from a BSS it cannot cache. A scan leaves that cache
full and a join scan does not clear it, so joining an AP the scan did
not happen to cache failed with status 14, typically on the first
connect after a scan. Clear the cache once a scan completes.
Add scanu_cached_scanresult_clear() to the BL60x no-blobs link stubs,
along with the sm_env the driver already referenced, whose absence
broke CONFIG_BUILD_ONLY_NO_BLOBS builds on BL60x.
Signed-off-by: William Markezana <william.markezana@gmail.com>
The MTB startup file's warmboot path in system_psc3_x6.c overrides the
PDL's weak Cy_SysPm_StoreDSContext_Wfi() and references
__s_vector_table_rw and __STACK_LIMIT, which come from the MTB startup
file and linker script that Zephyr replaces. Define
CYBSP_SKIP_PM_REGISTRATION for the HAL library to leave it out.
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
Assisted-by: Claude:opus-5
Do not imply SECURE_STORAGE when OPENTHREAD_COPROCESSOR_RCP is enabled.
Radio Co-processor (RCP) mode delegates network state and cryptographic
storage to the host architecture, making local secure storage unnecessary.
Signed-off-by: Michele Sardo <msmttchr@gmail.com>
The RT1175 is the dual-core (Cortex-M7 + M4) RT1176 without the whole
DISPLAY power domain (GPU2D, PXP, CSI, eLCDIF, LCDIFv2, MIPI CSI, MIPI
DSI): LCDIFv2 has no row in the datasheet's ordering table either, and
is removed with the rest of the domain per the reference manual's
power domain list.
Add SOC_MIMXRT1175(_CM4/_CM7) and its six part numbers, mirroring RT1176
in Kconfig, clock_init() and the sysbuild second-core launcher default,
plus a devicetree deleting the six DISPLAY domain nodes (csi, lcdif,
lcdifv2, pxp, mipi_dsi, mipi_csi2rx). The part numbers select nothing,
as for RT1166/RT1176: the board selects the CM4/CM7 symbol instead.
modules/hal_nxp's cache driver selection hardcodes which imxrt11xx
SoCs use the LMEM cache driver on their M4 core instead of testing
HAS_MCUX_LMEM_CACHE generically; add RT1175, or its M4 build links
against the wrong cache driver and fails to build.
SYS_CLOCK_HW_CYCLES_PER_SEC for SOC_MIMXRT1175_CM7/_CM4 is derived
from devicetree instead of a literal, per review. Add clock-frequency
to cpu0/cpu1 in the RT1175 core dtsi, matching RT1176's existing
values (996MHz/400MHz).
Built samples/hello_world for both cores and all six part numbers on
an out-of-tree board, confirming SYS_CLOCK_HW_CYCLES_PER_SEC resolves
to 996000000/400000000; enabling any deleted node from an overlay
fails with an undefined node label error. mimxrt1170_evk and
vmu_rt1170 (both cores) produce identical binaries before and after.
Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Massimiliano Cialdi <cialdi@gmail.com>
modules/hal_ethos_u/Kconfig defaults ETHOS_U_NPU_CONFIG to
ETHOS_U55_256 for SOC_SERIES_PSE84. The Ethos-U55 integrated in
PSE84 is a U55-128 part, confirmed three independent ways: the
NPU's own configuration register reports macs_per_cc=7 (2^7 = 128
MACs/cycle, 24 KiB SHRAM), a second, independent ID register field
agrees, and the datasheet throughput figure of 51.2 GOPS at 400 MHz
works out to 128 ops/cycle rather than 256.
Because this default only affects which Vela accelerator config an
integrator's build assumes, and not anything checked at build time,
a model compiled against the wrong default builds, links and boots
without any diagnostic, then fails at the first Invoke() with an
NPU config mismatch:
I: Optimizer config. macs_per_cc=8, shram_size=48
I: Ethos-U config. macs_per_cc=7, shram_size=24
E: ethosu_device_u55_u65.c:358: NPU config mismatch.
npu.macs_per_cc=7, optimizer.macs_per_cc=8
Set the PSE84 default to ETHOS_U55_128 to match the silicon.
Re-running Vela at --accelerator-config ethos-u55-128 against an
existing model gives identical operator coverage, so this is a
correctness fix with no capability change for existing PSE84 users
who already override the default correctly.
Assisted-by: Copilot:claude-sonnet-5
Signed-off-by: Clark Jarvis <Clark.Jarvis@infineon.com>
Update cmsis-nn to v8.0.0 on the zephyr-v8.0.0 branch of the Zephyr
fork.
v8.0.0 adds experimental float16 and float32 kernels, which upstream
only builds when ARM_NN_ENABLE_F16 or ARM_NN_ENABLE_F32 is set. The
BasicMath, Concatenation and Reshape globs matched every source in
their directory and would pick up the new *_f16.c and *_f32.c files,
so restrict them to the integer sources. The set of integer sources
is unchanged from v7.0.0.
Tested with twister: libraries.cmsis_nn passes on mps2/an521/cpu0,
mps2/an385 and qemu_cortex_m3, and builds for frdm_k64f,
sam_e70_xplained/same70q21, mps3/corstone300/fvp and
mps4/corstone315/fvp.
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>