[U-Boot] [PATCH v4 00/24] pmic: Redesign PMIC framework to support multiple instances of devices

Stefano Babic
2012-10-31T06:38:34Z

On 30/10/2012 17:56, Lukasz Majewski wrote:
> PMIC framework has been redesigned to support multiple instances of power related devices
> (e.g. fuel gauge, PMICs, chargers, micro USB IC, battery).
>
> Due to that, code at other architectures and boards have been adjusted properly.
>
> New power_init_board() method at ./lib/board.c file has been introduced. It is meant
> to be an architecture dependent function to support advanced power management.
> Since PMIC framework uses lists internally to link different devices, its initialization
> must be done just after malloc initialization.
>
> Please consider commits from this patch set as the example of advanced power management for a
> particular HW (Trats board in this case).
>
> In the new approach PMICs are selected with their names (e.g. 'pmic dump MAX8997_PMIC')
> Presented patch set is a first step to change 'pmic' command to more generic (i.e. power)
> to provide control for multiple devices.
>
> Moreover device's battery is treated as an oridinary "power" device (like PMIC). Due to
> that, framework unification is possible.
> For even more versalite design, each power device instance can specify its parent.
>
> For trats one can build a following scheme (it can de different for other boards):
> -----------------
> --------| BAT |------------
> | | | |
> | ----------------- |
> | | |
> \|/ \|/ \|/
> ----------- ----------------- ---------
> |FG | |MUIC | |CHRG |
> | | | | | |
> ----------- ----------------- ---------
>
> Finally, this patch series also comprises of a "namespace" cleanup - an attempt to rename
> "pmic" to "power" to better reflect generality of this framework.
>
>
>
> Test HW:
> - Exynos4210 Trats development board
>
>
> Lukasz Majewski (24):
> pmic:i2c: Handle PMIC I2C transmission comprising of two bytes
> pmic:i2c: Add I2C sensor byte order (big/little) to PMIC framework
> pmic:max8997: Switch the MAX8997 PMIC to be used with multibus I2C
> pmic: Extend PMIC framework to support multiple instances of PMIC
> devices
> pmic: Introduce power_init_board() method at ./lib/board.c file
> pmic: Enable power_board_init() support at TRATS
> pmic:chrg: Common information about charger and battery
> (power_chrg.h)
> pmic: Move pmic related code to ./drivers/power directory
> pmic: Extend struct pmic to support battery and charger related
> operations
> pmic:battery: Support for Trats Battery at PMIC framework
> pmic:muic: Support for MUIC built into MAX8997 device
> pmic:fuel-gauge: Support for MAX17042 fuel-gauge
> pmic:max8997: Function for calculating LDO internal register value
> arm:trats:pmic: Default PMIC(MAX8997) initialization for Samsung's
> TRATS board
> arm:trats:pmic: Enable MUIC (MAX8997) at Samsung's TRATS board
> arm:trats:pmic: Enable fuel-gauge (MAX17042) at Samsung's TRATS board
> arm:trats:pmic: Enable battery support at Samsung's TRATS board
> pmic:max8997: Support for MAX8997 internal charger control
> arm:trats:pmic: Power consumption reduction state for Samsung's TRATS
> board
> arm:trats:pmic: Support for charging battery at Samsung's TRATS board
> pmic: Extend PMIC framework to support battery related commands
> power:pmic: Rename ./drivers/power/pmic_* to ./drivers/power/power_*
> files
> power:pmic: Rename CONFIG_PMIC* defines to CONFIG_POWER
> power:pmic: Rename CONFIG_DIALOG_PMIC defines to CONFIG_DIALOG_POWER
>
> Makefile | 5 +-
> arch/arm/lib/board.c | 8 +
> board/davedenx/qong/qong.c | 6 +-
> board/freescale/mx31pdk/mx31pdk.c | 6 +-
> board/freescale/mx35pdk/mx35pdk.c | 8 +-
> board/freescale/mx51evk/mx51evk.c | 6 +-
> board/freescale/mx53evk/mx53evk.c | 6 +-
> board/freescale/mx53loco/mx53loco.c | 10 +-
> board/hale/tt01/tt01.c | 6 +-
> board/samsung/goni/goni.c | 11 +-
> board/samsung/trats/trats.c | 247 +++++++++++++++++++-
> board/samsung/universal_c210/universal.c | 12 +-
> board/ttcontrol/vision2/vision2.c | 6 +-
> drivers/misc/Makefile | 7 -
> drivers/misc/pmic_core.c | 147 ------------
> drivers/misc/pmic_i2c.c | 98 --------
> drivers/misc/pmic_max8997.c | 43 ----
> drivers/power/Makefile | 12 +-
> drivers/power/battery/Makefile | 47 ++++
> drivers/power/battery/bat_trats.c | 94 ++++++++
> drivers/power/fuel_gauge/Makefile | 47 ++++
> drivers/power/fuel_gauge/fg_max17042.c | 244 +++++++++++++++++++
> drivers/power/pmic/Makefile | 49 ++++
> drivers/power/pmic/muic_max8997.c | 84 +++++++
> drivers/power/pmic/pmic_max8997.c | 117 +++++++++
> drivers/{misc => power/pmic}/pmic_max8998.c | 10 +-
> drivers/power/power_core.c | 230 ++++++++++++++++++
> .../{misc/pmic_dialog.c => power/power_dialog.c} | 8 +-
> drivers/{misc/pmic_fsl.c => power/power_fsl.c} | 16 +-
> drivers/power/power_i2c.c | 125 ++++++++++
> drivers/{misc/pmic_spi.c => power/power_spi.c} | 4 +-
> drivers/rtc/mc13xxx-rtc.c | 6 +-
> include/configs/imx31_litekit.h | 6 +-
> include/configs/mx31ads.h | 6 +-
> include/configs/mx31pdk.h | 6 +-
> include/configs/mx35pdk.h | 6 +-
> include/configs/mx51_efikamx.h | 6 +-
> include/configs/mx51evk.h | 6 +-
> include/configs/mx53evk.h | 6 +-
> include/configs/mx53loco.h | 8 +-
> include/configs/qong.h | 6 +-
> include/configs/s5p_goni.h | 6 +-
> include/configs/s5pc210_universal.h | 6 +-
> include/configs/trats.h | 14 +-
> include/configs/tt01.h | 6 +-
> include/configs/vision2.h | 6 +-
> include/pmic.h | 72 ------
> include/power/battery.h | 38 +++
> include/power/fg_battery_cell_params.h | 90 +++++++
> include/power/max17042_fg.h | 74 ++++++
> include/power/max8997_muic.h | 61 +++++
> include/{ => power}/max8997_pmic.h | 26 ++-
> include/{ => power}/max8998_pmic.h | 0
> include/power/pmic.h | 109 +++++++++
> include/power/power_chrg.h | 43 ++++
> 55 files changed, 1847 insertions(+), 485 deletions(-)
> delete mode 100644 drivers/misc/pmic_core.c
> delete mode 100644 drivers/misc/pmic_i2c.c
> delete mode 100644 drivers/misc/pmic_max8997.c
> create mode 100644 drivers/power/battery/Makefile
> create mode 100644 drivers/power/battery/bat_trats.c
> create mode 100644 drivers/power/fuel_gauge/Makefile
> create mode 100644 drivers/power/fuel_gauge/fg_max17042.c
> create mode 100644 drivers/power/pmic/Makefile
> create mode 100644 drivers/power/pmic/muic_max8997.c
> create mode 100644 drivers/power/pmic/pmic_max8997.c
> rename drivers/{misc => power/pmic}/pmic_max8998.c (89%)
> create mode 100644 drivers/power/power_core.c
> rename drivers/{misc/pmic_dialog.c => power/power_dialog.c} (89%)
> rename drivers/{misc/pmic_fsl.c => power/power_fsl.c} (86%)
> create mode 100644 drivers/power/power_i2c.c
> rename drivers/{misc/pmic_spi.c => power/power_spi.c} (97%)
> delete mode 100644 include/pmic.h
> create mode 100644 include/power/battery.h
> create mode 100644 include/power/fg_battery_cell_params.h
> create mode 100644 include/power/max17042_fg.h
> create mode 100644 include/power/max8997_muic.h
> rename include/{ => power}/max8997_pmic.h (88%)
> rename include/{ => power}/max8998_pmic.h (100%)
> create mode 100644 include/power/pmic.h
> create mode 100644 include/power/power_chrg.h
>

I reviewed V3, nice works !

Acked-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic

--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================