diff --git a/.github/workflows/manifest-PR.yml b/.github/workflows/manifest-PR.yml index a871aa381de..47330114652 100644 --- a/.github/workflows/manifest-PR.yml +++ b/.github/workflows/manifest-PR.yml @@ -1,7 +1,7 @@ name: handle manifest PR on: pull_request_target: - types: [opened, synchronize, closed] + types: [opened, synchronize, closed, reopened] branches: - main diff --git a/.gitignore b/.gitignore index aab3981f52f..c24356df575 100644 --- a/.gitignore +++ b/.gitignore @@ -102,6 +102,7 @@ MaintainersFormat.txt ModulesMaintainers.txt Nits.txt Pylint.txt +PythonCompat.txt Ruff.txt SphinxLint.txt SysbuildKconfig.txt diff --git a/Kconfig.zephyr b/Kconfig.zephyr index 4993e56c8b2..994730d1933 100644 --- a/Kconfig.zephyr +++ b/Kconfig.zephyr @@ -7,7 +7,7 @@ source "Kconfig.constants" -osource "${APPLICATION_SOURCE_DIR}/VERSION" +osource "$(APPLICATION_SOURCE_DIR)/VERSION" # Include Kconfig.defconfig files first so that they can override defaults and # other symbol/choice properties by adding extra symbol/choice definitions. @@ -967,7 +967,7 @@ config BUILD_OUTPUT_STRIP_PATHS bool "Strip absolute paths from binaries" default y help - If the compiler supports it, strip the ${ZEPHYR_BASE} prefix from the + If the compiler supports it, strip the $(ZEPHYR_BASE) prefix from the __FILE__ macro used in __ASSERT*, in the .noinit."/home/joe/zephyr/fu/bar.c" section names and in any application code. diff --git a/arch/arm/core/cortex_m/reset.S b/arch/arm/core/cortex_m/reset.S index c3f9362eca8..17b7a1d830f 100644 --- a/arch/arm/core/cortex_m/reset.S +++ b/arch/arm/core/cortex_m/reset.S @@ -83,6 +83,17 @@ SECTION_SUBSEC_FUNC(TEXT,_reset_section,__start) #endif /* CONFIG_INIT_ARCH_HW_AT_BOOT */ #if defined(CONFIG_PM_S2RAM) +#if DT_NODE_EXISTS(DT_NODELABEL(pm_s2ram_stack)) &&\ + DT_NODE_HAS_COMPAT(DT_NODELABEL(pm_s2ram_stack), zephyr_memory_region) + /* In certain scenarios, the interrupt stack is actually not safe to overwrite. + * For example, when MCUboot is used, the bootloader's "z_interrupt_stack" and the + * loaded image's "z_interrupt_stacks" are NOT at the same address, and writing to + * the former would corrupt unrelated data from the loaded image. To support such + * scenarios, if the Device Tree provides a specially named "zephyr,memory-region", + * use it as the stack to run arch_pm_s2ram_resume instead of the interrupt stack. + */ + ldr r0, =DT_REG_ADDR(DT_NODELABEL(pm_s2ram_stack)) + DT_REG_SIZE(DT_NODELABEL(pm_s2ram_stack)) +#else /* * Temporarily set MSP to interrupt stack so that arch_pm_s2ram_resume can * use stack for calling pm_s2ram_mark_check_and_clear. @@ -95,6 +106,7 @@ SECTION_SUBSEC_FUNC(TEXT,_reset_section,__start) * a short while, there is no change in behavior in either of the paths. */ ldr r0, =z_interrupt_stacks + CONFIG_ISR_STACK_SIZE + MPU_GUARD_ALIGN_AND_SIZE +#endif msr msp, r0 bl arch_pm_s2ram_resume diff --git a/boards/arm/mps4/Kconfig.defconfig b/boards/arm/mps4/Kconfig.defconfig new file mode 100644 index 00000000000..96cbd9472ea --- /dev/null +++ b/boards/arm/mps4/Kconfig.defconfig @@ -0,0 +1,23 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_MPS4_CORSTONE315_FVP || BOARD_MPS4_CORSTONE320_FVP + +if SERIAL + +config UART_INTERRUPT_DRIVEN + default y + +endif # SERIAL + +if ROMSTART_RELOCATION_ROM && (BOARD_MPS4_CORSTONE315_FVP || BOARD_MPS4_CORSTONE320_FVP) + +config ROMSTART_REGION_ADDRESS + default $(dt_nodelabel_reg_addr_hex,itcm) + +config ROMSTART_REGION_SIZE + default $(dt_nodelabel_reg_size_hex,itcm,0,k) + +endif + +endif diff --git a/boards/arm/mps4/Kconfig.mps4 b/boards/arm/mps4/Kconfig.mps4 new file mode 100644 index 00000000000..46ce14cc062 --- /dev/null +++ b/boards/arm/mps4/Kconfig.mps4 @@ -0,0 +1,7 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_MPS4 + select SOC_SERIES_MPS4 + select SOC_MPS4_CORSTONE315 if BOARD_MPS4_CORSTONE315_FVP || BOARD_MPS4_CORSTONE315_FVP_NS + select SOC_MPS4_CORSTONE320 if BOARD_MPS4_CORSTONE320_FVP || BOARD_MPS4_CORSTONE320_FVP_NS diff --git a/boards/arm/mps4/board.cmake b/boards/arm/mps4/board.cmake new file mode 100644 index 00000000000..4e5044ab1b7 --- /dev/null +++ b/boards/arm/mps4/board.cmake @@ -0,0 +1,49 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +# +# Default emulation: +# FVP is used by default for corstone320/fvp. +# + + +if(CONFIG_BOARD_MPS4_CORSTONE315_FVP OR CONFIG_BOARD_MPS4_CORSTONE315_FVP_NS) + set(SUPPORTED_EMU_PLATFORMS armfvp) + set(ARMFVP_BIN_NAME FVP_Corstone_SSE-315) +elseif(CONFIG_BOARD_MPS4_CORSTONE320_FVP OR CONFIG_BOARD_MPS4_CORSTONE320_FVP_NS) + set(SUPPORTED_EMU_PLATFORMS armfvp) + set(ARMFVP_BIN_NAME FVP_Corstone_SSE-320) +endif() + +if(CONFIG_BOARD_MPS4_CORSTONE315_FVP OR CONFIG_BOARD_MPS4_CORSTONE320_FVP) + set(ARMFVP_FLAGS + # default is '0x11000000' but should match cpu.INITSVTOR which is 0. + -C mps4_board.subsystem.iotss3_systemcontrol.INITSVTOR_RST=0 + # default is 0x8, this change is needed since we split flash into itcm + # and sram and it reduces the number of available mpu regions causing a + # few MPU tests to fail. + -C mps4_board.subsystem.cpu0.MPU_S=16 + ) +endif() + +if(CONFIG_BUILD_WITH_TFM) + set(ARMFVP_FLAGS ${ARMFVP_FLAGS} -a ${APPLICATION_BINARY_DIR}/zephyr/tfm_merged.hex) +endif() + +# FVP Parameters +# -C indicate a config option in the form of: +# instance.parameter=value +# Run the FVP with --list-params to list all options +set(ARMFVP_FLAGS ${ARMFVP_FLAGS} + -C mps4_board.uart0.out_file=- + -C mps4_board.uart0.unbuffered_output=1 + -C mps4_board.uart1.out_file=- + -C mps4_board.uart1.unbuffered_output=1 + -C mps4_board.uart2.out_file=- + -C mps4_board.uart2.unbuffered_output=1 + -C mps4_board.visualisation.disable-visualisation=1 + -C mps4_board.telnetterminal0.start_telnet=0 + -C mps4_board.telnetterminal1.start_telnet=0 + -C mps4_board.telnetterminal2.start_telnet=0 + -C vis_hdlcd.disable_visualisation=1 + ) diff --git a/boards/arm/mps4/board.yml b/boards/arm/mps4/board.yml new file mode 100644 index 00000000000..760321039f6 --- /dev/null +++ b/boards/arm/mps4/board.yml @@ -0,0 +1,15 @@ +board: + name: mps4 + full_name: MPS4 + vendor: arm + socs: + - name: 'corstone315' + variants: + - name: 'fvp' + variants: + - name: 'ns' + - name: 'corstone320' + variants: + - name: 'fvp' + variants: + - name: 'ns' diff --git a/boards/arm/mps4/mps4-pinctrl.dtsi b/boards/arm/mps4/mps4-pinctrl.dtsi new file mode 100644 index 00000000000..e8b7e720703 --- /dev/null +++ b/boards/arm/mps4/mps4-pinctrl.dtsi @@ -0,0 +1,68 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + /omit-if-no-ref/ uart3_default: uart3_default { + group1 { + pinmux = ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ uart4_default: uart4_default { + group1 { + pinmux = ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ spi3_default: spi3_default { + group1 { + pinmux = , , + ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ spi4_default: spi4_default { + group1 { + pinmux = , , ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ sbcon2_default: sbcon2_default { + group1 { + pinmux = , ; + input-enable; + }; + }; + + /omit-if-no-ref/ sbcon3_default: sbcon3_default { + group1 { + pinmux = , ; + input-enable; + }; + }; +}; diff --git a/boards/arm/mps4/mps4_common.dtsi b/boards/arm/mps4/mps4_common.dtsi new file mode 100644 index 00000000000..ad97dae06af --- /dev/null +++ b/boards/arm/mps4/mps4_common.dtsi @@ -0,0 +1,121 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* /dts-v1/; */ + +#include +#include +#include +#include +#include + +/ { + aliases { + led0 = &led_0; + led1 = &led_1; + sw0 = &user_button_0; + sw1 = &user_button_1; + }; + + leds { + compatible = "gpio-leds"; + + led_0: led_0 { + gpios = <&gpio_led0 0>; + label = "USERLED0"; + }; + + led_1: led_1 { + gpios = <&gpio_led0 1>; + label = "USERLED1"; + }; + + led_2: led_2 { + gpios = <&gpio_led0 2>; + label = "USERLED2"; + }; + + led_3: led_3 { + gpios = <&gpio_led0 3>; + label = "USERLED3"; + }; + + led_4: led_4 { + gpios = <&gpio_led0 4>; + label = "USERLED4"; + }; + + led_5: led_5 { + gpios = <&gpio_led0 5>; + label = "USERLED5"; + }; + + led_6: led_6 { + gpios = <&gpio_led0 6>; + label = "USERLED6"; + }; + + led_7: led_7 { + gpios = <&gpio_led0 7>; + label = "USERLED7"; + }; + + led_8: led_8 { + gpios = <&gpio_led0 8>; + label = "PB1LED"; + }; + + led_9: led_9 { + gpios = <&gpio_led0 9>; + label = "PB2LED"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + + user_button_0: button_0 { + label = "USERPB0"; + gpios = <&gpio_button 0>; + zephyr,code = ; + }; + + user_button_1: button_1 { + label = "USERPB1"; + gpios = <&gpio_button 1>; + zephyr,code = ; + }; + }; + + null_ptr_detect: null_ptr_detect@0 { + compatible = "zephyr,memory-region"; + /* 0 - CONFIG_CORTEX_M_NULL_POINTER_EXCEPTION_PAGE_SIZE> */ + reg = <0x0 0x400>; + zephyr,memory-region = "NULL_PTR_DETECT"; + zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_FLASH) )>; + }; + + /* DDR4 - 2G, alternates non-secure/secure every 256M */ + ddr4: memory@60000000 { + device_type = "memory"; + compatible = "zephyr,memory-region"; + reg = <0x60000000 DT_SIZE_M(256) + 0x70000000 DT_SIZE_M(256) + 0x80000000 DT_SIZE_M(256) + 0x90000000 DT_SIZE_M(256) + 0xa0000000 DT_SIZE_M(256) + 0xb0000000 DT_SIZE_M(256) + 0xc0000000 DT_SIZE_M(256) + 0xd0000000 DT_SIZE_M(256)>; + zephyr,memory-region = "DDR4"; + }; +}; + +&nvic { + arm,num-irq-priority-bits = <3>; +}; + +#include "mps4-pinctrl.dtsi" diff --git a/boards/arm/mps4/mps4_common_soc_peripheral.dtsi b/boards/arm/mps4/mps4_common_soc_peripheral.dtsi new file mode 100644 index 00000000000..6cc3f405ea7 --- /dev/null +++ b/boards/arm/mps4/mps4_common_soc_peripheral.dtsi @@ -0,0 +1,218 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +sysclk: system-clock { + compatible = "fixed-clock"; + clock-frequency = <25000000>; + #clock-cells = <0>; +}; + +gpio0: gpio@100000 { + compatible = "arm,cmsdk-gpio"; + reg = <0x100000 0x1000>; + interrupts = <69 3>; + gpio-controller; + #gpio-cells = <2>; +}; + +gpio1: gpio@101000 { + compatible = "arm,cmsdk-gpio"; + reg = <0x101000 0x1000>; + interrupts = <70 3>; + gpio-controller; + #gpio-cells = <2>; +}; + +gpio2: gpio@102000 { + compatible = "arm,cmsdk-gpio"; + reg = <0x102000 0x1000>; + interrupts = <71 3>; + gpio-controller; + #gpio-cells = <2>; +}; + +gpio3: gpio@103000 { + compatible = "arm,cmsdk-gpio"; + reg = <0x103000 0x1000>; + interrupts = <72 3>; + gpio-controller; + #gpio-cells = <2>; +}; + +eth0: eth@400000 { + /* Linux has "smsc,lan9115" */ + compatible = "smsc,lan9220"; + /* Actual reg range is ~0x200 */ + reg = <0x400000 0x100000>; + interrupts = <49 3>; +}; + +i2c_touch: i2c@8100000 { + compatible = "arm,versatile-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x8100000 0x1000>; +}; + +i2c_audio_conf: i2c@8101000 { + compatible = "arm,versatile-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x8101000 0x1000>; +}; + +spi_adc: spi@8102000 { + compatible = "arm,pl022"; + reg = <0x8102000 DT_SIZE_K(4)>; + interrupts = <53 3>; + interrupt-names = "shield_adc"; + clocks = <&sysclk>; + #address-cells = <1>; + #size-cells = <0>; +}; + +spi_shield0: spi@8103000 { + compatible = "arm,pl022"; + reg = <0x8103000 DT_SIZE_K(4)>; + interrupts = <54 3>; + interrupt-names = "shield0_spi"; + clocks = <&sysclk>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-0 = <&spi3_default>; + pinctrl-names = "default"; +}; + +spi_shield1: spi@8104000 { + compatible = "arm,pl022"; + reg = <0x8104000 DT_SIZE_K(4)>; + interrupts = <55 3>; + interrupt-names = "shield1_spi"; + clocks = <&sysclk>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-0 = <&spi4_default>; + pinctrl-names = "default"; +}; + +i2c_shield0: i2c@8105000 { + compatible = "arm,versatile-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x8105000 0x1000>; + pinctrl-0 = <&sbcon2_default>; + pinctrl-names = "default"; +}; + +i2c_shield1: i2c@8106000 { + compatible = "arm,versatile-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x8106000 0x1000>; + pinctrl-0 = <&sbcon3_default>; + pinctrl-names = "default"; +}; + +i2c_ddr4_eeprom: i2c@8108000 { + compatible = "arm,versatile-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x8108000 0x1000>; +}; + +gpio_led0: mps4_fpgaio@8202000 { + compatible = "arm,mmio32-gpio"; + reg = <0x8202000 0x4>; + gpio-controller; + #gpio-cells = <1>; + ngpios = <8>; +}; + +gpio_button: mps4_fpgaio@8202008 { + compatible = "arm,mmio32-gpio"; + reg = <0x8202008 0x4>; + gpio-controller; + #gpio-cells = <1>; + ngpios = <2>; + direction-input; +}; + +gpio_misc: mps4_fpgaio@820204c { + compatible = "arm,mmio32-gpio"; + reg = <0x820204c 0x4>; + gpio-controller; + #gpio-cells = <1>; + ngpios = <3>; +}; + +uart0: uart@8203000 { + compatible = "arm,cmsdk-uart"; + reg = <0x8203000 0x1000>; + interrupts = <34 3 33 3>; + interrupt-names = "tx", "rx"; + clocks = <&sysclk>; + current-speed = <115200>; +}; + +uart1: uart@8204000 { + compatible = "arm,cmsdk-uart"; + reg = <0x8204000 0x1000>; + interrupts = <36 3 35 3>; + interrupt-names = "tx", "rx"; + clocks = <&sysclk>; + current-speed = <115200>; +}; + +uart2: uart@8205000 { + compatible = "arm,cmsdk-uart"; + reg = <0x8205000 0x1000>; + interrupts = <38 3 37 3>; + interrupt-names = "tx", "rx"; + clocks = <&sysclk>; + current-speed = <115200>; +}; + +uart3: uart@8206000 { + compatible = "arm,cmsdk-uart"; + reg = <0x8206000 0x1000>; + interrupts = <40 3 39 3>; + interrupt-names = "tx", "rx"; + clocks = <&sysclk>; + current-speed = <115200>; + pinctrl-0 = <&uart3_default>; + pinctrl-names = "default"; +}; + +uart4: uart@8207000 { + compatible = "arm,cmsdk-uart"; + reg = <0x8207000 0x1000>; + interrupts = <42 3 41 3>; + interrupt-names = "tx", "rx"; + clocks = <&sysclk>; + current-speed = <115200>; + pinctrl-0 = <&uart4_default>; + pinctrl-names = "default"; +}; + +uart5: uart@8208000 { + compatible = "arm,cmsdk-uart"; + status = "disabled"; + reg = <0x8208000 0x1000>; + interrupt-names = "tx", "rx"; + interrupts = <126 3 125 3>; + clocks = <&sysclk>; + current-speed = <115200>; +}; + +pinctrl: pinctrl { + compatible = "arm,mps4-pinctrl"; + status = "okay"; +}; diff --git a/boards/arm/mps4/mps4_corstone315_fvp.dts b/boards/arm/mps4/mps4_corstone315_fvp.dts new file mode 100644 index 00000000000..98c87ce7ed7 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone315_fvp.dts @@ -0,0 +1,97 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include + +/ { + compatible = "arm,mps4-fvp"; + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,sram = &sram; + zephyr,flash = &isram; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m85"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + mpu: mpu@e000ed90 { + compatible = "arm,armv8.1m-mpu"; + reg = <0xe000ed90 0x40>; + }; + }; + }; + + ethosu { + #address-cells = <1>; + #size-cells = <0>; + interrupt-parent = <&nvic>; + + ethosu0: ethosu@50004000 { + compatible = "arm,ethos-u"; + reg = <0x50004000>; + interrupts = <16 3>; + secure-enable; + privilege-enable; + status = "okay"; + }; + }; + + /* We utilize the secure addresses, if you subtract 0x10000000 + * you'll get the non-secure alias + */ + itcm: itcm@10000000 { /* alias @ 0x0 */ + compatible = "zephyr,memory-region"; + reg = <0x10000000 DT_SIZE_K(32)>; + zephyr,memory-region = "ITCM"; + }; + + sram: sram@12000000 { /* alias @ 0x01000000 */ + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x12000000 DT_SIZE_M(2)>; + zephyr,memory-region = "SRAM"; + }; + + dtcm: dtcm@30000000 { /* alias @ 0x20000000 */ + compatible = "zephyr,memory-region"; + reg = <0x30000000 DT_SIZE_K(32)>; + zephyr,memory-region = "DTCM"; + }; + + isram: sram@31000000 { /* alias @ 0x21000000 */ + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x31000000 DT_SIZE_M(4)>; + zephyr,memory-region = "ISRAM"; + }; + + soc { + peripheral@50000000 { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x50000000 0x10000000>; + + #include "mps4_common_soc_peripheral.dtsi" + }; + }; +}; + +#include "mps4_common.dtsi" diff --git a/boards/arm/mps4/mps4_corstone315_fvp.yaml b/boards/arm/mps4/mps4_corstone315_fvp.yaml new file mode 100644 index 00000000000..4af1421bcbc --- /dev/null +++ b/boards/arm/mps4/mps4_corstone315_fvp.yaml @@ -0,0 +1,26 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +identifier: mps4/corstone315/fvp +name: Arm MPS4-Corstone315-FVP +type: mcu +arch: arm +ram: 2048 +flash: 4096 +simulation: + - name: armfvp + exec: FVP_Corstone_SSE-315 +toolchain: + - gnuarmemb + - zephyr +supported: + - gpio +testing: + default: true + timeout_multiplier: 4 + ignore_tags: + - drivers + - bluetooth + - net + - timer +vendor: arm diff --git a/boards/arm/mps4/mps4_corstone315_fvp_defconfig b/boards/arm/mps4/mps4_corstone315_fvp_defconfig new file mode 100644 index 00000000000..26d5a732e49 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone315_fvp_defconfig @@ -0,0 +1,19 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_RUNTIME_NMI=y +CONFIG_ARM_TRUSTZONE_M=y +CONFIG_ARM_MPU=y + +# GPIOs +CONFIG_GPIO=y + +# Serial +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y + +# Build a Secure firmware image +CONFIG_TRUSTED_EXECUTION_SECURE=y +# ROMSTART_REGION address and size are defined in Kconfig.defconfig +CONFIG_ROMSTART_RELOCATION_ROM=y diff --git a/boards/arm/mps4/mps4_corstone315_fvp_ns.dts b/boards/arm/mps4/mps4_corstone315_fvp_ns.dts new file mode 100644 index 00000000000..cb5a38baf47 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone315_fvp_ns.dts @@ -0,0 +1,102 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include + +/ { + compatible = "arm,mps4-fvp"; + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,sram = &ram; + zephyr,flash = &code; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m85"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + mpu: mpu@e000ed90 { + compatible = "arm,armv8.1m-mpu"; + reg = <0xe000ed90 0x40>; + }; + }; + }; + + /* We utilize the non-secure addresses, if you add 0x10000000 + * you'll get the secure alias + */ + itcm: itcm@0 { + compatible = "zephyr,memory-region"; + reg = <0x0 DT_SIZE_K(32)>; + zephyr,memory-region = "ITCM"; + }; + + sram: sram@1000000 { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x1000000 DT_SIZE_M(2)>; + zephyr,memory-region = "SRAM"; + }; + + dtcm: dtcm@20000000 { + compatible = "zephyr,memory-region"; + reg = <0x20000000 DT_SIZE_K(512)>; + zephyr,memory-region = "DTCM"; + }; + + isram: sram@21000000 { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x21000000 DT_SIZE_M(4)>; + zephyr,memory-region = "ISRAM"; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* The memory regions defined below must match what the TF-M + * project has defined for that board - a single image boot is + * assumed. Please see the memory layout in: + * https://git.trustedfirmware.org/plugins/gitiles/TF-M/trusted-firmware-m.git/+/HEAD/platform/ext/target/arm/mps4/common/partition/flash_layout.h + */ + + code: memory@28080000 { + reg = <0x28080000 DT_SIZE_K(512)>; + }; + + ram: memory@21020000 { + reg = <0x21020000 DT_SIZE_M(1)>; + }; + }; + + soc { + peripheral@40000000 { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x40000000 0x10000000>; + + #include "mps4_common_soc_peripheral.dtsi" + }; + }; +}; + +#include "mps4_common.dtsi" diff --git a/boards/arm/mps4/mps4_corstone315_fvp_ns.yaml b/boards/arm/mps4/mps4_corstone315_fvp_ns.yaml new file mode 100644 index 00000000000..01bee24100a --- /dev/null +++ b/boards/arm/mps4/mps4_corstone315_fvp_ns.yaml @@ -0,0 +1,15 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +identifier: mps4/corstone315/fvp/ns +name: Arm MPS4-Corstone315-FVP_ns +type: mcu +arch: arm +ram: 1024 +flash: 512 +toolchain: + - gnuarmemb + - zephyr +testing: + only_tags: + - trusted-firmware-m diff --git a/boards/arm/mps4/mps4_corstone315_fvp_ns_defconfig b/boards/arm/mps4/mps4_corstone315_fvp_ns_defconfig new file mode 100644 index 00000000000..d59d419011b --- /dev/null +++ b/boards/arm/mps4/mps4_corstone315_fvp_ns_defconfig @@ -0,0 +1,19 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_TRUSTZONE_M=y +CONFIG_RUNTIME_NMI=y +CONFIG_ARM_MPU=y + +# GPIOs +CONFIG_GPIO=y + +# Serial +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y + +# Build a Non-secure firmware image +CONFIG_TRUSTED_EXECUTION_SECURE=n +CONFIG_TRUSTED_EXECUTION_NONSECURE=y +CONFIG_BUILD_WITH_TFM=y diff --git a/boards/arm/mps4/mps4_corstone320_fvp.dts b/boards/arm/mps4/mps4_corstone320_fvp.dts new file mode 100644 index 00000000000..98c87ce7ed7 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone320_fvp.dts @@ -0,0 +1,97 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include + +/ { + compatible = "arm,mps4-fvp"; + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,sram = &sram; + zephyr,flash = &isram; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m85"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + mpu: mpu@e000ed90 { + compatible = "arm,armv8.1m-mpu"; + reg = <0xe000ed90 0x40>; + }; + }; + }; + + ethosu { + #address-cells = <1>; + #size-cells = <0>; + interrupt-parent = <&nvic>; + + ethosu0: ethosu@50004000 { + compatible = "arm,ethos-u"; + reg = <0x50004000>; + interrupts = <16 3>; + secure-enable; + privilege-enable; + status = "okay"; + }; + }; + + /* We utilize the secure addresses, if you subtract 0x10000000 + * you'll get the non-secure alias + */ + itcm: itcm@10000000 { /* alias @ 0x0 */ + compatible = "zephyr,memory-region"; + reg = <0x10000000 DT_SIZE_K(32)>; + zephyr,memory-region = "ITCM"; + }; + + sram: sram@12000000 { /* alias @ 0x01000000 */ + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x12000000 DT_SIZE_M(2)>; + zephyr,memory-region = "SRAM"; + }; + + dtcm: dtcm@30000000 { /* alias @ 0x20000000 */ + compatible = "zephyr,memory-region"; + reg = <0x30000000 DT_SIZE_K(32)>; + zephyr,memory-region = "DTCM"; + }; + + isram: sram@31000000 { /* alias @ 0x21000000 */ + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x31000000 DT_SIZE_M(4)>; + zephyr,memory-region = "ISRAM"; + }; + + soc { + peripheral@50000000 { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x50000000 0x10000000>; + + #include "mps4_common_soc_peripheral.dtsi" + }; + }; +}; + +#include "mps4_common.dtsi" diff --git a/boards/arm/mps4/mps4_corstone320_fvp.yaml b/boards/arm/mps4/mps4_corstone320_fvp.yaml new file mode 100644 index 00000000000..624c8580812 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone320_fvp.yaml @@ -0,0 +1,25 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +identifier: mps4/corstone320/fvp +name: Arm MPS4-Corstone320-FVP +type: mcu +arch: arm +ram: 2048 +flash: 4096 +simulation: + - name: armfvp + exec: FVP_Corstone_SSE-320 +toolchain: + - gnuarmemb + - zephyr +supported: + - gpio +testing: + default: true + ignore_tags: + - drivers + - bluetooth + - net + - timer +vendor: arm diff --git a/boards/arm/mps4/mps4_corstone320_fvp_defconfig b/boards/arm/mps4/mps4_corstone320_fvp_defconfig new file mode 100644 index 00000000000..26d5a732e49 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone320_fvp_defconfig @@ -0,0 +1,19 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_RUNTIME_NMI=y +CONFIG_ARM_TRUSTZONE_M=y +CONFIG_ARM_MPU=y + +# GPIOs +CONFIG_GPIO=y + +# Serial +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y + +# Build a Secure firmware image +CONFIG_TRUSTED_EXECUTION_SECURE=y +# ROMSTART_REGION address and size are defined in Kconfig.defconfig +CONFIG_ROMSTART_RELOCATION_ROM=y diff --git a/boards/arm/mps4/mps4_corstone320_fvp_ns.dts b/boards/arm/mps4/mps4_corstone320_fvp_ns.dts new file mode 100644 index 00000000000..c511a7cc700 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone320_fvp_ns.dts @@ -0,0 +1,102 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include + +/ { + compatible = "arm,mps4-fvp"; + #address-cells = <1>; + #size-cells = <1>; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,sram = &ram; + zephyr,flash = &code; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m85"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + mpu: mpu@e000ed90 { + compatible = "arm,armv8.1m-mpu"; + reg = <0xe000ed90 0x40>; + }; + }; + }; + + /* We utilize the secure addresses, if you subtract 0x10000000 + * you'll get the non-secure alias + */ + itcm: itcm@0 { + compatible = "zephyr,memory-region"; + reg = <0x0 DT_SIZE_K(32)>; + zephyr,memory-region = "ITCM"; + }; + + sram: sram@1000000 { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x1000000 DT_SIZE_M(2)>; + zephyr,memory-region = "SRAM"; + }; + + dtcm: dtcm@20000000 { + compatible = "zephyr,memory-region"; + reg = <0x20000000 DT_SIZE_K(512)>; + zephyr,memory-region = "DTCM"; + }; + + isram: sram@21000000 { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x21000000 DT_SIZE_M(4)>; + zephyr,memory-region = "ISRAM"; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* The memory regions defined below must match what the TF-M + * project has defined for that board - a single image boot is + * assumed. Please see the memory layout in: + * https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/tree/platform/ext/target/mps4/corstone320/common/partition/flash_layout.h + */ + + code: memory@28080000 { + reg = <0x28080000 DT_SIZE_K(512)>; + }; + + ram: memory@21020000 { + reg = <0x21020000 DT_SIZE_M(1)>; + }; + }; + + soc { + peripheral@40000000 { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x40000000 0x10000000>; + + #include "mps4_common_soc_peripheral.dtsi" + }; + }; +}; + +#include "mps4_common.dtsi" diff --git a/boards/arm/mps4/mps4_corstone320_fvp_ns.yaml b/boards/arm/mps4/mps4_corstone320_fvp_ns.yaml new file mode 100644 index 00000000000..45ee954a337 --- /dev/null +++ b/boards/arm/mps4/mps4_corstone320_fvp_ns.yaml @@ -0,0 +1,15 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +identifier: mps4/corstone320/fvp/ns +name: Arm MPS4-Corstone320-FVP_ns +type: mcu +arch: arm +ram: 1024 +flash: 512 +toolchain: + - gnuarmemb + - zephyr +testing: + only_tags: + - trusted-firmware-m diff --git a/boards/arm/mps4/mps4_corstone320_fvp_ns_defconfig b/boards/arm/mps4/mps4_corstone320_fvp_ns_defconfig new file mode 100644 index 00000000000..d59d419011b --- /dev/null +++ b/boards/arm/mps4/mps4_corstone320_fvp_ns_defconfig @@ -0,0 +1,19 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_TRUSTZONE_M=y +CONFIG_RUNTIME_NMI=y +CONFIG_ARM_MPU=y + +# GPIOs +CONFIG_GPIO=y + +# Serial +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y + +# Build a Non-secure firmware image +CONFIG_TRUSTED_EXECUTION_SECURE=n +CONFIG_TRUSTED_EXECUTION_NONSECURE=y +CONFIG_BUILD_WITH_TFM=y diff --git a/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.dts b/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.dts index 39a986ae2b6..e7883bcbfab 100644 --- a/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.dts +++ b/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.dts @@ -32,8 +32,8 @@ / { /* * Default SRAM planning when building for nRF54L10 with ARM TrustZone-M support. - * - Lowest 96 kB SRAM allocated to Secure image (sram0_s). - * - Upper 96 kB SRAM allocated to Non-Secure image (sram0_ns). + * - Lowest 72 kB SRAM allocated to Secure image (sram0_s). + * - Upper 72 kB SRAM allocated to Non-Secure image (sram0_ns). * * nRF54L10 has 192 kB of volatile memory (SRAM) but the last 42kB are reserved for * the FLPR MCU. @@ -59,14 +59,11 @@ }; &cpuapp_rram { - /* TODO: revert this hack when TF-M update is available that fixes partition sizes */ - reg = <0x0 DT_SIZE_K(1022)>; - partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; - /* nRF54L10 has 1022 kB of non volatile memory (RRAM) but the + /* nRF54L10 has 1012 kB of non volatile memory (RRAM) but the * last 62kB are reserved for the FLPR MCU. * * This static layout needs to be the same with the upstream TF-M layout in the @@ -95,12 +92,12 @@ slot0_ns_partition: partition@6A000 { label = "image-0-nonsecure"; - reg = <0x0006A000 DT_SIZE_K(504)>; + reg = <0x0006A000 DT_SIZE_K(494)>; }; - storage_partition: partition@E8000 { + storage_partition: partition@E5800 { label = "storage"; - reg = <0x000E8000 DT_SIZE_K(32)>; + reg = <0x000E5800 DT_SIZE_K(32)>; }; }; }; diff --git a/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.yaml b/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.yaml index d2ad19f03c4..19bb368fc61 100644 --- a/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.yaml +++ b/boards/ezurio/bl54l15_dvk/bl54l15_dvk_nrf54l10_cpuapp_ns.yaml @@ -11,7 +11,7 @@ toolchain: - zephyr sysbuild: true ram: 192 -flash: 1022 +flash: 1012 supported: - adc - gpio diff --git a/boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20_cpuapp.dts b/boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20_cpuapp.dts index e086601abae..ae330e209aa 100644 --- a/boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20_cpuapp.dts +++ b/boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20_cpuapp.dts @@ -343,12 +343,26 @@ zephyr_udc0: &usbhs { /* Trim this RAM block for making room on all run-time common S2RAM cpu context. */ &cpuapp_ram0 { - reg = <0x22000000 (DT_SIZE_K(32)-32)>; - ranges = <0x0 0x22000000 (0x8000-0x20)>; + reg = <0x22000000 (DT_SIZE_K(32) - 52)>; + ranges = <0x0 0x22000000 (0x8000 - 0x34)>; }; / { soc { + /* temporary stack for S2RAM resume logic */ + pm_s2ram_stack: cpuapp_s2ram_stack@22007fcc { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x22007fcc 16>; + zephyr,memory-region = "pm_s2ram_stack"; + }; + + /* run-time common mcuboot S2RAM support section */ + mcuboot_s2ram: cpuapp_s2ram@22007fdc { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x22007fdc 4>; + zephyr,memory-region = "mcuboot_s2ram_context"; + }; + /* run-time common S2RAM cpu context RAM */ pm_s2ram: cpuapp_s2ram@22007fe0 { compatible = "zephyr,memory-region", "mmio-sram"; diff --git a/boards/nordic/nrf54l15dk/nrf54l15dk_common.dtsi b/boards/nordic/nrf54l15dk/nrf54l15dk_common.dtsi index 6740544b524..c030c2c5518 100644 --- a/boards/nordic/nrf54l15dk/nrf54l15dk_common.dtsi +++ b/boards/nordic/nrf54l15dk/nrf54l15dk_common.dtsi @@ -108,9 +108,5 @@ pinctrl-names = "default", "sleep"; }; -&hfxo { - startup-time-us = <854>; -}; - /* Get a node label for wi-fi spi to use in shield files */ wifi_spi: &spi22 {}; diff --git a/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.dts b/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.dts index cd644d845d5..cfb02b6817a 100644 --- a/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.dts +++ b/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.dts @@ -31,8 +31,8 @@ / { /* * Default SRAM planning when building for nRF54L10 with ARM TrustZone-M support. - * - Lowest 96 kB SRAM allocated to Secure image (sram0_s). - * - Upper 96 kB SRAM allocated to Non-Secure image (sram0_ns). + * - Lowest 72 kB SRAM allocated to Secure image (sram0_s). + * - Upper 72 kB SRAM allocated to Non-Secure image (sram0_ns). * * nRF54L10 has 192 kB of volatile memory (SRAM) but the last 42kB are reserved for * the FLPR MCU. @@ -58,14 +58,11 @@ }; &cpuapp_rram { - /* TODO: revert this hack when TF-M update is available that fixes partition sizes */ - reg = <0x0 DT_SIZE_K(1022)>; - partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; - /* nRF54L10 has 1022 kB of non volatile memory (RRAM) but the + /* nRF54L10 has 1012 kB of non volatile memory (RRAM) but the * last 62kB are reserved for the FLPR MCU. * * This static layout needs to be the same with the upstream TF-M layout in the @@ -94,12 +91,12 @@ slot0_ns_partition: partition@6A000 { label = "image-0-nonsecure"; - reg = <0x0006A000 DT_SIZE_K(504)>; + reg = <0x0006A000 DT_SIZE_K(494)>; }; - storage_partition: partition@E8000 { + storage_partition: partition@E5800 { label = "storage"; - reg = <0x000E8000 DT_SIZE_K(32)>; + reg = <0x000E5800 DT_SIZE_K(32)>; }; }; }; diff --git a/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.yaml b/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.yaml index 9f42daedf4e..22fbcbc32c3 100644 --- a/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.yaml +++ b/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l10_cpuapp_ns.yaml @@ -9,7 +9,7 @@ toolchain: - gnuarmemb - zephyr ram: 192 -flash: 1022 +flash: 1012 supported: - adc - gpio diff --git a/boards/nordic/nrf9280pdk/board.yml b/boards/nordic/nrf9280pdk/board.yml index 2cce133d95c..274b9a84a7b 100644 --- a/boards/nordic/nrf9280pdk/board.yml +++ b/boards/nordic/nrf9280pdk/board.yml @@ -9,3 +9,10 @@ board: cpucluster: cpuppr - name: iron cpucluster: cpuapp + revision: + format: major.minor.patch + default: 0.2.0 + exact: false + revisions: + - name: 0.1.0 + - name: 0.2.0 diff --git a/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280-pinctrl_0_2_0.dtsi b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280-pinctrl_0_2_0.dtsi new file mode 100644 index 00000000000..41ca41e073e --- /dev/null +++ b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280-pinctrl_0_2_0.dtsi @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + /omit-if-no-ref/ uart135_default: uart135_default { + group1 { + psels = , + ; + }; + + group3 { + bias-pull-up; + psels = , + ; + }; + }; + + /omit-if-no-ref/ uart135_sleep: uart135_sleep { + group1 { + low-power-enable; + psels = , + , + , + ; + }; + }; + + /omit-if-no-ref/ uart136_default: uart136_default { + group1 { + psels = , + ; + }; + + group3 { + bias-pull-up; + psels = , + ; + }; + }; + + /omit-if-no-ref/ uart136_sleep: uart136_sleep { + group1 { + low-power-enable; + psels = , + , + , + ; + }; + }; +}; diff --git a/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp.dts b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp.dts index d9ed27f4955..8920d7966bb 100644 --- a/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp.dts +++ b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp.dts @@ -24,7 +24,6 @@ zephyr,flash = &mram1x; zephyr,sram = &cpuapp_data; zephyr,shell-uart = &uart136; - zephyr,ieee802154 = &cpuapp_ieee802154; zephyr,bt-hci = &bt_hci_ipc0; nordic,802154-spinel-ipc = &ipc0; zephyr,entropy = &prng; @@ -291,10 +290,6 @@ ipc0: &cpuapp_cpurad_ipc { }; }; -&cpuapp_ieee802154 { - status = "okay"; -}; - zephyr_udc0: &usbhs { status = "okay"; }; diff --git a/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp_0_2_0.overlay b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp_0_2_0.overlay new file mode 100644 index 00000000000..4fa3f667ead --- /dev/null +++ b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuapp_0_2_0.overlay @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf9280pdk_nrf9280-pinctrl_0_2_0.dtsi" + +/ { + aliases { + pwm-led0 = &pwm_led2; /* Alias for compatibility with samples that use pwm-led0 */ + }; + + leds { + compatible = "gpio-leds"; + + led0: led_0 { + gpios = <&gpio9 0 GPIO_ACTIVE_HIGH>; + label = "Green LED 0"; + }; + + led1: led_1 { + gpios = <&gpio9 1 GPIO_ACTIVE_HIGH>; + label = "Green LED 1"; + }; + + led2: led_2 { + gpios = <&gpio9 2 GPIO_ACTIVE_HIGH>; + label = "Green LED 2"; + }; + + led3: led_3 { + gpios = <&gpio9 3 GPIO_ACTIVE_HIGH>; + label = "Green LED 3"; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + + /delete-node/ pwm_led_0; + + /* + * There is no valid hardware configuration to pass PWM signal on pins 0 and 1. + * First valid config is P9.2. This corresponds to LED 2. + * Signal on PWM130's channel 0 can be passed directly on GPIO Port 9 pin 2. + */ + pwm_led2: pwm_led_2 { + pwms = <&pwm130 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + }; + }; +}; diff --git a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuppr_0_2_0.overlay similarity index 66% rename from tests/drivers/watchdog/wdt_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay rename to boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuppr_0_2_0.overlay index dc1ea1a9ddc..f2d986e6cb0 100644 --- a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpuppr_0_2_0.overlay @@ -4,6 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -&wdt31 { - status = "okay"; -}; +#include "nrf9280pdk_nrf9280-pinctrl_0_2_0.dtsi" diff --git a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpurad_0_2_0.overlay similarity index 66% rename from tests/drivers/watchdog/wdt_basic_api/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay rename to boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpurad_0_2_0.overlay index dc1ea1a9ddc..f2d986e6cb0 100644 --- a/tests/drivers/watchdog/wdt_basic_api/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay +++ b/boards/nordic/nrf9280pdk/nrf9280pdk_nrf9280_cpurad_0_2_0.overlay @@ -4,6 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -&wdt31 { - status = "okay"; -}; +#include "nrf9280pdk_nrf9280-pinctrl_0_2_0.dtsi" diff --git a/boards/qemu/x86/Kconfig.defconfig b/boards/qemu/x86/Kconfig.defconfig index 5afe94d68e5..5a039094f83 100644 --- a/boards/qemu/x86/Kconfig.defconfig +++ b/boards/qemu/x86/Kconfig.defconfig @@ -100,7 +100,7 @@ config HAVE_CUSTOM_LINKER_SCRIPT default y config CUSTOM_LINKER_SCRIPT - default "${ZEPHYR_BASE}/boards/qemu/x86/qemu_x86_tiny.ld" + default "$(ZEPHYR_BASE)/boards/qemu/x86/qemu_x86_tiny.ld" config X86_EXTRA_PAGE_TABLE_PAGES # This is needed for gen_mmu.py to map the flash into memory diff --git a/cmake/modules/kconfig.cmake b/cmake/modules/kconfig.cmake index def17f16ae6..c65f407502a 100644 --- a/cmake/modules/kconfig.cmake +++ b/cmake/modules/kconfig.cmake @@ -99,15 +99,9 @@ zephyr_file(CONF_FILES ${BOARD_EXTENSION_DIRS} KCONF board_extension_conf_files # separated list instead. string(REPLACE ";" "?" DTS_ROOT_BINDINGS "${DTS_ROOT_BINDINGS}") -# Export each `ZEPHYR__MODULE_DIR` to Kconfig. -# This allows Kconfig files to refer relative from a modules root as: -# source "$(ZEPHYR_FOO_MODULE_DIR)/Kconfig" +# Export each `ZEPHYR__KCONFIG` to Kconfig. foreach(module_name ${ZEPHYR_MODULE_NAMES}) zephyr_string(SANITIZE TOUPPER MODULE_NAME_UPPER ${module_name}) - list(APPEND - ZEPHYR_KCONFIG_MODULES_DIR - "ZEPHYR_${MODULE_NAME_UPPER}_MODULE_DIR=${ZEPHYR_${MODULE_NAME_UPPER}_MODULE_DIR}" - ) if(ZEPHYR_${MODULE_NAME_UPPER}_KCONFIG) list(APPEND @@ -138,9 +132,13 @@ endif() # APP_DIR: Path to the main image (sysbuild) or synonym for APPLICATION_SOURCE_DIR (non-sysbuild) zephyr_get(APP_DIR VAR APP_DIR APPLICATION_SOURCE_DIR) +# Load the module Kconfig file into CMake +include("${KCONFIG_BINARY_DIR}/kconfig_module_dirs.cmake") + set(COMMON_KCONFIG_ENV_SETTINGS PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} srctree=${ZEPHYR_BASE} + ${kconfig_env_dirs} KERNELVERSION=${KERNELVERSION} APPVERSION=${APP_VERSION_STRING} APP_VERSION_EXTENDED_STRING=${APP_VERSION_EXTENDED_STRING} diff --git a/doc/_extensions/zephyr/kconfig/__init__.py b/doc/_extensions/zephyr/kconfig/__init__.py index dfb7a567da8..63459a61ade 100644 --- a/doc/_extensions/zephyr/kconfig/__init__.py +++ b/doc/_extensions/zephyr/kconfig/__init__.py @@ -44,6 +44,7 @@ from typing import Any from docutils import nodes +from dotenv import load_dotenv from sphinx.addnodes import pending_xref from sphinx.application import Sphinx from sphinx.builders import Builder @@ -76,12 +77,19 @@ def kconfig_load(app: Sphinx) -> tuple[kconfiglib.Kconfig, kconfiglib.Kconfig, d modules = zephyr_module.parse_modules(ZEPHYR_BASE) # generate Kconfig.modules file + kconfig_module_dirs = "" kconfig = "" sysbuild_kconfig = "" for module in modules: + kconfig_module_dirs += zephyr_module.process_kconfig_module_dir(module.project, + module.meta, + False) kconfig += zephyr_module.process_kconfig(module.project, module.meta) sysbuild_kconfig += zephyr_module.process_sysbuildkconfig(module.project, module.meta) + with open(Path(td) / "kconfig_module_dirs.env", "w") as f: + f.write(kconfig_module_dirs) + with open(Path(td) / "Kconfig.modules", "w") as f: f.write(kconfig) @@ -152,6 +160,7 @@ def kconfig_load(app: Sphinx) -> tuple[kconfiglib.Kconfig, kconfiglib.Kconfig, d os.environ["BOARD"] = "boards" os.environ["KCONFIG_BOARD_DIR"] = str(Path(td) / "boards") + load_dotenv(str(Path(td) / "kconfig_module_dirs.env")) # Sysbuild runs first os.environ["CONFIG_"] = "SB_CONFIG_" diff --git a/doc/build/sysbuild/images.rst b/doc/build/sysbuild/images.rst index 3ccfd873e16..00075894cef 100644 --- a/doc/build/sysbuild/images.rst +++ b/doc/build/sysbuild/images.rst @@ -151,13 +151,13 @@ more complex to create but is the preferred method for adding images to upstream config OTHER_APP_IMAGE_PATH string - default "${ZEPHYR_MY_IMAGE_MODULE_DIR}/path/to/my_image" if OTHER_APP_IMAGE_MY_IMAGE + default "$(ZEPHYR_MY_IMAGE_MODULE_DIR)/path/to/my_image" if OTHER_APP_IMAGE_MY_IMAGE help Source directory of other app image. .. note:: - Remember to have ``source "${ZEPHYR_BASE}/share/sysbuild/Kconfig"`` in the file if this + Remember to have ``source "$(ZEPHYR_BASE)/share/sysbuild/Kconfig"`` in the file if this is being applied in an application ``Kconfig.sysbuild`` file. .. group-tab:: ``sysbuild.cmake`` @@ -212,7 +212,7 @@ This can then be extended by :ref:`modules` like so: default "my_second_image" if OTHER_APP_IMAGE_MY_SECOND_IMAGE config OTHER_APP_IMAGE_PATH - default "${ZEPHYR_MY_SECOND_IMAGE_MODULE_DIR}/path/to/my_second_image" if OTHER_APP_IMAGE_MY_SECOND_IMAGE + default "$(ZEPHYR_MY_SECOND_IMAGE_MODULE_DIR)/path/to/my_second_image" if OTHER_APP_IMAGE_MY_SECOND_IMAGE As can be seen, no additional CMake changes are needed to add an alternative image as the base CMake code will add the replacement image instead of the original image, if selected. diff --git a/doc/develop/west/zephyr-cmds.rst b/doc/develop/west/zephyr-cmds.rst index e40093c3dd1..8049d5c4309 100644 --- a/doc/develop/west/zephyr-cmds.rst +++ b/doc/develop/west/zephyr-cmds.rst @@ -130,6 +130,13 @@ Each file in the bill-of-materials is scanned, so that its hashes (SHA256 and SHA1) can be recorded, along with any detected licenses if an ``SPDX-License-Identifier`` comment appears in the file. +Copyright notices are extracted using the third-party :command:`reuse` tool from the REUSE group. +When found, these notices are added to SPDX documents as ``FileCopyrightText`` fields. + +.. note:: + Copyright extraction uses heuristics that may not capture complete notice text, so + ``FileCopyrightText`` content is best-effort. This aligns with SPDX specification recommendations. + SPDX Relationships are created to indicate dependencies between CMake build targets, build targets that are linked together, and source files that are compiled to generate the built library files. diff --git a/doc/requirements.txt b/doc/requirements.txt index c10b390651a..255ff1321a5 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -10,115 +10,115 @@ anyio==4.9.0 \ # via # starlette # watchfiles -anytree==2.12.1 \ - --hash=sha256:244def434ccf31b668ed282954e5d315b4e066c4940b94aff4a7962d85947830 \ - --hash=sha256:5ea9e61caf96db1e5b3d0a914378d2cd83c269dfce1fb8242ce96589fa3382f0 +anytree==2.13.0 \ + --hash=sha256:4cbcf10df36b1f1cba131b7e487ff3edafc9d6e932a3c70071b5b768bab901ff \ + --hash=sha256:c9d3aa6825fdd06af7ebb05b4ef291d2db63e62bb1f9b7d9b71354be9d362714 # via -r requirements.in babel==2.17.0 \ --hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \ --hash=sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2 # via sphinx -certifi==2025.1.31 \ - --hash=sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651 \ - --hash=sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe +certifi==2025.6.15 \ + --hash=sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057 \ + --hash=sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b # via requests -charset-normalizer==3.4.1 \ - --hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \ - --hash=sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa \ - --hash=sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a \ - --hash=sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294 \ - --hash=sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b \ - --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \ - --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \ - --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \ - --hash=sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4 \ - --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \ - --hash=sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2 \ - --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \ - --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \ - --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \ - --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \ - --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \ - --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \ - --hash=sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496 \ - --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \ - --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \ - --hash=sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e \ - --hash=sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a \ - --hash=sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4 \ - --hash=sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca \ - --hash=sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78 \ - --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \ - --hash=sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5 \ - --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \ - --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \ - --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \ - --hash=sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765 \ - --hash=sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6 \ - --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \ - --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \ - --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \ - --hash=sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd \ - --hash=sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c \ - --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \ - --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \ - --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \ - --hash=sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770 \ - --hash=sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824 \ - --hash=sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f \ - --hash=sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf \ - --hash=sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487 \ - --hash=sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d \ - --hash=sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd \ - --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \ - --hash=sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534 \ - --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \ - --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \ - --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \ - --hash=sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd \ - --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \ - --hash=sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9 \ - --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \ - --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \ - --hash=sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d \ - --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \ - --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \ - --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \ - --hash=sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7 \ - --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \ - --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \ - --hash=sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8 \ - --hash=sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41 \ - --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \ - --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \ - --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \ - --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \ - --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \ - --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \ - --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \ - --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \ - --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85 \ - --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \ - --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \ - --hash=sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e \ - --hash=sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6 \ - --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \ - --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \ - --hash=sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e \ - --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \ - --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \ - --hash=sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c \ - --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \ - --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \ - --hash=sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089 \ - --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \ - --hash=sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e \ - --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \ - --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616 +charset-normalizer==3.4.2 \ + --hash=sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4 \ + --hash=sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45 \ + --hash=sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7 \ + --hash=sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0 \ + --hash=sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7 \ + --hash=sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d \ + --hash=sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d \ + --hash=sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0 \ + --hash=sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184 \ + --hash=sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db \ + --hash=sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b \ + --hash=sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64 \ + --hash=sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b \ + --hash=sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8 \ + --hash=sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff \ + --hash=sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344 \ + --hash=sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58 \ + --hash=sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e \ + --hash=sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471 \ + --hash=sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148 \ + --hash=sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a \ + --hash=sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836 \ + --hash=sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e \ + --hash=sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63 \ + --hash=sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c \ + --hash=sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1 \ + --hash=sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01 \ + --hash=sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366 \ + --hash=sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58 \ + --hash=sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5 \ + --hash=sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c \ + --hash=sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2 \ + --hash=sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a \ + --hash=sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597 \ + --hash=sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b \ + --hash=sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5 \ + --hash=sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb \ + --hash=sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f \ + --hash=sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0 \ + --hash=sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941 \ + --hash=sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0 \ + --hash=sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86 \ + --hash=sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7 \ + --hash=sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7 \ + --hash=sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455 \ + --hash=sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6 \ + --hash=sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4 \ + --hash=sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0 \ + --hash=sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3 \ + --hash=sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1 \ + --hash=sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6 \ + --hash=sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981 \ + --hash=sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c \ + --hash=sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980 \ + --hash=sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645 \ + --hash=sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7 \ + --hash=sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12 \ + --hash=sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa \ + --hash=sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd \ + --hash=sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef \ + --hash=sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f \ + --hash=sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2 \ + --hash=sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d \ + --hash=sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5 \ + --hash=sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02 \ + --hash=sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3 \ + --hash=sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd \ + --hash=sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e \ + --hash=sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214 \ + --hash=sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd \ + --hash=sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a \ + --hash=sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c \ + --hash=sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681 \ + --hash=sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba \ + --hash=sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f \ + --hash=sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a \ + --hash=sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28 \ + --hash=sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691 \ + --hash=sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82 \ + --hash=sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a \ + --hash=sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027 \ + --hash=sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7 \ + --hash=sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518 \ + --hash=sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf \ + --hash=sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b \ + --hash=sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9 \ + --hash=sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544 \ + --hash=sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da \ + --hash=sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509 \ + --hash=sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f \ + --hash=sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a \ + --hash=sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f # via requests -click==8.1.8 \ - --hash=sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2 \ - --hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a +click==8.2.1 \ + --hash=sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202 \ + --hash=sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b # via uvicorn colorama==0.4.6 \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ @@ -142,18 +142,18 @@ docutils==0.21.2 \ # sphinx-rtd-theme # sphinx-tabs # sphinx-togglebutton -doxmlparser==1.13.2 \ - --hash=sha256:65ab126e7d3f77b1bb15fa6886663614f68d0473b48831e1fb822f533243eb68 +doxmlparser==1.14.0 \ + --hash=sha256:1037dcc4aadf908feb2d908685159972bb2975322fbe2b120f5cac5a938f0b14 # via -r requirements.in -exceptiongroup==1.2.2 ; python_full_version < '3.11' \ - --hash=sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b \ - --hash=sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc +exceptiongroup==1.3.0 ; python_full_version < '3.11' \ + --hash=sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10 \ + --hash=sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88 # via # anyio # pytest -h11==0.14.0 \ - --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ - --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 +h11==0.16.0 \ + --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ + --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 # via uvicorn idna==3.10 \ --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ @@ -173,145 +173,97 @@ jinja2==3.1.6 \ --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 # via sphinx -lxml==5.3.1 \ - --hash=sha256:016b96c58e9a4528219bb563acf1aaaa8bc5452e7651004894a973f03b84ba81 \ - --hash=sha256:05123fad495a429f123307ac6d8fd6f977b71e9a0b6d9aeeb8f80c017cb17131 \ - --hash=sha256:057e30d0012439bc54ca427a83d458752ccda725c1c161cc283db07bcad43cf9 \ - --hash=sha256:06a20d607a86fccab2fc15a77aa445f2bdef7b49ec0520a842c5c5afd8381576 \ - --hash=sha256:094b28ed8a8a072b9e9e2113a81fda668d2053f2ca9f2d202c2c8c7c2d6516b1 \ - --hash=sha256:0bcfadea3cdc68e678d2b20cb16a16716887dd00a881e16f7d806c2138b8ff0c \ - --hash=sha256:0d6b2fa86becfa81f0a0271ccb9eb127ad45fb597733a77b92e8a35e53414914 \ - --hash=sha256:0f2cfae0688fd01f7056a17367e3b84f37c545fb447d7282cf2c242b16262607 \ - --hash=sha256:106b7b5d2977b339f1e97efe2778e2ab20e99994cbb0ec5e55771ed0795920c8 \ - --hash=sha256:133f3493253a00db2c870d3740bc458ebb7d937bd0a6a4f9328373e0db305709 \ - --hash=sha256:136bf638d92848a939fd8f0e06fcf92d9f2e4b57969d94faae27c55f3d85c05b \ - --hash=sha256:155e1a5693cf4b55af652f5c0f78ef36596c7f680ff3ec6eb4d7d85367259b2c \ - --hash=sha256:1637fa31ec682cd5760092adfabe86d9b718a75d43e65e211d5931809bc111e7 \ - --hash=sha256:172d65f7c72a35a6879217bcdb4bb11bc88d55fb4879e7569f55616062d387c2 \ - --hash=sha256:17b5d7f8acf809465086d498d62a981fa6a56d2718135bb0e4aa48c502055f5c \ - --hash=sha256:198bb4b4dd888e8390afa4f170d4fa28467a7eaf857f1952589f16cfbb67af27 \ - --hash=sha256:1b6f92e35e2658a5ed51c6634ceb5ddae32053182851d8cad2a5bc102a359b33 \ - --hash=sha256:1b92fe86e04f680b848fff594a908edfa72b31bfc3499ef7433790c11d4c8cd8 \ - --hash=sha256:1bcc211542f7af6f2dfb705f5f8b74e865592778e6cafdfd19c792c244ccce19 \ - --hash=sha256:1c93ed3c998ea8472be98fb55aed65b5198740bfceaec07b2eba551e55b7b9ae \ - --hash=sha256:203b1d3eaebd34277be06a3eb880050f18a4e4d60861efba4fb946e31071a295 \ - --hash=sha256:22ec2b3c191f43ed21f9545e9df94c37c6b49a5af0a874008ddc9132d49a2d9c \ - --hash=sha256:231cf4d140b22a923b1d0a0a4e0b4f972e5893efcdec188934cc65888fd0227b \ - --hash=sha256:236610b77589faf462337b3305a1be91756c8abc5a45ff7ca8f245a71c5dab70 \ - --hash=sha256:29bfc8d3d88e56ea0a27e7c4897b642706840247f59f4377d81be8f32aa0cfbf \ - --hash=sha256:2b8969dbc8d09d9cd2ae06362c3bad27d03f433252601ef658a49bd9f2b22d79 \ - --hash=sha256:2dd0b80ac2d8f13ffc906123a6f20b459cb50a99222d0da492360512f3e50f84 \ - --hash=sha256:2df7ed5edeb6bd5590914cd61df76eb6cce9d590ed04ec7c183cf5509f73530d \ - --hash=sha256:2e4a570f6a99e96c457f7bec5ad459c9c420ee80b99eb04cbfcfe3fc18ec6423 \ - --hash=sha256:2f1be45d4c15f237209bbf123a0e05b5d630c8717c42f59f31ea9eae2ad89394 \ - --hash=sha256:2f23cf50eccb3255b6e913188291af0150d89dab44137a69e14e4dcb7be981f1 \ - --hash=sha256:3031e4c16b59424e8d78522c69b062d301d951dc55ad8685736c3335a97fc270 \ - --hash=sha256:33e06717c00c788ab4e79bc4726ecc50c54b9bfb55355eae21473c145d83c2d2 \ - --hash=sha256:364de8f57d6eda0c16dcfb999af902da31396949efa0e583e12675d09709881b \ - --hash=sha256:3715cdf0dd31b836433af9ee9197af10e3df41d273c19bb249230043667a5dfd \ - --hash=sha256:3bb8149840daf2c3f97cebf00e4ed4a65a0baff888bf2605a8d0135ff5cf764e \ - --hash=sha256:3c3c8b55c7fc7b7e8877b9366568cc73d68b82da7fe33d8b98527b73857a225f \ - --hash=sha256:3d68eeef7b4d08a25e51897dac29bcb62aba830e9ac6c4e3297ee7c6a0cf6439 \ - --hash=sha256:3dddf0fb832486cc1ea71d189cb92eb887826e8deebe128884e15020bb6e3f61 \ - --hash=sha256:3edbb9c9130bac05d8c3fe150c51c337a471cc7fdb6d2a0a7d3a88e88a829314 \ - --hash=sha256:3effe081b3135237da6e4c4530ff2a868d3f80be0bda027e118a5971285d42d0 \ - --hash=sha256:422c179022ecdedbe58b0e242607198580804253da220e9454ffe848daa1cfd2 \ - --hash=sha256:42978a68d3825eaac55399eb37a4d52012a205c0c6262199b8b44fcc6fd686e8 \ - --hash=sha256:4399b4226c4785575fb20998dc571bc48125dc92c367ce2602d0d70e0c455eb0 \ - --hash=sha256:45fbb70ccbc8683f2fb58bea89498a7274af1d9ec7995e9f4af5604e028233fc \ - --hash=sha256:4867361c049761a56bd21de507cab2c2a608c55102311d142ade7dab67b34f32 \ - --hash=sha256:48fd46bf7155def2e15287c6f2b133a2f78e2d22cdf55647269977b873c65499 \ - --hash=sha256:4b0d5cdba1b655d5b18042ac9c9ff50bda33568eb80feaaca4fc237b9c4fbfde \ - --hash=sha256:4df0ec814b50275ad6a99bc82a38b59f90e10e47714ac9871e1b223895825468 \ - --hash=sha256:4e52e1b148867b01c05e21837586ee307a01e793b94072d7c7b91d2c2da02ffe \ - --hash=sha256:514fe78fc4b87e7a7601c92492210b20a1b0c6ab20e71e81307d9c2e377c64de \ - --hash=sha256:524ccfded8989a6595dbdda80d779fb977dbc9a7bc458864fc9a0c2fc15dc877 \ - --hash=sha256:528f3a0498a8edc69af0559bdcf8a9f5a8bf7c00051a6ef3141fdcf27017bbf5 \ - --hash=sha256:52d82b0d436edd6a1d22d94a344b9a58abd6c68c357ed44f22d4ba8179b37629 \ - --hash=sha256:5412500e0dc5481b1ee9cf6b38bb3b473f6e411eb62b83dc9b62699c3b7b79f7 \ - --hash=sha256:585c4dc429deebc4307187d2b71ebe914843185ae16a4d582ee030e6cfbb4d8a \ - --hash=sha256:5865b270b420eda7b68928d70bb517ccbe045e53b1a428129bb44372bf3d7dd5 \ - --hash=sha256:5881aaa4bf3a2d086c5f20371d3a5856199a0d8ac72dd8d0dbd7a2ecfc26ab73 \ - --hash=sha256:5885bc586f1edb48e5d68e7a4b4757b5feb2a496b64f462b4d65950f5af3364f \ - --hash=sha256:5a11b16a33656ffc43c92a5343a28dc71eefe460bcc2a4923a96f292692709f6 \ - --hash=sha256:5a997b784a639e05b9d4053ef3b20c7e447ea80814a762f25b8ed5a89d261eac \ - --hash=sha256:5be8f5e4044146a69c96077c7e08f0709c13a314aa5315981185c1f00235fe65 \ - --hash=sha256:63d57fc94eb0bbb4735e45517afc21ef262991d8758a8f2f05dd6e4174944519 \ - --hash=sha256:673b9d8e780f455091200bba8534d5f4f465944cbdd61f31dc832d70e29064a5 \ - --hash=sha256:67d2f8ad9dcc3a9e826bdc7802ed541a44e124c29b7d95a679eeb58c1c14ade8 \ - --hash=sha256:67f5e80adf0aafc7b5454f2c1cb0cde920c9b1f2cbd0485f07cc1d0497c35c5d \ - --hash=sha256:68018c4c67d7e89951a91fbd371e2e34cd8cfc71f0bb43b5332db38497025d51 \ - --hash=sha256:6c4dd3bfd0c82400060896717dd261137398edb7e524527438c54a8c34f736bf \ - --hash=sha256:71f31eda4e370f46af42fc9f264fafa1b09f46ba07bdbee98f25689a04b81c20 \ - --hash=sha256:7512b4d0fc5339d5abbb14d1843f70499cab90d0b864f790e73f780f041615d7 \ - --hash=sha256:75fa3d6946d317ffc7016a6fcc44f42db6d514b7fdb8b4b28cbe058303cb6e53 \ - --hash=sha256:779e851fd0e19795ccc8a9bb4d705d6baa0ef475329fe44a13cf1e962f18ff1e \ - --hash=sha256:796520afa499732191e39fc95b56a3b07f95256f2d22b1c26e217fb69a9db5b5 \ - --hash=sha256:7aae7a3d63b935babfdc6864b31196afd5145878ddd22f5200729006366bc4d5 \ - --hash=sha256:7b82e67c5feb682dbb559c3e6b78355f234943053af61606af126df2183b9ef9 \ - --hash=sha256:7c0536bd9178f754b277a3e53f90f9c9454a3bd108b1531ffff720e082d824f2 \ - --hash=sha256:7eda194dd46e40ec745bf76795a7cccb02a6a41f445ad49d3cf66518b0bd9cff \ - --hash=sha256:82a4bb10b0beef1434fb23a09f001ab5ca87895596b4581fd53f1e5145a8934a \ - --hash=sha256:85c4f11be9cf08917ac2a5a8b6e1ef63b2f8e3799cec194417e76826e5f1de9c \ - --hash=sha256:88b72eb7222d918c967202024812c2bfb4048deeb69ca328363fb8e15254c549 \ - --hash=sha256:89934f9f791566e54c1d92cdc8f8fd0009447a5ecdb1ec6b810d5f8c4955f6be \ - --hash=sha256:8b1942b3e4ed9ed551ed3083a2e6e0772de1e5e3aca872d955e2e86385fb7ff9 \ - --hash=sha256:8ffb141361108e864ab5f1813f66e4e1164181227f9b1f105b042729b6c15125 \ - --hash=sha256:8fffc08de02071c37865a155e5ea5fce0282e1546fd5bde7f6149fcaa32558ac \ - --hash=sha256:91fb6a43d72b4f8863d21f347a9163eecbf36e76e2f51068d59cd004c506f332 \ - --hash=sha256:928e75a7200a4c09e6efc7482a1337919cc61fe1ba289f297827a5b76d8969c2 \ - --hash=sha256:96eef5b9f336f623ffc555ab47a775495e7e8846dde88de5f941e2906453a1ce \ - --hash=sha256:a0611da6b07dd3720f492db1b463a4d1175b096b49438761cc9f35f0d9eaaef5 \ - --hash=sha256:a091026c3bf7519ab1e64655a3f52a59ad4a4e019a6f830c24d6430695b1cf6a \ - --hash=sha256:a22f66270bd6d0804b02cd49dae2b33d4341015545d17f8426f2c4e22f557a23 \ - --hash=sha256:a243132767150a44e6a93cd1dde41010036e1cbc63cc3e9fe1712b277d926ce3 \ - --hash=sha256:a31fa7536ec1fb7155a0cd3a4e3d956c835ad0a43e3610ca32384d01f079ea1c \ - --hash=sha256:a364e8e944d92dcbf33b6b494d4e0fb3499dcc3bd9485beb701aa4b4201fa414 \ - --hash=sha256:a4058f16cee694577f7e4dd410263cd0ef75644b43802a689c2b3c2a7e69453b \ - --hash=sha256:a4b382e0e636ed54cd278791d93fe2c4f370772743f02bcbe431a160089025c9 \ - --hash=sha256:a83d3adea1e0ee36dac34627f78ddd7f093bb9cfc0a8e97f1572a949b695cb98 \ - --hash=sha256:a8ade0363f776f87f982572c2860cc43c65ace208db49c76df0a21dde4ddd16e \ - --hash=sha256:aa59974880ab5ad8ef3afaa26f9bda148c5f39e06b11a8ada4660ecc9fb2feb3 \ - --hash=sha256:aa826340a609d0c954ba52fd831f0fba2a4165659ab0ee1a15e4aac21f302406 \ - --hash=sha256:aaca5a812f050ab55426c32177091130b1e49329b3f002a32934cd0245571307 \ - --hash=sha256:ae82fce1d964f065c32c9517309f0c7be588772352d2f40b1574a214bd6e6098 \ - --hash=sha256:aed57b541b589fa05ac248f4cb1c46cbb432ab82cbd467d1c4f6a2bdc18aecf9 \ - --hash=sha256:afa578b6524ff85fb365f454cf61683771d0170470c48ad9d170c48075f86725 \ - --hash=sha256:b0884e3f22d87c30694e625b1e62e6f30d39782c806287450d9dc2fdf07692fd \ - --hash=sha256:b2aca14c235c7a08558fe0a4786a1a05873a01e86b474dfa8f6df49101853a4e \ - --hash=sha256:b450d7cabcd49aa7ab46a3c6aa3ac7e1593600a1a0605ba536ec0f1b99a04322 \ - --hash=sha256:b725e70d15906d24615201e650d5b0388b08a5187a55f119f25874d0103f90dd \ - --hash=sha256:bfbbab9316330cf81656fed435311386610f78b6c93cc5db4bebbce8dd146675 \ - --hash=sha256:c093c7088b40d8266f57ed71d93112bd64c6724d31f0794c1e52cc4857c28e0e \ - --hash=sha256:c2e49dc23a10a1296b04ca9db200c44d3eb32c8d8ec532e8c1fd24792276522a \ - --hash=sha256:c4393600915c308e546dc7003d74371744234e8444a28622d76fe19b98fa59d1 \ - --hash=sha256:c5ae125276f254b01daa73e2c103363d3e99e3e10505686ac7d9d2442dd4627a \ - --hash=sha256:c6aacf00d05b38a5069826e50ae72751cb5bc27bdc4d5746203988e429b385bb \ - --hash=sha256:c76722b5ed4a31ba103e0dc77ab869222ec36efe1a614e42e9bcea88a36186fe \ - --hash=sha256:c809eef167bf4a57af4b03007004896f5c60bd38dc3852fcd97a26eae3d4c9e6 \ - --hash=sha256:c92ea6d9dd84a750b2bae72ff5e8cf5fdd13e58dda79c33e057862c29a8d5b50 \ - --hash=sha256:cb659702a45136c743bc130760c6f137870d4df3a9e14386478b8a0511abcfca \ - --hash=sha256:ce0930a963ff593e8bb6fda49a503911accc67dee7e5445eec972668e672a0f0 \ - --hash=sha256:d0751528b97d2b19a388b302be2a0ee05817097bab46ff0ed76feeec24951f78 \ - --hash=sha256:d184f85ad2bb1f261eac55cddfcf62a70dee89982c978e92b9a74a1bfef2e367 \ - --hash=sha256:d2a3e412ce1849be34b45922bfef03df32d1410a06d1cdeb793a343c2f1fd666 \ - --hash=sha256:d61ec60945d694df806a9aec88e8f29a27293c6e424f8ff91c80416e3c617645 \ - --hash=sha256:db0c742aad702fd5d0c6611a73f9602f20aec2007c102630c06d7633d9c8f09a \ - --hash=sha256:db4743e30d6f5f92b6d2b7c86b3ad250e0bad8dee4b7ad8a0c44bfb276af89a3 \ - --hash=sha256:dbf7bebc2275016cddf3c997bf8a0f7044160714c64a9b83975670a04e6d2252 \ - --hash=sha256:de1fc314c3ad6bc2f6bd5b5a5b9357b8c6896333d27fdbb7049aea8bd5af2d79 \ - --hash=sha256:df7e5edac4778127f2bf452e0721a58a1cfa4d1d9eac63bdd650535eb8543615 \ - --hash=sha256:e220f7b3e8656ab063d2eb0cd536fafef396829cafe04cb314e734f87649058f \ - --hash=sha256:e3c623923967f3e5961d272718655946e5322b8d058e094764180cdee7bab1af \ - --hash=sha256:e69add9b6b7b08c60d7ff0152c7c9a6c45b4a71a919be5abde6f98f1ea16421c \ - --hash=sha256:e8e0d177b1fe251c3b1b914ab64135475c5273c8cfd2857964b2e3bb0fe196a7 \ - --hash=sha256:ef45f31aec9be01379fc6c10f1d9c677f032f2bac9383c827d44f620e8a88407 \ - --hash=sha256:f1208c1c67ec9e151d78aa3435aa9b08a488b53d9cfac9b699f15255a3461ef2 \ - --hash=sha256:f12582b8d3b4c6be1d298c49cb7ae64a3a73efaf4c2ab4e37db182e3545815ac \ - --hash=sha256:f1de541a9893cf8a1b1db9bf0bf670a2decab42e3e82233d36a74eda7822b4c9 \ - --hash=sha256:f4eac0584cdc3285ef2e74eee1513a6001681fd9753b259e8159421ed28a72e5 \ - --hash=sha256:f7b64fcd670bca8800bc10ced36620c6bbb321e7bc1214b9c0c0df269c1dddc2 \ - --hash=sha256:fb7c61d4be18e930f75948705e9718618862e6fc2ed0d7159b2262be73f167a2 +lxml==6.0.0 \ + --hash=sha256:013090383863b72c62a702d07678b658fa2567aa58d373d963cca245b017e065 \ + --hash=sha256:032e65120339d44cdc3efc326c9f660f5f7205f3a535c1fdbf898b29ea01fb72 \ + --hash=sha256:048a930eb4572829604982e39a0c7289ab5dc8abc7fc9f5aabd6fbc08c154e93 \ + --hash=sha256:04d67ceee6db4bcb92987ccb16e53bef6b42ced872509f333c04fb58a3315256 \ + --hash=sha256:059c4cbf3973a621b62ea3132934ae737da2c132a788e6cfb9b08d63a0ef73f9 \ + --hash=sha256:0e32698462aacc5c1cf6bdfebc9c781821b7e74c79f13e5ffc8bfe27c42b1abf \ + --hash=sha256:1676b56d48048a62ef77a250428d1f31f610763636e0784ba67a9740823988ca \ + --hash=sha256:17f090a9bc0ce8da51a5632092f98a7e7f84bca26f33d161a98b57f7fb0004ca \ + --hash=sha256:185efc2fed89cdd97552585c624d3c908f0464090f4b91f7d92f8ed2f3b18f54 \ + --hash=sha256:1fa377b827ca2023244a06554c6e7dc6828a10aaf74ca41965c5d8a4925aebb4 \ + --hash=sha256:2181e4b1d07dde53986023482673c0f1fba5178ef800f9ab95ad791e8bdded6a \ + --hash=sha256:219e0431ea8006e15005767f0351e3f7f9143e793e58519dc97fe9e07fae5563 \ + --hash=sha256:21db1ec5525780fd07251636eb5f7acb84003e9382c72c18c542a87c416ade03 \ + --hash=sha256:246b40f8a4aec341cbbf52617cad8ab7c888d944bfe12a6abd2b1f6cfb6f6082 \ + --hash=sha256:2793a627e95d119e9f1e19720730472f5543a6d84c50ea33313ce328d870f2dd \ + --hash=sha256:2930aa001a3776c3e2601cb8e0a15d21b8270528d89cc308be4843ade546b9ab \ + --hash=sha256:2ae06fbab4f1bb7db4f7c8ca9897dc8db4447d1a2b9bee78474ad403437bcc29 \ + --hash=sha256:2b4790b558bee331a933e08883c423f65bbcd07e278f91b2272489e31ab1e2b4 \ + --hash=sha256:2cfcf84f1defed7e5798ef4f88aa25fcc52d279be731ce904789aa7ccfb7e8d2 \ + --hash=sha256:2dd1cc3ea7e60bfb31ff32cafe07e24839df573a5e7c2d33304082a5019bcd58 \ + --hash=sha256:2f34687222b78fff795feeb799a7d44eca2477c3d9d3a46ce17d51a4f383e32e \ + --hash=sha256:310b719b695b3dd442cdfbbe64936b2f2e231bb91d998e99e6f0daf991a3eba3 \ + --hash=sha256:34190a1ec4f1e84af256495436b2d196529c3f2094f0af80202947567fdbf2e7 \ + --hash=sha256:35bc626eec405f745199200ccb5c6b36f202675d204aa29bb52e27ba2b71dea8 \ + --hash=sha256:36531f81c8214e293097cd2b7873f178997dae33d3667caaae8bdfb9666b76c0 \ + --hash=sha256:390240baeb9f415a82eefc2e13285016f9c8b5ad71ec80574ae8fa9605093cd7 \ + --hash=sha256:40442e2a4456e9910875ac12951476d36c0870dcb38a68719f8c4686609897c4 \ + --hash=sha256:4337e4aec93b7c011f7ee2e357b0d30562edd1955620fdd4aeab6aacd90d43c5 \ + --hash=sha256:43cfbb7db02b30ad3926e8fceaef260ba2fb7df787e38fa2df890c1ca7966c3b \ + --hash=sha256:43fe5af2d590bf4691531b1d9a2495d7aab2090547eaacd224a3afec95706d76 \ + --hash=sha256:46b9ed911f36bfeb6338e0b482e7fe7c27d362c52fde29f221fddbc9ee2227e7 \ + --hash=sha256:4d23854ecf381ab1facc8f353dcd9adeddef3652268ee75297c1164c987c11dc \ + --hash=sha256:4eb114a0754fd00075c12648d991ec7a4357f9cb873042cc9a77bf3a7e30c9db \ + --hash=sha256:4ee56288d0df919e4aac43b539dd0e34bb55d6a12a6562038e8d6f3ed07f9e36 \ + --hash=sha256:51a5e4c61a4541bd1cd3ba74766d0c9b6c12d6a1a4964ef60026832aac8e79b3 \ + --hash=sha256:522fe7abb41309e9543b0d9b8b434f2b630c5fdaf6482bee642b34c8c70079c8 \ + --hash=sha256:54c4855eabd9fc29707d30141be99e5cd1102e7d2258d2892314cf4c110726c3 \ + --hash=sha256:5592401cdf3dc682194727c1ddaa8aa0f3ddc57ca64fd03226a430b955eab6f6 \ + --hash=sha256:58ffd35bd5425c3c3b9692d078bf7ab851441434531a7e517c4984d5634cd65b \ + --hash=sha256:5967fe415b1920a3877a4195e9a2b779249630ee49ece22021c690320ff07452 \ + --hash=sha256:5fcd7d3b1d8ecb91445bd71b9c88bdbeae528fefee4f379895becfc72298d181 \ + --hash=sha256:63b634facdfbad421d4b61c90735688465d4ab3a8853ac22c76ccac2baf98d97 \ + --hash=sha256:690b20e3388a7ec98e899fd54c924e50ba6693874aa65ef9cb53de7f7de9d64a \ + --hash=sha256:6da7cd4f405fd7db56e51e96bff0865b9853ae70df0e6720624049da76bde2da \ + --hash=sha256:7488a43033c958637b1a08cddc9188eb06d3ad36582cebc7d4815980b47e27ef \ + --hash=sha256:74e748012f8c19b47f7d6321ac929a9a94ee92ef12bc4298c47e8b7219b26541 \ + --hash=sha256:78718d8454a6e928470d511bf8ac93f469283a45c354995f7d19e77292f26108 \ + --hash=sha256:7bf61bc4345c1895221357af8f3e89f8c103d93156ef326532d35c707e2fb19d \ + --hash=sha256:7da298e1659e45d151b4028ad5c7974917e108afb48731f4ed785d02b6818994 \ + --hash=sha256:84ef591495ffd3f9dcabffd6391db7bb70d7230b5c35ef5148354a134f56f2be \ + --hash=sha256:85b14a4689d5cff426c12eefe750738648706ea2753b20c2f973b2a000d3d261 \ + --hash=sha256:8a2e76efbf8772add72d002d67a4c3d0958638696f541734304c7f28217a9cab \ + --hash=sha256:8cb26f51c82d77483cdcd2b4a53cda55bbee29b3c2f3ddeb47182a2a9064e4eb \ + --hash=sha256:8db5dc617cb937ae17ff3403c3a70a7de9df4852a046f93e71edaec678f721d0 \ + --hash=sha256:9ab542c91f5a47aaa58abdd8ea84b498e8e49fe4b883d67800017757a3eb78e8 \ + --hash=sha256:9da022c14baeec36edfcc8daf0e281e2f55b950249a455776f0d1adeeada4734 \ + --hash=sha256:9f4b481b6cc3a897adb4279216695150bbe7a44c03daba3c894f49d2037e0a24 \ + --hash=sha256:a52a4704811e2623b0324a18d41ad4b9fabf43ce5ff99b14e40a520e2190c851 \ + --hash=sha256:a55da151d0b0c6ab176b4e761670ac0e2667817a1e0dadd04a01d0561a219349 \ + --hash=sha256:a674c0948789e9136d69065cc28009c1b1874c6ea340253db58be7622ce6398f \ + --hash=sha256:ae74f7c762270196d2dda56f8dd7309411f08a4084ff2dfcc0b095a218df2e06 \ + --hash=sha256:afd27d8629ae94c5d863e32ab0e1d5590371d296b87dae0a751fb22bf3685741 \ + --hash=sha256:b2d71cdefda9424adff9a3607ba5bbfc60ee972d73c21c7e3c19e71037574816 \ + --hash=sha256:b34339898bb556a2351a1830f88f751679f343eabf9cf05841c95b165152c9e7 \ + --hash=sha256:b372d10d17a701b0945f67be58fae4664fd056b85e0ff0fbc1e6c951cdbc0512 \ + --hash=sha256:b3c98d5b24c6095e89e03d65d5c574705be3d49c0d8ca10c17a8a4b5201b72f5 \ + --hash=sha256:b8dd6dd0e9c1992613ccda2bcb74fc9d49159dbe0f0ca4753f37527749885c25 \ + --hash=sha256:bd5913b4972681ffc9718bc2d4c53cde39ef81415e1671ff93e9aa30b46595e7 \ + --hash=sha256:c0b5fa5eda84057a4f1bbb4bb77a8c28ff20ae7ce211588d698ae453e13c6281 \ + --hash=sha256:c16304bba98f48a28ae10e32a8e75c349dd742c45156f297e16eeb1ba9287a1f \ + --hash=sha256:c24b8efd9c0f62bad0439283c2c795ef916c5a6b75f03c17799775c7ae3c0c9e \ + --hash=sha256:c2a5e8d207311a0170aca0eb6b160af91adc29ec121832e4ac151a57743a1e1e \ + --hash=sha256:c352fc8f36f7e9727db17adbf93f82499457b3d7e5511368569b4c5bd155a922 \ + --hash=sha256:c86df1c9af35d903d2b52d22ea3e66db8058d21dc0f59842ca5deb0595921141 \ + --hash=sha256:ca50bd612438258a91b5b3788c6621c1f05c8c478e7951899f492be42defc0da \ + --hash=sha256:d18a25b19ca7307045581b18b3ec9ead2b1db5ccd8719c291f0cd0a5cec6cb81 \ + --hash=sha256:d4f0c66df4386b75d2ab1e20a489f30dc7fd9a06a896d64980541506086be1f1 \ + --hash=sha256:d7ae472f74afcc47320238b5dbfd363aba111a525943c8a34a1b657c6be934c3 \ + --hash=sha256:db0efd6bae1c4730b9c863fc4f5f3c0fa3e8f05cae2c44ae141cb9dfc7d091dc \ + --hash=sha256:dbdd7679a6f4f08152818043dbb39491d1af3332128b3752c3ec5cebc0011a72 \ + --hash=sha256:e0b1520ef900e9ef62e392dd3d7ae4f5fa224d1dd62897a792cf353eb20b6cae \ + --hash=sha256:e2030956cf4886b10be9a0285c6802e078ec2391e1dd7ff3eb509c2c95a69b76 \ + --hash=sha256:e35e8aaaf3981489f42884b59726693de32dabfc438ac10ef4eb3409961fd402 \ + --hash=sha256:e380e85b93f148ad28ac15f8117e2fd8e5437aa7732d65e260134f83ce67911b \ + --hash=sha256:edf6e4c8fe14dfe316939711e3ece3f9a20760aabf686051b537a7562f4da91a \ + --hash=sha256:f3389924581d9a770c6caa4df4e74b606180869043b9073e2cec324bad6e306e \ + --hash=sha256:f64ccf593916e93b8d36ed55401bb7fe9c7d5de3180ce2e10b08f82a8f397316 \ + --hash=sha256:f720a14aa102a38907c6d5030e3d66b3b680c3e6f6bc95473931ea3c00c59967 \ + --hash=sha256:f8d19565ae3eb956d84da3ef367aa7def14a2735d05bd275cd54c0301f0d0d6c \ + --hash=sha256:f97487996a39cb18278ca33f7be98198f278d0bc3c5d0fd4d7b3d63646ca3c8a # via doxmlparser markupsafe==3.0.2 \ --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ @@ -376,21 +328,22 @@ markupsafe==3.0.2 \ --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 # via jinja2 -packaging==24.2 \ - --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \ - --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f +packaging==25.0 \ + --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ + --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f # via # pytest # sphinx -pluggy==1.5.0 \ - --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ - --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 +pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 # via pytest -pygments==2.19.1 \ - --hash=sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f \ - --hash=sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c +pygments==2.19.2 \ + --hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \ + --hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b # via # -r requirements.in + # pytest # sphinx # sphinx-tabs pykwalify==1.8.0 \ @@ -401,9 +354,9 @@ pyserial==3.5 \ --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \ --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 # via -r requirements.in -pytest==8.3.5 \ - --hash=sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820 \ - --hash=sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845 +pytest==8.4.1 \ + --hash=sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7 \ + --hash=sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c # via -r requirements.in python-dateutil==2.9.0.post0 \ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ @@ -464,19 +417,19 @@ pyyaml==6.0.2 \ --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 # via -r requirements.in -requests==2.32.3 \ - --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ - --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 +requests==2.32.4 \ + --hash=sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c \ + --hash=sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422 # via sphinx roman-numerals-py==3.1.0 ; python_full_version >= '3.11' \ --hash=sha256:9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c \ --hash=sha256:be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d # via sphinx -ruamel-yaml==0.18.10 \ - --hash=sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58 \ - --hash=sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1 +ruamel-yaml==0.18.14 \ + --hash=sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2 \ + --hash=sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7 # via pykwalify -ruamel-yaml-clib==0.2.12 ; python_full_version < '3.13' and platform_python_implementation == 'CPython' \ +ruamel-yaml-clib==0.2.12 ; python_full_version < '3.14' and platform_python_implementation == 'CPython' \ --hash=sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b \ --hash=sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4 \ --hash=sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef \ @@ -524,24 +477,23 @@ ruamel-yaml-clib==0.2.12 ; python_full_version < '3.13' and platform_python_impl --hash=sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987 \ --hash=sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df # via ruamel-yaml -setuptools==78.1.0 \ - --hash=sha256:18fd474d4a82a5f83dac888df697af65afa82dec7323d09c3e37d1f14288da54 \ - --hash=sha256:3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8 +setuptools==80.9.0 \ + --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ + --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c # via sphinx-togglebutton six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 # via - # anytree # doxmlparser # python-dateutil sniffio==1.3.1 \ --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \ --hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc # via anyio -snowballstemmer==2.2.0 \ - --hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \ - --hash=sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a +snowballstemmer==3.0.1 \ + --hash=sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064 \ + --hash=sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895 # via sphinx sphinx==8.1.3 ; python_full_version < '3.11' \ --hash=sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2 \ @@ -550,9 +502,9 @@ sphinx==8.1.3 ; python_full_version < '3.11' \ # -r requirements.in # sphinx-autobuild # sphinx-copybutton + # sphinx-last-updated-by-git # sphinx-notfound-page # sphinx-rtd-theme - # sphinx-sitemap # sphinx-tabs # sphinx-togglebutton # sphinxcontrib-jquery @@ -564,9 +516,9 @@ sphinx==8.2.3 ; python_full_version >= '3.11' \ # -r requirements.in # sphinx-autobuild # sphinx-copybutton + # sphinx-last-updated-by-git # sphinx-notfound-page # sphinx-rtd-theme - # sphinx-sitemap # sphinx-tabs # sphinx-togglebutton # sphinxcontrib-jquery @@ -579,6 +531,10 @@ sphinx-copybutton==0.5.2 \ --hash=sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd \ --hash=sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e # via -r requirements.in +sphinx-last-updated-by-git==0.3.8 \ + --hash=sha256:6382c8285ac1f222483a58569b78c0371af5e55f7fbf9c01e5e8a72d6fdfa499 \ + --hash=sha256:c145011f4609d841805b69a9300099fc02fed8f5bb9e5bcef77d97aea97b7761 + # via sphinx-sitemap sphinx-notfound-page==1.1.0 \ --hash=sha256:835dc76ff7914577a1f58d80a2c8418fb6138c0932c8da8adce4d9096fbcd389 \ --hash=sha256:913e1754370bb3db201d9300d458a8b8b5fb22e9246a816643a819a9ea2b8067 @@ -587,9 +543,9 @@ sphinx-rtd-theme==3.0.2 \ --hash=sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13 \ --hash=sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85 # via -r requirements.in -sphinx-sitemap==2.6.0 \ - --hash=sha256:5e0c66b9f2e371ede80c659866a9eaad337d46ab02802f9c7e5f7bc5893c28d2 \ - --hash=sha256:7478e417d141f99c9af27ccd635f44c03a471a08b20e778a0f9daef7ace1d30b +sphinx-sitemap==2.7.2 \ + --hash=sha256:1a6a8dcecb0ffb85fd37678f785cfcc40adfe3eebafb05e678971e5260b117e4 \ + --hash=sha256:819e028e27579b47efa0e2f863b87136b711c45f13e84730610e80316f6883da # via -r requirements.in sphinx-tabs==3.4.7 \ --hash=sha256:991ad4a424ff54119799ba1491701aa8130dd43509474aef45a81c42d889784d \ @@ -631,9 +587,9 @@ sphinxcontrib-svg2pdfconverter==1.3.0 \ --hash=sha256:5df6b0895e2e2101d720bfd08841bb56d74c57b1f86229a7c18b771dfdf4ffbb \ --hash=sha256:6411a4cc2f57eed96a0d7bbfa139f68cbe7983018881e1e6d7c46053cd69911f # via -r requirements.in -starlette==0.46.1 \ - --hash=sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230 \ - --hash=sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227 +starlette==0.47.1 \ + --hash=sha256:5e11c9f5c7c3f24959edbf2dffdc01bba860228acf657129467d8a7468591527 \ + --hash=sha256:aef012dd2b6be325ffa16698f9dc533614fb1cebd593a906b90dc1025529a79b # via sphinx-autobuild tomli==2.2.1 ; python_full_version < '3.11' \ --hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \ @@ -671,92 +627,129 @@ tomli==2.2.1 ; python_full_version < '3.11' \ # via # pytest # sphinx -typing-extensions==4.13.0 ; python_full_version < '3.13' \ - --hash=sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b \ - --hash=sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5 +typing-extensions==4.14.0 ; python_full_version < '3.13' \ + --hash=sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4 \ + --hash=sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af # via # anyio + # exceptiongroup + # starlette # uvicorn -urllib3==2.3.0 \ - --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \ - --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d +urllib3==2.5.0 \ + --hash=sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760 \ + --hash=sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc # via requests -uvicorn==0.34.0 \ - --hash=sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4 \ - --hash=sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9 +uvicorn==0.35.0 \ + --hash=sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a \ + --hash=sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01 # via sphinx-autobuild -watchfiles==1.0.4 \ - --hash=sha256:02a526ee5b5a09e8168314c905fc545c9bc46509896ed282aeb5a8ba9bd6ca27 \ - --hash=sha256:05d341c71f3d7098920f8551d4df47f7b57ac5b8dad56558064c3431bdfc0b74 \ - --hash=sha256:076f293100db3b0b634514aa0d294b941daa85fc777f9c698adb1009e5aca0b1 \ - --hash=sha256:0799ae68dfa95136dde7c472525700bd48777875a4abb2ee454e3ab18e9fc712 \ - --hash=sha256:0986902677a1a5e6212d0c49b319aad9cc48da4bd967f86a11bde96ad9676ca1 \ - --hash=sha256:0bc80d91ddaf95f70258cf78c471246846c1986bcc5fd33ccc4a1a67fcb40f9a \ - --hash=sha256:13c2ce7b72026cfbca120d652f02c7750f33b4c9395d79c9790b27f014c8a5a2 \ - --hash=sha256:1941b4e39de9b38b868a69b911df5e89dc43767feeda667b40ae032522b9b5f1 \ - --hash=sha256:1eacd91daeb5158c598fe22d7ce66d60878b6294a86477a4715154990394c9b3 \ - --hash=sha256:229e6ec880eca20e0ba2f7e2249c85bae1999d330161f45c78d160832e026ee2 \ - --hash=sha256:22bb55a7c9e564e763ea06c7acea24fc5d2ee5dfc5dafc5cfbedfe58505e9f90 \ - --hash=sha256:278aaa395f405972e9f523bd786ed59dfb61e4b827856be46a42130605fd0899 \ - --hash=sha256:2a9f93f8439639dc244c4d2902abe35b0279102bca7bbcf119af964f51d53c19 \ - --hash=sha256:308ac265c56f936636e3b0e3f59e059a40003c655228c131e1ad439957592303 \ - --hash=sha256:31f1a379c9dcbb3f09cf6be1b7e83b67c0e9faabed0471556d9438a4a4e14202 \ - --hash=sha256:32b026a6ab64245b584acf4931fe21842374da82372d5c039cba6bf99ef722f3 \ - --hash=sha256:342622287b5604ddf0ed2d085f3a589099c9ae8b7331df3ae9845571586c4f3d \ - --hash=sha256:39f4914548b818540ef21fd22447a63e7be6e24b43a70f7642d21f1e73371590 \ - --hash=sha256:3f68d8e9d5a321163ddacebe97091000955a1b74cd43724e346056030b0bacee \ - --hash=sha256:43b168bba889886b62edb0397cab5b6490ffb656ee2fcb22dec8bfeb371a9e12 \ - --hash=sha256:47eb32ef8c729dbc4f4273baece89398a4d4b5d21a1493efea77a17059f4df8a \ - --hash=sha256:4810ea2ae622add560f4aa50c92fef975e475f7ac4900ce5ff5547b2434642d8 \ - --hash=sha256:4e997802d78cdb02623b5941830ab06f8860038faf344f0d288d325cc9c5d2ff \ - --hash=sha256:4ebbeca9360c830766b9f0df3640b791be569d988f4be6c06d6fae41f187f105 \ - --hash=sha256:4f8c4998506241dedf59613082d1c18b836e26ef2a4caecad0ec41e2a15e4226 \ - --hash=sha256:55ccfd27c497b228581e2838d4386301227fc0cb47f5a12923ec2fe4f97b95af \ - --hash=sha256:5717021b199e8353782dce03bd8a8f64438832b84e2885c4a645f9723bf656d9 \ - --hash=sha256:5c11ea22304d17d4385067588123658e9f23159225a27b983f343fcffc3e796a \ - --hash=sha256:5e0227b8ed9074c6172cf55d85b5670199c99ab11fd27d2c473aa30aec67ee42 \ - --hash=sha256:62c9953cf85529c05b24705639ffa390f78c26449e15ec34d5339e8108c7c407 \ - --hash=sha256:6ba473efd11062d73e4f00c2b730255f9c1bdd73cd5f9fe5b5da8dbd4a717205 \ - --hash=sha256:740d103cd01458f22462dedeb5a3382b7f2c57d07ff033fbc9465919e5e1d0f3 \ - --hash=sha256:74cb3ca19a740be4caa18f238298b9d472c850f7b2ed89f396c00a4c97e2d9ff \ - --hash=sha256:7b75fee5a16826cf5c46fe1c63116e4a156924d668c38b013e6276f2582230f0 \ - --hash=sha256:7cf684aa9bba4cd95ecb62c822a56de54e3ae0598c1a7f2065d51e24637a3c5d \ - --hash=sha256:8012bd820c380c3d3db8435e8cf7592260257b378b649154a7948a663b5f84e9 \ - --hash=sha256:857f5fc3aa027ff5e57047da93f96e908a35fe602d24f5e5d8ce64bf1f2fc733 \ - --hash=sha256:8b1f135238e75d075359cf506b27bf3f4ca12029c47d3e769d8593a2024ce161 \ - --hash=sha256:8d0d0630930f5cd5af929040e0778cf676a46775753e442a3f60511f2409f48f \ - --hash=sha256:90192cdc15ab7254caa7765a98132a5a41471cf739513cc9bcf7d2ffcc0ec7b2 \ - --hash=sha256:95b42cac65beae3a362629950c444077d1b44f1790ea2772beaea95451c086bb \ - --hash=sha256:9745a4210b59e218ce64c91deb599ae8775c8a9da4e95fb2ee6fe745fc87d01a \ - --hash=sha256:9d1ef56b56ed7e8f312c934436dea93bfa3e7368adfcf3df4c0da6d4de959a1e \ - --hash=sha256:9eea33ad8c418847dd296e61eb683cae1c63329b6d854aefcd412e12d94ee235 \ - --hash=sha256:9f25d0ba0fe2b6d2c921cf587b2bf4c451860086534f40c384329fb96e2044d1 \ - --hash=sha256:9fe37a2de80aa785d340f2980276b17ef697ab8db6019b07ee4fd28a8359d2f3 \ - --hash=sha256:a38320582736922be8c865d46520c043bff350956dfc9fbaee3b2df4e1740a4b \ - --hash=sha256:a462490e75e466edbb9fc4cd679b62187153b3ba804868452ef0577ec958f5ff \ - --hash=sha256:a5ae5706058b27c74bac987d615105da17724172d5aaacc6c362a40599b6de43 \ - --hash=sha256:aa216f87594f951c17511efe5912808dfcc4befa464ab17c98d387830ce07b60 \ - --hash=sha256:ab0311bb2ffcd9f74b6c9de2dda1612c13c84b996d032cd74799adb656af4e8b \ - --hash=sha256:ab594e75644421ae0a2484554832ca5895f8cab5ab62de30a1a57db460ce06c6 \ - --hash=sha256:aee397456a29b492c20fda2d8961e1ffb266223625346ace14e4b6d861ba9c80 \ - --hash=sha256:b045c800d55bc7e2cadd47f45a97c7b29f70f08a7c2fa13241905010a5493f94 \ - --hash=sha256:b77d5622ac5cc91d21ae9c2b284b5d5c51085a0bdb7b518dba263d0af006132c \ - --hash=sha256:ba5bb3073d9db37c64520681dd2650f8bd40902d991e7b4cfaeece3e32561d08 \ - --hash=sha256:bdef5a1be32d0b07dcea3318a0be95d42c98ece24177820226b56276e06b63b0 \ - --hash=sha256:c2acfa49dd0ad0bf2a9c0bb9a985af02e89345a7189be1efc6baa085e0f72d7c \ - --hash=sha256:c7cce76c138a91e720d1df54014a047e680b652336e1b73b8e3ff3158e05061e \ - --hash=sha256:cc27a65069bcabac4552f34fd2dce923ce3fcde0721a16e4fb1b466d63ec831f \ - --hash=sha256:cdbd912a61543a36aef85e34f212e5d2486e7c53ebfdb70d1e0b060cc50dd0bf \ - --hash=sha256:cdcc92daeae268de1acf5b7befcd6cfffd9a047098199056c72e4623f531de18 \ - --hash=sha256:d3452c1ec703aa1c61e15dfe9d482543e4145e7c45a6b8566978fbb044265a21 \ - --hash=sha256:d6097538b0ae5c1b88c3b55afa245a66793a8fec7ada6755322e465fb1a0e8cc \ - --hash=sha256:d8d3d9203705b5797f0af7e7e5baa17c8588030aaadb7f6a86107b7247303817 \ - --hash=sha256:e0611d244ce94d83f5b9aff441ad196c6e21b55f77f3c47608dcf651efe54c4a \ - --hash=sha256:f12969a3765909cf5dc1e50b2436eb2c0e676a3c75773ab8cc3aa6175c16e902 \ - --hash=sha256:f44a39aee3cbb9b825285ff979ab887a25c5d336e5ec3574f1506a4671556a8d \ - --hash=sha256:f9ce064e81fe79faa925ff03b9f4c1a98b0bbb4a1b8c1b015afa93030cb21a49 \ - --hash=sha256:fb2c46e275fbb9f0c92e7654b231543c7bbfa1df07cdc4b99fa73bedfde5c844 \ - --hash=sha256:fc2eb5d14a8e0d5df7b36288979176fbb39672d45184fc4b1c004d7c3ce29317 +watchfiles==1.1.0 \ + --hash=sha256:00645eb79a3faa70d9cb15c8d4187bb72970b2470e938670240c7998dad9f13a \ + --hash=sha256:04e4ed5d1cd3eae68c89bcc1a485a109f39f2fd8de05f705e98af6b5f1861f1f \ + --hash=sha256:0a7d40b77f07be87c6faa93d0951a0fcd8cbca1ddff60a1b65d741bac6f3a9f6 \ + --hash=sha256:0ece16b563b17ab26eaa2d52230c9a7ae46cf01759621f4fbbca280e438267b3 \ + --hash=sha256:11ee4444250fcbeb47459a877e5e80ed994ce8e8d20283857fc128be1715dac7 \ + --hash=sha256:12b0a02a91762c08f7264e2e79542f76870c3040bbc847fb67410ab81474932a \ + --hash=sha256:12fe8eaffaf0faa7906895b4f8bb88264035b3f0243275e0bf24af0436b27259 \ + --hash=sha256:130fc497b8ee68dce163e4254d9b0356411d1490e868bd8790028bc46c5cc297 \ + --hash=sha256:17ab167cca6339c2b830b744eaf10803d2a5b6683be4d79d8475d88b4a8a4be1 \ + --hash=sha256:199207b2d3eeaeb80ef4411875a6243d9ad8bc35b07fc42daa6b801cc39cc41c \ + --hash=sha256:20ecc8abbd957046f1fe9562757903f5eaf57c3bce70929fda6c7711bb58074a \ + --hash=sha256:239736577e848678e13b201bba14e89718f5c2133dfd6b1f7846fa1b58a8532b \ + --hash=sha256:249590eb75ccc117f488e2fabd1bfa33c580e24b96f00658ad88e38844a040bb \ + --hash=sha256:27f30e14aa1c1e91cb653f03a63445739919aef84c8d2517997a83155e7a2fcc \ + --hash=sha256:29e7bc2eee15cbb339c68445959108803dc14ee0c7b4eea556400131a8de462b \ + --hash=sha256:328dbc9bff7205c215a7807da7c18dce37da7da718e798356212d22696404339 \ + --hash=sha256:32d6d4e583593cb8576e129879ea0991660b935177c0f93c6681359b3654bfa9 \ + --hash=sha256:3366f56c272232860ab45c77c3ca7b74ee819c8e1f6f35a7125556b198bbc6df \ + --hash=sha256:3434e401f3ce0ed6b42569128b3d1e3af773d7ec18751b918b89cd49c14eaafb \ + --hash=sha256:37d3d3f7defb13f62ece99e9be912afe9dd8a0077b7c45ee5a57c74811d581a4 \ + --hash=sha256:3a6fd40bbb50d24976eb275ccb55cd1951dfb63dbc27cae3066a6ca5f4beabd5 \ + --hash=sha256:3aba215958d88182e8d2acba0fdaf687745180974946609119953c0e112397dc \ + --hash=sha256:406520216186b99374cdb58bc48e34bb74535adec160c8459894884c983a149c \ + --hash=sha256:4281cd9fce9fc0a9dbf0fc1217f39bf9cf2b4d315d9626ef1d4e87b84699e7e8 \ + --hash=sha256:42f92befc848bb7a19658f21f3e7bae80d7d005d13891c62c2cd4d4d0abb3433 \ + --hash=sha256:48aa25e5992b61debc908a61ab4d3f216b64f44fdaa71eb082d8b2de846b7d12 \ + --hash=sha256:5007f860c7f1f8df471e4e04aaa8c43673429047d63205d1630880f7637bca30 \ + --hash=sha256:50a51a90610d0845a5931a780d8e51d7bd7f309ebc25132ba975aca016b576a0 \ + --hash=sha256:51556d5004887045dba3acdd1fdf61dddea2be0a7e18048b5e853dcd37149b86 \ + --hash=sha256:51b81e55d40c4b4aa8658427a3ee7ea847c591ae9e8b81ef94a90b668999353c \ + --hash=sha256:5366164391873ed76bfdf618818c82084c9db7fac82b64a20c44d335eec9ced5 \ + --hash=sha256:54062ef956807ba806559b3c3d52105ae1827a0d4ab47b621b31132b6b7e2866 \ + --hash=sha256:60022527e71d1d1fda67a33150ee42869042bce3d0fcc9cc49be009a9cded3fb \ + --hash=sha256:622d6b2c06be19f6e89b1d951485a232e3b59618def88dbeda575ed8f0d8dbf2 \ + --hash=sha256:62cc7a30eeb0e20ecc5f4bd113cd69dcdb745a07c68c0370cea919f373f65d9e \ + --hash=sha256:693ed7ec72cbfcee399e92c895362b6e66d63dac6b91e2c11ae03d10d503e575 \ + --hash=sha256:6d2404af8db1329f9a3c9b79ff63e0ae7131986446901582067d9304ae8aaf7f \ + --hash=sha256:7049e52167fc75fc3cc418fc13d39a8e520cbb60ca08b47f6cedb85e181d2f2a \ + --hash=sha256:7080c4bb3efd70a07b1cc2df99a7aa51d98685be56be6038c3169199d0a1c69f \ + --hash=sha256:7738027989881e70e3723c75921f1efa45225084228788fc59ea8c6d732eb30d \ + --hash=sha256:7a7bd57a1bb02f9d5c398c0c1675384e7ab1dd39da0ca50b7f09af45fa435277 \ + --hash=sha256:7b3443f4ec3ba5aa00b0e9fa90cf31d98321cbff8b925a7c7b84161619870bc9 \ + --hash=sha256:7c55b0f9f68590115c25272b06e63f0824f03d4fc7d6deed43d8ad5660cabdbf \ + --hash=sha256:7fd1b3879a578a8ec2076c7961076df540b9af317123f84569f5a9ddee64ce92 \ + --hash=sha256:8076a5769d6bdf5f673a19d51da05fc79e2bbf25e9fe755c47595785c06a8c72 \ + --hash=sha256:80f811146831c8c86ab17b640801c25dc0a88c630e855e2bef3568f30434d52b \ + --hash=sha256:8412eacef34cae2836d891836a7fff7b754d6bcac61f6c12ba5ca9bc7e427b68 \ + --hash=sha256:865c8e95713744cf5ae261f3067861e9da5f1370ba91fc536431e29b418676fa \ + --hash=sha256:86b1e28d4c37e89220e924305cd9f82866bb0ace666943a6e4196c5df4d58dcc \ + --hash=sha256:891c69e027748b4a73847335d208e374ce54ca3c335907d381fde4e41661b13b \ + --hash=sha256:8ac164e20d17cc285f2b94dc31c384bc3aa3dd5e7490473b3db043dd70fbccfd \ + --hash=sha256:8c5701dc474b041e2934a26d31d39f90fac8a3dee2322b39f7729867f932b1d4 \ + --hash=sha256:90ebb429e933645f3da534c89b29b665e285048973b4d2b6946526888c3eb2c7 \ + --hash=sha256:923fec6e5461c42bd7e3fd5ec37492c6f3468be0499bc0707b4bbbc16ac21792 \ + --hash=sha256:935f9edd022ec13e447e5723a7d14456c8af254544cefbc533f6dd276c9aa0d9 \ + --hash=sha256:95ab1594377effac17110e1352989bdd7bdfca9ff0e5eeccd8c69c5389b826d0 \ + --hash=sha256:9974d2f7dc561cce3bb88dfa8eb309dab64c729de85fba32e98d75cf24b66297 \ + --hash=sha256:9c733cda03b6d636b4219625a4acb5c6ffb10803338e437fb614fef9516825ef \ + --hash=sha256:9dc001c3e10de4725c749d4c2f2bdc6ae24de5a88a339c4bce32300a31ede179 \ + --hash=sha256:9f811079d2f9795b5d48b55a37aa7773680a5659afe34b54cc1d86590a51507d \ + --hash=sha256:a2726d7bfd9f76158c84c10a409b77a320426540df8c35be172444394b17f7ea \ + --hash=sha256:a479466da6db5c1e8754caee6c262cd373e6e6c363172d74394f4bff3d84d7b5 \ + --hash=sha256:a543492513a93b001975ae283a51f4b67973662a375a403ae82f420d2c7205ee \ + --hash=sha256:a89c75a5b9bc329131115a409d0acc16e8da8dfd5867ba59f1dd66ae7ea8fa82 \ + --hash=sha256:a8f6f72974a19efead54195bc9bed4d850fc047bb7aa971268fd9a8387c89011 \ + --hash=sha256:a9ccbf1f129480ed3044f540c0fdbc4ee556f7175e5ab40fe077ff6baf286d4e \ + --hash=sha256:aa0cc8365ab29487eb4f9979fd41b22549853389e22d5de3f134a6796e1b05a4 \ + --hash=sha256:adb4167043d3a78280d5d05ce0ba22055c266cf8655ce942f2fb881262ff3cdf \ + --hash=sha256:af06c863f152005c7592df1d6a7009c836a247c9d8adb78fef8575a5a98699db \ + --hash=sha256:b067915e3c3936966a8607f6fe5487df0c9c4afb85226613b520890049deea20 \ + --hash=sha256:b7c5f6fe273291f4d414d55b2c80d33c457b8a42677ad14b4b47ff025d0893e4 \ + --hash=sha256:b915daeb2d8c1f5cee4b970f2e2c988ce6514aace3c9296e58dd64dc9aa5d575 \ + --hash=sha256:ba0e3255b0396cac3cc7bbace76404dd72b5438bf0d8e7cefa2f79a7f3649caa \ + --hash=sha256:bda8136e6a80bdea23e5e74e09df0362744d24ffb8cd59c4a95a6ce3d142f79c \ + --hash=sha256:bfe3c517c283e484843cb2e357dd57ba009cff351edf45fb455b5fbd1f45b15f \ + --hash=sha256:c588c45da9b08ab3da81d08d7987dae6d2a3badd63acdb3e206a42dbfa7cb76f \ + --hash=sha256:c600e85f2ffd9f1035222b1a312aff85fd11ea39baff1d705b9b047aad2ce267 \ + --hash=sha256:c68e9f1fcb4d43798ad8814c4c1b61547b014b667216cb754e606bfade587018 \ + --hash=sha256:c9649dfc57cc1f9835551deb17689e8d44666315f2e82d337b9f07bd76ae3aa2 \ + --hash=sha256:cb45350fd1dc75cd68d3d72c47f5b513cb0578da716df5fba02fff31c69d5f2d \ + --hash=sha256:cbcf8630ef4afb05dc30107bfa17f16c0896bb30ee48fc24bf64c1f970f3b1fd \ + --hash=sha256:cbd949bdd87567b0ad183d7676feb98136cde5bb9025403794a4c0db28ed3a47 \ + --hash=sha256:cc08ef8b90d78bfac66f0def80240b0197008e4852c9f285907377b2947ffdcb \ + --hash=sha256:cd17a1e489f02ce9117b0de3c0b1fab1c3e2eedc82311b299ee6b6faf6c23a29 \ + --hash=sha256:d05686b5487cfa2e2c28ff1aa370ea3e6c5accfe6435944ddea1e10d93872147 \ + --hash=sha256:d0e10e6f8f6dc5762adee7dece33b722282e1f59aa6a55da5d493a97282fedd8 \ + --hash=sha256:d181ef50923c29cf0450c3cd47e2f0557b62218c50b2ab8ce2ecaa02bd97e670 \ + --hash=sha256:d1caf40c1c657b27858f9774d5c0e232089bca9cb8ee17ce7478c6e9264d2587 \ + --hash=sha256:d7642b9bc4827b5518ebdb3b82698ada8c14c7661ddec5fe719f3e56ccd13c97 \ + --hash=sha256:d9481174d3ed982e269c090f780122fb59cee6c3796f74efe74e70f7780ed94c \ + --hash=sha256:d9ba68ec283153dead62cbe81872d28e053745f12335d037de9cbd14bd1877f5 \ + --hash=sha256:da71945c9ace018d8634822f16cbc2a78323ef6c876b1d34bbf5d5222fd6a72e \ + --hash=sha256:dc44678a72ac0910bac46fa6a0de6af9ba1355669b3dfaf1ce5f05ca7a74364e \ + --hash=sha256:df32d59cb9780f66d165a9a7a26f19df2c7d24e3bd58713108b41d0ff4f929c6 \ + --hash=sha256:df670918eb7dd719642e05979fc84704af913d563fd17ed636f7c4783003fdcc \ + --hash=sha256:e78b6ed8165996013165eeabd875c5dfc19d41b54f94b40e9fff0eb3193e5e8e \ + --hash=sha256:ed8fc66786de8d0376f9f913c09e963c66e90ced9aa11997f93bdb30f7c872a8 \ + --hash=sha256:eff4b8d89f444f7e49136dc695599a591ff769300734446c0a86cba2eb2f9895 \ + --hash=sha256:f21af781a4a6fbad54f03c598ab620e3a77032c5878f3d780448421a6e1818c7 \ + --hash=sha256:f2bcdc54ea267fe72bfc7d83c041e4eb58d7d8dc6f578dfddb52f037ce62f432 \ + --hash=sha256:f2f0498b7d2a3c072766dba3274fe22a183dbea1f99d188f1c6c72209a1063dc \ + --hash=sha256:f7208ab6e009c627b7557ce55c465c98967e8caa8b11833531fdf95799372633 \ + --hash=sha256:f7590d5a455321e53857892ab8879dce62d1f4b04748769f5adf2e707afb9d4f \ + --hash=sha256:fa257a4d0d21fcbca5b5fcba9dca5a78011cb93c0323fb8855c6d2dfbc76eb77 \ + --hash=sha256:fba9b62da882c1be1280a7584ec4515d0a6006a94d6e5819730ec2eab60ffe12 \ + --hash=sha256:fe4371595edf78c41ef8ac8df20df3943e13defd0efcb732b2e393b5a8a7a71f # via sphinx-autobuild websockets==15.0.1 \ --hash=sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2 \ diff --git a/drivers/flash/Kconfig.mspi b/drivers/flash/Kconfig.mspi index d0f244957d2..5740f3618d7 100644 --- a/drivers/flash/Kconfig.mspi +++ b/drivers/flash/Kconfig.mspi @@ -35,10 +35,29 @@ menuconfig FLASH_MSPI_NOR select FLASH_MSPI select FLASH_HAS_EXPLICIT_ERASE select FLASH_JESD216 - select GPIO if $(dt_compat_any_has_prop,$(DT_COMPAT_JEDEC_MSPI_NOR),reset-gpios) + select GPIO if $(dt_compat_any_has_prop,$(DT_COMPAT_JEDEC_MSPI_NOR),reset-gpios) \ + || $(dt_compat_any_has_prop,$(DT_COMPAT_JEDEC_MSPI_NOR),supply-gpios) if FLASH_MSPI_NOR +config FLASH_MSPI_NOR_USE_SFDP + bool "Use Serial Flash Discoverable Parameters (SFDP)" + default $(dt_compat_any_has_prop,$(DT_COMPAT_JEDEC_MSPI_NOR),sfdp-bfp) + help + Use information from SFDP for setting up flash command transfers + and for configuring the flash chip. + + Currently, only build time processing of SFDP structures is supported, + based on dts arrays provided as flash node properties like `sfdp-bfp`, + `sfdp-ff05`, and `sfdp-ff84`. Depending on the IO mode used, some or + all of these properties are required for building the flash driver. + Data for these properties can be obtained with the `drivers/jesd216` + sample. If a given SFDP table is not available in a flash chip, + the related property can be defined as an empty array - this will + prevent a related build assertion from failing and default values + will be assigned to parameters that would otherwise be read from + that SFDP table. + config FLASH_MSPI_NOR_LAYOUT_PAGE_SIZE int "Page size to use for FLASH_LAYOUT feature" depends on FLASH_PAGE_LAYOUT diff --git a/drivers/flash/flash_mspi_nor.c b/drivers/flash/flash_mspi_nor.c index bbda4c6361d..a634b3d9118 100644 --- a/drivers/flash/flash_mspi_nor.c +++ b/drivers/flash/flash_mspi_nor.c @@ -14,11 +14,20 @@ #include "flash_mspi_nor.h" #include "flash_mspi_nor_sfdp.h" -#define INVALID_DTS_RX_DUMMY 0xFF +LOG_MODULE_REGISTER(flash_mspi_nor, CONFIG_FLASH_LOG_LEVEL); + +#define XIP_DEV_CFG_MASK (MSPI_DEVICE_CONFIG_CMD_LEN | \ + MSPI_DEVICE_CONFIG_ADDR_LEN | \ + MSPI_DEVICE_CONFIG_READ_CMD | \ + MSPI_DEVICE_CONFIG_WRITE_CMD | \ + MSPI_DEVICE_CONFIG_RX_DUMMY | \ + MSPI_DEVICE_CONFIG_TX_DUMMY) + +#define NON_XIP_DEV_CFG_MASK (MSPI_DEVICE_CONFIG_ALL & ~XIP_DEV_CFG_MASK) static void set_up_xfer(const struct device *dev, enum mspi_xfer_direction dir); static int perform_xfer(const struct device *dev, - uint8_t cmd, bool in_target_io_mode); + uint8_t cmd, bool mem_access); static int cmd_rdsr(const struct device *dev, uint8_t op_code, uint8_t *sr); static int wait_until_ready(const struct device *dev, k_timeout_t poll_period); static int cmd_wren(const struct device *dev); @@ -27,8 +36,6 @@ static int cmd_wrsr(const struct device *dev, uint8_t op_code, #include "flash_mspi_nor_quirks.h" -LOG_MODULE_REGISTER(flash_mspi_nor, CONFIG_FLASH_LOG_LEVEL); - static void set_up_xfer(const struct device *dev, enum mspi_xfer_direction dir) { const struct flash_mspi_nor_config *dev_config = dev->config; @@ -57,8 +64,21 @@ static void set_up_xfer_with_addr(const struct device *dev, dev_data->packet.address = addr; } +static uint16_t get_extended_command(const struct device *dev, + uint8_t cmd) +{ + struct flash_mspi_nor_data *dev_data = dev->data; + uint8_t cmd_extension = cmd; + + if (dev_data->cmd_info.cmd_extension == CMD_EXTENSION_INVERSE) { + cmd_extension = ~cmd_extension; + } + + return ((uint16_t)cmd << 8) | cmd_extension; +} + static int perform_xfer(const struct device *dev, - uint8_t cmd, bool data_transfer) + uint8_t cmd, bool mem_access) { const struct flash_mspi_nor_config *dev_config = dev->config; struct flash_mspi_nor_data *dev_data = dev->data; @@ -67,15 +87,8 @@ static int perform_xfer(const struct device *dev, if (dev_data->cmd_info.cmd_extension != CMD_EXTENSION_NONE && dev_data->in_target_io_mode) { - uint8_t cmd_extension = cmd; - - if (dev_data->cmd_info.cmd_extension == CMD_EXTENSION_INVERSE) { - cmd_extension = ~cmd_extension; - } - dev_data->xfer.cmd_length = 2; - dev_data->packet.cmd = ((uint16_t)cmd << 8) - | cmd_extension; + dev_data->packet.cmd = get_extended_command(dev, cmd); } else { dev_data->xfer.cmd_length = 1; dev_data->packet.cmd = cmd; @@ -86,9 +99,9 @@ static int perform_xfer(const struct device *dev, /* If multiple IO lines are used in all the transfer phases * or in none of them, there's no need to switch the IO mode. */ - } else if (data_transfer) { - /* For data transfer commands (read and program), ensure that - * the target IO mode is active. + } else if (mem_access) { + /* For commands accessing the flash memory (read and program), + * ensure that the target IO mode is active. */ if (!dev_data->in_target_io_mode) { cfg = &dev_config->mspi_nor_cfg; @@ -119,7 +132,7 @@ static int perform_xfer(const struct device *dev, return rc; } - dev_data->in_target_io_mode = data_transfer; + dev_data->in_target_io_mode = mem_access; } rc = mspi_transceive(dev_config->bus, &dev_config->mspi_id, @@ -132,83 +145,6 @@ static int perform_xfer(const struct device *dev, return 0; } -static int acquire(const struct device *dev) -{ - const struct flash_mspi_nor_config *dev_config = dev->config; - struct flash_mspi_nor_data *dev_data = dev->data; - int rc; - - k_sem_take(&dev_data->acquired, K_FOREVER); - - rc = pm_device_runtime_get(dev_config->bus); - if (rc < 0) { - LOG_ERR("pm_device_runtime_get() failed: %d", rc); - } else { - enum mspi_dev_cfg_mask mask; - - if (dev_config->multiperipheral_bus) { - mask = MSPI_DEVICE_CONFIG_ALL; - } else { - mask = MSPI_DEVICE_CONFIG_NONE; - } - - /* This acquires the MSPI controller and reconfigures it - * if needed for the flash device. - */ - rc = mspi_dev_config(dev_config->bus, &dev_config->mspi_id, - mask, &dev_config->mspi_nor_cfg); - if (rc < 0) { - LOG_ERR("mspi_dev_config() failed: %d", rc); - } else { - if (dev_config->multiperipheral_bus) { - dev_data->in_target_io_mode = true; - } - - return 0; - } - - (void)pm_device_runtime_put(dev_config->bus); - } - - k_sem_give(&dev_data->acquired); - return rc; -} - -static void release(const struct device *dev) -{ - const struct flash_mspi_nor_config *dev_config = dev->config; - struct flash_mspi_nor_data *dev_data = dev->data; - - /* This releases the MSPI controller. */ - (void)mspi_get_channel_status(dev_config->bus, 0); - - (void)pm_device_runtime_put(dev_config->bus); - - k_sem_give(&dev_data->acquired); -} - -static inline uint32_t dev_flash_size(const struct device *dev) -{ - const struct flash_mspi_nor_config *dev_config = dev->config; - - return dev_config->flash_size; -} - -static inline uint16_t dev_page_size(const struct device *dev) -{ - const struct flash_mspi_nor_config *dev_config = dev->config; - - return dev_config->page_size; -} - -static inline -const struct jesd216_erase_type *dev_erase_types(const struct device *dev) -{ - struct flash_mspi_nor_data *dev_data = dev->data; - - return dev_data->erase_types; -} - static int cmd_rdsr(const struct device *dev, uint8_t op_code, uint8_t *sr) { struct flash_mspi_nor_data *dev_data = dev->data; @@ -295,10 +231,103 @@ static int cmd_wrsr(const struct device *dev, uint8_t op_code, return 0; } +static int acquire(const struct device *dev) +{ + const struct flash_mspi_nor_config *dev_config = dev->config; + struct flash_mspi_nor_data *dev_data = dev->data; + int rc; + + k_sem_take(&dev_data->acquired, K_FOREVER); + + rc = pm_device_runtime_get(dev_config->bus); + if (rc < 0) { + LOG_ERR("pm_device_runtime_get() failed: %d", rc); + } else { + enum mspi_dev_cfg_mask mask; + + if (dev_config->multiperipheral_bus) { + mask = NON_XIP_DEV_CFG_MASK; + } else { + mask = MSPI_DEVICE_CONFIG_NONE; + } + + /* This acquires the MSPI controller and reconfigures it + * if needed for the flash device. + */ + rc = mspi_dev_config(dev_config->bus, &dev_config->mspi_id, + mask, &dev_config->mspi_nor_cfg); + if (rc < 0) { + LOG_ERR("mspi_dev_config() failed: %d", rc); + } else { + if (dev_config->multiperipheral_bus) { + dev_data->in_target_io_mode = true; + } + + return 0; + } + + (void)pm_device_runtime_put(dev_config->bus); + } + + k_sem_give(&dev_data->acquired); + return rc; +} + +static void release(const struct device *dev) +{ + const struct flash_mspi_nor_config *dev_config = dev->config; + struct flash_mspi_nor_data *dev_data = dev->data; + + /* This releases the MSPI controller. */ + (void)mspi_get_channel_status(dev_config->bus, 0); + + (void)pm_device_runtime_put(dev_config->bus); + + k_sem_give(&dev_data->acquired); +} + +static inline uint32_t dev_flash_size(const struct device *dev) +{ + const struct flash_mspi_nor_config *dev_config = dev->config; + + return dev_config->flash_size; +} + +static inline uint16_t dev_page_size(const struct device *dev) +{ + const struct flash_mspi_nor_config *dev_config = dev->config; + + return dev_config->page_size; +} + +static inline +const struct jesd216_erase_type *dev_erase_types(const struct device *dev) +{ + struct flash_mspi_nor_data *dev_data = dev->data; + + return dev_data->erase_types; +} + +static uint8_t get_rx_dummy(const struct device *dev) +{ + const struct flash_mspi_nor_config *dev_config = dev->config; + struct flash_mspi_nor_data *dev_data = dev->data; + + /* If the number of RX dummy cycles is specified in dts, use that value. */ + if (dev_config->rx_dummy_specified) { + return dev_config->mspi_nor_cfg.rx_dummy; + } + + /* Since it's not yet possible to specify mode bits with MSPI API, + * treat mode bit cycles as just dummy. + */ + return dev_data->cmd_info.read_mode_bit_cycles + + dev_data->cmd_info.read_dummy_cycles; +} + static int api_read(const struct device *dev, off_t addr, void *dest, size_t size) { - const struct flash_mspi_nor_config *dev_config = dev->config; struct flash_mspi_nor_data *dev_data = dev->data; const uint32_t flash_size = dev_flash_size(dev); int rc; @@ -317,12 +346,7 @@ static int api_read(const struct device *dev, off_t addr, void *dest, } set_up_xfer_with_addr(dev, MSPI_RX, addr); - if (dev_config->dts_rx_dummy != INVALID_DTS_RX_DUMMY) { - dev_data->xfer.rx_dummy = dev_config->dts_rx_dummy; - } else { - dev_data->xfer.rx_dummy = dev_data->cmd_info.read_mode_clocks - + dev_data->cmd_info.read_dummy_clocks; - } + dev_data->xfer.rx_dummy = get_rx_dummy(dev); dev_data->packet.data_buf = dest; dev_data->packet.num_bytes = size; rc = perform_xfer(dev, dev_data->cmd_info.read_cmd, true); @@ -480,6 +504,12 @@ static int api_erase(const struct device *dev, off_t addr, size_t size) return rc; } +static int api_get_size(const struct device *dev, uint64_t *size) +{ + *size = dev_flash_size(dev); + return 0; +} + static const struct flash_parameters *api_get_parameters(const struct device *dev) { @@ -493,6 +523,33 @@ struct flash_parameters *api_get_parameters(const struct device *dev) return ¶meters; } +static int sfdp_read(const struct device *dev, off_t addr, void *dest, + size_t size) +{ + struct flash_mspi_nor_data *dev_data = dev->data; + int rc; + + set_up_xfer(dev, MSPI_RX); + if (dev_data->in_target_io_mode) { + dev_data->xfer.rx_dummy = dev_data->cmd_info.sfdp_dummy_20 + ? 20 : 8; + dev_data->xfer.addr_length = dev_data->cmd_info.sfdp_addr_4 + ? 4 : 3; + } else { + dev_data->xfer.rx_dummy = 8; + dev_data->xfer.addr_length = 3; + } + dev_data->packet.address = addr; + dev_data->packet.data_buf = dest; + dev_data->packet.num_bytes = size; + rc = perform_xfer(dev, JESD216_CMD_READ_SFDP, false); + if (rc < 0) { + LOG_ERR("Read SFDP xfer failed: %d", rc); + } + + return rc; +} + static int read_jedec_id(const struct device *dev, uint8_t *id) { struct flash_mspi_nor_data *dev_data = dev->data; @@ -530,7 +587,6 @@ static void api_page_layout(const struct device *dev, static int api_sfdp_read(const struct device *dev, off_t addr, void *dest, size_t size) { - struct flash_mspi_nor_data *dev_data = dev->data; int rc; if (size == 0) { @@ -542,23 +598,7 @@ static int api_sfdp_read(const struct device *dev, off_t addr, void *dest, return rc; } - set_up_xfer(dev, MSPI_RX); - if (dev_data->in_target_io_mode) { - dev_data->xfer.rx_dummy = dev_data->cmd_info.sfdp_dummy_20 - ? 20 : 8; - dev_data->xfer.addr_length = dev_data->cmd_info.sfdp_addr_4 - ? 4 : 3; - } else { - dev_data->xfer.rx_dummy = 8; - dev_data->xfer.addr_length = 3; - } - dev_data->packet.address = addr; - dev_data->packet.data_buf = dest; - dev_data->packet.num_bytes = size; - rc = perform_xfer(dev, JESD216_CMD_READ_SFDP, false); - if (rc < 0) { - LOG_ERR("Read SFDP xfer failed: %d", rc); - } + rc = sfdp_read(dev, addr, dest, size); release(dev); @@ -695,7 +735,7 @@ static int octal_enable_set(const struct device *dev, bool enable) uint8_t status_reg; int rc; - if (dev_data->switch_info.octal_enable_req != BFP_DW19_OER_VAL_S2B3) { + if (dev_data->switch_info.octal_enable_req != OCTAL_ENABLE_REQ_S2B3) { LOG_ERR("Unknown Octal Enable Requirement: %u", dev_data->switch_info.octal_enable_req); return -ENOTSUP; @@ -767,8 +807,7 @@ static int switch_to_target_io_mode(const struct device *dev) if (dev_data->switch_info.quad_enable_req != JESD216_DW15_QER_VAL_NONE) { bool quad_needed = io_mode == MSPI_IO_MODE_QUAD_1_1_4 || - io_mode == MSPI_IO_MODE_QUAD_1_4_4 || - io_mode == MSPI_IO_MODE_QUAD; + io_mode == MSPI_IO_MODE_QUAD_1_4_4; rc = quad_enable_set(dev, quad_needed); if (rc < 0) { @@ -777,10 +816,9 @@ static int switch_to_target_io_mode(const struct device *dev) } } - if (dev_data->switch_info.octal_enable_req != BFP_DW19_OER_VAL_NONE) { + if (dev_data->switch_info.octal_enable_req != OCTAL_ENABLE_REQ_NONE) { bool octal_needed = io_mode == MSPI_IO_MODE_OCTAL_1_1_8 || - io_mode == MSPI_IO_MODE_OCTAL_1_8_8 || - io_mode == MSPI_IO_MODE_OCTAL; + io_mode == MSPI_IO_MODE_OCTAL_1_8_8; rc = octal_enable_set(dev, octal_needed); if (rc < 0) { @@ -806,7 +844,7 @@ static int switch_to_target_io_mode(const struct device *dev) } return mspi_dev_config(dev_config->bus, &dev_config->mspi_id, - MSPI_DEVICE_CONFIG_ALL, + NON_XIP_DEV_CFG_MASK, &dev_config->mspi_nor_cfg); } @@ -936,6 +974,8 @@ static int flash_chip_init(const struct device *dev) const struct flash_mspi_nor_config *dev_config = dev->config; struct flash_mspi_nor_data *dev_data = dev->data; uint8_t id[JESD216_READ_ID_LEN] = {0}; + uint16_t dts_cmd = 0; + uint32_t sfdp_signature; bool flash_reset = false; int rc; @@ -943,6 +983,7 @@ static int flash_chip_init(const struct device *dev) MSPI_DEVICE_CONFIG_ALL, &dev_config->mspi_nor_init_cfg); if (rc < 0) { + LOG_ERR("%s: dev_config() failed: %d", __func__, rc); return rc; } @@ -990,6 +1031,55 @@ static int flash_chip_init(const struct device *dev) rc = dev_config->quirks->pre_init(dev); } + /* Allow users to specify commands for Read and Page Program operations + * through dts to override what was taken from SFDP and perhaps altered + * in the pre_init quirk. Also the number of dummy cycles for the Read + * operation can be overridden this way, see get_rx_dummy(). + */ + if (dev_config->mspi_nor_cfg.read_cmd != 0) { + dts_cmd = (uint16_t)dev_config->mspi_nor_cfg.read_cmd; + if (dev_config->mspi_nor_cfg.cmd_length > 1) { + dev_data->cmd_info.read_cmd = (uint8_t)(dts_cmd >> 8); + } else { + dev_data->cmd_info.read_cmd = (uint8_t)dts_cmd; + } + } + if (dev_config->mspi_nor_cfg.write_cmd != 0) { + dts_cmd = (uint16_t)dev_config->mspi_nor_cfg.write_cmd; + if (dev_config->mspi_nor_cfg.cmd_length > 1) { + dev_data->cmd_info.pp_cmd = (uint8_t)(dts_cmd >> 8); + } else { + dev_data->cmd_info.pp_cmd = (uint8_t)dts_cmd; + } + } + if (dts_cmd != 0) { + if (dev_config->mspi_nor_cfg.cmd_length <= 1) { + dev_data->cmd_info.cmd_extension = CMD_EXTENSION_NONE; + } else if ((dts_cmd & 0xFF) == ((dts_cmd >> 8) & 0xFF)) { + dev_data->cmd_info.cmd_extension = CMD_EXTENSION_SAME; + } else { + dev_data->cmd_info.cmd_extension = CMD_EXTENSION_INVERSE; + } + } + + if (dev_config->jedec_id_specified) { + rc = read_jedec_id(dev, id); + if (rc < 0) { + LOG_ERR("Failed to read JEDEC ID: %d", rc); + return rc; + } + + if (memcmp(id, dev_config->jedec_id, sizeof(id)) != 0) { + LOG_ERR("JEDEC ID mismatch, read: %02x %02x %02x, " + "expected: %02x %02x %02x", + id[0], id[1], id[2], + dev_config->jedec_id[0], + dev_config->jedec_id[1], + dev_config->jedec_id[2]); + return -ENODEV; + } + } + rc = switch_to_target_io_mode(dev); if (rc < 0) { LOG_ERR("Failed to switch to target io mode: %d", rc); @@ -998,28 +1088,57 @@ static int flash_chip_init(const struct device *dev) dev_data->in_target_io_mode = true; - rc = read_jedec_id(dev, id); - if (rc < 0) { - LOG_ERR("Failed to read JEDEC ID: %d", rc); - return rc; - } + if (IS_ENABLED(CONFIG_FLASH_MSPI_NOR_USE_SFDP)) { + /* Read the SFDP signature to test if communication with + * the flash chip can be successfully performed after switching + * to target IO mode. + */ + rc = sfdp_read(dev, 0, &sfdp_signature, sizeof(sfdp_signature)); + if (rc < 0) { + LOG_ERR("Failed to read SFDP signature: %d", rc); + return rc; + } - if (memcmp(id, dev_config->jedec_id, sizeof(id)) != 0) { - LOG_ERR("JEDEC ID mismatch, read: %02x %02x %02x, " - "expected: %02x %02x %02x", - id[0], id[1], id[2], - dev_config->jedec_id[0], - dev_config->jedec_id[1], - dev_config->jedec_id[2]); - return -ENODEV; + if (sfdp_signature != JESD216_SFDP_MAGIC) { + LOG_ERR("SFDP signature mismatch: %08x, expected: %08x", + sfdp_signature, JESD216_SFDP_MAGIC); + return -ENODEV; + } } #if defined(CONFIG_MSPI_XIP) /* Enable XIP access for this chip if specified so in DT. */ if (dev_config->xip_cfg.enable) { + struct mspi_dev_cfg mspi_cfg = { + .addr_length = dev_data->cmd_info.uses_4byte_addr + ? 4 : 3, + .rx_dummy = get_rx_dummy(dev), + }; + + if (dev_data->cmd_info.cmd_extension != CMD_EXTENSION_NONE) { + mspi_cfg.cmd_length = 2; + mspi_cfg.read_cmd = get_extended_command(dev, + dev_data->cmd_info.read_cmd); + mspi_cfg.write_cmd = get_extended_command(dev, + dev_data->cmd_info.pp_cmd); + } else { + mspi_cfg.cmd_length = 1; + mspi_cfg.read_cmd = dev_data->cmd_info.read_cmd; + mspi_cfg.write_cmd = dev_data->cmd_info.pp_cmd; + } + + rc = mspi_dev_config(dev_config->bus, &dev_config->mspi_id, + XIP_DEV_CFG_MASK, &mspi_cfg); + if (rc < 0) { + LOG_ERR("Failed to configure controller for XIP: %d", + rc); + return rc; + } + rc = mspi_xip_config(dev_config->bus, &dev_config->mspi_id, &dev_config->xip_cfg); if (rc < 0) { + LOG_ERR("Failed to enable XIP: %d", rc); return rc; } } @@ -1063,18 +1182,6 @@ static int drv_init(const struct device *dev) return rc; } - /* Allow users to specify commands for Read and Page Program operations - * through dts and override what was taken from SFDP. Also the number - * of dummy cycles for the Read operation can be overridden this way - * (see api_read() and dts_rx_dummy). - */ - if (dev_config->dts_read_command != 0) { - dev_data->cmd_info.read_cmd = dev_config->dts_read_command; - } - if (dev_config->dts_write_command != 0) { - dev_data->cmd_info.pp_cmd = dev_config->dts_write_command; - } - if (dev_data->cmd_info.read_cmd == 0) { LOG_ERR("Read command not defined for %s, " "use \"read-command\" property to specify it.", @@ -1092,10 +1199,10 @@ static int drv_init(const struct device *dev) LOG_DBG("%s - size: %u, page %u%s", dev->name, dev_flash_size(dev), dev_page_size(dev), dev_data->cmd_info.uses_4byte_addr ? ", 4-byte addressing" : ""); - LOG_DBG("- read command: 0x%02X with %u mode and %u dummy cycles", + LOG_DBG("- read command: 0x%02X with %u mode bit and %u dummy cycles", dev_data->cmd_info.read_cmd, - dev_data->cmd_info.read_mode_clocks, - dev_data->cmd_info.read_dummy_clocks); + dev_data->cmd_info.read_mode_bit_cycles, + dev_data->cmd_info.read_dummy_cycles); LOG_DBG("- page program command: 0x%02X", dev_data->cmd_info.pp_cmd); LOG_DBG("- erase types:"); @@ -1117,6 +1224,7 @@ static DEVICE_API(flash, drv_api) = { .read = api_read, .write = api_write, .erase = api_erase, + .get_size = api_get_size, .get_parameters = api_get_parameters, #if defined(CONFIG_FLASH_PAGE_LAYOUT) .page_layout = api_page_layout, @@ -1139,16 +1247,6 @@ static DEVICE_API(flash, drv_api) = { .dqs_enable = false, \ } -#define FLASH_SIZE(inst) \ - (DT_INST_NODE_HAS_PROP(inst, size) \ - ? DT_INST_PROP(inst, size) / 8 \ - : BFP_FLASH_DENSITY(SFDP_DW(inst, sfdp_bfp, 2)) / 8) - -#define FLASH_PAGE_EXP(inst) SFDP_FIELD(inst, sfdp_bfp, 11, GENMASK(7, 4)) -#define FLASH_PAGE_SIZE(inst) \ - (FLASH_PAGE_EXP(inst) ? BIT(FLASH_PAGE_EXP(inst)) \ - : SPI_NOR_PAGE_SIZE) - #define FLASH_QUIRKS(inst) FLASH_MSPI_QUIRKS_GET(DT_DRV_INST(inst)) #define IO_MODE_FLAGS(io_mode) \ @@ -1188,9 +1286,6 @@ BUILD_ASSERT((FLASH_SIZE(inst) % CONFIG_FLASH_MSPI_NOR_LAYOUT_PAGE_SIZE) == 0, \ #define FLASH_MSPI_NOR_INST(inst) \ SFDP_BUILD_ASSERTS(inst); \ - BUILD_ASSERT(DT_INST_PROP_OR(inst, rx_dummy, 0) != INVALID_DTS_RX_DUMMY,\ - "Invalid number of RX dummy clocks specified for " \ - DT_NODE_FULL_NAME(DT_DRV_INST(inst))); \ PM_DEVICE_DT_INST_DEFINE(inst, dev_pm_action_cb); \ DEFAULT_ERASE_TYPES_DEFINE(inst); \ static struct flash_mspi_nor_data dev##inst##_data; \ @@ -1213,15 +1308,13 @@ BUILD_ASSERT((FLASH_SIZE(inst) % CONFIG_FLASH_MSPI_NOR_LAYOUT_PAGE_SIZE) == 0, \ / 1000, \ .transfer_timeout = DT_INST_PROP(inst, transfer_timeout), \ FLASH_PAGE_LAYOUT_DEFINE(inst) \ - .jedec_id = DT_INST_PROP(inst, jedec_id), \ + .jedec_id = DT_INST_PROP_OR(inst, jedec_id, {0}), \ .quirks = FLASH_QUIRKS(inst), \ .default_erase_types = DEFAULT_ERASE_TYPES(inst), \ .default_cmd_info = DEFAULT_CMD_INFO(inst), \ .default_switch_info = DEFAULT_SWITCH_INFO(inst), \ - .dts_read_command = DT_INST_PROP_OR(inst, read_command, 0), \ - .dts_write_command = DT_INST_PROP_OR(inst, write_command, 0), \ - .dts_rx_dummy = DT_INST_PROP_OR(inst, rx_dummy, \ - INVALID_DTS_RX_DUMMY), \ + .jedec_id_specified = DT_INST_NODE_HAS_PROP(inst, jedec_id), \ + .rx_dummy_specified = DT_INST_NODE_HAS_PROP(inst, rx_dummy), \ .multiperipheral_bus = DT_PROP(DT_INST_BUS(inst), \ software_multiperipheral), \ IO_MODE_FLAGS(DT_INST_ENUM_IDX(inst, mspi_io_mode)), \ diff --git a/drivers/flash/flash_mspi_nor.h b/drivers/flash/flash_mspi_nor.h index 950606fe3a8..480bccce472 100644 --- a/drivers/flash/flash_mspi_nor.h +++ b/drivers/flash/flash_mspi_nor.h @@ -30,14 +30,17 @@ extern "C" { #define CMD_EXTENSION_SAME 1 #define CMD_EXTENSION_INVERSE 2 +#define OCTAL_ENABLE_REQ_NONE 0 +#define OCTAL_ENABLE_REQ_S2B3 1 + #define ENTER_4BYTE_ADDR_NONE 0 #define ENTER_4BYTE_ADDR_B7 1 #define ENTER_4BYTE_ADDR_06_B7 2 struct flash_mspi_nor_cmd_info { uint8_t read_cmd; - uint8_t read_mode_clocks : 3; - uint8_t read_dummy_clocks : 5; + uint8_t read_mode_bit_cycles : 3; + uint8_t read_dummy_cycles : 5; uint8_t pp_cmd; bool uses_4byte_addr : 1; /* BFP, 18th DWORD, bits 30-29 */ @@ -92,9 +95,8 @@ struct flash_mspi_nor_config { const struct jesd216_erase_type *default_erase_types; struct flash_mspi_nor_cmd_info default_cmd_info; struct flash_mspi_nor_switch_info default_switch_info; - uint8_t dts_read_command; - uint8_t dts_rx_dummy; - uint8_t dts_write_command; + bool jedec_id_specified : 1; + bool rx_dummy_specified : 1; bool multiperipheral_bus : 1; bool multi_io_cmd : 1; bool single_io_addr : 1; diff --git a/drivers/flash/flash_mspi_nor_quirks.h b/drivers/flash/flash_mspi_nor_quirks.h index 7e2a75fa70c..d58fbea4ff9 100644 --- a/drivers/flash/flash_mspi_nor_quirks.h +++ b/drivers/flash/flash_mspi_nor_quirks.h @@ -123,21 +123,30 @@ struct flash_mspi_nor_quirks flash_quirks_mxicy_mx25r = { #if DT_HAS_COMPAT_STATUS_OKAY(mxicy_mx25u) -#define MXICY_MX25R_OE_MASK BIT(0) - -static uint8_t mxicy_mx25u_oe_payload = MXICY_MX25R_OE_MASK; - static inline int mxicy_mx25u_post_switch_mode(const struct device *dev) { const struct flash_mspi_nor_config *dev_config = dev->config; struct flash_mspi_nor_data *dev_data = dev->data; enum mspi_io_mode io_mode = dev_config->mspi_nor_cfg.io_mode; + uint8_t opi_enable; int rc; if (io_mode != MSPI_IO_MODE_OCTAL) { return 0; } + /* + * TODO - replace this with a generic routine that uses information + * from SFDP header FF87 (Status, Control and Configuration + * Register Map) + */ + + if (dev_config->mspi_nor_cfg.data_rate == MSPI_DATA_RATE_DUAL) { + opi_enable = BIT(1); + } else { + opi_enable = BIT(0); + } + /* Write enable */ rc = cmd_wren(dev); if (rc < 0) { @@ -148,8 +157,8 @@ static inline int mxicy_mx25u_post_switch_mode(const struct device *dev) set_up_xfer(dev, MSPI_TX); dev_data->xfer.addr_length = 4; dev_data->packet.address = 0; - dev_data->packet.data_buf = &mxicy_mx25u_oe_payload; - dev_data->packet.num_bytes = sizeof(mxicy_mx25u_oe_payload); + dev_data->packet.data_buf = &opi_enable; + dev_data->packet.num_bytes = sizeof(opi_enable); return perform_xfer(dev, SPI_NOR_CMD_WR_CFGREG2, false); } @@ -157,12 +166,41 @@ static int mxicy_mx25u_pre_init(const struct device *dev) { const struct flash_mspi_nor_config *dev_config = dev->config; struct flash_mspi_nor_data *dev_data = dev->data; + static const uint8_t dummy_cycles[8] = { + 20, 18, 16, 14, 12, 10, 8, 6 + }; + uint8_t cfg_reg; + int rc; + + if (dev_config->mspi_nor_cfg.io_mode != MSPI_IO_MODE_OCTAL) { + return 0; + } - if (dev_config->mspi_nor_cfg.io_mode == MSPI_IO_MODE_OCTAL && - dev_config->mspi_nor_cfg.data_rate == MSPI_DATA_RATE_SINGLE) { + if (dev_config->mspi_nor_cfg.data_rate == MSPI_DATA_RATE_SINGLE) { dev_data->cmd_info.cmd_extension = CMD_EXTENSION_INVERSE; } + /* + * TODO - replace this with a generic routine that uses information + * from SFDP header FF87 (Status, Control and Configuration + * Register Map) + */ + + /* Read configured number of dummy cycles for memory reading commands. */ + set_up_xfer(dev, MSPI_RX); + dev_data->xfer.addr_length = 4; + dev_data->packet.address = 0x300; + dev_data->packet.data_buf = &cfg_reg; + dev_data->packet.num_bytes = sizeof(cfg_reg); + rc = perform_xfer(dev, SPI_NOR_CMD_RD_CFGREG2, false); + if (rc < 0) { + LOG_ERR("Failed to read Dummy Cycle from CFGREG2"); + return rc; + } + + dev_data->cmd_info.read_mode_bit_cycles = 0; + dev_data->cmd_info.read_dummy_cycles = dummy_cycles[cfg_reg & 0x7]; + return 0; } diff --git a/drivers/flash/flash_mspi_nor_sfdp.h b/drivers/flash/flash_mspi_nor_sfdp.h index b2a8ba80bec..8dbecff01e8 100644 --- a/drivers/flash/flash_mspi_nor_sfdp.h +++ b/drivers/flash/flash_mspi_nor_sfdp.h @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#ifdef CONFIG_FLASH_MSPI_NOR_USE_SFDP + #define BFP_DW16_SOFT_RESET_66_99 BIT(4) #define BFP_DW16_4B_ADDR_ENTER_B7 BIT(0) @@ -14,9 +16,6 @@ #define BFP_DW18_CMD_EXT_SAME 0 #define BFP_DW18_CMD_EXT_INV 1 -#define BFP_DW19_OER_VAL_NONE 0 -#define BFP_DW19_OER_VAL_S2B3 1 - /* 32-bit words in SFDP arrays in devicetree are stored in little-endian byte * order. See jedec,jesd216.yaml */ @@ -44,29 +43,6 @@ #define SFDP_FIELD(inst, prop, dw_no, mask) \ FIELD_GET(mask, SFDP_DW(inst, prop, dw_no)) -#define BFP_FLASH_DENSITY(dw2) \ - ((dw2 & BIT(31)) \ - ? BIT(dw2 & BIT_MASK(31)) \ - : dw2) - -/* Quad Enable Requirement from 15th DWORD of BFP */ -#define BSP_DW15_QER(inst) \ - DT_INST_ENUM_IDX_OR(inst, quad_enable_requirements, \ - SFDP_FIELD(inst, sfdp_bfp, 15, GENMASK(22, 20))) - -/* Octal Enable Requirement from 19th DWORD of BFP */ -#define BSP_DW19_OER(inst) \ - SFDP_FIELD(inst, sfdp_bfp, 19, GENMASK(22, 20)) - -#define BFP_DW1_ADDRESS_BYTES(inst) \ - SFDP_FIELD(inst, sfdp_bfp, 1, GENMASK(18, 17)) - -#define BFP_DW18_CMD_EXT(inst) \ - SFDP_FIELD(inst, sfdp_bfp, 18, GENMASK(30, 29)) - -#define BFP_ENTER_4BYTE_ADDR_METHODS(inst) \ - SFDP_FIELD(inst, sfdp_bfp, 16, GENMASK(31, 24)) - #define USES_8D_8D_8D(inst) \ (DT_INST_ENUM_IDX(inst, mspi_io_mode) == MSPI_IO_MODE_OCTAL && \ DT_INST_ENUM_IDX(inst, mspi_data_rate) == MSPI_DATA_RATE_DUAL) @@ -119,18 +95,32 @@ #define USES_OCTAL_IO(inst) \ (DT_INST_ENUM_IDX(inst, mspi_io_mode) == MSPI_IO_MODE_OCTAL) +#define BFP_DW1_ADDRESS_BYTES(inst) \ + SFDP_FIELD(inst, sfdp_bfp, 1, GENMASK(18, 17)) + #define USES_4BYTE_ADDR(inst) \ (USES_OCTAL_IO(inst) || \ DT_INST_PROP(inst, use_4byte_addressing) || \ BFP_DW1_ADDRESS_BYTES(inst) == JESD216_SFDP_BFP_DW1_ADDRBYTES_VAL_4B) +#define BFP_ENTER_4BYTE_ADDR_METHODS(inst) \ + SFDP_FIELD(inst, sfdp_bfp, 16, GENMASK(31, 24)) + +#define HAS_4BYTE_ADDR_CMDS(inst) \ + (BFP_ENTER_4BYTE_ADDR_METHODS(inst) & BFP_DW16_4B_ADDR_PER_CMD) + +#define BFP_DW18_CMD_EXT(inst) \ + SFDP_FIELD(inst, sfdp_bfp, 18, GENMASK(30, 29)) + #define CMD_EXTENSION(inst) \ (!USES_8D_8D_8D(inst) ? CMD_EXTENSION_NONE : \ (BFP_DW18_CMD_EXT(inst) \ == BFP_DW18_CMD_EXT_INV) ? CMD_EXTENSION_INVERSE \ : CMD_EXTENSION_SAME) - +/* 1st DWORD of 4-byte Address Instruction Table (ID FF84) indicates commands + * that are supported by the chip. + */ #define FF84_DW1_BIT(inst, bit) (SFDP_DW(inst, sfdp_ff84, 1) & BIT(bit)) #define SFDP_CMD_PP(inst) \ @@ -179,13 +169,13 @@ 0 #define DEFAULT_CMD_INFO(inst) { \ - .pp_cmd = USES_4BYTE_ADDR(inst) \ + .pp_cmd = USES_4BYTE_ADDR(inst) && HAS_4BYTE_ADDR_CMDS(inst) \ ? SFDP_CMD_PP_4B(inst) \ : SFDP_CMD_PP(inst), \ - .read_cmd = USES_4BYTE_ADDR(inst) \ + .read_cmd = USES_4BYTE_ADDR(inst) && HAS_4BYTE_ADDR_CMDS(inst) \ ? SFDP_CMD_FAST_READ_4B(inst) \ : SFDP_CMD_FAST_READ(inst), \ - .read_mode_clocks = \ + .read_mode_bit_cycles = \ USES_1S_8S_8S(inst) ? SFDP_FIELD(inst, sfdp_bfp, 17, GENMASK(7, 5)) : \ USES_1S_1S_8S(inst) ? SFDP_FIELD(inst, sfdp_bfp, 17, GENMASK(23, 21)) : \ USES_4S_4D_4D(inst) ? SFDP_FIELD(inst, sfdp_bfp, 23, GENMASK(23, 21)) : \ @@ -200,9 +190,9 @@ USES_1S_1D_1D(inst) ? SFDP_FIELD(inst, sfdp_bfp, 22, GENMASK(7, 5)) : \ USES_1S_1S_1S(inst) ? 0 : \ 0, \ - .read_dummy_clocks = DT_INST_PROP_OR(inst, rx_dummy, \ - USES_8D_8D_8D(inst) ? 20 : \ - USES_8S_8S_8S(inst) ? 20 : \ + .read_dummy_cycles = DT_INST_PROP_OR(inst, rx_dummy, \ + USES_8D_8D_8D(inst) ? SFDP_FIELD(inst, sfdp_ff05, 6, GENMASK(4, 0)) : \ + USES_8S_8S_8S(inst) ? SFDP_FIELD(inst, sfdp_ff05, 6, GENMASK(9, 5)) : \ USES_1S_8S_8S(inst) ? SFDP_FIELD(inst, sfdp_bfp, 17, GENMASK(4, 0)) : \ USES_1S_1S_8S(inst) ? SFDP_FIELD(inst, sfdp_bfp, 17, GENMASK(20, 16)) : \ USES_4S_4D_4D(inst) ? SFDP_FIELD(inst, sfdp_bfp, 23, GENMASK(20, 16)) : \ @@ -299,11 +289,21 @@ .exp = 0x0C }})) #define DEFAULT_ERASE_TYPES(inst) \ - USES_4BYTE_ADDR(inst) ? dev##inst##_erase_types_4b \ - : dev##inst##_erase_types + USES_4BYTE_ADDR(inst) && HAS_4BYTE_ADDR_CMDS(inst) \ + ? dev##inst##_erase_types_4b \ + : dev##inst##_erase_types + +#define BFP_DW15_QER(inst) \ + SFDP_FIELD(inst, sfdp_bfp, 15, GENMASK(22, 20)) + +#define BFP_DW19_OER(inst) \ + SFDP_FIELD(inst, sfdp_bfp, 19, GENMASK(22, 20)) #define ENTER_4BYTE_ADDR(inst) \ (!USES_4BYTE_ADDR(inst) ? ENTER_4BYTE_ADDR_NONE : \ + (BFP_ENTER_4BYTE_ADDR_METHODS(inst) \ + & (BFP_DW16_4B_ADDR_PER_CMD | \ + BFP_DW16_4B_ADDR_ALWAYS)) ? ENTER_4BYTE_ADDR_NONE : \ (BFP_ENTER_4BYTE_ADDR_METHODS(inst) \ & BFP_DW16_4B_ADDR_ENTER_B7) ? ENTER_4BYTE_ADDR_B7 : \ (BFP_ENTER_4BYTE_ADDR_METHODS(inst) \ @@ -311,10 +311,27 @@ ENTER_4BYTE_ADDR_NONE) #define DEFAULT_SWITCH_INFO(inst) { \ - .quad_enable_req = BSP_DW15_QER(inst), \ - .octal_enable_req = BSP_DW19_OER(inst), \ + .quad_enable_req = BFP_DW15_QER(inst), \ + .octal_enable_req = BFP_DW19_OER(inst), \ .enter_4byte_addr = ENTER_4BYTE_ADDR(inst) } +#define BFP_FLASH_SIZE(dw2) \ + ((dw2 & BIT(31)) \ + ? BIT(MIN(31, (dw2 & BIT_MASK(31)) - 3)) \ + : dw2 / 8) + +#define FLASH_SIZE(inst) \ + (DT_INST_NODE_HAS_PROP(inst, size) \ + ? DT_INST_PROP(inst, size) / 8 \ + : BFP_FLASH_SIZE(SFDP_DW(inst, sfdp_bfp, 2))) + +#define BFP_FLASH_PAGE_EXP(inst) SFDP_FIELD(inst, sfdp_bfp, 11, GENMASK(7, 4)) + +#define FLASH_PAGE_SIZE(inst) \ + (BFP_FLASH_PAGE_EXP(inst) \ + ? BIT(BFP_FLASH_PAGE_EXP(inst)) \ + : SPI_NOR_PAGE_SIZE) + #define SFDP_BUILD_ASSERTS(inst) \ BUILD_ASSERT(DT_INST_NODE_HAS_PROP(inst, sfdp_bfp), \ "sfdp-bfp property needed in " \ @@ -350,3 +367,55 @@ & BFP_DW16_SOFT_RESET_66_99), \ "Cannot use 66h/99h soft reset sequence for " \ DT_NODE_FULL_NAME(DT_DRV_INST(inst))) + +#else + +#define USES_4BYTE_ADDR(inst) \ + (DT_INST_ENUM_IDX(inst, mspi_io_mode) == MSPI_IO_MODE_OCTAL || \ + DT_INST_PROP(inst, use_4byte_addressing)) + +#define DEFAULT_CMD_INFO(inst) { \ + .pp_cmd = USES_4BYTE_ADDR(inst) \ + ? SPI_NOR_CMD_PP_4B \ + : SPI_NOR_CMD_PP, \ + .read_cmd = USES_4BYTE_ADDR(inst) \ + ? SPI_NOR_CMD_READ_FAST_4B \ + : SPI_NOR_CMD_READ_FAST, \ + .read_mode_bit_cycles = 0, \ + .read_dummy_cycles = 8, \ + .uses_4byte_addr = USES_4BYTE_ADDR(inst), \ + .cmd_extension = CMD_EXTENSION_NONE, \ + .sfdp_addr_4 = false, \ + .sfdp_dummy_20 = false, \ + .rdsr_addr_4 = false, \ + .rdsr_dummy = 0, \ + .rdid_addr_4 = false, \ + .rdid_dummy = 0, } + +#define DEFAULT_ERASE_TYPES_DEFINE(inst) \ + static const struct jesd216_erase_type \ + dev##inst##_erase_types[JESD216_NUM_ERASE_TYPES] = \ + {{ .cmd = SPI_NOR_CMD_SE, \ + .exp = 0x0C }}; \ + static const struct jesd216_erase_type \ + dev##inst##_erase_types_4b[JESD216_NUM_ERASE_TYPES] = \ + {{ .cmd = SPI_NOR_CMD_SE_4B, \ + .exp = 0x0C }} + +#define DEFAULT_ERASE_TYPES(inst) \ + USES_4BYTE_ADDR(inst) ? dev##inst##_erase_types_4b \ + : dev##inst##_erase_types + +#define DEFAULT_SWITCH_INFO(inst) { \ + .quad_enable_req = DT_INST_ENUM_IDX_OR(inst, quad_enable_requirements, \ + JESD216_DW15_QER_VAL_NONE), \ + .octal_enable_req = OCTAL_ENABLE_REQ_NONE, \ + .enter_4byte_addr = ENTER_4BYTE_ADDR_NONE } + +#define FLASH_SIZE(inst) (DT_INST_PROP(inst, size) / 8) + +#define FLASH_PAGE_SIZE(inst) SPI_NOR_PAGE_SIZE + +#define SFDP_BUILD_ASSERTS(inst) + +#endif /* CONFIG_FLASH_MSPI_NOR_USE_SFDP */ diff --git a/drivers/flash/spi_nor.c b/drivers/flash/spi_nor.c index 383a6065394..b235c166f37 100644 --- a/drivers/flash/spi_nor.c +++ b/drivers/flash/spi_nor.c @@ -1376,7 +1376,7 @@ static int spi_nor_process_sfdp(const struct device *dev) if (id == JESD216_SFDP_PARAM_ID_BFP) { union { - uint32_t dw[MIN(php->len_dw, 20)]; + uint32_t dw[20]; struct jesd216_bfp bfp; } u_param; const struct jesd216_bfp *bfp = &u_param.bfp; diff --git a/drivers/mspi/Kconfig.dw b/drivers/mspi/Kconfig.dw index 1ab82da0e85..06d2e09c8af 100644 --- a/drivers/mspi/Kconfig.dw +++ b/drivers/mspi/Kconfig.dw @@ -1,4 +1,5 @@ # Copyright (c) 2024 Nordic Semiconductor ASA +# Copyright (c) 2025 Tenstorrent AI ULC # SPDX-License-Identifier: Apache-2.0 config MSPI_DW @@ -7,3 +8,24 @@ config MSPI_DW depends on DT_HAS_SNPS_DESIGNWARE_SSI_ENABLED select PINCTRL if $(dt_compat_any_has_prop,$(DT_COMPAT_SNPS_DESIGNWARE_SSI),pinctrl-0) imply MSPI_XIP + imply MSPI_TIMING + +if MSPI_DW + +config MSPI_DW_TXD_DIV + int "Designware SSI TX Drive edge divisor" + default 4 + help + Division factor to apply to calculated BAUDR value when writing it + to the TXD_DRIVE_EDGE register in DDR mode. Note that the maximum + value of this register is (BAUDR / 2) - 1. + +config MSPI_DW_TXD_MUL + int "Designware SSI TX Drive edge multiplier" + default 1 + help + Multiplication factor to apply to calculated BAUDR value when writing + it to the TXD_DRIVE_EDGE register in DDR mode. Note that the maximum + value of this register is (BAUDR / 2) - 1. + +endif # MSPI_DW diff --git a/drivers/mspi/mspi_dw.c b/drivers/mspi/mspi_dw.c index e57511b409a..66f257839aa 100644 --- a/drivers/mspi/mspi_dw.c +++ b/drivers/mspi/mspi_dw.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2024 Nordic Semiconductor ASA + * Copyright (c) 2025 Tenstorrent AI ULC * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,12 +9,15 @@ #include #include +#if defined(CONFIG_PINCTRL) #include +#endif #include #include #include #include #include +#include #include "mspi_dw.h" @@ -45,6 +49,7 @@ struct mspi_dw_data { uint32_t ctrlr0; uint32_t spi_ctrlr0; uint32_t baudr; + uint32_t rx_sample_dly; #if defined(CONFIG_MSPI_XIP) uint32_t xip_freq; @@ -110,7 +115,9 @@ DEFINE_MM_REG_WR(imr, 0x2c) DEFINE_MM_REG_RD(isr, 0x30) DEFINE_MM_REG_RD(risr, 0x34) DEFINE_MM_REG_RD_WR(dr, 0x60) +DEFINE_MM_REG_WR(rx_sample_dly, 0xf0) DEFINE_MM_REG_WR(spi_ctrlr0, 0xf4) +DEFINE_MM_REG_WR(txd_drive_edge, 0xf8) #if defined(CONFIG_MSPI_XIP) DEFINE_MM_REG_WR(xip_incr_inst, 0x100) @@ -684,18 +691,30 @@ static int _api_dev_config(const struct device *dev, } if (param_mask & MSPI_DEVICE_CONFIG_DATA_RATE) { - /* TODO: add support for DDR */ - if (cfg->data_rate != MSPI_DATA_RATE_SINGLE) { - LOG_ERR("Only single data rate is supported."); + dev_data->spi_ctrlr0 &= ~(SPI_CTRLR0_SPI_DDR_EN_BIT | + SPI_CTRLR0_INST_DDR_EN_BIT); + switch (cfg->data_rate) { + case MSPI_DATA_RATE_SINGLE: + break; + case MSPI_DATA_RATE_DUAL: + dev_data->spi_ctrlr0 |= SPI_CTRLR0_INST_DDR_EN_BIT; + /* Also need to set DDR_EN bit */ + __fallthrough; + case MSPI_DATA_RATE_S_D_D: + dev_data->spi_ctrlr0 |= SPI_CTRLR0_SPI_DDR_EN_BIT; + break; + default: + LOG_ERR("Data rate %d not supported", + cfg->data_rate); return -ENOTSUP; } } if (param_mask & MSPI_DEVICE_CONFIG_DQS) { - /* TODO: add support for DQS */ + dev_data->spi_ctrlr0 &= ~SPI_CTRLR0_SPI_RXDS_EN_BIT; + if (cfg->dqs_enable) { - LOG_ERR("DQS line is not supported."); - return -ENOTSUP; + dev_data->spi_ctrlr0 |= SPI_CTRLR0_SPI_RXDS_EN_BIT; } } @@ -817,8 +836,9 @@ static int start_next_packet(const struct device *dev, k_timeout_t timeout) dev_data->dummy_bytes = 0; dev_data->bytes_to_discard = 0; - dev_data->ctrlr0 &= ~CTRLR0_TMOD_MASK - & ~CTRLR0_DFS_MASK; + dev_data->ctrlr0 &= ~(CTRLR0_TMOD_MASK) + & ~(CTRLR0_DFS_MASK) + & ~(CTRLR0_DFS32_MASK); dev_data->spi_ctrlr0 &= ~SPI_CTRLR0_WAIT_CYCLES_MASK; @@ -827,16 +847,20 @@ static int start_next_packet(const struct device *dev, k_timeout_t timeout) dev_data->xfer.addr_length != 0)) { dev_data->bytes_per_frame_exp = 0; dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS_MASK, 7); + dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS32_MASK, 7); } else { if ((packet->num_bytes % 4) == 0) { dev_data->bytes_per_frame_exp = 2; dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS_MASK, 31); + dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS32_MASK, 31); } else if ((packet->num_bytes % 2) == 0) { dev_data->bytes_per_frame_exp = 1; dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS_MASK, 15); + dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS32_MASK, 15); } else { dev_data->bytes_per_frame_exp = 0; dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS_MASK, 7); + dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_DFS32_MASK, 7); } } @@ -928,7 +952,16 @@ static int start_next_packet(const struct device *dev, k_timeout_t timeout) : 0); write_spi_ctrlr0(dev, dev_data->spi_ctrlr0); write_baudr(dev, dev_data->baudr); - write_ser(dev, BIT(dev_data->dev_id->dev_idx)); + write_rx_sample_dly(dev, dev_data->rx_sample_dly); + if (dev_data->spi_ctrlr0 & (SPI_CTRLR0_SPI_DDR_EN_BIT | + SPI_CTRLR0_INST_DDR_EN_BIT)) { + int txd = (CONFIG_MSPI_DW_TXD_MUL * dev_data->baudr) / + CONFIG_MSPI_DW_TXD_DIV; + + write_txd_drive_edge(dev, txd); + } else { + write_txd_drive_edge(dev, 0); + } if (xip_enabled) { write_ssienr(dev, SSIENR_SSIC_EN_BIT); @@ -1015,8 +1048,17 @@ static int start_next_packet(const struct device *dev, k_timeout_t timeout) } } + /* Prefill TX FIFO with any data we can */ + if (dev_data->dummy_bytes && tx_dummy_bytes(dev)) { + imr = IMR_RXFIM_BIT; + } else if (packet->dir == MSPI_TX && packet->num_bytes) { + tx_data(dev, packet); + } + /* Enable interrupts now and wait until the packet is done. */ write_imr(dev, imr); + /* Write SER to start transfer */ + write_ser(dev, BIT(dev_data->dev_id->dev_idx)); rc = k_sem_take(&dev_data->finished, timeout); if (read_risr(dev) & RISR_RXOIR_BIT) { @@ -1046,6 +1088,8 @@ static int start_next_packet(const struct device *dev, k_timeout_t timeout) } else { write_ssienr(dev, 0); } + /* Clear SER */ + write_ser(dev, 0); if (dev_data->dev_id->ce.port) { int rc2; @@ -1148,6 +1192,22 @@ static int api_transceive(const struct device *dev, return rc; } +#if defined(CONFIG_MSPI_TIMING) +static int api_timing_config(const struct device *dev, + const struct mspi_dev_id *dev_id, + const uint32_t param_mask, void *cfg) +{ + struct mspi_dw_data *dev_data = dev->data; + struct mspi_dw_timing_cfg *config = cfg; + + if (param_mask & MSPI_DW_RX_TIMING_CFG) { + dev_data->rx_sample_dly = config->rx_sample_dly; + return 0; + } + return -ENOTSUP; +} +#endif /* defined(CONFIG_MSPI_TIMING) */ + #if defined(CONFIG_MSPI_XIP) static int _api_xip_config(const struct device *dev, const struct mspi_dev_id *dev_id, @@ -1381,6 +1441,9 @@ static int dev_init(const struct device *dev) } } + /* Make sure controller is disabled. */ + write_ssienr(dev, 0); + #if defined(CONFIG_PINCTRL) if (IS_ENABLED(CONFIG_PM_DEVICE_RUNTIME)) { rc = pinctrl_apply_state(dev_config->pcfg, PINCTRL_STATE_SLEEP); @@ -1399,16 +1462,19 @@ static DEVICE_API(mspi, drv_api) = { .dev_config = api_dev_config, .get_channel_status = api_get_channel_status, .transceive = api_transceive, +#if defined(CONFIG_MSPI_TIMING) + .timing_config = api_timing_config, +#endif #if defined(CONFIG_MSPI_XIP) .xip_config = api_xip_config, #endif }; #define MSPI_DW_INST_IRQ(idx, inst) \ - IRQ_CONNECT(DT_INST_IRQ_BY_IDX(inst, idx, irq), \ + IRQ_CONNECT(DT_INST_IRQN_BY_IDX(inst, idx), \ DT_INST_IRQ_BY_IDX(inst, idx, priority), \ mspi_dw_isr, DEVICE_DT_INST_GET(inst), 0); \ - irq_enable(DT_INST_IRQ_BY_IDX(inst, idx, irq)) + irq_enable(DT_INST_IRQN_BY_IDX(inst, idx)) #define MSPI_DW_MMIO_ROM_INIT(node_id) \ COND_CODE_1(DT_REG_HAS_NAME(node_id, core), \ diff --git a/drivers/mspi/mspi_dw.h b/drivers/mspi/mspi_dw.h index c35778cb1c5..28e4bed016e 100644 --- a/drivers/mspi/mspi_dw.h +++ b/drivers/mspi/mspi_dw.h @@ -1,32 +1,42 @@ /* * Copyright (c) 2024 Nordic Semiconductor ASA + * Copyright (c) 2025 Tenstorrent AI ULC * * SPDX-License-Identifier: Apache-2.0 */ +#if DT_HAS_COMPAT_STATUS_OKAY(snps_designware_ssi_v2) +/* + * Later versions of the SSI have different register offsets. Define a macro + * to use these. + */ +#define SSI_VERSION_2 1 +#endif + /* * This header is part of mspi_dw.c extracted only for clarity. * It is not supposed to be included by any file other than mspi_dw.c. */ /* CTRLR0 - Control Register 0 */ -#define CTRLR0_SPI_FRF_MASK GENMASK(23, 22) +#define CTRLR0_SPI_FRF_MASK COND_CODE_1(SSI_VERSION_2, GENMASK(22, 21), GENMASK(23, 22)) #define CTRLR0_SPI_FRF_STANDARD 0UL #define CTRLR0_SPI_FRF_DUAL 1UL #define CTRLR0_SPI_FRF_QUAD 2UL #define CTRLR0_SPI_FRF_OCTAL 3UL -#define CTRLR0_TMOD_MASK GENMASK(11, 10) +#define CTRLR0_TMOD_MASK COND_CODE_1(SSI_VERSION_2, GENMASK(9, 8), GENMASK(11, 10)) #define CTRLR0_TMOD_TX_RX 0UL #define CTRLR0_TMOD_TX 1UL #define CTRLR0_TMOD_RX 2UL #define CTRLR0_TMOD_EEPROM 3UL -#define CTRLR0_SCPOL_BIT BIT(9) -#define CTRLR0_SCPH_BIT BIT(8) -#define CTRLR0_FRF_MASK GENMASK(7, 6) +#define CTRLR0_SCPOL_BIT COND_CODE_1(SSI_VERSION_2, BIT(7), BIT(9)) +#define CTRLR0_SCPH_BIT COND_CODE_1(SSI_VERSION_2, BIT(6), BIT(8)) +#define CTRLR0_FRF_MASK COND_CODE_1(SSI_VERSION_2, GENMASK(5, 4), GENMASK(7, 6)) #define CTRLR0_FRF_SPI 0UL #define CTRLR0_FRF_SSP 1UL #define CTRLR0_FRF_MICROWIRE 2UL -#define CTRLR0_DFS_MASK GENMASK(4, 0) +#define CTRLR0_DFS_MASK COND_CODE_1(SSI_VERSION_2, GENMASK(3, 0), GENMASK(4, 0)) +#define CTRLR0_DFS32_MASK COND_CODE_1(SSI_VERSION_2, GENMASK(20, 16), (0)) /* CTRLR1- Control Register 1 */ #define CTRLR1_NDF_MASK GENMASK(15, 0) diff --git a/drivers/mspi/mspi_dw_vendor_specific.h b/drivers/mspi/mspi_dw_vendor_specific.h index e34d8a5db60..d32a53ac293 100644 --- a/drivers/mspi/mspi_dw_vendor_specific.h +++ b/drivers/mspi/mspi_dw_vendor_specific.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2024 Nordic Semiconductor ASA + * Copyright (c) 2025 Tenstorrent AI ULC * * SPDX-License-Identifier: Apache-2.0 */ @@ -96,4 +97,41 @@ static inline int vendor_specific_xip_disable(const struct device *dev, } #endif /* defined(CONFIG_MSPI_XIP) */ +#else +static inline void vendor_specific_init(const struct device *dev) +{ + ARG_UNUSED(dev); +} +static inline void vendor_specific_suspend(const struct device *dev) +{ + ARG_UNUSED(dev); +} +static inline void vendor_specific_resume(const struct device *dev) +{ + ARG_UNUSED(dev); +} +static inline void vendor_specific_irq_clear(const struct device *dev) +{ + ARG_UNUSED(dev); +} +static inline int vendor_specific_xip_enable(const struct device *dev, + const struct mspi_dev_id *dev_id, + const struct mspi_xip_cfg *cfg) +{ + ARG_UNUSED(dev); + ARG_UNUSED(dev_id); + ARG_UNUSED(cfg); + + return 0; +} +static inline int vendor_specific_xip_disable(const struct device *dev, + const struct mspi_dev_id *dev_id, + const struct mspi_xip_cfg *cfg) +{ + ARG_UNUSED(dev); + ARG_UNUSED(dev_id); + ARG_UNUSED(cfg); + + return 0; +} #endif /* DT_HAS_COMPAT_STATUS_OKAY(nordic_nrf_exmif) */ diff --git a/drivers/pinctrl/CMakeLists.txt b/drivers/pinctrl/CMakeLists.txt index b325217c6a9..839c288c394 100644 --- a/drivers/pinctrl/CMakeLists.txt +++ b/drivers/pinctrl/CMakeLists.txt @@ -8,6 +8,7 @@ zephyr_library_sources_ifdef(CONFIG_PINCTRL_TELINK_B91 pinctrl_b91.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_AMBIQ pinctrl_ambiq.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_ARM_MPS2 pinctrl_arm_mps2.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_ARM_MPS3 pinctrl_arm_mps3.c) +zephyr_library_sources_ifdef(CONFIG_PINCTRL_ARM_MPS4 pinctrl_arm_mps4.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_ARM_V2M_BEETLE pinctrl_arm_v2m_beetle.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_BFLB pinctrl_bflb.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_GD32_AF pinctrl_gd32_af.c) diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index a47c4392a78..e13c4e427ff 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig @@ -39,6 +39,7 @@ source "drivers/pinctrl/Kconfig.bflb" source "drivers/pinctrl/Kconfig.ambiq" source "drivers/pinctrl/Kconfig.arm_mps2" source "drivers/pinctrl/Kconfig.arm_mps3" +source "drivers/pinctrl/Kconfig.arm_mps4" source "drivers/pinctrl/Kconfig.arm_v2m_beetle" source "drivers/pinctrl/Kconfig.gd32" source "drivers/pinctrl/Kconfig.it8xxx2" diff --git a/drivers/pinctrl/Kconfig.arm_mps4 b/drivers/pinctrl/Kconfig.arm_mps4 new file mode 100644 index 00000000000..ab610a411ba --- /dev/null +++ b/drivers/pinctrl/Kconfig.arm_mps4 @@ -0,0 +1,9 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +config PINCTRL_ARM_MPS4 + bool "Arm MPS4 pin controller driver" + default y + depends on DT_HAS_ARM_MPS4_PINCTRL_ENABLED + help + Arm MPS4 pinctrl driver diff --git a/drivers/pinctrl/pinctrl_arm_mps4.c b/drivers/pinctrl/pinctrl_arm_mps4.c new file mode 100644 index 00000000000..3a0215b53e6 --- /dev/null +++ b/drivers/pinctrl/pinctrl_arm_mps4.c @@ -0,0 +1,36 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "zephyr/device.h" +#include "zephyr/drivers/gpio.h" +#include +#include +#include + +static const struct device *const gpio_ports[] = {DEVICE_DT_GET_OR_NULL(DT_NODELABEL(gpio0)), + DEVICE_DT_GET_OR_NULL(DT_NODELABEL(gpio1))}; + +static int pinctrl_configure_pin(const pinctrl_soc_pin_t *pin) +{ + uint32_t flags = pin->input_enable ? GPIO_INPUT : GPIO_OUTPUT; + + /* Each gpio has 16 pins, so divide by 16 to get specific gpio*/ + const struct device *gpio_dev = gpio_ports[pin->pin_num >> 4]; + + return cmsdk_ahb_gpio_config(gpio_dev, pin->pin_num % 16, flags); +} + +int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, uintptr_t reg) +{ + ARG_UNUSED(reg); + for (uint8_t i = 0U; i < pin_cnt; i++) { + if (pinctrl_configure_pin(&pins[i]) == -ENOTSUP) { + return -ENOTSUP; + } + } + + return 0; +} diff --git a/drivers/usb/uvb/Kconfig b/drivers/usb/uvb/Kconfig index 77e893cff50..039296dd3ba 100644 --- a/drivers/usb/uvb/Kconfig +++ b/drivers/usb/uvb/Kconfig @@ -22,6 +22,6 @@ config UVB_MAX_MESSAGES module = UVB module-str = USB virtual bus service -source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config" +source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config" endif # UVB diff --git a/dts/arm/nordic/nrf54l_05_10_15_cpuapp.dtsi b/dts/arm/nordic/nrf54l_05_10_15_cpuapp.dtsi index 80875058f5f..88c1f43a9b8 100644 --- a/dts/arm/nordic/nrf54l_05_10_15_cpuapp.dtsi +++ b/dts/arm/nordic/nrf54l_05_10_15_cpuapp.dtsi @@ -26,7 +26,7 @@ nvic: &cpuapp_nvic {}; }; rng: rng { - status = "okay"; + status = "disabled"; compatible = "nordic,nrf-cracen-ctrdrbg"; }; diff --git a/dts/arm/nordic/nrf54lm20a_enga_cpuapp.dtsi b/dts/arm/nordic/nrf54lm20a_enga_cpuapp.dtsi index dc13fb40d6a..c92c27f5ceb 100644 --- a/dts/arm/nordic/nrf54lm20a_enga_cpuapp.dtsi +++ b/dts/arm/nordic/nrf54lm20a_enga_cpuapp.dtsi @@ -17,7 +17,7 @@ nvic: &cpuapp_nvic {}; / { chosen { - zephyr,entropy = &rng; + zephyr,entropy = &psa_rng; }; soc { @@ -28,11 +28,11 @@ nvic: &cpuapp_nvic {}; psa_rng: psa-rng { compatible = "zephyr,psa-crypto-rng"; - status = "disabled"; + status = "okay"; }; rng: rng { - status = "okay"; + status = "disabled"; compatible = "nordic,nrf-cracen-ctrdrbg"; }; }; diff --git a/dts/bindings/mtd/jedec,mspi-nor.yaml b/dts/bindings/mtd/jedec,mspi-nor.yaml index 06b72bf951c..348e11cd983 100644 --- a/dts/bindings/mtd/jedec,mspi-nor.yaml +++ b/dts/bindings/mtd/jedec,mspi-nor.yaml @@ -5,7 +5,20 @@ description: Generic NOR flash on MSPI bus compatible: "jedec,mspi-nor" -include: [mspi-device.yaml, "jedec,spi-nor-common.yaml"] +include: + - name: mspi-device.yaml + - name: jedec,spi-nor-common.yaml + property-allowlist: + - jedec-id + - size + - sfdp-bfp + - sfdp-ff05 + - sfdp-ff84 + - quad-enable-requirements + - has-dpd + - dpd-wakeup-sequence + - t-enter-dpd + - t-exit-dpd properties: reset-gpios: @@ -37,9 +50,10 @@ properties: type: boolean description: | Indicates that 4-byte addressing is to be used in communication with - the flash chip. The driver will use dedicated instruction codes for - commands that require addresses (like Read, Page Program, or Erase) - and will switch the flash chip to 4-byte addressing mode if necessary. + the flash chip. The driver will use dedicated 4-byte address instruction + codes for commands that require addresses (like Read, Page Program, + or Erase) if those are supported by the flash chip, or if necessary, + it will switch the chip to 4-byte addressing mode. initial-soft-reset: type: boolean diff --git a/dts/bindings/pinctrl/arm,mps4-pinctrl.yaml b/dts/bindings/pinctrl/arm,mps4-pinctrl.yaml new file mode 100644 index 00000000000..d08e37cdab2 --- /dev/null +++ b/dts/bindings/pinctrl/arm,mps4-pinctrl.yaml @@ -0,0 +1,82 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +description: | + The Arm Mps4 pin controller is a node responsible for controlling + pin function selection and pin properties, such as routing a UART3 TX + to pin 1. + + The node has the 'pinctrl' node label set in your SoC's devicetree, + so you can modify it like this: + + &pinctrl { + /* your modifications go here */ + }; + + All device pin configurations should be placed in child nodes of the + 'pinctrl' node, as shown in this example: + + &pinctrl { + /* configuration for the usart0 "default" state */ + uart3_default: uart3_default { + /* group 1 */ + group1 { + /* configure P1 as UART3 TX */ + pinmux = ; + }; + /* group 2 */ + group2 { + /* configure P0 as UART3 RX */ + pinmux = ; + /* enable input on pin 1 */ + input-enable; + }; + }; + }; + + The 'uart3_default' child node encodes the pin configurations for a + particular state of a device; in this case, the default (that is, active) + state. + + As shown, pin configurations are organized in groups within each child node. + Each group can specify a list of pin function selections in the 'pinmux' + property. Here is a list of supported standard pin properties: + - input-enable + + A group can also specify shared pin properties common to all the specified + pins, such as the 'input-enable' property in group 2. + + To link pin configurations with a device, use a pinctrl-N property for some + number N, like this example you could place in your board's DTS file: + + #include "board-pinctrl.dtsi" + + &uart3 { + pinctrl-0 = <&uart3_default>; + pinctrl-1 = <&uart3_sleep>; + pinctrl-names = "default", "sleep"; + }; + + +compatible: "arm,mps4-pinctrl" + +include: base.yaml + +child-binding: + description: | + Definitions for a pinctrl state. + child-binding: + + include: + - name: pincfg-node.yaml + property-allowlist: + - input-enable + + properties: + pinmux: + required: true + type: array + description: | + An array of pins sharing the same group properties. Each + element of the array is an integer constructed from the + pin number and the alternative function of the pin. diff --git a/dts/vendor/nordic/nrf54h20.dtsi b/dts/vendor/nordic/nrf54h20.dtsi index d06cbde97e0..0f311cf016d 100644 --- a/dts/vendor/nordic/nrf54h20.dtsi +++ b/dts/vendor/nordic/nrf54h20.dtsi @@ -708,6 +708,7 @@ power-domains = <&gpd NRF_GPD_FAST_ACTIVE1>; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; spi121: spi@8e7000 { @@ -1066,6 +1067,7 @@ nordic,clockpin-enable = ; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; i2c131: i2c@9a6000 { @@ -1200,6 +1202,7 @@ nordic,clockpin-enable = ; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; i2c133: i2c@9b6000 { @@ -1246,6 +1249,7 @@ nordic,clockpin-enable = ; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; dppic135: dppic@9c1000 { @@ -1334,6 +1338,7 @@ nordic,clockpin-enable = ; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; i2c135: i2c@9c6000 { @@ -1380,6 +1385,7 @@ nordic,clockpin-enable = ; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; dppic136: dppic@9d1000 { @@ -1514,6 +1520,7 @@ nordic,clockpin-enable = ; endtx-stoptx-supported; frame-timeout-supported; + zephyr,pm-device-runtime-auto; }; tdm130: tdm@992000 { diff --git a/include/zephyr/drivers/mspi/mspi_dw.h b/include/zephyr/drivers/mspi/mspi_dw.h new file mode 100644 index 00000000000..b51c9b9cdf0 --- /dev/null +++ b/include/zephyr/drivers/mspi/mspi_dw.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2025 Tenstorrent AI ULC + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_MSPI_DW_H_ +#define ZEPHYR_INCLUDE_DRIVERS_MSPI_DW_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Designware MSPI configuration structure- this should be passed to the + * MSPI driver when calling mspi_timing_config + */ +struct mspi_dw_timing_cfg { + uint32_t rx_sample_dly; /* RX sample delay, written to RX_SAMPLE_DLY register */ +}; + +/* Configure RX_SAMPLE_DLY register for MSPI DW SSI */ +#define MSPI_DW_RX_TIMING_CFG BIT(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_MSPI_DW_H_ */ diff --git a/include/zephyr/dt-bindings/pinctrl/arm-mps4-pinctrl.h b/include/zephyr/dt-bindings/pinctrl/arm-mps4-pinctrl.h new file mode 100644 index 00000000000..a2d211499a7 --- /dev/null +++ b/include/zephyr/dt-bindings/pinctrl/arm-mps4-pinctrl.h @@ -0,0 +1,40 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#define MPS4_ALT_FUNC_POS 0 +#define MPS4_ALT_FUNC_MASK 0x7 + +#define MPS4_EXP_NUM_POS 3 +#define MPS4_EXP_NUM_MASK 0x1F8 + +#define MPS4_PINCTRL_FUNC_UART 0 +#define MPS4_PINCTRL_FUNC_GPIO 1 +#define MPS4_PINCTRL_FUNC_I2C 2 +#define MPS4_PINCTRL_FUNC_SPI 3 + +#define MPS4_PINMUX(alt_func, exp_num) (exp_num << MPS4_EXP_NUM_POS | \ + alt_func << MPS4_ALT_FUNC_POS) + +/* GPIO 0 */ +#define UART3_RXD_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_UART, 0) +#define UART3_TXD_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_UART, 1) +#define SPI3_SS_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 10) +#define SPI3_MOSI_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 11) +#define SPI3_MISO_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 12) +#define SPI3_SCK_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 13) +#define SBCON2_SDA_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_I2C, 14) +#define SBCON2_SCL_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_I2C, 15) + + +/* GPIO 1 */ +#define UART4_RXD_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_UART, 16) +#define UART4_TXD_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_UART, 17) +#define SPI4_SS_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 26) +#define SPI4_MOSI_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 27) +#define SPI4_MISO_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 28) +#define SPI4_SCK_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_SPI, 29) +#define SBCON3_SDA_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_I2C, 30) +#define SBCON3_SCL_EXP MPS4_PINMUX(MPS4_PINCTRL_FUNC_I2C, 31) diff --git a/include/zephyr/storage/stream_flash.h b/include/zephyr/storage/stream_flash.h index 5a1e096e6d1..6be67896013 100644 --- a/include/zephyr/storage/stream_flash.h +++ b/include/zephyr/storage/stream_flash.h @@ -106,6 +106,15 @@ int stream_flash_init(struct stream_flash_ctx *ctx, const struct device *fdev, */ size_t stream_flash_bytes_written(const struct stream_flash_ctx *ctx); +/** + * @brief Read number of bytes buffered for the next flash write. + * + * @param ctx context + * + * @return Number of payload bytes buffered for the next flash write. + */ +size_t stream_flash_bytes_buffered(const struct stream_flash_ctx *ctx); + /** * @brief Process input buffers to be written to flash device in single blocks. * Will store remainder between calls. diff --git a/kernel/Kconfig b/kernel/Kconfig index c2976b9f281..9afeeaa5e67 100644 --- a/kernel/Kconfig +++ b/kernel/Kconfig @@ -942,7 +942,7 @@ config STACK_CANARIES_ALL config STACK_CANARIES_EXPLICIT bool "Explicit protection" depends on ENTROPY_GENERATOR || TEST_RANDOM_GENERATOR - depends on "${ZEPHYR_TOOLCHAIN_VARIANT}" = "zephyr" + depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "zephyr" select NEED_LIBC_MEM_PARTITION if !STACK_CANARIES_TLS select REQUIRES_STACK_CANARIES help diff --git a/lib/runtime/Kconfig b/lib/runtime/Kconfig index afb78f5b82b..9be8ac5b7ae 100644 --- a/lib/runtime/Kconfig +++ b/lib/runtime/Kconfig @@ -4,7 +4,7 @@ config COMPILER_RT_SUPPORTED bool default y - depends on "${ZEPHYR_TOOLCHAIN_VARIANT}" = "llvm" + depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "llvm" help Selected when the compiler supports compiler-rt runtime library. diff --git a/modules/hal_ethos_u/Kconfig b/modules/hal_ethos_u/Kconfig index 4ca5136cf02..e7b045c2352 100644 --- a/modules/hal_ethos_u/Kconfig +++ b/modules/hal_ethos_u/Kconfig @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright 2021-2022, 2024 Arm Limited and/or its +# SPDX-FileCopyrightText: Copyright 2021-2022, 2024-2025 Arm Limited and/or its # affiliates # SPDX-License-Identifier: Apache-2.0 @@ -13,7 +13,8 @@ if ARM_ETHOS_U menu "Arm Ethos-U NPU configuration" choice ARM_ETHOS_U_NPU_CONFIG prompt "Arm Ethos-U NPU configuration" - default ARM_ETHOS_U55_128 + default ARM_ETHOS_U55_128 if SOC_SERIES_MPS3 + default ARM_ETHOS_U85_256 if SOC_SERIES_MPS4 config ARM_ETHOS_U55_64 bool "using Ethos-U55 with 64 macs" config ARM_ETHOS_U55_128 diff --git a/modules/nrf_wifi/bus/Kconfig b/modules/nrf_wifi/bus/Kconfig index 3fed449bb80..430cf3ba9ff 100644 --- a/modules/nrf_wifi/bus/Kconfig +++ b/modules/nrf_wifi/bus/Kconfig @@ -43,7 +43,7 @@ config NRF71_ON_IPC module = WIFI_NRF70_BUSLIB module-dep = LOG module-str = Log level for Wi-Fi nRF70 bus library -source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config" +source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config" config WIFI_NRF70_BUSLIB_LOG_LEVEL # Enable error by default diff --git a/modules/trusted-firmware-m/Kconfig.tfm b/modules/trusted-firmware-m/Kconfig.tfm index d1cf81f8f0a..55e08ee45e4 100644 --- a/modules/trusted-firmware-m/Kconfig.tfm +++ b/modules/trusted-firmware-m/Kconfig.tfm @@ -2,7 +2,7 @@ # Copyright (c) 2019, 2020 Linaro Limited # Copyright (c) 2020, 2021 Nordic Semiconductor ASA -# Copyright 2024 Arm Limited and/or its affiliates +# Copyright 2024-2025 Arm Limited and/or its affiliates # SPDX-License-Identifier: Apache-2.0 config ZEPHYR_TRUSTED_FIRMWARE_M_MODULE @@ -23,11 +23,11 @@ config TFM_BOARD default "arm/musca_b1" if BOARD_V2M_MUSCA_B1 default "arm/musca_s1" if BOARD_V2M_MUSCA_S1 default "adi/max32657" if BOARD_MAX32657EVKIT_MAX32657_NS - default "${ZEPHYR_BASE}/modules/trusted-firmware-m/nordic/nrf9160" if SOC_NRF9160 - default "${ZEPHYR_BASE}/modules/trusted-firmware-m/nordic/nrf9120" if SOC_NRF9120 - default "${ZEPHYR_BASE}/modules/trusted-firmware-m/nordic/nrf5340_cpuapp" if SOC_NRF5340_CPUAPP - default "${ZEPHYR_BASE}/modules/trusted-firmware-m/nordic/nrf54l15_cpuapp" if SOC_NRF54L15_CPUAPP - default "${ZEPHYR_BASE}/modules/trusted-firmware-m/nordic/nrf54l10_cpuapp" if SOC_NRF54L10_CPUAPP + default "$(ZEPHYR_BASE)/modules/trusted-firmware-m/nordic/nrf9160" if SOC_NRF9160 + default "$(ZEPHYR_BASE)/modules/trusted-firmware-m/nordic/nrf9120" if SOC_NRF9120 + default "$(ZEPHYR_BASE)/modules/trusted-firmware-m/nordic/nrf5340_cpuapp" if SOC_NRF5340_CPUAPP + default "$(ZEPHYR_BASE)/modules/trusted-firmware-m/nordic/nrf54l15_cpuapp" if SOC_NRF54L15_CPUAPP + default "$(ZEPHYR_BASE)/modules/trusted-firmware-m/nordic/nrf54l10_cpuapp" if SOC_NRF54L10_CPUAPP help The board name used for building TFM. Building with TFM requires that TFM has been ported to the given board/SoC. @@ -256,7 +256,7 @@ config TFM_BL2_SIGNING_KEY_PATH string "Path to private key used to sign BL2 firmware images." help Path to binary BL2 signing private key - Default is ${ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR}/bl1/bl1_2/bl1_dummy_rotpk + Default is $(ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR)/bl1/bl1_2/bl1_dummy_rotpk if it has not been changed on TF-M side for your board endif # TFM_BL1 @@ -281,7 +281,7 @@ config TFM_MCUBOOT_SIGNATURE_TYPE config TFM_KEY_FILE_S string "Path to private key used to sign secure firmware images." - default "${ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR}/bl2/ext/mcuboot/root-${CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE}.pem" + default "$(ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR)/bl2/ext/mcuboot/root-${CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE}.pem" help The path and filename for the .pem file containing the private key that should be used by the BL2 bootloader when signing secure @@ -290,7 +290,7 @@ config TFM_KEY_FILE_S config TFM_KEY_FILE_NS string "Path to private key used to sign non-secure firmware images." - default "${ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR}/bl2/ext/mcuboot/root-${CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE}_1.pem" + default "$(ZEPHYR_TRUSTED_FIRMWARE_M_MODULE_DIR)/bl2/ext/mcuboot/root-${CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE}_1.pem" help The path and filename for the .pem file containing the private key that should be used by the BL2 bootloader when signing non-secure @@ -333,8 +333,8 @@ endchoice config TFM_ETHOS_DRIVER_PATH_LOCAL string "Path to a locally available Ethos-U driver or an empty string" - depends on SOC_SERIES_MPS3 - default "${ZEPHYR_HAL_ETHOS_U_MODULE_DIR}" + depends on SOC_SERIES_MPS3 || SOC_SERIES_MPS4 + default "$(ZEPHYR_HAL_ETHOS_U_MODULE_DIR)" help Path to a locally available Ethos-U driver to be used for TF-M builds or an empty string to allow TF-M to automatically fetch the Ethos-U diff --git a/samples/application_development/code_relocation_nocopy/boards/nrf54h20dk_nrf54h20_cpuapp.overlay b/samples/application_development/code_relocation_nocopy/boards/nrf54h20dk_nrf54h20_cpuapp.overlay index 98d67e2ad08..789c47d3a47 100644 --- a/samples/application_development/code_relocation_nocopy/boards/nrf54h20dk_nrf54h20_cpuapp.overlay +++ b/samples/application_development/code_relocation_nocopy/boards/nrf54h20dk_nrf54h20_cpuapp.overlay @@ -2,11 +2,16 @@ status = "okay"; }; +&gpio6 { + status = "okay"; +}; + +&exmif { + status = "okay"; +}; + &mx25uw63 { - read-command = <0xEC13>; - command-length = "INSTR_2_BYTE"; - address-length = "ADDR_4_BYTE"; - rx-dummy = <20>; + status = "okay"; xip-config = <1 0 0x20000000 0>; }; diff --git a/samples/application_development/code_relocation_nocopy/sample.yaml b/samples/application_development/code_relocation_nocopy/sample.yaml index 37e009bc987..62929419c53 100644 --- a/samples/application_development/code_relocation_nocopy/sample.yaml +++ b/samples/application_development/code_relocation_nocopy/sample.yaml @@ -6,6 +6,7 @@ tests: platform_allow: - qemu_cortex_m3 - nrf5340dk/nrf5340/cpuapp + - nrf54h20dk/nrf54h20/cpuapp - stm32f769i_disco - stm32h7b3i_dk - stm32h573i_dk diff --git a/samples/drivers/mbox/CMakeLists.txt b/samples/drivers/mbox/CMakeLists.txt index e5d5e612c79..dc03717d2ce 100644 --- a/samples/drivers/mbox/CMakeLists.txt +++ b/samples/drivers/mbox/CMakeLists.txt @@ -23,6 +23,7 @@ if(CONFIG_BOARD_NRF5340DK_NRF5340_CPUAPP OR CONFIG_BOARD_MCX_N9XX_EVK_MCXN947_CPU0 OR CONFIG_BOARD_ESP32_DEVKITC_ESP32_PROCPU OR CONFIG_BOARD_ESP32S3_DEVKITM_ESP32S3_PROCPU OR + CONFIG_BOARD_ESP32C6_DEVKITC_ESP32C6_HPCORE OR CONFIG_BOARD_NRF54H20DK_NRF54H20_CPUAPP OR CONFIG_BOARD_NRF54L09PDK_NRF54L09_CPUAPP OR CONFIG_BOARD_NRF54L15DK_NRF54L15_CPUAPP OR diff --git a/samples/drivers/mbox/Kconfig.sysbuild b/samples/drivers/mbox/Kconfig.sysbuild index 2a79840f389..5cffe27038f 100644 --- a/samples/drivers/mbox/Kconfig.sysbuild +++ b/samples/drivers/mbox/Kconfig.sysbuild @@ -23,7 +23,8 @@ config REMOTE_BOARD default "nrf54lm20dk/nrf54lm20a/cpuflpr" if $(BOARD) = "nrf54lm20dk" default "ophelia4ev/cpuflpr" if $(BOARD) = "ophelia4ev" default "stm32h747i_disco/stm32h747xx/m4" if $(BOARD) = "stm32h747i_disco" - default "esp32_devkitc/esp32/appcpu" if "$(BOARD)${BOARD_QUALIFIERS}" = "esp32_devkitc/esp32/procpu" - default "esp32s3_devkitm/esp32s3/appcpu" if "$(BOARD)${BOARD_QUALIFIERS}" = "esp32s3_devkitm/esp32s3/procpu" - default "bl54l15_dvk/nrf54l15/cpuflpr" if "$(BOARD)${BOARD_QUALIFIERS}" = "bl54l15_dvk/nrf54l15/cpuapp" + default "esp32_devkitc/esp32/appcpu" if "$(BOARD)$(BOARD_QUALIFIERS)" = "esp32_devkitc/esp32/procpu" + default "esp32s3_devkitm/esp32s3/appcpu" if "$(BOARD)$(BOARD_QUALIFIERS)" = "esp32s3_devkitm/esp32s3/procpu" + default "esp32c6_devkitc/esp32c6/lpcore" if "$(BOARD)$(BOARD_QUALIFIERS)" = "esp32c6_devkitc/esp32c6/hpcore" + default "bl54l15_dvk/nrf54l15/cpuflpr" if "$(BOARD)$(BOARD_QUALIFIERS)" = "bl54l15_dvk/nrf54l15/cpuapp" default "bl54l15u_dvk/nrf54l15/cpuflpr" if $(BOARD) = "bl54l15u_dvk" diff --git a/samples/drivers/mbox/boards/esp32c6_devkitc_hpcore.conf b/samples/drivers/mbox/boards/esp32c6_devkitc_hpcore.conf new file mode 100644 index 00000000000..7d425a10aa2 --- /dev/null +++ b/samples/drivers/mbox/boards/esp32c6_devkitc_hpcore.conf @@ -0,0 +1 @@ +CONFIG_ULP_COPROC_ENABLED=y diff --git a/samples/drivers/mbox/boards/esp32c6_devkitc_hpcore.overlay b/samples/drivers/mbox/boards/esp32c6_devkitc_hpcore.overlay new file mode 100644 index 00000000000..a597cd0f12a --- /dev/null +++ b/samples/drivers/mbox/boards/esp32c6_devkitc_hpcore.overlay @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2025 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,ipc_shm = &shmlp; + zephyr,ipc = &mbox0; + }; + + mbox-consumer { + compatible = "vnd,mbox-consumer"; + mboxes = <&mbox0 0>, <&mbox0 1>; + mbox-names = "tx", "rx"; + }; +}; + +&mbox0 { + status = "okay"; +}; + +&lp_uart { + status = "okay"; +}; diff --git a/samples/drivers/mbox/remote/CMakeLists.txt b/samples/drivers/mbox/remote/CMakeLists.txt index bd4c9e2e20e..a2c07a2dd2a 100644 --- a/samples/drivers/mbox/remote/CMakeLists.txt +++ b/samples/drivers/mbox/remote/CMakeLists.txt @@ -21,6 +21,7 @@ if(CONFIG_BOARD_NRF5340DK_NRF5340_CPUNET OR CONFIG_BOARD_MCX_N9XX_EVK_MCXN947_CPU1 OR CONFIG_BOARD_ESP32_DEVKITC_ESP32_APPCPU OR CONFIG_BOARD_ESP32S3_DEVKITM_ESP32S3_APPCPU OR + CONFIG_BOARD_ESP32C6_DEVKITC_ESP32C6_LPCORE OR CONFIG_BOARD_NRF54H20DK_NRF54H20_CPUPPR OR CONFIG_BOARD_NRF54H20DK_NRF54H20_CPUFLPR OR CONFIG_BOARD_NRF54H20DK_NRF54H20_CPURAD OR diff --git a/samples/drivers/mbox/remote/boards/esp32c6_devkitc_lpcore.overlay b/samples/drivers/mbox/remote/boards/esp32c6_devkitc_lpcore.overlay new file mode 100644 index 00000000000..4717edbd985 --- /dev/null +++ b/samples/drivers/mbox/remote/boards/esp32c6_devkitc_lpcore.overlay @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2024 Felipe Neves. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,ipc_shm = &shmlp; + zephyr,ipc = &mbox0; + }; + + mbox-consumer { + compatible = "vnd,mbox-consumer"; + mboxes = <&mbox0 1>, <&mbox0 0>; + mbox-names = "tx", "rx"; + }; +}; + +&mbox0 { + status = "okay"; +}; + +&lp_uart { + status = "okay"; +}; diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/app_nrf5340_bt.overlay b/samples/subsys/mgmt/mcumgr/smp_svr/app_nrf5340_bt.overlay deleted file mode 100644 index fcc2e240fd9..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/app_nrf5340_bt.overlay +++ /dev/null @@ -1,5 +0,0 @@ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay b/samples/subsys/mgmt/mcumgr/smp_svr/boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay deleted file mode 100644 index c8040e40ffd..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay +++ /dev/null @@ -1,46 +0,0 @@ -/ { - chosen { - nordic,pm-ext-flash = &mx25r64; - }; -}; - -/delete-node/ &boot_partition; -/delete-node/ &slot0_partition; -/delete-node/ &slot1_partition; -/delete-node/ &storage_partition; - -&cpuapp_rram { - reg = <0x0 DT_SIZE_K(1524)>; - - partitions { - boot_partition: partition@0 { - label = "mcuboot"; - reg = <0x000000000 0x00014000>; - }; - - slot0_partition: partition@14000 { - label = "image-0"; - reg = <0x000014000 0x0015A000>; - }; - - storage_partition: partition@16E000 { - label = "storage"; - reg = < 0x16E000 0x9000 >; - }; - }; -}; - -&mx25r64 { - status = "okay"; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - slot1_partition: partition@0 { - label = "image-1"; - reg = <0x000000000 0x0015A000>; - }; - }; -}; diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/pm_static_nrf5340_bt.yml b/samples/subsys/mgmt/mcumgr/smp_svr/pm_static_nrf5340_bt.yml deleted file mode 100644 index 7a48d51ec33..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/pm_static_nrf5340_bt.yml +++ /dev/null @@ -1,55 +0,0 @@ -app: - address: 0x10200 - region: flash_primary - size: 0xdfe00 -mcuboot: - address: 0x0 - region: flash_primary - size: 0x10000 -mcuboot_pad: - address: 0x10000 - region: flash_primary - size: 0x200 -mcuboot_primary: - address: 0x10000 - orig_span: &id001 - - mcuboot_pad - - app - region: flash_primary - size: 0xe0000 - span: *id001 -mcuboot_primary_app: - address: 0x10200 - orig_span: &id002 - - app - region: flash_primary - size: 0xdfe00 - span: *id002 -settings_storage: - address: 0xf0000 - region: flash_primary - size: 0x10000 -mcuboot_primary_1: - address: 0x0 - size: 0x40000 - device: flash_ctrl - region: ram_flash -mcuboot_secondary: - address: 0x00000 - size: 0xe0000 - device: MX25R64 - region: external_flash -mcuboot_secondary_1: - address: 0xe0000 - size: 0x40000 - device: MX25R64 - region: external_flash -external_flash: - address: 0x120000 - size: 0x6e0000 - device: MX25R64 - region: external_flash -pcd_sram: - address: 0x20000000 - size: 0x2000 - region: sram_primary diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/prj_nrf5340_bt.conf b/samples/subsys/mgmt/mcumgr/smp_svr/prj_nrf5340_bt.conf deleted file mode 100644 index cb53d3e6beb..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/prj_nrf5340_bt.conf +++ /dev/null @@ -1,88 +0,0 @@ -# Enable MCUmgr and dependencies. -CONFIG_NET_BUF=y -CONFIG_ZCBOR=y -CONFIG_CRC=y -CONFIG_MCUMGR=y -CONFIG_STREAM_FLASH=y -CONFIG_FLASH_MAP=y -CONFIG_BT=y -CONFIG_BT_PERIPHERAL=y - -# Some command handlers require a large stack. -CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2304 -CONFIG_MAIN_STACK_SIZE=2176 - -# Ensure an MCUboot-compatible binary is generated. -CONFIG_BOOTLOADER_MCUBOOT=y - -# Enable flash operations. -CONFIG_FLASH=y - -# Required by the `taskstat` command. -CONFIG_THREAD_MONITOR=y - -# Support for taskstat command -CONFIG_MCUMGR_GRP_OS_TASKSTAT=y - -# Enable statistics and statistic names. -CONFIG_STATS=y -CONFIG_STATS_NAMES=y - -# Enable most core commands. -CONFIG_FLASH=y -CONFIG_IMG_MANAGER=y -CONFIG_MCUMGR_GRP_IMG=y -CONFIG_MCUMGR_GRP_OS=y -CONFIG_MCUMGR_GRP_STAT=y - -# Enable logging -CONFIG_LOG=y -CONFIG_MCUBOOT_UTIL_LOG_LEVEL_WRN=y - -# Disable debug logging -CONFIG_LOG_MAX_LEVEL=3 - -# Allow for large Bluetooth data packets. -CONFIG_BT_L2CAP_TX_MTU=498 -CONFIG_BT_BUF_ACL_RX_SIZE=502 -CONFIG_BT_BUF_ACL_TX_SIZE=502 -CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 - -# Enable the Bluetooth mcumgr transport (unauthenticated). -CONFIG_MCUMGR_TRANSPORT_BT=y -CONFIG_MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL=y - -# Enable the Shell mcumgr transport. -CONFIG_BASE64=y -CONFIG_CRC=y -CONFIG_SHELL=y -CONFIG_SHELL_BACKEND_SERIAL=y -CONFIG_MCUMGR_TRANSPORT_SHELL=y - -# Enable the mcumgr Packet Reassembly feature over Bluetooth and its configuration dependencies. -# MCUmgr buffer size is optimized to fit one SMP packet divided into five Bluetooth Write Commands, -# transmitted with the maximum possible MTU value: 498 bytes. -CONFIG_MCUMGR_TRANSPORT_BT_REASSEMBLY=y -CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE=2475 -CONFIG_MCUMGR_GRP_OS_MCUMGR_PARAMS=y -CONFIG_MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE=4608 - -# Enable the LittleFS file system. -CONFIG_FILE_SYSTEM=y -CONFIG_FILE_SYSTEM_LITTLEFS=y - -# Enable file system commands -CONFIG_MCUMGR_GRP_FS=y - -# Enable the storage erase command. -CONFIG_MCUMGR_GRP_ZBASIC=y -CONFIG_MCUMGR_GRP_ZBASIC_STORAGE_ERASE=y - -# Disable Bluetooth ping support -CONFIG_BT_CTLR_LE_PING=n - -# Disable shell commands that are not needed -CONFIG_CLOCK_CONTROL_NRF_SHELL=n -CONFIG_DEVICE_SHELL=n -CONFIG_DEVMEM_SHELL=n -CONFIG_FLASH_SHELL=n diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/sample.yaml b/samples/subsys/mgmt/mcumgr/smp_svr/sample.yaml index aef16825a75..4596e468207 100644 --- a/samples/subsys/mgmt/mcumgr/smp_svr/sample.yaml +++ b/samples/subsys/mgmt/mcumgr/smp_svr/sample.yaml @@ -14,12 +14,9 @@ tests: - nrf52840dk/nrf52840 - pinnacle_100_dvk - mg100 - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l15dk/nrf54l10/cpuapp integration_platforms: - nrf52dk/nrf52832 - nrf52840dk/nrf52840 - - nrf54l15dk/nrf54l15/cpuapp sample.mcumgr.smp_svr.bt_static_svc: harness: bluetooth tags: bluetooth @@ -100,9 +97,9 @@ tests: # transport. Transport does not affect flags so it does not really matter which is selected, # flags should affect any transport the same way. sample.mcumgr.smp_svr.mcuboot_flags.direct_xip_withrevert: - extra_args: EXTRA_CONF_FILE="overlay-serial.conf" - extra_configs: - - CONFIG_MCUBOOT_BOOTLOADER_MODE_DIRECT_XIP_WITH_REVERT=y + extra_args: + - EXTRA_CONF_FILE="overlay-serial.conf" + - SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP_WITH_REVERT=y platform_allow: - nrf52840dk/nrf52840 - pinnacle_100_dvk @@ -173,33 +170,6 @@ tests: - mg100 integration_platforms: - nrf52840dk/nrf52840 - sample.mcumgr.smp_svr.bt.nrf54l15dk.ext_flash: - extra_args: - - OVERLAY_CONFIG="overlay-bt.conf" - - DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay" - - mcuboot_CONF_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.conf" - - mcuboot_EXTRA_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay" - - SB_CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y - - SB_CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y - platform_allow: - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l15dk/nrf54l10/cpuapp - - nrf54l15dk/nrf54l05/cpuapp - integration_platforms: - - nrf54l15dk/nrf54l15/cpuapp - sample.mcumgr.smp_svr.bt.nrf54l15dk.ext_flash.pure_dts: - extra_args: - - OVERLAY_CONFIG="overlay-bt.conf" - - DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay" - - mcuboot_CONF_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.conf" - - mcuboot_EXTRA_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_ext_flash.overlay" - - SB_CONFIG_PARTITION_MANAGER=n - platform_allow: - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l15dk/nrf54l10/cpuapp - - nrf54l15dk/nrf54l05/cpuapp - integration_platforms: - - nrf54l15dk/nrf54l15/cpuapp sample.mcumgr.smp_svr.ram_load: extra_args: FILE_SUFFIX="ram_load" platform_allow: @@ -222,11 +192,3 @@ tests: - nrf52840dk/nrf52840 integration_platforms: - nrf52840dk/nrf52840 - sample.mcumgr.smp_svr.bt.nrf5340dk.ext_flash: - sysbuild: true - extra_args: - - FILE_SUFFIX=nrf5340_bt - platform_allow: - - nrf5340dk/nrf5340/cpuapp - integration_platforms: - - nrf5340dk/nrf5340/cpuapp diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild.cmake b/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild.cmake deleted file mode 100644 index f0a9f06df84..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (c) 2024 Nordic Semiconductor -# -# SPDX-License-Identifier: Apache-2.0 -# - -if(FILE_SUFFIX STREQUAL "nrf5340_bt") - if(SB_CONFIG_SOC_NRF5340_CPUAPP) - # nRF5340 with Bluetooth configuration, add partition manager configuration to MCUboot image - list(APPEND mcuboot_EXTRA_DTC_OVERLAY_FILE ${CMAKE_CURRENT_LIST_DIR}/app_nrf5340_bt.overlay) - list(REMOVE_DUPLICATES mcuboot_EXTRA_DTC_OVERLAY_FILE) - set(mcuboot_EXTRA_DTC_OVERLAY_FILE ${mcuboot_EXTRA_DTC_OVERLAY_FILE} CACHE INTERNAL "" FORCE) - else() - message(FATAL_ERROR "File suffix 'nrf5340_bt' can only be used on an nRF5340 CPUAPP board target") - endif() -endif() diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild/mcuboot_nrf5340_bt.conf b/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild/mcuboot_nrf5340_bt.conf deleted file mode 100644 index 4ebbf98cf20..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild/mcuboot_nrf5340_bt.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_BOOT_MAX_IMG_SECTORS=240 diff --git a/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild_nrf5340_bt.conf b/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild_nrf5340_bt.conf deleted file mode 100644 index 16bcac179e8..00000000000 --- a/samples/subsys/mgmt/mcumgr/smp_svr/sysbuild_nrf5340_bt.conf +++ /dev/null @@ -1,8 +0,0 @@ -# Enable MCUboot bootloader support -SB_CONFIG_BOOTLOADER_MCUBOOT=y -SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY=y -SB_CONFIG_NETCORE_HCI_IPC=y -SB_CONFIG_SECURE_BOOT_NETCORE=y -SB_CONFIG_NETCORE_APP_UPDATE=y -SB_CONFIG_MCUBOOT_NRF53_MULTI_IMAGE_UPDATE=y -SB_CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y diff --git a/samples/sysbuild/hello_world/Kconfig.sysbuild b/samples/sysbuild/hello_world/Kconfig.sysbuild index edec01b94c9..53ed4507b76 100644 --- a/samples/sysbuild/hello_world/Kconfig.sysbuild +++ b/samples/sysbuild/hello_world/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" +source "$(ZEPHYR_BASE)/share/sysbuild/Kconfig" config REMOTE_BOARD string "The board used for remote target" diff --git a/scripts/build/check_init_priorities_test.py b/scripts/build/check_init_priorities_test.py index 16cf9af7406..7ada2349839 100755 --- a/scripts/build/check_init_priorities_test.py +++ b/scripts/build/check_init_priorities_test.py @@ -6,7 +6,7 @@ Tests for check_init_priorities """ -import mock +from unittest import mock import pathlib import unittest diff --git a/scripts/ci/check_compliance.py b/scripts/ci/check_compliance.py index 5958fa52a7d..b0f4ccebb1e 100755 --- a/scripts/ci/check_compliance.py +++ b/scripts/ci/check_compliance.py @@ -23,6 +23,8 @@ import unidiff import yaml +from dotenv import load_dotenv + from yamllint import config, linter from junitparser import TestCase, TestSuite, JUnitXml, Skipped, Error, Failure @@ -515,7 +517,7 @@ def run(self): self.check_no_undef_outside_kconfig(kconf) self.check_disallowed_defconfigs(kconf) - def get_modules(self, modules_file, sysbuild_modules_file, settings_file): + def get_modules(self, _module_dirs_file, modules_file, sysbuild_modules_file, settings_file): """ Get a list of modules and put them in a file that is parsed by Kconfig @@ -730,13 +732,15 @@ def parse_kconfig(self): os.environ["KCONFIG_BINARY_DIR"] = kconfiglib_dir os.environ['DEVICETREE_CONF'] = "dummy" os.environ['TOOLCHAIN_HAS_NEWLIB'] = "y" + kconfig_env_file = os.path.join(kconfiglib_dir, "kconfig_module_dirs.env") # Older name for DEVICETREE_CONF, for compatibility with older Zephyr # versions that don't have the renaming os.environ["GENERATED_DTS_BOARD_CONF"] = "dummy" # For multi repo support - self.get_modules(os.path.join(kconfiglib_dir, "Kconfig.modules"), + self.get_modules(kconfig_env_file, + os.path.join(kconfiglib_dir, "Kconfig.modules"), os.path.join(kconfiglib_dir, "Kconfig.sysbuild.modules"), os.path.join(kconfiglib_dir, "settings_file.txt")) # For Kconfig.dts support @@ -749,6 +753,8 @@ def parse_kconfig(self): # symbols within Kconfig files os.environ["KCONFIG_WARN_UNDEF"] = "y" + load_dotenv(kconfig_env_file) + try: # Note this will both print warnings to stderr _and_ return # them: so some warnings might get printed @@ -1321,13 +1327,17 @@ class KconfigBasicNoModulesCheck(KconfigBasicCheck): """ name = "KconfigBasicNoModules" path_hint = "" + EMPTY_FILE_CONTENTS = "# Empty\n" + + def get_modules(self, module_dirs_file, modules_file, sysbuild_modules_file, settings_file): + with open(module_dirs_file, 'w') as fp_module_file: + fp_module_file.write(self.EMPTY_FILE_CONTENTS) - def get_modules(self, modules_file, sysbuild_modules_file, settings_file): with open(modules_file, 'w') as fp_module_file: - fp_module_file.write("# Empty\n") + fp_module_file.write(self.EMPTY_FILE_CONTENTS) with open(sysbuild_modules_file, 'w') as fp_module_file: - fp_module_file.write("# Empty\n") + fp_module_file.write(self.EMPTY_FILE_CONTENTS) class KconfigHWMv2Check(KconfigBasicCheck): @@ -1995,6 +2005,66 @@ def run(self): desc = f"Run 'ruff format {file}'" self.fmtd_failure("error", "Python format error", file, desc=desc) +class PythonCompatCheck(ComplianceTest): + """ + Python Compatibility Check + """ + name = "PythonCompat" + doc = "Check that Python files are compatible with Zephyr minimum supported Python version." + + MAX_VERSION = (3, 10) + MAX_VERSION_STR = f"{MAX_VERSION[0]}.{MAX_VERSION[1]}" + + def run(self): + py_files = [f for f in get_files(filter="d") if f.endswith(".py")] + if not py_files: + return + cmd = ["vermin", "-f", "parsable", "--violations", + f"-t={self.MAX_VERSION_STR}", "--no-make-paths-absolute"] + py_files + try: + result = subprocess.run(cmd, + check=False, + capture_output=True, + cwd=GIT_TOP) + except Exception as ex: + self.error(f"Failed to run vermin: {ex}") + output = result.stdout.decode("utf-8") + failed = False + for line in output.splitlines(): + parts = line.split(":") + if len(parts) < 6: + continue + filename, line_number, column, _, py3ver, feature = parts[:6] + if not line_number: + # Ignore all file-level messages + continue + + desc = None + if py3ver.startswith('!'): + desc = f"{feature} is known to be incompatible with Python 3." + elif py3ver.startswith('~'): + # "no known reason it won't work", just skip + continue + else: + major, minor = map(int, py3ver.split(".")[:2]) + if (major, minor) > self.MAX_VERSION: + desc = f"{feature} requires Python {major}.{minor}, which is higher than " \ + f"Zephyr's minimum supported Python version ({self.MAX_VERSION_STR})." + + if desc is not None: + self.fmtd_failure( + "error", + "PythonCompat", + filename, + line=int(line_number), + col=int(column) if column else None, + desc=desc, + ) + failed = True + if failed: + self.failure("Some Python files use features that are not compatible with Python " \ + f"{self.MAX_VERSION_STR}.") + class TextEncoding(ComplianceTest): """ @@ -2222,14 +2292,6 @@ def _main(args): def main(argv=None): args = parse_args(argv) - try: - # pylint: disable=unused-import - from lxml import etree - except ImportError: - print("\nERROR: Python module lxml not installed, unable to proceed") - print("See https://github.com/weiwei/junitparser/issues/99") - return 1 - try: n_fails = _main(args) except BaseException: diff --git a/scripts/requirements-actions.in b/scripts/requirements-actions.in index bf4a50e2aa2..6baf9dc9e3f 100644 --- a/scripts/requirements-actions.in +++ b/scripts/requirements-actions.in @@ -11,30 +11,31 @@ gitpython>=3.1.41 ijson intelhex junit2html -junitparser>=2 -lxml>=5.3.0 -mock +junitparser>=4.0.1 mypy natsort ply>=3.10 -progress psutil>=5.6.6 pyelftools>=0.29 -pygithub +pygithub>=2.7.0 pykwalify pylint>=3 pyserial pytest +python-dotenv python-magic-bin; sys_platform == "win32" python-magic; sys_platform != "win32" pyyaml +reuse ruff==0.11.11 setuptools>=70.2.0 +spdx-tools sphinx-lint tabulate -tomli>=1.1.0 tox +tqdm>=4.67.1 unidiff +vermin west>=0.14.0 xlsxwriter yamllint diff --git a/scripts/requirements-actions.txt b/scripts/requirements-actions.txt index 61b88c95404..21505203bfa 100644 --- a/scripts/requirements-actions.txt +++ b/scripts/requirements-actions.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --universal --python-version 3.10 --generate-hashes requirements-actions.in +# uv pip compile --universal --python-version 3.10 --generate-hashes requirements-actions.in --output-file requirements-actions.txt anytree==2.13.0 \ --hash=sha256:4cbcf10df36b1f1cba131b7e487ff3edafc9d6e932a3c70071b5b768bab901ff \ --hash=sha256:c9d3aa6825fdd06af7ebb05b4ef291d2db63e62bb1f9b7d9b71354be9d362714 @@ -12,27 +12,45 @@ astroid==3.3.10 \ --hash=sha256:104fb9cb9b27ea95e847a94c003be03a9e039334a8ebca5ee27dafaf5c5711eb \ --hash=sha256:c332157953060c6deb9caa57303ae0d20b0fbdb2e59b4a4f2a6ba49d0a7961ce # via pylint -awscli==1.40.24 \ - --hash=sha256:6dbd7baebd5e01cd983dc8a816dfaa09155ce1825099ee09fd2044ea60024a3e \ - --hash=sha256:a5d8dffa523f332839ec95501364df45d763c3000f9a61247324e6cfa46a3bf2 +attrs==25.3.0 \ + --hash=sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 \ + --hash=sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b + # via reuse +awscli==1.41.2 \ + --hash=sha256:2c219f88a810c2908954ac50b52f3791c875a3c3a439d16e5a8eac31190c95b7 \ + --hash=sha256:428c5ff8a9c970405848ca49d7f4727e7afcfef5a93abd9227af730f77d24e03 # via -r requirements-actions.in -botocore==1.38.25 \ - --hash=sha256:5a960bd990a11cdb78865e908a58ed712d87d9b419f55ad21c99d7d21f0d6726 \ - --hash=sha256:8c73e97d9662a6c92be33dab66cd1e2b59797154c7ec379ce3bb5d6779d9d78c +beartype==0.21.0 \ + --hash=sha256:b6a1bd56c72f31b0a496a36cc55df6e2f475db166ad07fa4acc7e74f4c7f34c0 \ + --hash=sha256:f9a5078f5ce87261c2d22851d19b050b64f6a805439e8793aecf01ce660d3244 + # via spdx-tools +binaryornot==0.4.4 \ + --hash=sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061 \ + --hash=sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4 + # via reuse +boolean-py==5.0 \ + --hash=sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95 \ + --hash=sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9 + # via + # license-expression + # reuse +botocore==1.39.2 \ + --hash=sha256:474445fa8b281dd5db8fc62184f0f6e494d4f1efb96fe10312490583e67a9dd0 \ + --hash=sha256:921cab9aa6e1e4ceddcece5b55b57daae7722168e74409f1aafcc2c5589df676 # via # awscli # s3transfer -cachetools==6.0.0 \ - --hash=sha256:82e73ba88f7b30228b5507dce1a1f878498fc669d972aef2dde4f3a3c24f103e \ - --hash=sha256:f225782b84438f828328fc2ad74346522f27e5b1440f4e9fd18b20ebfd1aa2cf +cachetools==6.1.0 \ + --hash=sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e \ + --hash=sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587 # via tox canopen==2.3.0 \ --hash=sha256:792084a93c138d5b2a406ddd2d4eb5ce208f03bd8fda60f81ad2bb8d56c6b827 \ --hash=sha256:7a62274af6ded7ee85ee96f4ada3afa38bc8607a91f306dcc202c3c8cf2850d7 # via -r requirements-actions.in -certifi==2025.4.26 \ - --hash=sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6 \ - --hash=sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3 +certifi==2025.6.15 \ + --hash=sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057 \ + --hash=sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b # via # elastic-transport # requests @@ -110,7 +128,9 @@ cffi==1.17.1 \ chardet==5.2.0 \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 - # via tox + # via + # binaryornot + # tox charset-normalizer==3.4.2 \ --hash=sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4 \ --hash=sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45 \ @@ -204,29 +224,34 @@ charset-normalizer==3.4.2 \ --hash=sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f \ --hash=sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a \ --hash=sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f - # via requests -clang-format==20.1.5 \ - --hash=sha256:16c99e744009822d8574b163d679d3a13c81d26beb8512e55a74651b8972f64d \ - --hash=sha256:269d0a12cf6177f2bb806f73130189efac311bd2d24bd5ab8e12f9486b31f591 \ - --hash=sha256:4412731a18ed0749b8357c41bbe277baed514b117345f1f8e3dbc61bf7b6d78e \ - --hash=sha256:45e23bceb0ec646acd14a6274ea92ddc6d959bed4a8c1c338346e4da403b1c96 \ - --hash=sha256:5af73b84c98461bdab8f0b6c1bc49a7935a3362c3183315421607805a0b3e03b \ - --hash=sha256:626e29e1014e044166d856ef439955622e5e6ba50662fe4b4142f41ecebafefe \ - --hash=sha256:6f0d7e54f25374c7849ec639f2e666b35c18bfe76cdacb7e3fdfc92647c99387 \ - --hash=sha256:7abe250990f6eaf89a201cf89f296c18bdb2c135dd44b949a6007ffd31c4522c \ - --hash=sha256:8e0b8e8bdf513f8ac27b82ec940440d836177836d5bc30d1002632e7f4308aab \ - --hash=sha256:9d2b233edaa1323ea9e736f598ba6a845ecb5fa3d21fe88dbb5be12974b8cc78 \ - --hash=sha256:9f82d954ed96cb01a5b6fdcbd87339837b2a310ce65dcd89c88821b6207b6e00 \ - --hash=sha256:c9dbc67e23bafa578367b815425573697a7e3d342e5aed17ae02cb0108007e74 \ - --hash=sha256:cffbcc410ef535a60ab918699ac38d22fa231059cba2bc6c1226a5de69af2c38 \ - --hash=sha256:dba394d7fb285d1adb48a9a46f7241afd2bd8569d63efc76ffe3c381f72c3c7e \ - --hash=sha256:e389a7aa1e99988764060e8fd06b71517dd5d86e3d5285cb9f8eefb1823b4233 \ - --hash=sha256:ee886b41fd7a671a38d207af05006a187b7fc0f5e2463d66fce8c8b4f4cd30c7 + # via + # python-debian + # requests +clang-format==20.1.7 \ + --hash=sha256:11431cb437ed22be85744ea47b3a6801bc61de7ac4b775bf1cb89ee190c992d4 \ + --hash=sha256:1dad1e6f9eb732b76046bf5810c6ee78b9e6cd6b3616cb75d9bde06ecd3222e6 \ + --hash=sha256:29f5fe39e60579ca253d31c1122ce06a80716400ec7e5dc38833da80f88dbbd5 \ + --hash=sha256:2b0d76b9bf1f993bad33d2216b5fce4c407bc748fa31659ab7f51ca60df113c9 \ + --hash=sha256:4a9b909b1a9eb0b91aae51fdeeeb013ce20f9079d2e0fa8b8381e97c268dc889 \ + --hash=sha256:4c05114a10efe85c11fde518fe0fadc2977ce4a997a26ceaac88521daee83bbd \ + --hash=sha256:6db0b7271af8cbc2656b3b6b31e4276d5c6b8ceafb1981760f4738cfbe0a9e43 \ + --hash=sha256:70a904719a1bd6653d77ddc6d7b40418845912a1a2a419b9116b819a6b619f8c \ + --hash=sha256:7bd56bd0f519959488977dcddddba4e4fd07cba6225ed09ad658caa1f7286d1f \ + --hash=sha256:99cbfb99dab836027498190f55e543bed51bae33ae6dc256861e7aa91368de98 \ + --hash=sha256:9cd4d64dc0e34b23badad0ce3a235fb5c8ac63651d9f91d1c806356212cbca6c \ + --hash=sha256:b27ed7fe674e8a77461c8d5b117ed96021aa18233917b3fe54b95391e0b22d04 \ + --hash=sha256:bd144f093b4a3ac8a0f0d0ebb9b013974884d9da0627b9905949c6f3213aa850 \ + --hash=sha256:d11c62d38b9144d30021b884b0f95e7270a6bcbf4f22bdd7dae94a531d82fbba \ + --hash=sha256:d79484ce2c8f621242046c4bb0aefd49445ec5c7bc3c404af97490289791b777 \ + --hash=sha256:e5257e8188569e4e47fceb3ba3317b0b44dc5ab5046c8cc2d58c626430c747a6 # via -r requirements-actions.in click==8.1.3 \ --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 - # via gitlint-core + # via + # gitlint-core + # reuse + # spdx-tools colorama==0.4.6 \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 @@ -236,50 +261,47 @@ colorama==0.4.6 \ # pylint # pytest # tox + # tqdm # west -cryptography==45.0.3 \ - --hash=sha256:00094838ecc7c6594171e8c8a9166124c1197b074cfca23645cee573910d76bc \ - --hash=sha256:050ce5209d5072472971e6efbfc8ec5a8f9a841de5a4db0ebd9c2e392cb81972 \ - --hash=sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b \ - --hash=sha256:25286aacb947286620a31f78f2ed1a32cded7be5d8b729ba3fb2c988457639e4 \ - --hash=sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56 \ - --hash=sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716 \ - --hash=sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710 \ - --hash=sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8 \ - --hash=sha256:555e5e2d3a53b4fabeca32835878b2818b3f23966a4efb0d566689777c5a12c8 \ - --hash=sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782 \ - --hash=sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578 \ - --hash=sha256:71320fbefd05454ef2d457c481ba9a5b0e540f3753354fff6f780927c25d19b0 \ - --hash=sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71 \ - --hash=sha256:92d5f428c1a0439b2040435a1d6bc1b26ebf0af88b093c3628913dd464d13fa1 \ - --hash=sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490 \ - --hash=sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497 \ - --hash=sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca \ - --hash=sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc \ - --hash=sha256:9eda14f049d7f09c2e8fb411dda17dd6b16a3c76a1de5e249188a32aeb92de19 \ - --hash=sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b \ - --hash=sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9 \ - --hash=sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57 \ - --hash=sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1 \ - --hash=sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06 \ - --hash=sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942 \ - --hash=sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab \ - --hash=sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342 \ - --hash=sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b \ - --hash=sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2 \ - --hash=sha256:dc10ec1e9f21f33420cc05214989544727e776286c1c16697178978327b95c9c \ - --hash=sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899 \ - --hash=sha256:ec64ee375b5aaa354b2b273c921144a660a511f9df8785e6d1c942967106438e \ - --hash=sha256:ed43d396f42028c1f47b5fec012e9e12631266e3825e95c00e3cf94d472dac49 \ - --hash=sha256:edd6d51869beb7f0d472e902ef231a9b7689508e83880ea16ca3311a00bf5ce7 \ - --hash=sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65 \ - --hash=sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f \ - --hash=sha256:fed5aaca1750e46db870874c9c273cd5182a9e9deb16f06f7bdffdb5c2bde4b9 +cryptography==45.0.5 \ + --hash=sha256:0027d566d65a38497bc37e0dd7c2f8ceda73597d2ac9ba93810204f56f52ebc7 \ + --hash=sha256:101ee65078f6dd3e5a028d4f19c07ffa4dd22cce6a20eaa160f8b5219911e7d8 \ + --hash=sha256:12e55281d993a793b0e883066f590c1ae1e802e3acb67f8b442e721e475e6463 \ + --hash=sha256:14d96584701a887763384f3c47f0ca7c1cce322aa1c31172680eb596b890ec30 \ + --hash=sha256:1e1da5accc0c750056c556a93c3e9cb828970206c68867712ca5805e46dc806f \ + --hash=sha256:206210d03c1193f4e1ff681d22885181d47efa1ab3018766a7b32a7b3d6e6afd \ + --hash=sha256:2089cc8f70a6e454601525e5bf2779e665d7865af002a5dec8d14e561002e135 \ + --hash=sha256:3a264aae5f7fbb089dbc01e0242d3b67dffe3e6292e1f5182122bdf58e65215d \ + --hash=sha256:3af26738f2db354aafe492fb3869e955b12b2ef2e16908c8b9cb928128d42c57 \ + --hash=sha256:3fcfbefc4a7f332dece7272a88e410f611e79458fab97b5efe14e54fe476f4fd \ + --hash=sha256:460f8c39ba66af7db0545a8c6f2eabcbc5a5528fc1cf6c3fa9a1e44cec33385e \ + --hash=sha256:57c816dfbd1659a367831baca4b775b2a5b43c003daf52e9d57e1d30bc2e1b0e \ + --hash=sha256:5aa1e32983d4443e310f726ee4b071ab7569f58eedfdd65e9675484a4eb67bd1 \ + --hash=sha256:6ff8728d8d890b3dda5765276d1bc6fb099252915a2cd3aff960c4c195745dd0 \ + --hash=sha256:7259038202a47fdecee7e62e0fd0b0738b6daa335354396c6ddebdbe1206af2a \ + --hash=sha256:72e76caa004ab63accdf26023fccd1d087f6d90ec6048ff33ad0445abf7f605a \ + --hash=sha256:7760c1c2e1a7084153a0f68fab76e754083b126a47d0117c9ed15e69e2103492 \ + --hash=sha256:8c4a6ff8a30e9e3d38ac0539e9a9e02540ab3f827a3394f8852432f6b0ea152e \ + --hash=sha256:9024beb59aca9d31d36fcdc1604dd9bbeed0a55bface9f1908df19178e2f116e \ + --hash=sha256:90cb0a7bb35959f37e23303b7eed0a32280510030daba3f7fdfbb65defde6a97 \ + --hash=sha256:91098f02ca81579c85f66df8a588c78f331ca19089763d733e34ad359f474174 \ + --hash=sha256:926c3ea71a6043921050eaa639137e13dbe7b4ab25800932a8498364fc1abec9 \ + --hash=sha256:982518cd64c54fcada9d7e5cf28eabd3ee76bd03ab18e08a48cad7e8b6f31b18 \ + --hash=sha256:9b4cf6318915dccfe218e69bbec417fdd7c7185aa7aab139a2c0beb7468c89f0 \ + --hash=sha256:ad0caded895a00261a5b4aa9af828baede54638754b51955a0ac75576b831b27 \ + --hash=sha256:b85980d1e345fe769cfc57c57db2b59cff5464ee0c045d52c0df087e926fbe63 \ + --hash=sha256:b8fa8b0a35a9982a3c60ec79905ba5bb090fc0b9addcfd3dc2dd04267e45f25e \ + --hash=sha256:b9e38e0a83cd51e07f5a48ff9691cae95a79bea28fe4ded168a8e5c6c77e819d \ + --hash=sha256:bd4c45986472694e5121084c6ebbd112aa919a25e783b87eb95953c9573906d6 \ + --hash=sha256:be97d3a19c16a9be00edf79dca949c8fa7eff621763666a145f9f9535a5d7f42 \ + --hash=sha256:c648025b6840fe62e57107e0a25f604db740e728bd67da4f6f060f03017d5097 \ + --hash=sha256:d05a38884db2ba215218745f0781775806bde4f32e07b135348355fe8e4991d9 \ + --hash=sha256:dd420e577921c8c2d31289536c386aaa30140b473835e97f83bc71ea9d2baf2d \ + --hash=sha256:e357286c1b76403dd384d938f93c46b2b058ed4dfcdce64a770f0537ed3feb6f \ + --hash=sha256:e6c00130ed423201c5bc5544c23359141660b07999ad82e34e7bb8f882bb78e0 \ + --hash=sha256:e74d30ec9c7cb2f404af331d5b4099a9b322a8a6b25c4632755c8757345baac5 \ + --hash=sha256:f3562c2f23c612f2e4a6964a61d942f891d29ee320edb62ff48ffb99f3de9ae8 # via pyjwt -deprecated==1.2.18 \ - --hash=sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d \ - --hash=sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec - # via pygithub dill==0.4.0 \ --hash=sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0 \ --hash=sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049 @@ -434,6 +456,10 @@ intelhex==2.3.0 \ --hash=sha256:87cc5225657524ec6361354be928adfd56bcf2a3dcc646c40f8f094c39c07db4 \ --hash=sha256:892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093 # via -r requirements-actions.in +isodate==0.7.2 ; python_full_version < '3.11' \ + --hash=sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 \ + --hash=sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6 + # via rdflib isort==6.0.1 \ --hash=sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450 \ --hash=sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615 @@ -444,6 +470,7 @@ jinja2==3.1.6 \ # via # gcovr # junit2html + # reuse jmespath==1.0.1 \ --hash=sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 \ --hash=sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe @@ -451,146 +478,108 @@ jmespath==1.0.1 \ junit2html==31.0.2 \ --hash=sha256:c7fd1f253d423f0df031d0cee8ef7d4d98d9f8bf6383a2d40dca639686814866 # via -r requirements-actions.in -junitparser==3.2.0 \ - --hash=sha256:b05e89c27e7b74b3c563a078d6e055d95cf397444f8f689b0ca616ebda0b3c65 \ - --hash=sha256:e14fdc0a999edfc15889b637390e8ef6ca09a49532416d3bd562857d42d4b96d +junitparser==4.0.2 \ + --hash=sha256:94c3570e41fcaedc64cc3c634ca99457fe41a84dd1aa8ff74e9e12e66223a155 \ + --hash=sha256:d5d07cece6d4a600ff3b7b96c8db5ffa45a91eed695cb86c45c3db113c1ca0f8 # via -r requirements-actions.in -lxml==5.4.0 \ - --hash=sha256:00b8686694423ddae324cf614e1b9659c2edb754de617703c3d29ff568448df5 \ - --hash=sha256:073eb6dcdf1f587d9b88c8c93528b57eccda40209cf9be549d469b942b41d70b \ - --hash=sha256:09846782b1ef650b321484ad429217f5154da4d6e786636c38e434fa32e94e49 \ - --hash=sha256:0a01ce7d8479dce84fc03324e3b0c9c90b1ece9a9bb6a1b6c9025e7e4520e78c \ - --hash=sha256:0be91891bdb06ebe65122aa6bf3fc94489960cf7e03033c6f83a90863b23c58b \ - --hash=sha256:0cef4feae82709eed352cd7e97ae062ef6ae9c7b5dbe3663f104cd2c0e8d94ba \ - --hash=sha256:0e108352e203c7afd0eb91d782582f00a0b16a948d204d4dec8565024fafeea5 \ - --hash=sha256:0ea0252b51d296a75f6118ed0d8696888e7403408ad42345d7dfd0d1e93309a7 \ - --hash=sha256:0fce1294a0497edb034cb416ad3e77ecc89b313cff7adbee5334e4dc0d11f422 \ - --hash=sha256:1320091caa89805df7dcb9e908add28166113dcd062590668514dbd510798c88 \ - --hash=sha256:142accb3e4d1edae4b392bd165a9abdee8a3c432a2cca193df995bc3886249c8 \ - --hash=sha256:14479c2ad1cb08b62bb941ba8e0e05938524ee3c3114644df905d2331c76cd57 \ - --hash=sha256:151d6c40bc9db11e960619d2bf2ec5829f0aaffb10b41dcf6ad2ce0f3c0b2325 \ - --hash=sha256:15a665ad90054a3d4f397bc40f73948d48e36e4c09f9bcffc7d90c87410e478a \ - --hash=sha256:1a42b3a19346e5601d1b8296ff6ef3d76038058f311902edd574461e9c036982 \ - --hash=sha256:1af80c6316ae68aded77e91cd9d80648f7dd40406cef73df841aa3c36f6907c8 \ - --hash=sha256:1b717b00a71b901b4667226bba282dd462c42ccf618ade12f9ba3674e1fabc55 \ - --hash=sha256:1dc4ca99e89c335a7ed47d38964abcb36c5910790f9bd106f2a8fa2ee0b909d2 \ - --hash=sha256:20e16c08254b9b6466526bc1828d9370ee6c0d60a4b64836bc3ac2917d1e16df \ - --hash=sha256:226046e386556a45ebc787871d6d2467b32c37ce76c2680f5c608e25823ffc84 \ - --hash=sha256:24974f774f3a78ac12b95e3a20ef0931795ff04dbb16db81a90c37f589819551 \ - --hash=sha256:24f6df5f24fc3385f622c0c9d63fe34604893bc1a5bdbb2dbf5870f85f9a404a \ - --hash=sha256:27a9ded0f0b52098ff89dd4c418325b987feed2ea5cc86e8860b0f844285d740 \ - --hash=sha256:29f451a4b614a7b5b6c2e043d7b64a15bd8304d7e767055e8ab68387a8cacf4e \ - --hash=sha256:2b31a3a77501d86d8ade128abb01082724c0dfd9524f542f2f07d693c9f1175f \ - --hash=sha256:2c62891b1ea3094bb12097822b3d44b93fc6c325f2043c4d2736a8ff09e65f60 \ - --hash=sha256:2dc191e60425ad70e75a68c9fd90ab284df64d9cd410ba8d2b641c0c45bc006e \ - --hash=sha256:31e63621e073e04697c1b2d23fcb89991790eef370ec37ce4d5d469f40924ed6 \ - --hash=sha256:32697d2ea994e0db19c1df9e40275ffe84973e4232b5c274f47e7c1ec9763cdd \ - --hash=sha256:3a3178b4873df8ef9457a4875703488eb1622632a9cee6d76464b60e90adbfcd \ - --hash=sha256:3b9c2754cef6963f3408ab381ea55f47dabc6f78f4b8ebb0f0b25cf1ac1f7609 \ - --hash=sha256:3d3c30ba1c9b48c68489dc1829a6eede9873f52edca1dda900066542528d6b20 \ - --hash=sha256:3e6d5557989cdc3ebb5302bbdc42b439733a841891762ded9514e74f60319ad6 \ - --hash=sha256:4025bf2884ac4370a3243c5aa8d66d3cb9e15d3ddd0af2d796eccc5f0244390e \ - --hash=sha256:4291d3c409a17febf817259cb37bc62cb7eb398bcc95c1356947e2871911ae61 \ - --hash=sha256:4329422de653cdb2b72afa39b0aa04252fca9071550044904b2e7036d9d97fe4 \ - --hash=sha256:43d549b876ce64aa18b2328faff70f5877f8c6dede415f80a2f799d31644d776 \ - --hash=sha256:460508a4b07364d6abf53acaa0a90b6d370fafde5693ef37602566613a9b0779 \ - --hash=sha256:47fb24cc0f052f0576ea382872b3fc7e1f7e3028e53299ea751839418ade92a6 \ - --hash=sha256:48b4afaf38bf79109bb060d9016fad014a9a48fb244e11b94f74ae366a64d252 \ - --hash=sha256:497cab4d8254c2a90bf988f162ace2ddbfdd806fce3bda3f581b9d24c852e03c \ - --hash=sha256:4aa412a82e460571fad592d0f93ce9935a20090029ba08eca05c614f99b0cc92 \ - --hash=sha256:4b7ce10634113651d6f383aa712a194179dcd496bd8c41e191cec2099fa09de5 \ - --hash=sha256:4cd915c0fb1bed47b5e6d6edd424ac25856252f09120e3e8ba5154b6b921860e \ - --hash=sha256:4d885698f5019abe0de3d352caf9466d5de2baded00a06ef3f1216c1a58ae78f \ - --hash=sha256:4f5322cf38fe0e21c2d73901abf68e6329dc02a4994e483adbcf92b568a09a54 \ - --hash=sha256:50441c9de951a153c698b9b99992e806b71c1f36d14b154592580ff4a9d0d877 \ - --hash=sha256:529024ab3a505fed78fe3cc5ddc079464e709f6c892733e3f5842007cec8ac6e \ - --hash=sha256:53370c26500d22b45182f98847243efb518d268374a9570409d2e2276232fd37 \ - --hash=sha256:53d9469ab5460402c19553b56c3648746774ecd0681b1b27ea74d5d8a3ef5590 \ - --hash=sha256:56dbdbab0551532bb26c19c914848d7251d73edb507c3079d6805fa8bba5b706 \ - --hash=sha256:5a99d86351f9c15e4a901fc56404b485b1462039db59288b203f8c629260a142 \ - --hash=sha256:5cca36a194a4eb4e2ed6be36923d3cffd03dcdf477515dea687185506583d4c9 \ - --hash=sha256:5f11a1526ebd0dee85e7b1e39e39a0cc0d9d03fb527f56d8457f6df48a10dc0c \ - --hash=sha256:61c7bbf432f09ee44b1ccaa24896d21075e533cd01477966a5ff5a71d88b2f56 \ - --hash=sha256:639978bccb04c42677db43c79bdaa23785dc7f9b83bfd87570da8207872f1ce5 \ - --hash=sha256:63e7968ff83da2eb6fdda967483a7a023aa497d85ad8f05c3ad9b1f2e8c84987 \ - --hash=sha256:664cdc733bc87449fe781dbb1f309090966c11cc0c0cd7b84af956a02a8a4729 \ - --hash=sha256:67ed8a40665b84d161bae3181aa2763beea3747f748bca5874b4af4d75998f87 \ - --hash=sha256:67f779374c6b9753ae0a0195a892a1c234ce8416e4448fe1e9f34746482070a7 \ - --hash=sha256:6854f8bd8a1536f8a1d9a3655e6354faa6406621cf857dc27b681b69860645c7 \ - --hash=sha256:696ea9e87442467819ac22394ca36cb3d01848dad1be6fac3fb612d3bd5a12cf \ - --hash=sha256:6ef80aeac414f33c24b3815ecd560cee272786c3adfa5f31316d8b349bfade28 \ - --hash=sha256:72ac9762a9f8ce74c9eed4a4e74306f2f18613a6b71fa065495a67ac227b3056 \ - --hash=sha256:75133890e40d229d6c5837b0312abbe5bac1c342452cf0e12523477cd3aa21e7 \ - --hash=sha256:7605c1c32c3d6e8c990dd28a0970a3cbbf1429d5b92279e37fda05fb0c92190e \ - --hash=sha256:773e27b62920199c6197130632c18fb7ead3257fce1ffb7d286912e56ddb79e0 \ - --hash=sha256:795f61bcaf8770e1b37eec24edf9771b307df3af74d1d6f27d812e15a9ff3872 \ - --hash=sha256:79d5bfa9c1b455336f52343130b2067164040604e41f6dc4d8313867ed540079 \ - --hash=sha256:7a62cc23d754bb449d63ff35334acc9f5c02e6dae830d78dab4dd12b78a524f4 \ - --hash=sha256:7be701c24e7f843e6788353c055d806e8bd8466b52907bafe5d13ec6a6dbaecd \ - --hash=sha256:7ca56ebc2c474e8f3d5761debfd9283b8b18c76c4fc0967b74aeafba1f5647f9 \ - --hash=sha256:7ce1a171ec325192c6a636b64c94418e71a1964f56d002cc28122fceff0b6121 \ - --hash=sha256:891f7f991a68d20c75cb13c5c9142b2a3f9eb161f1f12a9489c82172d1f133c0 \ - --hash=sha256:8f82125bc7203c5ae8633a7d5d20bcfdff0ba33e436e4ab0abc026a53a8960b7 \ - --hash=sha256:91505d3ddebf268bb1588eb0f63821f738d20e1e7f05d3c647a5ca900288760b \ - --hash=sha256:942a5d73f739ad7c452bf739a62a0f83e2578afd6b8e5406308731f4ce78b16d \ - --hash=sha256:9454b8d8200ec99a224df8854786262b1bd6461f4280064c807303c642c05e76 \ - --hash=sha256:9459e6892f59ecea2e2584ee1058f5d8f629446eab52ba2305ae13a32a059530 \ - --hash=sha256:9776af1aad5a4b4a1317242ee2bea51da54b2a7b7b48674be736d463c999f37d \ - --hash=sha256:97dac543661e84a284502e0cf8a67b5c711b0ad5fb661d1bd505c02f8cf716d7 \ - --hash=sha256:98a3912194c079ef37e716ed228ae0dcb960992100461b704aea4e93af6b0bb9 \ - --hash=sha256:9b4a3bd174cc9cdaa1afbc4620c049038b441d6ba07629d89a83b408e54c35cd \ - --hash=sha256:9c886b481aefdf818ad44846145f6eaf373a20d200b5ce1a5c8e1bc2d8745410 \ - --hash=sha256:9ceaf423b50ecfc23ca00b7f50b64baba85fb3fb91c53e2c9d00bc86150c7e40 \ - --hash=sha256:a11a96c3b3f7551c8a8109aa65e8594e551d5a84c76bf950da33d0fb6dfafab7 \ - --hash=sha256:a3bcdde35d82ff385f4ede021df801b5c4a5bcdfb61ea87caabcebfc4945dc1b \ - --hash=sha256:a7fb111eef4d05909b82152721a59c1b14d0f365e2be4c742a473c5d7372f4f5 \ - --hash=sha256:a81e1196f0a5b4167a8dafe3a66aa67c4addac1b22dc47947abd5d5c7a3f24b5 \ - --hash=sha256:a8c9b7f16b63e65bbba889acb436a1034a82d34fa09752d754f88d708eca80e1 \ - --hash=sha256:a8ef956fce64c8551221f395ba21d0724fed6b9b6242ca4f2f7beb4ce2f41997 \ - --hash=sha256:ab339536aa798b1e17750733663d272038bf28069761d5be57cb4a9b0137b4f8 \ - --hash=sha256:ac7ba71f9561cd7d7b55e1ea5511543c0282e2b6450f122672a2694621d63b7e \ - --hash=sha256:aea53d51859b6c64e7c51d522c03cc2c48b9b5d6172126854cc7f01aa11f52bc \ - --hash=sha256:aea7c06667b987787c7d1f5e1dfcd70419b711cdb47d6b4bb4ad4b76777a0563 \ - --hash=sha256:aefe1a7cb852fa61150fcb21a8c8fcea7b58c4cb11fbe59c97a0a4b31cae3c8c \ - --hash=sha256:b0989737a3ba6cf2a16efb857fb0dfa20bc5c542737fddb6d893fde48be45433 \ - --hash=sha256:b108134b9667bcd71236c5a02aad5ddd073e372fb5d48ea74853e009fe38acb6 \ - --hash=sha256:b12cb6527599808ada9eb2cd6e0e7d3d8f13fe7bbb01c6311255a15ded4c7ab4 \ - --hash=sha256:b5aff6f3e818e6bdbbb38e5967520f174b18f539c2b9de867b1e7fde6f8d95a4 \ - --hash=sha256:b67319b4aef1a6c56576ff544b67a2a6fbd7eaee485b241cabf53115e8908b8f \ - --hash=sha256:b7c86884ad23d61b025989d99bfdd92a7351de956e01c61307cb87035960bcb1 \ - --hash=sha256:b92b69441d1bd39f4940f9eadfa417a25862242ca2c396b406f9272ef09cdcaa \ - --hash=sha256:bcb7a1096b4b6b24ce1ac24d4942ad98f983cd3810f9711bcd0293f43a9d8b9f \ - --hash=sha256:bda3ea44c39eb74e2488297bb39d47186ed01342f0022c8ff407c250ac3f498e \ - --hash=sha256:be2ba4c3c5b7900246a8f866580700ef0d538f2ca32535e991027bdaba944063 \ - --hash=sha256:c5681160758d3f6ac5b4fea370495c48aac0989d6a0f01bb9a72ad8ef5ab75c4 \ - --hash=sha256:c5d32f5284012deaccd37da1e2cd42f081feaa76981f0eaa474351b68df813c5 \ - --hash=sha256:c6364038c519dffdbe07e3cf42e6a7f8b90c275d4d1617a69bb59734c1a2d571 \ - --hash=sha256:c70e93fba207106cb16bf852e421c37bbded92acd5964390aad07cb50d60f5cf \ - --hash=sha256:ca755eebf0d9e62d6cb013f1261e510317a41bf4650f22963474a663fdfe02aa \ - --hash=sha256:cccd007d5c95279e529c146d095f1d39ac05139de26c098166c4beb9374b0f4d \ - --hash=sha256:ce31158630a6ac85bddd6b830cffd46085ff90498b397bd0a259f59d27a12188 \ - --hash=sha256:ce9c671845de9699904b1e9df95acfe8dfc183f2310f163cdaa91a3535af95de \ - --hash=sha256:d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd \ - --hash=sha256:d2ed1b3cb9ff1c10e6e8b00941bb2e5bb568b307bfc6b17dffbbe8be5eecba86 \ - --hash=sha256:d5663bc1b471c79f5c833cffbc9b87d7bf13f87e055a5c86c363ccd2348d7e82 \ - --hash=sha256:d90b729fd2732df28130c064aac9bb8aff14ba20baa4aee7bd0795ff1187545f \ - --hash=sha256:dc0af80267edc68adf85f2a5d9be1cdf062f973db6790c1d065e45025fa26140 \ - --hash=sha256:de5b4e1088523e2b6f730d0509a9a813355b7f5659d70eb4f319c76beea2e250 \ - --hash=sha256:de6f6bb8a7840c7bf216fb83eec4e2f79f7325eca8858167b68708b929ab2172 \ - --hash=sha256:df53330a3bff250f10472ce96a9af28628ff1f4efc51ccba351a8820bca2a8ba \ - --hash=sha256:e094ec83694b59d263802ed03a8384594fcce477ce484b0cbcd0008a211ca751 \ - --hash=sha256:e794f698ae4c5084414efea0f5cc9f4ac562ec02d66e1484ff822ef97c2cadff \ - --hash=sha256:e7bc6df34d42322c5289e37e9971d6ed114e3776b45fa879f734bded9d1fea9c \ - --hash=sha256:eaf24066ad0b30917186420d51e2e3edf4b0e2ea68d8cd885b14dc8afdcf6556 \ - --hash=sha256:ecf4c4b83f1ab3d5a7ace10bafcb6f11df6156857a3c418244cef41ca9fa3e44 \ - --hash=sha256:ef5a7178fcc73b7d8c07229e89f8eb45b2908a9238eb90dcfc46571ccf0383b8 \ - --hash=sha256:f5cb182f6396706dc6cc1896dd02b1c889d644c081b0cdec38747573db88a7d7 \ - --hash=sha256:fa0e294046de09acd6146be0ed6727d1f42ded4ce3ea1e9a19c11b6774eea27c \ - --hash=sha256:fb54f7c6bafaa808f27166569b1511fc42701a7713858dddc08afdde9746849e \ - --hash=sha256:fd3be6481ef54b8cfd0e1e953323b7aa9d9789b94842d0e5b142ef4bb7999539 +license-expression==30.4.3 \ + --hash=sha256:49f439fea91c4d1a642f9f2902b58db1d42396c5e331045f41ce50df9b40b1f2 \ + --hash=sha256:fd3db53418133e0eef917606623bc125fbad3d1225ba8d23950999ee87c99280 # via - # -r requirements-actions.in - # gcovr + # reuse + # spdx-tools +lxml==6.0.0 \ + --hash=sha256:013090383863b72c62a702d07678b658fa2567aa58d373d963cca245b017e065 \ + --hash=sha256:032e65120339d44cdc3efc326c9f660f5f7205f3a535c1fdbf898b29ea01fb72 \ + --hash=sha256:048a930eb4572829604982e39a0c7289ab5dc8abc7fc9f5aabd6fbc08c154e93 \ + --hash=sha256:04d67ceee6db4bcb92987ccb16e53bef6b42ced872509f333c04fb58a3315256 \ + --hash=sha256:059c4cbf3973a621b62ea3132934ae737da2c132a788e6cfb9b08d63a0ef73f9 \ + --hash=sha256:0e32698462aacc5c1cf6bdfebc9c781821b7e74c79f13e5ffc8bfe27c42b1abf \ + --hash=sha256:1676b56d48048a62ef77a250428d1f31f610763636e0784ba67a9740823988ca \ + --hash=sha256:17f090a9bc0ce8da51a5632092f98a7e7f84bca26f33d161a98b57f7fb0004ca \ + --hash=sha256:185efc2fed89cdd97552585c624d3c908f0464090f4b91f7d92f8ed2f3b18f54 \ + --hash=sha256:1fa377b827ca2023244a06554c6e7dc6828a10aaf74ca41965c5d8a4925aebb4 \ + --hash=sha256:2181e4b1d07dde53986023482673c0f1fba5178ef800f9ab95ad791e8bdded6a \ + --hash=sha256:219e0431ea8006e15005767f0351e3f7f9143e793e58519dc97fe9e07fae5563 \ + --hash=sha256:21db1ec5525780fd07251636eb5f7acb84003e9382c72c18c542a87c416ade03 \ + --hash=sha256:246b40f8a4aec341cbbf52617cad8ab7c888d944bfe12a6abd2b1f6cfb6f6082 \ + --hash=sha256:2793a627e95d119e9f1e19720730472f5543a6d84c50ea33313ce328d870f2dd \ + --hash=sha256:2930aa001a3776c3e2601cb8e0a15d21b8270528d89cc308be4843ade546b9ab \ + --hash=sha256:2ae06fbab4f1bb7db4f7c8ca9897dc8db4447d1a2b9bee78474ad403437bcc29 \ + --hash=sha256:2b4790b558bee331a933e08883c423f65bbcd07e278f91b2272489e31ab1e2b4 \ + --hash=sha256:2cfcf84f1defed7e5798ef4f88aa25fcc52d279be731ce904789aa7ccfb7e8d2 \ + --hash=sha256:2dd1cc3ea7e60bfb31ff32cafe07e24839df573a5e7c2d33304082a5019bcd58 \ + --hash=sha256:2f34687222b78fff795feeb799a7d44eca2477c3d9d3a46ce17d51a4f383e32e \ + --hash=sha256:310b719b695b3dd442cdfbbe64936b2f2e231bb91d998e99e6f0daf991a3eba3 \ + --hash=sha256:34190a1ec4f1e84af256495436b2d196529c3f2094f0af80202947567fdbf2e7 \ + --hash=sha256:35bc626eec405f745199200ccb5c6b36f202675d204aa29bb52e27ba2b71dea8 \ + --hash=sha256:36531f81c8214e293097cd2b7873f178997dae33d3667caaae8bdfb9666b76c0 \ + --hash=sha256:390240baeb9f415a82eefc2e13285016f9c8b5ad71ec80574ae8fa9605093cd7 \ + --hash=sha256:40442e2a4456e9910875ac12951476d36c0870dcb38a68719f8c4686609897c4 \ + --hash=sha256:4337e4aec93b7c011f7ee2e357b0d30562edd1955620fdd4aeab6aacd90d43c5 \ + --hash=sha256:43cfbb7db02b30ad3926e8fceaef260ba2fb7df787e38fa2df890c1ca7966c3b \ + --hash=sha256:43fe5af2d590bf4691531b1d9a2495d7aab2090547eaacd224a3afec95706d76 \ + --hash=sha256:46b9ed911f36bfeb6338e0b482e7fe7c27d362c52fde29f221fddbc9ee2227e7 \ + --hash=sha256:4d23854ecf381ab1facc8f353dcd9adeddef3652268ee75297c1164c987c11dc \ + --hash=sha256:4eb114a0754fd00075c12648d991ec7a4357f9cb873042cc9a77bf3a7e30c9db \ + --hash=sha256:4ee56288d0df919e4aac43b539dd0e34bb55d6a12a6562038e8d6f3ed07f9e36 \ + --hash=sha256:51a5e4c61a4541bd1cd3ba74766d0c9b6c12d6a1a4964ef60026832aac8e79b3 \ + --hash=sha256:522fe7abb41309e9543b0d9b8b434f2b630c5fdaf6482bee642b34c8c70079c8 \ + --hash=sha256:54c4855eabd9fc29707d30141be99e5cd1102e7d2258d2892314cf4c110726c3 \ + --hash=sha256:5592401cdf3dc682194727c1ddaa8aa0f3ddc57ca64fd03226a430b955eab6f6 \ + --hash=sha256:58ffd35bd5425c3c3b9692d078bf7ab851441434531a7e517c4984d5634cd65b \ + --hash=sha256:5967fe415b1920a3877a4195e9a2b779249630ee49ece22021c690320ff07452 \ + --hash=sha256:5fcd7d3b1d8ecb91445bd71b9c88bdbeae528fefee4f379895becfc72298d181 \ + --hash=sha256:63b634facdfbad421d4b61c90735688465d4ab3a8853ac22c76ccac2baf98d97 \ + --hash=sha256:690b20e3388a7ec98e899fd54c924e50ba6693874aa65ef9cb53de7f7de9d64a \ + --hash=sha256:6da7cd4f405fd7db56e51e96bff0865b9853ae70df0e6720624049da76bde2da \ + --hash=sha256:7488a43033c958637b1a08cddc9188eb06d3ad36582cebc7d4815980b47e27ef \ + --hash=sha256:74e748012f8c19b47f7d6321ac929a9a94ee92ef12bc4298c47e8b7219b26541 \ + --hash=sha256:78718d8454a6e928470d511bf8ac93f469283a45c354995f7d19e77292f26108 \ + --hash=sha256:7bf61bc4345c1895221357af8f3e89f8c103d93156ef326532d35c707e2fb19d \ + --hash=sha256:7da298e1659e45d151b4028ad5c7974917e108afb48731f4ed785d02b6818994 \ + --hash=sha256:84ef591495ffd3f9dcabffd6391db7bb70d7230b5c35ef5148354a134f56f2be \ + --hash=sha256:85b14a4689d5cff426c12eefe750738648706ea2753b20c2f973b2a000d3d261 \ + --hash=sha256:8a2e76efbf8772add72d002d67a4c3d0958638696f541734304c7f28217a9cab \ + --hash=sha256:8cb26f51c82d77483cdcd2b4a53cda55bbee29b3c2f3ddeb47182a2a9064e4eb \ + --hash=sha256:8db5dc617cb937ae17ff3403c3a70a7de9df4852a046f93e71edaec678f721d0 \ + --hash=sha256:9ab542c91f5a47aaa58abdd8ea84b498e8e49fe4b883d67800017757a3eb78e8 \ + --hash=sha256:9da022c14baeec36edfcc8daf0e281e2f55b950249a455776f0d1adeeada4734 \ + --hash=sha256:9f4b481b6cc3a897adb4279216695150bbe7a44c03daba3c894f49d2037e0a24 \ + --hash=sha256:a52a4704811e2623b0324a18d41ad4b9fabf43ce5ff99b14e40a520e2190c851 \ + --hash=sha256:a55da151d0b0c6ab176b4e761670ac0e2667817a1e0dadd04a01d0561a219349 \ + --hash=sha256:a674c0948789e9136d69065cc28009c1b1874c6ea340253db58be7622ce6398f \ + --hash=sha256:ae74f7c762270196d2dda56f8dd7309411f08a4084ff2dfcc0b095a218df2e06 \ + --hash=sha256:afd27d8629ae94c5d863e32ab0e1d5590371d296b87dae0a751fb22bf3685741 \ + --hash=sha256:b2d71cdefda9424adff9a3607ba5bbfc60ee972d73c21c7e3c19e71037574816 \ + --hash=sha256:b34339898bb556a2351a1830f88f751679f343eabf9cf05841c95b165152c9e7 \ + --hash=sha256:b372d10d17a701b0945f67be58fae4664fd056b85e0ff0fbc1e6c951cdbc0512 \ + --hash=sha256:b3c98d5b24c6095e89e03d65d5c574705be3d49c0d8ca10c17a8a4b5201b72f5 \ + --hash=sha256:b8dd6dd0e9c1992613ccda2bcb74fc9d49159dbe0f0ca4753f37527749885c25 \ + --hash=sha256:bd5913b4972681ffc9718bc2d4c53cde39ef81415e1671ff93e9aa30b46595e7 \ + --hash=sha256:c0b5fa5eda84057a4f1bbb4bb77a8c28ff20ae7ce211588d698ae453e13c6281 \ + --hash=sha256:c16304bba98f48a28ae10e32a8e75c349dd742c45156f297e16eeb1ba9287a1f \ + --hash=sha256:c24b8efd9c0f62bad0439283c2c795ef916c5a6b75f03c17799775c7ae3c0c9e \ + --hash=sha256:c2a5e8d207311a0170aca0eb6b160af91adc29ec121832e4ac151a57743a1e1e \ + --hash=sha256:c352fc8f36f7e9727db17adbf93f82499457b3d7e5511368569b4c5bd155a922 \ + --hash=sha256:c86df1c9af35d903d2b52d22ea3e66db8058d21dc0f59842ca5deb0595921141 \ + --hash=sha256:ca50bd612438258a91b5b3788c6621c1f05c8c478e7951899f492be42defc0da \ + --hash=sha256:d18a25b19ca7307045581b18b3ec9ead2b1db5ccd8719c291f0cd0a5cec6cb81 \ + --hash=sha256:d4f0c66df4386b75d2ab1e20a489f30dc7fd9a06a896d64980541506086be1f1 \ + --hash=sha256:d7ae472f74afcc47320238b5dbfd363aba111a525943c8a34a1b657c6be934c3 \ + --hash=sha256:db0efd6bae1c4730b9c863fc4f5f3c0fa3e8f05cae2c44ae141cb9dfc7d091dc \ + --hash=sha256:dbdd7679a6f4f08152818043dbb39491d1af3332128b3752c3ec5cebc0011a72 \ + --hash=sha256:e0b1520ef900e9ef62e392dd3d7ae4f5fa224d1dd62897a792cf353eb20b6cae \ + --hash=sha256:e2030956cf4886b10be9a0285c6802e078ec2391e1dd7ff3eb509c2c95a69b76 \ + --hash=sha256:e35e8aaaf3981489f42884b59726693de32dabfc438ac10ef4eb3409961fd402 \ + --hash=sha256:e380e85b93f148ad28ac15f8117e2fd8e5437aa7732d65e260134f83ce67911b \ + --hash=sha256:edf6e4c8fe14dfe316939711e3ece3f9a20760aabf686051b537a7562f4da91a \ + --hash=sha256:f3389924581d9a770c6caa4df4e74b606180869043b9073e2cec324bad6e306e \ + --hash=sha256:f64ccf593916e93b8d36ed55401bb7fe9c7d5de3180ce2e10b08f82a8f397316 \ + --hash=sha256:f720a14aa102a38907c6d5030e3d66b3b680c3e6f6bc95473931ea3c00c59967 \ + --hash=sha256:f8d19565ae3eb956d84da3ef367aa7def14a2735d05bd275cd54c0301f0d0d6c \ + --hash=sha256:f97487996a39cb18278ca33f7be98198f278d0bc3c5d0fd4d7b3d63646ca3c8a + # via gcovr markupsafe==3.0.2 \ --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ @@ -658,109 +647,100 @@ mccabe==0.7.0 \ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e # via pylint -mock==5.2.0 \ - --hash=sha256:4e460e818629b4b173f32d08bf30d3af8123afbb8e04bb5707a1fd4799e503f0 \ - --hash=sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f - # via -r requirements-actions.in -msgpack==1.1.0 ; sys_platform != 'win32' \ - --hash=sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b \ - --hash=sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf \ - --hash=sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca \ - --hash=sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330 \ - --hash=sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f \ - --hash=sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f \ - --hash=sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39 \ - --hash=sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247 \ - --hash=sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b \ - --hash=sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c \ - --hash=sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7 \ - --hash=sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044 \ - --hash=sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6 \ - --hash=sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b \ - --hash=sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0 \ - --hash=sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2 \ - --hash=sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468 \ - --hash=sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7 \ - --hash=sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734 \ - --hash=sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434 \ - --hash=sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325 \ - --hash=sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1 \ - --hash=sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846 \ - --hash=sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88 \ - --hash=sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420 \ - --hash=sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e \ - --hash=sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2 \ - --hash=sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59 \ - --hash=sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb \ - --hash=sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68 \ - --hash=sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915 \ - --hash=sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f \ - --hash=sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701 \ - --hash=sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b \ - --hash=sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d \ - --hash=sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa \ - --hash=sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d \ - --hash=sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd \ - --hash=sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc \ - --hash=sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48 \ - --hash=sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb \ - --hash=sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74 \ - --hash=sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b \ - --hash=sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346 \ - --hash=sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e \ - --hash=sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6 \ - --hash=sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5 \ - --hash=sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f \ - --hash=sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5 \ - --hash=sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b \ - --hash=sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c \ - --hash=sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f \ - --hash=sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec \ - --hash=sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8 \ - --hash=sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5 \ - --hash=sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d \ - --hash=sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e \ - --hash=sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e \ - --hash=sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870 \ - --hash=sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f \ - --hash=sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96 \ - --hash=sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c \ - --hash=sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd \ - --hash=sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788 +msgpack==1.1.1 ; sys_platform != 'win32' \ + --hash=sha256:196a736f0526a03653d829d7d4c5500a97eea3648aebfd4b6743875f28aa2af8 \ + --hash=sha256:1abfc6e949b352dadf4bce0eb78023212ec5ac42f6abfd469ce91d783c149c2a \ + --hash=sha256:1b13fe0fb4aac1aa5320cd693b297fe6fdef0e7bea5518cbc2dd5299f873ae90 \ + --hash=sha256:1d75f3807a9900a7d575d8d6674a3a47e9f227e8716256f35bc6f03fc597ffbf \ + --hash=sha256:2fbbc0b906a24038c9958a1ba7ae0918ad35b06cb449d398b76a7d08470b0ed9 \ + --hash=sha256:33be9ab121df9b6b461ff91baac6f2731f83d9b27ed948c5b9d1978ae28bf157 \ + --hash=sha256:353b6fc0c36fde68b661a12949d7d49f8f51ff5fa019c1e47c87c4ff34b080ed \ + --hash=sha256:36043272c6aede309d29d56851f8841ba907a1a3d04435e43e8a19928e243c1d \ + --hash=sha256:3765afa6bd4832fc11c3749be4ba4b69a0e8d7b728f78e68120a157a4c5d41f0 \ + --hash=sha256:3a89cd8c087ea67e64844287ea52888239cbd2940884eafd2dcd25754fb72232 \ + --hash=sha256:40eae974c873b2992fd36424a5d9407f93e97656d999f43fca9d29f820899084 \ + --hash=sha256:4147151acabb9caed4e474c3344181e91ff7a388b888f1e19ea04f7e73dc7ad5 \ + --hash=sha256:435807eeb1bc791ceb3247d13c79868deb22184e1fc4224808750f0d7d1affc1 \ + --hash=sha256:4835d17af722609a45e16037bb1d4d78b7bdf19d6c0128116d178956618c4e88 \ + --hash=sha256:4a28e8072ae9779f20427af07f53bbb8b4aa81151054e882aee333b158da8752 \ + --hash=sha256:4d3237b224b930d58e9d83c81c0dba7aacc20fcc2f89c1e5423aa0529a4cd142 \ + --hash=sha256:4df2311b0ce24f06ba253fda361f938dfecd7b961576f9be3f3fbd60e87130ac \ + --hash=sha256:4fd6b577e4541676e0cc9ddc1709d25014d3ad9a66caa19962c4f5de30fc09ef \ + --hash=sha256:500e85823a27d6d9bba1d057c871b4210c1dd6fb01fbb764e37e4e8847376323 \ + --hash=sha256:5692095123007180dca3e788bb4c399cc26626da51629a31d40207cb262e67f4 \ + --hash=sha256:5fd1b58e1431008a57247d6e7cc4faa41c3607e8e7d4aaf81f7c29ea013cb458 \ + --hash=sha256:61abccf9de335d9efd149e2fff97ed5974f2481b3353772e8e2dd3402ba2bd57 \ + --hash=sha256:61e35a55a546a1690d9d09effaa436c25ae6130573b6ee9829c37ef0f18d5e78 \ + --hash=sha256:6640fd979ca9a212e4bcdf6eb74051ade2c690b862b679bfcb60ae46e6dc4bfd \ + --hash=sha256:6d489fba546295983abd142812bda76b57e33d0b9f5d5b71c09a583285506f69 \ + --hash=sha256:6f64ae8fe7ffba251fecb8408540c34ee9df1c26674c50c4544d72dbf792e5ce \ + --hash=sha256:71ef05c1726884e44f8b1d1773604ab5d4d17729d8491403a705e649116c9558 \ + --hash=sha256:77b79ce34a2bdab2594f490c8e80dd62a02d650b91a75159a63ec413b8d104cd \ + --hash=sha256:78426096939c2c7482bf31ef15ca219a9e24460289c00dd0b94411040bb73ad2 \ + --hash=sha256:79c408fcf76a958491b4e3b103d1c417044544b68e96d06432a189b43d1215c8 \ + --hash=sha256:7a17ac1ea6ec3c7687d70201cfda3b1e8061466f28f686c24f627cae4ea8efd0 \ + --hash=sha256:7da8831f9a0fdb526621ba09a281fadc58ea12701bc709e7b8cbc362feabc295 \ + --hash=sha256:870b9a626280c86cff9c576ec0d9cbcc54a1e5ebda9cd26dab12baf41fee218c \ + --hash=sha256:88d1e966c9235c1d4e2afac21ca83933ba59537e2e2727a999bf3f515ca2af26 \ + --hash=sha256:88daaf7d146e48ec71212ce21109b66e06a98e5e44dca47d853cbfe171d6c8d2 \ + --hash=sha256:8a8b10fdb84a43e50d38057b06901ec9da52baac6983d3f709d8507f3889d43f \ + --hash=sha256:8b17ba27727a36cb73aabacaa44b13090feb88a01d012c0f4be70c00f75048b4 \ + --hash=sha256:8b65b53204fe1bd037c40c4148d00ef918eb2108d24c9aaa20bc31f9810ce0a8 \ + --hash=sha256:8ddb2bcfd1a8b9e431c8d6f4f7db0773084e107730ecf3472f1dfe9ad583f3d9 \ + --hash=sha256:96decdfc4adcbc087f5ea7ebdcfd3dee9a13358cae6e81d54be962efc38f6338 \ + --hash=sha256:996f2609ddf0142daba4cefd767d6db26958aac8439ee41db9cc0db9f4c4c3a6 \ + --hash=sha256:9d592d06e3cc2f537ceeeb23d38799c6ad83255289bb84c2e5792e5a8dea268a \ + --hash=sha256:a32747b1b39c3ac27d0670122b57e6e57f28eefb725e0b625618d1b59bf9d1e0 \ + --hash=sha256:a494554874691720ba5891c9b0b39474ba43ffb1aaf32a5dac874effb1619e1a \ + --hash=sha256:a8ef6e342c137888ebbfb233e02b8fbd689bb5b5fcc59b34711ac47ebd504478 \ + --hash=sha256:ae497b11f4c21558d95de9f64fff7053544f4d1a17731c866143ed6bb4591238 \ + --hash=sha256:b1ce7f41670c5a69e1389420436f41385b1aa2504c3b0c30620764b15dded2e7 \ + --hash=sha256:b8f93dcddb243159c9e4109c9750ba5b335ab8d48d9522c5308cd05d7e3ce600 \ + --hash=sha256:ba0c325c3f485dc54ec298d8b024e134acf07c10d494ffa24373bea729acf704 \ + --hash=sha256:bb29aaa613c0a1c40d1af111abf025f1732cab333f96f285d6a93b934738a68a \ + --hash=sha256:bba1be28247e68994355e028dcd668316db30c1f758d3241a7b903ac78dcd285 \ + --hash=sha256:cb643284ab0ed26f6957d969fe0dd8bb17beb567beb8998140b5e38a90974f6c \ + --hash=sha256:d182dac0221eb8faef2e6f44701812b467c02674a322c739355c39e94730cdbf \ + --hash=sha256:d275a9e3c81b1093c060c3837e580c37f47c51eca031f7b5fb76f7b8470f5f9b \ + --hash=sha256:d8b55ea20dc59b181d3f47103f113e6f28a5e1c89fd5b67b9140edb442ab67f2 \ + --hash=sha256:da8f41e602574ece93dbbda1fab24650d6bf2a24089f9e9dbb4f5730ec1e58ad \ + --hash=sha256:e4141c5a32b5e37905b5940aacbc59739f036930367d7acce7a64e4dec1f5e0b \ + --hash=sha256:f5be6b6bc52fad84d010cb45433720327ce886009d862f46b26d4d154001994b \ + --hash=sha256:f6d58656842e1b2ddbe07f43f56b10a60f2ba5826164910968f5933e5178af75 # via python-can -mypy==1.16.0 \ - --hash=sha256:021a68568082c5b36e977d54e8f1de978baf401a33884ffcea09bd8e88a98f4c \ - --hash=sha256:089bedc02307c2548eb51f426e085546db1fa7dd87fbb7c9fa561575cf6eb1ff \ - --hash=sha256:09a8da6a0ee9a9770b8ff61b39c0bb07971cda90e7297f4213741b48a0cc8d93 \ - --hash=sha256:0b07e107affb9ee6ce1f342c07f51552d126c32cd62955f59a7db94a51ad12c0 \ - --hash=sha256:15486beea80be24ff067d7d0ede673b001d0d684d0095803b3e6e17a886a2a92 \ - --hash=sha256:29e1499864a3888bca5c1542f2d7232c6e586295183320caa95758fc84034031 \ - --hash=sha256:2e7e0ad35275e02797323a5aa1be0b14a4d03ffdb2e5f2b0489fa07b89c67b21 \ - --hash=sha256:4086883a73166631307fdd330c4a9080ce24913d4f4c5ec596c601b3a4bdd777 \ - --hash=sha256:54066fed302d83bf5128632d05b4ec68412e1f03ef2c300434057d66866cea4b \ - --hash=sha256:55f9076c6ce55dd3f8cd0c6fff26a008ca8e5131b89d5ba6d86bd3f47e736eeb \ - --hash=sha256:6a2322896003ba66bbd1318c10d3afdfe24e78ef12ea10e2acd985e9d684a666 \ - --hash=sha256:7909541fef256527e5ee9c0a7e2aeed78b6cda72ba44298d1334fe7881b05c5c \ - --hash=sha256:82d056e6faa508501af333a6af192c700b33e15865bda49611e3d7d8358ebea2 \ - --hash=sha256:84b94283f817e2aa6350a14b4a8fb2a35a53c286f97c9d30f53b63620e7af8ab \ - --hash=sha256:936ccfdd749af4766be824268bfe22d1db9eb2f34a3ea1d00ffbe5b5265f5491 \ - --hash=sha256:9f826aaa7ff8443bac6a494cf743f591488ea940dd360e7dd330e30dd772a5ab \ - --hash=sha256:a5fcfdb7318c6a8dd127b14b1052743b83e97a970f0edb6c913211507a255e20 \ - --hash=sha256:a7e32297a437cc915599e0578fa6bc68ae6a8dc059c9e009c628e1c47f91495d \ - --hash=sha256:a9e056237c89f1587a3be1a3a70a06a698d25e2479b9a2f57325ddaaffc3567b \ - --hash=sha256:afe420c9380ccec31e744e8baff0d406c846683681025db3531b32db56962d52 \ - --hash=sha256:b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8 \ - --hash=sha256:bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec \ - --hash=sha256:c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13 \ - --hash=sha256:c6fb60cbd85dc65d4d63d37cb5c86f4e3a301ec605f606ae3a9173e5cf34997b \ - --hash=sha256:d045d33c284e10a038f5e29faca055b90eee87da3fc63b8889085744ebabb5a1 \ - --hash=sha256:e71d6f0090c2256c713ed3d52711d01859c82608b5d68d4fa01a3fe30df95571 \ - --hash=sha256:eb14a4a871bb8efb1e4a50360d4e3c8d6c601e7a31028a2c79f9bb659b63d730 \ - --hash=sha256:eb5fbc8063cb4fde7787e4c0406aa63094a34a2daf4673f359a1fb64050e9cb2 \ - --hash=sha256:f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090 \ - --hash=sha256:f2ed0e0847a80655afa2c121835b848ed101cc7b8d8d6ecc5205aedc732b1436 \ - --hash=sha256:f56236114c425620875c7cf71700e3d60004858da856c6fc78998ffe767b73d3 \ - --hash=sha256:feec38097f71797da0231997e0de3a58108c51845399669ebc532c815f93866b +mypy==1.16.1 \ + --hash=sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359 \ + --hash=sha256:08e850ea22adc4d8a4014651575567b0318ede51e8e9fe7a68f25391af699507 \ + --hash=sha256:09aa4f91ada245f0a45dbc47e548fd94e0dd5a8433e0114917dc3b526912a30c \ + --hash=sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f \ + --hash=sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15 \ + --hash=sha256:1256688e284632382f8f3b9e2123df7d279f603c561f099758e66dd6ed4e8bd6 \ + --hash=sha256:13c7cd5b1cb2909aa318a90fd1b7e31f17c50b242953e7dd58345b2a814f6383 \ + --hash=sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b \ + --hash=sha256:211287e98e05352a2e1d4e8759c5490925a7c784ddc84207f4714822f8cf99b6 \ + --hash=sha256:22d76a63a42619bfb90122889b903519149879ddbf2ba4251834727944c8baca \ + --hash=sha256:2c7ce0662b6b9dc8f4ed86eb7a5d505ee3298c04b40ec13b30e572c0e5ae17c4 \ + --hash=sha256:352025753ef6a83cb9e7f2427319bb7875d1fdda8439d1e23de12ab164179574 \ + --hash=sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79 \ + --hash=sha256:472e4e4c100062488ec643f6162dd0d5208e33e2f34544e1fc931372e806c0cc \ + --hash=sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee \ + --hash=sha256:58e07fb958bc5d752a280da0e890c538f1515b79a65757bbdc54252ba82e0b40 \ + --hash=sha256:5e198ab3f55924c03ead626ff424cad1732d0d391478dfbf7bb97b34602395da \ + --hash=sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37 \ + --hash=sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9 \ + --hash=sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab \ + --hash=sha256:7fc688329af6a287567f45cc1cefb9db662defeb14625213a5b7da6e692e2069 \ + --hash=sha256:86042bbf9f5a05ea000d3203cf87aa9d0ccf9a01f73f71c58979eb9249f46d72 \ + --hash=sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536 \ + --hash=sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d \ + --hash=sha256:b4f0fed1022a63c6fec38f28b7fc77fca47fd490445c69d0a66266c59dd0b88a \ + --hash=sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be \ + --hash=sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438 \ + --hash=sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd \ + --hash=sha256:ea16e2a7d2714277e349e24d19a782a663a34ed60864006e8585db08f8ad1782 \ + --hash=sha256:ea7469ee5902c95542bea7ee545f7006508c65c8c54b06dc2c92676ce526f3ea \ + --hash=sha256:f895078594d918f93337a505f8add9bd654d1a24962b4c6ed9390e12531eb31b \ + --hash=sha256:ff9fa5b16e4c1364eb89a4d16bcda9987f05d39604e1e6c35378a2987c1aac2d # via -r requirements-actions.in mypy-extensions==1.1.0 \ --hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \ @@ -801,14 +781,13 @@ pluggy==1.6.0 \ ply==3.11 \ --hash=sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3 \ --hash=sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce - # via -r requirements-actions.in + # via + # -r requirements-actions.in + # spdx-tools polib==1.2.0 \ --hash=sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d \ --hash=sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b # via sphinx-lint -progress==1.6 \ - --hash=sha256:c9c86e98b5c03fa1fe11e3b67c1feda4788b8d0fe7336c2ff7d5644ccfba34cd - # via -r requirements-actions.in psutil==7.0.0 \ --hash=sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25 \ --hash=sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e \ @@ -833,14 +812,16 @@ pyelftools==0.32 \ --hash=sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738 \ --hash=sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5 # via -r requirements-actions.in -pygithub==2.6.1 \ - --hash=sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3 \ - --hash=sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf +pygithub==2.8.1 \ + --hash=sha256:23a0a5bca93baef082e03411bf0ce27204c32be8bfa7abc92fe4a3e132936df0 \ + --hash=sha256:341b7c78521cb07324ff670afd1baa2bf5c286f8d9fd302c1798ba594a5400c9 # via -r requirements-actions.in -pygments==2.19.1 \ - --hash=sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f \ - --hash=sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c - # via gcovr +pygments==2.19.2 \ + --hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \ + --hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b + # via + # gcovr + # pytest pyjwt==2.10.1 \ --hash=sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953 \ --hash=sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb @@ -867,6 +848,10 @@ pynacl==1.5.0 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 # via pygithub +pyparsing==3.2.3 \ + --hash=sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf \ + --hash=sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be + # via rdflib pyproject-api==1.9.1 \ --hash=sha256:43c9918f49daab37e302038fc1aed54a8c7a91a9fa935d00b9a485f37e0f5335 \ --hash=sha256:7d6238d92f8962773dd75b5f0c4a6a27cce092a14b623b811dba656f3b628948 @@ -875,9 +860,9 @@ pyserial==3.5 \ --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \ --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 # via -r requirements-actions.in -pytest==8.3.5 \ - --hash=sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820 \ - --hash=sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845 +pytest==8.4.1 \ + --hash=sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7 \ + --hash=sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c # via -r requirements-actions.in python-can==4.5.0 \ --hash=sha256:1eec66833c1ac76a7e3d636ee0f8b4ba2752e892bab1c56ce74308b2216b5445 \ @@ -891,6 +876,14 @@ python-dateutil==2.9.0.post0 \ # botocore # elasticsearch # pykwalify +python-debian==1.0.1 \ + --hash=sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771 \ + --hash=sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c + # via reuse +python-dotenv==1.1.1 \ + --hash=sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc \ + --hash=sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab + # via -r requirements-actions.in python-magic==0.4.27 ; sys_platform != 'win32' \ --hash=sha256:c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b \ --hash=sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3 @@ -957,8 +950,13 @@ pyyaml==6.0.2 \ # via # -r requirements-actions.in # awscli + # spdx-tools # west # yamllint +rdflib==7.1.4 \ + --hash=sha256:72f4adb1990fa5241abd22ddaf36d7cafa5d91d9ff2ba13f3086d339b213d997 \ + --hash=sha256:fed46e24f26a788e2ab8e445f7077f00edcf95abb73bcef4b86cefa8b62dd174 + # via spdx-tools regex==2024.11.6 \ --hash=sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c \ --hash=sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60 \ @@ -1055,17 +1053,21 @@ regex==2024.11.6 \ --hash=sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9 \ --hash=sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91 # via sphinx-lint -requests==2.32.3 \ - --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ - --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 +requests==2.32.4 \ + --hash=sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c \ + --hash=sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422 # via pygithub +reuse==5.0.2 \ + --hash=sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb \ + --hash=sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c + # via -r requirements-actions.in rsa==4.7.2 \ --hash=sha256:78f9a9bf4e7be0c5ded4583326e7461e3a3c5aae24073648b4bdfa797d78c9d2 \ --hash=sha256:9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9 # via awscli -ruamel-yaml==0.18.11 \ - --hash=sha256:b586a3416676566ed45bf679a0909719f7ea7b58c03a9b6e03f905a1e2cd5076 \ - --hash=sha256:eca06c9fce6ee3220845c4c54e58376586e041a6127e4d1958e12a3142084897 +ruamel-yaml==0.18.14 \ + --hash=sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2 \ + --hash=sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7 # via pykwalify ruamel-yaml-clib==0.2.12 ; python_full_version < '3.14' and platform_python_implementation == 'CPython' \ --hash=sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b \ @@ -1139,6 +1141,10 @@ s3transfer==0.13.0 \ --hash=sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be \ --hash=sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177 # via awscli +semantic-version==2.10.0 \ + --hash=sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c \ + --hash=sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177 + # via spdx-tools setuptools==80.9.0 \ --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c @@ -1154,6 +1160,10 @@ smmap==5.0.2 \ --hash=sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5 \ --hash=sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e # via gitdb +spdx-tools==0.8.3 \ + --hash=sha256:638fd9bd8be61901316eb6d063574e16d5403a1870073ec4d9241426a997501a \ + --hash=sha256:68b8f9ce2893b5216bd90b2e63f1c821c2884e4ebc4fd295ebbf1fa8b8a94b93 + # via -r requirements-actions.in sphinx-lint==1.0.0 \ --hash=sha256:6117a0f340b2dc73eadfc57db7531d4477e0929f92a0c1a2f61e6edbc272f0bc \ --hash=sha256:6eafdb44172ce526f405bf36c713eb246f1340ec2d667e7298e2487ed76decd2 @@ -1162,7 +1172,7 @@ tabulate==0.9.0 \ --hash=sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c \ --hash=sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f # via -r requirements-actions.in -tomli==2.2.1 \ +tomli==2.2.1 ; python_full_version < '3.11' \ --hash=sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6 \ --hash=sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd \ --hash=sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c \ @@ -1196,23 +1206,28 @@ tomli==2.2.1 \ --hash=sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a \ --hash=sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7 # via - # -r requirements-actions.in # mypy # pylint # pyproject-api # pytest # tox -tomlkit==0.13.2 \ - --hash=sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde \ - --hash=sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79 - # via pylint -tox==4.26.0 \ - --hash=sha256:75f17aaf09face9b97bd41645028d9f722301e912be8b4c65a3f938024560224 \ - --hash=sha256:a83b3b67b0159fa58e44e646505079e35a43317a62d2ae94725e0586266faeca +tomlkit==0.13.3 \ + --hash=sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1 \ + --hash=sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0 + # via + # pylint + # reuse +tox==4.27.0 \ + --hash=sha256:2b8a7fb986b82aa2c830c0615082a490d134e0626dbc9189986da46a313c4f20 \ + --hash=sha256:b97d5ecc0c0d5755bcc5348387fef793e1bfa68eb33746412f4c60881d7f5f57 + # via -r requirements-actions.in +tqdm==4.67.1 \ + --hash=sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2 \ + --hash=sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2 # via -r requirements-actions.in -typing-extensions==4.13.2 \ - --hash=sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c \ - --hash=sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef +typing-extensions==4.14.0 \ + --hash=sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4 \ + --hash=sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af # via # astroid # elasticsearch @@ -1225,14 +1240,22 @@ unidiff==0.7.5 \ --hash=sha256:2e5f0162052248946b9f0970a40e9e124236bf86c82b70821143a6fc1dea2574 \ --hash=sha256:c93bf2265cc1ba2a520e415ab05da587370bc2a3ae9e0414329f54f0c2fc09e8 # via -r requirements-actions.in -urllib3==2.4.0 \ - --hash=sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466 \ - --hash=sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813 +uritools==5.0.0 \ + --hash=sha256:68180cad154062bd5b5d9ffcdd464f8de6934414b25462ae807b00b8df9345de \ + --hash=sha256:cead3a49ba8fbca3f91857343849d506d8639718f4a2e51b62e87393b493bd6f + # via spdx-tools +urllib3==2.5.0 \ + --hash=sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760 \ + --hash=sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc # via # botocore # elastic-transport # pygithub # requests +vermin==1.6.0 \ + --hash=sha256:6266ca02f55d1c2aa189a610017c132eb2d1934f09e72a955b1eb3820ee6d4ef \ + --hash=sha256:f1fa9ee40f59983dc40e0477eb2b1fa8061a3df4c3b2bcf349add462a5610efb + # via -r requirements-actions.in virtualenv==20.31.2 \ --hash=sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11 \ --hash=sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af @@ -1321,13 +1344,15 @@ wrapt==1.17.2 \ --hash=sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119 \ --hash=sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b \ --hash=sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58 - # via - # deprecated - # python-can -xlsxwriter==3.2.3 \ - --hash=sha256:593f8296e8a91790c6d0378ab08b064f34a642b3feb787cf6738236bd0a4860d \ - --hash=sha256:ad6fd41bdcf1b885876b1f6b7087560aecc9ae5a9cc2ba97dcac7ab2e210d3d5 + # via python-can +xlsxwriter==3.2.5 \ + --hash=sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd \ + --hash=sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe # via -r requirements-actions.in +xmltodict==0.14.2 \ + --hash=sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553 \ + --hash=sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac + # via spdx-tools yamllint==1.37.1 \ --hash=sha256:364f0d79e81409f591e323725e6a9f4504c8699ddf2d7263d8d2b539cd66a583 \ --hash=sha256:81f7c0c5559becc8049470d86046b36e96113637bcbe4753ecef06977c00245d diff --git a/scripts/requirements-base.txt b/scripts/requirements-base.txt index 6e3cc0616cf..52732068f39 100644 --- a/scripts/requirements-base.txt +++ b/scripts/requirements-base.txt @@ -16,14 +16,14 @@ pykwalify # used by west_commands canopen packaging -progress -patool +patool>=2.0.0 psutil>=5.6.6 pylink-square pyserial requests>=2.32.0 semver tqdm>=4.67.1 +reuse # for ram/rom reports anytree diff --git a/scripts/requirements-build-test.txt b/scripts/requirements-build-test.txt index 0d540dd05c3..e6264b11ea5 100644 --- a/scripts/requirements-build-test.txt +++ b/scripts/requirements-build-test.txt @@ -17,8 +17,7 @@ coverage pytest mypy -# used for mocking functions in pytest -mock>=4.0.1 - # used for JUnit XML parsing in CTest harness -junitparser +junitparser>=3.0.0 + +python-dotenv diff --git a/scripts/requirements-compliance.txt b/scripts/requirements-compliance.txt index a7134e7ff00..6d90ac4b258 100644 --- a/scripts/requirements-compliance.txt +++ b/scripts/requirements-compliance.txt @@ -4,14 +4,16 @@ # zephyr-keep-sorted-start clang-format>=15.0.0 gitlint -junitparser>=2 +junitparser>=4.0.1 lxml>=5.3.0 pykwalify pylint>=3 +python-dotenv python-magic-bin; sys_platform == "win32" python-magic; sys_platform != "win32" ruff==0.11.11 sphinx-lint unidiff +vermin yamllint # zephyr-keep-sorted-stop diff --git a/scripts/requirements-run-test.txt b/scripts/requirements-run-test.txt index 08ff89b0c54..4b09fd1aa3a 100644 --- a/scripts/requirements-run-test.txt +++ b/scripts/requirements-run-test.txt @@ -16,3 +16,6 @@ psutil>=5.6.6 # used for CAN <=> host testing python-can>=4.3.0 + +# used for SPDX files validation +spdx-tools diff --git a/scripts/tests/build_helpers/test_domains.py b/scripts/tests/build_helpers/test_domains.py index 0ebdeaf6cb2..de784734bac 100644 --- a/scripts/tests/build_helpers/test_domains.py +++ b/scripts/tests/build_helpers/test_domains.py @@ -6,47 +6,51 @@ Tests for domains.py classes """ -import mock import os -import pytest import sys +from contextlib import nullcontext +from unittest import mock + +import pytest ZEPHYR_BASE = os.getenv("ZEPHYR_BASE") sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/build_helpers")) -import domains - -from contextlib import nullcontext - +import domains # noqa: E402 TESTDATA_1 = [ ('', False, 1, ['domains.yaml file not found: domains.yaml']), ( -""" + """ default: None build_dir: some/dir domains: [] """, - True, None, [] + True, + None, + [], ), ] + @pytest.mark.parametrize( 'f_contents, f_exists, exit_code, expected_logs', TESTDATA_1, - ids=['no file', 'valid'] + ids=['no file', 'valid'], ) def test_from_file(caplog, f_contents, f_exists, exit_code, expected_logs): def mock_open(*args, **kwargs): if f_exists: return mock.mock_open(read_data=f_contents)(args, kwargs) - raise FileNotFoundError(f'domains.yaml not found.') + raise FileNotFoundError('domains.yaml not found.') init_mock = mock.Mock(return_value=None) - with mock.patch('domains.Domains.__init__', init_mock), \ - mock.patch('builtins.open', mock_open), \ - pytest.raises(SystemExit) if exit_code else nullcontext() as s_exit: + with ( + mock.patch('domains.Domains.__init__', init_mock), + mock.patch('builtins.open', mock_open), + pytest.raises(SystemExit) if exit_code else nullcontext() as s_exit, + ): result = domains.Domains.from_file('domains.yaml') if exit_code: @@ -60,7 +64,7 @@ def mock_open(*args, **kwargs): TESTDATA_2 = [ ( -""" + """ default: some default build_dir: my/dir domains: @@ -70,10 +74,14 @@ def mock_open(*args, **kwargs): build_dir: dir/3 flash_order: I don\'t think this is correct """, - 1, None, None, None, None + 1, + None, + None, + None, + None, ), ( -""" + """ build_dir: build/dir domains: - name: a domain @@ -89,16 +97,15 @@ def mock_open(*args, **kwargs): 'build/dir', [('default_domain', 'dir/2'), ('a domain', 'dir/1')], ('default_domain', 'dir/2'), - {'a domain': ('a domain', 'dir/1'), - 'default_domain': ('default_domain', 'dir/2')} + {'a domain': ('a domain', 'dir/1'), 'default_domain': ('default_domain', 'dir/2')}, ), ] + @pytest.mark.parametrize( - 'data, exit_code, expected_build_dir, expected_flash_order,' \ - ' expected_default, expected_domains', + 'data, exit_code, expected_build_dir, expected_flash_order, expected_default, expected_domains', TESTDATA_2, - ids=['invalid', 'valid'] + ids=['invalid', 'valid'], ) def test_from_yaml( caplog, @@ -107,13 +114,15 @@ def test_from_yaml( expected_build_dir, expected_flash_order, expected_default, - expected_domains + expected_domains, ): def mock_domain(name, build_dir, *args, **kwargs): return name, build_dir - with mock.patch('domains.Domain', side_effect=mock_domain), \ - pytest.raises(SystemExit) if exit_code else nullcontext() as exit_st: + with ( + mock.patch('domains.Domain', side_effect=mock_domain), + pytest.raises(SystemExit) if exit_code else nullcontext() as exit_st, + ): doms = domains.Domains.from_yaml(data) if exit_code: @@ -133,35 +142,40 @@ def mock_domain(name, build_dir, *args, **kwargs): ( None, True, - [('some', os.path.join('dir', '2')), - ('order', os.path.join('dir', '1'))] + [ + ('some', os.path.join('dir', '2')), + ('order', os.path.join('dir', '1')), + ], ), ( None, False, - [('order', os.path.join('dir', '1')), - ('some', os.path.join('dir', '2'))] + [ + ('order', os.path.join('dir', '1')), + ('some', os.path.join('dir', '2')), + ], ), ( ['some'], False, - [('some', os.path.join('dir', '2'))] + [('some', os.path.join('dir', '2'))], ), ] + @pytest.mark.parametrize( 'names, default_flash_order, expected_result', TESTDATA_3, - ids=['order only', 'no parameters', 'valid'] + ids=['order only', 'no parameters', 'valid'], ) def test_get_domains( caplog, names, default_flash_order, - expected_result + expected_result, ): doms = domains.Domains( -""" + """ domains: - name: dummy build_dir: dummy @@ -171,11 +185,11 @@ def test_get_domains( ) doms._flash_order = [ ('some', os.path.join('dir', '2')), - ('order', os.path.join('dir', '1')) + ('order', os.path.join('dir', '1')), ] doms._domains = { 'order': ('order', os.path.join('dir', '1')), - 'some': ('some', os.path.join('dir', '2')) + 'some': ('some', os.path.join('dir', '2')), } result = doms.get_domains(names, default_flash_order) @@ -183,36 +197,36 @@ def test_get_domains( assert result == expected_result - TESTDATA_3 = [ ( 'other', 1, ['domain "other" not found, valid domains are: order, some'], - None + None, ), ( 'some', None, [], - ('some', os.path.join('dir', '2')) + ('some', os.path.join('dir', '2')), ), ] + @pytest.mark.parametrize( 'name, exit_code, expected_logs, expected_result', TESTDATA_3, - ids=['domain not found', 'valid'] + ids=['domain not found', 'valid'], ) def test_get_domain( caplog, name, exit_code, expected_logs, - expected_result + expected_result, ): doms = domains.Domains( -""" + """ domains: - name: dummy build_dir: dummy @@ -222,11 +236,11 @@ def test_get_domain( ) doms._flash_order = [ ('some', os.path.join('dir', '2')), - ('order', os.path.join('dir', '1')) + ('order', os.path.join('dir', '1')), ] doms._domains = { 'order': ('order', os.path.join('dir', '1')), - 'some': ('some', os.path.join('dir', '2')) + 'some': ('some', os.path.join('dir', '2')), } with pytest.raises(SystemExit) if exit_code else nullcontext() as s_exit: diff --git a/scripts/tests/twister/test_cmakecache.py b/scripts/tests/twister/test_cmakecache.py index ebfb440423b..51a09a58102 100644 --- a/scripts/tests/twister/test_cmakecache.py +++ b/scripts/tests/twister/test_cmakecache.py @@ -6,7 +6,7 @@ Tests for cmakecache.py classes' methods """ -import mock +from unittest import mock import pytest from contextlib import nullcontext diff --git a/scripts/tests/twister/test_config_parser.py b/scripts/tests/twister/test_config_parser.py index 48a2d5a7db5..dcc1495ab7c 100644 --- a/scripts/tests/twister/test_config_parser.py +++ b/scripts/tests/twister/test_config_parser.py @@ -9,7 +9,7 @@ import os import pytest -import mock +from unittest import mock import scl from twisterlib.config_parser import TwisterConfigParser, extract_fields_from_arg_list, ConfigurationError diff --git a/scripts/tests/twister/test_environment.py b/scripts/tests/twister/test_environment.py index 3a4e090598b..95b799bc8b7 100644 --- a/scripts/tests/twister/test_environment.py +++ b/scripts/tests/twister/test_environment.py @@ -7,7 +7,7 @@ Tests for environment.py classes' methods """ -import mock +from unittest import mock import os import pytest import shutil diff --git a/scripts/tests/twister/test_handlers.py b/scripts/tests/twister/test_handlers.py index e4710060a35..fbe22bb906f 100644 --- a/scripts/tests/twister/test_handlers.py +++ b/scripts/tests/twister/test_handlers.py @@ -8,7 +8,7 @@ """ import itertools -import mock +from unittest import mock import os import pytest import signal diff --git a/scripts/tests/twister/test_hardwaremap.py b/scripts/tests/twister/test_hardwaremap.py index 5dc61dc1d9e..c8f82679211 100644 --- a/scripts/tests/twister/test_hardwaremap.py +++ b/scripts/tests/twister/test_hardwaremap.py @@ -6,7 +6,7 @@ Tests for hardwaremap.py classes' methods """ -import mock +from unittest import mock import pytest import sys diff --git a/scripts/tests/twister/test_harness.py b/scripts/tests/twister/test_harness.py index 3283ff2085a..edc2a96c8a1 100644 --- a/scripts/tests/twister/test_harness.py +++ b/scripts/tests/twister/test_harness.py @@ -6,7 +6,7 @@ """ This test file contains testsuites for the Harness classes of twister """ -import mock +from unittest import mock import sys import os import pytest diff --git a/scripts/tests/twister/test_jobserver.py b/scripts/tests/twister/test_jobserver.py index 554df8545fb..d365313199d 100644 --- a/scripts/tests/twister/test_jobserver.py +++ b/scripts/tests/twister/test_jobserver.py @@ -7,7 +7,7 @@ """ import functools -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister/test_log_helper.py b/scripts/tests/twister/test_log_helper.py index 9373be5da2f..31d7c6148da 100644 --- a/scripts/tests/twister/test_log_helper.py +++ b/scripts/tests/twister/test_log_helper.py @@ -7,7 +7,7 @@ """ import logging -import mock +from unittest import mock import pytest from importlib import reload diff --git a/scripts/tests/twister/test_platform.py b/scripts/tests/twister/test_platform.py index cdbfd15d20c..1ff7f0bb8fd 100644 --- a/scripts/tests/twister/test_platform.py +++ b/scripts/tests/twister/test_platform.py @@ -8,7 +8,7 @@ ''' import sys import os -import mock +from unittest import mock import pytest from contextlib import nullcontext diff --git a/scripts/tests/twister/test_quarantine.py b/scripts/tests/twister/test_quarantine.py index ea6b3cf677e..6165a755544 100644 --- a/scripts/tests/twister/test_quarantine.py +++ b/scripts/tests/twister/test_quarantine.py @@ -6,7 +6,7 @@ Tests for quarantine.py classes' methods """ -import mock +from unittest import mock import os import pytest import textwrap diff --git a/scripts/tests/twister/test_runner.py b/scripts/tests/twister/test_runner.py index e689095fc7c..3d2149664cf 100644 --- a/scripts/tests/twister/test_runner.py +++ b/scripts/tests/twister/test_runner.py @@ -7,7 +7,7 @@ """ import errno -import mock +from unittest import mock import os import pathlib import pytest diff --git a/scripts/tests/twister/test_scl.py b/scripts/tests/twister/test_scl.py index 14a0c447192..4a376257b1d 100644 --- a/scripts/tests/twister/test_scl.py +++ b/scripts/tests/twister/test_scl.py @@ -7,7 +7,7 @@ """ import logging -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister/test_testinstance.py b/scripts/tests/twister/test_testinstance.py index 271d55e76a0..df8286fe092 100644 --- a/scripts/tests/twister/test_testinstance.py +++ b/scripts/tests/twister/test_testinstance.py @@ -11,7 +11,7 @@ import os import sys import pytest -import mock +from unittest import mock ZEPHYR_BASE = os.getenv("ZEPHYR_BASE") sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/twister")) diff --git a/scripts/tests/twister/test_testplan.py b/scripts/tests/twister/test_testplan.py index 73b2673b08e..62733ed00dd 100644 --- a/scripts/tests/twister/test_testplan.py +++ b/scripts/tests/twister/test_testplan.py @@ -8,7 +8,7 @@ ''' import sys import os -import mock +from unittest import mock import pytest from contextlib import nullcontext diff --git a/scripts/tests/twister/test_testsuite.py b/scripts/tests/twister/test_testsuite.py index 83231c0f48a..635b2aaa99f 100644 --- a/scripts/tests/twister/test_testsuite.py +++ b/scripts/tests/twister/test_testsuite.py @@ -7,7 +7,7 @@ """ import mmap -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister/test_twister.py b/scripts/tests/twister/test_twister.py index 23a3e6d17db..0e5118751dd 100644 --- a/scripts/tests/twister/test_twister.py +++ b/scripts/tests/twister/test_twister.py @@ -9,7 +9,7 @@ import os import sys -import mock +from unittest import mock import pytest from pathlib import Path diff --git a/scripts/tests/twister_blackbox/conftest.py b/scripts/tests/twister_blackbox/conftest.py index 0fd73927c6f..615e2f986b7 100644 --- a/scripts/tests/twister_blackbox/conftest.py +++ b/scripts/tests/twister_blackbox/conftest.py @@ -7,7 +7,7 @@ import logging import shutil -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_addon.py b/scripts/tests/twister_blackbox/test_addon.py index ecd34501b73..bb7fe84b6b8 100644 --- a/scripts/tests/twister_blackbox/test_addon.py +++ b/scripts/tests/twister_blackbox/test_addon.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pkg_resources import pytest @@ -16,6 +16,7 @@ import subprocess import sys +# pylint: disable=no-name-in-module from conftest import ZEPHYR_BASE, TEST_DATA, sample_filename_mock, testsuite_filename_mock from twisterlib.testplan import TestPlan diff --git a/scripts/tests/twister_blackbox/test_config.py b/scripts/tests/twister_blackbox/test_config.py index 2cad497055f..1b34e637ff4 100644 --- a/scripts/tests/twister_blackbox/test_config.py +++ b/scripts/tests/twister_blackbox/test_config.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_coverage.py b/scripts/tests/twister_blackbox/test_coverage.py index aeb41e63daf..c1f85c05057 100644 --- a/scripts/tests/twister_blackbox/test_coverage.py +++ b/scripts/tests/twister_blackbox/test_coverage.py @@ -7,7 +7,7 @@ """ import importlib import re -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_device.py b/scripts/tests/twister_blackbox/test_device.py index 790e0774e30..c35daa337e4 100644 --- a/scripts/tests/twister_blackbox/test_device.py +++ b/scripts/tests/twister_blackbox/test_device.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_disable.py b/scripts/tests/twister_blackbox/test_disable.py index 26e804af9d4..3cbc7d31428 100644 --- a/scripts/tests/twister_blackbox/test_disable.py +++ b/scripts/tests/twister_blackbox/test_disable.py @@ -8,11 +8,12 @@ import importlib import pytest -import mock +from unittest import mock import os import sys import re +# pylint: disable=no-name-in-module from conftest import ZEPHYR_BASE, TEST_DATA, testsuite_filename_mock from twisterlib.testplan import TestPlan diff --git a/scripts/tests/twister_blackbox/test_error.py b/scripts/tests/twister_blackbox/test_error.py index 4a28f7fb178..93d589fefdf 100644 --- a/scripts/tests/twister_blackbox/test_error.py +++ b/scripts/tests/twister_blackbox/test_error.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_filter.py b/scripts/tests/twister_blackbox/test_filter.py index f7e3ff8f21f..c65dda1604c 100644 --- a/scripts/tests/twister_blackbox/test_filter.py +++ b/scripts/tests/twister_blackbox/test_filter.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_footprint.py b/scripts/tests/twister_blackbox/test_footprint.py index 35824d792b1..b9e072a2666 100644 --- a/scripts/tests/twister_blackbox/test_footprint.py +++ b/scripts/tests/twister_blackbox/test_footprint.py @@ -8,7 +8,7 @@ import importlib import json -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_hardwaremap.py b/scripts/tests/twister_blackbox/test_hardwaremap.py index c1f6ff1eaf8..ce3493415a9 100644 --- a/scripts/tests/twister_blackbox/test_hardwaremap.py +++ b/scripts/tests/twister_blackbox/test_hardwaremap.py @@ -6,11 +6,12 @@ Blackbox tests for twister's command line functions """ import importlib -import mock +from unittest import mock import os import pytest import sys +# pylint: disable=no-name-in-module from conftest import ZEPHYR_BASE, testsuite_filename_mock, clear_log_in_test from twisterlib.testplan import TestPlan diff --git a/scripts/tests/twister_blackbox/test_outfile.py b/scripts/tests/twister_blackbox/test_outfile.py index 590e0c8f58a..bdaa5d3291d 100644 --- a/scripts/tests/twister_blackbox/test_outfile.py +++ b/scripts/tests/twister_blackbox/test_outfile.py @@ -8,7 +8,7 @@ import importlib import re -import mock +from unittest import mock import os import shutil import pytest diff --git a/scripts/tests/twister_blackbox/test_output.py b/scripts/tests/twister_blackbox/test_output.py index 5babfa96620..c6a77020638 100644 --- a/scripts/tests/twister_blackbox/test_output.py +++ b/scripts/tests/twister_blackbox/test_output.py @@ -8,7 +8,7 @@ import importlib import re -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_platform.py b/scripts/tests/twister_blackbox/test_platform.py index 0c644dcff5a..33239d5fcc0 100644 --- a/scripts/tests/twister_blackbox/test_platform.py +++ b/scripts/tests/twister_blackbox/test_platform.py @@ -8,7 +8,7 @@ import importlib import re -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_printouts.py b/scripts/tests/twister_blackbox/test_printouts.py index 8f07a0fd3aa..f383fe09744 100644 --- a/scripts/tests/twister_blackbox/test_printouts.py +++ b/scripts/tests/twister_blackbox/test_printouts.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_quarantine.py b/scripts/tests/twister_blackbox/test_quarantine.py index 61cfa9634e3..63e6de53cc5 100644 --- a/scripts/tests/twister_blackbox/test_quarantine.py +++ b/scripts/tests/twister_blackbox/test_quarantine.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import re diff --git a/scripts/tests/twister_blackbox/test_report.py b/scripts/tests/twister_blackbox/test_report.py index 83d5942c855..ab2aec447ec 100644 --- a/scripts/tests/twister_blackbox/test_report.py +++ b/scripts/tests/twister_blackbox/test_report.py @@ -8,7 +8,7 @@ import importlib import json -import mock +from unittest import mock import os import pytest import shutil diff --git a/scripts/tests/twister_blackbox/test_runner.py b/scripts/tests/twister_blackbox/test_runner.py index 57ecef3fbfe..09286663475 100644 --- a/scripts/tests/twister_blackbox/test_runner.py +++ b/scripts/tests/twister_blackbox/test_runner.py @@ -8,7 +8,7 @@ # pylint: disable=duplicate-code import importlib -import mock +from unittest import mock import os import pytest import re diff --git a/scripts/tests/twister_blackbox/test_shuffle.py b/scripts/tests/twister_blackbox/test_shuffle.py index f45724b7b55..ba19faf64b6 100644 --- a/scripts/tests/twister_blackbox/test_shuffle.py +++ b/scripts/tests/twister_blackbox/test_shuffle.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_testlist.py b/scripts/tests/twister_blackbox/test_testlist.py index ad8eaeddfaf..410c417e14c 100644 --- a/scripts/tests/twister_blackbox/test_testlist.py +++ b/scripts/tests/twister_blackbox/test_testlist.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_testplan.py b/scripts/tests/twister_blackbox/test_testplan.py index 8834e03ead0..701acf94ddf 100644 --- a/scripts/tests/twister_blackbox/test_testplan.py +++ b/scripts/tests/twister_blackbox/test_testplan.py @@ -7,7 +7,7 @@ """ import importlib -import mock +from unittest import mock import os import pytest import sys diff --git a/scripts/tests/twister_blackbox/test_tooling.py b/scripts/tests/twister_blackbox/test_tooling.py index 3979517e2da..d844ec824de 100644 --- a/scripts/tests/twister_blackbox/test_tooling.py +++ b/scripts/tests/twister_blackbox/test_tooling.py @@ -8,12 +8,13 @@ # pylint: disable=duplicate-code import importlib -import mock +from unittest import mock import os import pytest import sys import json +# pylint: disable=no-name-in-module from conftest import ZEPHYR_BASE, TEST_DATA, sample_filename_mock, testsuite_filename_mock from twisterlib.statuses import TwisterStatus from twisterlib.testplan import TestPlan diff --git a/scripts/west_commands/runners/canopen_program.py b/scripts/west_commands/runners/canopen_program.py index 081a2652bfc..e72b1dbbd66 100644 --- a/scripts/west_commands/runners/canopen_program.py +++ b/scripts/west_commands/runners/canopen_program.py @@ -12,7 +12,7 @@ try: import canopen - from progress.bar import Bar + from tqdm import tqdm MISSING_REQUIREMENTS = False except ImportError: MISSING_REQUIREMENTS = True @@ -284,17 +284,17 @@ def download(self, bin_file): outfile = self.data_sdo.open('wb', buffering=self.download_buffer_size, size=size, block_transfer=self.block_transfer) - progress = Bar('%(percent)d%%', max=size, suffix='%(index)d/%(max)dB') + progress = tqdm(total=size, unit='B', unit_scale=True) while True: chunk = infile.read(self.download_buffer_size // 2) if not chunk: break outfile.write(chunk) - progress.next(n=len(chunk)) + progress.update(len(chunk)) except Exception as err: raise ValueError('Failed to download program') from err finally: - progress.finish() + progress.close() infile.close() outfile.close() diff --git a/scripts/west_commands/zspdx/scanner.py b/scripts/west_commands/zspdx/scanner.py index 2a4ac792b9c..93c43095598 100644 --- a/scripts/west_commands/zspdx/scanner.py +++ b/scripts/west_commands/zspdx/scanner.py @@ -6,6 +6,7 @@ import os import re +from reuse.project import Project from west import log from zspdx.licenses import LICENSES @@ -177,6 +178,32 @@ def normalizeExpression(licsConcluded): return " AND ".join(revised) +def getCopyrightInfo(filePath): + """ + Scans the specified file for copyright information using REUSE tools. + + Arguments: + - filePath: path to file to scan + + Returns: list of copyright statements if found; empty list if not found + """ + log.dbg(f" - getting copyright info for {filePath}") + + try: + project = Project(os.path.dirname(filePath)) + infos = project.reuse_info_of(filePath) + copyrights = [] + + for info in infos: + if info.copyright_lines: + copyrights.extend(info.copyright_lines) + + return copyrights + except Exception as e: + log.wrn(f"Error getting copyright info for {filePath}: {e}") + return [] + + def scanDocument(cfg, doc): """ Scan for licenses and calculate hashes for all Files and Packages @@ -213,6 +240,9 @@ def scanDocument(cfg, doc): f.concludedLicense = expression f.licenseInfoInFile = splitExpression(expression) + if copyrights := getCopyrightInfo(f.abspath): + f.copyrightText = f"\n{'\n'.join(copyrights)}\n" + # check if any custom license IDs should be flagged for document for lic in f.licenseInfoInFile: checkLicenseValid(lic, doc) diff --git a/scripts/zephyr_module.py b/scripts/zephyr_module.py index 8aabe676784..8a451db63fa 100755 --- a/scripts/zephyr_module.py +++ b/scripts/zephyr_module.py @@ -386,6 +386,15 @@ def kconfig_snippet(meta, path, kconfig_file=None, blobs=False, taint_blobs=Fals return '\n'.join(snippet) +def process_kconfig_module_dir(module, meta, cmake_output): + module_path = PurePath(module) + name_sanitized = meta['name-sanitized'] + + if cmake_output is False: + return f'ZEPHYR_{name_sanitized.upper()}_MODULE_DIR={module_path.as_posix()}\n' + return f'list(APPEND kconfig_env_dirs ZEPHYR_{name_sanitized.upper()}_MODULE_DIR={module_path.as_posix()})\n' + + def process_kconfig(module, meta): blobs = process_blobs(module, meta) taint_blobs = any(b['status'] != BLOB_NOT_PRESENT for b in blobs) @@ -393,6 +402,7 @@ def process_kconfig(module, meta): module_path = PurePath(module) module_yml = module_path.joinpath('zephyr/module.yml') kconfig_extern = section.get('kconfig-ext', False) + if kconfig_extern: return kconfig_snippet(meta, module_path, blobs=blobs, taint_blobs=taint_blobs) @@ -408,8 +418,7 @@ def process_kconfig(module, meta): blobs=blobs, taint_blobs=taint_blobs) else: name_sanitized = meta['name-sanitized'] - snippet = kconfig_module_opts(name_sanitized, blobs, taint_blobs) - return '\n'.join(snippet) + '\n' + return '\n'.join(kconfig_module_opts(name_sanitized, blobs, taint_blobs)) + '\n' def process_sysbuildkconfig(module, meta): @@ -417,6 +426,8 @@ def process_sysbuildkconfig(module, meta): module_path = PurePath(module) module_yml = module_path.joinpath('zephyr/module.yml') kconfig_extern = section.get('sysbuild-kconfig-ext', False) + name_sanitized = meta['name-sanitized'] + if kconfig_extern: return kconfig_snippet(meta, module_path, sysbuild=True) @@ -431,7 +442,6 @@ def process_sysbuildkconfig(module, meta): if os.path.isfile(kconfig_file): return kconfig_snippet(meta, module_path, Path(kconfig_file)) - name_sanitized = meta['name-sanitized'] return (f'config ZEPHYR_{name_sanitized.upper()}_MODULE\n' f' bool\n' f' default y\n') @@ -857,6 +867,8 @@ def main(): help='Path to zephyr repository') args = parser.parse_args() + kconfig_module_dirs = "" + kconfig_module_dirs_cmake = "set(kconfig_env_dirs)\n" kconfig = "" cmake = "" sysbuild_kconfig = "" @@ -869,6 +881,8 @@ def main(): args.modules, args.extra_modules) for module in modules: + kconfig_module_dirs += process_kconfig_module_dir(module.project, module.meta, False) + kconfig_module_dirs_cmake += process_kconfig_module_dir(module.project, module.meta, True) kconfig += process_kconfig(module.project, module.meta) cmake += process_cmake(module.project, module.meta) sysbuild_kconfig += process_sysbuildkconfig( @@ -877,6 +891,23 @@ def main(): settings += process_settings(module.project, module.meta) twister += process_twister(module.project, module.meta) + if args.kconfig_out or args.sysbuild_kconfig_out: + if args.kconfig_out: + kconfig_module_dirs_out = PurePath(args.kconfig_out).parent / 'kconfig_module_dirs.env' + kconfig_module_dirs_cmake_out = PurePath(args.kconfig_out).parent / \ + 'kconfig_module_dirs.cmake' + elif args.sysbuild_kconfig_out: + kconfig_module_dirs_out = PurePath(args.sysbuild_kconfig_out).parent / \ + 'kconfig_module_dirs.env' + kconfig_module_dirs_cmake_out = PurePath(args.sysbuild_kconfig_out).parent / \ + 'kconfig_module_dirs.cmake' + + with open(kconfig_module_dirs_out, 'w', encoding="utf-8") as fp: + fp.write(kconfig_module_dirs) + + with open(kconfig_module_dirs_cmake_out, 'w', encoding="utf-8") as fp: + fp.write(kconfig_module_dirs_cmake) + if args.kconfig_out: with open(args.kconfig_out, 'w', encoding="utf-8") as fp: fp.write(kconfig) diff --git a/share/sysbuild/images/firmware_loader/Kconfig b/share/sysbuild/images/firmware_loader/Kconfig index a5c4283ad5c..2ff27251b92 100644 --- a/share/sysbuild/images/firmware_loader/Kconfig +++ b/share/sysbuild/images/firmware_loader/Kconfig @@ -32,6 +32,6 @@ config FIRMWARE_LOADER_IMAGE_NAME config FIRMWARE_LOADER_IMAGE_PATH string - default "${ZEPHYR_BASE}/samples/subsys/mgmt/mcumgr/smp_svr" if FIRMWARE_LOADER_IMAGE_SMP_SVR + default "$(ZEPHYR_BASE)/samples/subsys/mgmt/mcumgr/smp_svr" if FIRMWARE_LOADER_IMAGE_SMP_SVR help Source directory of firmware loader image. diff --git a/soc/arm/mps4/CMakeLists.txt b/soc/arm/mps4/CMakeLists.txt new file mode 100644 index 00000000000..1cc200dafbb --- /dev/null +++ b/soc/arm/mps4/CMakeLists.txt @@ -0,0 +1,6 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories(.) + +set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") diff --git a/soc/arm/mps4/Kconfig b/soc/arm/mps4/Kconfig new file mode 100644 index 00000000000..ea733d1566d --- /dev/null +++ b/soc/arm/mps4/Kconfig @@ -0,0 +1,33 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_MPS4 + select ARM + select GPIO_MMIO32 if GPIO + +config SOC_MPS4_CORSTONE315 + select CPU_CORTEX_M85 + select CPU_HAS_ARM_SAU + select CPU_HAS_ARM_MPU + select CPU_HAS_FPU + select ARMV8_M_DSP + select ARMV8_1_M_MVEI + select ARMV8_1_M_MVEF + select ARMV8_1_M_PMU + select ARM_MPU_PXN if ARM_MPU + +config SOC_MPS4_CORSTONE320 + select CPU_CORTEX_M85 + select CPU_HAS_ARM_SAU + select CPU_HAS_ARM_MPU + select CPU_HAS_FPU + select ARMV8_M_DSP + select ARMV8_1_M_MVEI + select ARMV8_1_M_MVEF + select ARMV8_1_M_PMU + select ARM_MPU_PXN if ARM_MPU + +config ARMV8_1_M_PMU_EVENTCNT + int + default 8 if SOC_MPS4_CORSTONE315 + default 8 if SOC_MPS4_CORSTONE320 diff --git a/soc/arm/mps4/Kconfig.defconfig b/soc/arm/mps4/Kconfig.defconfig new file mode 100644 index 00000000000..667eaadb35c --- /dev/null +++ b/soc/arm/mps4/Kconfig.defconfig @@ -0,0 +1,11 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +if SOC_SERIES_MPS4 + +config SYS_CLOCK_HW_CYCLES_PER_SEC + default $(dt_node_int_prop_int,$(dt_nodelabel_path,sysclk),clock-frequency) + +rsource "Kconfig.defconfig.mps4*" + +endif # SOC_SERIES_MPS4 diff --git a/soc/arm/mps4/Kconfig.defconfig.mps4_corstone315 b/soc/arm/mps4/Kconfig.defconfig.mps4_corstone315 new file mode 100644 index 00000000000..191b5d45df4 --- /dev/null +++ b/soc/arm/mps4/Kconfig.defconfig.mps4_corstone315 @@ -0,0 +1,9 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +if SOC_MPS4_CORSTONE315 + +config NUM_IRQS + default 232 + +endif diff --git a/soc/arm/mps4/Kconfig.defconfig.mps4_corstone320 b/soc/arm/mps4/Kconfig.defconfig.mps4_corstone320 new file mode 100644 index 00000000000..f7348d7fcad --- /dev/null +++ b/soc/arm/mps4/Kconfig.defconfig.mps4_corstone320 @@ -0,0 +1,9 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +if SOC_MPS4_CORSTONE320 + +config NUM_IRQS + default 232 + +endif diff --git a/soc/arm/mps4/Kconfig.soc b/soc/arm/mps4/Kconfig.soc new file mode 100644 index 00000000000..98087bb3676 --- /dev/null +++ b/soc/arm/mps4/Kconfig.soc @@ -0,0 +1,23 @@ +# Copyright 2025 Arm Limited and/or its affiliates +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_MPS4 + bool + select SOC_FAMILY_ARM + help + Enable support for ARM MPS4 MCU Series + +config SOC_SERIES + default "mps4" if SOC_SERIES_MPS4 + +config SOC_MPS4_CORSTONE315 + bool + select SOC_SERIES_MPS4 + +config SOC_MPS4_CORSTONE320 + bool + select SOC_SERIES_MPS4 + +config SOC + default "corstone315" if SOC_MPS4_CORSTONE315 + default "corstone320" if SOC_MPS4_CORSTONE320 diff --git a/soc/arm/mps4/pinctrl_soc.h b/soc/arm/mps4/pinctrl_soc.h new file mode 100644 index 00000000000..a88e0cee7df --- /dev/null +++ b/soc/arm/mps4/pinctrl_soc.h @@ -0,0 +1,51 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/** + * @brief Type to hold a pin's pinctrl configuration. + */ +struct mps4_pinctrl_soc_pin { + /** Pin number 0..52 */ + uint32_t pin_num : 6; + /** Alternative function (UART, SPI, etc.) */ + uint32_t alt_func : 3; + /** Enable the pin as an input */ + uint32_t input_enable : 1; +}; + +typedef struct mps4_pinctrl_soc_pin pinctrl_soc_pin_t; + +/** + * @brief Utility macro to initialize each pin. + * + * @param node_id Node identifier. + * @param prop Property name. + * @param idx Property entry index. + */ +#define Z_PINCTRL_STATE_PIN_INIT(node_id, prop, idx) \ + { \ + MPS4_GET_PIN_NUM(DT_PROP_BY_IDX(node_id, prop, idx)), \ + MPS4_GET_PIN_ALT_FUNC(DT_PROP_BY_IDX(node_id, prop, idx)), \ + DT_PROP(node_id, input_enable), \ + }, + +/** + * @brief Utility macro to initialize state pins contained in a given property. + * + * @param node_id Node identifier. + * @param prop Property name describing state pins. + */ +#define Z_PINCTRL_STATE_PINS_INIT(node_id, prop) \ + {DT_FOREACH_CHILD_VARGS(DT_PHANDLE(node_id, prop), \ + DT_FOREACH_PROP_ELEM, pinmux, \ + Z_PINCTRL_STATE_PIN_INIT)} + +#define MPS4_GET_PIN_NUM(pinctrl) \ + (((pinctrl) >> MPS4_EXP_NUM_POS) & MPS4_EXP_NUM_MASK) +#define MPS4_GET_PIN_ALT_FUNC(pinctrl) \ + (((pinctrl) >> MPS4_ALT_FUNC_POS) & MPS4_ALT_FUNC_MASK) diff --git a/soc/arm/mps4/soc.h b/soc/arm/mps4/soc.h new file mode 100644 index 00000000000..14ceadbd20a --- /dev/null +++ b/soc/arm/mps4/soc.h @@ -0,0 +1,12 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _SOC_H_ +#define _SOC_H_ + +#include + +#endif /* _SOC_H_ */ diff --git a/soc/arm/soc.yml b/soc/arm/soc.yml index 866f34dafd4..821da33e9cf 100644 --- a/soc/arm/soc.yml +++ b/soc/arm/soc.yml @@ -15,6 +15,10 @@ family: socs: - name: corstone300 - name: corstone310 + - name: mps4 + socs: + - name: corstone315 + - name: corstone320 - name: musca socs: - name: musca_b1 diff --git a/soc/nordic/nrf54h/CMakeLists.txt b/soc/nordic/nrf54h/CMakeLists.txt index 23c1cab1e77..18d91b50865 100644 --- a/soc/nordic/nrf54h/CMakeLists.txt +++ b/soc/nordic/nrf54h/CMakeLists.txt @@ -8,7 +8,9 @@ if(CONFIG_ARM) endif() endif() -zephyr_library_sources_ifdef(CONFIG_PM_S2RAM pm_s2ram.c) +if(NOT CONFIG_SOC_NRF54H20_PM_S2RAM_OVERRIDE) + zephyr_library_sources_ifdef(CONFIG_PM_S2RAM pm_s2ram.c) +endif() zephyr_include_directories(.) diff --git a/soc/nordic/nrf54h/Kconfig b/soc/nordic/nrf54h/Kconfig index b117ee45ad8..0148e6e2687 100644 --- a/soc/nordic/nrf54h/Kconfig +++ b/soc/nordic/nrf54h/Kconfig @@ -100,6 +100,11 @@ config SOC_NRF54H20_DISABLE_ALL_GPIO_RETENTION_WORKAROUND default y depends on SOC_NRF54H20_CPUAPP || SOC_NRF54H20_CPURAD +config SOC_NRF54H20_PM_S2RAM_OVERRIDE + bool "Override `pm_s2ram` implementation" + help + Override Nordic s2ram implementation. + config SOC_NRF54H20_CPURAD select SOC_NRF54H20_CPURAD_COMMON diff --git a/soc/nordic/nrf54h/pm_s2ram.c b/soc/nordic/nrf54h/pm_s2ram.c index c9be93ff5c9..a0fb70fe319 100644 --- a/soc/nordic/nrf54h/pm_s2ram.c +++ b/soc/nordic/nrf54h/pm_s2ram.c @@ -219,10 +219,24 @@ static void fpu_restore(_fpu_context_t *backup) #endif /* !defined(CONFIG_FPU_SHARING) */ #endif /* defined(CONFIG_FPU) */ +#if DT_NODE_EXISTS(DT_NODELABEL(mcuboot_s2ram)) &&\ + DT_NODE_HAS_COMPAT(DT_NODELABEL(mcuboot_s2ram), zephyr_memory_region) +/* Linker section name is given by `zephyr,memory-region` property of + * `zephyr,memory-region` compatible DT node with nodelabel `mcuboot_s2ram`. + */ +__attribute__((section(DT_PROP(DT_NODELABEL(mcuboot_s2ram), zephyr_memory_region)))) +volatile struct mcuboot_resume_s _mcuboot_resume; + +#define SET_MCUBOOT_RESUME_MAGIC() _mcuboot_resume.magic = MCUBOOT_S2RAM_RESUME_MAGIC +#else +#define SET_MCUBOOT_RESUME_MAGIC() +#endif + int soc_s2ram_suspend(pm_s2ram_system_off_fn_t system_off) { int ret; + SET_MCUBOOT_RESUME_MAGIC(); scb_save(&backup_data.scb_context); #if defined(CONFIG_FPU) #if !defined(CONFIG_FPU_SHARING) diff --git a/soc/nordic/nrf54h/pm_s2ram.h b/soc/nordic/nrf54h/pm_s2ram.h index 565afad6ca1..0906010cbe0 100644 --- a/soc/nordic/nrf54h/pm_s2ram.h +++ b/soc/nordic/nrf54h/pm_s2ram.h @@ -10,6 +10,12 @@ #ifndef _ZEPHYR_SOC_ARM_NORDIC_NRF_PM_S2RAM_H_ #define _ZEPHYR_SOC_ARM_NORDIC_NRF_PM_S2RAM_H_ +#define MCUBOOT_S2RAM_RESUME_MAGIC 0x75832419 + +struct mcuboot_resume_s { + uint32_t magic; /* magic value to identify valid structure */ +}; + /** * @brief Save CPU state on suspend * diff --git a/subsys/bluetooth/Kconfig.logging b/subsys/bluetooth/Kconfig.logging index 7ccaf55c2d6..850fb987230 100644 --- a/subsys/bluetooth/Kconfig.logging +++ b/subsys/bluetooth/Kconfig.logging @@ -358,7 +358,7 @@ endif # BT_VOCS_CLIENT if BT_PBP module = BT_PBP module-str = "Public Broadcast Profile" -source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config" +source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config" endif # BT_PBP endmenu # Audio @@ -539,7 +539,7 @@ endif # BT_IAS_CLIENT if BT_IAS module = BT_IAS module-str = IAS -source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config" +source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config" endif # BT_IAS # OTS (subsys/bluetooth/services/ots/Kconfig) @@ -553,7 +553,7 @@ endif # BT_OTS_CLIENT if BT_OTS module = BT_OTS module-str = BT_OTS -source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config" +source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config" endif # BT_OTS endmenu # Services diff --git a/subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt_state.c b/subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt_state.c index 4ddd741851e..984ed7fea27 100644 --- a/subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt_state.c +++ b/subsys/mgmt/mcumgr/grp/img_mgmt/src/img_mgmt_state.c @@ -435,7 +435,10 @@ static bool img_mgmt_state_encode_slot(struct smp_streamer *ctxt, uint32_t slot, uint32_t flags; char vers_str[IMG_MGMT_VER_MAX_STR_LEN]; uint8_t hash[IMAGE_SHA_LEN]; - struct zcbor_string zhash = { .value = hash, .len = IMAGE_SHA_LEN}; + struct zcbor_string zhash = { + .value = hash, + .len = IMAGE_SHA_LEN, + }; struct image_version ver; bool ok; int rc = img_mgmt_read_info(slot, &ver, hash, &flags); diff --git a/subsys/pm/Kconfig b/subsys/pm/Kconfig index 7cc347369b9..6276f5ab383 100644 --- a/subsys/pm/Kconfig +++ b/subsys/pm/Kconfig @@ -41,6 +41,11 @@ config PM_S2RAM When enabled on Cortex-M, and a 'zephyr,memory-region' compatible node with nodelabel 'pm_s2ram' is defined in DT, _cpu_context symbol (located in arch/arm/core/cortex_m/pm_s2ram.c) is placed in linker section given by 'zephyr,memory-region' property of aforementioned node. + Additionally on Cortex-M, if a 'zephyr,memory-region' compatible node with nodelabel + 'pm_s2ram_stack' is defined in DT, this region will be used as a temporary program stack + for the S2RAM resume logic. The assembly reset handling code itself makes a single push of + the return address, but the SoC-specific function (pm_s2ram_mark_check_and_clear) must be + analyzed to determine the required stack size. config PM_S2RAM_CUSTOM_MARKING bool "Use custom marking functions" diff --git a/subsys/storage/stream/stream_flash.c b/subsys/storage/stream/stream_flash.c index 8155ef3dfe3..c611dde9dc4 100644 --- a/subsys/storage/stream/stream_flash.c +++ b/subsys/storage/stream/stream_flash.c @@ -307,6 +307,11 @@ size_t stream_flash_bytes_written(const struct stream_flash_ctx *ctx) return ctx->bytes_written; } +size_t stream_flash_bytes_buffered(const struct stream_flash_ctx *ctx) +{ + return ctx->buf_bytes; +} + #ifdef CONFIG_STREAM_FLASH_INSPECT struct _inspect_flash { size_t buf_len; diff --git a/subsys/testsuite/Kconfig b/subsys/testsuite/Kconfig index dd1aff5b625..9e72a5696fd 100644 --- a/subsys/testsuite/Kconfig +++ b/subsys/testsuite/Kconfig @@ -56,7 +56,7 @@ config COVERAGE_NATIVE_GCOV config COVERAGE_NATIVE_SOURCE bool "Host compiler source based code coverage" depends on NATIVE_BUILD - depends on "${ZEPHYR_TOOLCHAIN_VARIANT}" = "llvm" + depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "llvm" help Build natively with the compiler source based coverage options. Today this is only supported with LLVM diff --git a/tests/application_development/software_bill_of_materials/CMakeLists.txt b/tests/application_development/software_bill_of_materials/CMakeLists.txt index 90fa8976b91..4c07f6bb238 100644 --- a/tests/application_development/software_bill_of_materials/CMakeLists.txt +++ b/tests/application_development/software_bill_of_materials/CMakeLists.txt @@ -10,4 +10,35 @@ target_sources(app PRIVATE ${ZEPHYR_BASE}/misc/empty_file.c) enable_testing() include(CTest) -add_test(NAME spdx_gen COMMAND west spdx -d ${CMAKE_BINARY_DIR}) +set( + SPDX_FILES + app.spdx + zephyr.spdx + build.spdx + modules-deps.spdx +) + +set(SPDX_VERSIONS_TO_TEST "2.2" "2.3") + +foreach(spdx_version ${SPDX_VERSIONS_TO_TEST}) + string(REPLACE "." "_" version_suffix ${spdx_version}) + + add_test( + NAME spdx_gen_${version_suffix} + COMMAND west spdx -d ${CMAKE_BINARY_DIR} --spdx-version ${spdx_version} + ) + + foreach(spdx_file ${SPDX_FILES}) + get_filename_component(basename ${spdx_file} NAME_WE) + + add_test( + NAME spdx_validate_${basename}_${version_suffix} + COMMAND pyspdxtools -i ${CMAKE_BINARY_DIR}/spdx/${spdx_file} + ) + + set_tests_properties( + spdx_validate_${basename}_${version_suffix} + PROPERTIES DEPENDS spdx_gen_${version_suffix} + ) + endforeach() +endforeach() diff --git a/tests/application_development/software_bill_of_materials/testcase.yaml b/tests/application_development/software_bill_of_materials/testcase.yaml index 8436b69fdbe..3fd2eab28e2 100644 --- a/tests/application_development/software_bill_of_materials/testcase.yaml +++ b/tests/application_development/software_bill_of_materials/testcase.yaml @@ -2,7 +2,9 @@ common: tags: - spdx integration_platforms: - - native_sim + - qemu_cortex_m3 + platform_allow: + - qemu_cortex_m3 harness: ctest tests: buildsystem.sbom.spdx: {} diff --git a/tests/boards/nrf/nrfs/Kconfig.sysbuild b/tests/boards/nrf/nrfs/Kconfig.sysbuild index 6cc7dc9575a..6c4c8618f3e 100644 --- a/tests/boards/nrf/nrfs/Kconfig.sysbuild +++ b/tests/boards/nrf/nrfs/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2025 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" +source "$(ZEPHYR_BASE)/share/sysbuild/Kconfig" config REMOTE_BOARD string diff --git a/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig b/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig index 040286af18c..2b474ba2a4c 100644 --- a/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig +++ b/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig @@ -1,4 +1,4 @@ # Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/bap_broadcast_sink/Kconfig" +source "$(ZEPHYR_BASE)/samples/bluetooth/bap_broadcast_sink/Kconfig" diff --git a/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig.sysbuild b/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig.sysbuild index b6f4d0678e8..5f0b50c7563 100644 --- a/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/audio_samples/bap_broadcast_sink/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/bap_broadcast_sink/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/bap_broadcast_sink/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/bluetooth/audio_samples/bap_unicast_client/Kconfig.sysbuild b/tests/bsim/bluetooth/audio_samples/bap_unicast_client/Kconfig.sysbuild index 6db98670507..54467d2a2d2 100644 --- a/tests/bsim/bluetooth/audio_samples/bap_unicast_client/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/audio_samples/bap_unicast_client/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/bap_unicast_client/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/bap_unicast_client/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig b/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig index 8a2dcf8e5ae..7c94a093305 100644 --- a/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig +++ b/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig @@ -1,4 +1,4 @@ # Copyright (c) 2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor/Kconfig" +source "$(ZEPHYR_BASE)/samples/bluetooth/cap_acceptor/Kconfig" diff --git a/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig.sysbuild b/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig.sysbuild index 3b2c35e65c5..a73e90e4288 100644 --- a/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/audio_samples/cap/acceptor/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2023-2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/cap_acceptor/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/cap_acceptor/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig b/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig index 7027c92b590..b21d8aad490 100644 --- a/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig +++ b/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig @@ -1,4 +1,4 @@ # Copyright (c) 2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/cap_initiator/Kconfig" +source "$(ZEPHYR_BASE)/samples/bluetooth/cap_initiator/Kconfig" diff --git a/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig.sysbuild b/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig.sysbuild index c9f3abf294f..fb7ee3a61da 100644 --- a/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/audio_samples/cap/initiator/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2023-2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/cap_initiator/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/cap_initiator/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/bluetooth/audio_samples/ccp/call_control_client/Kconfig.sysbuild b/tests/bsim/bluetooth/audio_samples/ccp/call_control_client/Kconfig.sysbuild index 2fdcdcf687c..fa711c8f6d3 100644 --- a/tests/bsim/bluetooth/audio_samples/ccp/call_control_client/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/audio_samples/ccp/call_control_client/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2023-2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/ccp_call_control_client/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/ccp_call_control_client/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/bluetooth/audio_samples/ccp/call_control_server/Kconfig.sysbuild b/tests/bsim/bluetooth/audio_samples/ccp/call_control_server/Kconfig.sysbuild index f2b0bb8c607..8fe269f15e1 100644 --- a/tests/bsim/bluetooth/audio_samples/ccp/call_control_server/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/audio_samples/ccp/call_control_server/Kconfig.sysbuild @@ -1,7 +1,7 @@ # Copyright (c) 2023-2024 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/bluetooth/ccp_call_control_server/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/ccp_call_control_server/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig b/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig index e2cbc2de917..196e362034e 100644 --- a/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig +++ b/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # source sample's Kconfig, if any -# source "${ZEPHYR_BASE}/samples/bluetooth/central_hr/Kconfig" +# source "$(ZEPHYR_BASE)/samples/bluetooth/central_hr/Kconfig" # OR # source Zephyr Kernel's Kconfig, as below (not both) menu "Zephyr Kernel" diff --git a/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig.sysbuild b/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig.sysbuild index 8a4e25038c4..c0dcdf6e24e 100644 --- a/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig.sysbuild +++ b/tests/bsim/bluetooth/samples/central_hr_peripheral_hr/Kconfig.sysbuild @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # source the samples' Kconfig.sysbuild, if any -source "${ZEPHYR_BASE}/samples/bluetooth/central_hr/Kconfig.sysbuild" +source "$(ZEPHYR_BASE)/samples/bluetooth/central_hr/Kconfig.sysbuild" config NATIVE_SIMULATOR_PRIMARY_MCU_INDEX int diff --git a/tests/bsim/net/sockets/echo_test/Kconfig b/tests/bsim/net/sockets/echo_test/Kconfig index 7c48b4fca91..2a5bde5e9d0 100644 --- a/tests/bsim/net/sockets/echo_test/Kconfig +++ b/tests/bsim/net/sockets/echo_test/Kconfig @@ -1,4 +1,4 @@ # Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 -source "${ZEPHYR_BASE}/samples/net/sockets/echo_client/Kconfig" +source "$(ZEPHYR_BASE)/samples/net/sockets/echo_client/Kconfig" diff --git a/tests/cmake/sysbuild_snippets/Kconfig.sysbuild b/tests/cmake/sysbuild_snippets/Kconfig.sysbuild index e3691432511..bf3fb5fc4b3 100644 --- a/tests/cmake/sysbuild_snippets/Kconfig.sysbuild +++ b/tests/cmake/sysbuild_snippets/Kconfig.sysbuild @@ -19,4 +19,4 @@ config EXPECTED_APP_TEST_FOO_VAL help Expected application value for the test. -source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" +source "$(ZEPHYR_BASE)/share/sysbuild/Kconfig" diff --git a/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf b/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf deleted file mode 100644 index 11d42321cbc..00000000000 --- a/tests/drivers/clock_control/clock_control_api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_TEST_NRF_HF_STARTUP_TIME_US=1000 diff --git a/tests/drivers/clock_control/clock_control_api/testcase.yaml b/tests/drivers/clock_control/clock_control_api/testcase.yaml index 4a192e5e3a7..4578b428282 100644 --- a/tests/drivers/clock_control/clock_control_api/testcase.yaml +++ b/tests/drivers/clock_control/clock_control_api/testcase.yaml @@ -21,7 +21,6 @@ tests: - nrf52dk/nrf52832 - nrf52840dk/nrf52840 - nrf9160dk/nrf9160 - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -32,7 +31,6 @@ tests: - nrf51dk/nrf51822 - nrf52dk/nrf52832 - nrf52840dk/nrf52840 - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml b/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml index 4600202f0f1..708e563900c 100644 --- a/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml +++ b/tests/drivers/clock_control/nrf_clock_calibration/testcase.yaml @@ -8,7 +8,6 @@ tests: - nrf51dk/nrf51822 - nrf52dk/nrf52832 - nrf52840dk/nrf52840 - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml b/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml index 0b1f9ae3c93..17a783a4808 100644 --- a/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml +++ b/tests/drivers/clock_control/nrf_lf_clock_start/testcase.yaml @@ -14,7 +14,6 @@ tests: - nrf9160dk/nrf9160 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -32,7 +31,6 @@ tests: - nrf9160dk/nrf9160 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -66,7 +64,6 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -83,7 +80,6 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -100,7 +96,6 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -117,7 +112,6 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -134,7 +128,6 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -151,7 +144,6 @@ tests: - nrf52840dk/nrf52840 - nrf5340dk/nrf5340/cpuapp - nrf5340dk/nrf5340/cpunet - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/clock_control/onoff/testcase.yaml b/tests/drivers/clock_control/onoff/testcase.yaml index c26eeca5e3d..1f557c918ab 100644 --- a/tests/drivers/clock_control/onoff/testcase.yaml +++ b/tests/drivers/clock_control/onoff/testcase.yaml @@ -7,7 +7,6 @@ tests: - nrf51dk/nrf51822 - nrf52dk/nrf52832 - nrf52840dk/nrf52840 - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - nrf9160dk/nrf9160 diff --git a/tests/drivers/counter/counter_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/counter/counter_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index 54b47926164..00000000000 --- a/tests/drivers/counter/counter_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,34 +0,0 @@ -&timer00 { - prescaler = <6>; - status = "okay"; -}; - -&timer10 { - prescaler = <4>; - status = "okay"; -}; - -&timer20 { - prescaler = <4>; - status = "okay"; -}; - -&timer21 { - prescaler = <4>; - status = "okay"; -}; - -&timer22 { - prescaler = <4>; - status = "okay"; -}; - -&timer23 { - prescaler = <4>; - status = "okay"; -}; - -&timer24 { - prescaler = <4>; - status = "okay"; -}; diff --git a/tests/drivers/flash/common/boards/nrf54l09pdk_nrf54l09_cpuapp.conf b/tests/drivers/flash/common/boards/nrf54l09pdk_nrf54l09_cpuapp.conf deleted file mode 100644 index 821a5e77e5b..00000000000 --- a/tests/drivers/flash/common/boards/nrf54l09pdk_nrf54l09_cpuapp.conf +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_FCB=y -CONFIG_FLASH_MAP=y -CONFIG_SETTINGS=y -CONFIG_SETTINGS_FCB=y diff --git a/tests/drivers/flash/common/testcase.yaml b/tests/drivers/flash/common/testcase.yaml index 0a35ec04cd9..a4e2ac0632e 100644 --- a/tests/drivers/flash/common/testcase.yaml +++ b/tests/drivers/flash/common/testcase.yaml @@ -45,7 +45,6 @@ tests: drivers.flash.common.no_explicit_erase: platform_allow: - nrf54l15dk/nrf54l05/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l10/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpuapp diff --git a/tests/drivers/flash/negative_tests/testcase.yaml b/tests/drivers/flash/negative_tests/testcase.yaml index 7a55212aa3f..7a96f4e65e5 100644 --- a/tests/drivers/flash/negative_tests/testcase.yaml +++ b/tests/drivers/flash/negative_tests/testcase.yaml @@ -6,7 +6,6 @@ tests: drivers.flash.negative_tests: platform_allow: - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_common.overlay b/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_common.overlay deleted file mode 100644 index 8eb1b3c9f9f..00000000000 --- a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_common.overlay +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/ { - resources { - compatible = "test-gpio-basic-api"; - out-gpios = <&gpio1 10 0>; - in-gpios = <&gpio1 11 0>; - }; -}; - -&gpiote20 { - status = "okay"; -}; - -&gpio1 { - status = "okay"; -}; diff --git a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index 7eee797278b..00000000000 --- a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "nrf54l09pdk_nrf54l09_common.overlay" diff --git a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay b/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay deleted file mode 100644 index b0c42fd3d2a..00000000000 --- a/tests/drivers/gpio/gpio_basic_api/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "nrf54l09pdk_nrf54l09_common.overlay" diff --git a/tests/drivers/i2s/i2s_additional/Kconfig b/tests/drivers/i2s/i2s_additional/Kconfig index 3c80dba4853..ee903546708 100644 --- a/tests/drivers/i2s/i2s_additional/Kconfig +++ b/tests/drivers/i2s/i2s_additional/Kconfig @@ -75,6 +75,14 @@ config I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED When set to 'y', test will check that i2s_configure() returns -EINVAL. When set to 'n', test will do the transmission. +config I2S_TEST_EIGHT_CHANNELS_32B_48K_UNSUPPORTED + bool "Skip test with 8 channels, 32 bit word size and 48k sample rate" + depends on !I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED + help + Skip test that is challenging due to high data throughput. + When set to 'y', test will be skipped. + When set to 'n', test will do the transmission. + config I2S_TEST_DATA_FORMAT_I2S_UNSUPPORTED bool "I2S_FMT_DATA_FORMAT_I2S is not supported by the driver" help diff --git a/tests/drivers/i2s/i2s_additional/boards/nrf54h20dk_nrf54h20_cpuapp_aclk.overlay b/tests/drivers/i2s/i2s_additional/boards/nrf54h20dk_nrf54h20_cpuapp_aclk.overlay new file mode 100644 index 00000000000..ad9e06d0793 --- /dev/null +++ b/tests/drivers/i2s/i2s_additional/boards/nrf54h20dk_nrf54h20_cpuapp_aclk.overlay @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&audiopll { + status = "okay"; + frequency = ; +}; + +&tdm130 { + mck-frequency = <12288000>; + mck-clock-source = "ACLK"; + sck-clock-source = "ACLK"; +}; diff --git a/tests/drivers/i2s/i2s_additional/src/main.c b/tests/drivers/i2s/i2s_additional/src/main.c index e8852850cee..0dcfc052bdf 100644 --- a/tests/drivers/i2s/i2s_additional/src/main.c +++ b/tests/drivers/i2s/i2s_additional/src/main.c @@ -19,7 +19,7 @@ LOG_MODULE_REGISTER(i2s_add, LOG_LEVEL_INF); #define NUMBER_OF_CHANNELS 2 #define FRAME_CLK_FREQ 44100 -#define NUM_BLOCKS 20 +#define NUM_BLOCKS 4 #define TIMEOUT 1000 #define SAMPLES_COUNT 64 @@ -519,9 +519,9 @@ ZTEST(i2s_additional, test_02b_four_channels) #endif /* CONFIG_I2S_TEST_FOUR_CHANNELS_UNSUPPORTED */ } -/** @brief Test I2S transfer with eight channels. +/** @brief Test I2S transfer with eight channels, 16 bit and 44.1 kHz. */ -ZTEST(i2s_additional, test_02c_eight_channels) +ZTEST(i2s_additional, test_02c_eight_channels_default) { struct i2s_config i2s_cfg = default_i2s_cfg; @@ -549,6 +549,43 @@ ZTEST(i2s_additional, test_02c_eight_channels) #endif /* CONFIG_I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED */ } +/** @brief Test I2S transfer with eight channels, 32 bit and 48 kHz. + */ +ZTEST(i2s_additional, test_02d_eight_channels_high_throughput) +{ + struct i2s_config i2s_cfg = default_i2s_cfg; + + i2s_cfg.channels = 8; + i2s_cfg.word_size = 32; + i2s_cfg.frame_clk_freq = 48000; + +#if defined(CONFIG_I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED) + int ret; + + ret = i2s_configure(dev_i2s, I2S_DIR_TX, &i2s_cfg); + zassert_equal(ret, -EINVAL, "Unexpected result %d", ret); +#else /* CONFIG_I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED */ + +#if defined(CONFIG_I2S_TEST_EIGHT_CHANNELS_32B_48K_UNSUPPORTED) + /* Skip this test if driver supports 8ch but fails in this configuration. */ + ztest_test_skip(); +#endif + + /* Select format that supports eight channels. */ +#if !defined(CONFIG_I2S_TEST_DATA_FORMAT_PCM_LONG_UNSUPPORTED) + i2s_cfg.format = I2S_FMT_DATA_FORMAT_PCM_LONG; + TC_PRINT("Selected format is I2S_FMT_DATA_FORMAT_PCM_LONG\n"); +#elif !defined(CONFIG_I2S_TEST_DATA_FORMAT_PCM_SHORT_UNSUPPORTED) + i2s_cfg.format = I2S_FMT_DATA_FORMAT_PCM_SHORT; + TC_PRINT("Selected format is I2S_FMT_DATA_FORMAT_PCM_SHORT\n"); +#else +#error "Don't know what format supports eight channels." +#endif + + i2s_dir_both_transfer_long(&i2s_cfg); +#endif /* CONFIG_I2S_TEST_EIGHT_CHANNELS_UNSUPPORTED */ +} + /** @brief Test I2S transfer with format I2S_FMT_DATA_FORMAT_I2S */ ZTEST(i2s_additional, test_03a_format_i2s) diff --git a/tests/drivers/i2s/i2s_additional/testcase.yaml b/tests/drivers/i2s/i2s_additional/testcase.yaml index 9dcb82d61f3..77a18c3ab9d 100644 --- a/tests/drivers/i2s/i2s_additional/testcase.yaml +++ b/tests/drivers/i2s/i2s_additional/testcase.yaml @@ -26,6 +26,17 @@ tests: drivers.i2s.additional.gpio_loopback.54h: harness_config: fixture: i2s_loopback + extra_configs: + - CONFIG_I2S_TEST_EIGHT_CHANNELS_32B_48K_UNSUPPORTED=y + platform_allow: + - nrf54h20dk/nrf54h20/cpuapp + integration_platforms: + - nrf54h20dk/nrf54h20/cpuapp + + drivers.i2s.additional.gpio_loopback.54h.aclk: + harness_config: + fixture: i2s_loopback + extra_args: EXTRA_DTC_OVERLAY_FILE="boards/nrf54h20dk_nrf54h20_cpuapp_aclk.overlay" platform_allow: - nrf54h20dk/nrf54h20/cpuapp integration_platforms: diff --git a/tests/drivers/retained_mem/api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf b/tests/drivers/retained_mem/api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf deleted file mode 100644 index c15ba3ed96d..00000000000 --- a/tests/drivers/retained_mem/api/boards/nrf54l09pdk_nrf54l09_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_POWEROFF=y diff --git a/tests/drivers/retained_mem/api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/retained_mem/api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index e304ecbbfb1..00000000000 --- a/tests/drivers/retained_mem/api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,22 +0,0 @@ -/ { - cpuapp_sram@2002e000 { - compatible = "zephyr,memory-region", "mmio-sram"; - reg = <0x2002e000 DT_SIZE_K(4)>; - zephyr,memory-region = "RetainedMem"; - status = "okay"; - - retainedmem0: retainedmem { - compatible = "zephyr,retained-ram"; - status = "okay"; - }; - }; - - aliases { - retainedmemtestdevice = &retainedmem0; - }; -}; - -&cpuapp_sram { - reg = <0x20000000 DT_SIZE_K(184)>; - ranges = <0x0 0x20000000 0x2e000>; -}; diff --git a/tests/drivers/retained_mem/api/testcase.yaml b/tests/drivers/retained_mem/api/testcase.yaml index 88bd6ae16ff..e89ef395371 100644 --- a/tests/drivers/retained_mem/api/testcase.yaml +++ b/tests/drivers/retained_mem/api/testcase.yaml @@ -10,7 +10,6 @@ tests: - nrf5340dk/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l05/cpuapp - nrf54l15dk/nrf54l10/cpuapp - nrf54l15dk/nrf54l15/cpuapp diff --git a/tests/drivers/sensor/temp_sensor/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/sensor/temp_sensor/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index b1f2a2b9ec5..00000000000 --- a/tests/drivers/sensor/temp_sensor/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -temp_sensor: &temp { - status = "okay"; -}; diff --git a/tests/drivers/spi/spi_loopback/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/spi/spi_loopback/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index cdb0d0dbcec..00000000000 --- a/tests/drivers/spi/spi_loopback/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - spi21_default: spi21_default { - group1 { - psels = , - , - ; - }; - }; - - spi21_sleep: spi21_sleep { - group1 { - psels = , - , - ; - low-power-enable; - }; - }; -}; - -&spi21 { - status = "okay"; - pinctrl-0 = <&spi21_default>; - pinctrl-1 = <&spi21_sleep>; - pinctrl-names = "default", "sleep"; - overrun-character = <0x00>; - zephyr,pm-device-runtime-auto; - slow@0 { - compatible = "test-spi-loopback-slow"; - reg = <0>; - spi-max-frequency = ; - }; - fast@0 { - compatible = "test-spi-loopback-fast"; - reg = <0>; - spi-max-frequency = ; - }; -}; - -&gpio1 { - status = "okay"; -}; diff --git a/tests/drivers/timer/nrf_grtc_timer/src/main.c b/tests/drivers/timer/nrf_grtc_timer/src/main.c index 7e2b440a9aa..bcb57519f3b 100644 --- a/tests/drivers/timer/nrf_grtc_timer/src/main.c +++ b/tests/drivers/timer/nrf_grtc_timer/src/main.c @@ -224,8 +224,8 @@ static bool stress_test_action(int ctx, int id) int ticks = 10 + (sys_rand32_get() & 0x3F); k_timeout_t t = K_TICKS(ticks); - timer->exp_expire = k_ticks_to_cyc_floor32(sys_clock_tick_get_32() + ticks); timer->state = TIMER_PREPARE; + timer->exp_expire = k_ticks_to_cyc_floor32(sys_clock_tick_get_32() + ticks); timer->ticks = ticks; k_timer_start(&timer->timer, t, K_NO_WAIT); atomic_inc(&test_active_cnt); diff --git a/tests/drivers/timer/nrf_grtc_timer/testcase.yaml b/tests/drivers/timer/nrf_grtc_timer/testcase.yaml index 57835bc386a..140d9b22259 100644 --- a/tests/drivers/timer/nrf_grtc_timer/testcase.yaml +++ b/tests/drivers/timer/nrf_grtc_timer/testcase.yaml @@ -2,21 +2,19 @@ common: tags: - drivers platform_allow: - - nrf54l15dk/nrf54l15/cpuapp - - nrf54l15dk/nrf54l15/cpuflpr - - nrf54l15bsim/nrf54l15/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad - nrf54h20dk/nrf54h20/cpuppr - - nrf54l20pdk/nrf54l20/cpuapp + - nrf54l15dk/nrf54l15/cpuapp + - nrf54l15dk/nrf54l15/cpuflpr + - nrf54l15bsim/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - - nrf54l20pdk/nrf54l20/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuflpr - ophelia4ev/nrf54l15/cpuapp - ophelia4ev/nrf54l15/cpuflpr integration_platforms: - - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp + timeout: 30 tests: drivers.timer.nrf_grtc_timer: {} drivers.timer.nrf_grtc_timer.no_assert: diff --git a/tests/drivers/uart/uart_async_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/uart/uart_async_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index ed4a2de1891..00000000000 --- a/tests/drivers/uart/uart_async_api/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,26 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default_alt: uart21_default_alt { - group1 { - psels = , - ; - }; - }; - - uart21_sleep_alt: uart21_sleep_alt { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - pinctrl-0 = <&uart21_default_alt>; - pinctrl-1 = <&uart21_sleep_alt>; - pinctrl-names = "default", "sleep"; - current-speed = <115200>; -}; diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index cf481b7a161..00000000000 --- a/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,31 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - , - , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; - hw-flow-control; -}; diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay deleted file mode 100644 index cf481b7a161..00000000000 --- a/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_cpuflpr.overlay +++ /dev/null @@ -1,31 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - , - , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; - hw-flow-control; -}; diff --git a/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_dual_uart.overlay b/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_dual_uart.overlay deleted file mode 100644 index 505993a7308..00000000000 --- a/tests/drivers/uart/uart_elementary/boards/nrf54l09pdk_nrf54l09_dual_uart.overlay +++ /dev/null @@ -1,85 +0,0 @@ -/* SPDX-License-Identifier: Apache-2.0 */ - -/ { - chosen { - zephyr,console = &uart30; - zephyr,shell-uart = &uart30; - }; -}; - -&pinctrl { - uart20_default: uart20_default { - group1 { - psels = , - ; - bias-pull-up; - }; - }; - - uart20_sleep: uart20_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; - - uart21_default: uart21_default { - group1 { - psels = , - ; - bias-pull-up; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; - - uart30_default: uart30_default { - group1 { - psels = ; - }; - group2 { - psels = ; - bias-pull-up; - }; - }; - - uart30_sleep: uart30_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - - -&uart30 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart30_default>; - pinctrl-1 = <&uart30_sleep>; - pinctrl-names = "default", "sleep"; -}; - -dut: &uart20 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart20_default>; - pinctrl-1 = <&uart20_sleep>; - pinctrl-names = "default", "sleep"; -}; - -dut_aux: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; -}; diff --git a/tests/drivers/uart/uart_elementary/testcase.yaml b/tests/drivers/uart/uart_elementary/testcase.yaml index 7afdc874269..cbf222fa72c 100644 --- a/tests/drivers/uart/uart_elementary/testcase.yaml +++ b/tests/drivers/uart/uart_elementary/testcase.yaml @@ -11,8 +11,6 @@ tests: filter: CONFIG_SERIAL_SUPPORT_INTERRUPT platform_allow: - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuapp @@ -55,8 +53,6 @@ tests: drivers.uart.uart_elementary_dual_nrf54l: filter: CONFIG_SERIAL_SUPPORT_INTERRUPT platform_allow: - - nrf54l09pdk/nrf54l09/cpuapp - - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuapp @@ -64,8 +60,6 @@ tests: - ophelia4ev/nrf54l15/cpuapp - ophelia4ev/nrf54l15/cpuflpr extra_args: - - platform:nrf54l09pdk/nrf54l09/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" - - platform:nrf54l09pdk/nrf54l09/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" - platform:nrf54l15dk/nrf54l15/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" - platform:nrf54l15dk/nrf54l15/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" - platform:nrf54lm20dk/nrf54lm20a/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay" @@ -77,8 +71,6 @@ tests: drivers.uart.uart_elementary_dual_setup_mismatch_nrf54l: filter: CONFIG_SERIAL_SUPPORT_INTERRUPT platform_allow: - - nrf54l09pdk/nrf54l09/cpuapp - - nrf54l09pdk/nrf54l09/cpuflpr - nrf54l15dk/nrf54l15/cpuapp - nrf54l15dk/nrf54l15/cpuflpr - nrf54lm20dk/nrf54lm20a/cpuapp @@ -86,8 +78,6 @@ tests: - ophelia4ev/nrf54l15/cpuapp - ophelia4ev/nrf54l15/cpuflpr extra_args: - - platform:nrf54l09pdk/nrf54l09/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" - - platform:nrf54l09pdk/nrf54l09/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l09pdk_nrf54l09_dual_uart.overlay" - platform:nrf54l15dk/nrf54l15/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" - platform:nrf54l15dk/nrf54l15/cpuflpr:"DTC_OVERLAY_FILE=boards/nrf54l15dk_nrf54l15_dual_uart.overlay" - platform:nrf54lm20dk/nrf54lm20a/cpuapp:"DTC_OVERLAY_FILE=boards/nrf54lm20dk_nrf54lm20a_dual_uart.overlay" diff --git a/tests/drivers/uart/uart_mix_fifo_poll/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/uart/uart_mix_fifo_poll/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index 945b8628e7a..00000000000 --- a/tests/drivers/uart/uart_mix_fifo_poll/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - , - , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; - hw-flow-control; -}; - -counter_dev: &timer00 { - status = "okay"; -}; - -&grtc { - interrupts = <228 2>; -}; diff --git a/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml b/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml index fee2d1f4646..0ba5944cca6 100644 --- a/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml +++ b/tests/drivers/uart/uart_mix_fifo_poll/testcase.yaml @@ -12,7 +12,6 @@ common: - nrf5340bsim/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54l15bsim/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp diff --git a/tests/drivers/uart/uart_pm/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/uart/uart_pm/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index 033aab401ac..00000000000 --- a/tests/drivers/uart/uart_pm/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&pinctrl { - uart21_default: uart21_default { - group1 { - psels = , - ; - }; - }; - - uart21_sleep: uart21_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; -}; - -/ { - chosen { - zephyr,console = &uart20; - }; -}; - -dut: &uart21 { - status = "okay"; - current-speed = <115200>; - pinctrl-0 = <&uart21_default>; - pinctrl-1 = <&uart21_sleep>; - pinctrl-names = "default", "sleep"; -}; diff --git a/tests/drivers/uart/uart_pm/testcase.yaml b/tests/drivers/uart/uart_pm/testcase.yaml index d775e30ae71..008eae9d3d7 100644 --- a/tests/drivers/uart/uart_pm/testcase.yaml +++ b/tests/drivers/uart/uart_pm/testcase.yaml @@ -8,7 +8,6 @@ common: - nrf52840dk/nrf52840 - nrf5340bsim/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54l15bsim/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp @@ -36,7 +35,6 @@ tests: - nrf52_bsim - nrf5340bsim/nrf5340/cpuapp - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54l15bsim/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp @@ -50,7 +48,6 @@ tests: - CONFIG_UART_0_ENHANCED_POLL_OUT=y platform_exclude: - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -70,7 +67,6 @@ tests: - CONFIG_UART_0_ENHANCED_POLL_OUT=y platform_exclude: - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp @@ -96,7 +92,6 @@ tests: - CONFIG_UART_0_ENHANCED_POLL_OUT=y platform_exclude: - nrf54h20dk/nrf54h20/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp diff --git a/tests/drivers/watchdog/wdt_error_cases/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/watchdog/wdt_error_cases/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index 8d3dce3b380..00000000000 --- a/tests/drivers/watchdog/wdt_error_cases/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2024 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&wdt31 { - status = "okay"; -}; diff --git a/tests/drivers/watchdog/wdt_error_cases/testcase.yaml b/tests/drivers/watchdog/wdt_error_cases/testcase.yaml index f8da32ca72d..438b59e9271 100644 --- a/tests/drivers/watchdog/wdt_error_cases/testcase.yaml +++ b/tests/drivers/watchdog/wdt_error_cases/testcase.yaml @@ -9,7 +9,6 @@ tests: drivers.watchdog.wdt_error_cases: platform_allow: - nrf5340dk/nrf5340/cpuapp - - nrf54l09pdk/nrf54l09/cpuapp - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpurad - nrf54l15dk/nrf54l15/cpuapp diff --git a/tests/drivers/watchdog/wdt_variables/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay b/tests/drivers/watchdog/wdt_variables/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay deleted file mode 100644 index dc1ea1a9ddc..00000000000 --- a/tests/drivers/watchdog/wdt_variables/boards/nrf54l09pdk_nrf54l09_cpuapp.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2025 Nordic Semiconductor ASA - * - * SPDX-License-Identifier: Apache-2.0 - */ - -&wdt31 { - status = "okay"; -}; diff --git a/tests/drivers/watchdog/wdt_variables/testcase.yaml b/tests/drivers/watchdog/wdt_variables/testcase.yaml index b504cb5b6b8..434081c499f 100644 --- a/tests/drivers/watchdog/wdt_variables/testcase.yaml +++ b/tests/drivers/watchdog/wdt_variables/testcase.yaml @@ -14,7 +14,6 @@ tests: platform_allow: - nrf54h20dk/nrf54h20/cpuapp - nrf54h20dk/nrf54h20/cpuppr - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - nrf54lm20dk/nrf54lm20a/cpuflpr diff --git a/tests/kernel/sleep/src/usleep.c b/tests/kernel/sleep/src/usleep.c index 8a234a27a19..a7c212e59b9 100644 --- a/tests/kernel/sleep/src/usleep.c +++ b/tests/kernel/sleep/src/usleep.c @@ -42,6 +42,11 @@ * loaded to its comparator. */ #define MAXIMUM_SHORTEST_TICKS 2 +#elif defined(CONFIG_SOC_NRF54H20_CPUPPR) && (CONFIG_SYS_CLOCK_TICKS_PER_SEC > 16384) +/* Similar for nRF54H20 cpuppr (RISC-V core), it has a slow CPU clock + * compared to other cores, causing the increased overhead. + */ +#define MAXIMUM_SHORTEST_TICKS 4 #else #define MAXIMUM_SHORTEST_TICKS 1 #endif diff --git a/tests/kernel/timer/timer_behavior/boards/nrf54l09pdk_nrf54l09_cpuapp.conf b/tests/kernel/timer/timer_behavior/boards/nrf54l09pdk_nrf54l09_cpuapp.conf deleted file mode 100644 index 4b13bc80c7f..00000000000 --- a/tests/kernel/timer/timer_behavior/boards/nrf54l09pdk_nrf54l09_cpuapp.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SYS_CLOCK_TICKS_PER_SEC=10000 diff --git a/tests/subsys/fs/fcb/testcase.yaml b/tests/subsys/fs/fcb/testcase.yaml index c915dd56840..572a8fe49a7 100644 --- a/tests/subsys/fs/fcb/testcase.yaml +++ b/tests/subsys/fs/fcb/testcase.yaml @@ -12,13 +12,12 @@ tests: - native_sim filesystem.fcb.no_erase: platform_allow: - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - nrf54lm20dk/nrf54lm20a/cpuapp - ophelia4ev/nrf54l15/cpuapp - native_sim integration_platforms: - - nrf54l09pdk/nrf54l09/cpuapp + - nrf54l15dk/nrf54l15/cpuapp - native_sim filesystem.fcb.native_sim.no_erase: extra_args: CONFIG_FLASH_SIMULATOR_EXPLICIT_ERASE=n diff --git a/tests/subsys/ipc/ipc_sessions/Kconfig.sysbuild b/tests/subsys/ipc/ipc_sessions/Kconfig.sysbuild index 3c064f59d52..ad83e2107b6 100644 --- a/tests/subsys/ipc/ipc_sessions/Kconfig.sysbuild +++ b/tests/subsys/ipc/ipc_sessions/Kconfig.sysbuild @@ -4,7 +4,7 @@ # SPDX-License-Identifier: Apache-2.0 # -source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" +source "$(ZEPHYR_BASE)/share/sysbuild/Kconfig" config REMOTE_BOARD string "The board used for remote target" diff --git a/tests/subsys/storage/stream/stream_flash/src/main.c b/tests/subsys/storage/stream/stream_flash/src/main.c index b691a7e0792..944892e256f 100644 --- a/tests/subsys/storage/stream/stream_flash/src/main.c +++ b/tests/subsys/storage/stream/stream_flash/src/main.c @@ -276,6 +276,42 @@ ZTEST(lib_stream_flash, test_stream_flash_bytes_written) VERIFY_WRITTEN(BUF_LEN, BUF_LEN); } +ZTEST(lib_stream_flash, test_stream_flash_bytes_buffered) +{ + int rc; + size_t buffered; + + init_target(); + + /* Initially no bytes should be buffered */ + buffered = stream_flash_bytes_buffered(&ctx); + zassert_equal(buffered, 0, "expected no buffered bytes"); + + /* Write partial buffer */ + rc = stream_flash_buffered_write(&ctx, write_buf, BUF_LEN - 128, false); + zassert_equal(rc, 0, "expected success"); + + /* Verify buffered bytes */ + buffered = stream_flash_bytes_buffered(&ctx); + zassert_equal(buffered, BUF_LEN - 128, "expected buffered bytes"); + + /* Write remaining buffer */ + rc = stream_flash_buffered_write(&ctx, write_buf, 128, false); + zassert_equal(rc, 0, "expected success"); + + /* After auto-flush, no bytes should be buffered */ + buffered = stream_flash_bytes_buffered(&ctx); + zassert_equal(buffered, 0, "expected no buffered bytes"); + + /* Write more than buffer size to trigger auto-flush */ + rc = stream_flash_buffered_write(&ctx, write_buf, BUF_LEN + 128, false); + zassert_equal(rc, 0, "expected success"); + + /* Verify buffered bytes */ + buffered = stream_flash_bytes_buffered(&ctx); + zassert_equal(buffered, 128, "expected remaining buffered bytes after auto-flush"); +} + ZTEST(lib_stream_flash, test_stream_flash_buf_size_greater_than_page_size) { int rc; diff --git a/tests/subsys/storage/stream/stream_flash/testcase.yaml b/tests/subsys/storage/stream/stream_flash/testcase.yaml index 3dc0a660f2f..bd53b4438a9 100644 --- a/tests/subsys/storage/stream/stream_flash/testcase.yaml +++ b/tests/subsys/storage/stream/stream_flash/testcase.yaml @@ -22,7 +22,6 @@ tests: # common platforms could bring them here too so filter these out. filter: not dt_compat_enabled("zephyr,sim-flash") platform_allow: - - nrf54l09pdk/nrf54l09/cpuapp - nrf54l15dk/nrf54l15/cpuapp - ophelia4ev/nrf54l15/cpuapp extra_configs: diff --git a/west.yml b/west.yml index 17e5d7cf22d..b9f4cec9457 100644 --- a/west.yml +++ b/west.yml @@ -200,7 +200,7 @@ manifest: groups: - hal - name: hal_nordic - revision: 54f33f10a0b826174fb145f155afa61ce5a44b93 + revision: d0cef2363e572679deba0e796ef6c77f1188bb04 path: modules/hal/nordic groups: - hal