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

Lukasz Majewski
2012-10-31T09:43:30Z

Hi Stefano,

> 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 !
>

Nice to hear, thanks :-)

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

--
Best regards,

Lukasz Majewski

Samsung Poland R&D Center | Linux Platform Group