diff --git a/boards/ugl/uhk-80/Kconfig.defconfig b/boards/ugl/uhk-80/Kconfig.defconfig index e1aa2c962..f8ac2f245 100644 --- a/boards/ugl/uhk-80/Kconfig.defconfig +++ b/boards/ugl/uhk-80/Kconfig.defconfig @@ -23,6 +23,11 @@ if BT_DIS && BT_DIS_PNP endif # BT_DIS && BT_DIS_PNP if BOARD_UHK_80_LEFT + config HAS_PM + default y + config HW_STACK_PROTECTION + default ARCH_HAS_STACK_PROTECTION + config USB_DEVICE_PRODUCT default "UHK 80 left half bootloader" if MCUBOOT config USB_DEVICE_PID @@ -30,6 +35,11 @@ if BOARD_UHK_80_LEFT endif # BOARD_UHK_80_LEFT if BOARD_UHK_80_RIGHT + config HAS_PM + default y + config HW_STACK_PROTECTION + default ARCH_HAS_STACK_PROTECTION + config USB_DEVICE_PRODUCT default "UHK 80 right half bootloader" if MCUBOOT config USB_DEVICE_PID @@ -37,6 +47,9 @@ if BOARD_UHK_80_RIGHT endif # BOARD_UHK_80_RIGHT if BOARD_UHK_DONGLE + config HW_STACK_PROTECTION + default ARCH_HAS_STACK_PROTECTION + config USB_DEVICE_PRODUCT default "UHK dongle bootloader" if MCUBOOT config USB_DEVICE_PID @@ -59,6 +72,3 @@ if BT config BT_DEVICE_APPEARANCE default 961 endif # BT - -config BT_CTLR - default BT diff --git a/boards/ugl/uhk-80/board.c b/boards/ugl/uhk-80/board.c index 1f8d0c317..5cb17a5ce 100644 --- a/boards/ugl/uhk-80/board.c +++ b/boards/ugl/uhk-80/board.c @@ -6,6 +6,19 @@ #include #include +#include + +__weak void pm_state_exit_post_ops(enum pm_state state, uint8_t substate_id) +{ + ARG_UNUSED(state); + ARG_UNUSED(substate_id); +} + +__weak void pm_state_set(enum pm_state state, uint8_t substate_id) +{ + ARG_UNUSED(state); + ARG_UNUSED(substate_id); +} #ifdef CONFIG_BOARD_UHK_DONGLE_NRF52840 static int board_uhk_dongle_nrf52840_init(void) diff --git a/boards/ugl/uhk-80/board.cmake b/boards/ugl/uhk-80/board.cmake index f95878945..1ebf65263 100644 --- a/boards/ugl/uhk-80/board.cmake +++ b/boards/ugl/uhk-80/board.cmake @@ -2,8 +2,8 @@ board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000") board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") -include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) diff --git a/device/prj.conf.overlays/ble_hid.conf b/device/prj.conf.overlays/ble_hid.conf index c04763694..4f5314ffe 100644 --- a/device/prj.conf.overlays/ble_hid.conf +++ b/device/prj.conf.overlays/ble_hid.conf @@ -7,6 +7,7 @@ CONFIG_BT_MAX_PAIRED=20 # use BLE HID over GATT from c2usb CONFIG_C2USB_BLUETOOTH=y +CONFIG_C2USB_HOGP_LOG_LEVEL_DBG=y # battery status to generic client CONFIG_BT_BAS=y # device information to generic client diff --git a/device/prj.conf.overlays/c2usb.conf b/device/prj.conf.overlays/c2usb.conf index de59a510c..ef0b41180 100644 --- a/device/prj.conf.overlays/c2usb.conf +++ b/device/prj.conf.overlays/c2usb.conf @@ -6,7 +6,6 @@ CONFIG_NEWLIB_LIBC_NANO=y # CONFIG_WARN_EXPERIMENTAL=y # CONFIG_UDC_DRIVER_LOG_LEVEL_DBG=y -CONFIG_C2USB_HOGP_LOG_LEVEL_DBG=y CONFIG_C2USB_UDC_MAC_LOG_LEVEL_DBG=y CONFIG_WARN_EXPERIMENTAL=n @@ -18,5 +17,4 @@ CONFIG_C2USB_UDC_MAC=y CONFIG_C2USB_UDC_MAC_THREAD_STACK_SIZE=2048 # needed as at suspend the msgq is flooded otherwise -CONFIG_C2USB_UDC_MAC_MSGQ_SIZE=32 - +CONFIG_C2USB_UDC_MAC_MSGQ_SIZE=24 diff --git a/device/prj.conf.overlays/nrf_shared.conf b/device/prj.conf.overlays/nrf_shared.conf index b5a117ad2..97d7b7f77 100644 --- a/device/prj.conf.overlays/nrf_shared.conf +++ b/device/prj.conf.overlays/nrf_shared.conf @@ -30,8 +30,8 @@ CONFIG_BT_ATT_TX_COUNT=10 CONFIG_BT_CONN_TX_MAX=6 CONFIG_BT_L2CAP_TX_BUF_COUNT=12 +CONFIG_BT_USER_DATA_LEN_UPDATE=n # negotiate larger MTU for NUS -CONFIG_BT_USER_DATA_LEN_UPDATE=y CONFIG_BT_BUF_ACL_RX_SIZE=251 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_L2CAP_TX_MTU=247 @@ -99,3 +99,5 @@ CONFIG_SPEED_OPTIMIZATIONS=y # macro evaluation can take some depth... CONFIG_MAIN_STACK_SIZE=4096 +# we are out of RAM, limit required heap to minimum +CONFIG_NEWLIB_LIBC_MIN_REQUIRED_HEAP_SIZE=0 diff --git a/device/src/bt_advertise.c b/device/src/bt_advertise.c index 4ee0e6c32..a9e579952 100644 --- a/device/src/bt_advertise.c +++ b/device/src/bt_advertise.c @@ -143,7 +143,7 @@ uint8_t BtAdvertise_Start(adv_config_t advConfig) case ADVERTISE_NUS | ADVERTISE_HID: LOG_DBG("Adv: advertise nus+hid."); /* our devices don't check service uuids, so hid advertisement effectively advertises nus too */ - advParam = *BT_LE_ADV_CONN_ONE_TIME; + advParam = *BT_LE_ADV_CONN_FAST_1; err = BT_LE_ADV_START(&advParam, adHid, sdHid); break; @@ -152,13 +152,13 @@ uint8_t BtAdvertise_Start(adv_config_t advConfig) LOG_DBG("Adv: advertise nus, with allow list."); setFilters(advConfig); - advParam = *BT_LE_ADV_CONN_ONE_TIME; - advParam.options = BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME | BT_LE_ADV_OPT_FILTER_CONN | BT_LE_ADV_OPT_USE_IDENTITY; + advParam = *BT_LE_ADV_CONN_FAST_1; + advParam.options = BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_FILTER_CONN | BT_LE_ADV_OPT_USE_IDENTITY; err = BT_LE_ADV_START(&advParam, BY_SIDE(adNusLeft, adNusRight), sdNus); } else { LOG_DBG("Adv: advertise nus, without allow list."); - advParam = *BT_LE_ADV_CONN_ONE_TIME; + advParam = *BT_LE_ADV_CONN_FAST_1; err = BT_LE_ADV_START(&advParam, BY_SIDE(adNusLeft, adNusRight), sdNus); } break; @@ -167,21 +167,15 @@ uint8_t BtAdvertise_Start(adv_config_t advConfig) LOG_DBG("Adv: direct advertise nus, with allow list."); setFilters(advConfig); - advParam = *BT_LE_ADV_CONN_ONE_TIME; - advParam.options = BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME | BT_LE_ADV_OPT_FILTER_CONN | BT_LE_ADV_OPT_USE_IDENTITY; + advParam = *BT_LE_ADV_CONN_FAST_1; + advParam.options = BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_FILTER_CONN | BT_LE_ADV_OPT_USE_IDENTITY; err = BT_LE_ADV_START(&advParam, BY_SIDE(adNusLeft, adNusRight), sdNus); } else { LOG_DBG("Adv: direct advertise nus, without allow list."); - advParam = *BT_LE_ADV_CONN_ONE_TIME; + advParam = *BT_LE_ADV_CONN_FAST_1; err = BT_LE_ADV_START(&advParam, BY_SIDE(adNusLeft, adNusRight), sdNus); } - - //// TODO: fix and reenable this? - // printk("Advertising against %s", GetAddrString(advConfig.addr)); - // advParam = *BT_LE_ADV_CONN_DIR_LOW_DUTY(advConfig.addr); - // advParam.options |= BT_LE_ADV_OPT_DIR_ADDR_RPA; - // err = BT_LE_ADV_START(&advParam, BY_SIDE(adNusLeft, adNusRight), sdNus); break; default: LOG_INF("Adv: Attempted to start advertising without any type! Ignoring."); diff --git a/device/src/bt_conn.c b/device/src/bt_conn.c index 28ea34813..39de9e54a 100644 --- a/device/src/bt_conn.c +++ b/device/src/bt_conn.c @@ -265,12 +265,16 @@ char *GetPeerStringByConnId(uint8_t connectionId) { static struct bt_conn_le_data_len_param *data_len; static void enableDataLengthExtension(struct bt_conn *conn) { +#if CONFIG_BT_USER_DATA_LEN_UPDATE data_len = BT_LE_DATA_LEN_PARAM_MAX; int err = bt_conn_le_data_len_update(conn, data_len); if (err) { LOG_INF("LE data length update failed: %d", err); } +#else + (void)conn; +#endif } #if DEVICE_IS_UHK80_RIGHT @@ -624,7 +628,6 @@ static void connected(struct bt_conn *conn, uint8_t err) { // Without this, linux pairing fails, because tiny 27 byte packets // exhaust acl buffers easily - enableDataLengthExtension(conn); if (!DEBUG_STRESS_GATT) { requestMtuExchange(conn); } diff --git a/device/src/keyboard/charger.c b/device/src/keyboard/charger.c index e7feb1304..998811c3d 100644 --- a/device/src/keyboard/charger.c +++ b/device/src/keyboard/charger.c @@ -4,7 +4,6 @@ #include "charger.h" #include "battery_window_calculator.h" #include "keyboard/charger.h" -#include "nrf52840.h" #include "oled/screens/notification_screen.h" #include "power_mode.h" #include "shell.h" diff --git a/device/sysbuild.conf b/device/sysbuild.conf index 3565f9dbd..3e7ec5666 100644 --- a/device/sysbuild.conf +++ b/device/sysbuild.conf @@ -1,3 +1,4 @@ SB_CONFIG_BOOTLOADER_MCUBOOT=y SB_CONFIG_PARTITION_MANAGER=y SB_CONFIG_MCUBOOT_MODE_SINGLE_APP=y +SB_CONFIG_MCUBOOT_APP_SYNC_UPDATEABLE_IMAGES=n diff --git a/patches/core/0003-cmake-add-ihex-binary-output-option.patch b/patches/core/0003-cmake-add-ihex-binary-output-option.patch deleted file mode 100644 index 842afbea5..000000000 --- a/patches/core/0003-cmake-add-ihex-binary-output-option.patch +++ /dev/null @@ -1,40 +0,0 @@ -From e4f2184a0371bdeee7d85dccf49f384f1862ef61 Mon Sep 17 00:00:00 2001 -From: Benedek Kupper -Date: Thu, 19 Jun 2025 10:39:21 +0200 -Subject: [PATCH] cmake: add ihex binary output option - ---- - cmake/extension/function.cmake | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/cmake/extension/function.cmake b/cmake/extension/function.cmake -index ad53bf4..6d1000d 100644 ---- a/cmake/extension/function.cmake -+++ b/cmake/extension/function.cmake -@@ -583,12 +583,22 @@ function(mcux_convert_binary) - if (${CONFIG_TOOLCHAIN} STREQUAL "armgcc") - set(OBJDUMP_BIN_CMD "-Osrec") - elseif (${CONFIG_TOOLCHAIN} STREQUAL "iar") -- set(OBJDUMP_BIN_CMD "--srec") -+ set(OBJDUMP_BIN_CMD "--srec") - elseif (${CONFIG_TOOLCHAIN} STREQUAL "mdk") - set(OBJDUMP_BIN_CMD "--m32combined") - elseif (${CONFIG_TOOLCHAIN} STREQUAL "codewarrior") - set(OBJDUMP_BIN_CMD "-srec") - endif () -+ elseif(${FILE_EXT} STREQUAL ".hex") -+ if (${CONFIG_TOOLCHAIN} STREQUAL "armgcc") -+ set(OBJDUMP_BIN_CMD "-Oihex") -+ elseif (${CONFIG_TOOLCHAIN} STREQUAL "iar") -+ set(OBJDUMP_BIN_CMD "--intel") -+ elseif (${CONFIG_TOOLCHAIN} STREQUAL "mdk") -+ set(OBJDUMP_BIN_CMD "--i32combined") -+ elseif (${CONFIG_TOOLCHAIN} STREQUAL "codewarrior") -+ set(OBJDUMP_BIN_CMD "-ihex") -+ endif () - endif() - if (${CONFIG_TOOLCHAIN} STREQUAL "codewarrior") - if(NOT __EXTRA_ARGS) --- -2.44.0 - diff --git a/patches/mcuboot/0003-zephyr-cmake-fails-early-and-with-meaningful-message.patch b/patches/mcuboot/0003-zephyr-cmake-fails-early-and-with-meaningful-message.patch deleted file mode 100644 index 1c400525e..000000000 --- a/patches/mcuboot/0003-zephyr-cmake-fails-early-and-with-meaningful-message.patch +++ /dev/null @@ -1,67 +0,0 @@ -From edcda8be37a5dbba0eeb01e97822358ac933ae24 Mon Sep 17 00:00:00 2001 -From: Benedek Kupper -Date: Tue, 12 Aug 2025 23:11:10 +0200 -Subject: [PATCH] zephyr: cmake fails early and with meaningful message - ---- - boot/zephyr/CMakeLists.txt | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/boot/zephyr/CMakeLists.txt b/boot/zephyr/CMakeLists.txt -index 3a340646..b51a729d 100644 ---- a/boot/zephyr/CMakeLists.txt -+++ b/boot/zephyr/CMakeLists.txt -@@ -419,7 +419,7 @@ function(dt_get_parent node) - string(FIND "${${node}}" "/" pos REVERSE) - - if(pos EQUAL -1) -- message(ERROR "Unable to get parent of node: ${${node}}") -+ message(FATAL_ERROR "Unable to get parent of node: ${${node}}") - endif() - - string(SUBSTRING "${${node}}" 0 ${pos} ${node}) -@@ -427,7 +427,7 @@ function(dt_get_parent node) - endfunction() - - if(CONFIG_BOOT_MAX_IMG_SECTORS_AUTO) -- dt_nodelabel(slot0_flash NODELABEL "slot0_partition") -+ dt_nodelabel(slot0_flash NODELABEL "slot0_partition" REQUIRED) - dt_prop(slot0_size PATH "${slot0_flash}" PROPERTY "reg" INDEX 1) - dt_get_parent(slot0_flash) - dt_get_parent(slot0_flash) -@@ -442,7 +442,7 @@ if(CONFIG_BOOT_MAX_IMG_SECTORS_AUTO) - endif() - - if(NOT CONFIG_SINGLE_APPLICATION_SLOT) -- dt_nodelabel(slot1_flash NODELABEL "slot1_partition") -+ dt_nodelabel(slot1_flash NODELABEL "slot1_partition" REQUIRED) - dt_prop(slot1_size PATH "${slot1_flash}" PROPERTY "reg" INDEX 1) - dt_get_parent(slot1_flash) - dt_get_parent(slot1_flash) -@@ -472,12 +472,12 @@ endif() - if(SYSBUILD) - if(CONFIG_SINGLE_APPLICATION_SLOT OR CONFIG_BOOT_FIRMWARE_LOADER OR CONFIG_BOOT_SWAP_USING_SCRATCH OR CONFIG_BOOT_SWAP_USING_MOVE OR CONFIG_BOOT_UPGRADE_ONLY OR CONFIG_BOOT_DIRECT_XIP OR CONFIG_BOOT_RAM_LOAD) - # TODO: RAM LOAD support -- dt_nodelabel(slot0_flash NODELABEL "slot0_partition") -+ dt_nodelabel(slot0_flash NODELABEL "slot0_partition" REQUIRED) - dt_get_parent(slot0_flash) - dt_get_parent(slot0_flash) - - if(NOT CONFIG_SINGLE_APPLICATION_SLOT) -- dt_nodelabel(slot1_flash NODELABEL "slot1_partition") -+ dt_nodelabel(slot1_flash NODELABEL "slot1_partition" REQUIRED) - dt_get_parent(slot1_flash) - dt_get_parent(slot1_flash) - -@@ -626,7 +626,7 @@ endif() - if(SYSBUILD AND CONFIG_PCD_APP) - # Sysbuild requires details of the RAM flash device are stored to the cache of MCUboot so - # that they can be read when running partition manager -- dt_nodelabel(ram_flash_dev NODELABEL flash_sim0) -+ dt_nodelabel(ram_flash_dev NODELABEL flash_sim0 REQUIRED) - dt_reg_addr(ram_flash_addr PATH ${ram_flash_dev}) - dt_reg_size(ram_flash_size PATH ${ram_flash_dev}) - --- -2.43.0 - diff --git a/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch b/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch deleted file mode 100644 index 89f690342..000000000 --- a/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 9f6342a09c416553381e4d478c894903ead17566 Mon Sep 17 00:00:00 2001 -From: Benedek Kupper -Date: Tue, 9 Jul 2024 22:38:48 +0200 -Subject: [PATCH] Remove mcuboot default key build warning - ---- - modules/mcuboot/CMakeLists.txt | 7 ------- - 1 files changed, 7 deletions(-) - -diff --git a/modules/mcuboot/CMakeLists.txt b/modules/mcuboot/CMakeLists.txt -index 5ec2643d7..70c706d52 100644 ---- a/modules/mcuboot/CMakeLists.txt -+++ b/modules/mcuboot/CMakeLists.txt -@@ -379,13 +379,6 @@ if(CONFIG_BOOTLOADER_MCUBOOT) - if(CONFIG_SIGN_IMAGES) - # Set default key - if (NOT DEFINED mcuboot_key_file) -- message(WARNING " -- --------------------------------------------------------- -- --- WARNING: Using default MCUBoot key, it should not --- -- --- be used for production. --- -- --------------------------------------------------------- -- \n" -- ) - set(mcuboot_key_file ${ZEPHYR_MCUBOOT_MODULE_DIR}/${CONFIG_BOOT_SIGNATURE_KEY_FILE}) - endif() - --- -2.44.0 - diff --git a/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch b/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch deleted file mode 100644 index 0c11b6d64..000000000 --- a/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch +++ /dev/null @@ -1,89 +0,0 @@ -From f5755b7348d6ee2464ad41652a1a93950349738d Mon Sep 17 00:00:00 2001 -From: Benedek Kupper -Date: Tue, 9 Jul 2024 22:34:13 +0200 -Subject: [PATCH] drivers: udc: eliminate C++ compiler warnings - -Pending upstream PR: https://github.com/zephyrproject-rtos/zephyr/pull/69490 ---- - include/zephyr/drivers/usb/udc.h | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/include/zephyr/drivers/usb/udc.h b/include/zephyr/drivers/usb/udc.h -index 15b99cf5251..fd35c8e2749 100644 ---- a/include/zephyr/drivers/usb/udc.h -+++ b/include/zephyr/drivers/usb/udc.h -@@ -309,7 +309,7 @@ struct udc_data { - */ - static inline bool udc_is_initialized(const struct device *dev) - { -- struct udc_data *data = dev->data; -+ struct udc_data *data = (struct udc_data *)dev->data; - - return atomic_test_bit(&data->status, UDC_STATUS_INITIALIZED); - } -@@ -323,7 +323,7 @@ static inline bool udc_is_initialized(const struct device *dev) - */ - static inline bool udc_is_enabled(const struct device *dev) - { -- struct udc_data *data = dev->data; -+ struct udc_data *data = (struct udc_data *)dev->data; - - return atomic_test_bit(&data->status, UDC_STATUS_ENABLED); - } -@@ -337,7 +337,7 @@ static inline bool udc_is_enabled(const struct device *dev) - */ - static inline bool udc_is_suspended(const struct device *dev) - { -- struct udc_data *data = dev->data; -+ struct udc_data *data = (struct udc_data *)dev->data; - - return atomic_test_bit(&data->status, UDC_STATUS_SUSPENDED); - } -@@ -413,7 +413,7 @@ int udc_shutdown(const struct device *dev); - */ - static inline struct udc_device_caps udc_caps(const struct device *dev) - { -- struct udc_data *data = dev->data; -+ struct udc_data *data = (struct udc_data *)dev->data; - - return data->caps; - } -@@ -443,7 +443,7 @@ enum udc_bus_speed udc_device_speed(const struct device *dev); - */ - static inline int udc_set_address(const struct device *dev, const uint8_t addr) - { -- const struct udc_api *api = dev->api; -+ const struct udc_api *api = (struct udc_api *)dev->api; - int ret; - - if (!udc_is_enabled(dev)) { -@@ -475,7 +475,7 @@ static inline int udc_set_address(const struct device *dev, const uint8_t addr) - static inline int udc_test_mode(const struct device *dev, - const uint8_t mode, const bool dryrun) - { -- const struct udc_api *api = dev->api; -+ const struct udc_api *api = (const struct udc_api *)dev->api; - int ret; - - if (!udc_is_enabled(dev)) { -@@ -505,7 +505,7 @@ static inline int udc_test_mode(const struct device *dev, - */ - static inline int udc_host_wakeup(const struct device *dev) - { -- const struct udc_api *api = dev->api; -+ const struct udc_api *api = (struct udc_api *)dev->api; - int ret; - - if (!udc_is_enabled(dev)) { -@@ -722,7 +722,7 @@ static inline struct udc_buf_info *udc_get_buf_info(const struct net_buf *const - */ - static inline const void *udc_get_event_ctx(const struct device *dev) - { -- struct udc_data *data = dev->data; -+ struct udc_data *data = (struct udc_data *)dev->data; - - return data->event_ctx; - } --- -2.43.0 - diff --git a/patches/zephyr/0001-udc-nrf-disable-SOF-interrupts.patch b/patches/zephyr/0001-udc-nrf-disable-SOF-interrupts.patch deleted file mode 100644 index 8f565fa42..000000000 --- a/patches/zephyr/0001-udc-nrf-disable-SOF-interrupts.patch +++ /dev/null @@ -1,25 +0,0 @@ -From a64431fb94f0bec11c74e47497d146a26c27df0e Mon Sep 17 00:00:00 2001 -From: Benedek Kupper -Date: Thu, 27 Mar 2025 10:30:49 +0100 -Subject: [PATCH] udc: nrf: disable SOF interrupts - ---- - drivers/usb/udc/udc_nrf.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/usb/udc/udc_nrf.c b/drivers/usb/udc/udc_nrf.c -index e722917446..fdb713db2e 100644 ---- a/drivers/usb/udc/udc_nrf.c -+++ b/drivers/usb/udc/udc_nrf.c -@@ -553,7 +553,7 @@ static void udc_nrf_power_handler(nrfx_power_usb_evt_t pwr_evt) - break; - case NRFX_POWER_USB_EVT_READY: - LOG_DBG("POWER event ready"); -- nrf_usbd_common_start(true); -+ nrf_usbd_common_start(false); - break; - case NRFX_POWER_USB_EVT_REMOVED: - LOG_DBG("POWER event removed"); --- -2.44.0 - diff --git a/patches/zephyr/0003-sysbuild-support-application-CMakePresets.json-files.patch b/patches/zephyr/0003-sysbuild-support-application-CMakePresets.json-files.patch index 2d79a386f..a4cc01a63 100644 --- a/patches/zephyr/0003-sysbuild-support-application-CMakePresets.json-files.patch +++ b/patches/zephyr/0003-sysbuild-support-application-CMakePresets.json-files.patch @@ -1,4 +1,4 @@ -From 2669cb1f5240bfa5a92bf47bed97e3ce00a26a2c Mon Sep 17 00:00:00 2001 +From 27fabc6173a802d31b28f1f4e8cbaa3571e10a41 Mon Sep 17 00:00:00 2001 From: Torsten Rasmussen Date: Fri, 26 Sep 2025 12:55:07 +0200 Subject: [PATCH] sysbuild: support application CMakePresets.json files with @@ -14,88 +14,58 @@ sample's presets file. Signed-off-by: Torsten Rasmussen --- scripts/west_commands/build.py | 5 ++++- - scripts/west_commands/zcmake.py | 5 +++-- share/sysbuild/CMakePresets.json | 11 +++++++++++ - 3 files changed, 18 insertions(+), 3 deletions(-) + 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 share/sysbuild/CMakePresets.json diff --git a/scripts/west_commands/build.py b/scripts/west_commands/build.py -index 260945483cf..5710da41c95 100644 +index a271e4075a5..a7138694b5c 100644 --- a/scripts/west_commands/build.py +++ b/scripts/west_commands/build.py -@@ -578,6 +578,7 @@ class Build(Forceable): +@@ -618,6 +618,7 @@ class Build(Forceable): if not self.run_cmake: return + cmake_env = None - _banner('generating a build system') + self._banner('generating a build system') if board is not None and origin != 'CMakeCache.txt': -@@ -604,6 +605,8 @@ class Build(Forceable): +@@ -651,6 +652,8 @@ class Build(Forceable): if self.args.sysbuild or (config_sysbuild and not self.args.no_sysbuild): - cmake_opts.extend(['-S{}'.format(SYSBUILD_PROJ_DIR), - '-DAPP_DIR:PATH={}'.format(self.source_dir)]) + cmake_opts.extend([f'-S{SYSBUILD_PROJ_DIR}', + f'-DAPP_DIR:PATH={self.source_dir}']) + cmake_env = os.environ.copy() + cmake_env["APP_DIR"] = str(self.source_dir) else: # self.args.no_sysbuild == True or config sysbuild False - cmake_opts.extend(['-S{}'.format(self.source_dir)]) -@@ -620,7 +623,7 @@ class Build(Forceable): - DEFAULT_CMAKE_GENERATOR))] + cmake_opts.extend([f'-S{self.source_dir}']) +@@ -666,7 +669,7 @@ class Build(Forceable): + f'-G{config_get("generator", DEFAULT_CMAKE_GENERATOR)}'] if cmake_opts: final_cmake_args.extend(cmake_opts) - run_cmake(final_cmake_args, dry_run=self.args.dry_run) + run_cmake(final_cmake_args, dry_run=self.args.dry_run, env=cmake_env) def _run_pristine(self): - _banner('making build dir {} pristine'.format(self.build_dir)) -diff --git a/scripts/west_commands/zcmake.py b/scripts/west_commands/zcmake.py -index aad616aadd4..25e3d6407b5 100644 ---- a/scripts/west_commands/zcmake.py -+++ b/scripts/west_commands/zcmake.py -@@ -26,7 +26,7 @@ DEFAULT_CMAKE_GENERATOR = 'Ninja' - '''Name of the default CMake generator.''' - - --def run_cmake(args, cwd=None, capture_output=False, dry_run=False): -+def run_cmake(args, cwd=None, capture_output=False, dry_run=False, env=None): - '''Run cmake to (re)generate a build system, a script, etc. - - :param args: arguments to pass to CMake -@@ -36,6 +36,7 @@ def run_cmake(args, cwd=None, capture_output=False, dry_run=False): - dry_run is also True) - :param dry_run: don't actually execute the command, just print what - would have been run -+ :param env: used adjusted environment when running CMake - - If capture_output is set to True, returns the output of the command instead - of displaying it on stdout/stderr..''' -@@ -60,7 +61,7 @@ def run_cmake(args, cwd=None, capture_output=False, dry_run=False): - return None - - log.dbg('Running CMake:', quote_sh_list(cmd), level=log.VERBOSE_NORMAL) -- p = subprocess.Popen(cmd, **kwargs) -+ p = subprocess.Popen(cmd, env=env, **kwargs) - out, _ = p.communicate() - if p.returncode == 0: - if out: + self._banner(f'making build dir {self.build_dir} pristine') diff --git a/share/sysbuild/CMakePresets.json b/share/sysbuild/CMakePresets.json new file mode 100644 -index 00000000000..437f3b68a94 +index 00000000000..e6db7774f2e --- /dev/null +++ b/share/sysbuild/CMakePresets.json @@ -0,0 +1,11 @@ +{ -+ "version": 7, -+ "cmakeMinimumRequired": { -+ "major": 3, -+ "minor": 27, -+ "patch": 0 -+ }, -+ "include": [ -+ "$penv{APP_DIR}/CMakePresets.json" -+ ] ++ "version": 7, ++ "cmakeMinimumRequired": { ++ "major": 3, ++ "minor": 27, ++ "patch": 0 ++ }, ++ "include": [ ++ "$penv{APP_DIR}/CMakePresets.json" ++ ] +} +\ No newline at end of file -- 2.43.0 diff --git a/right/CMakeLists.txt b/right/CMakeLists.txt index dbe3a73fb..dda8bd53f 100644 --- a/right/CMakeLists.txt +++ b/right/CMakeLists.txt @@ -10,13 +10,7 @@ set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(WORKSPACE_TOPDIR "${CMAKE_CURRENT_LIST_DIR}/../..") -set(CPM_bitfilled_SOURCE "${WORKSPACE_TOPDIR}/modules/lib/bitfilled") -set(CPM_hid-rp_SOURCE "${WORKSPACE_TOPDIR}/modules/lib/hid-rp") -set(CPM_etl_SOURCE "${WORKSPACE_TOPDIR}/modules/lib/etl") - -set(EXTRA_MCUX_MODULES ${CMAKE_CURRENT_LIST_DIR}/../../c2usb) +set(WEST ON) # necessary for looking up mcux modules from west workspace set(board frdmk22f) # TODO: how to remove the board selection? set(device MK22F51212) diff --git a/right/src/hid/transport_ble.cpp b/right/src/hid/transport_ble.cpp index b6efce317..8c2ae39d0 100644 --- a/right/src/hid/transport_ble.cpp +++ b/right/src/hid/transport_ble.cpp @@ -86,7 +86,6 @@ extern "C" int HOGP_HealthCheck() return -3; } - printk("HOGP HealthCheck: OK (registered, peer connected, interval %u)\n", - info.le.interval); + printk("HOGP HealthCheck: OK (registered, peer connected, interval %u)\n", info.le.interval_us); return 0; } diff --git a/right/src/macros/command_hash.gperf b/right/src/macros/command_hash.gperf index 9148cbb5c..75d66c8d5 100644 --- a/right/src/macros/command_hash.gperf +++ b/right/src/macros/command_hash.gperf @@ -1,5 +1,10 @@ %{ #include "command_ids.h" + +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif %} %readonly-tables %compare-strncmp @@ -165,3 +170,7 @@ zephyr, CommandId_zephyr "{", CommandId_openBrace "}", CommandId_closeBrace %% + +#if defined(__GNUC__) +#pragma GCC diagnostic pop +#endif diff --git a/west_mcuxsdk.yml b/west_mcuxsdk.yml index db9a23473..208c641b7 100644 --- a/west_mcuxsdk.yml +++ b/west_mcuxsdk.yml @@ -14,7 +14,7 @@ manifest: - name: mcuxsdk-manifests remote: nxp-mcuxpresso path: mcuxsdk/manifest_int - revision: v25.06.00 + revision: v26.03.00 clone-depth: 1 import: name-allowlist: diff --git a/west_nrfsdk.yml b/west_nrfsdk.yml index a7de254aa..6e4b77215 100644 --- a/west_nrfsdk.yml +++ b/west_nrfsdk.yml @@ -16,17 +16,18 @@ manifest: - name: sdk-nrf remote: sdk path: nrf - revision: v2.8.0 + revision: v3.2.4 clone-depth: 1 import: # path-prefix: nrfconnect name-allowlist: - zephyr - - cmsis + - cmsis_6 - hal_nordic - mcuboot - nrfxlib - lvgl - segger - - tinycrypt - zcbor + - mbedtls + - oberon-psa-crypto