|
@@ -1,63 +1,59 @@
|
|
|
-#
|
|
|
-# (C) Copyright 2014-2015 Samsung Electronics
|
|
|
-# Przemyslaw Marczak <p.marczak@samsung.com>
|
|
|
-#
|
|
|
-# SPDX-License-Identifier: GPL-2.0+
|
|
|
-#
|
|
|
+.. SPDX-License-Identifier: GPL-2.0+
|
|
|
+.. (C) Copyright 2014-2015 Samsung Electronics
|
|
|
+.. sectionauthor:: Przemyslaw Marczak <p.marczak@samsung.com>
|
|
|
|
|
|
PMIC framework based on Driver Model
|
|
|
====================================
|
|
|
-TOC:
|
|
|
-1. Introduction
|
|
|
-2. How does it work
|
|
|
-3. Pmic uclass
|
|
|
-4. Regulator uclass
|
|
|
-
|
|
|
-1. Introduction
|
|
|
-===============
|
|
|
+
|
|
|
+Introduction
|
|
|
+------------
|
|
|
This is an introduction to driver-model multi uclass PMIC IC's support.
|
|
|
At present it's based on two uclass types:
|
|
|
-- UCLASS_PMIC - basic uclass type for PMIC I/O, which provides common
|
|
|
- read/write interface.
|
|
|
-- UCLASS_REGULATOR - additional uclass type for specific PMIC features,
|
|
|
- which are Voltage/Current regulators.
|
|
|
+
|
|
|
+UCLASS_PMIC:
|
|
|
+ basic uclass type for PMIC I/O, which provides common
|
|
|
+ read/write interface.
|
|
|
+UCLASS_REGULATOR:
|
|
|
+ additional uclass type for specific PMIC features, which are
|
|
|
+ Voltage/Current regulators.
|
|
|
|
|
|
New files:
|
|
|
+
|
|
|
UCLASS_PMIC:
|
|
|
-- drivers/power/pmic/pmic-uclass.c
|
|
|
-- include/power/pmic.h
|
|
|
+ - drivers/power/pmic/pmic-uclass.c
|
|
|
+ - include/power/pmic.h
|
|
|
UCLASS_REGULATOR:
|
|
|
-- drivers/power/regulator/regulator-uclass.c
|
|
|
-- include/power/regulator.h
|
|
|
+ - drivers/power/regulator/regulator-uclass.c
|
|
|
+ - include/power/regulator.h
|
|
|
|
|
|
Commands:
|
|
|
- common/cmd_pmic.c
|
|
|
- common/cmd_regulator.c
|
|
|
|
|
|
-2. How doees it work
|
|
|
-====================
|
|
|
+How doees it work
|
|
|
+-----------------
|
|
|
The Power Management Integrated Circuits (PMIC) are used in embedded systems
|
|
|
to provide stable, precise and specific voltage power source with over-voltage
|
|
|
and thermal protection circuits.
|
|
|
|
|
|
The single PMIC can provide various functions by single or multiple interfaces,
|
|
|
-like in the example below.
|
|
|
-
|
|
|
--- SoC
|
|
|
- |
|
|
|
- | ______________________________________
|
|
|
- | BUS 0 | Multi interface PMIC IC |--> LDO out 1
|
|
|
- | e.g.I2C0 | |--> LDO out N
|
|
|
- |-----------|---- PMIC device 0 (READ/WRITE ops) |
|
|
|
- | or SPI0 | |_ REGULATOR device (ldo/... ops) |--> BUCK out 1
|
|
|
- | | |_ CHARGER device (charger ops) |--> BUCK out M
|
|
|
- | | |_ MUIC device (microUSB con ops) |
|
|
|
- | BUS 1 | |_ ... |---> BATTERY
|
|
|
- | e.g.I2C1 | |
|
|
|
- |-----------|---- PMIC device 1 (READ/WRITE ops) |---> USB in 1
|
|
|
- . or SPI1 | |_ RTC device (rtc ops) |---> USB in 2
|
|
|
- . |______________________________________|---> USB out
|
|
|
- .
|
|
|
+like in the example below::
|
|
|
+
|
|
|
+ -- SoC
|
|
|
+ |
|
|
|
+ | ______________________________________
|
|
|
+ | BUS 0 | Multi interface PMIC IC |--> LDO out 1
|
|
|
+ | e.g.I2C0 | |--> LDO out N
|
|
|
+ |-----------|---- PMIC device 0 (READ/WRITE ops) |
|
|
|
+ | or SPI0 | |_ REGULATOR device (ldo/... ops) |--> BUCK out 1
|
|
|
+ | | |_ CHARGER device (charger ops) |--> BUCK out M
|
|
|
+ | | |_ MUIC device (microUSB con ops) |
|
|
|
+ | BUS 1 | |_ ... |---> BATTERY
|
|
|
+ | e.g.I2C1 | |
|
|
|
+ |-----------|---- PMIC device 1 (READ/WRITE ops) |---> USB in 1
|
|
|
+ . or SPI1 | |_ RTC device (rtc ops) |---> USB in 2
|
|
|
+ . |______________________________________|---> USB out
|
|
|
+ .
|
|
|
|
|
|
Since U-Boot provides driver model features for I2C and SPI bus drivers,
|
|
|
the PMIC devices should also support this. By the pmic and regulator API's,
|
|
@@ -66,26 +62,27 @@ and multi-instance device support.
|
|
|
|
|
|
Basic design assumptions:
|
|
|
|
|
|
-- Common I/O API - UCLASS_PMIC
|
|
|
-For the multi-function PMIC devices, this can be used as parent I/O device
|
|
|
-for each IC's interface. Then, each children uses the same dev for read/write.
|
|
|
+- Common I/O API:
|
|
|
+ UCLASS_PMIC. For the multi-function PMIC devices, this can be used as
|
|
|
+ parent I/O device for each IC's interface. Then, each children uses the
|
|
|
+ same dev for read/write.
|
|
|
|
|
|
-- Common regulator API - UCLASS_REGULATOR
|
|
|
-For driving the regulator attributes, auto setting function or command line
|
|
|
-interface, based on kernel-style regulator device tree constraints.
|
|
|
+- Common regulator API:
|
|
|
+ UCLASS_REGULATOR. For driving the regulator attributes, auto setting
|
|
|
+ function or command line interface, based on kernel-style regulator device
|
|
|
+ tree constraints.
|
|
|
|
|
|
For simple implementations, regulator drivers are not required, so the code can
|
|
|
use pmic read/write directly.
|
|
|
|
|
|
-3. Pmic uclass
|
|
|
-==============
|
|
|
+Pmic uclass
|
|
|
+-----------
|
|
|
The basic information:
|
|
|
+
|
|
|
* Uclass: 'UCLASS_PMIC'
|
|
|
* Header: 'include/power/pmic.h'
|
|
|
-* Core: 'drivers/power/pmic/pmic-uclass.c'
|
|
|
- config: 'CONFIG_DM_PMIC'
|
|
|
-* Command: 'common/cmd_pmic.c'
|
|
|
- config: 'CONFIG_CMD_PMIC'
|
|
|
+* Core: 'drivers/power/pmic/pmic-uclass.c' (config 'CONFIG_DM_PMIC')
|
|
|
+* Command: 'common/cmd_pmic.c' (config 'CONFIG_CMD_PMIC')
|
|
|
* Example: 'drivers/power/pmic/max77686.c'
|
|
|
|
|
|
For detailed API description, please refer to the header file.
|
|
@@ -109,20 +106,26 @@ for pmic I/O operations only.
|
|
|
|
|
|
For more information, please refer to the core file.
|
|
|
|
|
|
-4. Regulator uclass
|
|
|
-===================
|
|
|
+Regulator uclass
|
|
|
+----------------
|
|
|
The basic information:
|
|
|
-* Uclass: 'UCLASS_REGULATOR'
|
|
|
-* Header: 'include/power/regulator.h'
|
|
|
-* Core: 'drivers/power/regulator/regulator-uclass.c'
|
|
|
- config: 'CONFIG_DM_REGULATOR'
|
|
|
- binding: 'doc/device-tree-bindings/regulator/regulator.txt'
|
|
|
-* Command: 'common/cmd_regulator.c'
|
|
|
- config: 'CONFIG_CMD_REGULATOR'
|
|
|
+
|
|
|
+* Uclass: 'UCLASS_REGULATOR'
|
|
|
+
|
|
|
+* Header: 'include/power/regulator.h'
|
|
|
+
|
|
|
+* Core: 'drivers/power/regulator/regulator-uclass.c'
|
|
|
+ (config 'CONFIG_DM_REGULATOR')
|
|
|
+
|
|
|
+* Binding: 'doc/device-tree-bindings/regulator/regulator.txt'
|
|
|
+
|
|
|
+* Command: 'common/cmd_regulator.c' (config 'CONFIG_CMD_REGULATOR')
|
|
|
+
|
|
|
* Example: 'drivers/power/regulator/max77686.c'
|
|
|
- 'drivers/power/pmic/max77686.c' (required I/O driver for the above)
|
|
|
+ 'drivers/power/pmic/max77686.c' (required I/O driver for the above)
|
|
|
+
|
|
|
* Example: 'drivers/power/regulator/fixed.c'
|
|
|
- config" 'CONFIG_DM_REGULATOR_FIXED'
|
|
|
+ (config 'CONFIG_DM_REGULATOR_FIXED')
|
|
|
|
|
|
For detailed API description, please refer to the header file.
|
|
|
|