PMIC hardware components

Stable: 13.07.2023 - 06:23 / Revision: 13.07.2023 - 06:22

I am here to prevent the first-page-empty bug!


Template:ArticleMainWriter Template:ArticleApprovedVersion


1 Article purpose

The purpose of this article is to:

  • list the PMIC hardware components that might be integrated in the different boards
  • link these components to the corresponding software framework(s)
  • point to the datasheet(s) of these components
  • explain, when necessary, how to configure these components.

2 Software frameworks

Internal peripherals software table template

| PMIC
| STPMIC1
| OP-TEE overview
| Regulator overview  Watchdog overview
| 
|
|-
|}

3 STPMIC1

3.1 Description

The STPMIC1 is a device that handles the power supplies for some STM32MP boards. The STPMIC1 main features are:

  • configuration via I²C bus,
  • 10 regulators of different kinds with over-current protection,
  • 3 power switches for USB supplies,
  • a power-on key input,
  • a watchdog,
  • a thermal protection,
  • a NORMAL mode and an ALTERNATE mode that is used for system suspend.

The user manual is available here: NOT YET AVAILABLE

3.2 Support in Linux Kernel

The STPMIC1 driver is used to handle STPMIC1 Power Management Integrated Circuit (PMIC). The driver is composed of several parts:

  • The core driver
  • The regulator driver
  • The watchdog driver
  • The input driver

The thermal feature is not supported.

3.2.1 Core driver

The core implements the Multi-Function Devices Framework API.

  • It is probed by the I²C framework.
  • It handles communication with the PMIC via I²C.
  • It probes the others STPMIC1 drivers (input, watchdog....).
  • It acts as an interrupt controller for the other drivers.

Source code:

 include/linux/mfd/stpmic1.h  
 drivers/mfd/stpmic1.c  


Bindings are described in:

 Documentation/devicetree/bindings/mfd/stpmic1.txt 

3.2.2 Regulator driver

The driver implements the Regulator framework API

  • Each BUCK, LDO or POWER SWITCH inside the STPMIC1 device is presented as a voltage regulator.
  • Power switches are presented as fixed voltage sources. Voltage can not be set.
  • The driver does not handle the suspend configuration. This is done by the Secure Monitor.

Source code:

 drivers/regulator/stpmic1_regulator.c  

Bindings are described in:

 Documentation/devicetree/bindings/regulator/stpmic1-regulator.txt 

3.2.3 Watchdog driver

The driver implements the Watchdog framework API

When enabled, a watchdog device is available for the user-land. As soon as a user has started to write in the watchdog it is armed in the PMIC. When the watchdog timer expires, the PMIC shuts down.

Source code:

 drivers/watchdog/stpmic1_wdt.c  

Bindings are described in:

 Documentation/devicetree/bindings/watchdog/stpmic1-wdt.txt 

3.2.4 Input driver

The driver implements the Input framework API.

The driver exposes a single key (KEY_POWER) that can be used as any standard input device in /dev/input/eventX

Source code:

 drivers/input/misc/stpmic1_onkey.c 

Bindings are described in:

 Documentation/devicetree/bindings/input/stpmic1-onkey.txt 

3.2.5 Kernel Configuration

With kernel menuconfig, enable following configurations:

  • core part: MFD_STPMIC1
  • regulator: REGULATOR_STPMIC1
  • watchdog: STPMIC1_WATCHDOG
  • input: INPUT_STPMIC1_ONKEY

3.3 Support in U-BOOT

STPMIC1 is used by U-Boot to:

  • Control regulators used by other drivers (mmc-supply for SDCard for example, usb vbus)
  • Trace pmic startup reason

STMPIC is supported with existing uclass of the 'Driver Model' described in doc/driver-model/pmic-framework.txt .

The STPMIC1 is available with the existing commands:

  • pmic (CONFIG_CMD_PMIC)
  • regulator (CONFIG_CMD_REGULATOR)
  • poweroff (CONFIG_CMD_POWEROFF)

SPTMIC1 driver supports configuration via device-tree; the bindings, same as kernel, are described in:

doc/device-tree-bindings/mfd/stpmic1.txt

3.4 Support in Cortex-A7 Secure

3.4.1 TF-A

STPMIC1 is used by TF-A firmware to:

  • Configure DDR power supplies.
  • Configure the regulators for system suspend and system shutdown.

Driver source code:

 include/drivers/st/stpmic1.h  
 drivers/st/pmic/stpmic1.c  

SPTMIC1 driver supports configuration via device-tree, bindings are described in:

 docs/fdts/stm32mp/st,stpmic1.txt 

3.4.2 OP-TEE

STPMIC1 is used by OP-TEE OS to configure the regulators for system suspend and system shutdown.

Driver source code:

 core/include/drivers/stpmic1.h  
 core/drivers/stpmic1.c 
IMPORTANT NOTICE – READ CAREFULLY
STMicroelectronics NV and its subsidiaries ("ST") reserve the right to make changes, corrections, enhancements, modifications, and improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on ST products before placing orders. ST products are sold pursuant to ST’s terms and conditions of sale in place at the time of order acknowledgment.

Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or the design of purchasers’ products.

No license, express or implied, to any intellectual property right is granted by ST herein.

Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product.

ST and the ST logo are trademarks of ST. For additional information about ST trademarks, refer to www.st.com/trademarks. All other product or service names are the property of their respective owners.

Information in this document supersedes and replaces information previously supplied in any prior versions of this document.