From 7db083232ba0d0cbba39f6ef708c6388652cfbad Mon Sep 17 00:00:00 2001 From: Peter Johanson Date: Mon, 15 Dec 2025 15:01:01 -0700 Subject: [PATCH] refactor(core): Adjust our approach for upstream Zephyr boards Move to using proper HWMv2 board extensions https://docs.zephyrproject.org/4.1.0/hardware/porting/board_porting.html#board-extensions for extending upstream Zephyr boards for use with ZMK. With this change, using upstream Zephyr board IDs directly, e.g. `seeeduino_xiao` will be stock versions as found upstream. To use a board variant that is tuned for ZMK use, use the `zmk` variant, e.g. `seeeduino_xiao//zmk` which is shorthand for `seeeduino_xiao/samd21g18a/zmk`. --- .github/workflows/build.yml | 1 + .../adafruit/kb2040/adafruit_kb2040.zmk.yml | 2 +- .../kb2040/adafruit_kb2040_zmk.dts} | 1 + .../kb2040/adafruit_kb2040_zmk_defconfig | 23 +++++++++++++ app/boards/adafruit/kb2040/board.yml | 5 +++ .../adafruit_qt_py_rp2040.zmk.yml | 2 +- .../adafruit_qt_py_rp2040_zmk.dts} | 1 + .../adafruit_qt_py_rp2040_zmk_defconfig | 23 +++++++++++++ app/boards/adafruit/qt_py_rp2040/board.yml | 5 +++ .../boardsource_blok/boardsource_blok.zmk.yml | 9 ------ app/boards/boardsource/blok/board.yml | 5 +++ .../boardsource/blok/boardsource_blok.zmk.yml | 9 ++++++ .../boardsource/blok/boardsource_blok_zmk.dts | 23 +++++++++++++ .../blok/boardsource_blok_zmk_defconfig | 30 +++++++++++++++++ .../adafruit_kb2040/adafruit_kb2040.conf | 8 ----- .../adafruit_kb2040/adafruit_kb2040.overlay | 9 ------ .../adafruit_qt_py_rp2040.conf | 8 ----- .../blackpill_f401cc/blackpill_f401cc.conf | 6 ---- .../blackpill_f401ce/blackpill_f401ce.conf | 6 ---- .../blackpill_f411ce/blackpill_f411ce.conf | 6 ---- .../boardsource_blok/boardsource_blok.conf | 8 ----- .../native_sim/native_sim_64.overlay | 32 ------------------- .../nrf52840dongle_nrf52840.conf | 12 ------- .../extensions/nrf_bsim/nrf52_bsim.conf | 4 --- .../rp2040_042lcd/01space_rp2040_042lcd.conf | 6 ---- .../01space_rp2040_042lcd.overlay | 7 ---- app/boards/extensions/rpi_pico/rpi_pico.conf | 16 ---------- .../seeeduino_xiao/seeeduino_xiao.conf | 5 --- .../sparkfun_pro_micro_rp2040.conf | 15 --------- .../extensions/xiao_rp2040/xiao_rp2040.conf | 15 --------- app/boards/native/native_sim/Kconfig | 11 +++++++ app/boards/native/native_sim/board.yml | 7 ++++ ...tive_sim_native_zmk_display_testing.keymap | 20 ++++++++++++ ...e_sim_native_zmk_display_testing_defconfig | 12 +++++++ ...native_sim_native_zmk_test_mock_defconfig} | 8 +++-- .../native_sim_zmk_display_testing.dts | 13 ++++++++ .../native_sim/native_sim_zmk_test_mock.dts} | 12 ++----- app/boards/native/nrf_bsim/board.yml | 5 +++ .../nrf52_bsim_native_zmk_test_mock_defconfig | 10 ++++++ .../nrf_bsim/nrf52_bsim_zmk_test_mock.dts} | 2 ++ .../nordic/nrf52840dk/Kconfig.nrf52840dk | 3 ++ app/boards/nordic/nrf52840dk/board.yml | 5 +++ .../nrf52840dk_nrf52840.zmk.yml | 2 +- .../nrf52840dk/nrf52840dk_nrf52840_zmk.dts | 8 +++++ .../nrf52840dk_nrf52840_zmk_defconfig} | 11 +++++++ app/boards/nordic/nrf52840dongle/board.yml | 5 +++ .../nrf52840dongle_nrf52840_zmk.dts | 8 +++++ .../nrf52840dongle_nrf52840_zmk_defconfig | 29 +++++++++++++++++ .../nrf5340dk/nrf5340dk_nrf5340_cpuapp.conf | 0 .../nrf5340dk_nrf5340_cpuapp.overlay | 0 .../nrf5340dk_nrf5340_cpuapp.zmk.yml | 0 app/boards/post_boards_shields.cmake | 4 +-- app/boards/raspberrypi/rpi_pico/board.yml | 5 +++ .../raspberrypi/rpi_pico/rpi_pico.zmk.yml | 8 +++++ .../rpi_pico/rpi_pico_rp2040_zmk.dts} | 7 ++++ .../rpi_pico/rpi_pico_rp2040_zmk_defconfig | 27 ++++++++++++++++ app/boards/seeed/seeeduino_xiao/board.yml | 5 +++ .../seeeduino_xiao/seeeduino_xiao.zmk.yml | 2 +- .../seeeduino_xiao/seeeduino_xiao_zmk.dts | 8 +++++ .../seeeduino_xiao_zmk_defconfig | 11 +++++++ app/boards/seeed/xiao_ble/board.yml | 5 +++ app/boards/seeed/xiao_ble/xiao_ble.zmk.yml | 2 +- .../xiao_ble/xiao_ble_zmk.dts} | 1 + .../xiao_ble/xiao_ble_zmk_defconfig} | 18 ++++++++--- app/boards/seeed/xiao_rp2040/board.yml | 5 +++ .../seeed/xiao_rp2040/xiao_rp2040.zmk.yml | 2 +- .../xiao_rp2040/xiao_rp2040_zmk.dts} | 1 + .../xiao_rp2040/xiao_rp2040_zmk_defconfig | 30 +++++++++++++++++ .../sparkfun/pro_micro_rp2040/board.yml | 5 +++ .../sparkfun_pro_micro_rp2040.zmk.yml | 2 +- .../sparkfun_pro_micro_rp2040_zmk.dts} | 1 + .../sparkfun_pro_micro_rp2040_zmk_defconfig | 30 +++++++++++++++++ .../blackpill_f401cc/blackpill_f401cc.zmk.yml | 2 +- .../blackpill_f401cc_zmk.dts} | 3 +- .../blackpill_f401cc_zmk_defconfig | 17 ++++++++++ app/boards/weact/blackpill_f401cc/board.yml | 5 +++ .../blackpill_f401ce/blackpill_f401ce.zmk.yml | 2 +- .../blackpill_f401ce_zmk.dts} | 3 +- .../blackpill_f401ce_zmk_defconfig | 17 ++++++++++ app/boards/weact/blackpill_f401ce/board.yml | 5 +++ .../blackpill_f411ce/blackpill_f411ce.zmk.yml | 2 +- .../blackpill_f411ce_zmk.dts} | 4 ++- .../blackpill_f411ce_zmk_defconfig | 17 ++++++++++ app/boards/weact/blackpill_f411ce/board.yml | 5 +++ app/core-coverage.yml | 8 ++--- app/run-ble-test.sh | 4 +-- app/run-test.sh | 2 +- 87 files changed, 537 insertions(+), 211 deletions(-) rename app/boards/{extensions/boardsource_blok/boardsource_blok.overlay => adafruit/kb2040/adafruit_kb2040_zmk.dts} (76%) create mode 100644 app/boards/adafruit/kb2040/adafruit_kb2040_zmk_defconfig create mode 100644 app/boards/adafruit/kb2040/board.yml rename app/boards/{extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.overlay => adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk.dts} (72%) create mode 100644 app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk_defconfig create mode 100644 app/boards/adafruit/qt_py_rp2040/board.yml delete mode 100644 app/boards/arm/boardsource_blok/boardsource_blok.zmk.yml create mode 100644 app/boards/boardsource/blok/board.yml create mode 100644 app/boards/boardsource/blok/boardsource_blok.zmk.yml create mode 100644 app/boards/boardsource/blok/boardsource_blok_zmk.dts create mode 100644 app/boards/boardsource/blok/boardsource_blok_zmk_defconfig delete mode 100644 app/boards/extensions/adafruit_kb2040/adafruit_kb2040.conf delete mode 100644 app/boards/extensions/adafruit_kb2040/adafruit_kb2040.overlay delete mode 100644 app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.conf delete mode 100644 app/boards/extensions/blackpill_f401cc/blackpill_f401cc.conf delete mode 100644 app/boards/extensions/blackpill_f401ce/blackpill_f401ce.conf delete mode 100644 app/boards/extensions/blackpill_f411ce/blackpill_f411ce.conf delete mode 100644 app/boards/extensions/boardsource_blok/boardsource_blok.conf delete mode 100644 app/boards/extensions/native_sim/native_sim_64.overlay delete mode 100644 app/boards/extensions/nrf52840dongle/nrf52840dongle_nrf52840.conf delete mode 100644 app/boards/extensions/nrf_bsim/nrf52_bsim.conf delete mode 100644 app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.conf delete mode 100644 app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.overlay delete mode 100644 app/boards/extensions/rpi_pico/rpi_pico.conf delete mode 100644 app/boards/extensions/seeeduino_xiao/seeeduino_xiao.conf delete mode 100644 app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.conf delete mode 100644 app/boards/extensions/xiao_rp2040/xiao_rp2040.conf create mode 100644 app/boards/native/native_sim/Kconfig create mode 100644 app/boards/native/native_sim/board.yml create mode 100644 app/boards/native/native_sim/native_sim_native_zmk_display_testing.keymap create mode 100644 app/boards/native/native_sim/native_sim_native_zmk_display_testing_defconfig rename app/boards/{extensions/native_sim/native_sim_native_64.conf => native/native_sim/native_sim_native_zmk_test_mock_defconfig} (56%) create mode 100644 app/boards/native/native_sim/native_sim_zmk_display_testing.dts rename app/boards/{extensions/native_sim/native_sim.overlay => native/native_sim/native_sim_zmk_test_mock.dts} (52%) create mode 100644 app/boards/native/nrf_bsim/board.yml create mode 100644 app/boards/native/nrf_bsim/nrf52_bsim_native_zmk_test_mock_defconfig rename app/boards/{extensions/nrf_bsim/nrf52_bsim.overlay => native/nrf_bsim/nrf52_bsim_zmk_test_mock.dts} (83%) create mode 100644 app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk create mode 100644 app/boards/nordic/nrf52840dk/board.yml rename app/boards/nordic/{nrf52840dk_nrf52840 => nrf52840dk}/nrf52840dk_nrf52840.zmk.yml (86%) create mode 100644 app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk.dts rename app/boards/{extensions/nrf52840dk/nrf52840dk_nrf52840.conf => nordic/nrf52840dk/nrf52840dk_nrf52840_zmk_defconfig} (59%) create mode 100644 app/boards/nordic/nrf52840dongle/board.yml create mode 100644 app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk.dts create mode 100644 app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk_defconfig rename app/boards/{extensions => nordic}/nrf5340dk/nrf5340dk_nrf5340_cpuapp.conf (100%) rename app/boards/{extensions => nordic}/nrf5340dk/nrf5340dk_nrf5340_cpuapp.overlay (100%) rename app/boards/nordic/{nrf5340dk_nrf5340_cpuapp => nrf5340dk}/nrf5340dk_nrf5340_cpuapp.zmk.yml (100%) create mode 100644 app/boards/raspberrypi/rpi_pico/board.yml create mode 100644 app/boards/raspberrypi/rpi_pico/rpi_pico.zmk.yml rename app/boards/{extensions/rpi_pico/rpi_pico.overlay => raspberrypi/rpi_pico/rpi_pico_rp2040_zmk.dts} (70%) create mode 100644 app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk_defconfig create mode 100644 app/boards/seeed/seeeduino_xiao/board.yml create mode 100644 app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk.dts create mode 100644 app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk_defconfig create mode 100644 app/boards/seeed/xiao_ble/board.yml rename app/boards/{extensions/xiao_ble/xiao_ble.overlay => seeed/xiao_ble/xiao_ble_zmk.dts} (96%) rename app/boards/{extensions/xiao_ble/xiao_ble.conf => seeed/xiao_ble/xiao_ble_zmk_defconfig} (50%) create mode 100644 app/boards/seeed/xiao_rp2040/board.yml rename app/boards/{extensions/xiao_rp2040/xiao_rp2040.overlay => seeed/xiao_rp2040/xiao_rp2040_zmk.dts} (89%) create mode 100644 app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk_defconfig create mode 100644 app/boards/sparkfun/pro_micro_rp2040/board.yml rename app/boards/{extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.overlay => sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk.dts} (87%) create mode 100644 app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk_defconfig rename app/boards/{extensions/blackpill_f401ce/blackpill_f401ce.overlay => weact/blackpill_f401cc/blackpill_f401cc_zmk.dts} (94%) create mode 100644 app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk_defconfig create mode 100644 app/boards/weact/blackpill_f401cc/board.yml rename app/boards/{extensions/blackpill_f411ce/blackpill_f411ce.overlay => weact/blackpill_f401ce/blackpill_f401ce_zmk.dts} (94%) create mode 100644 app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk_defconfig create mode 100644 app/boards/weact/blackpill_f401ce/board.yml rename app/boards/{extensions/blackpill_f401cc/blackpill_f401cc.overlay => weact/blackpill_f411ce/blackpill_f411ce_zmk.dts} (94%) create mode 100644 app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk_defconfig create mode 100644 app/boards/weact/blackpill_f411ce/board.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 32e084cbb..619902d29 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -277,6 +277,7 @@ jobs: ); } else { console.error("Board without keys or interconnect"); + return []; } break; case "shield": diff --git a/app/boards/adafruit/kb2040/adafruit_kb2040.zmk.yml b/app/boards/adafruit/kb2040/adafruit_kb2040.zmk.yml index c8973f5c2..f3a79315d 100644 --- a/app/boards/adafruit/kb2040/adafruit_kb2040.zmk.yml +++ b/app/boards/adafruit/kb2040/adafruit_kb2040.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: adafruit_kb2040 +id: adafruit_kb2040//zmk name: Adafruit KB2040 type: board arch: arm diff --git a/app/boards/extensions/boardsource_blok/boardsource_blok.overlay b/app/boards/adafruit/kb2040/adafruit_kb2040_zmk.dts similarity index 76% rename from app/boards/extensions/boardsource_blok/boardsource_blok.overlay rename to app/boards/adafruit/kb2040/adafruit_kb2040_zmk.dts index bf3fd17a5..8c05cbaf1 100644 --- a/app/boards/extensions/boardsource_blok/boardsource_blok.overlay +++ b/app/boards/adafruit/kb2040/adafruit_kb2040_zmk.dts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +#include <../boards/adafruit/kb2040/adafruit_kb2040.dts> #include &pro_micro_serial { status = "disabled"; }; diff --git a/app/boards/adafruit/kb2040/adafruit_kb2040_zmk_defconfig b/app/boards/adafruit/kb2040/adafruit_kb2040_zmk_defconfig new file mode 100644 index 000000000..b7b0308b9 --- /dev/null +++ b/app/boards/adafruit/kb2040/adafruit_kb2040_zmk_defconfig @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 + +# Enable reset by default +CONFIG_RESET=y + +# Enable clock control by default +CONFIG_CLOCK_CONTROL=y + +# Code partition needed to target the correct flash range +CONFIG_USE_DT_CODE_PARTITION=y + +# Output UF2 by default, native bootloader supports it. +CONFIG_BUILD_OUTPUT_UF2=y + +# USB HID +CONFIG_ZMK_USB=y + +# Bootloader Support +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/adafruit/kb2040/board.yml b/app/boards/adafruit/kb2040/board.yml new file mode 100644 index 000000000..7ef758e09 --- /dev/null +++ b/app/boards/adafruit/kb2040/board.yml @@ -0,0 +1,5 @@ +board: + extend: adafruit_kb2040 + variants: + - name: zmk + qualifier: rp2040 diff --git a/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.zmk.yml b/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.zmk.yml index 9b9c1450d..ebda85595 100644 --- a/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.zmk.yml +++ b/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: adafruit_qt_py_rp2040 +id: adafruit_qt_py_rp2040//zmk name: Adafruit QT Py RP2040 type: board arch: arm diff --git a/app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.overlay b/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk.dts similarity index 72% rename from app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.overlay rename to app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk.dts index a68455c4a..2a64ff75e 100644 --- a/app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.overlay +++ b/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk.dts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +#include <../boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.dts> #include &xiao_serial { status = "disabled"; }; diff --git a/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk_defconfig b/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk_defconfig new file mode 100644 index 000000000..b7b0308b9 --- /dev/null +++ b/app/boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040_zmk_defconfig @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 + +# Enable reset by default +CONFIG_RESET=y + +# Enable clock control by default +CONFIG_CLOCK_CONTROL=y + +# Code partition needed to target the correct flash range +CONFIG_USE_DT_CODE_PARTITION=y + +# Output UF2 by default, native bootloader supports it. +CONFIG_BUILD_OUTPUT_UF2=y + +# USB HID +CONFIG_ZMK_USB=y + +# Bootloader Support +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/adafruit/qt_py_rp2040/board.yml b/app/boards/adafruit/qt_py_rp2040/board.yml new file mode 100644 index 000000000..cda7173ed --- /dev/null +++ b/app/boards/adafruit/qt_py_rp2040/board.yml @@ -0,0 +1,5 @@ +board: + extend: adafruit_qt_py_rp2040 + variants: + - name: zmk + qualifier: rp2040 diff --git a/app/boards/arm/boardsource_blok/boardsource_blok.zmk.yml b/app/boards/arm/boardsource_blok/boardsource_blok.zmk.yml deleted file mode 100644 index a6e91afd7..000000000 --- a/app/boards/arm/boardsource_blok/boardsource_blok.zmk.yml +++ /dev/null @@ -1,9 +0,0 @@ -file_format: "1" -id: boardsource_blok -name: BoardSource blok -type: board -arch: arm -outputs: - - usb -url: https://peg.software/docs/blok -exposes: [pro_micro] diff --git a/app/boards/boardsource/blok/board.yml b/app/boards/boardsource/blok/board.yml new file mode 100644 index 000000000..0891ee1b5 --- /dev/null +++ b/app/boards/boardsource/blok/board.yml @@ -0,0 +1,5 @@ +board: + extend: boardsource_blok + variants: + - name: zmk + qualifier: rp2040 diff --git a/app/boards/boardsource/blok/boardsource_blok.zmk.yml b/app/boards/boardsource/blok/boardsource_blok.zmk.yml new file mode 100644 index 000000000..dac3d4df9 --- /dev/null +++ b/app/boards/boardsource/blok/boardsource_blok.zmk.yml @@ -0,0 +1,9 @@ +file_format: "1" +id: boardsource_blok//zmk +name: Boardsource Blok +type: board +arch: arm +outputs: + - usb +url: https://boardsource.xyz/products/blok-rp2040-keyboard-controller +exposes: [pro_micro] diff --git a/app/boards/boardsource/blok/boardsource_blok_zmk.dts b/app/boards/boardsource/blok/boardsource_blok_zmk.dts new file mode 100644 index 000000000..c7bb7cc22 --- /dev/null +++ b/app/boards/boardsource/blok/boardsource_blok_zmk.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/boardsource/blok/boardsource_blok.dts> +#include + +&pro_micro_serial { status = "disabled"; }; + +&code_partition { + reg = <0x100 (DT_SIZE_M(16) - 0x100 - DT_SIZE_K(512))>; +}; + +&flash0 { + partitions { + storage_partition: partition@f80000 { + reg = <0xf80000 DT_SIZE_K(512)>; + read-only; + }; + }; +}; diff --git a/app/boards/boardsource/blok/boardsource_blok_zmk_defconfig b/app/boards/boardsource/blok/boardsource_blok_zmk_defconfig new file mode 100644 index 000000000..0c1a531e8 --- /dev/null +++ b/app/boards/boardsource/blok/boardsource_blok_zmk_defconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 + +CONFIG_RESET=y + +# Enable clock control by default +CONFIG_CLOCK_CONTROL=y + +# Code partition needed to target the correct flash range +CONFIG_USE_DT_CODE_PARTITION=y + +# Output UF2 by default, native bootloader supports it. +CONFIG_BUILD_OUTPUT_UF2=y + +# USB HID +CONFIG_ZMK_USB=y + +# Settings Support +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y + +# Bootloader Support +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/extensions/adafruit_kb2040/adafruit_kb2040.conf b/app/boards/extensions/adafruit_kb2040/adafruit_kb2040.conf deleted file mode 100644 index 9c394f2c9..000000000 --- a/app/boards/extensions/adafruit_kb2040/adafruit_kb2040.conf +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_ZMK_USB=y - -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y \ No newline at end of file diff --git a/app/boards/extensions/adafruit_kb2040/adafruit_kb2040.overlay b/app/boards/extensions/adafruit_kb2040/adafruit_kb2040.overlay deleted file mode 100644 index bf3fd17a5..000000000 --- a/app/boards/extensions/adafruit_kb2040/adafruit_kb2040.overlay +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2023 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -#include - -&pro_micro_serial { status = "disabled"; }; diff --git a/app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.conf b/app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.conf deleted file mode 100644 index 9c394f2c9..000000000 --- a/app/boards/extensions/adafruit_qt_py_rp2040/adafruit_qt_py_rp2040.conf +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_ZMK_USB=y - -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y \ No newline at end of file diff --git a/app/boards/extensions/blackpill_f401cc/blackpill_f401cc.conf b/app/boards/extensions/blackpill_f401cc/blackpill_f401cc.conf deleted file mode 100644 index c4252425b..000000000 --- a/app/boards/extensions/blackpill_f401cc/blackpill_f401cc.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_UART_INTERRUPT_DRIVEN=n -CONFIG_ZMK_USB=y -CONFIG_ZMK_KSCAN_MATRIX_POLLING=y diff --git a/app/boards/extensions/blackpill_f401ce/blackpill_f401ce.conf b/app/boards/extensions/blackpill_f401ce/blackpill_f401ce.conf deleted file mode 100644 index c4252425b..000000000 --- a/app/boards/extensions/blackpill_f401ce/blackpill_f401ce.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_UART_INTERRUPT_DRIVEN=n -CONFIG_ZMK_USB=y -CONFIG_ZMK_KSCAN_MATRIX_POLLING=y diff --git a/app/boards/extensions/blackpill_f411ce/blackpill_f411ce.conf b/app/boards/extensions/blackpill_f411ce/blackpill_f411ce.conf deleted file mode 100644 index c4252425b..000000000 --- a/app/boards/extensions/blackpill_f411ce/blackpill_f411ce.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_UART_INTERRUPT_DRIVEN=n -CONFIG_ZMK_USB=y -CONFIG_ZMK_KSCAN_MATRIX_POLLING=y diff --git a/app/boards/extensions/boardsource_blok/boardsource_blok.conf b/app/boards/extensions/boardsource_blok/boardsource_blok.conf deleted file mode 100644 index 9c394f2c9..000000000 --- a/app/boards/extensions/boardsource_blok/boardsource_blok.conf +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_ZMK_USB=y - -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y \ No newline at end of file diff --git a/app/boards/extensions/native_sim/native_sim_64.overlay b/app/boards/extensions/native_sim/native_sim_64.overlay deleted file mode 100644 index 277e45328..000000000 --- a/app/boards/extensions/native_sim/native_sim_64.overlay +++ /dev/null @@ -1,32 +0,0 @@ - -#include -#include - -/ { - chosen { - zephyr,console = &uart0; - zmk,kscan = &kscan; - }; - - kscan: native_posix_64_kscan_mock { - compatible = "zmk,kscan-mock"; - - rows = <2>; - columns = <2>; - exit-after; - }; - - uart0: uart { - status = "okay"; - compatible = "zephyr,native-posix-uart"; - /* Dummy current-speed entry to comply with serial - * DTS binding - */ - current-speed = <0>; - }; -}; - -&sdl_dc { - width = <128>; - height = <32>; -}; \ No newline at end of file diff --git a/app/boards/extensions/nrf52840dongle/nrf52840dongle_nrf52840.conf b/app/boards/extensions/nrf52840dongle/nrf52840dongle_nrf52840.conf deleted file mode 100644 index 97e95bf7c..000000000 --- a/app/boards/extensions/nrf52840dongle/nrf52840dongle_nrf52840.conf +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2025 The ZMK Contributors -# SPDX-License-Identifier: MIT - -CONFIG_ZMK_BLE=y -CONFIG_ZMK_USB=y - -CONFIG_MPU_ALLOW_FLASH_WRITE=y -CONFIG_NVS=y -CONFIG_SETTINGS_NVS=y -CONFIG_FLASH=y -CONFIG_FLASH_PAGE_LAYOUT=y -CONFIG_FLASH_MAP=y diff --git a/app/boards/extensions/nrf_bsim/nrf52_bsim.conf b/app/boards/extensions/nrf_bsim/nrf52_bsim.conf deleted file mode 100644 index 526f3bc7d..000000000 --- a/app/boards/extensions/nrf_bsim/nrf52_bsim.conf +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_ZMK_BLE=y -CONFIG_LOG=y -CONFIG_LOG_BACKEND_SHOW_COLOR=n -CONFIG_ZMK_LOG_LEVEL_DBG=y diff --git a/app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.conf b/app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.conf deleted file mode 100644 index c520a3b73..000000000 --- a/app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_ZMK_DISPLAY=y -CONFIG_LV_FONT_UNSCII_8=n -CONFIG_ZMK_USB=y -CONFIG_I2C=y -CONFIG_I2C_DW=y -CONFIG_LV_Z_VDB_SIZE=50 diff --git a/app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.overlay b/app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.overlay deleted file mode 100644 index b5d2cdb2f..000000000 --- a/app/boards/extensions/rp2040_042lcd/01space_rp2040_042lcd.overlay +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (c) 2023 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -&xiao_serial { status = "disabled"; }; diff --git a/app/boards/extensions/rpi_pico/rpi_pico.conf b/app/boards/extensions/rpi_pico/rpi_pico.conf deleted file mode 100644 index 147adc6d7..000000000 --- a/app/boards/extensions/rpi_pico/rpi_pico.conf +++ /dev/null @@ -1,16 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_UART_INTERRUPT_DRIVEN=n -CONFIG_ZMK_USB=y - -CONFIG_MPU_ALLOW_FLASH_WRITE=y -CONFIG_NVS=y -CONFIG_SETTINGS_NVS=y -CONFIG_FLASH=y -CONFIG_FLASH_PAGE_LAYOUT=y -CONFIG_FLASH_MAP=y - -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y \ No newline at end of file diff --git a/app/boards/extensions/seeeduino_xiao/seeeduino_xiao.conf b/app/boards/extensions/seeeduino_xiao/seeeduino_xiao.conf deleted file mode 100644 index f0db8ed14..000000000 --- a/app/boards/extensions/seeeduino_xiao/seeeduino_xiao.conf +++ /dev/null @@ -1,5 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_UART_INTERRUPT_DRIVEN=n -CONFIG_ZMK_USB=y diff --git a/app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.conf b/app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.conf deleted file mode 100644 index 70b90914d..000000000 --- a/app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.conf +++ /dev/null @@ -1,15 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_ZMK_USB=y - -CONFIG_MPU_ALLOW_FLASH_WRITE=y -CONFIG_NVS=y -CONFIG_SETTINGS_NVS=y -CONFIG_FLASH=y -CONFIG_FLASH_PAGE_LAYOUT=y -CONFIG_FLASH_MAP=y - -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y \ No newline at end of file diff --git a/app/boards/extensions/xiao_rp2040/xiao_rp2040.conf b/app/boards/extensions/xiao_rp2040/xiao_rp2040.conf deleted file mode 100644 index 1f7d85b36..000000000 --- a/app/boards/extensions/xiao_rp2040/xiao_rp2040.conf +++ /dev/null @@ -1,15 +0,0 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_ZMK_USB=y - -CONFIG_MPU_ALLOW_FLASH_WRITE=y -CONFIG_NVS=y -CONFIG_SETTINGS_NVS=y -CONFIG_FLASH=y -CONFIG_FLASH_PAGE_LAYOUT=y -CONFIG_FLASH_MAP=y - -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/native/native_sim/Kconfig b/app/boards/native/native_sim/Kconfig new file mode 100644 index 000000000..8d7f746f5 --- /dev/null +++ b/app/boards/native/native_sim/Kconfig @@ -0,0 +1,11 @@ + +config BOARD_NATIVE_SIM + bool + select POSIX_ARCH_CONSOLE + select NATIVE_LIBRARY + select NATIVE_POSIX_TIMER + select 64BIT if BOARD_NATIVE_SIM_NATIVE_ZMK_TEST_MOCK || BOARD_NATIVE_SIM_NATIVE_ZMK_DISPLAY_TESTING + imply BOARD_NATIVE_POSIX if NATIVE_SIM_NATIVE_POSIX_COMPAT + help + Native simulator (Single Core) + Will produce a console Linux process which can be executed natively. diff --git a/app/boards/native/native_sim/board.yml b/app/boards/native/native_sim/board.yml new file mode 100644 index 000000000..81f8d1b28 --- /dev/null +++ b/app/boards/native/native_sim/board.yml @@ -0,0 +1,7 @@ +board: + extend: native_sim + variants: + - name: zmk_display_testing + qualifier: native + - name: zmk_test_mock + qualifier: native diff --git a/app/boards/native/native_sim/native_sim_native_zmk_display_testing.keymap b/app/boards/native/native_sim/native_sim_native_zmk_display_testing.keymap new file mode 100644 index 000000000..d55614c33 --- /dev/null +++ b/app/boards/native/native_sim/native_sim_native_zmk_display_testing.keymap @@ -0,0 +1,20 @@ +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &none &mo 1 + &kp A &none>; + }; + + lower_layer { + bindings = < + &none &trans + &none &kp A>; + }; + }; +}; diff --git a/app/boards/native/native_sim/native_sim_native_zmk_display_testing_defconfig b/app/boards/native/native_sim/native_sim_native_zmk_display_testing_defconfig new file mode 100644 index 000000000..26fcc6ad3 --- /dev/null +++ b/app/boards/native/native_sim/native_sim_native_zmk_display_testing_defconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: MIT + +CONFIG_ZMK_DISPLAY=y + +CONFIG_CONSOLE=y +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=1000000 + +CONFIG_LOG=y +CONFIG_LOG_BACKEND_SHOW_COLOR=n +CONFIG_ZMK_LOG_LEVEL_DBG=y +CONFIG_DEBUG=y +CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 diff --git a/app/boards/extensions/native_sim/native_sim_native_64.conf b/app/boards/native/native_sim/native_sim_native_zmk_test_mock_defconfig similarity index 56% rename from app/boards/extensions/native_sim/native_sim_native_64.conf rename to app/boards/native/native_sim/native_sim_native_zmk_test_mock_defconfig index 0d8e0d81f..fc1b04077 100644 --- a/app/boards/extensions/native_sim/native_sim_native_64.conf +++ b/app/boards/native/native_sim/native_sim_native_zmk_test_mock_defconfig @@ -1,6 +1,8 @@ -CONFIG_GPIO=n -# Enable to have the native posix build expose USBIP device(s) -# CONFIG_ZMK_USB=y +# SPDX-License-Identifier: MIT + +CONFIG_CONSOLE=y +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=1000000 + CONFIG_LOG=y CONFIG_LOG_BACKEND_SHOW_COLOR=n CONFIG_ZMK_LOG_LEVEL_DBG=y diff --git a/app/boards/native/native_sim/native_sim_zmk_display_testing.dts b/app/boards/native/native_sim/native_sim_zmk_display_testing.dts new file mode 100644 index 000000000..f82371b47 --- /dev/null +++ b/app/boards/native/native_sim/native_sim_zmk_display_testing.dts @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: MIT */ + +#include "native_sim_zmk_test_mock.dts" + +&kscan { + events = <>; + /delete-property/ exit-after; +}; + +&sdl_dc { + width = <128>; + height = <128>; +}; diff --git a/app/boards/extensions/native_sim/native_sim.overlay b/app/boards/native/native_sim/native_sim_zmk_test_mock.dts similarity index 52% rename from app/boards/extensions/native_sim/native_sim.overlay rename to app/boards/native/native_sim/native_sim_zmk_test_mock.dts index 5b8e23d30..fa67bfc5d 100644 --- a/app/boards/extensions/native_sim/native_sim.overlay +++ b/app/boards/native/native_sim/native_sim_zmk_test_mock.dts @@ -1,10 +1,10 @@ +#include <../boards/native/native_sim/native_sim.dts> #include #include / { chosen { - zephyr,console = &uart0; zmk,kscan = &kscan; }; @@ -15,13 +15,5 @@ columns = <2>; exit-after; }; - - uart0: uart { - status = "okay"; - compatible = "zephyr,native-posix-uart"; - /* Dummy current-speed entry to comply with serial - * DTS binding - */ - current-speed = <0>; - }; }; + diff --git a/app/boards/native/nrf_bsim/board.yml b/app/boards/native/nrf_bsim/board.yml new file mode 100644 index 000000000..89ccb73ec --- /dev/null +++ b/app/boards/native/nrf_bsim/board.yml @@ -0,0 +1,5 @@ +board: + extend: nrf52_bsim + variants: + - name: zmk_test_mock + qualifier: native diff --git a/app/boards/native/nrf_bsim/nrf52_bsim_native_zmk_test_mock_defconfig b/app/boards/native/nrf_bsim/nrf52_bsim_native_zmk_test_mock_defconfig new file mode 100644 index 000000000..c24991bf2 --- /dev/null +++ b/app/boards/native/nrf_bsim/nrf52_bsim_native_zmk_test_mock_defconfig @@ -0,0 +1,10 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +CONFIG_CONSOLE=y +CONFIG_NO_OPTIMIZATIONS=y + +CONFIG_ZMK_BLE=y +CONFIG_LOG=y +CONFIG_LOG_BACKEND_SHOW_COLOR=n +CONFIG_ZMK_LOG_LEVEL_DBG=y diff --git a/app/boards/extensions/nrf_bsim/nrf52_bsim.overlay b/app/boards/native/nrf_bsim/nrf52_bsim_zmk_test_mock.dts similarity index 83% rename from app/boards/extensions/nrf_bsim/nrf52_bsim.overlay rename to app/boards/native/nrf_bsim/nrf52_bsim_zmk_test_mock.dts index ec7c49ae9..835a49c10 100644 --- a/app/boards/extensions/nrf_bsim/nrf52_bsim.overlay +++ b/app/boards/native/nrf_bsim/nrf52_bsim_zmk_test_mock.dts @@ -1,3 +1,5 @@ +#include <../boards/native/nrf_bsim/nrf52_bsim.dts> + #include #include #include diff --git a/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk b/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk new file mode 100644 index 000000000..66852ec1c --- /dev/null +++ b/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk @@ -0,0 +1,3 @@ + +config BOARD_NRF52840DK + select SOC_NRF52840_QIAA if BOARD_NRF52840DK_NRF52840_ZMK diff --git a/app/boards/nordic/nrf52840dk/board.yml b/app/boards/nordic/nrf52840dk/board.yml new file mode 100644 index 000000000..a8be86a3e --- /dev/null +++ b/app/boards/nordic/nrf52840dk/board.yml @@ -0,0 +1,5 @@ +board: + extend: nrf52840dk + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/nordic/nrf52840dk_nrf52840/nrf52840dk_nrf52840.zmk.yml b/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.zmk.yml similarity index 86% rename from app/boards/nordic/nrf52840dk_nrf52840/nrf52840dk_nrf52840.zmk.yml rename to app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.zmk.yml index 47cb6461a..738cf2900 100644 --- a/app/boards/nordic/nrf52840dk_nrf52840/nrf52840dk_nrf52840.zmk.yml +++ b/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nrf52840dk/nrf52840 +id: nrf52840dk/nrf52840/zmk name: Nordic nRF52840 DK type: board arch: arm diff --git a/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk.dts b/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk.dts new file mode 100644 index 000000000..d2a0b8556 --- /dev/null +++ b/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk.dts @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/nordic/nrf52840dk/nrf52840dk_nrf52840.dts> + diff --git a/app/boards/extensions/nrf52840dk/nrf52840dk_nrf52840.conf b/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk_defconfig similarity index 59% rename from app/boards/extensions/nrf52840dk/nrf52840dk_nrf52840.conf rename to app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk_defconfig index 6c9bcdf13..087cfbd0c 100644 --- a/app/boards/extensions/nrf52840dk/nrf52840dk_nrf52840.conf +++ b/app/boards/nordic/nrf52840dk/nrf52840dk_nrf52840_zmk_defconfig @@ -1,9 +1,20 @@ # Copyright (c) 2022 The ZMK Contributors # SPDX-License-Identifier: MIT +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable hardware stack protection +CONFIG_HW_STACK_PROTECTION=y + +# enable GPIO +CONFIG_GPIO=y + +# USB and BLE HID CONFIG_ZMK_USB=y CONFIG_ZMK_BLE=y +# Settings Support CONFIG_MPU_ALLOW_FLASH_WRITE=y CONFIG_NVS=y CONFIG_SETTINGS_NVS=y diff --git a/app/boards/nordic/nrf52840dongle/board.yml b/app/boards/nordic/nrf52840dongle/board.yml new file mode 100644 index 000000000..26104aa08 --- /dev/null +++ b/app/boards/nordic/nrf52840dongle/board.yml @@ -0,0 +1,5 @@ +board: + extend: nrf52840dongle + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk.dts b/app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk.dts new file mode 100644 index 000000000..2b093635a --- /dev/null +++ b/app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk.dts @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840.dts> + diff --git a/app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk_defconfig b/app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk_defconfig new file mode 100644 index 000000000..2c19ebd88 --- /dev/null +++ b/app/boards/nordic/nrf52840dongle/nrf52840dongle_nrf52840_zmk_defconfig @@ -0,0 +1,29 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable hardware stack protection +CONFIG_HW_STACK_PROTECTION=y + +# enable GPIO +CONFIG_GPIO=y + +# Board Kconfig.defconfig enables USB CDC ACM and should disable USB remote +# wakeup by default. It needs to be disabled here, because the USB nrfx +# driver always overwrites option from Kconfig mentioned above with the +# imply from CONFIG_USB_NRFX. +CONFIG_USB_DEVICE_REMOTE_WAKEUP=n + +# HID Transports +CONFIG_ZMK_BLE=y +CONFIG_ZMK_USB=y + +# Settings options +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y diff --git a/app/boards/extensions/nrf5340dk/nrf5340dk_nrf5340_cpuapp.conf b/app/boards/nordic/nrf5340dk/nrf5340dk_nrf5340_cpuapp.conf similarity index 100% rename from app/boards/extensions/nrf5340dk/nrf5340dk_nrf5340_cpuapp.conf rename to app/boards/nordic/nrf5340dk/nrf5340dk_nrf5340_cpuapp.conf diff --git a/app/boards/extensions/nrf5340dk/nrf5340dk_nrf5340_cpuapp.overlay b/app/boards/nordic/nrf5340dk/nrf5340dk_nrf5340_cpuapp.overlay similarity index 100% rename from app/boards/extensions/nrf5340dk/nrf5340dk_nrf5340_cpuapp.overlay rename to app/boards/nordic/nrf5340dk/nrf5340dk_nrf5340_cpuapp.overlay diff --git a/app/boards/nordic/nrf5340dk_nrf5340_cpuapp/nrf5340dk_nrf5340_cpuapp.zmk.yml b/app/boards/nordic/nrf5340dk/nrf5340dk_nrf5340_cpuapp.zmk.yml similarity index 100% rename from app/boards/nordic/nrf5340dk_nrf5340_cpuapp/nrf5340dk_nrf5340_cpuapp.zmk.yml rename to app/boards/nordic/nrf5340dk/nrf5340dk_nrf5340_cpuapp.zmk.yml diff --git a/app/boards/post_boards_shields.cmake b/app/boards/post_boards_shields.cmake index 3bd7eb1da..6c4dd0ade 100644 --- a/app/boards/post_boards_shields.cmake +++ b/app/boards/post_boards_shields.cmake @@ -5,7 +5,7 @@ # * single overlay, # * or per board/shield. -list(APPEND KEYMAP_DIRS ${BOARD_DIR}) +list(APPEND KEYMAP_DIRS "${BOARD_DIRECTORIES}") get_filename_component(BOARD_DIR_NAME ${BOARD_DIR} NAME) # Give a shield like `kyria_rev2_left` we want to use `kyria_rev2` and `kyria` as candidate names for # overlay/conf/keymap files. @@ -81,7 +81,7 @@ endif() if(NOT KEYMAP_FILE) message("${NORMALIZED_BOARD_TARGET} for ${NORMALIZED_BOARD_QUALIFIERS} for ${BOARD} with version ${BOARD_REVISION}") foreach(keymap_dir ${KEYMAP_DIRS}) - foreach(keymap_prefix ${shield_candidate_names} ${SHIELD_AS_LIST} ${SHIELD_DIR} "${BOARD}_${BOARD_REVISION_STRING}" ${BOARD} ${BOARD_DIR_NAME}) + foreach(keymap_prefix ${shield_candidate_names} ${SHIELD_AS_LIST} ${SHIELD_DIR} "${NORMALIZED_BOARD_TARGET}" "${BOARD}_${BOARD_REVISION_STRING}" ${BOARD} ${BOARD_DIR_NAME}) if (EXISTS ${keymap_dir}/${keymap_prefix}.keymap) set(KEYMAP_FILE "${keymap_dir}/${keymap_prefix}.keymap" CACHE STRING "Selected keymap file") message(STATUS "Using keymap file: ${KEYMAP_FILE}") diff --git a/app/boards/raspberrypi/rpi_pico/board.yml b/app/boards/raspberrypi/rpi_pico/board.yml new file mode 100644 index 000000000..de179f805 --- /dev/null +++ b/app/boards/raspberrypi/rpi_pico/board.yml @@ -0,0 +1,5 @@ +board: + extend: rpi_pico + variants: + - name: zmk + qualifier: rp2040 diff --git a/app/boards/raspberrypi/rpi_pico/rpi_pico.zmk.yml b/app/boards/raspberrypi/rpi_pico/rpi_pico.zmk.yml new file mode 100644 index 000000000..7142cb56a --- /dev/null +++ b/app/boards/raspberrypi/rpi_pico/rpi_pico.zmk.yml @@ -0,0 +1,8 @@ +file_format: "1" +id: rpi_pico//zmk +name: Raspberry Pi Pico +type: board +arch: arm +outputs: + - usb +url: https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html#pico-1-family diff --git a/app/boards/extensions/rpi_pico/rpi_pico.overlay b/app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk.dts similarity index 70% rename from app/boards/extensions/rpi_pico/rpi_pico.overlay rename to app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk.dts index b0aed7610..3acf57ff9 100644 --- a/app/boards/extensions/rpi_pico/rpi_pico.overlay +++ b/app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk.dts @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/raspberrypi/rpi_pico/rpi_pico.dts> #include &uart0 { status = "disabled"; }; diff --git a/app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk_defconfig b/app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk_defconfig new file mode 100644 index 000000000..5ff98221d --- /dev/null +++ b/app/boards/raspberrypi/rpi_pico/rpi_pico_rp2040_zmk_defconfig @@ -0,0 +1,27 @@ +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 + +# Core deps +CONFIG_RESET=y +CONFIG_CLOCK_CONTROL=y +CONFIG_GPIO=y + +# Build Output +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y +CONFIG_BUILD_OUTPUT_HEX=y + +# USB HID +CONFIG_ZMK_USB=y + +# Settings Support +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y + +# Bootloader Support +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/seeed/seeeduino_xiao/board.yml b/app/boards/seeed/seeeduino_xiao/board.yml new file mode 100644 index 000000000..c5d20792c --- /dev/null +++ b/app/boards/seeed/seeeduino_xiao/board.yml @@ -0,0 +1,5 @@ +board: + extend: seeeduino_xiao + variants: + - name: zmk + qualifier: samd21g18a diff --git a/app/boards/seeed/seeeduino_xiao/seeeduino_xiao.zmk.yml b/app/boards/seeed/seeeduino_xiao/seeeduino_xiao.zmk.yml index 51093b046..da65bb69b 100644 --- a/app/boards/seeed/seeeduino_xiao/seeeduino_xiao.zmk.yml +++ b/app/boards/seeed/seeeduino_xiao/seeeduino_xiao.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: seeeduino_xiao +id: seeeduino_xiao//zmk name: Seeed Studio XIAO SAMD21 type: board arch: arm diff --git a/app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk.dts b/app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk.dts new file mode 100644 index 000000000..66a500dd2 --- /dev/null +++ b/app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk.dts @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/seeed/seeeduino_xiao/seeeduino_xiao.dts> + diff --git a/app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk_defconfig b/app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk_defconfig new file mode 100644 index 000000000..04da60c96 --- /dev/null +++ b/app/boards/seeed/seeeduino_xiao/seeeduino_xiao_zmk_defconfig @@ -0,0 +1,11 @@ +# XTAL setup +CONFIG_SOC_ATMEL_SAMD_XOSC32K=y +CONFIG_SOC_ATMEL_SAMD_XOSC32K_AS_MAIN=y + +# Bootloader Setup +CONFIG_BUILD_OUTPUT_UF2=y +CONFIG_BOOTLOADER_BOSSA=y +CONFIG_BOOTLOADER_BOSSA_ADAFRUIT_UF2=y + +# ZMK USB Transport +CONFIG_ZMK_USB=y diff --git a/app/boards/seeed/xiao_ble/board.yml b/app/boards/seeed/xiao_ble/board.yml new file mode 100644 index 000000000..5643184c3 --- /dev/null +++ b/app/boards/seeed/xiao_ble/board.yml @@ -0,0 +1,5 @@ +board: + extend: xiao_ble + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/seeed/xiao_ble/xiao_ble.zmk.yml b/app/boards/seeed/xiao_ble/xiao_ble.zmk.yml index 270d80906..d4159e36c 100644 --- a/app/boards/seeed/xiao_ble/xiao_ble.zmk.yml +++ b/app/boards/seeed/xiao_ble/xiao_ble.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: xiao_ble +id: xiao_ble//zmk name: Seeed Studio XIAO nRF52840 type: board arch: arm diff --git a/app/boards/extensions/xiao_ble/xiao_ble.overlay b/app/boards/seeed/xiao_ble/xiao_ble_zmk.dts similarity index 96% rename from app/boards/extensions/xiao_ble/xiao_ble.overlay rename to app/boards/seeed/xiao_ble/xiao_ble_zmk.dts index 331b8fb74..b01c544e4 100644 --- a/app/boards/extensions/xiao_ble/xiao_ble.overlay +++ b/app/boards/seeed/xiao_ble/xiao_ble_zmk.dts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +#include <../boards/seeed/xiao_ble/xiao_ble.dts> #include /* Add an sd_partition label for compatibility with the nosd snippet */ diff --git a/app/boards/extensions/xiao_ble/xiao_ble.conf b/app/boards/seeed/xiao_ble/xiao_ble_zmk_defconfig similarity index 50% rename from app/boards/extensions/xiao_ble/xiao_ble.conf rename to app/boards/seeed/xiao_ble/xiao_ble_zmk_defconfig index 49eaacf65..fd85e275d 100644 --- a/app/boards/extensions/xiao_ble/xiao_ble.conf +++ b/app/boards/seeed/xiao_ble/xiao_ble_zmk_defconfig @@ -1,12 +1,21 @@ -CONFIG_CONSOLE=n -CONFIG_SERIAL=n -CONFIG_UART_CONSOLE=n -CONFIG_UART_INTERRUPT_DRIVEN=n +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable hardware stack protection +CONFIG_HW_STACK_PROTECTION=y + +# Enable GPIO +CONFIG_GPIO=y + CONFIG_ZMK_USB=y CONFIG_ZMK_BLE=y +# Build UF2 by default, supported by the Adafruit nRF52 Bootloader +CONFIG_BUILD_OUTPUT_UF2=y +CONFIG_USE_DT_CODE_PARTITION=y +# Settings Support CONFIG_MPU_ALLOW_FLASH_WRITE=y CONFIG_NVS=y CONFIG_SETTINGS_NVS=y @@ -14,6 +23,7 @@ CONFIG_FLASH=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_FLASH_MAP=y +# Bootloader Support CONFIG_RETAINED_MEM=y CONFIG_RETENTION=y CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/seeed/xiao_rp2040/board.yml b/app/boards/seeed/xiao_rp2040/board.yml new file mode 100644 index 000000000..813e33463 --- /dev/null +++ b/app/boards/seeed/xiao_rp2040/board.yml @@ -0,0 +1,5 @@ +board: + extend: xiao_rp2040 + variants: + - name: zmk + qualifier: rp2040 diff --git a/app/boards/seeed/xiao_rp2040/xiao_rp2040.zmk.yml b/app/boards/seeed/xiao_rp2040/xiao_rp2040.zmk.yml index ea6f04f30..ab30d3f79 100644 --- a/app/boards/seeed/xiao_rp2040/xiao_rp2040.zmk.yml +++ b/app/boards/seeed/xiao_rp2040/xiao_rp2040.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: xiao_rp2040 +id: xiao_rp2040//zmk name: Seeed Studio XIAO RP2040 type: board arch: arm diff --git a/app/boards/extensions/xiao_rp2040/xiao_rp2040.overlay b/app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk.dts similarity index 89% rename from app/boards/extensions/xiao_rp2040/xiao_rp2040.overlay rename to app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk.dts index 8f2e87143..b55ddc63a 100644 --- a/app/boards/extensions/xiao_rp2040/xiao_rp2040.overlay +++ b/app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk.dts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +#include <../boards/seeed/xiao_rp2040/xiao_rp2040.dts> #include &xiao_serial { status = "disabled"; }; diff --git a/app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk_defconfig b/app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk_defconfig new file mode 100644 index 000000000..d4a902e06 --- /dev/null +++ b/app/boards/seeed/xiao_rp2040/xiao_rp2040_zmk_defconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 +CONFIG_RESET=y + +# Enable clock control by default +CONFIG_CLOCK_CONTROL=y + +# Code partition needed to target the correct flash range +CONFIG_USE_DT_CODE_PARTITION=y + +# Output UF2 by default, native bootloader supports it. +CONFIG_BUILD_OUTPUT_UF2=y + +# Enable USB HID transport by default +CONFIG_ZMK_USB=y + +# Settings Enablement +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y + + +# Bootloader support +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/sparkfun/pro_micro_rp2040/board.yml b/app/boards/sparkfun/pro_micro_rp2040/board.yml new file mode 100644 index 000000000..4f3dd49ab --- /dev/null +++ b/app/boards/sparkfun/pro_micro_rp2040/board.yml @@ -0,0 +1,5 @@ +board: + extend: sparkfun_pro_micro_rp2040 + variants: + - name: zmk + qualifier: rp2040 diff --git a/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040.zmk.yml b/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040.zmk.yml index 26a2ca640..d9243be02 100644 --- a/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040.zmk.yml +++ b/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: sparkfun_pro_micro_rp2040 +id: sparkfun_pro_micro_rp2040//zmk name: SparkFun Pro Micro RP2040 type: board arch: arm diff --git a/app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.overlay b/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk.dts similarity index 87% rename from app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.overlay rename to app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk.dts index ac83d9816..733e2d087 100644 --- a/app/boards/extensions/sparkfun_pro_micro_rp2040/sparkfun_pro_micro_rp2040.overlay +++ b/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk.dts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +#include <../boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040.dts> #include &pro_micro_serial { status = "disabled"; }; diff --git a/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk_defconfig b/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk_defconfig new file mode 100644 index 000000000..0c1a531e8 --- /dev/null +++ b/app/boards/sparkfun/pro_micro_rp2040/sparkfun_pro_micro_rp2040_zmk_defconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: MIT + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 + +CONFIG_RESET=y + +# Enable clock control by default +CONFIG_CLOCK_CONTROL=y + +# Code partition needed to target the correct flash range +CONFIG_USE_DT_CODE_PARTITION=y + +# Output UF2 by default, native bootloader supports it. +CONFIG_BUILD_OUTPUT_UF2=y + +# USB HID +CONFIG_ZMK_USB=y + +# Settings Support +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y + +# Bootloader Support +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/app/boards/weact/blackpill_f401cc/blackpill_f401cc.zmk.yml b/app/boards/weact/blackpill_f401cc/blackpill_f401cc.zmk.yml index 329b7371d..2cf8c2818 100644 --- a/app/boards/weact/blackpill_f401cc/blackpill_f401cc.zmk.yml +++ b/app/boards/weact/blackpill_f401cc/blackpill_f401cc.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: blackpill_f401cc +id: blackpill_f401cc//zmk name: BlackPill F401CC type: board arch: arm diff --git a/app/boards/extensions/blackpill_f401ce/blackpill_f401ce.overlay b/app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk.dts similarity index 94% rename from app/boards/extensions/blackpill_f401ce/blackpill_f401ce.overlay rename to app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk.dts index 54e360a39..4704552dd 100644 --- a/app/boards/extensions/blackpill_f401ce/blackpill_f401ce.overlay +++ b/app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk.dts @@ -1,9 +1,10 @@ /* - * Copyright (c) 2022 The ZMK Contributors + * Copyright (c) 2026 The ZMK Contributors * * SPDX-License-Identifier: MIT */ +#include <../boards/weact/blackpill_f401cc/blackpill_f401cc.dts> / { blackpill: connector { diff --git a/app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk_defconfig b/app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk_defconfig new file mode 100644 index 000000000..c0efb874d --- /dev/null +++ b/app/boards/weact/blackpill_f401cc/blackpill_f401cc_zmk_defconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + + +# Enable GPIO +CONFIG_GPIO=y + +# USB HID +CONFIG_ZMK_USB=y + +# Defaults for matrix scanning to avoid interrupt issues +CONFIG_ZMK_KSCAN_MATRIX_POLLING=y diff --git a/app/boards/weact/blackpill_f401cc/board.yml b/app/boards/weact/blackpill_f401cc/board.yml new file mode 100644 index 000000000..7aa1253d9 --- /dev/null +++ b/app/boards/weact/blackpill_f401cc/board.yml @@ -0,0 +1,5 @@ +board: + extend: blackpill_f401cc + variants: + - name: zmk + qualifier: stm32f401xc diff --git a/app/boards/weact/blackpill_f401ce/blackpill_f401ce.zmk.yml b/app/boards/weact/blackpill_f401ce/blackpill_f401ce.zmk.yml index 251d2c272..261156804 100644 --- a/app/boards/weact/blackpill_f401ce/blackpill_f401ce.zmk.yml +++ b/app/boards/weact/blackpill_f401ce/blackpill_f401ce.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: blackpill_f401ce +id: blackpill_f401ce//zmk name: BlackPill F401CE type: board arch: arm diff --git a/app/boards/extensions/blackpill_f411ce/blackpill_f411ce.overlay b/app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk.dts similarity index 94% rename from app/boards/extensions/blackpill_f411ce/blackpill_f411ce.overlay rename to app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk.dts index 54e360a39..ea7f06346 100644 --- a/app/boards/extensions/blackpill_f411ce/blackpill_f411ce.overlay +++ b/app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk.dts @@ -1,9 +1,10 @@ /* - * Copyright (c) 2022 The ZMK Contributors + * Copyright (c) 2026 The ZMK Contributors * * SPDX-License-Identifier: MIT */ +#include <../boards/weact/blackpill_f401ce/blackpill_f401ce.dts> / { blackpill: connector { diff --git a/app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk_defconfig b/app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk_defconfig new file mode 100644 index 000000000..c0efb874d --- /dev/null +++ b/app/boards/weact/blackpill_f401ce/blackpill_f401ce_zmk_defconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + + +# Enable GPIO +CONFIG_GPIO=y + +# USB HID +CONFIG_ZMK_USB=y + +# Defaults for matrix scanning to avoid interrupt issues +CONFIG_ZMK_KSCAN_MATRIX_POLLING=y diff --git a/app/boards/weact/blackpill_f401ce/board.yml b/app/boards/weact/blackpill_f401ce/board.yml new file mode 100644 index 000000000..85d23de12 --- /dev/null +++ b/app/boards/weact/blackpill_f401ce/board.yml @@ -0,0 +1,5 @@ +board: + extend: blackpill_f401ce + variants: + - name: zmk + qualifier: stm32f401xe diff --git a/app/boards/weact/blackpill_f411ce/blackpill_f411ce.zmk.yml b/app/boards/weact/blackpill_f411ce/blackpill_f411ce.zmk.yml index eaa714d69..2684da2d7 100644 --- a/app/boards/weact/blackpill_f411ce/blackpill_f411ce.zmk.yml +++ b/app/boards/weact/blackpill_f411ce/blackpill_f411ce.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: blackpill_f411ce +id: blackpill_f411ce//zmk name: BlackPill F411CE type: board arch: arm diff --git a/app/boards/extensions/blackpill_f401cc/blackpill_f401cc.overlay b/app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk.dts similarity index 94% rename from app/boards/extensions/blackpill_f401cc/blackpill_f401cc.overlay rename to app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk.dts index 6ed4c3cf8..f9be15c13 100644 --- a/app/boards/extensions/blackpill_f401cc/blackpill_f401cc.overlay +++ b/app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk.dts @@ -1,9 +1,11 @@ /* - * Copyright (c) 2024 The ZMK Contributors + * Copyright (c) 2026 The ZMK Contributors * * SPDX-License-Identifier: MIT */ +#include <../boards/weact/blackpill_f411ce/blackpill_f411ce.dts> + / { blackpill: connector { compatible = "blackpill"; diff --git a/app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk_defconfig b/app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk_defconfig new file mode 100644 index 000000000..c0efb874d --- /dev/null +++ b/app/boards/weact/blackpill_f411ce/blackpill_f411ce_zmk_defconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + + +# Enable GPIO +CONFIG_GPIO=y + +# USB HID +CONFIG_ZMK_USB=y + +# Defaults for matrix scanning to avoid interrupt issues +CONFIG_ZMK_KSCAN_MATRIX_POLLING=y diff --git a/app/boards/weact/blackpill_f411ce/board.yml b/app/boards/weact/blackpill_f411ce/board.yml new file mode 100644 index 000000000..d0bb76916 --- /dev/null +++ b/app/boards/weact/blackpill_f411ce/board.yml @@ -0,0 +1,5 @@ +board: + extend: blackpill_f411ce + variants: + - name: zmk + qualifier: stm32f411xe diff --git a/app/core-coverage.yml b/app/core-coverage.yml index 6dc6a0519..8cdb05e12 100644 --- a/app/core-coverage.yml +++ b/app/core-coverage.yml @@ -11,7 +11,7 @@ shield: include: - board: bdn9 - board: nice60 - - board: xiao_ble + - board: xiao_ble//zmk shield: hummingbird - board: nrf52840_m2 shield: m60 @@ -26,7 +26,7 @@ include: shield: kyria_left cmake-args: "-DCONFIG_ZMK_POINTING=y" nickname: "mouse" - - board: sparkfun_pro_micro_rp2040 + - board: sparkfun_pro_micro_rp2040//zmk shield: reviung41 cmake-args: "-DSNIPPET='zmk-usb-logging'" - board: nice_nano @@ -59,12 +59,12 @@ include: snippet: studio-rpc-usb-uart cmake-args: "-DCONFIG_ZMK_STUDIO=y" nickname: "split-right-studio" - - board: sparkfun_pro_micro_rp2040 + - board: sparkfun_pro_micro_rp2040//zmk shield: reviung41 snippet: studio-rpc-usb-uart cmake-args: "-DCONFIG_ZMK_STUDIO=y" nickname: "rp2040-studio" - - board: seeeduino_xiao + - board: seeeduino_xiao//zmk shield: hummingbird snippet: studio-rpc-usb-uart cmake-args: "-DCONFIG_ZMK_STUDIO=y" diff --git a/app/run-ble-test.sh b/app/run-ble-test.sh index 8c65c91b6..f8e705374 100755 --- a/app/run-ble-test.sh +++ b/app/run-ble-test.sh @@ -61,7 +61,7 @@ echo "Running $testcase:" shopt -s nullglob for file in $(pwd)/$testcase/peripheral*.overlay ; do pn=$(basename -s .overlay ${file}) - west build -d build/${testcase%%/}_${pn}/ -b nrf52_bsim -- -DZMK_CONFIG="$(pwd)/$testcase" -DEXTRA_DTC_OVERLAY_FILE="${file}" > /dev/null 2>&1 + west build -d build/${testcase%%/}_${pn}/ -b nrf52_bsim//zmk_test_mock -- -DZMK_CONFIG="$(pwd)/$testcase" -DEXTRA_DTC_OVERLAY_FILE="${file}" > /dev/null 2>&1 if [ $? -gt 0 ]; then echo "FAILED: $testcase peripheral ${pn} did not build" | tee -a ./build/tests/pass-fail.log @@ -76,7 +76,7 @@ if ls $(pwd)/$testcase/peripheral*.overlay >/dev/null 2>&1; then extra_cmake_args="-DCONFIG_ZMK_SPLIT_ROLE_CENTRAL=y" fi -west build -d build/$testcase -b nrf52_bsim -- -DZMK_CONFIG="$(pwd)/$testcase" ${extra_cmake_args} > /dev/null 2>&1 +west build -d build/$testcase -b nrf52_bsim//zmk_test_mock -- -DZMK_CONFIG="$(pwd)/$testcase" ${extra_cmake_args} > /dev/null 2>&1 if [ $? -gt 0 ]; then echo "FAILED: $testcase did not build" | tee -a ./build/tests/pass-fail.log exit 1 diff --git a/app/run-test.sh b/app/run-test.sh index cd944c9a5..aa84ed69b 100755 --- a/app/run-test.sh +++ b/app/run-test.sh @@ -38,7 +38,7 @@ testcase=$(realpath $path | sed -n -e "s|.*/tests/||p") echo "Running $testcase:" build_cmd="west build ${ZMK_SRC_DIR:+-s $ZMK_SRC_DIR} -d ${ZMK_BUILD_DIR}/tests/$testcase \ - -b native_sim/native/64 -p -- -DCONFIG_ASSERT=y -DZMK_CONFIG="$(realpath $path)" \ + -b native_sim//zmk_test_mock -p -- -DCONFIG_ASSERT=y -DZMK_CONFIG="$(realpath $path)" \ ${ZMK_EXTRA_MODULES:+-DZMK_EXTRA_MODULES="$(realpath ${ZMK_EXTRA_MODULES})"}" # Add extra cmake arguments from file if it exists