From 15e7c43ec0bb1df20df52464c8cd154d50b995df Mon Sep 17 00:00:00 2001 From: Peter Johanson Date: Mon, 24 Apr 2023 07:58:23 +0000 Subject: [PATCH] refactor(boards): Move nice!nano to power domains * Set a chosen `zmk,default-power-domain` * Enable the relevant Kconfig settings for PDs. --- app/boards/arm/nice_nano/Kconfig.board | 4 ++ .../arm/nice_nano/arduino_pro_micro_pins.dtsi | 61 ++++++++++--------- app/boards/arm/nice_nano/nice_nano.dts | 13 ++-- app/boards/arm/nice_nano/nice_nano.dtsi | 1 - app/boards/arm/nice_nano/nice_nano_v2.dts | 14 +++-- 5 files changed, 54 insertions(+), 39 deletions(-) diff --git a/app/boards/arm/nice_nano/Kconfig.board b/app/boards/arm/nice_nano/Kconfig.board index 8dd16512..969bc058 100644 --- a/app/boards/arm/nice_nano/Kconfig.board +++ b/app/boards/arm/nice_nano/Kconfig.board @@ -5,9 +5,13 @@ config BOARD_NICE_NANO bool "nice!nano" + imply ZMK_POWER_DOMAINS + imply ZMK_POWER_DOMAINS_DYNAMIC_DEFAULT depends on SOC_NRF52840_QIAA config BOARD_NICE_NANO_V2 bool "nice!nano v2" + imply ZMK_POWER_DOMAINS + imply ZMK_POWER_DOMAINS_DYNAMIC_DEFAULT depends on SOC_NRF52840_QIAA diff --git a/app/boards/arm/nice_nano/arduino_pro_micro_pins.dtsi b/app/boards/arm/nice_nano/arduino_pro_micro_pins.dtsi index 2c257ef0..115c0cc5 100644 --- a/app/boards/arm/nice_nano/arduino_pro_micro_pins.dtsi +++ b/app/boards/arm/nice_nano/arduino_pro_micro_pins.dtsi @@ -11,25 +11,25 @@ gpio-map-mask = <0xffffffff 0xffffffc0>; gpio-map-pass-thru = <0 0x3f>; gpio-map - = <0 0 &gpio0 8 0> /* D0 */ - , <1 0 &gpio0 6 0> /* D1 */ - , <2 0 &gpio0 17 0> /* D2 */ - , <3 0 &gpio0 20 0> /* D3 */ - , <4 0 &gpio0 22 0> /* D4/A6 */ - , <5 0 &gpio0 24 0> /* D5 */ - , <6 0 &gpio1 0 0> /* D6/A7 */ - , <7 0 &gpio0 11 0> /* D7 */ - , <8 0 &gpio1 4 0> /* D8/A8 */ - , <9 0 &gpio1 6 0> /* D9/A9 */ - , <10 0 &gpio0 9 0> /* D10/A10 */ - , <16 0 &gpio0 10 0> /* D16 */ - , <14 0 &gpio1 11 0> /* D14 */ - , <15 0 &gpio1 13 0> /* D15 */ - , <18 0 &gpio1 15 0> /* D18/A0 */ - , <19 0 &gpio0 2 0> /* D19/A1 */ - , <20 0 &gpio0 29 0> /* D20/A2 */ - , <21 0 &gpio0 31 0> /* D21/A3 */ - ; + = <0 0 &gpio0 8 0> /* D0 */ + , <1 0 &gpio0 6 0> /* D1 */ + , <2 0 &gpio0 17 0> /* D2 */ + , <3 0 &gpio0 20 0> /* D3 */ + , <4 0 &gpio0 22 0> /* D4/A6 */ + , <5 0 &gpio0 24 0> /* D5 */ + , <6 0 &gpio1 0 0> /* D6/A7 */ + , <7 0 &gpio0 11 0> /* D7 */ + , <8 0 &gpio1 4 0> /* D8/A8 */ + , <9 0 &gpio1 6 0> /* D9/A9 */ + , <10 0 &gpio0 9 0> /* D10/A10 */ + , <16 0 &gpio0 10 0> /* D16 */ + , <14 0 &gpio1 11 0> /* D14 */ + , <15 0 &gpio1 13 0> /* D15 */ + , <18 0 &gpio1 15 0> /* D18/A0 */ + , <19 0 &gpio0 2 0> /* D19/A1 */ + , <20 0 &gpio0 29 0> /* D20/A2 */ + , <21 0 &gpio0 31 0> /* D21/A3 */ + ; }; pro_micro_a: connector_a { @@ -38,16 +38,16 @@ gpio-map-mask = <0xffffffff 0xffffffc0>; gpio-map-pass-thru = <0 0x3f>; gpio-map - = <0 0 &gpio1 15 0> /* D18/A0 */ - , <1 0 &gpio0 2 0> /* D19/A1 */ - , <2 0 &gpio0 29 0> /* D20/A2 */ - , <3 0 &gpio0 31 0> /* D21/A3 */ - , <6 0 &gpio0 22 0> /* D4/A6 */ - , <7 0 &gpio1 0 0> /* D6/A7 */ - , <8 0 &gpio1 4 0> /* D8/A8 */ - , <9 0 &gpio1 6 0> /* D9/A9 */ - , <10 0 &gpio0 9 0> /* D10/A10 */ - ; + = <0 0 &gpio1 15 0> /* D18/A0 */ + , <1 0 &gpio0 2 0> /* D19/A1 */ + , <2 0 &gpio0 29 0> /* D20/A2 */ + , <3 0 &gpio0 31 0> /* D21/A3 */ + , <6 0 &gpio0 22 0> /* D4/A6 */ + , <7 0 &gpio1 0 0> /* D6/A7 */ + , <8 0 &gpio1 4 0> /* D8/A8 */ + , <9 0 &gpio1 6 0> /* D9/A9 */ + , <10 0 &gpio0 9 0> /* D10/A10 */ + ; }; }; @@ -55,3 +55,6 @@ pro_micro_d: &pro_micro {}; pro_micro_i2c: &i2c0 {}; pro_micro_spi: &spi1 {}; pro_micro_serial: &uart0 {}; + +pro_micro_power_domain: &core_power_domain {}; + diff --git a/app/boards/arm/nice_nano/nice_nano.dts b/app/boards/arm/nice_nano/nice_nano.dts index 06be88e1..96d39c54 100644 --- a/app/boards/arm/nice_nano/nice_nano.dts +++ b/app/boards/arm/nice_nano/nice_nano.dts @@ -10,12 +10,15 @@ / { chosen { zmk,battery = &vbatt; + zmk,default-power-domain = &core_power_domain; }; - // 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_LOW>; + core_power_domain: core_power_domain { + compatible = "power-domain-gpio", "power-domain"; + startup-delay-us = <50000>; + off-on-delay-us = <50000>; + enable-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; + zephyr,pm-device-runtime-auto; }; vbatt: vbatt { @@ -25,3 +28,5 @@ full-ohms = <(2000000 + 806000)>; }; }; + +#include "arduino_pro_micro_pins.dtsi" diff --git a/app/boards/arm/nice_nano/nice_nano.dtsi b/app/boards/arm/nice_nano/nice_nano.dtsi index 839845c8..168169b3 100644 --- a/app/boards/arm/nice_nano/nice_nano.dtsi +++ b/app/boards/arm/nice_nano/nice_nano.dtsi @@ -6,7 +6,6 @@ #include #include "nice_nano-pinctrl.dtsi" -#include "arduino_pro_micro_pins.dtsi" / { model = "nice!nano"; diff --git a/app/boards/arm/nice_nano/nice_nano_v2.dts b/app/boards/arm/nice_nano/nice_nano_v2.dts index c4f7a821..f6719681 100644 --- a/app/boards/arm/nice_nano/nice_nano_v2.dts +++ b/app/boards/arm/nice_nano/nice_nano_v2.dts @@ -10,16 +10,20 @@ / { chosen { zmk,battery = &vbatt; + zmk,default-power-domain = &core_power_domain; }; - // 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>; + core_power_domain: core_power_domain { + compatible = "power-domain-gpio", "power-domain"; + startup-delay-us = <50000>; + off-on-delay-us = <50000>; + enable-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; + zephyr,pm-device-runtime-auto; }; vbatt: vbatt { compatible = "zmk,battery-nrf-vddh"; }; }; + +#include "arduino_pro_micro_pins.dtsi"