From 6690d535e6ae30946127b2f419ecca76c06b078f Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Wed, 11 Feb 2026 23:53:54 -0700 Subject: [PATCH] refactor(core): Adjust our approach for upstream Zephyr boards (#3145) 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`. refactor(boards): Move to ZMK specific variants for the nRFMicro board For consistency, adjust the nRFMicro board definition to offer a "vanilla" Zephyr board, and then ZMK variants, e.g. `nrfmicro/nrf52840/zmk`. refactor(boards): Move to ZMK specific variant for the bluemicro840 board For consistency, adjust the bluemicro840 board definition to offer a "vanilla" Zephyr board, and then ZMK variant, e.g. `bluemicro840//zmk`. refactor(boards): Make tofu65 to ZMK variant by default Make the standard Tofu65 board ID be `tofu65/rp2040/zmk` or `tofu65//zmk` by shorthand. refactor(boards): Move BDN9 to ZMK variant by default Make the standard BDN9 board ID be `bdn9/stm32f072xb/zmk` or `bdn9//zmk` by shorthand. refactor(boards): Move Puchi BLE to ZMK variant by default Make the standard Puchi BLE board ID be `puchi_ble/nrf52840/zmk` or `puchi_ble//zmk` by shorthand. refactor(boards): Move Adv360 Pro to ZMK variant by default Make the standard Adv360 Pro board ID be `adv360pro_left/nrf52840/zmk` or `adv360pro_left//zmk` by shorthand and for right as well. refactor(boards): Move nRF52840 M2 to ZMK variant by default Make the standard nRF52840 M2 board ID be `nrf52840_m2/nrf52840/zmk` or `nrf52840_m2//zmk` by shorthand. refactor(boards): Move Pillbug to ZMK variant by default Make the standard Pillbug board ID be `pillbug/nrf52840/zmk` or `pillbug//zmk` by shorthand. refactor(boards): Move s40nc to ZMK variant by default Make the standard s40nc board ID be `s40nc/nrf52840/zmk` or `s40nc//zmk` by shorthand. refactor(boards): Move nice!60 to ZMK variant by default Make the standard nice!60 board ID be `nice60/nrf52840/zmk` or `nice60//zmk` by shorthand. refactor(boards): Move planck to ZMK variant by default Make the standard planck board ID be `planck/stm32f303xc/zmk` or `planck//zmk` by shorthand. refactor(boards): Move preonic to ZMK variant by default Make the standard preonic board ID be `preonic/stm32f303xc/zmk` or `preonic//zmk` by shorthand. refactor(boards): Move ferris to ZMK variant by default Make the standard ferris board ID be `ferris/stm32f072xb/zmk` or `ferris//zmk` by shorthand. refactor(boards): Move Proton-C to ZMK variant by default Make the standard Proton-C board ID be `proton_c/stm32f303xc/zmk` or `proton_c//zmk` by shorthand. refactor(boards): Move Corneish Zen to ZMK variant by default Make the standard Corneish Zen board ID be `corneish_zen_left/nrf52840/zmk` or `corneish_zen_left//zmk` by shorthand and for right as well. refactor(boards): Move nice!nano to ZMK variant by default Make the standard nice!nano board ID be `nice_nano/nrf52840/zmk` or `nice_nano//zmk` by shorthand. refactor(boards): Move mikoto to ZMK variant by default Make the standard mikoto board ID be `mikoto/nrf52840/zmk` or `mikoto//zmk` by shorthand. refactor(boards): Move Polarity Works boards to ZMK variants Make the standard Polarity Works board IDs be `zmk` variants. doc: Update docs/blog post to reference ZMK variants * Update Zephyr 4.1 blog post to mention ZMK variants * Add note to hardware support page about variants docs: Fix up shield board overlays for new board IDs Adjust our documentation to properly use the correct qualified board overlay file names that match our new board conventions. --- .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/joric/nrfmicro/Kconfig.nrfmicro | 12 ++-- app/boards/joric/nrfmicro/board.yml | 21 +++---- .../joric/nrfmicro/nrfmicro_nrf52833.zmk.yml | 2 +- .../joric/nrfmicro/nrfmicro_nrf52833_zmk.dts | 29 ++++++++++ ... => nrfmicro_nrf52833_zmk_1_3_0_defconfig} | 0 .../joric/nrfmicro/nrfmicro_nrf52840.zmk.yml | 2 +- .../nrfmicro_nrf52840_flipped.zmk.yml | 2 +- .../nrfmicro_nrf52840_flipped_1_1_0.overlay | 6 -- .../nrfmicro_nrf52840_flipped_zmk.dts | 17 ++++++ ...icro_nrf52840_flipped_zmk_1_1_0_defconfig} | 0 .../joric/nrfmicro/nrfmicro_nrf52840_zmk.dts | 29 ++++++++++ ... => nrfmicro_nrf52840_zmk_1_1_0_defconfig} | 0 ...ay => nrfmicro_nrf52840_zmk_1_3_0.overlay} | 0 ... => nrfmicro_nrf52840_zmk_1_3_0_defconfig} | 0 .../bluemicro840/Kconfig.bluemicro840 | 8 +-- .../bluemicro840/bluemicro840.zmk.yml | 2 +- .../bluemicro840_nrf52840_zmk.dts | 29 ++++++++++ ...ig => bluemicro840_nrf52840_zmk_defconfig} | 0 .../jpconstantineau/bluemicro840/board.yml | 8 +-- app/boards/kbdfans/tofu65/board.yml | 2 + app/boards/kbdfans/tofu65/tofu65.zmk.yml | 2 +- .../{tofu65.dts => tofu65_rp2040_zmk.dts} | 0 ..._defconfig => tofu65_rp2040_zmk_defconfig} | 0 app/boards/keebio/bdn9/bdn9.zmk.yml | 2 +- .../{bdn9.dts => bdn9_stm32f072xb_zmk.dts} | 0 ...fconfig => bdn9_stm32f072xb_zmk_defconfig} | 0 app/boards/keebio/bdn9/board.yml | 2 + .../keycapsss/puchi_ble/Kconfig.defconfig | 6 -- .../keycapsss/puchi_ble/Kconfig.puchi_ble | 6 +- app/boards/keycapsss/puchi_ble/board.yml | 8 +-- .../keycapsss/puchi_ble/puchi_ble.zmk.yml | 2 +- .../puchi_ble/puchi_ble_nrf52840_zmk.dts | 29 ++++++++++ ...onfig => puchi_ble_nrf52840_zmk_defconfig} | 0 .../kinesis/adv360pro/adv360pro.zmk.yml | 4 +- ...ft.dts => adv360pro_left_nrf52840_zmk.dts} | 0 ... => adv360pro_left_nrf52840_zmk_defconfig} | 0 ...t.dts => adv360pro_right_nrf52840_zmk.dts} | 0 ...=> adv360pro_right_nrf52840_zmk_defconfig} | 0 app/boards/kinesis/adv360pro/board.yml | 4 ++ app/boards/lowprokb/corneish_zen/board.yml | 4 ++ .../corneish_zen/corneish_zen.zmk.yml | 4 +- ...dts => corneish_zen_left_nrf52840_zmk.dts} | 0 ...neish_zen_left_nrf52840_zmk_1_0_0.overlay} | 0 ...ish_zen_left_nrf52840_zmk_1_0_0_defconfig} | 0 ...neish_zen_left_nrf52840_zmk_2_0_0.overlay} | 0 ...ish_zen_left_nrf52840_zmk_2_0_0_defconfig} | 0 ...ts => corneish_zen_right_nrf52840_zmk.dts} | 0 ...eish_zen_right_nrf52840_zmk_1_0_0.overlay} | 0 ...sh_zen_right_nrf52840_zmk_1_0_0_defconfig} | 0 ...eish_zen_right_nrf52840_zmk_2_0_0.overlay} | 0 ...sh_zen_right_nrf52840_zmk_2_0_0_defconfig} | 0 .../nrf52840_m2/Kconfig.nrf52840_m2 | 6 +- app/boards/makerdiary/nrf52840_m2/board.yml | 8 +-- .../nrf52840_m2/nrf52840_m2.zmk.yml | 2 +- .../nrf52840_m2/nrf52840_m2_nrf52840_zmk.dts | 25 +++++++++ ...fig => nrf52840_m2_nrf52840_zmk_defconfig} | 0 app/boards/mechwild/pillbug/Kconfig.pillbug | 6 +- app/boards/mechwild/pillbug/board.yml | 6 +- app/boards/mechwild/pillbug/pillbug.zmk.yml | 2 +- .../mechwild/pillbug/pillbug_nrf52840_zmk.dts | 32 +++++++++++ ...fconfig => pillbug_nrf52840_zmk_defconfig} | 0 app/boards/mechwild/s40nc/board.yml | 2 + app/boards/mechwild/s40nc/s40nc.zmk.yml | 2 +- .../{s40nc.dts => s40nc_nrf52840_zmk.dts} | 0 ...defconfig => s40nc_nrf52840_zmk_defconfig} | 0 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 + app/boards/nicekeyboards/nice60/README.md | 2 +- app/boards/nicekeyboards/nice60/board.yml | 2 + .../nicekeyboards/nice60/nice60.zmk.yml | 2 +- .../{nice60.dts => nice60_nrf52840_zmk.dts} | 0 ...efconfig => nice60_nrf52840_zmk_defconfig} | 0 .../nicekeyboards/nice_nano/Kconfig.nice_nano | 6 +- app/boards/nicekeyboards/nice_nano/board.yml | 14 ++--- .../nicekeyboards/nice_nano/nice_nano.zmk.yml | 2 +- .../nice_nano/nice_nano_nrf52840_zmk.dts | 11 ++++ ...y => nice_nano_nrf52840_zmk_1_0_0.overlay} | 0 ...=> nice_nano_nrf52840_zmk_1_0_0_defconfig} | 0 ...y => nice_nano_nrf52840_zmk_2_0_0.overlay} | 0 ...=> nice_nano_nrf52840_zmk_2_0_0_defconfig} | 0 .../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/olkb/planck/board.yml | 2 + app/boards/olkb/planck/planck.zmk.yml | 2 +- ...{planck.dts => planck_stm32f303xc_zmk.dts} | 0 ...=> planck_stm32f303xc_zmk_6_0_0_defconfig} | 0 app/boards/olkb/preonic/board.yml | 2 + app/boards/olkb/preonic/preonic.zmk.yml | 2 +- ...reonic.dts => preonic_stm32f303xc_zmk.dts} | 0 ...nfig => preonic_stm32f303xc_zmk_defconfig} | 0 app/boards/pierrechevalier83/ferris/board.yml | 2 + .../pierrechevalier83/ferris/ferris.zmk.yml | 2 +- ...{ferris.dts => ferris_stm32f072xb_zmk.dts} | 0 ...onfig => ferris_stm32f072xb_zmk_defconfig} | 0 app/boards/polarityworks/bt60/board.yml | 4 ++ app/boards/polarityworks/bt60/bt60.zmk.yml | 2 +- app/boards/polarityworks/bt60/bt60_hs.zmk.yml | 2 +- .../{bt60_hs.dts => bt60_hs_nrf52840_zmk.dts} | 2 +- ...fconfig => bt60_hs_nrf52840_zmk_defconfig} | 0 .../bt60/{bt60.dts => bt60_nrf52840_zmk.dts} | 0 ...verlay => bt60_nrf52840_zmk_1_0_0.overlay} | 0 ...nfig => bt60_nrf52840_zmk_1_0_0_defconfig} | 0 ...verlay => bt60_nrf52840_zmk_2_0_0.overlay} | 0 ...nfig => bt60_nrf52840_zmk_2_0_0_defconfig} | 0 app/boards/polarityworks/bt65/board.yml | 2 + app/boards/polarityworks/bt65/bt65.zmk.yml | 2 +- .../bt65/{bt65.dts => bt65_nrf52840_zmk.dts} | 0 ..._defconfig => bt65_nrf52840_zmk_defconfig} | 0 app/boards/polarityworks/bt75/board.yml | 2 + app/boards/polarityworks/bt75/bt75.zmk.yml | 2 +- .../bt75/{bt75.dts => bt75_nrf52840_zmk.dts} | 0 ..._defconfig => bt75_nrf52840_zmk_defconfig} | 0 app/boards/post_boards_shields.cmake | 4 +- app/boards/qmk/proton_c/board.yml | 8 +-- app/boards/qmk/proton_c/proton_c.zmk.yml | 2 +- .../qmk/proton_c/proton_c_stm32f303xc_zmk.dts | 9 +++ ...fig => proton_c_stm32f303xc_zmk_defconfig} | 0 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 ++++++++++ ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...fmicro_nrf52840_flipped_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_3_0.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...rlay => bluemicro840_nrf52840_zmk.overlay} | 0 ...to.overlay => mikoto_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...fmicro_nrf52840_flipped_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_3_0.overlay} | 0 ...overlay => puchi_ble_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_3_0.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...overlay => nice_nano_nrf52840_zmk.overlay} | 0 ...fmicro_nrf52840_flipped_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_1_0.overlay} | 0 ...ay => nrfmicro_nrf52840_zmk_1_3_0.overlay} | 0 .../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/boards/zhiayang/mikoto/Kconfig.mikoto | 6 +- app/boards/zhiayang/mikoto/board.yml | 17 ++---- app/boards/zhiayang/mikoto/mikoto.zmk.yml | 2 +- .../zhiayang/mikoto/mikoto_nrf52840_zmk.dts | 28 ++++++++++ .../mikoto/mikoto_nrf52840_zmk_5_20_0.overlay | 8 +++ .../mikoto/mikoto_nrf52840_zmk_6_1_0.overlay | 8 +++ .../mikoto/mikoto_nrf52840_zmk_7_2_0.overlay | 47 ++++++++++++++++ ...nf => mikoto_nrf52840_zmk_7_2_0_defconfig} | 0 ...efconfig => mikoto_nrf52840_zmk_defconfig} | 0 app/core-coverage.yml | 42 +++++++------- .../boards/joric/nrfmicro/CMakeLists.txt | 0 .../boards/joric/nrfmicro/Kconfig | 0 .../boards/joric/nrfmicro/Kconfig.defconfig | 0 .../boards/joric/nrfmicro/Kconfig.nrfmicro | 9 +++ .../nrfmicro/arduino_pro_micro_pins.dtsi | 0 .../arduino_pro_micro_pins_52833.dtsi | 0 .../arduino_pro_micro_pins_flipped.dtsi | 0 .../boards/joric/nrfmicro/board.cmake | 0 app/module/boards/joric/nrfmicro/board.yml | 14 +++++ .../nrfmicro/nrfmicro-flipped-pinctrl.dtsi | 0 .../joric/nrfmicro/nrfmicro-pinctrl.dtsi | 0 .../boards/joric/nrfmicro/nrfmicro_11.yaml | 0 .../joric/nrfmicro/nrfmicro_11_flipped.yaml | 0 .../boards/joric/nrfmicro/nrfmicro_13.yaml | 0 .../joric/nrfmicro/nrfmicro_13_52833.yaml | 0 .../joric/nrfmicro/nrfmicro_nrf52833.dts | 15 ----- .../nrfmicro/nrfmicro_nrf52833_1_3_0.overlay | 0 .../nrfmicro_nrf52833_1_3_0_defconfig | 13 +++++ .../joric/nrfmicro/nrfmicro_nrf52840.dts | 17 ------ .../nrfmicro/nrfmicro_nrf52840_1_1_0.overlay | 0 .../nrfmicro_nrf52840_1_1_0_defconfig | 13 +++++ .../nrfmicro_nrf52840_1_3_0_defconfig | 12 ++++ .../nrfmicro/nrfmicro_nrf52840_flipped.dts | 8 --- .../nrfmicro_nrf52840_flipped_1_1_0_defconfig | 12 ++++ .../boards/joric/nrfmicro/pinmux.c | 0 .../boards/joric/nrfmicro/pre_dt_board.cmake | 0 .../jpconstantineau/bluemicro840/Kconfig | 0 .../bluemicro840/Kconfig.bluemicro840 | 5 ++ .../bluemicro840/Kconfig.defconfig | 0 .../bluemicro840/arduino_pro_micro_pins.dtsi | 0 .../bluemicro840/bluemicro840-pinctrl.dtsi | 0 .../bluemicro840/bluemicro840.dts | 17 ------ .../bluemicro840/bluemicro840.yaml | 15 +++++ .../bluemicro840/bluemicro840_defconfig | 13 +++++ .../jpconstantineau/bluemicro840/board.cmake | 5 ++ .../jpconstantineau/bluemicro840/board.yml | 5 ++ .../bluemicro840/pre_dt_board.cmake | 9 +++ .../boards/keycapsss/puchi_ble/CMakeLists.txt | 0 .../boards/keycapsss/puchi_ble/Kconfig | 0 .../keycapsss/puchi_ble/Kconfig.defconfig | 16 ++++++ .../keycapsss/puchi_ble/Kconfig.puchi_ble | 10 ++++ .../puchi_ble/arduino_pro_micro_pins.dtsi | 0 .../boards/keycapsss/puchi_ble/board.cmake | 0 .../boards/keycapsss/puchi_ble/board.yml | 5 ++ .../boards/keycapsss/puchi_ble/pinmux.c | 0 .../keycapsss/puchi_ble/pre_dt_board.cmake | 9 +++ .../puchi_ble/puchi_ble-pinctrl.dtsi | 0 .../boards/keycapsss/puchi_ble/puchi_ble.dts | 0 .../boards/keycapsss/puchi_ble/puchi_ble.yaml | 0 .../keycapsss/puchi_ble/puchi_ble.zmk.yml | 10 ++++ .../keycapsss/puchi_ble/puchi_ble_defconfig | 15 +++++ .../boards/makerdiary/nrf52840_m2/Kconfig | 0 .../makerdiary/nrf52840_m2/Kconfig.defconfig | 0 .../nrf52840_m2/Kconfig.nrf52840_m2 | 5 ++ .../boards/makerdiary/nrf52840_m2/board.cmake | 7 +++ .../boards/makerdiary/nrf52840_m2/board.yml | 5 ++ .../makerdiary/nrf52840_m2/nrf52840_m2.dts | 10 ---- .../makerdiary/nrf52840_m2/nrf52840_m2.yaml | 15 +++++ .../nrf52840_m2/nrf52840_m2_defconfig | 12 ++++ .../makerdiary/nrf52840_m2/pre_dt_board.cmake | 9 +++ .../boards/mechwild/pillbug/Kconfig | 0 .../boards/mechwild/pillbug/Kconfig.defconfig | 0 .../boards/mechwild/pillbug/Kconfig.pillbug | 8 +++ .../mechwild/pillbug/blackpill_pins.dtsi | 0 .../boards/mechwild/pillbug/board.cmake | 7 +++ app/module/boards/mechwild/pillbug/board.yml | 5 ++ .../mechwild/pillbug/pillbug-pinctrl.dtsi | 56 +++++++++++++++++++ .../boards/mechwild/pillbug/pillbug.dts | 17 ------ .../boards/mechwild/pillbug/pillbug.yaml | 0 .../boards/mechwild/pillbug/pillbug_defconfig | 14 +++++ .../mechwild/pillbug/pre_dt_board.cmake | 0 .../nicekeyboards/nice_nano/Kconfig.nice_nano | 5 ++ .../nice_nano/arduino_pro_micro_pins.dtsi | 0 .../nicekeyboards/nice_nano/board.cmake | 5 ++ .../boards/nicekeyboards/nice_nano/board.yml | 11 ++++ .../nice_nano/nice_nano-pinctrl.dtsi | 0 .../nicekeyboards/nice_nano/nice_nano.dts | 1 - .../nicekeyboards/nice_nano/nice_nano.yaml | 0 .../nice_nano/nice_nano_1_0_0_defconfig | 13 +++++ .../nice_nano/nice_nano_2_0_0_defconfig | 13 +++++ .../nice_nano/pre_dt_board.cmake | 9 +++ .../boards/qmk/proton_c/Kconfig.proton_c | 0 .../qmk/proton_c/arduino_pro_micro_pins.dtsi | 0 app/module/boards/qmk/proton_c/board.cmake | 7 +++ app/module/boards/qmk/proton_c/board.yml | 5 ++ .../boards/qmk/proton_c/proton_c.dts | 0 .../boards/qmk/proton_c/proton_c.yaml | 0 .../boards/qmk/proton_c/proton_c.zmk.yml | 9 +++ .../boards/qmk/proton_c/proton_c_defconfig | 16 ++++++ .../boards/zhiayang/mikoto/CMakeLists.txt | 0 .../boards/zhiayang/mikoto/Kconfig | 0 .../boards/zhiayang/mikoto/Kconfig.defconfig | 3 - .../boards/zhiayang/mikoto/Kconfig.mikoto | 5 ++ .../mikoto/arduino_pro_micro_pins_v5.dtsi | 0 .../mikoto/arduino_pro_micro_pins_v6.dtsi | 0 app/module/boards/zhiayang/mikoto/board.cmake | 5 ++ app/module/boards/zhiayang/mikoto/board.yml | 14 +++++ .../zhiayang/mikoto/mikoto-pinctrl.dtsi | 0 .../boards/zhiayang/mikoto/mikoto.dts | 15 ----- .../boards/zhiayang/mikoto/mikoto.yaml | 0 .../zhiayang/mikoto/mikoto_5_20_0.overlay | 0 .../zhiayang/mikoto/mikoto_6_1_0.overlay | 0 .../boards/zhiayang/mikoto/mikoto_7_2_0.conf | 2 + .../zhiayang/mikoto/mikoto_7_2_0.overlay | 0 .../boards/zhiayang/mikoto/mikoto_defconfig | 12 ++++ .../boards/zhiayang/mikoto/pinmux.c | 0 .../boards/zhiayang/mikoto/pre_dt_board.cmake | 8 +++ app/module/zephyr/module.yml | 1 + app/run-ble-test.sh | 4 +- app/run-test.sh | 2 +- docs/blog/2025-12-09-zephyr-4-1.md | 14 +++++ .../lighting/underglow.md | 2 +- .../hardware-integration/pinctrl.mdx | 5 +- docs/docs/hardware.mdx | 6 ++ 360 files changed, 1468 insertions(+), 454 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/joric/nrfmicro/nrfmicro_nrf52833_zmk.dts rename app/boards/joric/nrfmicro/{nrfmicro_nrf52833_1_3_0_defconfig => nrfmicro_nrf52833_zmk_1_3_0_defconfig} (100%) delete mode 100644 app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0.overlay create mode 100644 app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_zmk.dts rename app/boards/joric/nrfmicro/{nrfmicro_nrf52840_1_1_0_defconfig => nrfmicro_nrf52840_flipped_zmk_1_1_0_defconfig} (100%) create mode 100644 app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk.dts rename app/boards/joric/nrfmicro/{nrfmicro_nrf52840_1_3_0_defconfig => nrfmicro_nrf52840_zmk_1_1_0_defconfig} (100%) rename app/boards/joric/nrfmicro/{nrfmicro_nrf52840_1_3_0.overlay => nrfmicro_nrf52840_zmk_1_3_0.overlay} (100%) rename app/boards/joric/nrfmicro/{nrfmicro_nrf52840_flipped_1_1_0_defconfig => nrfmicro_nrf52840_zmk_1_3_0_defconfig} (100%) create mode 100644 app/boards/jpconstantineau/bluemicro840/bluemicro840_nrf52840_zmk.dts rename app/boards/jpconstantineau/bluemicro840/{bluemicro840_defconfig => bluemicro840_nrf52840_zmk_defconfig} (100%) rename app/boards/kbdfans/tofu65/{tofu65.dts => tofu65_rp2040_zmk.dts} (100%) rename app/boards/kbdfans/tofu65/{tofu65_defconfig => tofu65_rp2040_zmk_defconfig} (100%) rename app/boards/keebio/bdn9/{bdn9.dts => bdn9_stm32f072xb_zmk.dts} (100%) rename app/boards/keebio/bdn9/{bdn9_defconfig => bdn9_stm32f072xb_zmk_defconfig} (100%) create mode 100644 app/boards/keycapsss/puchi_ble/puchi_ble_nrf52840_zmk.dts rename app/boards/keycapsss/puchi_ble/{puchi_ble_defconfig => puchi_ble_nrf52840_zmk_defconfig} (100%) rename app/boards/kinesis/adv360pro/{adv360pro_left.dts => adv360pro_left_nrf52840_zmk.dts} (100%) rename app/boards/kinesis/adv360pro/{adv360pro_left_defconfig => adv360pro_left_nrf52840_zmk_defconfig} (100%) rename app/boards/kinesis/adv360pro/{adv360pro_right.dts => adv360pro_right_nrf52840_zmk.dts} (100%) rename app/boards/kinesis/adv360pro/{adv360pro_right_defconfig => adv360pro_right_nrf52840_zmk_defconfig} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_left.dts => corneish_zen_left_nrf52840_zmk.dts} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_left_1_0_0.overlay => corneish_zen_left_nrf52840_zmk_1_0_0.overlay} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_left_1_0_0_defconfig => corneish_zen_left_nrf52840_zmk_1_0_0_defconfig} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_left_2_0_0.overlay => corneish_zen_left_nrf52840_zmk_2_0_0.overlay} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_left_2_0_0_defconfig => corneish_zen_left_nrf52840_zmk_2_0_0_defconfig} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_right.dts => corneish_zen_right_nrf52840_zmk.dts} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_right_1_0_0.overlay => corneish_zen_right_nrf52840_zmk_1_0_0.overlay} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_right_1_0_0_defconfig => corneish_zen_right_nrf52840_zmk_1_0_0_defconfig} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_right_2_0_0.overlay => corneish_zen_right_nrf52840_zmk_2_0_0.overlay} (100%) rename app/boards/lowprokb/corneish_zen/{corneish_zen_right_2_0_0_defconfig => corneish_zen_right_nrf52840_zmk_2_0_0_defconfig} (100%) create mode 100644 app/boards/makerdiary/nrf52840_m2/nrf52840_m2_nrf52840_zmk.dts rename app/boards/makerdiary/nrf52840_m2/{nrf52840_m2_defconfig => nrf52840_m2_nrf52840_zmk_defconfig} (100%) create mode 100644 app/boards/mechwild/pillbug/pillbug_nrf52840_zmk.dts rename app/boards/mechwild/pillbug/{pillbug_defconfig => pillbug_nrf52840_zmk_defconfig} (100%) rename app/boards/mechwild/s40nc/{s40nc.dts => s40nc_nrf52840_zmk.dts} (100%) rename app/boards/mechwild/s40nc/{s40nc_defconfig => s40nc_nrf52840_zmk_defconfig} (100%) 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%) rename app/boards/nicekeyboards/nice60/{nice60.dts => nice60_nrf52840_zmk.dts} (100%) rename app/boards/nicekeyboards/nice60/{nice60_defconfig => nice60_nrf52840_zmk_defconfig} (100%) create mode 100644 app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk.dts rename app/boards/nicekeyboards/nice_nano/{nice_nano_1_0_0.overlay => nice_nano_nrf52840_zmk_1_0_0.overlay} (100%) rename app/boards/nicekeyboards/nice_nano/{nice_nano_1_0_0_defconfig => nice_nano_nrf52840_zmk_1_0_0_defconfig} (100%) rename app/boards/nicekeyboards/nice_nano/{nice_nano_2_0_0.overlay => nice_nano_nrf52840_zmk_2_0_0.overlay} (100%) rename app/boards/nicekeyboards/nice_nano/{nice_nano_2_0_0_defconfig => nice_nano_nrf52840_zmk_2_0_0_defconfig} (100%) 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%) rename app/boards/olkb/planck/{planck.dts => planck_stm32f303xc_zmk.dts} (100%) rename app/boards/olkb/planck/{planck_6_0_0_defconfig => planck_stm32f303xc_zmk_6_0_0_defconfig} (100%) rename app/boards/olkb/preonic/{preonic.dts => preonic_stm32f303xc_zmk.dts} (100%) rename app/boards/olkb/preonic/{preonic_defconfig => preonic_stm32f303xc_zmk_defconfig} (100%) rename app/boards/pierrechevalier83/ferris/{ferris.dts => ferris_stm32f072xb_zmk.dts} (100%) rename app/boards/pierrechevalier83/ferris/{ferris_defconfig => ferris_stm32f072xb_zmk_defconfig} (100%) rename app/boards/polarityworks/bt60/{bt60_hs.dts => bt60_hs_nrf52840_zmk.dts} (98%) rename app/boards/polarityworks/bt60/{bt60_1_0_0_defconfig => bt60_hs_nrf52840_zmk_defconfig} (100%) rename app/boards/polarityworks/bt60/{bt60.dts => bt60_nrf52840_zmk.dts} (100%) rename app/boards/polarityworks/bt60/{bt60_1_0_0.overlay => bt60_nrf52840_zmk_1_0_0.overlay} (100%) rename app/boards/polarityworks/bt60/{bt60_hs_defconfig => bt60_nrf52840_zmk_1_0_0_defconfig} (100%) rename app/boards/polarityworks/bt60/{bt60_2_0_0.overlay => bt60_nrf52840_zmk_2_0_0.overlay} (100%) rename app/boards/polarityworks/bt60/{bt60_2_0_0_defconfig => bt60_nrf52840_zmk_2_0_0_defconfig} (100%) rename app/boards/polarityworks/bt65/{bt65.dts => bt65_nrf52840_zmk.dts} (100%) rename app/boards/polarityworks/bt65/{bt65_defconfig => bt65_nrf52840_zmk_defconfig} (100%) rename app/boards/polarityworks/bt75/{bt75.dts => bt75_nrf52840_zmk.dts} (100%) rename app/boards/polarityworks/bt75/{bt75_defconfig => bt75_nrf52840_zmk_defconfig} (100%) create mode 100644 app/boards/qmk/proton_c/proton_c_stm32f303xc_zmk.dts rename app/boards/qmk/proton_c/{proton_c_defconfig => proton_c_stm32f303xc_zmk_defconfig} (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 rename app/boards/shields/chalice/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/corne/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/elephant42/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/eternal_keypad/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/helix/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/jorne/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/kyria/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/kyria/boards/{nrfmicro_11.overlay => nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay} (100%) rename app/boards/shields/kyria/boards/{nrfmicro_11_flipped.overlay => nrfmicro_nrf52840_zmk_1_1_0.overlay} (100%) rename app/boards/shields/kyria/boards/{nrfmicro_13.overlay => nrfmicro_nrf52840_zmk_1_3_0.overlay} (100%) rename app/boards/shields/lily58/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/microdox/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/murphpad/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/nibble/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{bluemicro840_v1.overlay => bluemicro840_nrf52840_zmk.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{mikoto.overlay => mikoto_nrf52840_zmk.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{nrfmicro_11_flipped.overlay => nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{nrfmicro_11.overlay => nrfmicro_nrf52840_zmk_1_1_0.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{nrfmicro_13.overlay => nrfmicro_nrf52840_zmk_1_3_0.overlay} (100%) rename app/boards/shields/nice_view_adapter/boards/{puchi_ble_v1.overlay => puchi_ble_nrf52840_zmk.overlay} (100%) rename app/boards/shields/redox/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/reviung41/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/reviung53/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/romac_plus/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/snap/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/sofle/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/sofle/boards/{nrfmicro_11.overlay => nrfmicro_nrf52840_zmk_1_1_0.overlay} (100%) rename app/boards/shields/sofle/boards/{nrfmicro_13.overlay => nrfmicro_nrf52840_zmk_1_3_0.overlay} (100%) rename app/boards/shields/splitkb_aurora_corne/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/splitkb_aurora_helix/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/splitkb_aurora_lily58/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/splitkb_aurora_sofle/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/splitkb_aurora_sweep/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/tg4x/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/tidbit/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/two_percent_milk/boards/{nice_nano.overlay => nice_nano_nrf52840_zmk.overlay} (100%) rename app/boards/shields/two_percent_milk/boards/{nrfmicro_11_flipped.overlay => nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay} (100%) rename app/boards/shields/two_percent_milk/boards/{nrfmicro_11.overlay => nrfmicro_nrf52840_zmk_1_1_0.overlay} (100%) rename app/boards/shields/two_percent_milk/boards/{nrfmicro_13.overlay => nrfmicro_nrf52840_zmk_1_3_0.overlay} (100%) 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 create mode 100644 app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk.dts create mode 100644 app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_5_20_0.overlay create mode 100644 app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_6_1_0.overlay create mode 100644 app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_7_2_0.overlay rename app/boards/zhiayang/mikoto/{mikoto_7_2_0.conf => mikoto_nrf52840_zmk_7_2_0_defconfig} (100%) rename app/boards/zhiayang/mikoto/{mikoto_defconfig => mikoto_nrf52840_zmk_defconfig} (100%) rename app/{ => module}/boards/joric/nrfmicro/CMakeLists.txt (100%) rename app/{ => module}/boards/joric/nrfmicro/Kconfig (100%) rename app/{ => module}/boards/joric/nrfmicro/Kconfig.defconfig (100%) create mode 100644 app/module/boards/joric/nrfmicro/Kconfig.nrfmicro rename app/{ => module}/boards/joric/nrfmicro/arduino_pro_micro_pins.dtsi (100%) rename app/{ => module}/boards/joric/nrfmicro/arduino_pro_micro_pins_52833.dtsi (100%) rename app/{ => module}/boards/joric/nrfmicro/arduino_pro_micro_pins_flipped.dtsi (100%) rename app/{ => module}/boards/joric/nrfmicro/board.cmake (100%) create mode 100644 app/module/boards/joric/nrfmicro/board.yml rename app/{ => module}/boards/joric/nrfmicro/nrfmicro-flipped-pinctrl.dtsi (100%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro-pinctrl.dtsi (100%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_11.yaml (100%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_11_flipped.yaml (100%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_13.yaml (100%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_13_52833.yaml (100%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_nrf52833.dts (83%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0.overlay (100%) create mode 100644 app/module/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0_defconfig rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_nrf52840.dts (81%) rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0.overlay (100%) create mode 100644 app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0_defconfig create mode 100644 app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0_defconfig rename app/{ => module}/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts (88%) create mode 100644 app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0_defconfig rename app/{ => module}/boards/joric/nrfmicro/pinmux.c (100%) rename app/{ => module}/boards/joric/nrfmicro/pre_dt_board.cmake (100%) rename app/{ => module}/boards/jpconstantineau/bluemicro840/Kconfig (100%) create mode 100644 app/module/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 rename app/{ => module}/boards/jpconstantineau/bluemicro840/Kconfig.defconfig (100%) rename app/{ => module}/boards/jpconstantineau/bluemicro840/arduino_pro_micro_pins.dtsi (100%) rename app/{ => module}/boards/jpconstantineau/bluemicro840/bluemicro840-pinctrl.dtsi (100%) rename app/{ => module}/boards/jpconstantineau/bluemicro840/bluemicro840.dts (80%) create mode 100644 app/module/boards/jpconstantineau/bluemicro840/bluemicro840.yaml create mode 100644 app/module/boards/jpconstantineau/bluemicro840/bluemicro840_defconfig create mode 100644 app/module/boards/jpconstantineau/bluemicro840/board.cmake create mode 100644 app/module/boards/jpconstantineau/bluemicro840/board.yml create mode 100644 app/module/boards/jpconstantineau/bluemicro840/pre_dt_board.cmake rename app/{ => module}/boards/keycapsss/puchi_ble/CMakeLists.txt (100%) rename app/{ => module}/boards/keycapsss/puchi_ble/Kconfig (100%) create mode 100644 app/module/boards/keycapsss/puchi_ble/Kconfig.defconfig create mode 100644 app/module/boards/keycapsss/puchi_ble/Kconfig.puchi_ble rename app/{ => module}/boards/keycapsss/puchi_ble/arduino_pro_micro_pins.dtsi (100%) rename app/{ => module}/boards/keycapsss/puchi_ble/board.cmake (100%) create mode 100644 app/module/boards/keycapsss/puchi_ble/board.yml rename app/{ => module}/boards/keycapsss/puchi_ble/pinmux.c (100%) create mode 100644 app/module/boards/keycapsss/puchi_ble/pre_dt_board.cmake rename app/{ => module}/boards/keycapsss/puchi_ble/puchi_ble-pinctrl.dtsi (100%) rename app/{ => module}/boards/keycapsss/puchi_ble/puchi_ble.dts (100%) rename app/{ => module}/boards/keycapsss/puchi_ble/puchi_ble.yaml (100%) create mode 100644 app/module/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml create mode 100644 app/module/boards/keycapsss/puchi_ble/puchi_ble_defconfig rename app/{ => module}/boards/makerdiary/nrf52840_m2/Kconfig (100%) rename app/{ => module}/boards/makerdiary/nrf52840_m2/Kconfig.defconfig (100%) create mode 100644 app/module/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 create mode 100644 app/module/boards/makerdiary/nrf52840_m2/board.cmake create mode 100644 app/module/boards/makerdiary/nrf52840_m2/board.yml rename app/{ => module}/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts (86%) create mode 100644 app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.yaml create mode 100644 app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2_defconfig create mode 100644 app/module/boards/makerdiary/nrf52840_m2/pre_dt_board.cmake rename app/{ => module}/boards/mechwild/pillbug/Kconfig (100%) rename app/{ => module}/boards/mechwild/pillbug/Kconfig.defconfig (100%) create mode 100644 app/module/boards/mechwild/pillbug/Kconfig.pillbug rename app/{ => module}/boards/mechwild/pillbug/blackpill_pins.dtsi (100%) create mode 100644 app/module/boards/mechwild/pillbug/board.cmake create mode 100644 app/module/boards/mechwild/pillbug/board.yml create mode 100644 app/module/boards/mechwild/pillbug/pillbug-pinctrl.dtsi rename app/{ => module}/boards/mechwild/pillbug/pillbug.dts (80%) rename app/{ => module}/boards/mechwild/pillbug/pillbug.yaml (100%) create mode 100644 app/module/boards/mechwild/pillbug/pillbug_defconfig rename app/{ => module}/boards/mechwild/pillbug/pre_dt_board.cmake (100%) create mode 100644 app/module/boards/nicekeyboards/nice_nano/Kconfig.nice_nano rename app/{ => module}/boards/nicekeyboards/nice_nano/arduino_pro_micro_pins.dtsi (100%) create mode 100644 app/module/boards/nicekeyboards/nice_nano/board.cmake create mode 100644 app/module/boards/nicekeyboards/nice_nano/board.yml rename app/{ => module}/boards/nicekeyboards/nice_nano/nice_nano-pinctrl.dtsi (100%) rename app/{ => module}/boards/nicekeyboards/nice_nano/nice_nano.dts (97%) rename app/{ => module}/boards/nicekeyboards/nice_nano/nice_nano.yaml (100%) create mode 100644 app/module/boards/nicekeyboards/nice_nano/nice_nano_1_0_0_defconfig create mode 100644 app/module/boards/nicekeyboards/nice_nano/nice_nano_2_0_0_defconfig create mode 100644 app/module/boards/nicekeyboards/nice_nano/pre_dt_board.cmake rename app/{ => module}/boards/qmk/proton_c/Kconfig.proton_c (100%) rename app/{ => module}/boards/qmk/proton_c/arduino_pro_micro_pins.dtsi (100%) create mode 100644 app/module/boards/qmk/proton_c/board.cmake create mode 100644 app/module/boards/qmk/proton_c/board.yml rename app/{ => module}/boards/qmk/proton_c/proton_c.dts (100%) rename app/{ => module}/boards/qmk/proton_c/proton_c.yaml (100%) create mode 100644 app/module/boards/qmk/proton_c/proton_c.zmk.yml create mode 100644 app/module/boards/qmk/proton_c/proton_c_defconfig rename app/{ => module}/boards/zhiayang/mikoto/CMakeLists.txt (100%) rename app/{ => module}/boards/zhiayang/mikoto/Kconfig (100%) rename app/{ => module}/boards/zhiayang/mikoto/Kconfig.defconfig (91%) create mode 100644 app/module/boards/zhiayang/mikoto/Kconfig.mikoto rename app/{ => module}/boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi (100%) rename app/{ => module}/boards/zhiayang/mikoto/arduino_pro_micro_pins_v6.dtsi (100%) create mode 100644 app/module/boards/zhiayang/mikoto/board.cmake create mode 100644 app/module/boards/zhiayang/mikoto/board.yml rename app/{ => module}/boards/zhiayang/mikoto/mikoto-pinctrl.dtsi (100%) rename app/{ => module}/boards/zhiayang/mikoto/mikoto.dts (82%) rename app/{ => module}/boards/zhiayang/mikoto/mikoto.yaml (100%) rename app/{ => module}/boards/zhiayang/mikoto/mikoto_5_20_0.overlay (100%) rename app/{ => module}/boards/zhiayang/mikoto/mikoto_6_1_0.overlay (100%) create mode 100644 app/module/boards/zhiayang/mikoto/mikoto_7_2_0.conf rename app/{ => module}/boards/zhiayang/mikoto/mikoto_7_2_0.overlay (100%) create mode 100644 app/module/boards/zhiayang/mikoto/mikoto_defconfig rename app/{ => module}/boards/zhiayang/mikoto/pinmux.c (100%) create mode 100644 app/module/boards/zhiayang/mikoto/pre_dt_board.cmake diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 32e084cbbe..619902d29d 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 c8973f5c29..f3a79315d4 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 bf3fd17a55..8c05cbaf11 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 0000000000..b7b0308b99 --- /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 0000000000..7ef758e09a --- /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 9b9c1450d3..ebda855952 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 a68455c4a1..2a64ff75e1 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 0000000000..b7b0308b99 --- /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 0000000000..cda7173ed0 --- /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 a6e91afd70..0000000000 --- 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 0000000000..0891ee1b56 --- /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 0000000000..dac3d4df96 --- /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 0000000000..c7bb7cc22e --- /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 0000000000..0c1a531e87 --- /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 9c394f2c91..0000000000 --- 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 bf3fd17a55..0000000000 --- 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 9c394f2c91..0000000000 --- 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 c4252425b2..0000000000 --- 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 c4252425b2..0000000000 --- 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 c4252425b2..0000000000 --- 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 9c394f2c91..0000000000 --- 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 277e45328b..0000000000 --- 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 97e95bf7c1..0000000000 --- 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 526f3bc7d7..0000000000 --- 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 c520a3b733..0000000000 --- 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 b5d2cdb2fd..0000000000 --- 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 147adc6d77..0000000000 --- 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 f0db8ed14d..0000000000 --- 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 70b90914d9..0000000000 --- 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 1f7d85b36e..0000000000 --- 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/joric/nrfmicro/Kconfig.nrfmicro b/app/boards/joric/nrfmicro/Kconfig.nrfmicro index 38b80a8093..7925e4a0e4 100644 --- a/app/boards/joric/nrfmicro/Kconfig.nrfmicro +++ b/app/boards/joric/nrfmicro/Kconfig.nrfmicro @@ -4,9 +4,9 @@ # SPDX-License-Identifier: MIT config BOARD_NRFMICRO - select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840 - select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840_FLIPPED - select SOC_NRF52833_QIAA if BOARD_NRFMICRO_NRF52833 - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE + select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840_ZMK + select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK + select SOC_NRF52833_QIAA if BOARD_NRFMICRO_NRF52833_ZMK + imply RETAINED_MEM if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK + imply RETENTION if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK + imply RETENTION_BOOT_MODE if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK diff --git a/app/boards/joric/nrfmicro/board.yml b/app/boards/joric/nrfmicro/board.yml index 1cfcc492fc..391cee63d8 100644 --- a/app/boards/joric/nrfmicro/board.yml +++ b/app/boards/joric/nrfmicro/board.yml @@ -1,14 +1,9 @@ board: - name: nrfmicro - vendor: joric - socs: - - name: nrf52840 - variants: - - name: flipped - - name: nrf52833 - revision: - format: major.minor.patch - default: 1.3.0 - revisions: - - name: 1.3.0 - - name: 1.1.0 + extend: nrfmicro + variants: + - name: zmk + qualifier: nrf52840 + - name: flipped_zmk + qualifier: nrf52840 + - name: zmk + qualifier: nrf52833 diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52833.zmk.yml b/app/boards/joric/nrfmicro/nrfmicro_nrf52833.zmk.yml index 918c0b353f..632d283e87 100644 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52833.zmk.yml +++ b/app/boards/joric/nrfmicro/nrfmicro_nrf52833.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nrfmicro/nrf52833 +id: nrfmicro/nrf52833/zmk name: nRFMicro (nRF52833) type: board arch: arm diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52833_zmk.dts b/app/boards/joric/nrfmicro/nrfmicro_nrf52833_zmk.dts new file mode 100644 index 0000000000..7f597f5819 --- /dev/null +++ b/app/boards/joric/nrfmicro/nrfmicro_nrf52833_zmk.dts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/joric/nrfmicro/nrfmicro_nrf52833.dts> +#include + +/ { + chosen { + zmk,battery = &vbatt; + }; + + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + init-delay-ms = <50>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 2>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 820000)>; + }; +}; + diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0_defconfig b/app/boards/joric/nrfmicro/nrfmicro_nrf52833_zmk_1_3_0_defconfig similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0_defconfig rename to app/boards/joric/nrfmicro/nrfmicro_nrf52833_zmk_1_3_0_defconfig diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840.zmk.yml b/app/boards/joric/nrfmicro/nrfmicro_nrf52840.zmk.yml index a1cfb4fe32..403fdda3ce 100644 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52840.zmk.yml +++ b/app/boards/joric/nrfmicro/nrfmicro_nrf52840.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nrfmicro/nrf52840 +id: nrfmicro/nrf52840/zmk name: nRFMicro (nRF52840) 1.1/1.2/1.3 type: board arch: arm diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.zmk.yml b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.zmk.yml index 252d04b987..d3b66619fc 100644 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.zmk.yml +++ b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nrfmicro/nrf52840/flipped +id: nrfmicro/nrf52840/flipped_zmk name: nRFMicro nRF52840 (flipped) type: board arch: arm diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0.overlay b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0.overlay deleted file mode 100644 index 758f4ee89d..0000000000 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0.overlay +++ /dev/null @@ -1,6 +0,0 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_zmk.dts b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_zmk.dts new file mode 100644 index 0000000000..d1de13cec2 --- /dev/null +++ b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_zmk.dts @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts> +#include + +/ { + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; + init-delay-ms = <50>; + }; +}; diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0_defconfig b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_zmk_1_1_0_defconfig similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0_defconfig rename to app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_zmk_1_1_0_defconfig diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk.dts b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk.dts new file mode 100644 index 0000000000..a199573286 --- /dev/null +++ b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk.dts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/joric/nrfmicro/nrfmicro_nrf52840.dts> +#include + +/ { + + chosen { + zmk,battery = &vbatt; + }; + + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + init-delay-ms = <50>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 2>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 820000)>; + }; +}; diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0_defconfig b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk_1_1_0_defconfig similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0_defconfig rename to app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk_1_1_0_defconfig diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0.overlay b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk_1_3_0.overlay similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0.overlay rename to app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk_1_3_0.overlay diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0_defconfig b/app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk_1_3_0_defconfig similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0_defconfig rename to app/boards/joric/nrfmicro/nrfmicro_nrf52840_zmk_1_3_0_defconfig diff --git a/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 b/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 index da3774d7c0..c1f1d0a26b 100644 --- a/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 +++ b/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 @@ -1,8 +1,8 @@ -# Copyright (c) 2020 Pete Johanson, Derek Schmell +# Copyright (c) 2026 Pete Johanson, Derek Schmell # SPDX-License-Identifier: Apache-2.0 config BOARD_BLUEMICRO840 select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE + imply RETAINED_MEM if BOARD_BLUEMICRO840_NRF52840_ZMK + imply RETENTION if BOARD_BLUEMICRO840_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_BLUEMICRO840_NRF52840_ZMK diff --git a/app/boards/jpconstantineau/bluemicro840/bluemicro840.zmk.yml b/app/boards/jpconstantineau/bluemicro840/bluemicro840.zmk.yml index 10afcbf1f7..7b1d84529c 100644 --- a/app/boards/jpconstantineau/bluemicro840/bluemicro840.zmk.yml +++ b/app/boards/jpconstantineau/bluemicro840/bluemicro840.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: bluemicro840 +id: bluemicro840//zmk name: BlueMicro840 v1 type: board arch: arm diff --git a/app/boards/jpconstantineau/bluemicro840/bluemicro840_nrf52840_zmk.dts b/app/boards/jpconstantineau/bluemicro840/bluemicro840_nrf52840_zmk.dts new file mode 100644 index 0000000000..e36be9125c --- /dev/null +++ b/app/boards/jpconstantineau/bluemicro840/bluemicro840_nrf52840_zmk.dts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2026 Pete Johanson, Derek Schmell + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/jpconstantineau/bluemicro840/bluemicro840.dts> +#include + +/ { + chosen { + zmk,battery = &vbatt; + }; + + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + init-delay-ms = <20>; + control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 7>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 806000)>; + }; + +}; diff --git a/app/boards/jpconstantineau/bluemicro840/bluemicro840_defconfig b/app/boards/jpconstantineau/bluemicro840/bluemicro840_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/jpconstantineau/bluemicro840/bluemicro840_defconfig rename to app/boards/jpconstantineau/bluemicro840/bluemicro840_nrf52840_zmk_defconfig diff --git a/app/boards/jpconstantineau/bluemicro840/board.yml b/app/boards/jpconstantineau/bluemicro840/board.yml index 0a9ebdd5db..4341c04fa6 100644 --- a/app/boards/jpconstantineau/bluemicro840/board.yml +++ b/app/boards/jpconstantineau/bluemicro840/board.yml @@ -1,5 +1,5 @@ board: - name: bluemicro840 - vendor: jpconstantineau - socs: - - name: nrf52840 + extend: bluemicro840 + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/kbdfans/tofu65/board.yml b/app/boards/kbdfans/tofu65/board.yml index a044fea259..9441c6425b 100644 --- a/app/boards/kbdfans/tofu65/board.yml +++ b/app/boards/kbdfans/tofu65/board.yml @@ -3,3 +3,5 @@ board: vendor: kbdfans socs: - name: rp2040 + variants: + - name: zmk diff --git a/app/boards/kbdfans/tofu65/tofu65.zmk.yml b/app/boards/kbdfans/tofu65/tofu65.zmk.yml index b8ef43b362..fd24d18341 100644 --- a/app/boards/kbdfans/tofu65/tofu65.zmk.yml +++ b/app/boards/kbdfans/tofu65/tofu65.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: tofu65 +id: tofu65//zmk name: KBDfans Tofu65 2.0 type: board arch: arm diff --git a/app/boards/kbdfans/tofu65/tofu65.dts b/app/boards/kbdfans/tofu65/tofu65_rp2040_zmk.dts similarity index 100% rename from app/boards/kbdfans/tofu65/tofu65.dts rename to app/boards/kbdfans/tofu65/tofu65_rp2040_zmk.dts diff --git a/app/boards/kbdfans/tofu65/tofu65_defconfig b/app/boards/kbdfans/tofu65/tofu65_rp2040_zmk_defconfig similarity index 100% rename from app/boards/kbdfans/tofu65/tofu65_defconfig rename to app/boards/kbdfans/tofu65/tofu65_rp2040_zmk_defconfig diff --git a/app/boards/keebio/bdn9/bdn9.zmk.yml b/app/boards/keebio/bdn9/bdn9.zmk.yml index 4991888c44..a6c764adf7 100644 --- a/app/boards/keebio/bdn9/bdn9.zmk.yml +++ b/app/boards/keebio/bdn9/bdn9.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: bdn9 +id: bdn9//zmk name: BDN9 (Rev2) type: board arch: arm diff --git a/app/boards/keebio/bdn9/bdn9.dts b/app/boards/keebio/bdn9/bdn9_stm32f072xb_zmk.dts similarity index 100% rename from app/boards/keebio/bdn9/bdn9.dts rename to app/boards/keebio/bdn9/bdn9_stm32f072xb_zmk.dts diff --git a/app/boards/keebio/bdn9/bdn9_defconfig b/app/boards/keebio/bdn9/bdn9_stm32f072xb_zmk_defconfig similarity index 100% rename from app/boards/keebio/bdn9/bdn9_defconfig rename to app/boards/keebio/bdn9/bdn9_stm32f072xb_zmk_defconfig diff --git a/app/boards/keebio/bdn9/board.yml b/app/boards/keebio/bdn9/board.yml index 45eaad6414..a2c5917d6a 100644 --- a/app/boards/keebio/bdn9/board.yml +++ b/app/boards/keebio/bdn9/board.yml @@ -3,6 +3,8 @@ board: vendor: keebio socs: - name: stm32f072xb + variants: + - name: zmk revision: format: major.minor.patch default: 2.0.0 diff --git a/app/boards/keycapsss/puchi_ble/Kconfig.defconfig b/app/boards/keycapsss/puchi_ble/Kconfig.defconfig index 0411ee3f21..696e60f034 100644 --- a/app/boards/keycapsss/puchi_ble/Kconfig.defconfig +++ b/app/boards/keycapsss/puchi_ble/Kconfig.defconfig @@ -3,9 +3,6 @@ if BOARD_PUCHI_BLE -config BOARD - default "puchi_ble" - if USB_DEVICE_STACK config USB_NRFX @@ -13,7 +10,4 @@ config USB_NRFX endif # USB_DEVICE_STACK -config BT_CTLR - default BT - endif # BOARD_PUCHI_BLE diff --git a/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble b/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble index 3132790266..133a95d09d 100644 --- a/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble +++ b/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble @@ -5,6 +5,6 @@ config BOARD_PUCHI_BLE select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE + imply RETAINED_MEM if BOARD_PUCHI_BLE_NRF52840_ZMK + imply RETENTION if BOARD_PUCHI_BLE_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_PUCHI_BLE_NRF52840_ZMK diff --git a/app/boards/keycapsss/puchi_ble/board.yml b/app/boards/keycapsss/puchi_ble/board.yml index d192a30639..ba5a6b111f 100644 --- a/app/boards/keycapsss/puchi_ble/board.yml +++ b/app/boards/keycapsss/puchi_ble/board.yml @@ -1,5 +1,5 @@ board: - name: puchi_ble - vendor: keycapsss - socs: - - name: nrf52840 + extend: puchi_ble + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml b/app/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml index 18f6463cb2..c641fe7d71 100644 --- a/app/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml +++ b/app/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: puchi_ble +id: puchi_ble//zmk name: Puchi-BLE V1 type: board arch: arm diff --git a/app/boards/keycapsss/puchi_ble/puchi_ble_nrf52840_zmk.dts b/app/boards/keycapsss/puchi_ble/puchi_ble_nrf52840_zmk.dts new file mode 100644 index 0000000000..4ba212000a --- /dev/null +++ b/app/boards/keycapsss/puchi_ble/puchi_ble_nrf52840_zmk.dts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/keycapsss/puchi_ble/puchi_ble.dts> +#include + + +/ { + chosen { + zmk,battery = &vbatt; + }; + + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 2>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 820000)>; + }; +}; + diff --git a/app/boards/keycapsss/puchi_ble/puchi_ble_defconfig b/app/boards/keycapsss/puchi_ble/puchi_ble_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/keycapsss/puchi_ble/puchi_ble_defconfig rename to app/boards/keycapsss/puchi_ble/puchi_ble_nrf52840_zmk_defconfig diff --git a/app/boards/kinesis/adv360pro/adv360pro.zmk.yml b/app/boards/kinesis/adv360pro/adv360pro.zmk.yml index 5e882680d8..2d1e3496bc 100644 --- a/app/boards/kinesis/adv360pro/adv360pro.zmk.yml +++ b/app/boards/kinesis/adv360pro/adv360pro.zmk.yml @@ -13,5 +13,5 @@ outputs: - usb - ble siblings: - - adv360pro_left - - adv360pro_right + - adv360pro_left//zmk + - adv360pro_right//zmk diff --git a/app/boards/kinesis/adv360pro/adv360pro_left.dts b/app/boards/kinesis/adv360pro/adv360pro_left_nrf52840_zmk.dts similarity index 100% rename from app/boards/kinesis/adv360pro/adv360pro_left.dts rename to app/boards/kinesis/adv360pro/adv360pro_left_nrf52840_zmk.dts diff --git a/app/boards/kinesis/adv360pro/adv360pro_left_defconfig b/app/boards/kinesis/adv360pro/adv360pro_left_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/kinesis/adv360pro/adv360pro_left_defconfig rename to app/boards/kinesis/adv360pro/adv360pro_left_nrf52840_zmk_defconfig diff --git a/app/boards/kinesis/adv360pro/adv360pro_right.dts b/app/boards/kinesis/adv360pro/adv360pro_right_nrf52840_zmk.dts similarity index 100% rename from app/boards/kinesis/adv360pro/adv360pro_right.dts rename to app/boards/kinesis/adv360pro/adv360pro_right_nrf52840_zmk.dts diff --git a/app/boards/kinesis/adv360pro/adv360pro_right_defconfig b/app/boards/kinesis/adv360pro/adv360pro_right_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/kinesis/adv360pro/adv360pro_right_defconfig rename to app/boards/kinesis/adv360pro/adv360pro_right_nrf52840_zmk_defconfig diff --git a/app/boards/kinesis/adv360pro/board.yml b/app/boards/kinesis/adv360pro/board.yml index 1332451e5f..8ec7f8f8ff 100644 --- a/app/boards/kinesis/adv360pro/board.yml +++ b/app/boards/kinesis/adv360pro/board.yml @@ -3,7 +3,11 @@ boards: vendor: kinesis socs: - name: nrf52840 + variants: + - name: zmk - name: adv360pro_right vendor: kinesis socs: - name: nrf52840 + variants: + - name: zmk diff --git a/app/boards/lowprokb/corneish_zen/board.yml b/app/boards/lowprokb/corneish_zen/board.yml index 97d63ec681..aafdcbd6ca 100644 --- a/app/boards/lowprokb/corneish_zen/board.yml +++ b/app/boards/lowprokb/corneish_zen/board.yml @@ -3,6 +3,8 @@ boards: vendor: lowprokb socs: - name: nrf52840 + variants: + - name: zmk revision: format: major.minor.patch default: 2.0.0 @@ -14,6 +16,8 @@ boards: vendor: lowprokb socs: - name: nrf52840 + variants: + - name: zmk revision: format: major.minor.patch default: 2.0.0 diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen.zmk.yml b/app/boards/lowprokb/corneish_zen/corneish_zen.zmk.yml index 9630386de4..574664a25a 100644 --- a/app/boards/lowprokb/corneish_zen/corneish_zen.zmk.yml +++ b/app/boards/lowprokb/corneish_zen/corneish_zen.zmk.yml @@ -15,5 +15,5 @@ revisions: - 2.0.0 - 1.0.0 siblings: - - corneish_zen_left - - corneish_zen_right + - corneish_zen_left//zmk + - corneish_zen_right//zmk diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_left.dts b/app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk.dts similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_left.dts rename to app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk.dts diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_left_1_0_0.overlay b/app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_1_0_0.overlay similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_left_1_0_0.overlay rename to app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_1_0_0.overlay diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_left_1_0_0_defconfig b/app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_1_0_0_defconfig similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_left_1_0_0_defconfig rename to app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_1_0_0_defconfig diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_left_2_0_0.overlay b/app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_2_0_0.overlay similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_left_2_0_0.overlay rename to app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_2_0_0.overlay diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_left_2_0_0_defconfig b/app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_2_0_0_defconfig similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_left_2_0_0_defconfig rename to app/boards/lowprokb/corneish_zen/corneish_zen_left_nrf52840_zmk_2_0_0_defconfig diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_right.dts b/app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk.dts similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_right.dts rename to app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk.dts diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_right_1_0_0.overlay b/app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_1_0_0.overlay similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_right_1_0_0.overlay rename to app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_1_0_0.overlay diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_right_1_0_0_defconfig b/app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_1_0_0_defconfig similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_right_1_0_0_defconfig rename to app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_1_0_0_defconfig diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_right_2_0_0.overlay b/app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_2_0_0.overlay similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_right_2_0_0.overlay rename to app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_2_0_0.overlay diff --git a/app/boards/lowprokb/corneish_zen/corneish_zen_right_2_0_0_defconfig b/app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_2_0_0_defconfig similarity index 100% rename from app/boards/lowprokb/corneish_zen/corneish_zen_right_2_0_0_defconfig rename to app/boards/lowprokb/corneish_zen/corneish_zen_right_nrf52840_zmk_2_0_0_defconfig diff --git a/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 b/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 index acb746cdcd..82aa35e2ad 100644 --- a/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 +++ b/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 @@ -3,6 +3,6 @@ config BOARD_NRF52840_M2 select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE + imply RETAINED_MEM if BOARD_NRF52840_M2_NRF52840_ZMK + imply RETENTION if BOARD_NRF52840_M2_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_NRF52840_M2_NRF52840_ZMK diff --git a/app/boards/makerdiary/nrf52840_m2/board.yml b/app/boards/makerdiary/nrf52840_m2/board.yml index a1675e245c..16079c2c50 100644 --- a/app/boards/makerdiary/nrf52840_m2/board.yml +++ b/app/boards/makerdiary/nrf52840_m2/board.yml @@ -1,5 +1,5 @@ board: - name: nrf52840_m2 - vendor: makerdiary - socs: - - name: nrf52840 + extend: nrf52840_m2 + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/makerdiary/nrf52840_m2/nrf52840_m2.zmk.yml b/app/boards/makerdiary/nrf52840_m2/nrf52840_m2.zmk.yml index 2a4ccb0cec..227c4500b8 100644 --- a/app/boards/makerdiary/nrf52840_m2/nrf52840_m2.zmk.yml +++ b/app/boards/makerdiary/nrf52840_m2/nrf52840_m2.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nrf52840_m2 +id: nrf52840_m2//zmk name: nRF52840 M.2 Module type: board arch: arm diff --git a/app/boards/makerdiary/nrf52840_m2/nrf52840_m2_nrf52840_zmk.dts b/app/boards/makerdiary/nrf52840_m2/nrf52840_m2_nrf52840_zmk.dts new file mode 100644 index 0000000000..cdca8a68dc --- /dev/null +++ b/app/boards/makerdiary/nrf52840_m2/nrf52840_m2_nrf52840_zmk.dts @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; +#include <../boards/makerdiary/nrf52840_m2/nrf52840_m2.dts> +#include + +/ { + model = "Makerdiary nRF52840 M.2 module"; + compatible = "makerdiary,nrf52840_m2"; + + chosen { + zmk,battery = &vbatt; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 0>; + output-ohms = <1000000>; + full-ohms = <(1000000 + 1000000)>; + }; +}; diff --git a/app/boards/makerdiary/nrf52840_m2/nrf52840_m2_defconfig b/app/boards/makerdiary/nrf52840_m2/nrf52840_m2_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/makerdiary/nrf52840_m2/nrf52840_m2_defconfig rename to app/boards/makerdiary/nrf52840_m2/nrf52840_m2_nrf52840_zmk_defconfig diff --git a/app/boards/mechwild/pillbug/Kconfig.pillbug b/app/boards/mechwild/pillbug/Kconfig.pillbug index b8e0e14827..27482cc2f8 100644 --- a/app/boards/mechwild/pillbug/Kconfig.pillbug +++ b/app/boards/mechwild/pillbug/Kconfig.pillbug @@ -3,6 +3,6 @@ config BOARD_PILLBUG select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE + imply RETAINED_MEM if BOARD_PILLBUG_NRF52840_ZMK + imply RETENTION if BOARD_PILLBUG_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_PILLBUG_NRF52840_ZMK diff --git a/app/boards/mechwild/pillbug/board.yml b/app/boards/mechwild/pillbug/board.yml index abd15044f7..7e6a995970 100644 --- a/app/boards/mechwild/pillbug/board.yml +++ b/app/boards/mechwild/pillbug/board.yml @@ -1,5 +1,5 @@ board: name: pillbug - vendor: mechwild - socs: - - name: nrf52840 + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/mechwild/pillbug/pillbug.zmk.yml b/app/boards/mechwild/pillbug/pillbug.zmk.yml index 5df11b9e04..397ce65372 100644 --- a/app/boards/mechwild/pillbug/pillbug.zmk.yml +++ b/app/boards/mechwild/pillbug/pillbug.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: pillbug +id: pillbug//zmk name: PillBug type: board arch: arm diff --git a/app/boards/mechwild/pillbug/pillbug_nrf52840_zmk.dts b/app/boards/mechwild/pillbug/pillbug_nrf52840_zmk.dts new file mode 100644 index 0000000000..ff977338d2 --- /dev/null +++ b/app/boards/mechwild/pillbug/pillbug_nrf52840_zmk.dts @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; + +#include <../boards/mechwild/pillbug/pillbug.dts> +#include + + +/ { + chosen { + zmk,battery = &vbatt; + }; + + + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + control-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; + init-delay-ms = <50>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 2>; + output-ohms = <2000000>; + full-ohms = <(2000000 + 820000)>; + }; +}; diff --git a/app/boards/mechwild/pillbug/pillbug_defconfig b/app/boards/mechwild/pillbug/pillbug_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/mechwild/pillbug/pillbug_defconfig rename to app/boards/mechwild/pillbug/pillbug_nrf52840_zmk_defconfig diff --git a/app/boards/mechwild/s40nc/board.yml b/app/boards/mechwild/s40nc/board.yml index 3df3c330f0..61700618aa 100644 --- a/app/boards/mechwild/s40nc/board.yml +++ b/app/boards/mechwild/s40nc/board.yml @@ -3,3 +3,5 @@ board: vendor: mechwild socs: - name: nrf52840 + variants: + - name: zmk diff --git a/app/boards/mechwild/s40nc/s40nc.zmk.yml b/app/boards/mechwild/s40nc/s40nc.zmk.yml index 57b30ecae6..e64fc007da 100644 --- a/app/boards/mechwild/s40nc/s40nc.zmk.yml +++ b/app/boards/mechwild/s40nc/s40nc.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: s40nc +id: s40nc//zmk name: S40NC type: board arch: arm diff --git a/app/boards/mechwild/s40nc/s40nc.dts b/app/boards/mechwild/s40nc/s40nc_nrf52840_zmk.dts similarity index 100% rename from app/boards/mechwild/s40nc/s40nc.dts rename to app/boards/mechwild/s40nc/s40nc_nrf52840_zmk.dts diff --git a/app/boards/mechwild/s40nc/s40nc_defconfig b/app/boards/mechwild/s40nc/s40nc_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/mechwild/s40nc/s40nc_defconfig rename to app/boards/mechwild/s40nc/s40nc_nrf52840_zmk_defconfig diff --git a/app/boards/native/native_sim/Kconfig b/app/boards/native/native_sim/Kconfig new file mode 100644 index 0000000000..8d7f746f52 --- /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 0000000000..81f8d1b28c --- /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 0000000000..d55614c33f --- /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 0000000000..26fcc6ad36 --- /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 0d8e0d81f0..fc1b040771 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 0000000000..f82371b470 --- /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 5b8e23d308..fa67bfc5d1 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 0000000000..89ccb73ece --- /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 0000000000..c24991bf2b --- /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 ec7c49ae92..835a49c10d 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/nicekeyboards/nice60/README.md b/app/boards/nicekeyboards/nice60/README.md index dce230ae79..4b3fa09a99 100644 --- a/app/boards/nicekeyboards/nice60/README.md +++ b/app/boards/nicekeyboards/nice60/README.md @@ -7,5 +7,5 @@ The nice!60 is a hotswap 60% made by Nice Keyboards. https://nicekeyboards.com/n ## Building nice!60 ZMK firmware ``` -west build -p -b nice60 +west build -p -b nice60//zmk ``` diff --git a/app/boards/nicekeyboards/nice60/board.yml b/app/boards/nicekeyboards/nice60/board.yml index fdbe7cef1e..e945cbf04a 100644 --- a/app/boards/nicekeyboards/nice60/board.yml +++ b/app/boards/nicekeyboards/nice60/board.yml @@ -3,3 +3,5 @@ board: vendor: nicekeyboards socs: - name: nrf52840 + variants: + - name: zmk diff --git a/app/boards/nicekeyboards/nice60/nice60.zmk.yml b/app/boards/nicekeyboards/nice60/nice60.zmk.yml index 2847260f85..b6d2a2b13e 100644 --- a/app/boards/nicekeyboards/nice60/nice60.zmk.yml +++ b/app/boards/nicekeyboards/nice60/nice60.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nice60 +id: nice60//zmk name: nice!60 type: board arch: arm diff --git a/app/boards/nicekeyboards/nice60/nice60.dts b/app/boards/nicekeyboards/nice60/nice60_nrf52840_zmk.dts similarity index 100% rename from app/boards/nicekeyboards/nice60/nice60.dts rename to app/boards/nicekeyboards/nice60/nice60_nrf52840_zmk.dts diff --git a/app/boards/nicekeyboards/nice60/nice60_defconfig b/app/boards/nicekeyboards/nice60/nice60_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/nicekeyboards/nice60/nice60_defconfig rename to app/boards/nicekeyboards/nice60/nice60_nrf52840_zmk_defconfig diff --git a/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano b/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano index d1be26ef97..ae9a617034 100644 --- a/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano +++ b/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano @@ -3,6 +3,6 @@ config BOARD_NICE_NANO select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE \ No newline at end of file + imply RETAINED_MEM if BOARD_NICE_NANO_NRF52840_ZMK + imply RETENTION if BOARD_NICE_NANO_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_NICE_NANO_NRF52840_ZMK diff --git a/app/boards/nicekeyboards/nice_nano/board.yml b/app/boards/nicekeyboards/nice_nano/board.yml index 89171957c9..13cba4f6b6 100644 --- a/app/boards/nicekeyboards/nice_nano/board.yml +++ b/app/boards/nicekeyboards/nice_nano/board.yml @@ -1,11 +1,5 @@ board: - name: nice_nano - vendor: nicekeyboards - socs: - - name: nrf52840 - revision: - format: major.minor.patch - default: 2.0.0 - revisions: - - name: 1.0.0 - - name: 2.0.0 + extend: nice_nano + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano.zmk.yml b/app/boards/nicekeyboards/nice_nano/nice_nano.zmk.yml index 2245a89ee5..e9b69fffaa 100644 --- a/app/boards/nicekeyboards/nice_nano/nice_nano.zmk.yml +++ b/app/boards/nicekeyboards/nice_nano/nice_nano.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: nice_nano +id: nice_nano//zmk name: nice!nano type: board arch: arm diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk.dts b/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk.dts new file mode 100644 index 0000000000..ed5b9b7bbe --- /dev/null +++ b/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk.dts @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; + +#include <../boards/nicekeyboards/nice_nano/nice_nano.dts> +#include + diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano_1_0_0.overlay b/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_1_0_0.overlay similarity index 100% rename from app/boards/nicekeyboards/nice_nano/nice_nano_1_0_0.overlay rename to app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_1_0_0.overlay diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano_1_0_0_defconfig b/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_1_0_0_defconfig similarity index 100% rename from app/boards/nicekeyboards/nice_nano/nice_nano_1_0_0_defconfig rename to app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_1_0_0_defconfig diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano_2_0_0.overlay b/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_2_0_0.overlay similarity index 100% rename from app/boards/nicekeyboards/nice_nano/nice_nano_2_0_0.overlay rename to app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_2_0_0.overlay diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano_2_0_0_defconfig b/app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_2_0_0_defconfig similarity index 100% rename from app/boards/nicekeyboards/nice_nano/nice_nano_2_0_0_defconfig rename to app/boards/nicekeyboards/nice_nano/nice_nano_nrf52840_zmk_2_0_0_defconfig diff --git a/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk b/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk new file mode 100644 index 0000000000..66852ec1c3 --- /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 0000000000..a8be86a3e9 --- /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 47cb6461a9..738cf2900b 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 0000000000..d2a0b8556c --- /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 6c9bcdf134..087cfbd0c4 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 0000000000..26104aa084 --- /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 0000000000..2b093635a6 --- /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 0000000000..2c19ebd88f --- /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/olkb/planck/board.yml b/app/boards/olkb/planck/board.yml index b81bcddbfa..dd30d7cfe5 100644 --- a/app/boards/olkb/planck/board.yml +++ b/app/boards/olkb/planck/board.yml @@ -3,6 +3,8 @@ board: vendor: olkb socs: - name: stm32f303xc + variants: + - name: zmk revision: format: major.minor.patch default: 6.0.0 diff --git a/app/boards/olkb/planck/planck.zmk.yml b/app/boards/olkb/planck/planck.zmk.yml index 42e83d12f9..5419454229 100644 --- a/app/boards/olkb/planck/planck.zmk.yml +++ b/app/boards/olkb/planck/planck.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: planck +id: planck//zmk name: Planck (Rev6) type: board arch: arm diff --git a/app/boards/olkb/planck/planck.dts b/app/boards/olkb/planck/planck_stm32f303xc_zmk.dts similarity index 100% rename from app/boards/olkb/planck/planck.dts rename to app/boards/olkb/planck/planck_stm32f303xc_zmk.dts diff --git a/app/boards/olkb/planck/planck_6_0_0_defconfig b/app/boards/olkb/planck/planck_stm32f303xc_zmk_6_0_0_defconfig similarity index 100% rename from app/boards/olkb/planck/planck_6_0_0_defconfig rename to app/boards/olkb/planck/planck_stm32f303xc_zmk_6_0_0_defconfig diff --git a/app/boards/olkb/preonic/board.yml b/app/boards/olkb/preonic/board.yml index 688df6846f..95992c3ee1 100644 --- a/app/boards/olkb/preonic/board.yml +++ b/app/boards/olkb/preonic/board.yml @@ -3,6 +3,8 @@ board: vendor: olkb socs: - name: stm32f303xc + variants: + - name: zmk revision: format: major.minor.patch default: 3.0.0 diff --git a/app/boards/olkb/preonic/preonic.zmk.yml b/app/boards/olkb/preonic/preonic.zmk.yml index 692f91a83f..887550832e 100644 --- a/app/boards/olkb/preonic/preonic.zmk.yml +++ b/app/boards/olkb/preonic/preonic.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: preonic +id: preonic//zmk name: Preonic Rev3 type: board arch: arm diff --git a/app/boards/olkb/preonic/preonic.dts b/app/boards/olkb/preonic/preonic_stm32f303xc_zmk.dts similarity index 100% rename from app/boards/olkb/preonic/preonic.dts rename to app/boards/olkb/preonic/preonic_stm32f303xc_zmk.dts diff --git a/app/boards/olkb/preonic/preonic_defconfig b/app/boards/olkb/preonic/preonic_stm32f303xc_zmk_defconfig similarity index 100% rename from app/boards/olkb/preonic/preonic_defconfig rename to app/boards/olkb/preonic/preonic_stm32f303xc_zmk_defconfig diff --git a/app/boards/pierrechevalier83/ferris/board.yml b/app/boards/pierrechevalier83/ferris/board.yml index 3bed9d0b43..6fb3af39eb 100644 --- a/app/boards/pierrechevalier83/ferris/board.yml +++ b/app/boards/pierrechevalier83/ferris/board.yml @@ -3,3 +3,5 @@ board: vendor: pierrechevalier83 socs: - name: stm32f072xb + variants: + - name: zmk diff --git a/app/boards/pierrechevalier83/ferris/ferris.zmk.yml b/app/boards/pierrechevalier83/ferris/ferris.zmk.yml index 841f437a4d..68919fe532 100644 --- a/app/boards/pierrechevalier83/ferris/ferris.zmk.yml +++ b/app/boards/pierrechevalier83/ferris/ferris.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: ferris +id: ferris//zmk name: Ferris 0.2 type: board arch: arm diff --git a/app/boards/pierrechevalier83/ferris/ferris.dts b/app/boards/pierrechevalier83/ferris/ferris_stm32f072xb_zmk.dts similarity index 100% rename from app/boards/pierrechevalier83/ferris/ferris.dts rename to app/boards/pierrechevalier83/ferris/ferris_stm32f072xb_zmk.dts diff --git a/app/boards/pierrechevalier83/ferris/ferris_defconfig b/app/boards/pierrechevalier83/ferris/ferris_stm32f072xb_zmk_defconfig similarity index 100% rename from app/boards/pierrechevalier83/ferris/ferris_defconfig rename to app/boards/pierrechevalier83/ferris/ferris_stm32f072xb_zmk_defconfig diff --git a/app/boards/polarityworks/bt60/board.yml b/app/boards/polarityworks/bt60/board.yml index 2db078f6bb..2f9a8b8043 100644 --- a/app/boards/polarityworks/bt60/board.yml +++ b/app/boards/polarityworks/bt60/board.yml @@ -3,10 +3,14 @@ boards: vendor: polarityworks socs: - name: nrf52840 + variants: + - name: zmk - name: bt60 vendor: polarityworks socs: - name: nrf52840 + variants: + - name: zmk revision: format: major.minor.patch default: 2.0.0 diff --git a/app/boards/polarityworks/bt60/bt60.zmk.yml b/app/boards/polarityworks/bt60/bt60.zmk.yml index bec416a970..98bb85fc67 100644 --- a/app/boards/polarityworks/bt60/bt60.zmk.yml +++ b/app/boards/polarityworks/bt60/bt60.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: bt60 +id: bt60//zmk name: BT60 V2 type: board arch: arm diff --git a/app/boards/polarityworks/bt60/bt60_hs.zmk.yml b/app/boards/polarityworks/bt60/bt60_hs.zmk.yml index 2d156370f9..cc9d8ed7bd 100644 --- a/app/boards/polarityworks/bt60/bt60_hs.zmk.yml +++ b/app/boards/polarityworks/bt60/bt60_hs.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: bt60_hs +id: bt60_hs//zmk name: BT60 V1 Hotswap type: board arch: arm diff --git a/app/boards/polarityworks/bt60/bt60_hs.dts b/app/boards/polarityworks/bt60/bt60_hs_nrf52840_zmk.dts similarity index 98% rename from app/boards/polarityworks/bt60/bt60_hs.dts rename to app/boards/polarityworks/bt60/bt60_hs_nrf52840_zmk.dts index c152a62a05..55f9052561 100644 --- a/app/boards/polarityworks/bt60/bt60_hs.dts +++ b/app/boards/polarityworks/bt60/bt60_hs_nrf52840_zmk.dts @@ -4,7 +4,7 @@ * SPDX-License-Identifier: MIT */ -#include "bt60.dts" +#include "bt60_nrf52840_zmk.dts" #include "bt60_1_0_0.dtsi" #include diff --git a/app/boards/polarityworks/bt60/bt60_1_0_0_defconfig b/app/boards/polarityworks/bt60/bt60_hs_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/polarityworks/bt60/bt60_1_0_0_defconfig rename to app/boards/polarityworks/bt60/bt60_hs_nrf52840_zmk_defconfig diff --git a/app/boards/polarityworks/bt60/bt60.dts b/app/boards/polarityworks/bt60/bt60_nrf52840_zmk.dts similarity index 100% rename from app/boards/polarityworks/bt60/bt60.dts rename to app/boards/polarityworks/bt60/bt60_nrf52840_zmk.dts diff --git a/app/boards/polarityworks/bt60/bt60_1_0_0.overlay b/app/boards/polarityworks/bt60/bt60_nrf52840_zmk_1_0_0.overlay similarity index 100% rename from app/boards/polarityworks/bt60/bt60_1_0_0.overlay rename to app/boards/polarityworks/bt60/bt60_nrf52840_zmk_1_0_0.overlay diff --git a/app/boards/polarityworks/bt60/bt60_hs_defconfig b/app/boards/polarityworks/bt60/bt60_nrf52840_zmk_1_0_0_defconfig similarity index 100% rename from app/boards/polarityworks/bt60/bt60_hs_defconfig rename to app/boards/polarityworks/bt60/bt60_nrf52840_zmk_1_0_0_defconfig diff --git a/app/boards/polarityworks/bt60/bt60_2_0_0.overlay b/app/boards/polarityworks/bt60/bt60_nrf52840_zmk_2_0_0.overlay similarity index 100% rename from app/boards/polarityworks/bt60/bt60_2_0_0.overlay rename to app/boards/polarityworks/bt60/bt60_nrf52840_zmk_2_0_0.overlay diff --git a/app/boards/polarityworks/bt60/bt60_2_0_0_defconfig b/app/boards/polarityworks/bt60/bt60_nrf52840_zmk_2_0_0_defconfig similarity index 100% rename from app/boards/polarityworks/bt60/bt60_2_0_0_defconfig rename to app/boards/polarityworks/bt60/bt60_nrf52840_zmk_2_0_0_defconfig diff --git a/app/boards/polarityworks/bt65/board.yml b/app/boards/polarityworks/bt65/board.yml index 97f443cfd0..7392a40578 100644 --- a/app/boards/polarityworks/bt65/board.yml +++ b/app/boards/polarityworks/bt65/board.yml @@ -3,3 +3,5 @@ board: vendor: polarityworks socs: - name: nrf52840 + variants: + - name: zmk diff --git a/app/boards/polarityworks/bt65/bt65.zmk.yml b/app/boards/polarityworks/bt65/bt65.zmk.yml index 136ace23c6..aaeb1835fe 100644 --- a/app/boards/polarityworks/bt65/bt65.zmk.yml +++ b/app/boards/polarityworks/bt65/bt65.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: bt65 +id: bt65//zmk name: BT65 type: board arch: arm diff --git a/app/boards/polarityworks/bt65/bt65.dts b/app/boards/polarityworks/bt65/bt65_nrf52840_zmk.dts similarity index 100% rename from app/boards/polarityworks/bt65/bt65.dts rename to app/boards/polarityworks/bt65/bt65_nrf52840_zmk.dts diff --git a/app/boards/polarityworks/bt65/bt65_defconfig b/app/boards/polarityworks/bt65/bt65_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/polarityworks/bt65/bt65_defconfig rename to app/boards/polarityworks/bt65/bt65_nrf52840_zmk_defconfig diff --git a/app/boards/polarityworks/bt75/board.yml b/app/boards/polarityworks/bt75/board.yml index d12dcb3a16..5a8057c8f2 100644 --- a/app/boards/polarityworks/bt75/board.yml +++ b/app/boards/polarityworks/bt75/board.yml @@ -3,3 +3,5 @@ board: vendor: polarityworks socs: - name: nrf52840 + variants: + - name: zmk diff --git a/app/boards/polarityworks/bt75/bt75.zmk.yml b/app/boards/polarityworks/bt75/bt75.zmk.yml index d4424a4bb9..fb909c5252 100644 --- a/app/boards/polarityworks/bt75/bt75.zmk.yml +++ b/app/boards/polarityworks/bt75/bt75.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: bt75 +id: bt75//zmk name: BT75 V1 type: board arch: arm diff --git a/app/boards/polarityworks/bt75/bt75.dts b/app/boards/polarityworks/bt75/bt75_nrf52840_zmk.dts similarity index 100% rename from app/boards/polarityworks/bt75/bt75.dts rename to app/boards/polarityworks/bt75/bt75_nrf52840_zmk.dts diff --git a/app/boards/polarityworks/bt75/bt75_defconfig b/app/boards/polarityworks/bt75/bt75_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/polarityworks/bt75/bt75_defconfig rename to app/boards/polarityworks/bt75/bt75_nrf52840_zmk_defconfig diff --git a/app/boards/post_boards_shields.cmake b/app/boards/post_boards_shields.cmake index 3bd7eb1da8..6c4dd0adea 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/qmk/proton_c/board.yml b/app/boards/qmk/proton_c/board.yml index 54ecb64bbe..0b6a5d3eae 100644 --- a/app/boards/qmk/proton_c/board.yml +++ b/app/boards/qmk/proton_c/board.yml @@ -1,5 +1,5 @@ board: - name: proton_c - vendor: qmk - socs: - - name: stm32f303xc + extend: proton_c + variants: + - name: zmk + qualifier: stm32f303xc diff --git a/app/boards/qmk/proton_c/proton_c.zmk.yml b/app/boards/qmk/proton_c/proton_c.zmk.yml index 682783ce60..e89acf243f 100644 --- a/app/boards/qmk/proton_c/proton_c.zmk.yml +++ b/app/boards/qmk/proton_c/proton_c.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: proton_c +id: proton_c//zmk name: QMK Proton-C type: board arch: arm diff --git a/app/boards/qmk/proton_c/proton_c_stm32f303xc_zmk.dts b/app/boards/qmk/proton_c/proton_c_stm32f303xc_zmk.dts new file mode 100644 index 0000000000..dfee886e41 --- /dev/null +++ b/app/boards/qmk/proton_c/proton_c_stm32f303xc_zmk.dts @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; +#include <../boards/qmk/proton_c/proton_c.dts> + diff --git a/app/boards/qmk/proton_c/proton_c_defconfig b/app/boards/qmk/proton_c/proton_c_stm32f303xc_zmk_defconfig similarity index 100% rename from app/boards/qmk/proton_c/proton_c_defconfig rename to app/boards/qmk/proton_c/proton_c_stm32f303xc_zmk_defconfig diff --git a/app/boards/raspberrypi/rpi_pico/board.yml b/app/boards/raspberrypi/rpi_pico/board.yml new file mode 100644 index 0000000000..de179f8053 --- /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 0000000000..7142cb56af --- /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 b0aed76104..3acf57ff92 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 0000000000..5ff98221de --- /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 0000000000..c5d20792c2 --- /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 51093b0468..da65bb69ba 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 0000000000..66a500dd2a --- /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 0000000000..04da60c96f --- /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 0000000000..5643184c3b --- /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 270d809061..d4159e36ca 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 331b8fb742..b01c544e41 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 49eaacf658..fd85e275d9 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 0000000000..813e334638 --- /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 ea6f04f302..ab30d3f798 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 8f2e871436..b55ddc63a8 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 0000000000..d4a902e06c --- /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/shields/chalice/boards/nice_nano.overlay b/app/boards/shields/chalice/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/chalice/boards/nice_nano.overlay rename to app/boards/shields/chalice/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/corne/boards/nice_nano.overlay b/app/boards/shields/corne/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/corne/boards/nice_nano.overlay rename to app/boards/shields/corne/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/elephant42/boards/nice_nano.overlay b/app/boards/shields/elephant42/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/elephant42/boards/nice_nano.overlay rename to app/boards/shields/elephant42/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/eternal_keypad/boards/nice_nano.overlay b/app/boards/shields/eternal_keypad/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/eternal_keypad/boards/nice_nano.overlay rename to app/boards/shields/eternal_keypad/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/helix/boards/nice_nano.overlay b/app/boards/shields/helix/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/helix/boards/nice_nano.overlay rename to app/boards/shields/helix/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/jorne/boards/nice_nano.overlay b/app/boards/shields/jorne/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/jorne/boards/nice_nano.overlay rename to app/boards/shields/jorne/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/kyria/boards/nice_nano.overlay b/app/boards/shields/kyria/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/kyria/boards/nice_nano.overlay rename to app/boards/shields/kyria/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/kyria/boards/nrfmicro_11.overlay b/app/boards/shields/kyria/boards/nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/kyria/boards/nrfmicro_11.overlay rename to app/boards/shields/kyria/boards/nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay diff --git a/app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay b/app/boards/shields/kyria/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/kyria/boards/nrfmicro_11_flipped.overlay rename to app/boards/shields/kyria/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay diff --git a/app/boards/shields/kyria/boards/nrfmicro_13.overlay b/app/boards/shields/kyria/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay similarity index 100% rename from app/boards/shields/kyria/boards/nrfmicro_13.overlay rename to app/boards/shields/kyria/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay diff --git a/app/boards/shields/lily58/boards/nice_nano.overlay b/app/boards/shields/lily58/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/lily58/boards/nice_nano.overlay rename to app/boards/shields/lily58/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/microdox/boards/nice_nano.overlay b/app/boards/shields/microdox/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/microdox/boards/nice_nano.overlay rename to app/boards/shields/microdox/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/murphpad/boards/nice_nano.overlay b/app/boards/shields/murphpad/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/murphpad/boards/nice_nano.overlay rename to app/boards/shields/murphpad/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/nibble/boards/nice_nano.overlay b/app/boards/shields/nibble/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/nibble/boards/nice_nano.overlay rename to app/boards/shields/nibble/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/bluemicro840_v1.overlay b/app/boards/shields/nice_view_adapter/boards/bluemicro840_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/bluemicro840_v1.overlay rename to app/boards/shields/nice_view_adapter/boards/bluemicro840_nrf52840_zmk.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/mikoto.overlay b/app/boards/shields/nice_view_adapter/boards/mikoto_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/mikoto.overlay rename to app/boards/shields/nice_view_adapter/boards/mikoto_nrf52840_zmk.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/nice_nano.overlay b/app/boards/shields/nice_view_adapter/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/nice_nano.overlay rename to app/boards/shields/nice_view_adapter/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/nrfmicro_11_flipped.overlay b/app/boards/shields/nice_view_adapter/boards/nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/nrfmicro_11_flipped.overlay rename to app/boards/shields/nice_view_adapter/boards/nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/nrfmicro_11.overlay b/app/boards/shields/nice_view_adapter/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/nrfmicro_11.overlay rename to app/boards/shields/nice_view_adapter/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/nrfmicro_13.overlay b/app/boards/shields/nice_view_adapter/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/nrfmicro_13.overlay rename to app/boards/shields/nice_view_adapter/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay diff --git a/app/boards/shields/nice_view_adapter/boards/puchi_ble_v1.overlay b/app/boards/shields/nice_view_adapter/boards/puchi_ble_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/nice_view_adapter/boards/puchi_ble_v1.overlay rename to app/boards/shields/nice_view_adapter/boards/puchi_ble_nrf52840_zmk.overlay diff --git a/app/boards/shields/redox/boards/nice_nano.overlay b/app/boards/shields/redox/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/redox/boards/nice_nano.overlay rename to app/boards/shields/redox/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/reviung41/boards/nice_nano.overlay b/app/boards/shields/reviung41/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/reviung41/boards/nice_nano.overlay rename to app/boards/shields/reviung41/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/reviung53/boards/nice_nano.overlay b/app/boards/shields/reviung53/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/reviung53/boards/nice_nano.overlay rename to app/boards/shields/reviung53/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/romac_plus/boards/nice_nano.overlay b/app/boards/shields/romac_plus/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/romac_plus/boards/nice_nano.overlay rename to app/boards/shields/romac_plus/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/snap/boards/nice_nano.overlay b/app/boards/shields/snap/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/snap/boards/nice_nano.overlay rename to app/boards/shields/snap/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/sofle/boards/nice_nano.overlay b/app/boards/shields/sofle/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/sofle/boards/nice_nano.overlay rename to app/boards/shields/sofle/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/sofle/boards/nrfmicro_11.overlay b/app/boards/shields/sofle/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/sofle/boards/nrfmicro_11.overlay rename to app/boards/shields/sofle/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay diff --git a/app/boards/shields/sofle/boards/nrfmicro_13.overlay b/app/boards/shields/sofle/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay similarity index 100% rename from app/boards/shields/sofle/boards/nrfmicro_13.overlay rename to app/boards/shields/sofle/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay diff --git a/app/boards/shields/splitkb_aurora_corne/boards/nice_nano.overlay b/app/boards/shields/splitkb_aurora_corne/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/splitkb_aurora_corne/boards/nice_nano.overlay rename to app/boards/shields/splitkb_aurora_corne/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/splitkb_aurora_helix/boards/nice_nano.overlay b/app/boards/shields/splitkb_aurora_helix/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/splitkb_aurora_helix/boards/nice_nano.overlay rename to app/boards/shields/splitkb_aurora_helix/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/splitkb_aurora_lily58/boards/nice_nano.overlay b/app/boards/shields/splitkb_aurora_lily58/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/splitkb_aurora_lily58/boards/nice_nano.overlay rename to app/boards/shields/splitkb_aurora_lily58/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/splitkb_aurora_sofle/boards/nice_nano.overlay b/app/boards/shields/splitkb_aurora_sofle/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/splitkb_aurora_sofle/boards/nice_nano.overlay rename to app/boards/shields/splitkb_aurora_sofle/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/splitkb_aurora_sweep/boards/nice_nano.overlay b/app/boards/shields/splitkb_aurora_sweep/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/splitkb_aurora_sweep/boards/nice_nano.overlay rename to app/boards/shields/splitkb_aurora_sweep/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/tg4x/boards/nice_nano.overlay b/app/boards/shields/tg4x/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/tg4x/boards/nice_nano.overlay rename to app/boards/shields/tg4x/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/tidbit/boards/nice_nano.overlay b/app/boards/shields/tidbit/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/tidbit/boards/nice_nano.overlay rename to app/boards/shields/tidbit/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/two_percent_milk/boards/nice_nano.overlay b/app/boards/shields/two_percent_milk/boards/nice_nano_nrf52840_zmk.overlay similarity index 100% rename from app/boards/shields/two_percent_milk/boards/nice_nano.overlay rename to app/boards/shields/two_percent_milk/boards/nice_nano_nrf52840_zmk.overlay diff --git a/app/boards/shields/two_percent_milk/boards/nrfmicro_11_flipped.overlay b/app/boards/shields/two_percent_milk/boards/nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/two_percent_milk/boards/nrfmicro_11_flipped.overlay rename to app/boards/shields/two_percent_milk/boards/nrfmicro_nrf52840_flipped_zmk_1_1_0.overlay diff --git a/app/boards/shields/two_percent_milk/boards/nrfmicro_11.overlay b/app/boards/shields/two_percent_milk/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay similarity index 100% rename from app/boards/shields/two_percent_milk/boards/nrfmicro_11.overlay rename to app/boards/shields/two_percent_milk/boards/nrfmicro_nrf52840_zmk_1_1_0.overlay diff --git a/app/boards/shields/two_percent_milk/boards/nrfmicro_13.overlay b/app/boards/shields/two_percent_milk/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay similarity index 100% rename from app/boards/shields/two_percent_milk/boards/nrfmicro_13.overlay rename to app/boards/shields/two_percent_milk/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay 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 0000000000..4f3dd49abd --- /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 26a2ca6402..d9243be021 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 ac83d9816f..733e2d0878 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 0000000000..0c1a531e87 --- /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 329b7371d5..2cf8c28188 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 54e360a393..4704552ddb 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 0000000000..c0efb874dd --- /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 0000000000..7aa1253d9d --- /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 251d2c2723..2611568042 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 54e360a393..ea7f06346c 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 0000000000..c0efb874dd --- /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 0000000000..85d23de121 --- /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 eaa714d69a..2684da2d7b 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 6ed4c3cf84..f9be15c13a 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 0000000000..c0efb874dd --- /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 0000000000..d0bb76916b --- /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/boards/zhiayang/mikoto/Kconfig.mikoto b/app/boards/zhiayang/mikoto/Kconfig.mikoto index 69ca49c0ec..171227bd24 100644 --- a/app/boards/zhiayang/mikoto/Kconfig.mikoto +++ b/app/boards/zhiayang/mikoto/Kconfig.mikoto @@ -3,7 +3,7 @@ config BOARD_MIKOTO select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE + imply RETAINED_MEM if BOARD_MIKOTO_NRF52840_ZMK + imply RETENTION if BOARD_MIKOTO_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_MIKOTO_NRF52840_ZMK imply I2C if BOARD_REVISION="7.2.0" diff --git a/app/boards/zhiayang/mikoto/board.yml b/app/boards/zhiayang/mikoto/board.yml index d1f7155762..745ed1c330 100644 --- a/app/boards/zhiayang/mikoto/board.yml +++ b/app/boards/zhiayang/mikoto/board.yml @@ -1,14 +1,5 @@ board: - name: mikoto - vendor: zhiayang - revision: - format: major.minor.patch - default: 5.20.0 - exact: false - revisions: - - name: 5.20.0 - - name: 6.1.0 - - name: 6.3.0 - - name: 7.2.0 - socs: - - name: nrf52840 + extend: mikoto + variants: + - name: zmk + qualifier: nrf52840 diff --git a/app/boards/zhiayang/mikoto/mikoto.zmk.yml b/app/boards/zhiayang/mikoto/mikoto.zmk.yml index 6e073410fa..7726e82bdc 100644 --- a/app/boards/zhiayang/mikoto/mikoto.zmk.yml +++ b/app/boards/zhiayang/mikoto/mikoto.zmk.yml @@ -1,5 +1,5 @@ file_format: "1" -id: mikoto +id: mikoto//zmk name: Mikoto type: board arch: arm diff --git a/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk.dts b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk.dts new file mode 100644 index 0000000000..7363967a4b --- /dev/null +++ b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk.dts @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/zhiayang/mikoto/mikoto.dts> +#include + +/ { + chosen { + zmk,battery = &vbatt; + }; + + // Node name must match original "EXT_POWER" label to preserve user settings. + EXT_POWER { + compatible = "zmk,ext-power-generic"; + control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; + init-delay-ms = <50>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-voltage-divider"; + io-channels = <&adc 1>; + output-ohms = <10000000>; + full-ohms = <(10000000 + 4000000)>; + }; +}; diff --git a/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_5_20_0.overlay b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_5_20_0.overlay new file mode 100644 index 0000000000..e5ea48646e --- /dev/null +++ b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_5_20_0.overlay @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/zhiayang/mikoto/mikoto-pinctrl.dtsi> +#include <../boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi> diff --git a/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_6_1_0.overlay b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_6_1_0.overlay new file mode 100644 index 0000000000..e5ea48646e --- /dev/null +++ b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_6_1_0.overlay @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/zhiayang/mikoto/mikoto-pinctrl.dtsi> +#include <../boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi> diff --git a/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_7_2_0.overlay b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_7_2_0.overlay new file mode 100644 index 0000000000..06db3f9ca1 --- /dev/null +++ b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_7_2_0.overlay @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include <../boards/zhiayang/mikoto/mikoto-pinctrl.dtsi> +#include <../boards/zhiayang/mikoto/arduino_pro_micro_pins_v6.dtsi> + +&pinctrl { + i2c1_default: i2c1_default { + group1 { + psels = , + ; + bias-pull-up; + }; + }; + + i2c1_sleep: i2c1_sleep { + group1 { + psels = , + ; + low-power-enable; + bias-pull-up; + }; + }; +}; + +&i2c1 { + status = "okay"; + compatible = "nordic,nrf-twi"; + pinctrl-0 = <&i2c1_default>; + pinctrl-1 = <&i2c1_sleep>; + pinctrl-names = "default", "sleep"; + + builtin_fuel_gauge: max17048@36 { + compatible = "zmk,maxim-max17048"; + status = "okay"; + reg = <0x36>; + }; +}; + +/ { + chosen { + zmk,battery = &builtin_fuel_gauge; + }; +}; diff --git a/app/boards/zhiayang/mikoto/mikoto_7_2_0.conf b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_7_2_0_defconfig similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto_7_2_0.conf rename to app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_7_2_0_defconfig diff --git a/app/boards/zhiayang/mikoto/mikoto_defconfig b/app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_defconfig similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto_defconfig rename to app/boards/zhiayang/mikoto/mikoto_nrf52840_zmk_defconfig diff --git a/app/core-coverage.yml b/app/core-coverage.yml index 6dc6a05193..beefb2eb63 100644 --- a/app/core-coverage.yml +++ b/app/core-coverage.yml @@ -1,7 +1,7 @@ board: - - nice_nano - - nrfmicro/nrf52840 - - proton_c + - nice_nano//zmk + - nrfmicro/nrf52840/zmk + - proton_c//zmk shield: - corne_left - corne_right @@ -9,62 +9,62 @@ shield: - settings_reset - tidbit include: - - board: bdn9 - - board: nice60 - - board: xiao_ble + - board: bdn9//zmk + - board: nice60//zmk + - board: xiao_ble//zmk shield: hummingbird - - board: nrf52840_m2 + - board: nrf52840_m2//zmk shield: m60 - - board: planck - - board: proton_c + - board: planck//zmk + - board: proton_c//zmk shield: clueboard_california - - board: nice_nano + - board: nice_nano//zmk shield: kyria_left cmake-args: "-DCONFIG_ZMK_DISPLAY=y" nickname: "display" - - board: nice_nano + - board: nice_nano//zmk 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 + - board: nice_nano//zmk shield: kyria_right cmake-args: "-DCONFIG_ZMK_DISPLAY=y" nickname: "display" - - board: nice_nano + - board: nice_nano//zmk shield: romac_plus cmake-args: "-DCONFIG_ZMK_RGB_UNDERGLOW=y" nickname: "underglow" - - board: nice_nano + - board: nice_nano//zmk shield: lily58_left nice_view_adapter nice_view nickname: "niceview" - - board: bdn9 + - board: bdn9//zmk snippet: studio-rpc-usb-uart cmake-args: "-DCONFIG_ZMK_STUDIO=y" nickname: "stm32-studio" - - board: nice_nano + - board: nice_nano//zmk shield: reviung41 snippet: studio-rpc-usb-uart cmake-args: "-DCONFIG_ZMK_STUDIO=y" nickname: "nrf52-studio" - - board: nice_nano + - board: nice_nano//zmk shield: corne_left snippet: studio-rpc-usb-uart cmake-args: "-DCONFIG_ZMK_STUDIO=y" nickname: "split-left-studio" - - board: nice_nano + - board: nice_nano//zmk shield: corne_right 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/boards/joric/nrfmicro/CMakeLists.txt b/app/module/boards/joric/nrfmicro/CMakeLists.txt similarity index 100% rename from app/boards/joric/nrfmicro/CMakeLists.txt rename to app/module/boards/joric/nrfmicro/CMakeLists.txt diff --git a/app/boards/joric/nrfmicro/Kconfig b/app/module/boards/joric/nrfmicro/Kconfig similarity index 100% rename from app/boards/joric/nrfmicro/Kconfig rename to app/module/boards/joric/nrfmicro/Kconfig diff --git a/app/boards/joric/nrfmicro/Kconfig.defconfig b/app/module/boards/joric/nrfmicro/Kconfig.defconfig similarity index 100% rename from app/boards/joric/nrfmicro/Kconfig.defconfig rename to app/module/boards/joric/nrfmicro/Kconfig.defconfig diff --git a/app/module/boards/joric/nrfmicro/Kconfig.nrfmicro b/app/module/boards/joric/nrfmicro/Kconfig.nrfmicro new file mode 100644 index 0000000000..27eb747b17 --- /dev/null +++ b/app/module/boards/joric/nrfmicro/Kconfig.nrfmicro @@ -0,0 +1,9 @@ +# nrfmicro board configuration + +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_NRFMICRO + select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840 + select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840_FLIPPED + select SOC_NRF52833_QIAA if BOARD_NRFMICRO_NRF52833 diff --git a/app/boards/joric/nrfmicro/arduino_pro_micro_pins.dtsi b/app/module/boards/joric/nrfmicro/arduino_pro_micro_pins.dtsi similarity index 100% rename from app/boards/joric/nrfmicro/arduino_pro_micro_pins.dtsi rename to app/module/boards/joric/nrfmicro/arduino_pro_micro_pins.dtsi diff --git a/app/boards/joric/nrfmicro/arduino_pro_micro_pins_52833.dtsi b/app/module/boards/joric/nrfmicro/arduino_pro_micro_pins_52833.dtsi similarity index 100% rename from app/boards/joric/nrfmicro/arduino_pro_micro_pins_52833.dtsi rename to app/module/boards/joric/nrfmicro/arduino_pro_micro_pins_52833.dtsi diff --git a/app/boards/joric/nrfmicro/arduino_pro_micro_pins_flipped.dtsi b/app/module/boards/joric/nrfmicro/arduino_pro_micro_pins_flipped.dtsi similarity index 100% rename from app/boards/joric/nrfmicro/arduino_pro_micro_pins_flipped.dtsi rename to app/module/boards/joric/nrfmicro/arduino_pro_micro_pins_flipped.dtsi diff --git a/app/boards/joric/nrfmicro/board.cmake b/app/module/boards/joric/nrfmicro/board.cmake similarity index 100% rename from app/boards/joric/nrfmicro/board.cmake rename to app/module/boards/joric/nrfmicro/board.cmake diff --git a/app/module/boards/joric/nrfmicro/board.yml b/app/module/boards/joric/nrfmicro/board.yml new file mode 100644 index 0000000000..1cfcc492fc --- /dev/null +++ b/app/module/boards/joric/nrfmicro/board.yml @@ -0,0 +1,14 @@ +board: + name: nrfmicro + vendor: joric + socs: + - name: nrf52840 + variants: + - name: flipped + - name: nrf52833 + revision: + format: major.minor.patch + default: 1.3.0 + revisions: + - name: 1.3.0 + - name: 1.1.0 diff --git a/app/boards/joric/nrfmicro/nrfmicro-flipped-pinctrl.dtsi b/app/module/boards/joric/nrfmicro/nrfmicro-flipped-pinctrl.dtsi similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro-flipped-pinctrl.dtsi rename to app/module/boards/joric/nrfmicro/nrfmicro-flipped-pinctrl.dtsi diff --git a/app/boards/joric/nrfmicro/nrfmicro-pinctrl.dtsi b/app/module/boards/joric/nrfmicro/nrfmicro-pinctrl.dtsi similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro-pinctrl.dtsi rename to app/module/boards/joric/nrfmicro/nrfmicro-pinctrl.dtsi diff --git a/app/boards/joric/nrfmicro/nrfmicro_11.yaml b/app/module/boards/joric/nrfmicro/nrfmicro_11.yaml similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_11.yaml rename to app/module/boards/joric/nrfmicro/nrfmicro_11.yaml diff --git a/app/boards/joric/nrfmicro/nrfmicro_11_flipped.yaml b/app/module/boards/joric/nrfmicro/nrfmicro_11_flipped.yaml similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_11_flipped.yaml rename to app/module/boards/joric/nrfmicro/nrfmicro_11_flipped.yaml diff --git a/app/boards/joric/nrfmicro/nrfmicro_13.yaml b/app/module/boards/joric/nrfmicro/nrfmicro_13.yaml similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_13.yaml rename to app/module/boards/joric/nrfmicro/nrfmicro_13.yaml diff --git a/app/boards/joric/nrfmicro/nrfmicro_13_52833.yaml b/app/module/boards/joric/nrfmicro/nrfmicro_13_52833.yaml similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_13_52833.yaml rename to app/module/boards/joric/nrfmicro/nrfmicro_13_52833.yaml diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52833.dts b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52833.dts similarity index 83% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52833.dts rename to app/module/boards/joric/nrfmicro/nrfmicro_nrf52833.dts index a5cca787c9..7239871688 100644 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52833.dts +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52833.dts @@ -19,7 +19,6 @@ zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; - zmk,battery = &vbatt; }; leds { @@ -28,20 +27,6 @@ gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>; }; }; - - // Node name must match original "EXT_POWER" label to preserve user settings. - EXT_POWER { - compatible = "zmk,ext-power-generic"; - control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; - init-delay-ms = <50>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-voltage-divider"; - io-channels = <&adc 2>; - output-ohms = <2000000>; - full-ohms = <(2000000 + 820000)>; - }; }; ®1 { diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0.overlay b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0.overlay similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0.overlay rename to app/module/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0.overlay diff --git a/app/module/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0_defconfig b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0_defconfig new file mode 100644 index 0000000000..5b14008898 --- /dev/null +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52833_1_3_0_defconfig @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y + diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840.dts b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840.dts similarity index 81% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840.dts rename to app/module/boards/joric/nrfmicro/nrfmicro_nrf52840.dts index 149f4be3a4..787cfc3498 100644 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52840.dts +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840.dts @@ -6,7 +6,6 @@ /dts-v1/; #include -#include #include "arduino_pro_micro_pins.dtsi" #include "nrfmicro-pinctrl.dtsi" @@ -19,7 +18,6 @@ zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; - zmk,battery = &vbatt; }; leds { @@ -28,20 +26,6 @@ gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; }; }; - - // Node name must match original "EXT_POWER" label to preserve user settings. - EXT_POWER { - compatible = "zmk,ext-power-generic"; - control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; - init-delay-ms = <50>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-voltage-divider"; - io-channels = <&adc 2>; - output-ohms = <2000000>; - full-ohms = <(2000000 + 820000)>; - }; }; ®1 { @@ -90,7 +74,6 @@ zephyr_udc0: &usbd { status = "okay"; }; - &flash0 { /* * For more information, see: diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0.overlay b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0.overlay similarity index 100% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0.overlay rename to app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0.overlay diff --git a/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0_defconfig b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0_defconfig new file mode 100644 index 0000000000..5b14008898 --- /dev/null +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_1_0_defconfig @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y + diff --git a/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0_defconfig b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0_defconfig new file mode 100644 index 0000000000..5e669b34f1 --- /dev/null +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_1_3_0_defconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y diff --git a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts similarity index 88% rename from app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts rename to app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts index 8f1d30312e..1e32881655 100644 --- a/app/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped.dts @@ -6,7 +6,6 @@ /dts-v1/; #include -#include #include "arduino_pro_micro_pins_flipped.dtsi" #include "nrfmicro-flipped-pinctrl.dtsi" @@ -27,13 +26,6 @@ gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; }; }; - - // Node name must match original "EXT_POWER" label to preserve user settings. - EXT_POWER { - compatible = "zmk,ext-power-generic"; - control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; - init-delay-ms = <50>; - }; }; ®1 { diff --git a/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0_defconfig b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0_defconfig new file mode 100644 index 0000000000..5e669b34f1 --- /dev/null +++ b/app/module/boards/joric/nrfmicro/nrfmicro_nrf52840_flipped_1_1_0_defconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y diff --git a/app/boards/joric/nrfmicro/pinmux.c b/app/module/boards/joric/nrfmicro/pinmux.c similarity index 100% rename from app/boards/joric/nrfmicro/pinmux.c rename to app/module/boards/joric/nrfmicro/pinmux.c diff --git a/app/boards/joric/nrfmicro/pre_dt_board.cmake b/app/module/boards/joric/nrfmicro/pre_dt_board.cmake similarity index 100% rename from app/boards/joric/nrfmicro/pre_dt_board.cmake rename to app/module/boards/joric/nrfmicro/pre_dt_board.cmake diff --git a/app/boards/jpconstantineau/bluemicro840/Kconfig b/app/module/boards/jpconstantineau/bluemicro840/Kconfig similarity index 100% rename from app/boards/jpconstantineau/bluemicro840/Kconfig rename to app/module/boards/jpconstantineau/bluemicro840/Kconfig diff --git a/app/module/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 b/app/module/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 new file mode 100644 index 0000000000..fd2a9143e6 --- /dev/null +++ b/app/module/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 @@ -0,0 +1,5 @@ +# Copyright (c) 2026 Pete Johanson, Derek Schmell +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_BLUEMICRO840 + select SOC_NRF52840_QIAA diff --git a/app/boards/jpconstantineau/bluemicro840/Kconfig.defconfig b/app/module/boards/jpconstantineau/bluemicro840/Kconfig.defconfig similarity index 100% rename from app/boards/jpconstantineau/bluemicro840/Kconfig.defconfig rename to app/module/boards/jpconstantineau/bluemicro840/Kconfig.defconfig diff --git a/app/boards/jpconstantineau/bluemicro840/arduino_pro_micro_pins.dtsi b/app/module/boards/jpconstantineau/bluemicro840/arduino_pro_micro_pins.dtsi similarity index 100% rename from app/boards/jpconstantineau/bluemicro840/arduino_pro_micro_pins.dtsi rename to app/module/boards/jpconstantineau/bluemicro840/arduino_pro_micro_pins.dtsi diff --git a/app/boards/jpconstantineau/bluemicro840/bluemicro840-pinctrl.dtsi b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840-pinctrl.dtsi similarity index 100% rename from app/boards/jpconstantineau/bluemicro840/bluemicro840-pinctrl.dtsi rename to app/module/boards/jpconstantineau/bluemicro840/bluemicro840-pinctrl.dtsi diff --git a/app/boards/jpconstantineau/bluemicro840/bluemicro840.dts b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840.dts similarity index 80% rename from app/boards/jpconstantineau/bluemicro840/bluemicro840.dts rename to app/module/boards/jpconstantineau/bluemicro840/bluemicro840.dts index 6c4e8ced73..fe32d95226 100644 --- a/app/boards/jpconstantineau/bluemicro840/bluemicro840.dts +++ b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840.dts @@ -6,7 +6,6 @@ /dts-v1/; #include -#include #include "arduino_pro_micro_pins.dtsi" #include "bluemicro840-pinctrl.dtsi" @@ -19,7 +18,6 @@ zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; - zmk,battery = &vbatt; }; leds { @@ -28,21 +26,6 @@ gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; }; }; - - // Node name must match original "EXT_POWER" label to preserve user settings. - EXT_POWER { - compatible = "zmk,ext-power-generic"; - init-delay-ms = <20>; - control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-voltage-divider"; - io-channels = <&adc 7>; - output-ohms = <2000000>; - full-ohms = <(2000000 + 806000)>; - }; - }; &adc { diff --git a/app/module/boards/jpconstantineau/bluemicro840/bluemicro840.yaml b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840.yaml new file mode 100644 index 0000000000..c36eee0c9d --- /dev/null +++ b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840.yaml @@ -0,0 +1,15 @@ +identifier: bluemicro840 +name: BlueMicro840_V1 +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - adc + - usb_device + - ble + - ieee802154 + - pwm + - watchdog diff --git a/app/module/boards/jpconstantineau/bluemicro840/bluemicro840_defconfig b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840_defconfig new file mode 100644 index 0000000000..5b14008898 --- /dev/null +++ b/app/module/boards/jpconstantineau/bluemicro840/bluemicro840_defconfig @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y + diff --git a/app/module/boards/jpconstantineau/bluemicro840/board.cmake b/app/module/boards/jpconstantineau/bluemicro840/board.cmake new file mode 100644 index 0000000000..73fa64a9aa --- /dev/null +++ b/app/module/boards/jpconstantineau/bluemicro840/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT + +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") +include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) diff --git a/app/module/boards/jpconstantineau/bluemicro840/board.yml b/app/module/boards/jpconstantineau/bluemicro840/board.yml new file mode 100644 index 0000000000..0a9ebdd5db --- /dev/null +++ b/app/module/boards/jpconstantineau/bluemicro840/board.yml @@ -0,0 +1,5 @@ +board: + name: bluemicro840 + vendor: jpconstantineau + socs: + - name: nrf52840 diff --git a/app/module/boards/jpconstantineau/bluemicro840/pre_dt_board.cmake b/app/module/boards/jpconstantineau/bluemicro840/pre_dt_board.cmake new file mode 100644 index 0000000000..b0c27aa5d6 --- /dev/null +++ b/app/module/boards/jpconstantineau/bluemicro840/pre_dt_board.cmake @@ -0,0 +1,9 @@ +# +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +# Suppresses duplicate unit-address warning at build time for power, clock, acl and flash-controller +# https://docs.zephyrproject.org/latest/build/dts/intro-input-output.html + +list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/app/boards/keycapsss/puchi_ble/CMakeLists.txt b/app/module/boards/keycapsss/puchi_ble/CMakeLists.txt similarity index 100% rename from app/boards/keycapsss/puchi_ble/CMakeLists.txt rename to app/module/boards/keycapsss/puchi_ble/CMakeLists.txt diff --git a/app/boards/keycapsss/puchi_ble/Kconfig b/app/module/boards/keycapsss/puchi_ble/Kconfig similarity index 100% rename from app/boards/keycapsss/puchi_ble/Kconfig rename to app/module/boards/keycapsss/puchi_ble/Kconfig diff --git a/app/module/boards/keycapsss/puchi_ble/Kconfig.defconfig b/app/module/boards/keycapsss/puchi_ble/Kconfig.defconfig new file mode 100644 index 0000000000..ee8bc57352 --- /dev/null +++ b/app/module/boards/keycapsss/puchi_ble/Kconfig.defconfig @@ -0,0 +1,16 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +if BOARD_PUCHI_BLE + +config BOARD + default "puchi_ble" + +if USB_DEVICE_STACK + +config USB_NRFX + default y + +endif # USB_DEVICE_STACK + +endif # BOARD_PUCHI_BLE diff --git a/app/module/boards/keycapsss/puchi_ble/Kconfig.puchi_ble b/app/module/boards/keycapsss/puchi_ble/Kconfig.puchi_ble new file mode 100644 index 0000000000..4cd8b05bc1 --- /dev/null +++ b/app/module/boards/keycapsss/puchi_ble/Kconfig.puchi_ble @@ -0,0 +1,10 @@ +# Puchi-BLE board configuration + +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_PUCHI_BLE + select SOC_NRF52840_QIAA + imply RETAINED_MEM + imply RETENTION + imply RETENTION_BOOT_MODE diff --git a/app/boards/keycapsss/puchi_ble/arduino_pro_micro_pins.dtsi b/app/module/boards/keycapsss/puchi_ble/arduino_pro_micro_pins.dtsi similarity index 100% rename from app/boards/keycapsss/puchi_ble/arduino_pro_micro_pins.dtsi rename to app/module/boards/keycapsss/puchi_ble/arduino_pro_micro_pins.dtsi diff --git a/app/boards/keycapsss/puchi_ble/board.cmake b/app/module/boards/keycapsss/puchi_ble/board.cmake similarity index 100% rename from app/boards/keycapsss/puchi_ble/board.cmake rename to app/module/boards/keycapsss/puchi_ble/board.cmake diff --git a/app/module/boards/keycapsss/puchi_ble/board.yml b/app/module/boards/keycapsss/puchi_ble/board.yml new file mode 100644 index 0000000000..d192a30639 --- /dev/null +++ b/app/module/boards/keycapsss/puchi_ble/board.yml @@ -0,0 +1,5 @@ +board: + name: puchi_ble + vendor: keycapsss + socs: + - name: nrf52840 diff --git a/app/boards/keycapsss/puchi_ble/pinmux.c b/app/module/boards/keycapsss/puchi_ble/pinmux.c similarity index 100% rename from app/boards/keycapsss/puchi_ble/pinmux.c rename to app/module/boards/keycapsss/puchi_ble/pinmux.c diff --git a/app/module/boards/keycapsss/puchi_ble/pre_dt_board.cmake b/app/module/boards/keycapsss/puchi_ble/pre_dt_board.cmake new file mode 100644 index 0000000000..b0c27aa5d6 --- /dev/null +++ b/app/module/boards/keycapsss/puchi_ble/pre_dt_board.cmake @@ -0,0 +1,9 @@ +# +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +# Suppresses duplicate unit-address warning at build time for power, clock, acl and flash-controller +# https://docs.zephyrproject.org/latest/build/dts/intro-input-output.html + +list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/app/boards/keycapsss/puchi_ble/puchi_ble-pinctrl.dtsi b/app/module/boards/keycapsss/puchi_ble/puchi_ble-pinctrl.dtsi similarity index 100% rename from app/boards/keycapsss/puchi_ble/puchi_ble-pinctrl.dtsi rename to app/module/boards/keycapsss/puchi_ble/puchi_ble-pinctrl.dtsi diff --git a/app/boards/keycapsss/puchi_ble/puchi_ble.dts b/app/module/boards/keycapsss/puchi_ble/puchi_ble.dts similarity index 100% rename from app/boards/keycapsss/puchi_ble/puchi_ble.dts rename to app/module/boards/keycapsss/puchi_ble/puchi_ble.dts diff --git a/app/boards/keycapsss/puchi_ble/puchi_ble.yaml b/app/module/boards/keycapsss/puchi_ble/puchi_ble.yaml similarity index 100% rename from app/boards/keycapsss/puchi_ble/puchi_ble.yaml rename to app/module/boards/keycapsss/puchi_ble/puchi_ble.yaml diff --git a/app/module/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml b/app/module/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml new file mode 100644 index 0000000000..18f6463cb2 --- /dev/null +++ b/app/module/boards/keycapsss/puchi_ble/puchi_ble.zmk.yml @@ -0,0 +1,10 @@ +file_format: "1" +id: puchi_ble +name: Puchi-BLE V1 +type: board +arch: arm +outputs: + - usb + - ble +url: https://keycapsss.com/keyboard-parts/mcu-controller/202/puchi-ble-wireless-microcontroller +exposes: [pro_micro] diff --git a/app/module/boards/keycapsss/puchi_ble/puchi_ble_defconfig b/app/module/boards/keycapsss/puchi_ble/puchi_ble_defconfig new file mode 100644 index 0000000000..5d50cb2581 --- /dev/null +++ b/app/module/boards/keycapsss/puchi_ble/puchi_ble_defconfig @@ -0,0 +1,15 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable GPIO +CONFIG_GPIO=y + +# Use pinctrl +CONFIG_PINCTRL=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y + diff --git a/app/boards/makerdiary/nrf52840_m2/Kconfig b/app/module/boards/makerdiary/nrf52840_m2/Kconfig similarity index 100% rename from app/boards/makerdiary/nrf52840_m2/Kconfig rename to app/module/boards/makerdiary/nrf52840_m2/Kconfig diff --git a/app/boards/makerdiary/nrf52840_m2/Kconfig.defconfig b/app/module/boards/makerdiary/nrf52840_m2/Kconfig.defconfig similarity index 100% rename from app/boards/makerdiary/nrf52840_m2/Kconfig.defconfig rename to app/module/boards/makerdiary/nrf52840_m2/Kconfig.defconfig diff --git a/app/module/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 b/app/module/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 new file mode 100644 index 0000000000..d4eb4c3041 --- /dev/null +++ b/app/module/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 @@ -0,0 +1,5 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_NRF52840_M2 + select SOC_NRF52840_QIAA diff --git a/app/module/boards/makerdiary/nrf52840_m2/board.cmake b/app/module/boards/makerdiary/nrf52840_m2/board.cmake new file mode 100644 index 0000000000..0acfeb7356 --- /dev/null +++ b/app/module/boards/makerdiary/nrf52840_m2/board.cmake @@ -0,0 +1,7 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") + +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) +include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) diff --git a/app/module/boards/makerdiary/nrf52840_m2/board.yml b/app/module/boards/makerdiary/nrf52840_m2/board.yml new file mode 100644 index 0000000000..a1675e245c --- /dev/null +++ b/app/module/boards/makerdiary/nrf52840_m2/board.yml @@ -0,0 +1,5 @@ +board: + name: nrf52840_m2 + vendor: makerdiary + socs: + - name: nrf52840 diff --git a/app/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts b/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts similarity index 86% rename from app/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts rename to app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts index f9ffee623e..821fcd2a90 100644 --- a/app/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts +++ b/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.dts @@ -6,7 +6,6 @@ /dts-v1/; #include -#include / { model = "Makerdiary nRF52840 M.2 module"; @@ -16,7 +15,6 @@ zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; - zmk,battery = &vbatt; }; leds { @@ -31,14 +29,6 @@ gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; }; }; - - vbatt: vbatt { - compatible = "zmk,battery-voltage-divider"; - io-channels = <&adc 0>; - output-ohms = <1000000>; - full-ohms = <(1000000 + 1000000)>; - }; - }; &adc { diff --git a/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.yaml b/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.yaml new file mode 100644 index 0000000000..0a999bbf6a --- /dev/null +++ b/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2.yaml @@ -0,0 +1,15 @@ +identifier: nrf52840_m2 +name: Makerdiary nRF52840 M.2 module +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - adc + - usb_device + - ble + - ieee802154 + - pwm + - watchdog diff --git a/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2_defconfig b/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2_defconfig new file mode 100644 index 0000000000..c7dc6fcf30 --- /dev/null +++ b/app/module/boards/makerdiary/nrf52840_m2/nrf52840_m2_defconfig @@ -0,0 +1,12 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y + diff --git a/app/module/boards/makerdiary/nrf52840_m2/pre_dt_board.cmake b/app/module/boards/makerdiary/nrf52840_m2/pre_dt_board.cmake new file mode 100644 index 0000000000..b0c27aa5d6 --- /dev/null +++ b/app/module/boards/makerdiary/nrf52840_m2/pre_dt_board.cmake @@ -0,0 +1,9 @@ +# +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +# Suppresses duplicate unit-address warning at build time for power, clock, acl and flash-controller +# https://docs.zephyrproject.org/latest/build/dts/intro-input-output.html + +list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/app/boards/mechwild/pillbug/Kconfig b/app/module/boards/mechwild/pillbug/Kconfig similarity index 100% rename from app/boards/mechwild/pillbug/Kconfig rename to app/module/boards/mechwild/pillbug/Kconfig diff --git a/app/boards/mechwild/pillbug/Kconfig.defconfig b/app/module/boards/mechwild/pillbug/Kconfig.defconfig similarity index 100% rename from app/boards/mechwild/pillbug/Kconfig.defconfig rename to app/module/boards/mechwild/pillbug/Kconfig.defconfig diff --git a/app/module/boards/mechwild/pillbug/Kconfig.pillbug b/app/module/boards/mechwild/pillbug/Kconfig.pillbug new file mode 100644 index 0000000000..d89679445e --- /dev/null +++ b/app/module/boards/mechwild/pillbug/Kconfig.pillbug @@ -0,0 +1,8 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_PILLBUG + select SOC_NRF52840_QIAA + imply RETAINED_MEM + imply RETENTION + imply RETENTION_BOOT_MODE diff --git a/app/boards/mechwild/pillbug/blackpill_pins.dtsi b/app/module/boards/mechwild/pillbug/blackpill_pins.dtsi similarity index 100% rename from app/boards/mechwild/pillbug/blackpill_pins.dtsi rename to app/module/boards/mechwild/pillbug/blackpill_pins.dtsi diff --git a/app/module/boards/mechwild/pillbug/board.cmake b/app/module/boards/mechwild/pillbug/board.cmake new file mode 100644 index 0000000000..d9d4ed92e2 --- /dev/null +++ b/app/module/boards/mechwild/pillbug/board.cmake @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: MIT + +set(OPENOCD_NRF5_SUBFAMILY nrf52) +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") +include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) diff --git a/app/module/boards/mechwild/pillbug/board.yml b/app/module/boards/mechwild/pillbug/board.yml new file mode 100644 index 0000000000..abd15044f7 --- /dev/null +++ b/app/module/boards/mechwild/pillbug/board.yml @@ -0,0 +1,5 @@ +board: + name: pillbug + vendor: mechwild + socs: + - name: nrf52840 diff --git a/app/module/boards/mechwild/pillbug/pillbug-pinctrl.dtsi b/app/module/boards/mechwild/pillbug/pillbug-pinctrl.dtsi new file mode 100644 index 0000000000..609c4a7250 --- /dev/null +++ b/app/module/boards/mechwild/pillbug/pillbug-pinctrl.dtsi @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2026 The ZMK Contributors + * SPDX-License-Identifier: MIT + */ + +&pinctrl { + uart0_default: uart0_default { + group1 { + psels = ; + bias-pull-up; + }; + group2 { + psels = ; + }; + }; + + uart0_sleep: uart0_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + i2c0_default: i2c0_default { + group1 { + psels = , + ; + }; + }; + + i2c0_sleep: i2c0_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + spi1_default: spi1_default { + group1 { + psels = , + , + ; + }; + }; + + spi1_sleep: spi1_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; +}; diff --git a/app/boards/mechwild/pillbug/pillbug.dts b/app/module/boards/mechwild/pillbug/pillbug.dts similarity index 80% rename from app/boards/mechwild/pillbug/pillbug.dts rename to app/module/boards/mechwild/pillbug/pillbug.dts index cb2db7c467..b24f05df54 100644 --- a/app/boards/mechwild/pillbug/pillbug.dts +++ b/app/module/boards/mechwild/pillbug/pillbug.dts @@ -7,7 +7,6 @@ /dts-v1/; #include -#include #include "pillbug-pinctrl.dtsi" #include "blackpill_pins.dtsi" @@ -20,7 +19,6 @@ zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; - zmk,battery = &vbatt; }; leds { @@ -29,20 +27,6 @@ gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; }; }; - - // Node name must match original "EXT_POWER" label to preserve user settings. - EXT_POWER { - compatible = "zmk,ext-power-generic"; - control-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; - init-delay-ms = <50>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-voltage-divider"; - io-channels = <&adc 2>; - output-ohms = <2000000>; - full-ohms = <(2000000 + 820000)>; - }; }; &adc { @@ -88,7 +72,6 @@ zephyr_udc0: &usbd { status = "okay"; }; - &flash0 { /* * For more information, see: diff --git a/app/boards/mechwild/pillbug/pillbug.yaml b/app/module/boards/mechwild/pillbug/pillbug.yaml similarity index 100% rename from app/boards/mechwild/pillbug/pillbug.yaml rename to app/module/boards/mechwild/pillbug/pillbug.yaml diff --git a/app/module/boards/mechwild/pillbug/pillbug_defconfig b/app/module/boards/mechwild/pillbug/pillbug_defconfig new file mode 100644 index 0000000000..8332d62ba7 --- /dev/null +++ b/app/module/boards/mechwild/pillbug/pillbug_defconfig @@ -0,0 +1,14 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# Use pinctrl +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y diff --git a/app/boards/mechwild/pillbug/pre_dt_board.cmake b/app/module/boards/mechwild/pillbug/pre_dt_board.cmake similarity index 100% rename from app/boards/mechwild/pillbug/pre_dt_board.cmake rename to app/module/boards/mechwild/pillbug/pre_dt_board.cmake diff --git a/app/module/boards/nicekeyboards/nice_nano/Kconfig.nice_nano b/app/module/boards/nicekeyboards/nice_nano/Kconfig.nice_nano new file mode 100644 index 0000000000..01a9329c4c --- /dev/null +++ b/app/module/boards/nicekeyboards/nice_nano/Kconfig.nice_nano @@ -0,0 +1,5 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_NICE_NANO + select SOC_NRF52840_QIAA diff --git a/app/boards/nicekeyboards/nice_nano/arduino_pro_micro_pins.dtsi b/app/module/boards/nicekeyboards/nice_nano/arduino_pro_micro_pins.dtsi similarity index 100% rename from app/boards/nicekeyboards/nice_nano/arduino_pro_micro_pins.dtsi rename to app/module/boards/nicekeyboards/nice_nano/arduino_pro_micro_pins.dtsi diff --git a/app/module/boards/nicekeyboards/nice_nano/board.cmake b/app/module/boards/nicekeyboards/nice_nano/board.cmake new file mode 100644 index 0000000000..73fa64a9aa --- /dev/null +++ b/app/module/boards/nicekeyboards/nice_nano/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT + +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") +include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) diff --git a/app/module/boards/nicekeyboards/nice_nano/board.yml b/app/module/boards/nicekeyboards/nice_nano/board.yml new file mode 100644 index 0000000000..89171957c9 --- /dev/null +++ b/app/module/boards/nicekeyboards/nice_nano/board.yml @@ -0,0 +1,11 @@ +board: + name: nice_nano + vendor: nicekeyboards + socs: + - name: nrf52840 + revision: + format: major.minor.patch + default: 2.0.0 + revisions: + - name: 1.0.0 + - name: 2.0.0 diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano-pinctrl.dtsi b/app/module/boards/nicekeyboards/nice_nano/nice_nano-pinctrl.dtsi similarity index 100% rename from app/boards/nicekeyboards/nice_nano/nice_nano-pinctrl.dtsi rename to app/module/boards/nicekeyboards/nice_nano/nice_nano-pinctrl.dtsi diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano.dts b/app/module/boards/nicekeyboards/nice_nano/nice_nano.dts similarity index 97% rename from app/boards/nicekeyboards/nice_nano/nice_nano.dts rename to app/module/boards/nicekeyboards/nice_nano/nice_nano.dts index 0595ce137a..2788ceaea8 100644 --- a/app/boards/nicekeyboards/nice_nano/nice_nano.dts +++ b/app/module/boards/nicekeyboards/nice_nano/nice_nano.dts @@ -7,7 +7,6 @@ /dts-v1/; #include -#include #include "nice_nano-pinctrl.dtsi" #include "arduino_pro_micro_pins.dtsi" diff --git a/app/boards/nicekeyboards/nice_nano/nice_nano.yaml b/app/module/boards/nicekeyboards/nice_nano/nice_nano.yaml similarity index 100% rename from app/boards/nicekeyboards/nice_nano/nice_nano.yaml rename to app/module/boards/nicekeyboards/nice_nano/nice_nano.yaml diff --git a/app/module/boards/nicekeyboards/nice_nano/nice_nano_1_0_0_defconfig b/app/module/boards/nicekeyboards/nice_nano/nice_nano_1_0_0_defconfig new file mode 100644 index 0000000000..0779d35902 --- /dev/null +++ b/app/module/boards/nicekeyboards/nice_nano/nice_nano_1_0_0_defconfig @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable GPIO +CONFIG_GPIO=y + +# Use pinctrl +CONFIG_PINCTRL=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y diff --git a/app/module/boards/nicekeyboards/nice_nano/nice_nano_2_0_0_defconfig b/app/module/boards/nicekeyboards/nice_nano/nice_nano_2_0_0_defconfig new file mode 100644 index 0000000000..73d6e98a98 --- /dev/null +++ b/app/module/boards/nicekeyboards/nice_nano/nice_nano_2_0_0_defconfig @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y + +# Use pinctrl +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y diff --git a/app/module/boards/nicekeyboards/nice_nano/pre_dt_board.cmake b/app/module/boards/nicekeyboards/nice_nano/pre_dt_board.cmake new file mode 100644 index 0000000000..b0c27aa5d6 --- /dev/null +++ b/app/module/boards/nicekeyboards/nice_nano/pre_dt_board.cmake @@ -0,0 +1,9 @@ +# +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +# Suppresses duplicate unit-address warning at build time for power, clock, acl and flash-controller +# https://docs.zephyrproject.org/latest/build/dts/intro-input-output.html + +list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/app/boards/qmk/proton_c/Kconfig.proton_c b/app/module/boards/qmk/proton_c/Kconfig.proton_c similarity index 100% rename from app/boards/qmk/proton_c/Kconfig.proton_c rename to app/module/boards/qmk/proton_c/Kconfig.proton_c diff --git a/app/boards/qmk/proton_c/arduino_pro_micro_pins.dtsi b/app/module/boards/qmk/proton_c/arduino_pro_micro_pins.dtsi similarity index 100% rename from app/boards/qmk/proton_c/arduino_pro_micro_pins.dtsi rename to app/module/boards/qmk/proton_c/arduino_pro_micro_pins.dtsi diff --git a/app/module/boards/qmk/proton_c/board.cmake b/app/module/boards/qmk/proton_c/board.cmake new file mode 100644 index 0000000000..9da8ea9112 --- /dev/null +++ b/app/module/boards/qmk/proton_c/board.cmake @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: MIT + +board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") +board_runner_args(jlink "--device=STM32F303CC" "--speed=4000") + +include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/app/module/boards/qmk/proton_c/board.yml b/app/module/boards/qmk/proton_c/board.yml new file mode 100644 index 0000000000..54ecb64bbe --- /dev/null +++ b/app/module/boards/qmk/proton_c/board.yml @@ -0,0 +1,5 @@ +board: + name: proton_c + vendor: qmk + socs: + - name: stm32f303xc diff --git a/app/boards/qmk/proton_c/proton_c.dts b/app/module/boards/qmk/proton_c/proton_c.dts similarity index 100% rename from app/boards/qmk/proton_c/proton_c.dts rename to app/module/boards/qmk/proton_c/proton_c.dts diff --git a/app/boards/qmk/proton_c/proton_c.yaml b/app/module/boards/qmk/proton_c/proton_c.yaml similarity index 100% rename from app/boards/qmk/proton_c/proton_c.yaml rename to app/module/boards/qmk/proton_c/proton_c.yaml diff --git a/app/module/boards/qmk/proton_c/proton_c.zmk.yml b/app/module/boards/qmk/proton_c/proton_c.zmk.yml new file mode 100644 index 0000000000..682783ce60 --- /dev/null +++ b/app/module/boards/qmk/proton_c/proton_c.zmk.yml @@ -0,0 +1,9 @@ +file_format: "1" +id: proton_c +name: QMK Proton-C +type: board +arch: arm +outputs: + - usb +url: https://qmk.fm/proton-c/ +exposes: [pro_micro] diff --git a/app/module/boards/qmk/proton_c/proton_c_defconfig b/app/module/boards/qmk/proton_c/proton_c_defconfig new file mode 100644 index 0000000000..83dd1ee9ed --- /dev/null +++ b/app/module/boards/qmk/proton_c/proton_c_defconfig @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: MIT + +# 72MHz system clock +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000 + +# Floating Point Options +CONFIG_FPU=y + +# enable pinctrl +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +# clock configuration +CONFIG_CLOCK_CONTROL=y diff --git a/app/boards/zhiayang/mikoto/CMakeLists.txt b/app/module/boards/zhiayang/mikoto/CMakeLists.txt similarity index 100% rename from app/boards/zhiayang/mikoto/CMakeLists.txt rename to app/module/boards/zhiayang/mikoto/CMakeLists.txt diff --git a/app/boards/zhiayang/mikoto/Kconfig b/app/module/boards/zhiayang/mikoto/Kconfig similarity index 100% rename from app/boards/zhiayang/mikoto/Kconfig rename to app/module/boards/zhiayang/mikoto/Kconfig diff --git a/app/boards/zhiayang/mikoto/Kconfig.defconfig b/app/module/boards/zhiayang/mikoto/Kconfig.defconfig similarity index 91% rename from app/boards/zhiayang/mikoto/Kconfig.defconfig rename to app/module/boards/zhiayang/mikoto/Kconfig.defconfig index ec6ee532dd..730cc00597 100644 --- a/app/boards/zhiayang/mikoto/Kconfig.defconfig +++ b/app/module/boards/zhiayang/mikoto/Kconfig.defconfig @@ -15,9 +15,6 @@ config USB_DEVICE_STACK endif # USB -config BT_CTLR - default BT - choice BOARD_MIKOTO_CHARGER_CURRENT default BOARD_MIKOTO_CHARGER_CURRENT_100MA endchoice diff --git a/app/module/boards/zhiayang/mikoto/Kconfig.mikoto b/app/module/boards/zhiayang/mikoto/Kconfig.mikoto new file mode 100644 index 0000000000..2190c382f6 --- /dev/null +++ b/app/module/boards/zhiayang/mikoto/Kconfig.mikoto @@ -0,0 +1,5 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_MIKOTO + select SOC_NRF52840_QIAA diff --git a/app/boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi b/app/module/boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi similarity index 100% rename from app/boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi rename to app/module/boards/zhiayang/mikoto/arduino_pro_micro_pins_v5.dtsi diff --git a/app/boards/zhiayang/mikoto/arduino_pro_micro_pins_v6.dtsi b/app/module/boards/zhiayang/mikoto/arduino_pro_micro_pins_v6.dtsi similarity index 100% rename from app/boards/zhiayang/mikoto/arduino_pro_micro_pins_v6.dtsi rename to app/module/boards/zhiayang/mikoto/arduino_pro_micro_pins_v6.dtsi diff --git a/app/module/boards/zhiayang/mikoto/board.cmake b/app/module/boards/zhiayang/mikoto/board.cmake new file mode 100644 index 0000000000..73fa64a9aa --- /dev/null +++ b/app/module/boards/zhiayang/mikoto/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT + +board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") +include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) diff --git a/app/module/boards/zhiayang/mikoto/board.yml b/app/module/boards/zhiayang/mikoto/board.yml new file mode 100644 index 0000000000..d1f7155762 --- /dev/null +++ b/app/module/boards/zhiayang/mikoto/board.yml @@ -0,0 +1,14 @@ +board: + name: mikoto + vendor: zhiayang + revision: + format: major.minor.patch + default: 5.20.0 + exact: false + revisions: + - name: 5.20.0 + - name: 6.1.0 + - name: 6.3.0 + - name: 7.2.0 + socs: + - name: nrf52840 diff --git a/app/boards/zhiayang/mikoto/mikoto-pinctrl.dtsi b/app/module/boards/zhiayang/mikoto/mikoto-pinctrl.dtsi similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto-pinctrl.dtsi rename to app/module/boards/zhiayang/mikoto/mikoto-pinctrl.dtsi diff --git a/app/boards/zhiayang/mikoto/mikoto.dts b/app/module/boards/zhiayang/mikoto/mikoto.dts similarity index 82% rename from app/boards/zhiayang/mikoto/mikoto.dts rename to app/module/boards/zhiayang/mikoto/mikoto.dts index c2a82a47ce..e0ce24aa54 100644 --- a/app/boards/zhiayang/mikoto/mikoto.dts +++ b/app/module/boards/zhiayang/mikoto/mikoto.dts @@ -16,7 +16,6 @@ zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; - zmk,battery = &vbatt; }; leds { @@ -25,20 +24,6 @@ gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; }; }; - - // Node name must match original "EXT_POWER" label to preserve user settings. - EXT_POWER { - compatible = "zmk,ext-power-generic"; - control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; - init-delay-ms = <50>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-voltage-divider"; - io-channels = <&adc 1>; - output-ohms = <10000000>; - full-ohms = <(10000000 + 4000000)>; - }; }; ®1 { diff --git a/app/boards/zhiayang/mikoto/mikoto.yaml b/app/module/boards/zhiayang/mikoto/mikoto.yaml similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto.yaml rename to app/module/boards/zhiayang/mikoto/mikoto.yaml diff --git a/app/boards/zhiayang/mikoto/mikoto_5_20_0.overlay b/app/module/boards/zhiayang/mikoto/mikoto_5_20_0.overlay similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto_5_20_0.overlay rename to app/module/boards/zhiayang/mikoto/mikoto_5_20_0.overlay diff --git a/app/boards/zhiayang/mikoto/mikoto_6_1_0.overlay b/app/module/boards/zhiayang/mikoto/mikoto_6_1_0.overlay similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto_6_1_0.overlay rename to app/module/boards/zhiayang/mikoto/mikoto_6_1_0.overlay diff --git a/app/module/boards/zhiayang/mikoto/mikoto_7_2_0.conf b/app/module/boards/zhiayang/mikoto/mikoto_7_2_0.conf new file mode 100644 index 0000000000..8bf928868c --- /dev/null +++ b/app/module/boards/zhiayang/mikoto/mikoto_7_2_0.conf @@ -0,0 +1,2 @@ +CONFIG_I2C=y +CONFIG_ZMK_MAX17048=y diff --git a/app/boards/zhiayang/mikoto/mikoto_7_2_0.overlay b/app/module/boards/zhiayang/mikoto/mikoto_7_2_0.overlay similarity index 100% rename from app/boards/zhiayang/mikoto/mikoto_7_2_0.overlay rename to app/module/boards/zhiayang/mikoto/mikoto_7_2_0.overlay diff --git a/app/module/boards/zhiayang/mikoto/mikoto_defconfig b/app/module/boards/zhiayang/mikoto/mikoto_defconfig new file mode 100644 index 0000000000..17ef2da471 --- /dev/null +++ b/app/module/boards/zhiayang/mikoto/mikoto_defconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: MIT + +# Enable MPU +CONFIG_ARM_MPU=y +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y + diff --git a/app/boards/zhiayang/mikoto/pinmux.c b/app/module/boards/zhiayang/mikoto/pinmux.c similarity index 100% rename from app/boards/zhiayang/mikoto/pinmux.c rename to app/module/boards/zhiayang/mikoto/pinmux.c diff --git a/app/module/boards/zhiayang/mikoto/pre_dt_board.cmake b/app/module/boards/zhiayang/mikoto/pre_dt_board.cmake new file mode 100644 index 0000000000..d2d492264f --- /dev/null +++ b/app/module/boards/zhiayang/mikoto/pre_dt_board.cmake @@ -0,0 +1,8 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +# Suppresses duplicate unit-address warning at build time for power, clock, acl and flash-controller +# https://docs.zephyrproject.org/latest/build/dts/intro-input-output.html + +list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/app/module/zephyr/module.yml b/app/module/zephyr/module.yml index 219b2cfd20..70de6620d4 100644 --- a/app/module/zephyr/module.yml +++ b/app/module/zephyr/module.yml @@ -3,3 +3,4 @@ build: kconfig: Kconfig settings: dts_root: . + board_root: . diff --git a/app/run-ble-test.sh b/app/run-ble-test.sh index 8c65c91b69..f8e7053742 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 cd944c9a55..aa84ed69b9 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 diff --git a/docs/blog/2025-12-09-zephyr-4-1.md b/docs/blog/2025-12-09-zephyr-4-1.md index 6a6773465b..9608317b1c 100644 --- a/docs/blog/2025-12-09-zephyr-4-1.md +++ b/docs/blog/2025-12-09-zephyr-4-1.md @@ -8,6 +8,14 @@ We're happy to announce that after a long wait, ZMK's `main` branch is now runni +:::note + +The following changes have been made since this blog post was originally published: + +- The [move to `zmk` variants by default](https://github.com/zmkfirmware/zmk/pull/3145) for ZMK boards was documented. + +::: + Zephyr 4.1 is a large leap forward from our previous version of 3.5, featuring: - Support for lots of new SoCs, boards, and shields, such as the WCH CH32V003, the Raspberry Pi Pico 2, and [many many more](https://docs.zephyrproject.org/4.1.0/boards/index.html#boards). @@ -61,6 +69,12 @@ The following steps will get you building ZMK locally against Zephyr 4.1: From there, you should be ready to build as normal! +## ZMK Board Variant + +The new Zephyr version includes a [standard mechanism for extending boards](https://docs.zephyrproject.org/4.1.0/hardware/porting/board_porting.html#board-extensions) found in Zephyr (like the Seeeduino XIAO, or Raspberry Pi Pico) with new variants that include additional configuration/defaults that are relevant to the application. This also means the original "stock" board can still be used as is, if consumers don't want to use those customizations for any reason. + +As a result, all board definitions found in the ZMK tree now must be used with a `zmk` variant. For example, the previous board ID of `adv360pro_left` would now be `adv360pro_left/nrf52840/zmk`, which can be shortened to `adv360pro_left//zmk` since there's only one SoC on the board. + ## Board Revisions As part of this change, ZMK is now using board/shield revisions, rather than duplicate board/shield definitions. This means that instead of having e.g. `nice_nano`, and `nice_nano_v2`, we only have `nice_nano`, which by default points to the `2.0.0` revision. To point to the original Nice!Nano V1, you would need to use `nice_nano@1.0.0` where you would have previously used `nice_nano`. Of course, you could also put `nice_nano@2.0.0` if you wished to make that explicit, instead of merely replacing `nice_nano_v2` with `nice_nano`. Some boards, such as the `nrfmicro`, also have additional _board qualifiers_ such as the choice between multiple SoCs. Board qualifiers must always be specified, and do not have defaults. See [Zephyr's overview](https://docs.zephyrproject.org/4.1.0/hardware/porting/board_porting.html#board-terminology) for more information on board qualifiers. The below table provides an overview of some of the differences in in-tree boards we have in ZMK, and how they are selected in the new build system. The shorthand shows the minimum needed to build with a specific board, taking into account defaults. diff --git a/docs/docs/development/hardware-integration/lighting/underglow.md b/docs/docs/development/hardware-integration/lighting/underglow.md index d0d14a8543..605db261b2 100644 --- a/docs/docs/development/hardware-integration/lighting/underglow.md +++ b/docs/docs/development/hardware-integration/lighting/underglow.md @@ -11,7 +11,7 @@ See the documentation page on [pin control](../pinctrl.mdx) for detailed informa Shields written for boards which support RGB underglow should add a `boards/` folder underneath the shield folder. Inside this `boards/` folder, create a `.overlay` for any of the boards the shield can be used with. Place all hardware-specific configurations in these `.overlay` files. -For example: the `kyria` shield has a [`boards/nice_nano.overlay`](https://github.com/zmkfirmware/zmk/blob/main/app/boards/shields/kyria/boards/nice_nano.overlay) and a [`boards/nrfmicro_13.overlay`](https://github.com/zmkfirmware/zmk/blob/main/app/boards/shields/kyria/boards/nrfmicro_13.overlay), which configure a WS2812 LED strip for the `nice_nano` and `nrfmicro_13` boards respectively. +For example: the `kyria` shield has a [`boards/nice_nano_nrf52840_zmk.overlay`](https://github.com/zmkfirmware/zmk/blob/main/app/boards/shields/kyria/boards/nice_nano_nrf52840_zmk.overlay) and a [`boards/nrfmicro_nrf52840_zmk_1_3_0.overlay`](https://github.com/zmkfirmware/zmk/blob/main/app/boards/shields/kyria/boards/nrfmicro_nrf52840_zmk_1_3_0.overlay), which configure a WS2812 LED strip for the `nice_nano/nrf52840/zmk` and `nrfmicro@1.3.0/nrf52840/zmk` boards respectively. ### nRF52-Based Boards diff --git a/docs/docs/development/hardware-integration/pinctrl.mdx b/docs/docs/development/hardware-integration/pinctrl.mdx index edd882d9b3..f634cb1451 100644 --- a/docs/docs/development/hardware-integration/pinctrl.mdx +++ b/docs/docs/development/hardware-integration/pinctrl.mdx @@ -27,9 +27,8 @@ Pin control is always defined for a _board_, never for a shield: ```plaintext boards/shields/sofle/ ├── boards/ - │ ├── nice_nano.overlay - │ ├── nrfmicro_11.overlay - │ └── nrfmicro_13.overlay + │ ├── nice_nano_nrf52840_zmk.overlay + │ ├── nrfmicro_nrf52840_zmk_1_3_0.overlay └── ``` Note that you will need to define a separate overlay _for each_ of the boards to be used with the shield. diff --git a/docs/docs/hardware.mdx b/docs/docs/hardware.mdx index 84d16908fa..8611f94bb6 100644 --- a/docs/docs/hardware.mdx +++ b/docs/docs/hardware.mdx @@ -44,6 +44,12 @@ With the solid technical foundation of Zephyr™ RTOS, ZMK can support a wide di including but not limited to Nordic nRF52, Raspberry Pi RP2040/RP2350, most ST STM32 MCUs, and Microchip SAMD21. That being said, there are specific [boards / shields](development/hardware-integration/index.mdx#boards--shields) that have been implemented and tested by the ZMK contributors, listed below. +:::note + +With the [upgrade to Zephyr 4.1](/blog/2025/12/09/zephyr-4-1#zmk-board-variant), the ZMK project has moved all in-tree boards to use a `zmk` [board variant](https://docs.zephyrproject.org/4.1.0/glossary.html#term-variant), for consistency when distinguishing from stock boards that are actually in upstream Zephyr. + +::: + {/* prettier-ignore */}