From 6f17d9c5d5aea5aa1b8101640665e2fa2e0b14be Mon Sep 17 00:00:00 2001
From: Peter Johanson <peter@peterjohanson.com>
Date: Tue, 12 Sep 2023 19:47:41 -0700
Subject: [PATCH] refactor(boards): Move puchi_ble to power domains

* Set a chosen `zmk,default-power-domain`
* Enable the relevant Kconfig settings for PDs.
---
 app/boards/arm/puchi_ble/Kconfig.board            |  2 ++
 .../arm/puchi_ble/arduino_pro_micro_pins.dtsi     |  2 ++
 app/boards/arm/puchi_ble/puchi_ble_v1.dts         | 15 +++++++++++++--
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/app/boards/arm/puchi_ble/Kconfig.board b/app/boards/arm/puchi_ble/Kconfig.board
index 0f5b7f96..7cf705ad 100644
--- a/app/boards/arm/puchi_ble/Kconfig.board
+++ b/app/boards/arm/puchi_ble/Kconfig.board
@@ -5,4 +5,6 @@
 
 config BOARD_PUCHI_BLE_v1
     bool "puchi_ble_v1"
+    imply ZMK_POWER_DOMAINS
+    imply ZMK_POWER_DOMAINS_DYNAMIC_DEFAULT
     depends on SOC_NRF52840_QIAA
diff --git a/app/boards/arm/puchi_ble/arduino_pro_micro_pins.dtsi b/app/boards/arm/puchi_ble/arduino_pro_micro_pins.dtsi
index 3037ea3e..84ae136e 100644
--- a/app/boards/arm/puchi_ble/arduino_pro_micro_pins.dtsi
+++ b/app/boards/arm/puchi_ble/arduino_pro_micro_pins.dtsi
@@ -57,3 +57,5 @@ pro_micro_d: &pro_micro {};
 pro_micro_i2c: &i2c0 {};
 pro_micro_spi: &spi0 {};
 pro_micro_serial: &uart0 {};
+
+pro_micro_power_domain: &core_power_domain {};
\ No newline at end of file
diff --git a/app/boards/arm/puchi_ble/puchi_ble_v1.dts b/app/boards/arm/puchi_ble/puchi_ble_v1.dts
index 9f3194e0..de1281ec 100644
--- a/app/boards/arm/puchi_ble/puchi_ble_v1.dts
+++ b/app/boards/arm/puchi_ble/puchi_ble_v1.dts
@@ -6,7 +6,6 @@
 
 /dts-v1/;
 #include <nordic/nrf52840_qiaa.dtsi>
-#include "arduino_pro_micro_pins.dtsi"
 #include "puchi_ble_v1-pinctrl.dtsi"
 
 / {
@@ -18,6 +17,7 @@
         zephyr,sram = &sram0;
         zephyr,flash = &flash0;
         zmk,battery = &vbatt;
+        zmk,default-power-domain = &core_power_domain;
     };
 
     leds {
@@ -33,6 +33,14 @@
         control-gpios = <&gpio1 9 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 = <&gpio1 9 GPIO_ACTIVE_LOW>;
+        zephyr,pm-device-runtime-auto;
+    };
+
     vbatt: vbatt {
         compatible = "zmk,battery-voltage-divider";
         io-channels = <&adc 2>;
@@ -79,7 +87,7 @@ zephyr_udc0: &usbd {
 &flash0 {
     /*
      * For more information, see:
-     * http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
+     * http: //docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
      */
     partitions {
         compatible = "fixed-partitions";
@@ -111,3 +119,6 @@ zephyr_udc0: &usbd {
         };
     };
 };
+
+// Included at the end to ensure the power domain DTS node exists
+#include "arduino_pro_micro_pins.dtsi"