# Copyright (c), 2022 Nordic Semiconductor ASA
# SPDX -License-Identifier: Apache-2.0

description: |
  Nordic nPM6001 PMIC

  The PMIC has four buck converters and two LDOs. All need to be defined as
  children nodes, strictly following the BUCK0..3, LDO0..1 node names. For
  example:

  pmic@70 {
    reg = <0x70>;
    ...
    regulators {
      compatible = "nordic,npm6001-regulator";

      BUCK0 {
        /* all properties for BUCK0 */
      };
      BUCK1 {
        /* all properties for BUCK1 */
      };
      BUCK2 {
        /* all properties for BUCK2 */
      };
      BUCK3 {
        /* all properties for BUCK3 */
      };
      LDO0 {
        /* all properties for LDO0 */
      };
      LDO1 {
        /* all properties for LDO1 */
      };
    };
  };

compatible: "nordic,npm6001-regulator"

include: base.yaml

child-binding:
  include:
    - name: regulator.yaml
      property-allowlist:
        - regulator-always-on
        - regulator-boot-on
        - regulator-max-microamp
        - regulator-min-microvolt
        - regulator-max-microvolt
        - regulator-allowed-modes
        - regulator-initial-mode
