Rohm power management IC drivers for Linux kernel.
This project is maintained by RohmSemiconductor
The ROHM BD96801 “Scalable PMIC” is an automotive grade PMIC which can scale to different applications by allowing chaining of PMICs. BD96801 provides 4 BUCK regulators and 3 LDOs with configurable start-up sequences, voltages, and safety limits. A watchdog is also included. For companion PMIC used together with BD96801 see BD96802
Limited version of the BD96801 Linux driver has been merged to the Linuxv6.11-rc1. This version does not support handling of ERRB IRQs or doing the configuration which requires the PMIC to be in STBY state. Upstreaming support for the ERRB IRQ handling is still in progress.
An early RFC Series which was sent to the upstream Linux kernel community did implement the STBY configurations and ERRB IRQs. The RFC solution has some severe limitations which must be handled by anyone intending to use the code. (For example, ensuring the PMIC stays in STBY when STBY-only configurations are applied to the PMIC). The RFC series can be used as a basis for a custom driver if STBY-configuration is to be needed.
Configuration options one may want to enable for kernel build are:
- CONFIG_MFD_ROHM_BD96801
- CONFIG_REGULATOR_BD96801
- CONFIG_BD96801_WATCHDOG
config | description | subsystem |
---|---|---|
CONFIG_MFD_ROHM_BD96801 | Enables the MFD core driver which handles interrupts and bus access. The core driver also launches the sub device drivers. | mfd |
CONFIG_REGULATOR_BD96801 | Enables the regulator driver which allows the kernel to control PMIC’s regulatos. | regulator |
CONFIG_BD96801_WATCHDOG | Enables the watchdog driver which allows detecting system hang-up and performs an emergency reset to recover from hang-up. | watchdog |
Please use the regular upstream maintenance information for support. The maintenance information can be found from the linux MAINTAINERS file. You can read the MAINTAINERS manually or use the get_maintainer.pl. See why support via upstream for reason.
There were two initial reference design releases but one is dropped. The functionality provided by the downstream ‘simple driver’ is already supported by the better maintained upstream driver. Please us it instead.
Please note that these drivers are intended to be used as a reference design only. No warranty is given and feasibility for target setup must be verified. Drivers are also not fully tested and bugs may be hiding. Evaluate at your own risk.
This patch series brings initial and experimental support for configuring voltages and safety limits on Linux system. Also a driver for watchdog feeding is included.
The most notable limitation of the linux driver is the inability to control the PMIC state. Most of the configurations can only be done when the BD96801 is in STBY state, and this driver fails to do those configurations when the PMIC is in any other state. These configurations include:
If the control support for STANDBY-only configurations provided by this driver are needed, then it is best to implement the STBY-line handling in this driver to ensure the PMIC is in STBY state when the driver is starting-up. This requires the ‘ALWAYS_ON’ registers to be preprogrammed so that power-rails required by the processor running Linux and this driver are enabled when PMIC is in STBY. Ensuring this configuration and adding the STBY-line handling are not implemented in this driver. User converting this reference driver to a real production driver must take care of it.
The driver supports the basic control of BUCKs and LDOs and configuring Over/Under-voltage, over-current, over-temperature protections via device-tree. Following constrains are worth noting:
The version 001 is tagged in our Linux git tree as tag bd96801-experimental-v001.
This driver has support for
For the downstream reference driver, please see the bug-tracker for bd96801 Linux drivers related known issues. If you encounter a bug which is not known - feel free to report it - thanks!