PMIC1300 turn BUCK1 on/off in firmware

I have a device with 3 major components:

  1. Fanstel nrf52840
  2. PMIC1300
  3. spi display (Waveshare 2.13inch E-Ink Display)

PMIC:

  1. BUCK1: power Fanstel
  2. BUCK2: power display
  3. I'm not using the LDO's

I would like to control power to the display. Normally I would put a MOSFET on the ground line of the display and control the gate with a gpio.

Instead of a MOSFET, can I turn BUCK2 on and off in firmware to control power to the display? Any examples?

/*
 * Copyright (c) 2023 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */

 / {
	/* The timer instance to use. */
	chosen {
		ncs,dm-timer = &timer2;
	};

	/* The selected pins will be used by Distance Measurement module for debug purposes. */
	dm_gpio {
		compatible = "gpio-leds";
		dm_ranging: dm-ranging {
			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
			label = "DM Ranging Pin";
		};
		dm_add_request: dm-add-request {
			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
			label = "DM Add request Pin";
		};
	};

	// &gpio0 10 (and &gpio0 9) causes ASSERTION FAIL???
    dm_leds {
        compatible = "gpio-leds";
        dm_led0: dm-led0 {
            gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
            label = "GDM Test LED";
        };
    };
};

/*
* Copyright (C) 2023 Nordic Semiconductor ASA
* SPDX-License-Identifier: Apache-2.0
*/

#include <dt-bindings/regulator/npm1300.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>

&arduino_i2c {
   npm1300_ek_pmic: pmic@6b {
       compatible = "nordic,npm1300";
       reg = <0x6b>;
       
		// long-press-reset = "one_button";
		// ship-to-active-time = <96>;

       npm1300_ek_gpio: gpio-controller {
           compatible = "nordic,npm1300-gpio";
           gpio-controller;
           #gpio-cells = <2>;
           ngpios = <5>;
       };

       npm1300_ek_regulators: regulators {
           compatible = "nordic,npm1300-regulator";

			npm1300_ek_buck1: BUCK1 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				// regulator-init-microvolt =  <3000000>;
				regulator-init-microvolt =  <3300000>;
				retention-microvolt = <3300000>;
			};

			npm1300_ek_buck2: BUCK2 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3400000>;
				// regulator-init-microvolt =  <1800000>;
				regulator-init-microvolt =  <3300000>;
				retention-microvolt = <3300000>;
			};
			
			// npm1300_ek_ldo1: LDO1 {
			// 	regulator-min-microvolt = <1000000>;
			// 	regulator-max-microvolt = <3300000>;
				
			// 	regulator-initial-mode = <NPM1300_LDSW_MODE_LDSW>;
			// 	// soft-start-microamp = <20000>;
			// };

			// npm1300_ek_ldo2: LDO2 {
			// 	regulator-min-microvolt = <1000000>;
			// 	regulator-max-microvolt = <3300000>;
				
			// 	regulator-initial-mode = <NPM1300_LDSW_MODE_LDSW>;
			// 	// soft-start-microamp = <20000>;
			// };
		};

		npm1300_ek_charger: charger {
			compatible = "nordic,npm1300-charger";
			term-microvolt = <4100000>;
			term-warm-microvolt = <4200000>;
			// term-current-percent = <10>;
			current-microamp = <100000>;
			// trickle-microvolt = <2500000>;
			dischg-limit-microamp = <1340000>;
			vbus-limit-microamp = <500000>;
			thermistor-ohms = <10000>;
			thermistor-beta = <3380>;
			// disable-recharge;
			charging-enable;
		};

		npm1300_ek_leds: leds {
			compatible = "nordic,npm1300-led";
			nordic,led0-mode = "error";    
			nordic,led1-mode = "charging";    
			nordic,led2-mode = "host";
		};
   };
};
&arduino_header {
	gpio-map = <0 0 &gpio0 3 0>,
			   <1 0 &gpio0 4 0>,
			   <2 0 &gpio0 28 0>,
			   <3 0 &gpio0 29 0>,
			   <4 0 &gpio0 30 0>,
			   <5 0 &gpio0 31 0>,
			   <6 0 &gpio1 1 0>,
			   <7 0 &gpio1 2 0>,
			   <8 0 &gpio1 3 0>,
			   <9 0 &gpio1 4 0>,
			   <10 0 &gpio1 5 0>,
			   <11 0 &gpio1 6 0>,
			   <12 0 &gpio1 7 0>,
			   <13 0 &gpio1 8 0>,
			   <14 0 &gpio1 10 0>,
			   <15 0 &gpio1 11 0>,
			   <16 0 &gpio1 12 0>,
			   <17 0 &gpio1 13 0>,
			   <18 0 &gpio1 14 0>,
			   <19 0 &gpio1 15 0>,
			   <20 0 &gpio0 26 0>,
			   <21 0 &gpio0 27 0>;
};

/* npm1300_fule_guage */
&i2c0_default {
	group1 {
		bias-pull-up;
	};
};

Related