[PATCH v3 00/14] Support ROHM Scalable PMIC family

Matti Vaittinen
2025-04-08T08:40:34Z

[-- Attachment #1: Type: text/plain, Size: 4421 bytes --]

Support ROHM BD96802, BD96805 and BD96806 PMICs

The ROHM BD96801 [1] and BD96805 [2] are almost identical PMICs what comes
to the digital interface. Main difference is voltage tuning range.
Supporting BD96805 with BD96801 drivers is mostly just a matter of being
able to differentiate the PMICs (done based on the devicetree
compatible) and then providing separate voltage tables.

The ROHM BD96802 [3] is a companion PMIC which is intended to be used to
provide more capacity on systems where the BD96801 alone is not
sufficient. Startup sequence of these PMICs can be synchronized in
hardware level, and there seems to be some mechanisms which allow
delivering the companion PMIC (BD96802) status to the main PMIC
(BD96801/BD96805). This patch series does treat the companion PMIC(s) as
individual PMICs and allows using them from software point of view as a
stand alone ICs. From the digital point of view, the BD96802 is a subset
of BD96801, providing only buck1 and buck2 regulators. Please see the
data sheet

The ROHM BD96806 [4] is similar to the BD96802, except that it does also
provide different voltage tuning ranges.

This series adds basic voltage monitoring and control as well as a
watchdog support for these PMICs using the BD96801 drivers.

Similarly to the BD96801, these PMICs too have a few configurations
which can only be done when the PMIC is in STBY state. Similarly to the
BD96801, doing these configurations isn't supported by the driver. The
original BD96801 RFC [5] driver should be able to cover those
configurations, if modified to support these models.

[1]: ROHM BD96801 data sheet:
https://fscdn.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator_system/product_brief_bd96801qxx-c-e.pdf
[2]: ROHM BD96805 data sheet:
https://fscdn.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator_system/product_brief_bd96805qxx-c-e.pdf
[3]: ROHM BD96802 data sheet:
https://fscdn.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator_system/product_brief_bd96802qxx-c-e.pdf
[4]: ROHM BD96806 data sheet:
https://fscdn.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator_system/product_brief_bd96806qxx-c-e.pdf
[5]: Original BD96801 RFC:
https://lore.kernel.org/all/cover.1712058690.git.mazziesaccount@gmail.com/

Revision history:
v2 => v3:
- Fix BD96806 voltages
- Use defines for voltages to ease spotting (copy-paste) errors in
regulator descs
- Use lowercase node names in the BD96802 dt-binding
v1 => v2: MFD driver changes after review by Lee
- Use enum for chip type instead of picking the data directly from the
of_match_data.
- rename "chip data" variable 'cd' to more widely used 'ddata'.
link to v1:
https://lore.kernel.org/all/cover.1741864404.git.mazziesaccount@gmail.com/

Matti Vaittinen (14):
dt-bindings: regulator: Add ROHM BD96802 PMIC
dt-bindings: mfd: Add ROHM BD96802 PMIC
dt-bindings: mfd: bd96801: Add ROHM BD96805
dt-bindings: mfd: bd96802: Add ROHM BD96806
mfd: rohm-bd96801: Add chip info
mfd: bd96801: Drop IC name from the regulator IRQ resources
regulator: bd96801: Drop IC name from the IRQ resources
mfd: rohm-bd96801: Support ROHM BD96802
regulator: bd96801: Support ROHM BD96802
mfd: bd96801: Support ROHM BD96805
regulator: bd96801: Support ROHM BD96805 PMIC
mfd: bd96801: Support ROHM BD96806
regulator: bd96801: Support ROHM BD96806 PMIC
MAINTAINERS: Add BD96802 specific header

.../bindings/mfd/rohm,bd96801-pmic.yaml | 10 +-
.../bindings/mfd/rohm,bd96802-pmic.yaml | 101 ++++
.../regulator/rohm,bd96802-regulator.yaml | 44 ++
MAINTAINERS | 1 +
drivers/mfd/rohm-bd96801.c | 565 ++++++++++++++----
drivers/regulator/bd96801-regulator.c | 455 ++++++++++++--
include/linux/mfd/rohm-bd96801.h | 2 +
include/linux/mfd/rohm-bd96802.h | 74 +++
include/linux/mfd/rohm-generic.h | 3 +
9 files changed, 1073 insertions(+), 182 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd96802-pmic.yaml
create mode 100644 Documentation/devicetree/bindings/regulator/rohm,bd96802-regulator.yaml
create mode 100644 include/linux/mfd/rohm-bd96802.h

base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8
--
2.49.0