dt-bindings: mfd: ROHM BD73800 PMIC

The ROHM BD73800 is a power management IC which integrates 8 BUCKs and 4
LDOs. There is also an ADC and operation amplifier intended for current
/ temperature measurement and accumulation. RTC and 32.768 kHz clock
gate are also included. The PMIC can be customized via OTP and it has
options for operating as a main PMIC in multi-PMIC installation. Some
of the pins can also be used for GPO or GPI (including interrupt support).

There are also ROHM BD71851 and BD71885 PMICs out there. These are, from
the SW-perspective, similar to the BD73800. There is only some different
default values and OTP settings. The driver should be able to handle them
just fine.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/2bf2278e66e106aa9550ffc43197441182388572.1789538455.git.mazziesaccount@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Matti Vaittinen 2026-09-16 09:08:47 +03:00 committed by Lee Jones
parent f08afff0dd
commit 579eae348f

View File

@ -0,0 +1,218 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/rohm,bd73800-pmic.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ROHM BD73800 Power Management Integrated Circuit
maintainers:
- Matti Vaittinen <mazziesaccount@gmail.com>
description:
BD73800GW is a single-chip power management IC for battery-powered
portable devices. It integrates 8 buck converters, 4 LDOs and a current
sense amplifier with ADC. Also included is a Real Time Clock (RTC) and a
32.768 kHz clock gate. Depending on the OTP configuration the BD73800
may also have interrupt controller and GPIOs.
There are also different variants called BD71851 and BD71885 which are
almost identical from the software point of view.
allOf:
- $ref: rohm,pmic-pins.yaml#
properties:
compatible:
oneOf:
- const: rohm,bd73800
- items:
- enum:
- rohm,bd71851
- rohm,bd71885
- const: rohm,bd73800
reg:
maxItems: 1
interrupts:
maxItems: 1
# The GPIO1, CLKOUT (GPIO2), FAULT_B and EXTEN_OUT pins can be
# configured to interrupt pins by OTP.
interrupt-controller: true
"#interrupt-cells":
const: 1
description:
The IRQ number. 0 is GPIO1, 1 CLKOUT (GPIO2), 2 FAULT_B and 3 EXTEN_OUT.
NOTE, A pin can operate as IRQ source only when the OTP
configuration for it has been set to GPI.
gpio-controller: true
"#gpio-cells":
const: 2
rohm,pin-gpio1:
$ref: /schemas/types.yaml#/definitions/string
description:
Indicate if the GPIO1 pin has been set to GPI or GPO at manufacturing.
The GPIO1, CLKOUT, FAULT_B and EXTEN_OUT pins may be configured for a
specific purpose (like ADC input, 32.768 clk output, fault indicator or
delivering power sequence to a companion PMIC when multiple PMICs are
used) - but also to be either a GPO or GPI. (When used as a GPI the pin
can also be used as an IRQ source). The pin purpose is determined by
OTP (One Time Programmable memory), typically during device
manufacturing. The OTP can't be read at runtime so device-tree should
describe the GPIO pins.
enum: [gpi, gpo]
rohm,pin-clkout:
enum: [gpi, gpo]
rohm,pin-fault_b:
enum: [gpi, gpo]
rohm,pin-exten:
enum: [gpi, gpo]
clocks:
description:
The CLKOUT pin may have its purpose overridden by OTP configuration. It
is possible the BD73800 does not output a clock signal. Hence the clk
properties are optional.
maxItems: 1
"#clock-cells":
const: 0
clock-output-names:
maxItems: 1
rohm,clkout-open-drain: true
regulators:
$ref: /schemas/regulator/rohm,bd73800-regulator.yaml
description:
List of child nodes that specify the regulators.
required:
- compatible
- reg
- interrupts
- regulators
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/leds/common.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic: pmic@4b {
compatible = "rohm,bd73800";
reg = <0x4b>;
interrupt-parent = <&gpio1>;
interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
clocks = <&osc 0>;
#clock-cells = <0>;
clock-output-names = "bd73800-32k-out";
gpio-controller;
#gpio-cells = <2>;
rohm,pin-gpio1 = "gpo";
rohm,pin-exten = "gpi";
regulators {
buck1: buck1 {
regulator-name = "buck1";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <2000000>;
regulator-always-on;
regulator-ramp-delay = <1250>;
rohm,dvs-run-voltage = <1150000>;
rohm,dvs-suspend-voltage = <950000>;
};
buck2: buck2 {
regulator-name = "buck2";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <2000000>;
regulator-always-on;
regulator-ramp-delay = <1250>;
rohm,dvs-run-voltage = <1150000>;
rohm,dvs-suspend-voltage = <950000>;
};
buck3: buck3 {
regulator-name = "buck3";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <2700000>;
rohm,dvs-run-voltage = <1150000>;
rohm,dvs-idle-voltage = <1100000>;
rohm,dvs-suspend-voltage = <950000>;
regulator-always-on;
};
buck4: buck4 {
regulator-name = "buck4";
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1850000>;
regulator-always-on;
};
buck5: buck5 {
regulator-name = "buck5";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
buck6: buck6 {
regulator-name = "buck6";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
buck7: buck7 {
regulator-name = "buck7";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
buck8: buck8 {
regulator-name = "buck8";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1300000>;
regulator-always-on;
};
ldo1: ldo1 {
regulator-name = "ldo1";
rohm,ldo-range-high;
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
ldo2: ldo2 {
regulator-name = "ldo2";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
ldo3: ldo3 {
regulator-name = "ldo3";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
ldo4: ldo4 {
regulator-name = "ldo4";
regulator-min-microvolt = <650000>;
regulator-max-microvolt = <1750000>;
regulator-always-on;
};
};
};
};