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

Lukasz Majewski l.majewski at samsung.com
Wed Oct 31 10:43:30 CET 2012


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 at denx.de>
> 
> Best regards,
> Stefano Babic
> 


-- 
Best regards,

Lukasz Majewski

Samsung Poland R&D Center | Linux Platform Group


More information about the U-Boot mailing list