From b1c89847e260c330c405a08f069e1df1f7fb04d7 Mon Sep 17 00:00:00 2001 From: Peter Johanson Date: Tue, 6 Jan 2026 23:21:57 -0700 Subject: [PATCH] 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`. --- .../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 ++--- ...rlay => bluemicro840_nrf52840_zmk.overlay} | 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 ++++++ 17 files changed, 90 insertions(+), 26 deletions(-) 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/shields/nice_view_adapter/boards/{bluemicro840_v1.overlay => bluemicro840_nrf52840_zmk.overlay} (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 diff --git a/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 b/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 index da3774d7c..c1f1d0a26 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 10afcbf1f..7b1d84529 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 000000000..e36be9125 --- /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 0a9ebdd5d..4341c04fa 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/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/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 000000000..fd2a9143e --- /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 6c4e8ced7..fe32d9522 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 000000000..c36eee0c9 --- /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 000000000..5b1400889 --- /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 000000000..73fa64a9a --- /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 000000000..0a9ebdd5d --- /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 000000000..b0c27aa5d --- /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")