pmic: Redesign PMIC framework to support multiple instances of devices
Subsystems (5)
v4 cover pmic: Redesign PMIC framework to support multiple instances of devices
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.hSignature · 1 line
1.7.2.3
PATCH v4 1/24 pmic:i2c: Handle PMIC I2C transmission comprising of two bytes
This patch adds support for proper handling of a PMIC I2C transmission comprising of two bytes.
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
--- drivers/misc/pmic_i2c.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
drivers/misc/pmic_i2c.c +8 -1
@@ -44,6 +44,10 @@ int pmic_reg_write(struct pmic *p, u32 reg, u32 val) buf[1 ] = (val >>8 ) &0xff ; buf[2 ] = val &0xff ;break ; +case 2 : + buf[0 ] = (val >>8 ) &0xff ; + buf[1 ] = val &0xff ; +break ;case 1 : buf[0 ] = val &0xff ;break ;
@@ -73,6 +77,9 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)case 3 : ret_val = buf[0 ] <<16 | buf[1 ] <<8 | buf[2 ];break ; +case 2 : + ret_val = buf[0 ] <<8 | buf[1 ]; +break ;case 1 : ret_val = buf[0 ];break ;
@@ -88,7 +95,7 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)int pmic_probe (struct pmic *p) {I2C_SET_BUS (p->bus); -debug ("PMIC:%s probed!\n" , p->name); +debug ("Bus: %d PMIC:%s probed!\n" , p->bus, p->name);if (i2c_probe (pmic_i2c_addr)) {printf ("Can't find PMIC:%s\n" , p->name);return -1 ;
Signature · 1 line
1.7.2.3
PATCH v4 1/24 pmic:i2c: Handle PMIC I2C transmission comprising of two bytes
Quoted 6 lines · Lukasz Majewski
This patch adds support for proper handling of a PMIC I2C transmission comprising of two bytes.
Signed-off-by Lukasz Majewski <[email protected]>Signed-off-by Kyungmin Park <[email protected]>Cc Stefano Babic <[email protected]>
Quoted 8 lines
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
---
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== 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 =====================================================================
PATCH v4 2/24 pmic:i2c: Add I2C sensor byte order (big/little) to PMIC framework
In reply to Lukasz MajewskiSince the pmic_reg_read is the u32 value, the order in which bytes are placed to form u32 value is important.
Support for big and little sensor endianess is added.
Moreover calls to [leXX|beXX]_to_cpu have been added to support little and big endian SoCs.
---
Changes for v2:
- Move byte_order variable to struct pmic
Changes for v3:
- New names for sensor endianess (more readable)
- Support for SoCs with different endianess
Changes for v4:
- None
--- drivers/misc/pmic_i2c.c | 38 +++++++++++++++++++++++++++++--------- include/pmic.h | 2 ++ 2 files changed, 31 insertions(+), 9 deletions(-)
drivers/misc/pmic_i2c.c +29 -9
@@ -30,6 +30,7 @@#include <linux/types.h> #include <pmic.h> #include <i2c.h> +#include <compiler.h> int pmic_reg_write (struct pmic *p,u32 reg,u32 val) {
@@ -40,16 +41,27 @@ int pmic_reg_write(struct pmic *p, u32 reg, u32 val)switch (pmic_i2c_tx_num) {case 3 : - buf[0 ] = (val >>16 ) &0xff ; - buf[1 ] = (val >>8 ) &0xff ; - buf[2 ] = val &0xff ; +if (p->sensor_byte_order ==PMIC_SENSOR_BYTE_ORDER_BIG ) { + buf[2 ] = (cpu_to_le32 (val) >>16 ) &0xff ; + buf[1 ] = (cpu_to_le32 (val) >>8 ) &0xff ; + buf[0 ] =cpu_to_le32 (val) &0xff ; + }else { + buf[0 ] = (cpu_to_le32 (val) >>16 ) &0xff ; + buf[1 ] = (cpu_to_le32 (val) >>8 ) &0xff ; + buf[2 ] =cpu_to_le32 (val) &0xff ; + }break ;case 2 : - buf[0 ] = (val >>8 ) &0xff ; - buf[1 ] = val &0xff ; +if (p->sensor_byte_order ==PMIC_SENSOR_BYTE_ORDER_BIG ) { + buf[1 ] = (cpu_to_le32 (val) >>8 ) &0xff ; + buf[0 ] =cpu_to_le32 (val) &0xff ; + }else { + buf[0 ] = (cpu_to_le32 (val) >>8 ) &0xff ; + buf[1 ] =cpu_to_le32 (val) &0xff ; + }break ;case 1 : - buf[0 ] = val &0xff ; + buf[0 ] =cpu_to_le32 (val) &0xff ;break ;default :printf ("%s: invalid tx_num: %d" , __func__, pmic_i2c_tx_num);
@@ -75,13 +87,21 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)switch (pmic_i2c_tx_num) {case 3 : - ret_val = buf[0 ] <<16 | buf[1 ] <<8 | buf[2 ]; +if (p->sensor_byte_order ==PMIC_SENSOR_BYTE_ORDER_BIG ) + ret_val =le32_to_cpu (buf[2 ] <<16 + | buf[1 ] <<8 | buf[0 ]); +else + ret_val =le32_to_cpu (buf[0 ] <<16 | + buf[1 ] <<8 | buf[2 ]);break ;case 2 : - ret_val = buf[0 ] <<8 | buf[1 ]; +if (p->sensor_byte_order ==PMIC_SENSOR_BYTE_ORDER_BIG ) + ret_val =le32_to_cpu (buf[1 ] <<8 | buf[0 ]); +else + ret_val =le32_to_cpu (buf[0 ] <<8 | buf[1 ]);break ;case 1 : - ret_val = buf[0 ]; + ret_val =le32_to_cpu (buf[0 ]);break ;default :printf ("%s: invalid tx_num: %d" , __func__, pmic_i2c_tx_num);
include/pmic.h +2 -0
@@ -27,6 +27,7 @@enum {PMIC_I2C ,PMIC_SPI , };enum {I2C_PMIC ,I2C_NUM , };enum {PMIC_READ ,PMIC_WRITE , }; +enum {PMIC_SENSOR_BYTE_ORDER_LITTLE ,PMIC_SENSOR_BYTE_ORDER_BIG , };struct p_i2c {unsigned char addr;
@@ -47,6 +48,7 @@ struct pmic {const char *name;unsigned char bus;unsigned char interface; +unsigned char sensor_byte_order;unsigned char number_of_regs;union hw {struct p_i2c i2c;
Signature · 1 line
1.7.2.3
PATCH v4 3/24 pmic:max8997: Switch the MAX8997 PMIC to be used with multibus I2C
In reply to Lukasz MajewskiPMIC MAX8997 is now ready to work with single and multibus soft I2C implementation.
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
--- drivers/misc/pmic_max8997.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
drivers/misc/pmic_max8997.c +2 -1
@@ -24,6 +24,7 @@#include <common.h> #include <pmic.h> #include <max8997_pmic.h> +#include <i2c.h> int pmic_init (void ) {
@@ -37,7 +38,7 @@ int pmic_init(void) p->number_of_regs =PMIC_NUM_OF_REGS ; p->hw.i2c.addr =MAX8997_I2C_ADDR ; p->hw.i2c.tx_num =1 ; - p->bus =I2C_PMIC ; + p->bus =I2C_0 ;return 0 ; }
Signature · 1 line
1.7.2.3
PATCH v4 4/24 pmic: Extend PMIC framework to support multiple instances of PMIC devices
In reply to Lukasz MajewskiThe PMIC framework has been extended to support multiple instances of the variety of devices responsible for power management.
This change allows supporting of e.g. fuel gauge, charger, MUIC (Micro USB Interface Circuit).
Power related includes have been moved to ./include/power directory. This is a first of a series of patches - in the future "pmic" will be replaced with "power".
Two important issues:
1. The PMIC needs to be initialized just after malloc is configured
2. It uses list to hold information about available PMIC devices
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
---
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 | 9 ++-
board/samsung/trats/trats.c | 12 ++--
board/samsung/universal_c210/universal.c | 10 ++--
board/ttcontrol/vision2/vision2.c | 6 +-
drivers/misc/pmic_core.c | 108 ++++++++++++++++++++++--------
drivers/misc/pmic_dialog.c | 8 +-
drivers/misc/pmic_fsl.c | 8 +-
drivers/misc/pmic_i2c.c | 6 +-
drivers/misc/pmic_max8997.c | 10 ++--
drivers/misc/pmic_max8998.c | 10 ++--
drivers/misc/pmic_spi.c | 4 +-
drivers/rtc/mc13xxx-rtc.c | 6 +-
include/{ => power}/max8997_pmic.h | 15 ++++-
include/{ => power}/max8998_pmic.h | 0
include/{ => power}/pmic.h | 19 ++++--
22 files changed, 176 insertions(+), 103 deletions(-)
rename include/{ => power}/max8997_pmic.h (92%)
rename include/{ => power}/max8998_pmic.h (100%)
rename include/{ => power}/pmic.h (84%)board/davedenx/qong/qong.c +3 -3
@@ -28,7 +28,7 @@#include <asm/arch/sys_proto.h> #include <asm/io.h> #include <nand.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> #include <asm/gpio.h> #include "qong_fpga.h"
@@ -173,8 +173,8 @@ int board_late_init(void)u32 val;struct pmic *p; -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("FSL_PMIC" );/* Enable RTC battery */ pmic_reg_read (p,REG_POWER_CTL0 , &val);
board/freescale/mx31pdk/mx31pdk.c +3 -3
@@ -30,7 +30,7 @@#include <asm/arch/imx-regs.h> #include <asm/arch/sys_proto.h> #include <watchdog.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -84,8 +84,8 @@ int board_late_init(void)u32 val;struct pmic *p; -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("FSL_PMIC" );/* Enable RTC battery */ pmic_reg_read (p,REG_POWER_CTL0 , &val);
board/freescale/mx35pdk/mx35pdk.c +4 -4
@@ -30,7 +30,7 @@#include <asm/arch/mx35_pins.h> #include <asm/arch/iomux.h> #include <i2c.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> #include <mmc.h> #include <fsl_esdhc.h>
@@ -206,7 +206,7 @@ int board_init(void)static inline int pmic_detect (void ) {unsigned int id; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("FSL_PMIC" );pmic_reg_read (p,REG_IDENTIFICATION , &id);
@@ -231,9 +231,9 @@ int board_late_init(void)u32 pmic_val;struct pmic *p; -pmic_init (); +pmic_init (I2C_PMIC );if (pmic_detect ()) { - p =get_pmic (); + p =pmic_get ("FSL_PMIC" );mxc_request_iomux (MX35_PIN_WATCHDOG_RST ,MUX_CONFIG_SION |MUX_CONFIG_ALT1 );
board/freescale/mx51evk/mx51evk.c +3 -3
@@ -32,7 +32,7 @@#include <i2c.h> #include <mmc.h> #include <fsl_esdhc.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> #include <mc13892.h> #include <usb/ehci-fsl.h>
@@ -252,8 +252,8 @@ static void power_init(void)struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)MXC_CCM_BASE ;struct pmic *p; -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("FSL_PMIC" );/* Write needed to Power Gate 2 register */ pmic_reg_read (p,REG_POWER_MISC , &val);
board/freescale/mx53evk/mx53evk.c +3 -3
@@ -33,7 +33,7 @@#include <i2c.h> #include <mmc.h> #include <fsl_esdhc.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> #include <asm/gpio.h> #include <mc13892.h>
@@ -123,8 +123,8 @@ void power_init(void)unsigned int val;struct pmic *p; -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("FSL_PMIC" );/* Set VDDA to 1.25V */ pmic_reg_read (p,REG_SW_2 , &val);
board/freescale/mx53loco/mx53loco.c +5 -5
@@ -36,7 +36,7 @@#include <mmc.h> #include <fsl_esdhc.h> #include <asm/gpio.h> -#include <pmic.h> +#include <power/pmic.h> #include <dialog_pmic.h> #include <fsl_pmic.h> #include <linux/fb.h>
@@ -343,8 +343,8 @@ static int power_init(void)struct pmic *p;if (!i2c_probe (CONFIG_SYS_DIALOG_PMIC_I2C_ADDR )) { -pmic_dialog_init (); - p =get_pmic (); +pmic_dialog_init (I2C_PMIC ); + p =pmic_get ("DIALOG_PMIC" );/* Set VDDA to 1.25V */ val =DA9052_BUCKCORE_BCOREEN |DA_BUCKCORE_VBCORE_1_250V ;
@@ -360,8 +360,8 @@ static int power_init(void) }if (!i2c_probe (CONFIG_SYS_FSL_PMIC_I2C_ADDR )) { -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("DIALOG_PMIC" );/* Set VDDGP to 1.25V for 1GHz on SW1 */ pmic_reg_read (p,REG_SW_0 , &val);
board/hale/tt01/tt01.c +3 -3
@@ -25,7 +25,7 @@#include <common.h> #include <netdev.h> #include <command.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> #include <mc13783.h> #include <asm/arch/clock.h>
@@ -201,8 +201,8 @@ int board_mmc_init(bd_t *bis)* pmic_init() here. board_late_init() is too late for * the MMC driver. */ -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("FSL_PMIC" );/* configure pins for SDHC1 only */ mx31_gpio_mux (IOMUX_MODE (MUX_CTL_SD1_CLK ,MUX_CTL_FUNC ));
board/samsung/goni/goni.c +5 -4
@@ -25,10 +25,10 @@#include <common.h> #include <asm/arch/gpio.h> #include <asm/arch/mmc.h> -#include <pmic.h> +#include <power/pmic.h> #include <usb/s3c_udc.h> #include <asm/arch/cpu.h> -#include <max8998_pmic.h> +#include <power/max8998_pmic.h> DECLARE_GLOBAL_DATA_PTR ;static struct s5pc110_gpio *s5pc110_gpio;
@@ -42,8 +42,9 @@ int board_init(void) gd->bd->bi_boot_params =PHYS_SDRAM_1 +0x100 ;#if defined(CONFIG_PMIC ) -pmic_init (); +pmic_init (I2C_5 );#endif +return 0 ; }
@@ -108,7 +109,7 @@ static int s5pc1xx_phy_control(int on) {int ret;static int status; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("MAX8998_PMIC" );if (pmic_probe (p))return -1 ;
board/samsung/trats/trats.c +6 -6
@@ -34,9 +34,9 @@#include <asm/arch/mipi_dsim.h> #include <asm/arch/watchdog.h> #include <asm/arch/power.h> -#include <pmic.h> +#include <power/pmic.h> #include <usb/s3c_udc.h> -#include <max8997_pmic.h> +#include <power/max8997_pmic.h> #include <libtizen.h> #include "setup.h"
@@ -69,7 +69,7 @@ int board_init(void)printf ("HW Revision:\t0x%x\n" , board_rev);#if defined(CONFIG_PMIC ) -pmic_init (); +pmic_init (I2C_5 );#endif return 0 ;
@@ -238,7 +238,7 @@ static int s5pc210_phy_control(int on) {int ret =0 ;u32 val =0 ; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("MAX8997_PMIC" );if (pmic_probe (p))return -1 ;
@@ -413,7 +413,7 @@ static void lcd_reset(void)static int lcd_power (void ) {int ret =0 ; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("MAX8997_PMIC" );if (pmic_probe (p))return 0 ;
@@ -473,7 +473,7 @@ static struct mipi_dsim_lcd_device mipi_lcd_device = {static int mipi_power (void ) {int ret =0 ; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("MAX8997_PMIC" );if (pmic_probe (p))return 0 ;
board/samsung/universal_c210/universal.c +5 -5
@@ -27,10 +27,10 @@#include <asm/arch/adc.h> #include <asm/arch/gpio.h> #include <asm/arch/mmc.h> -#include <pmic.h> +#include <power/pmic.h> #include <usb/s3c_udc.h> #include <asm/arch/cpu.h> -#include <max8998_pmic.h> +#include <power/max8998_pmic.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -59,7 +59,7 @@ int board_init(void) gd->bd->bi_boot_params =PHYS_SDRAM_1 +0x100 ;#if defined(CONFIG_PMIC ) -pmic_init (); +pmic_init (I2C_5 );#endif check_hw_revision ();
@@ -112,7 +112,7 @@ static unsigned short get_adc_value(int channel)static int adc_power_control (int on) {int ret; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("MAX8998_PMIC" );if (pmic_probe (p))return -1 ;
@@ -280,7 +280,7 @@ int board_mmc_init(bd_t *bis)static int s5pc210_phy_control (int on) {int ret =0 ; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("MAX8998_PMIC" );if (pmic_probe (p))return -1 ;
board/ttcontrol/vision2/vision2.c +3 -3
@@ -33,7 +33,7 @@#include <asm/arch/sys_proto.h> #include <i2c.h> #include <mmc.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_esdhc.h> #include <fsl_pmic.h> #include <mc13892.h>
@@ -306,8 +306,8 @@ static void power_init_mx51(void)unsigned int val;struct pmic *p; -pmic_init (); - p =get_pmic (); +pmic_init (I2C_PMIC ); + p =pmic_get ("FSL_PMIC" );/* Write needed to Power Gate 2 register */ pmic_reg_read (p,REG_POWER_MISC , &val);
drivers/misc/pmic_core.c +80 -28
174 lines not on this page · raw message
drivers/misc/pmic_dialog.c +4 -4
@@ -17,12 +17,12 @@*/ #include <common.h> -#include <pmic.h> +#include <power/pmic.h> #include <dialog_pmic.h> -int pmic_dialog_init (void ) +int pmic_dialog_init (unsigned char bus) { -struct pmic *p =get_pmic (); +struct pmic *p =pmic_alloc ();static const char name[] ="DIALOG_PMIC" ; p->name = name;
@@ -31,7 +31,7 @@ int pmic_dialog_init(void) p->interface =PMIC_I2C ; p->hw.i2c.addr =CONFIG_SYS_DIALOG_PMIC_I2C_ADDR ; p->hw.i2c.tx_num =1 ; - p->bus =I2C_PMIC ; + p->bus = bus;return 0 ; }
drivers/misc/pmic_fsl.c +4 -4
@@ -23,7 +23,7 @@#include <common.h> #include <spi.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> #if defined(CONFIG_PMIC_SPI )
@@ -33,9 +33,9 @@ static u32 pmic_spi_prepare_tx(u32 reg, u32 *val, u32 write) }#endif -int pmic_init (void ) +int pmic_init (unsigned char bus) { -struct pmic *p =get_pmic (); +struct pmic *p =pmic_alloc ();static const char name[] ="FSL_PMIC" ; p->name = name;
@@ -54,7 +54,7 @@ int pmic_init(void) p->interface =PMIC_I2C ; p->hw.i2c.addr =CONFIG_SYS_FSL_PMIC_I2C_ADDR ; p->hw.i2c.tx_num =3 ; - p->bus =I2C_PMIC ; + p->bus = bus;#else #error "You must select CONFIG_PMIC_SPI or CONFIG_PMIC_I2C"#endif
drivers/misc/pmic_i2c.c +3 -3
@@ -28,7 +28,7 @@#include <common.h> #include <linux/types.h> -#include <pmic.h> +#include <power/pmic.h> #include <i2c.h> #include <compiler.h>
@@ -36,7 +36,7 @@ int pmic_reg_write(struct pmic *p, u32 reg, u32 val) {unsigned char buf[4 ] = {0 }; -if (check_reg (reg)) +if (check_reg (p, reg))return -1 ;switch (pmic_i2c_tx_num) {
@@ -79,7 +79,7 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)unsigned char buf[4 ] = {0 };u32 ret_val =0 ; -if (check_reg (reg)) +if (check_reg (p, reg))return -1 ;if (i2c_read (pmic_i2c_addr, reg,1 , buf, pmic_i2c_tx_num))
drivers/misc/pmic_max8997.c +5 -5
@@ -22,13 +22,13 @@*/ #include <common.h> -#include <pmic.h> -#include <max8997_pmic.h> +#include <power/pmic.h> +#include <power/max8997_pmic.h> #include <i2c.h> -int pmic_init (void ) +int pmic_init (unsigned char bus) { -struct pmic *p =get_pmic (); +struct pmic *p =pmic_alloc ();static const char name[] ="MAX8997_PMIC" ;puts ("Board PMIC init\n" );
@@ -38,7 +38,7 @@ int pmic_init(void) p->number_of_regs =PMIC_NUM_OF_REGS ; p->hw.i2c.addr =MAX8997_I2C_ADDR ; p->hw.i2c.tx_num =1 ; - p->bus =I2C_0 ; + p->bus = bus;return 0 ; }
drivers/misc/pmic_max8998.c +5 -5
@@ -22,12 +22,12 @@*/ #include <common.h> -#include <pmic.h> -#include <max8998_pmic.h> +#include <power/pmic.h> +#include <power/max8998_pmic.h> -int pmic_init (void ) +int pmic_init (unsigned char bus) { -struct pmic *p =get_pmic (); +struct pmic *p =pmic_alloc ();static const char name[] ="MAX8998_PMIC" ;puts ("Board PMIC init\n" );
@@ -37,7 +37,7 @@ int pmic_init(void) p->number_of_regs =PMIC_NUM_OF_REGS ; p->hw.i2c.addr =MAX8998_I2C_ADDR ; p->hw.i2c.tx_num =1 ; - p->bus =I2C_PMIC ; + p->bus = bus;return 0 ; }
drivers/misc/pmic_spi.c +2 -2
@@ -28,7 +28,7 @@#include <common.h> #include <linux/types.h> -#include <pmic.h> +#include <power/pmic.h> #include <spi.h> static struct spi_slave *slave;
@@ -59,7 +59,7 @@ static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write)return -1 ; } -if (check_reg (reg)) +if (check_reg (p, reg))return -1 ;if (spi_claim_bus (slave))
drivers/rtc/mc13xxx-rtc.c +3 -3
@@ -23,14 +23,14 @@#include <common.h> #include <rtc.h> #include <spi.h> -#include <pmic.h> +#include <power/pmic.h> #include <fsl_pmic.h> int rtc_get (struct rtc_time *rtc) {u32 day1, day2, time;int tim, i =0 ; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("FSL_PMIC" );int ret; do {
@@ -61,7 +61,7 @@ int rtc_get(struct rtc_time *rtc)int rtc_set (struct rtc_time *rtc) {u32 time, day; -struct pmic *p =get_pmic (); +struct pmic *p =pmic_get ("FSL_PMIC" ); time =mktime (rtc->tm_year, rtc->tm_mon, rtc->tm_mday, rtc->tm_hour, rtc->tm_min, rtc->tm_sec);
include/power/max8997_pmic.h renamed from include/max8997_pmic.h +14 -1
@@ -111,7 +111,7 @@ enum {MAX8997_REG_MBCCTRL6 =0x55 ,MAX8997_REG_OTPCGHCVS =0x56 , -MAX8997_REG_SAFEOUTCTRL =0x5a , +MAX8997_REG_SAFEOUTCTRL =0x5a ,MAX8997_REG_LBCNFG1 =0x5e , MAX8997_REG_LBCNFG2 = 0x5f,
@@ -171,9 +171,22 @@ enum { PMIC_NUM_OF_REGS = 0x9b, }; +#define ACTDISSAFEO1 (1 << 4) +#define ACTDISSAFEO2 (1 << 5)#define ENSAFEOUT1 (1 << 6)#define ENSAFEOUT2 (1 << 7) +/* Charger */ +enum {CHARGER_ENABLE ,CHARGER_DISABLE }; +#define DETBAT (1 << 2) +#define MBCICHFCSET (1 << 4) +#define MBCHOSTEN (1 << 6) +#define VCHGR_FC (1 << 7) + +#define CHARGER_MIN_CURRENT 200 +#define CHARGER_MAX_CURRENT 950 +#define CHARGER_CURRENT_RESOLUTION 50 +#define MAX8997_I2C_ADDR (0xCC >> 1)#define MAX8997_RTC_ADDR (0x0C >> 1)#define MAX8997_MUIC_ADDR (0x4A >> 1)
include/power/max8998_pmic.h renamed from include/max8998_pmic.h +0 -0
include/power/pmic.h renamed from include/pmic.h +13 -6
@@ -1,5 +1,5 @@/* -* Copyright (C) 2011 Samsung Electronics +* Copyright (C) 2011-2012 Samsung Electronics * Lukasz Majewski <[email protected]> * * See file CREDITS for list of people who contributed to this
@@ -24,6 +24,10 @@#ifndef __CORE_PMIC_H_#define __CORE_PMIC_H_ +#include <common.h> +#include <linux/list.h> +#include <i2c.h> +enum {PMIC_I2C ,PMIC_SPI , };enum {I2C_PMIC ,I2C_NUM , };enum {PMIC_READ ,PMIC_WRITE , };
@@ -49,17 +53,20 @@ struct pmic {unsigned char bus;unsigned char interface;unsigned char sensor_byte_order; -unsigned char number_of_regs; +unsigned int number_of_regs;union hw {struct p_i2c i2c;struct p_spi spi; } hw; + +struct list_head list; }; -int pmic_init (void ); -int pmic_dialog_init (void ); -int check_reg (u32 reg); -struct pmic *get_pmic (void ); +int pmic_init (unsigned char bus); +int pmic_dialog_init (unsigned char bus); +int check_reg (struct pmic *p,u32 reg); +struct pmic *pmic_alloc (void ); +struct pmic *pmic_get (const char *s);int pmic_probe (struct pmic *p);int pmic_reg_read (struct pmic *p,u32 reg,u32 *val);int pmic_reg_write (struct pmic *p,u32 reg,u32 val);
Signature · 1 line
1.7.2.3
PATCH v4 5/24 pmic: Introduce power_init_board() method at ./lib/board.c file
In reply to Lukasz MajewskiIt is necessary to introduce a new system wide function- power_init_board()
It turns out, that power initialization must be done as early as possible. In the case of PMIC framework redesign, which aims to support multiple instances of PMIC devices the initialization shall be performed just after malloc configuration.
The power_init_board function is a weak function with default implementation.
---
Changes for v2:
- None
Changes for v3:
- rename power_board_init to power_init_board
- power_init_board() defined as __weak function with default implementation
- CONFIG_POWER_INIT flag removed since it is not needed
Changes for v4:
- None
--- arch/arm/lib/board.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
arch/arm/lib/board.c +8 -0
@@ -224,6 +224,13 @@ int __arch_cpu_init(void)int arch_cpu_init (void ) __attribute__((weak,alias ("__arch_cpu_init" ))); +int __power_init_board (void ) +{ +return 0 ; +} +int power_init_board (void ) + __attribute__((weak,alias ("__power_init_board" ))); +init_fnc_t *init_sequence[] = { arch_cpu_init,/* basic arch cpu dependent setup */
@@ -525,6 +532,7 @@ void board_init_r(gd_t *id, ulong dest_addr)#ifdef CONFIG_ARCH_EARLY_INIT_R arch_early_init_r ();#endif +power_init_board ();#if !defined(CONFIG_SYS_NO_FLASH )puts ("Flash: " );
Signature · 1 line
1.7.2.3
PATCH v4 6/24 pmic: Enable power_board_init() support at TRATS
In reply to Lukasz MajewskiEnable support for power_board_init() method at TRATS board.
---
Changes for v2:
- None
Changes for v3:
- Remove CONFIG_POWER_INIT flag
Changes for v4:
- None
--- board/samsung/trats/trats.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)
board/samsung/trats/trats.c +7 -4
@@ -68,10 +68,6 @@ int board_init(void)check_hw_revision ();printf ("HW Revision:\t0x%x\n" , board_rev); -#if defined(CONFIG_PMIC ) -pmic_init (I2C_5 ); -#endif -return 0 ; }
@@ -90,6 +86,13 @@ void i2c_init_board(void)s5p_gpio_direction_output (&gpio2->y4,1 ,1 ); } +int power_init_board (void ) +{ +pmic_init (I2C_5 ); + +return 0 ; +} +int dram_init (void ) { gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE) +
Signature · 1 line
1.7.2.3
PATCH v4 7/24 pmic:chrg: Common information about charger and battery (power_chrg.h)
In reply to Lukasz MajewskiNew power_chrg.h file has been added to "bind" together common information about charging battery available in the system.
---
Changes for v2:
- Move struct battery elements to a separate file
Changes for v3:
- None
Changes for v4:
- None
--- include/power/power_chrg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) create mode 100644 include/power/power_chrg.h
include/power/power_chrg.h new file +43 -0
@@ -0,0 +1,43 @@ +/* +* Copyright (C) 2012 Samsung Electronics +* Lukasz Majewski <[email protected]> +* +* See file CREDITS for list of people who contributed to this +* project. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, +* MA 02111-1307 USA +*/ + +#ifndef __POWER_CHARGER_H_ +#define __POWER_CHARGER_H_ + +/* Type of available chargers */ +enum { +CHARGER_NO =0 , +CHARGER_TA , +CHARGER_USB , +CHARGER_TA_500 , +CHARGER_UNKNOWN , +}; + +enum { +UNKNOWN , +EXT_SOURCE , +CHARGE , +NORMAL , +}; + +#endif /* __POWER_CHARGER_H_ */
Signature · 1 line
1.7.2.3
PATCH v4 8/24 pmic: Move pmic related code to ./drivers/power directory
In reply to Lukasz MajewskiThe PMIC framework has been moved to its more natural place ./drivers/power from ./drivers/misc directory.
---
Changes for v2:
- New patch for v2
Changes for v3:
- None
Changes for v4:
- Move PMIC related code (max8997.c and max8998.c) to power/pmic
- Define ./power/pmic/libpmic.o library
---
Makefile | 3 +-
drivers/misc/Makefile | 7 ----
drivers/power/Makefile | 12 +++++--
drivers/power/pmic/Makefile | 48 +++++++++++++++++++++++++++
drivers/{misc => power/pmic}/pmic_max8997.c | 0
drivers/{misc => power/pmic}/pmic_max8998.c | 0
drivers/{misc => power}/pmic_core.c | 0
drivers/{misc => power}/pmic_dialog.c | 0
drivers/{misc => power}/pmic_fsl.c | 0
drivers/{misc => power}/pmic_i2c.c | 0
drivers/{misc => power}/pmic_spi.c | 0
11 files changed, 59 insertions(+), 11 deletions(-)
create mode 100644 drivers/power/pmic/Makefile
rename drivers/{misc => power/pmic}/pmic_max8997.c (100%)
rename drivers/{misc => power/pmic}/pmic_max8998.c (100%)
rename drivers/{misc => power}/pmic_core.c (100%)
rename drivers/{misc => power}/pmic_dialog.c (100%)
rename drivers/{misc => power}/pmic_fsl.c (100%)
rename drivers/{misc => power}/pmic_i2c.c (100%)
rename drivers/{misc => power}/pmic_spi.c (100%)Makefile +2 -1
@@ -292,7 +292,8 @@ LIBS-y += drivers/net/libnet.o LIBS-y += drivers/net/phy/libphy.o LIBS-y += drivers/pci/libpci.o LIBS-y += drivers/pcmcia/libpcmcia.o -LIBS-y += drivers/power/libpower.o +LIBS-y += drivers/power/libpower.o \ + drivers/power/pmic/libpmic.o LIBS-y += drivers/spi/libspi.o LIBS-y += drivers/dfu/libdfu.o ifeq ($(CPU),mpc83xx)
drivers/misc/Makefile +0 -7
@@ -34,13 +34,6 @@ COBJS-$(CONFIG_NS87308) += ns87308.o COBJS-$(CONFIG_PDSP188x) += pdsp188x.o COBJS-$(CONFIG_STATUS_LED) += status_led.o COBJS-$(CONFIG_TWL4030_LED) += twl4030_led.o -COBJS-$(CONFIG_PMIC) += pmic_core.o -COBJS-$(CONFIG_DIALOG_PMIC) += pmic_dialog.o -COBJS-$(CONFIG_PMIC_FSL) += pmic_fsl.o -COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o -COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o -COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o -COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c)
drivers/power/Makefile +9 -3
@@ -23,7 +23,7 @@ include $(TOPDIR)/config.mk -LIB := $(obj)libpower.o +LIB := $(obj)libpower.o COBJS-$(CONFIG_FTPMU010_POWER) += ftpmu010.o COBJS-$(CONFIG_TPS6586X_POWER) += tps6586x.o
@@ -31,9 +31,15 @@ COBJS-$(CONFIG_TWL4030_POWER) += twl4030.o COBJS-$(CONFIG_TWL6030_POWER) += twl6030.o COBJS-$(CONFIG_TWL6035_POWER) += twl6035.o +COBJS-$(CONFIG_PMIC) += pmic_core.o +COBJS-$(CONFIG_DIALOG_PMIC) += pmic_dialog.o +COBJS-$(CONFIG_PMIC_FSL) += pmic_fsl.o +COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o +COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o + COBJS := $(COBJS-y) -SRCS := $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) all: $(LIB)
drivers/power/pmic/Makefile new file +48 -0
48 lines not on this page · raw message
drivers/power/pmic/pmic_max8997.c renamed from drivers/misc/pmic_max8997.c +0 -0
drivers/power/pmic/pmic_max8998.c renamed from drivers/misc/pmic_max8998.c +0 -0
drivers/power/pmic_core.c renamed from drivers/misc/pmic_core.c +0 -0
drivers/power/pmic_dialog.c renamed from drivers/misc/pmic_dialog.c +0 -0
drivers/power/pmic_fsl.c renamed from drivers/misc/pmic_fsl.c +0 -0
drivers/power/pmic_i2c.c renamed from drivers/misc/pmic_i2c.c +0 -0
drivers/power/pmic_spi.c renamed from drivers/misc/pmic_spi.c +0 -0
Signature · 1 line
1.7.2.3
PATCH v4 8/24 pmic: Move pmic related code to ./drivers/power directory
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 2 lines · Lukasz Majewski
The PMIC framework has been moved to its more natural place
./drivers/powerfrom./drivers/miscdirectory.
[snip]
Quoted 7 lines
drivers/{misc=>power/pmic}/pmic_max8997.c| 0drivers/{misc=>power/pmic}/pmic_max8998.c | 0 drivers/{misc => power}/pmic_core.c | 0 drivers/{misc => power}/pmic_dialog.c | 0 drivers/{misc => power}/pmic_fsl.c | 0 drivers/{misc => power}/pmic_i2c.c | 0 drivers/{misc => power}/pmic_spi.c | 0
OK, so I think we need a slightly different re-org, after looking at the whole series, sorry. Lets go for:drivers/power/pmic/max8998.c, i2c.c, fsl.c, spi.c, etc and libpmic.o drivers/power/fuel_gauge/max17402.c and libfuel_gauge.o ... etc
And just leaving them as pmic_i2c.c, etc, if I'm forgetting some reason we can't have multiple 'i2c.c' files. Thanks!
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQkDJTAAoJENk4IS6UOR1WQVQP/ie8OxPuz50cjXmfyMw9QWHf /jDH5rArGH004eKayJgy6AHlGEYXPLMCzLB3GBNvaJMO/5UK7knr953BXF0GW7vY BDbfiir/x7i6OeG4HkXEx5x7epvHTqmrKgZ55/kPIBAeoXFWUS8zldo6xHVKk547 qyozjM/77sGfwnktuVaIRi42FLw9x511rzv5bLW0P/8FLPn6S5TKEthCeL2TIi6J YnKFyuepR9TVI4u6pkivo+SNBlzTnd/QxKyRrcRMlbrFUocxbDns/yPReY59fCVw IgRtmMCrnRrSRnkZyQQYRryonfyeE+8oDz6UsLAHklvLaSQgv0nO/EEEp7ueQ6D1 tOQwLXY3Ice8okcnVDLJlwaeUvfKGnutgdH8fzb/5yFflj7hd0BW/Bwzzxb/nAyW 8NtQ/JNphMNmuYOj+pPYXQBUKBxtBEKKvUgWhhV8uC2D7ezrC1VJt94vVB9LOjN4 GyC7bPpLMUtb8iE25583xSXG/emBBQ/gBuwng+6u0r1Iplh3pk5pJVpvjRjNJ+Gb 8lSpLzsID3o72d1HWDSK6OUWKMDb76VTr3+h2u0R7dYXDqkFxMuLbcFkBGqVx7pp Cl688qdstRSjoXBQPbPF/X1HlWuEKr64bxnIBzLiT7Z3NWjPgdtJSqZXt+x72FSU fwNHMHnCzF3B6t0fdyBe
=RmBj
-----END PGP SIGNATURE-----
PATCH v4 8/24 pmic: Move pmic related code to ./drivers/power directory
Hi Tom,
Quoted 12 lines · Lukasz Majewski
Quoted 2 lines
The PMIC framework has been moved to its more natural place
./drivers/powerfrom./drivers/miscdirectory.[snip]
Quoted 7 lines
drivers/{misc=>power/pmic}/pmic_max8997.c| 0drivers/{misc=>power/pmic}/pmic_max8998.c | 0 drivers/{misc => power}/pmic_core.c | 0 drivers/{misc => power}/pmic_dialog.c | 0 drivers/{misc => power}/pmic_fsl.c | 0 drivers/{misc => power}/pmic_i2c.c | 0 drivers/{misc => power}/pmic_spi.c | 0
Quoted 5 lines
OK, so I think we need a slightly different re-org, after looking at the whole series, sorry. Lets go for:
drivers/power/pmic/max8998.c,i2c.c,fsl.c,spi.c, etc and libpmic.odrivers/power/fuel_gauge/max17402.cand libfuel_gauge.o ... etc
I'm a bit confused now....
The approach which I've now proposed is defined at patch 8 (not 4 as you pointed out):
pmic: Move pmic related code to ./drivers/power directory
It is as follows:
1. The "core" power/pmic subsystem files are moved to: ./drivers/power/ directory (like pmic_core.c pmic_i2c.c etc.). To be more precise those files are renamed to power_* at patch 22 in the series.
2. There have been created directories for pmic, fuel gauge and battery for different HW ICs. It is (in my opinion) welcome to combine all files from the same category to one library (libfuel_gauge.o, libpmic.o, libbattery.o).
libfuel_gauge.o and libpmic.o are also linked from the top ./Makefile - due to that MAKEALL with BUILD_DIR works (without any special make "magic" at ./drivers/power dir.
3. All pmic/power related header files have been moved to ./include/power directory (with proper names to reflect corresponding IC circuit - e.g. max8998_pmic.h).
Moreover, the last three patches in the series (22,23,24) start the process of renaming from "pmic" to "power".
Quoted 4 lines
And just leaving them as
pmic_i2c.c, etc, if I'm forgetting some reason we can't have multiple 'i2c.c' files. Thanks!
Sorry, but could you clarify this proposition? From my point of view it is welcome to provide names with power_* prefix (like power_i2c.c - as it is defined at patch 22).
I'm aware, that those changes are massive, but after applying last of the 24 commits, one can evaluate the proposed directory structure as neat and clear.
Best regards,
Lukasz Majewski
PATCH v4 8/24 pmic: Move pmic related code to ./drivers/power directory
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 14 lines · Lukasz Majewski
Hi Tom,
Quoted 12 lines · Lukasz Majewski
Quoted 2 lines
The PMIC framework has been moved to its more natural place
./drivers/powerfrom./drivers/miscdirectory.[snip]
Quoted 7 lines
drivers/{misc => power/pmic}/pmic_max8997.c | 0 drivers/{misc => power/pmic}/pmic_max8998.c | 0 drivers/{misc => power}/pmic_core.c | 0 drivers/{misc => power}/pmic_dialog.c | 0 drivers/{misc => power}/pmic_fsl.c | 0 drivers/{misc => power}/pmic_i2c.c | 0 drivers/{misc => power}/pmic_spi.c | 0
Quoted 7 lines
Quoted 5 lines
OK, so I think we need a slightly different re-org, after looking at the whole series, sorry. Lets go for:
drivers/power/pmic/max8998.c,i2c.c,fsl.c,spi.c, etc and libpmic.odrivers/power/fuel_gauge/max17402.cand libfuel_gauge.o ... etcI'm a bit confused now....
OK, I was confused. I thought I had looked at the diffstat in 0/24 enough but I guess not. What you've got setup now looks good and is consistent with our other files. Thanks!
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQkGW0AAoJENk4IS6UOR1W1p8P/2yBecQVGIDgWbb9Z5efABaX /UCQh/iUgNWQlfppDYfEQB5Mxwz69ZhsWf9dLJ5w/CBrzaXK1RejZNRX7wb9k94Q Y8RXNvs5/Ih+afY8bLwNsckUOzMHX2wTxH0r5t7SbzerLWmSUVT7GD/l03t5/lIj lELhpcj2mTkWYJkLClT7HmBT2rLVCGjhOoa0pMA7+c6IkEsvnUIOya7ahlr5glem yCCnkWekdGEOcsDguj1h/UXPtoIGp3rewDihf9LfOX2DvoVArwuja93vrhZTARj8 gtkKOCEDJEs4HdDLTSujb3eaHLW5dQ3Wt4DlDfe1R20TYv2pIMYiYF7KzZQr9M+z kWGi0PzvzWJi8W2sTVb8RD6RGn9qJJlA21RqYC0jyVbPE7fyhkMdXFXq4deoW7Qg x0j4XTujAj02r+dnG6SVIcUQmNsl3aO5zkrNHWK1TZQ9+Y/DcIkLiDURLyvx0Afe KIYEJZfJrFglfyIZjzykqdav/Wv72Kpgpn8tLa+aDc/6CZlaK/G2jvV9LsCc2Jug QCmrK1PXARV8maRzXzyIpv7OGQEQ4UX2YOBPNYJOZG4cMHzAW7kELLdCBERnzK/8 1XejawyOwHaJuW2mBibOB/b0Agy3fRrLRrdT9NWLJamsqWiTSp9N4SmNptNGu1yb OQCSQf/7CcFveIbZZYuj
=YYZS
-----END PGP SIGNATURE-----
PATCH v4 9/24 pmic: Extend struct pmic to support battery and charger related operations
In reply to Lukasz MajewskiNow it is possible to provide specific function per PMIC/power device instance.
---
Changes for v2:
- New at patch v2
Changes for v3:
- separate power_{battery|chrg|fg} structures to provide battery ops
- struct pmic *parent pointer added
Changes for v4:
- None
--- include/power/battery.h | 38 ++++++++++++++++++++++++++++++++++++++ include/power/pmic.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 67 insertions(+), 1 deletions(-) create mode 100644 include/power/battery.h
include/power/battery.h new file +38 -0
@@ -0,0 +1,38 @@ +/* +* Copyright (C) 2012 Samsung Electronics +* Lukasz Majewski <[email protected]> +* +* See file CREDITS for list of people who contributed to this +* project. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, +* MA 02111-1307 USA +*/ + +#ifndef __POWER_BATTERY_H_ +#define __POWER_BATTERY_H_ + +struct battery { +unsigned int version; +unsigned int state_of_chrg; +unsigned int time_to_empty; +unsigned int capacity; +unsigned int voltage_uV; + +unsigned int state; +}; + +int power_bat_init (unsigned char bus); +#endif /* __POWER_BATTERY_H_ */
include/power/pmic.h +29 -1
@@ -27,8 +27,9 @@#include <common.h> #include <linux/list.h> #include <i2c.h> +#include <power/power_chrg.h> -enum {PMIC_I2C ,PMIC_SPI , }; +enum {PMIC_I2C ,PMIC_SPI ,PMIC_NONE };enum {I2C_PMIC ,I2C_NUM , };enum {PMIC_READ ,PMIC_WRITE , };enum {PMIC_SENSOR_BYTE_ORDER_LITTLE ,PMIC_SENSOR_BYTE_ORDER_BIG , };
@@ -48,6 +49,27 @@ struct p_spi {u32 (*prepare_tx)(u32 reg,u32 *val,u32 write); }; +struct pmic ; +struct power_fg { +int (*fg_battery_check) (struct pmic *p,struct pmic *bat); +int (*fg_battery_update) (struct pmic *p,struct pmic *bat); +}; + +struct power_chrg { +int (*chrg_type) (struct pmic *p); +int (*chrg_bat_present) (struct pmic *p); +int (*chrg_state) (struct pmic *p,int state,int current); +}; + +struct power_battery { +struct battery *bat; +int (*battery_init) (struct pmic *bat,struct pmic *p1, +struct pmic *p2,struct pmic *p3); +int (*battery_charge) (struct pmic *bat); +/* Keep info about power devices involved with battery operation */ +struct pmic *chrg, *fg, *muic; +}; +struct pmic {const char *name;unsigned char bus;
@@ -59,6 +81,12 @@ struct pmic {struct p_spi spi; } hw; +void (*low_power_mode) (void ); +struct power_battery *pbat; +struct power_chrg *chrg; +struct power_fg *fg; + +struct pmic *parent;struct list_head list; };
Signature · 1 line
1.7.2.3
PATCH v4 10/24 pmic:battery: Support for Trats Battery at PMIC framework
In reply to Lukasz MajewskiTrats battery is now treated in the same way as other power related devices. This approach allows for more unified handling of all devices responsible for power management.
---
Changes for v2:
- New patch at v2.
Changes for v3:
- only battery dependent battery_init method added
- change code according to struct pmic redesign
Changes for v4:
- Adding ./power/battery/Makefile
- Introduce the libbattery.o at Makefile
- Change the state of charge value from 5 to 100
--- Makefile | 3 +- drivers/power/battery/Makefile | 47 ++++++++++++++++++ drivers/power/battery/bat_trats.c | 94 +++++++++++++++++++++++++++++++++++++ 3 files changed, 143 insertions(+), 1 deletions(-) create mode 100644 drivers/power/battery/Makefile create mode 100644 drivers/power/battery/bat_trats.c
Makefile +2 -1
@@ -293,7 +293,8 @@ LIBS-y += drivers/net/phy/libphy.o LIBS-y += drivers/pci/libpci.o LIBS-y += drivers/pcmcia/libpcmcia.o LIBS-y += drivers/power/libpower.o \ - drivers/power/pmic/libpmic.o + drivers/power/pmic/libpmic.o \ + drivers/power/battery/libbattery.o LIBS-y += drivers/spi/libspi.o LIBS-y += drivers/dfu/libdfu.o ifeq ($(CPU),mpc83xx)
drivers/power/battery/Makefile new file +47 -0
47 lines not on this page · raw message
drivers/power/battery/bat_trats.c new file +94 -0
94 lines not on this page · raw message
Signature · 1 line
1.7.2.3
PATCH v4 11/24 pmic:muic: Support for MUIC built into MAX8997 device
In reply to Lukasz MajewskiSupport for MUIC (Micro USB Integrated Circuit) built into the MAX8997 power management device.
The MUIC device will work with redesigned PMIC framework.
---
Changes for v2:
- power_init_battery now available as a callback from MUIC struct pmic instance
Changes for v3:
- change code according to struct pmic redesign
Changes for v4:
- Move muic code to ./drivers/power/pmic directory
--- drivers/power/pmic/Makefile | 1 + drivers/power/pmic/muic_max8997.c | 84 +++++++++++++++++++++++++++++++++++++ include/power/max8997_muic.h | 61 +++++++++++++++++++++++++++ 3 files changed, 146 insertions(+), 0 deletions(-) create mode 100644 drivers/power/pmic/muic_max8997.c create mode 100644 include/power/max8997_muic.h
drivers/power/pmic/Makefile +1 -0
@@ -27,6 +27,7 @@ LIB := $(obj)libpmic.o COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o +COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c)
drivers/power/pmic/muic_max8997.c new file +84 -0
84 lines not on this page · raw message
include/power/max8997_muic.h new file +61 -0
61 lines not on this page · raw message
Signature · 1 line
1.7.2.3
PATCH v4 12/24 pmic:fuel-gauge: Support for MAX17042 fuel-gauge
In reply to Lukasz MajewskiSupport for MAX17042 fuel-gauge (FG), which is built into the MAX8997 power management device.
Special file - fg_battery_cell_params.h with cells characteristics added.
The FG device will work with redesigned PMIC framework.
---
Changes for v2:
- File moved to separate directory at ./drivers/power
- {check|update}_battery available as callbacks from struct power_battery Changes for v3:
- change code according to struct pmic redesign
Changes for v4:
- Introduce libfuel_gauge.o at ./Makefile
- Move fg_max17042.c file to ./drivers/power/fuel_gauge directory
--- Makefile | 1 + drivers/power/fuel_gauge/Makefile | 47 ++++++ drivers/power/fuel_gauge/fg_max17042.c | 244 ++++++++++++++++++++++++++++++++ include/power/fg_battery_cell_params.h | 90 ++++++++++++ include/power/max17042_fg.h | 74 ++++++++++ 5 files changed, 456 insertions(+), 0 deletions(-) create mode 100644 drivers/power/fuel_gauge/Makefile create mode 100644 drivers/power/fuel_gauge/fg_max17042.c create mode 100644 include/power/fg_battery_cell_params.h create mode 100644 include/power/max17042_fg.h
Makefile +1 -0
@@ -293,6 +293,7 @@ LIBS-y += drivers/net/phy/libphy.o LIBS-y += drivers/pci/libpci.o LIBS-y += drivers/pcmcia/libpcmcia.o LIBS-y += drivers/power/libpower.o \ + drivers/power/fuel_gauge/libfuel_gauge.o \ drivers/power/pmic/libpmic.o \ drivers/power/battery/libbattery.o LIBS-y += drivers/spi/libspi.o
drivers/power/fuel_gauge/Makefile new file +47 -0
47 lines not on this page · raw message
drivers/power/fuel_gauge/fg_max17042.c new file +244 -0
244 lines not on this page · raw message
include/power/fg_battery_cell_params.h new file +90 -0
90 lines not on this page · raw message
include/power/max17042_fg.h new file +74 -0
74 lines not on this page · raw message
Signature · 1 line
1.7.2.3
PATCH v4 13/24 pmic:max8997: Function for calculating LDO internal register value
In reply to Lukasz MajewskiFunction for calculating LDO internal register value from passed micro Volt.
---
Changes for v2:
- MAX8997_LDO_MAX_VAL defined
Changes for v3:
- None
Changes for v4:
- None
--- drivers/power/pmic/pmic_max8997.c | 16 ++++++++++++++++ include/power/max8997_pmic.h | 2 ++ 2 files changed, 18 insertions(+), 0 deletions(-)
drivers/power/pmic/pmic_max8997.c +16 -0
@@ -26,6 +26,22 @@#include <power/max8997_pmic.h> #include <i2c.h> +unsigned char max8997_reg_ldo (int uV) +{ +unsigned char ret; +if (uV <=800000 ) +return 0 ; +if (uV >=3950000 ) +return MAX8997_LDO_MAX_VAL ; + ret = (uV -800000 ) /50000 ; +if (ret >MAX8997_LDO_MAX_VAL ) { +printf ("MAX8997 LDO SETTING ERROR (%duV) -> %u\n" , uV, ret); + ret =MAX8997_LDO_MAX_VAL ; + } + +return ret; +} +int pmic_init (unsigned char bus) {struct pmic *p =pmic_alloc ();
include/power/max8997_pmic.h +2 -0
@@ -200,4 +200,6 @@ enum { EN_LDO = (0x3 << 6), }; +#define MAX8997_LDO_MAX_VAL 0x3F +unsigned char max8997_reg_ldo (int uV);#endif /* __MAX8997_PMIC_H_ */
Signature · 1 line
1.7.2.3
PATCH v4 14/24 arm:trats:pmic: Default PMIC(MAX8997) initialization for Samsung's TRATS board
In reply to Lukasz MajewskiDefault PMIC (MAX8997) initialization for Samsung's TRATS development board.
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
--- board/samsung/trats/trats.c | 150 ++++++++++++++++++++++++++++++++++++++++++ include/power/max8997_pmic.h | 9 +++ 2 files changed, 159 insertions(+), 0 deletions(-)
board/samsung/trats/trats.c +150 -0
@@ -86,10 +86,160 @@ void i2c_init_board(void)s5p_gpio_direction_output (&gpio2->y4,1 ,1 ); } +static int pmic_init_max8997 (void ) +{ +struct pmic *p =pmic_get ("MAX8997_PMIC" ); +int i =0 , ret =0 ; +u32 val; + +if (pmic_probe (p)) +return -1 ; + +/* BUCK1 VARM: 1.2V */ + val = (1200000 -650000 ) /25000 ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK1DVS1 , val); + val =ENBUCK |ACTIVE_DISCHARGE ;/* DVS OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_BUCK1CTRL , val); + +/* BUCK2 VINT: 1.1V */ + val = (1100000 -650000 ) /25000 ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK2DVS1 , val); + val =ENBUCK |ACTIVE_DISCHARGE ;/* DVS OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_BUCK2CTRL , val); + + +/* BUCK3 G3D: 1.1V - OFF */ + ret |=pmic_reg_read (p,MAX8997_REG_BUCK3CTRL , &val); + val &= ~ENBUCK ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK3CTRL , val); + + val = (1100000 -750000 ) /50000 ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK3DVS , val); + +/* BUCK4 CAMISP: 1.2V - OFF */ + ret |=pmic_reg_read (p,MAX8997_REG_BUCK4CTRL , &val); + val &= ~ENBUCK ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK4CTRL , val); + + val = (1200000 -650000 ) /25000 ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK4DVS , val); + +/* BUCK5 VMEM: 1.2V */ + val = (1200000 -650000 ) /25000 ; +for (i =0 ; i <8 ; i++) + ret |=pmic_reg_write (p,MAX8997_REG_BUCK5DVS1 + i, val); + + val =ENBUCK |ACTIVE_DISCHARGE ;/* DVS OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_BUCK5CTRL , val); + +/* BUCK6 CAM AF: 2.8V */ +/* No Voltage Setting Register */ +/* GNSLCT 3.0X */ + val =GNSLCT ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK6CTRL , val); + +/* BUCK7 VCC_SUB: 2.0V */ + val = (2000000 -750000 ) /50000 ; + ret |=pmic_reg_write (p,MAX8997_REG_BUCK7DVS , val); + +/* LDO1 VADC: 3.3V */ + val =max8997_reg_ldo (3300000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO1CTRL , val); + +/* LDO1 Disable active discharging */ + ret |=pmic_reg_read (p,MAX8997_REG_LDO1CONFIG , &val); + val &= ~LDO_ADE ; + ret |=pmic_reg_write (p,MAX8997_REG_LDO1CONFIG , val); + +/* LDO2 VALIVE: 1.1V */ + val =max8997_reg_ldo (1100000 ) |EN_LDO ; + ret |=pmic_reg_write (p,MAX8997_REG_LDO2CTRL , val); + +/* LDO3 VUSB/MIPI: 1.1V */ + val =max8997_reg_ldo (1100000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO3CTRL , val); + +/* LDO4 VMIPI: 1.8V */ + val =max8997_reg_ldo (1800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO4CTRL , val); + +/* LDO5 VHSIC: 1.2V */ + val =max8997_reg_ldo (1200000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO5CTRL , val); + +/* LDO6 VCC_1.8V_PDA: 1.8V */ + val =max8997_reg_ldo (1800000 ) |EN_LDO ; + ret |=pmic_reg_write (p,MAX8997_REG_LDO6CTRL , val); + +/* LDO7 CAM_ISP: 1.8V */ + val =max8997_reg_ldo (1800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO7CTRL , val); + +/* LDO8 VDAC/VUSB: 3.3V */ + val =max8997_reg_ldo (3300000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO8CTRL , val); + +/* LDO9 VCC_2.8V_PDA: 2.8V */ + val =max8997_reg_ldo (2800000 ) |EN_LDO ; + ret |=pmic_reg_write (p,MAX8997_REG_LDO9CTRL , val); + +/* LDO10 VPLL: 1.1V */ + val =max8997_reg_ldo (1100000 ) |EN_LDO ; + ret |=pmic_reg_write (p,MAX8997_REG_LDO10CTRL , val); + +/* LDO11 TOUCH: 2.8V */ + val =max8997_reg_ldo (2800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO11CTRL , val); + +/* LDO12 VTCAM: 1.8V */ + val =max8997_reg_ldo (1800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO12CTRL , val); + +/* LDO13 VCC_3.0_LCD: 3.0V */ + val =max8997_reg_ldo (3000000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO13CTRL , val); + +/* LDO14 MOTOR: 3.0V */ + val =max8997_reg_ldo (3000000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO14CTRL , val); + +/* LDO15 LED_A: 2.8V */ + val =max8997_reg_ldo (2800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO15CTRL , val); + +/* LDO16 CAM_SENSOR: 1.8V */ + val =max8997_reg_ldo (1800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO16CTRL , val); + +/* LDO17 VTF: 2.8V */ + val =max8997_reg_ldo (2800000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO17CTRL , val); + +/* LDO18 TOUCH_LED 3.3V */ + val =max8997_reg_ldo (3300000 ) |DIS_LDO ;/* OFF */ + ret |=pmic_reg_write (p,MAX8997_REG_LDO18CTRL , val); + +/* LDO21 VDDQ: 1.2V */ + val =max8997_reg_ldo (1200000 ) |EN_LDO ; + ret |=pmic_reg_write (p,MAX8997_REG_LDO21CTRL , val); + +/* SAFEOUT for both 1 and 2: 4.9V, Active discharge, Enable */ + val = (SAFEOUT_4_90V <<0 ) | (SAFEOUT_4_90V <<2 ) | +ACTDISSAFEO1 |ACTDISSAFEO2 |ENSAFEOUT1 |ENSAFEOUT2 ; + ret |=pmic_reg_write (p,MAX8997_REG_SAFEOUTCTRL , val); + +if (ret) { +puts ("MAX8997 PMIC setting error!\n" ); +return -1 ; + } +return 0 ; +} +int power_init_board (void ) {pmic_init (I2C_5 ); +pmic_init_max8997 ();return 0 ; }
include/power/max8997_pmic.h +9 -0
@@ -176,6 +176,15 @@ enum {#define ENSAFEOUT1 (1 << 6)#define ENSAFEOUT2 (1 << 7) +#define ENBUCK (1 << 0) +#define ACTIVE_DISCHARGE (1 << 3) +#define GNSLCT (1 << 2) +#define LDO_ADE (1 << 1) +#define SAFEOUT_4_85V 0x00 +#define SAFEOUT_4_90V 0x01 +#define SAFEOUT_4_95V 0x02 +#define SAFEOUT_3_30V 0x03 +/* Charger */ enum {CHARGER_ENABLE ,CHARGER_DISABLE };#define DETBAT (1 << 2)
Signature · 1 line
1.7.2.3
PATCH v4 15/24 arm:trats:pmic: Enable MUIC (MAX8997) at Samsung's TRATS board
In reply to Lukasz MajewskiMUIC IC built into the MAX8997 device is enabled at TRATS.
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
--- board/samsung/trats/trats.c | 2 ++ include/configs/trats.h | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)
board/samsung/trats/trats.c +2 -0
@@ -38,6 +38,7 @@#include <usb/s3c_udc.h> #include <power/max8997_pmic.h> #include <libtizen.h> +#include <power/max8997_muic.h> #include "setup.h"
@@ -240,6 +241,7 @@ int power_init_board(void)pmic_init (I2C_5 );pmic_init_max8997 (); +power_muic_init (I2C_5 );return 0 ; }
include/configs/trats.h +2 -0
@@ -238,6 +238,8 @@#define CONFIG_PMIC_I2C #define CONFIG_PMIC_MAX8997 +#define CONFIG_POWER_MUIC +#define CONFIG_POWER_MUIC_MAX8997 #define CONFIG_USB_GADGET #define CONFIG_USB_GADGET_S3C_UDC_OTG #define CONFIG_USB_GADGET_DUALSPEED
Signature · 1 line
1.7.2.3
PATCH v4 16/24 arm:trats:pmic: Enable fuel-gauge (MAX17042) at Samsung's TRATS board
In reply to Lukasz MajewskiFG IC built into the MAX8997 device (compliant to MAX17042) is enabled at TRATS.
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
--- board/samsung/trats/trats.c | 2 ++ include/configs/trats.h | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)
board/samsung/trats/trats.c +2 -0
@@ -39,6 +39,7 @@#include <power/max8997_pmic.h> #include <libtizen.h> #include <power/max8997_muic.h> +#include <power/max17042_fg.h> #include "setup.h"
@@ -241,6 +242,7 @@ int power_init_board(void)pmic_init (I2C_5 );pmic_init_max8997 (); +power_fg_init (I2C_9 );power_muic_init (I2C_5 );return 0 ; }
include/configs/trats.h +2 -0
@@ -238,6 +238,8 @@#define CONFIG_PMIC_I2C #define CONFIG_PMIC_MAX8997 +#define CONFIG_POWER_FG +#define CONFIG_POWER_FG_MAX17042 #define CONFIG_POWER_MUIC #define CONFIG_POWER_MUIC_MAX8997 #define CONFIG_USB_GADGET
Signature · 1 line
1.7.2.3
PATCH v4 17/24 arm:trats:pmic: Enable battery support at Samsung's TRATS board
In reply to Lukasz MajewskiSupport for TRATS battery has been added. It is treated as a "normal" power related device and thereof controlled by pmic/power subsystem.
---
Changes for v2:
- New patch for v2.
Changes for v3:
- None
Changes for v4:
- None
--- board/samsung/trats/trats.c | 2 ++ include/configs/trats.h | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)
board/samsung/trats/trats.c +2 -0
@@ -39,6 +39,7 @@#include <power/max8997_pmic.h> #include <libtizen.h> #include <power/max8997_muic.h> +#include <power/battery.h> #include <power/max17042_fg.h> #include "setup.h"
@@ -244,6 +245,7 @@ int power_init_board(void)pmic_init_max8997 ();power_fg_init (I2C_9 );power_muic_init (I2C_5 ); +power_bat_init (0 );return 0 ; }
include/configs/trats.h +2 -0
@@ -242,6 +242,8 @@#define CONFIG_POWER_FG_MAX17042 #define CONFIG_POWER_MUIC #define CONFIG_POWER_MUIC_MAX8997 +#define CONFIG_POWER_BATTERY +#define CONFIG_POWER_BATTERY_TRATS #define CONFIG_USB_GADGET #define CONFIG_USB_GADGET_S3C_UDC_OTG #define CONFIG_USB_GADGET_DUALSPEED
Signature · 1 line
1.7.2.3
PATCH v4 18/24 pmic:max8997: Support for MAX8997 internal charger control
In reply to Lukasz MajewskiSupport for MAX8997 built-in charger.
---
Changes for v2:
- power_init_battery() method added to be called from MAX8997 struct pmic instance
Changes for v3:
- change code according to struct pmic redesign
Changes for v4:
- None
--- drivers/power/pmic/pmic_max8997.c | 59 ++++++++++++++++++++++++++++++++++++- 1 files changed, 58 insertions(+), 1 deletions(-)
drivers/power/pmic/pmic_max8997.c +58 -1
@@ -42,12 +42,68 @@ unsigned char max8997_reg_ldo(int uV)return ret; } +static int pmic_charger_state (struct pmic *p,int state,int current) +{ +unsigned char fc; +u32 val =0 ; + +if (pmic_probe (p)) +return -1 ; + +if (state ==CHARGER_DISABLE ) { +puts ("Disable the charger.\n" ); +pmic_reg_read (p,MAX8997_REG_MBCCTRL2 , &val); + val &= ~(MBCHOSTEN |VCHGR_FC ); +pmic_reg_write (p,MAX8997_REG_MBCCTRL2 , val); + +return -1 ; + } + +if (current <CHARGER_MIN_CURRENT || current >CHARGER_MAX_CURRENT ) { +printf ("%s: Wrong charge current: %d [mA]\n" , + __func__, current); +return -1 ; + } + + fc = (current -CHARGER_MIN_CURRENT ) /CHARGER_CURRENT_RESOLUTION ; + fc = fc &0xf ;/* up to 950 mA */ + +printf ("Enable the charger @ %d [mA]\n" , fc *CHARGER_CURRENT_RESOLUTION + +CHARGER_MIN_CURRENT ); + + val = fc |MBCICHFCSET ; +pmic_reg_write (p,MAX8997_REG_MBCCTRL4 , val); + +pmic_reg_read (p,MAX8997_REG_MBCCTRL2 , &val); + val =MBCHOSTEN |VCHGR_FC ;/* enable charger & fast charge */ +pmic_reg_write (p,MAX8997_REG_MBCCTRL2 , val); + +return 0 ; +} + +static int pmic_charger_bat_present (struct pmic *p) +{ +u32 val; + +if (pmic_probe (p)) +return -1 ; + +pmic_reg_read (p,MAX8997_REG_STATUS4 , &val); + +return !(val &DETBAT ); +} + +static struct power_chrg power_chrg_pmic_ops = { + .chrg_bat_present = pmic_charger_bat_present, + .chrg_state = pmic_charger_state, +}; +int pmic_init (unsigned char bus) {struct pmic *p =pmic_alloc ();static const char name[] ="MAX8997_PMIC" ; -puts ("Board PMIC init\n" ); +debug ("Board PMIC init\n" ); p->name = name; p->interface =PMIC_I2C ;
@@ -56,5 +112,6 @@ int pmic_init(unsigned char bus) p->hw.i2c.tx_num =1 ; p->bus = bus; + p->chrg = &power_chrg_pmic_ops;return 0 ; }
Signature · 1 line
1.7.2.3
PATCH v4 19/24 arm:trats:pmic: Power consumption reduction state for Samsung's TRATS board
In reply to Lukasz MajewskiWhen charging battery is necessary, the development board needs to be turned into low power mode for better efficiency.
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
- None
--- board/samsung/trats/trats.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 41 insertions(+), 0 deletions(-)
board/samsung/trats/trats.c +41 -0
@@ -89,6 +89,47 @@ void i2c_init_board(void)s5p_gpio_direction_output (&gpio2->y4,1 ,1 ); } +static void trats_low_power_mode (void ) +{ +struct exynos4_clock *clk = + (struct exynos4_clock *)samsung_get_base_clock (); +struct exynos4_power *pwr = + (struct exynos4_power *)samsung_get_base_power (); + +/* Power down CORE1 */ +writel (0x0 , &pwr->arm_core1_configuration); + +/* Change the APLL frequency */ +writel (0xa0c80604 , &clk->apll_con0); +/* Change CPU0 clock divider */ +writel (0x00000100 , &clk->div_cpu0); +/* CLK_DIV_STAT_CPU0 - wait until clock gets stable */ +while (readl (&clk->div_stat_cpu0) &0x1111111 ) + ; + +/* Change clock divider ratio for DMC */ +writel (0x13113117 , &clk->div_dmc0); +while (readl (&clk->div_stat_dmc0) &0x11111111 ) + ; + +/* Turn off unnecessary power domains */ +writel (0x0 , &pwr->xxti_configuration);/* XXTI */ +writel (0x0 , &pwr->cam_configuration);/* CAM */ +writel (0x0 , &pwr->tv_configuration);/* TV */ +writel (0x0 , &pwr->mfc_configuration);/* MFC */ +writel (0x0 , &pwr->g3d_configuration);/* G3D */ +writel (0x0 , &pwr->gps_configuration);/* GPS */ +writel (0x0 , &pwr->gps_alive_configuration);/* GPS_ALIVE */ + +/* Turn off unnecessary clocks */ +writel (0x0 , &clk->gate_ip_cam);/* CAM */ +writel (0x0 , &clk->gate_ip_tv);/* TV */ +writel (0x0 , &clk->gate_ip_mfc);/* MFC */ +writel (0x0 , &clk->gate_ip_g3d);/* G3D */ +writel (0x0 , &clk->gate_ip_image);/* IMAGE */ +writel (0x0 , &clk->gate_ip_gps);/* GPS */ +} +static int pmic_init_max8997 (void ) {struct pmic *p =pmic_get ("MAX8997_PMIC" );
Signature · 1 line
1.7.2.3
PATCH v4 20/24 arm:trats:pmic: Support for charging battery at Samsung's TRATS board
In reply to Lukasz MajewskiThe battery connected to Samsung's Trats development board is now charged when voltage drops below threshold.
---
Changes for v2:
- Define separate *p_{} pointer instances for each power device available at Trats
- Only basic checks performed
- Core responsible for battery charging moved to separate file - ./drivers/power/bat_trats.c
Changes for v3:
- change code according to struct pmic redesign
Changes for v4:
- None
--- board/samsung/trats/trats.c | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-)
board/samsung/trats/trats.c +29 -0
@@ -281,12 +281,41 @@ static int pmic_init_max8997(void)int power_init_board (void ) { +int chrg; +struct power_battery *pb; +struct pmic *p_fg, *p_chrg, *p_muic, *p_bat;pmic_init (I2C_5 );pmic_init_max8997 ();power_fg_init (I2C_9 );power_muic_init (I2C_5 );power_bat_init (0 ); + p_fg =pmic_get ("MAX17042_FG" ); + p_chrg =pmic_get ("MAX8997_PMIC" ); + p_muic =pmic_get ("MAX8997_MUIC" ); + p_bat =pmic_get ("BAT_TRATS" ); + + p_fg->parent = p_bat; + p_chrg->parent = p_bat; + p_muic->parent = p_bat; + + p_bat->low_power_mode = trats_low_power_mode; + p_bat->pbat->battery_init (p_bat, p_fg, p_chrg, p_muic); + + pb = p_bat->pbat; + chrg = p_muic->chrg->chrg_type (p_muic); +debug ("CHARGER TYPE: %d\n" , chrg); + +if (!p_chrg->chrg->chrg_bat_present (p_chrg)) { +puts ("No battery detected\n" ); +return -1 ; + } + + p_fg->fg->fg_battery_check (p_fg, p_bat); + +if (pb->bat->state ==CHARGE && chrg ==CHARGER_USB ) +puts ("CHARGE Battery !\n" ); +return 0 ; }
Signature · 1 line
1.7.2.3
PATCH v4 21/24 pmic: Extend PMIC framework to support battery related commands
In reply to Lukasz MajewskiTwo extra commands:
"pmic name bat state" and "pmic name bat charge" has been added to pmic framework. Those provides state display and charge capabilities to named batteries.
The pmic_core.c file has been refactored to more consistent name scheme.
---
Changes for v2:
- New patch to v2.
Changes for v3:
- change code according to struct pmic redesign
Changes for v4:
- None
--- drivers/power/pmic_core.c | 51 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 41 insertions(+), 10 deletions(-)
drivers/power/pmic_core.c +41 -10
@@ -124,35 +124,46 @@ struct pmic *pmic_get(const char *s)return NULL ; } +const char *power_get_interface (int interface) +{ +const char *power_interface[] = {"I2C" ,"SPI" ,"|+|-|" }; +return power_interface[interface]; +} +static void pmic_list_names (void ) {struct pmic *p;puts ("PMIC devices:\n" );list_for_each_entry (p, &pmic_list, list) { -printf ("name: %s\n" , p->name); +printf ("name: %s bus: %s_%d\n" , p->name, +power_get_interface (p->interface), p->bus); } }int do_pmic (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) {u32 ret, reg, val; +char *cmd, *name;struct pmic *p; -char *cmd;/* at least two arguments please */ if (argc <2 )return CMD_RET_USAGE ; - cmd = argv[1 ]; - -if (strcmp (cmd,"list" ) ==0 ) { +if (strcmp (argv[1 ],"list" ) ==0 ) {pmic_list_names ();return CMD_RET_SUCCESS ; } + name = argv[1 ]; + cmd = argv[2 ]; + +debug ("%s: name: %s cmd: %s\n" , __func__, name, cmd); + p =pmic_get (name); +if (strcmp (cmd,"dump" ) ==0 ) { -if (pmic_dump (pmic_get (argv[2 ]))) +if (pmic_dump (p))return CMD_RET_FAILURE ;return CMD_RET_SUCCESS ; }
@@ -162,7 +173,6 @@ int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])return CMD_RET_USAGE ; reg =simple_strtoul (argv[3 ],NULL ,16 ); - p =pmic_get (argv[2 ]); ret =pmic_reg_read (p, reg, &val);if (ret)
@@ -179,12 +189,31 @@ int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) reg =simple_strtoul (argv[3 ],NULL ,16 ); val =simple_strtoul (argv[4 ],NULL ,16 ); - p =pmic_get (argv[2 ]);pmic_reg_write (p, reg, val);return CMD_RET_SUCCESS ; } +if (strcmp (cmd,"bat" ) ==0 ) { +if (argc <4 ) +return CMD_RET_USAGE ; + +if (strcmp (argv[3 ],"state" ) ==0 ) + p->fg->fg_battery_check (p->pbat->fg, p); + +if (strcmp (argv[3 ],"charge" ) ==0 ) { +if (p->pbat) { +printf ("PRINT BAT charge %s\n" , p->name); +if (p->low_power_mode) + p->low_power_mode (); +if (p->pbat->battery_charge) + p->pbat->battery_charge (p); + } + } + +return CMD_RET_SUCCESS ; + } +/* No subcommand found */ return CMD_RET_SUCCESS ; }
@@ -193,7 +222,9 @@ U_BOOT_CMD( pmic,CONFIG_SYS_MAXARGS ,1 , do_pmic,"PMIC" ,"list - list available PMICs\n" -"pmic dump name - dump named PMIC registers\n" +"pmic name dump - dump named PMIC registers\n" "pmic name read <reg> - read register\n" -"pmic name write <reg> <value> - write register" +"pmic name write <reg> <value> - write register\n" +"pmic name bat state - write register\n" +"pmic name bat charge - write register\n" );
Signature · 1 line
1.7.2.3
PATCH v4 22/24 power:pmic: Rename ./drivers/power/pmic_* to ./drivers/power/power_* files
In reply to Lukasz MajewskiRename pmic/power related files at ./drivers/power directory
---
Changes for v3:
- New patch at v3.
Changes for v4:
- None
---
drivers/power/Makefile | 10 +++++-----
drivers/power/{pmic_core.c => power_core.c} | 0
drivers/power/{pmic_dialog.c => power_dialog.c} | 0
drivers/power/{pmic_fsl.c => power_fsl.c} | 0
drivers/power/{pmic_i2c.c => power_i2c.c} | 0
drivers/power/{pmic_spi.c => power_spi.c} | 0
6 files changed, 5 insertions(+), 5 deletions(-)
rename drivers/power/{pmic_core.c => power_core.c} (100%)
rename drivers/power/{pmic_dialog.c => power_dialog.c} (100%)
rename drivers/power/{pmic_fsl.c => power_fsl.c} (100%)
rename drivers/power/{pmic_i2c.c => power_i2c.c} (100%)
rename drivers/power/{pmic_spi.c => power_spi.c} (100%)drivers/power/Makefile +5 -5
@@ -31,11 +31,11 @@ COBJS-$(CONFIG_TWL4030_POWER) += twl4030.o COBJS-$(CONFIG_TWL6030_POWER) += twl6030.o COBJS-$(CONFIG_TWL6035_POWER) += twl6035.o -COBJS-$(CONFIG_PMIC) += pmic_core.o -COBJS-$(CONFIG_DIALOG_PMIC) += pmic_dialog.o -COBJS-$(CONFIG_PMIC_FSL) += pmic_fsl.o -COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o -COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o +COBJS-$(CONFIG_PMIC) += power_core.o +COBJS-$(CONFIG_DIALOG_PMIC) += power_dialog.o +COBJS-$(CONFIG_PMIC_FSL) += power_fsl.o +COBJS-$(CONFIG_PMIC_I2C) += power_i2c.o +COBJS-$(CONFIG_PMIC_SPI) += power_spi.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c)
drivers/power/power_core.c renamed from drivers/power/pmic_core.c +0 -0
drivers/power/power_dialog.c renamed from drivers/power/pmic_dialog.c +0 -0
drivers/power/power_fsl.c renamed from drivers/power/pmic_fsl.c +0 -0
drivers/power/power_i2c.c renamed from drivers/power/pmic_i2c.c +0 -0
drivers/power/power_spi.c renamed from drivers/power/pmic_spi.c +0 -0
Signature · 1 line
1.7.2.3
PATCH v4 23/24 power:pmic: Rename CONFIG_PMIC* defines to CONFIG_POWER
In reply to Lukasz MajewskiRename all CONFIG_PMIC* defines to CONFIG_POWER*
---
Changes for v3:
- New patch at v3.
Changes for v4:
- None
--- board/samsung/goni/goni.c | 2 +- board/samsung/universal_c210/universal.c | 2 +- drivers/power/Makefile | 8 ++++---- drivers/power/pmic/Makefile | 4 ++-- drivers/power/power_fsl.c | 8 ++++---- 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 | 6 +++--- include/configs/qong.h | 6 +++--- include/configs/s5p_goni.h | 6 +++--- include/configs/s5pc210_universal.h | 6 +++--- include/configs/trats.h | 6 +++--- include/configs/tt01.h | 6 +++--- include/configs/vision2.h | 6 +++--- 19 files changed, 54 insertions(+), 54 deletions(-)
board/samsung/goni/goni.c +1 -1
@@ -41,7 +41,7 @@ int board_init(void) gd->bd->bi_arch_number =MACH_TYPE_GONI ; gd->bd->bi_boot_params =PHYS_SDRAM_1 +0x100 ; -#if defined(CONFIG_PMIC ) +#if defined(CONFIG_POWER )pmic_init (I2C_5 );#endif
board/samsung/universal_c210/universal.c +1 -1
@@ -58,7 +58,7 @@ int board_init(void) gd->bd->bi_arch_number =MACH_TYPE_UNIVERSAL_C210 ; gd->bd->bi_boot_params =PHYS_SDRAM_1 +0x100 ; -#if defined(CONFIG_PMIC ) +#if defined(CONFIG_POWER )pmic_init (I2C_5 );#endif
drivers/power/Makefile +4 -4
@@ -31,11 +31,11 @@ COBJS-$(CONFIG_TWL4030_POWER) += twl4030.o COBJS-$(CONFIG_TWL6030_POWER) += twl6030.o COBJS-$(CONFIG_TWL6035_POWER) += twl6035.o -COBJS-$(CONFIG_PMIC) += power_core.o +COBJS-$(CONFIG_POWER) += power_core.o COBJS-$(CONFIG_DIALOG_PMIC) += power_dialog.o -COBJS-$(CONFIG_PMIC_FSL) += power_fsl.o -COBJS-$(CONFIG_PMIC_I2C) += power_i2c.o -COBJS-$(CONFIG_PMIC_SPI) += power_spi.o +COBJS-$(CONFIG_POWER_FSL) += power_fsl.o +COBJS-$(CONFIG_POWER_I2C) += power_i2c.o +COBJS-$(CONFIG_POWER_SPI) += power_spi.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c)
drivers/power/pmic/Makefile +2 -2
@@ -25,8 +25,8 @@ include $(TOPDIR)/config.mk LIB := $(obj)libpmic.o -COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o -COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o +COBJS-$(CONFIG_POWER_MAX8998) += pmic_max8998.o +COBJS-$(CONFIG_POWER_MAX8997) += pmic_max8997.o COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o COBJS := $(COBJS-y)
drivers/power/power_fsl.c +4 -4
@@ -26,7 +26,7 @@#include <power/pmic.h> #include <fsl_pmic.h> -#if defined(CONFIG_PMIC_SPI ) +#if defined(CONFIG_POWER_SPI )static u32 pmic_spi_prepare_tx (u32 reg,u32 *val,u32 write) {return (write <<31 ) | (reg <<25 ) | (*val &0x00FFFFFF );
@@ -41,7 +41,7 @@ int pmic_init(unsigned char bus) p->name = name; p->number_of_regs =PMIC_NUM_OF_REGS ; -#if defined(CONFIG_PMIC_SPI ) +#if defined(CONFIG_POWER_SPI ) p->interface =PMIC_SPI ; p->bus =CONFIG_FSL_PMIC_BUS ; p->hw.spi.cs =CONFIG_FSL_PMIC_CS ;
@@ -50,13 +50,13 @@ int pmic_init(unsigned char bus) p->hw.spi.bitlen =CONFIG_FSL_PMIC_BITLEN ; p->hw.spi.flags =SPI_XFER_BEGIN |SPI_XFER_END ; p->hw.spi.prepare_tx = pmic_spi_prepare_tx; -#elif defined(CONFIG_PMIC_I2C ) +#elif defined(CONFIG_POWER_I2C ) p->interface =PMIC_I2C ; p->hw.i2c.addr =CONFIG_SYS_FSL_PMIC_I2C_ADDR ; p->hw.i2c.tx_num =3 ; p->bus = bus;#else -#error "You must select CONFIG_PMIC_SPI or CONFIG_PMIC_I2C" +#error "You must select CONFIG_POWER_SPI or CONFIG_PMIC_I2C"#endif return 0 ;
include/configs/imx31_litekit.h +3 -3
@@ -72,9 +72,9 @@#define CONFIG_DEFAULT_SPI_MODE (SPI_MODE_0 | SPI_CS_HIGH)/* PMIC Controller */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 1#define CONFIG_FSL_PMIC_CS 0#define CONFIG_FSL_PMIC_CLK 1000000
include/configs/mx31ads.h +3 -3
@@ -68,9 +68,9 @@#define CONFIG_MXC_GPIO /* PMIC Controller */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 1#define CONFIG_FSL_PMIC_CS 0#define CONFIG_FSL_PMIC_CLK 1000000
include/configs/mx31pdk.h +3 -3
@@ -69,9 +69,9 @@#define CONFIG_DEFAULT_SPI_MODE (SPI_MODE_0 | SPI_CS_HIGH)/* PMIC Controller */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 1#define CONFIG_FSL_PMIC_CS 2#define CONFIG_FSL_PMIC_CLK 1000000
include/configs/mx35pdk.h +3 -3
@@ -65,9 +65,9 @@/* * PMIC Configs */ -#define CONFIG_PMIC -#define CONFIG_PMIC_I2C -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_I2C +#define CONFIG_POWER_FSL #define CONFIG_SYS_FSL_PMIC_I2C_ADDR 0x08#define CONFIG_RTC_MC13XXX
include/configs/mx51_efikamx.h +3 -3
@@ -127,9 +127,9 @@#endif /* SPI PMIC */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 0#define CONFIG_FSL_PMIC_CS (0 | 120 << 8)#define CONFIG_FSL_PMIC_CLK 25000000
include/configs/mx51evk.h +3 -3
@@ -69,9 +69,9 @@#define CONFIG_MXC_SPI /* PMIC Controller */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 0#define CONFIG_FSL_PMIC_CS 0#define CONFIG_FSL_PMIC_CLK 2500000
include/configs/mx53evk.h +3 -3
@@ -55,9 +55,9 @@#define CONFIG_SYS_I2C_SPEED 100000/* PMIC Configs */ -#define CONFIG_PMIC -#define CONFIG_PMIC_I2C -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_I2C +#define CONFIG_POWER_FSL #define CONFIG_SYS_FSL_PMIC_I2C_ADDR 8#define CONFIG_RTC_MC13XXX
include/configs/mx53loco.h +3 -3
@@ -90,10 +90,10 @@#define CONFIG_SYS_I2C_SPEED 100000/* PMIC Controller */ -#define CONFIG_PMIC -#define CONFIG_PMIC_I2C +#define CONFIG_POWER +#define CONFIG_POWER_I2C #define CONFIG_DIALOG_PMIC -#define CONFIG_PMIC_FSL +#define CONFIG_POWER_FSL #define CONFIG_SYS_DIALOG_PMIC_I2C_ADDR 0x48#define CONFIG_SYS_FSL_PMIC_I2C_ADDR 0x8
include/configs/qong.h +3 -3
@@ -58,9 +58,9 @@#define CONFIG_DEFAULT_SPI_MODE (SPI_MODE_0 | SPI_CS_HIGH)#define CONFIG_RTC_MC13XXX -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 1#define CONFIG_FSL_PMIC_CS 0#define CONFIG_FSL_PMIC_CLK 100000
include/configs/s5p_goni.h +3 -3
@@ -215,9 +215,9 @@#define CONFIG_SYS_CACHELINE_SIZE 64 -#define CONFIG_PMIC -#define CONFIG_PMIC_I2C -#define CONFIG_PMIC_MAX8998 +#define CONFIG_POWER +#define CONFIG_POWER_I2C +#define CONFIG_POWER_MAX8998 #include <asm/arch/gpio.h> /*
include/configs/s5pc210_universal.h +3 -3
@@ -253,9 +253,9 @@#define CONFIG_I2C_MULTI_BUS #define CONFIG_SYS_MAX_I2C_BUS 7 -#define CONFIG_PMIC -#define CONFIG_PMIC_I2C -#define CONFIG_PMIC_MAX8998 +#define CONFIG_POWER +#define CONFIG_POWER_I2C +#define CONFIG_POWER_MAX8998 #define CONFIG_USB_GADGET #define CONFIG_USB_GADGET_S3C_UDC_OTG
include/configs/trats.h +3 -3
@@ -234,9 +234,9 @@#define CONFIG_SOFT_I2C_GPIO_SDA get_multi_sda_pin()#define I2C_INIT multi_i2c_init() -#define CONFIG_PMIC -#define CONFIG_PMIC_I2C -#define CONFIG_PMIC_MAX8997 +#define CONFIG_POWER +#define CONFIG_POWER_I2C +#define CONFIG_POWER_MAX8997 #define CONFIG_POWER_FG #define CONFIG_POWER_FG_MAX17042
include/configs/tt01.h +3 -3
@@ -149,9 +149,9 @@#define CONFIG_MXC_GPIO /* MC13783 connected to CSPI3 and SS0 */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 2#define CONFIG_FSL_PMIC_CS 0
include/configs/vision2.h +3 -3
@@ -87,9 +87,9 @@#define CONFIG_ENV_IS_IN_SPI_FLASH /* PMIC Controller */ -#define CONFIG_PMIC -#define CONFIG_PMIC_SPI -#define CONFIG_PMIC_FSL +#define CONFIG_POWER +#define CONFIG_POWER_SPI +#define CONFIG_POWER_FSL #define CONFIG_FSL_PMIC_BUS 0#define CONFIG_FSL_PMIC_CS 0#define CONFIG_FSL_PMIC_CLK 2500000
Signature · 1 line
1.7.2.3
PATCH v4 24/24 power:pmic: Rename CONFIG_DIALOG_PMIC defines to CONFIG_DIALOG_POWER
In reply to Lukasz MajewskiRename CONFIG_DIALOG_PMIC to CONFIG_DIALOG_POWER
---
Changes for v3:
- New patch at v3.
Changes for v4:
- None
--- drivers/power/Makefile | 2 +- include/configs/mx53loco.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/power/Makefile +1 -1
@@ -32,7 +32,7 @@ COBJS-$(CONFIG_TWL6030_POWER) += twl6030.o COBJS-$(CONFIG_TWL6035_POWER) += twl6035.o COBJS-$(CONFIG_POWER) += power_core.o -COBJS-$(CONFIG_DIALOG_PMIC) += power_dialog.o +COBJS-$(CONFIG_DIALOG_POWER) += power_dialog.o COBJS-$(CONFIG_POWER_FSL) += power_fsl.o COBJS-$(CONFIG_POWER_I2C) += power_i2c.o COBJS-$(CONFIG_POWER_SPI) += power_spi.o
include/configs/mx53loco.h +1 -1
@@ -92,7 +92,7 @@/* PMIC Controller */ #define CONFIG_POWER #define CONFIG_POWER_I2C -#define CONFIG_DIALOG_PMIC +#define CONFIG_DIALOG_POWER #define CONFIG_POWER_FSL #define CONFIG_SYS_DIALOG_PMIC_I2C_ADDR 0x48#define CONFIG_SYS_FSL_PMIC_I2C_ADDR 0x8
Signature · 1 line
1.7.2.3
v4 cover pmic: Redesign PMIC framework to support multiple instances of devices
In reply to Lukasz MajewskiQuoted 147 lines · Lukasz Majewski
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.cfile 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 boardLukasz 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: Introducepower_init_board()method at./lib/board.cfile
pmic: Enablepower_board_init()support at TRATS pmic:chrg: Common information about charger and battery(power_chrg.h)pmic: Move pmic related code to
./drivers/powerdirectory
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 toCONFIG_POWERpower:pmic: RenameCONFIG_DIALOG_PMICdefines toCONFIG_DIALOG_POWERMakefile | 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
Quoted 9 lines
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.hI reviewed V3, nice works !
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== 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 =====================================================================
v4 cover pmic: Redesign PMIC framework to support multiple instances of devices
Hi Stefano,
Quoted 167 lines · Lukasz Majewski
Quoted 156 lines
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.cfile 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 boardLukasz 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: Introducepower_init_board()method at./lib/board.cfile
pmic: Enablepower_board_init()support at TRATS pmic:chrg: Common information about charger and battery(power_chrg.h)pmic: Move pmic related code to
./drivers/powerdirectory
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 toCONFIG_POWERpower:pmic: RenameCONFIG_DIALOG_PMICdefines toCONFIG_DIALOG_POWERMakefile | 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 ++++ 55files changed, 1847 insertions(+), 485 deletions(-) delete mode 100644
drivers/misc/pmic_core.cdelete mode 100644drivers/misc/pmic_i2c.cdelete mode 100644drivers/misc/pmic_max8997.ccreate mode 100644drivers/power/battery/Makefilecreate mode 100644drivers/power/battery/bat_trats.ccreate mode 100644drivers/power/fuel_gauge/Makefilecreate mode 100644drivers/power/fuel_gauge/fg_max17042.ccreate mode 100644drivers/power/pmic/Makefilecreate mode 100644drivers/power/pmic/muic_max8997.ccreate mode 100644drivers/power/pmic/pmic_max8997.crenamedrivers/{misc=>power/pmic}/pmic_max8998.c(89%) create mode 100644drivers/power/power_core.crenamedrivers/{misc/pmic_dialog.c=>power/power_dialog.c} (89%) renamedrivers/{misc/pmic_fsl.c=>power/power_fsl.c} (86%) create mode 100644drivers/power/power_i2c.crenamedrivers/{misc/pmic_spi.c=>Quoted 9 lines
power/power_spi.c} (97%) delete mode 100644include/pmic.hcreate mode 100644include/power/battery.hcreate mode 100644include/power/fg_battery_cell_params.hcreate mode 100644include/power/max17042_fg.hcreate mode 100644include/power/max8997_muic.hrenameinclude/{=>power}/max8997_pmic.h(88%) renameinclude/{=>power}/max8998_pmic.h(100%) create mode 100644include/power/pmic.hcreate mode 100644include/power/power_chrg.h
Quoted 2 lines
I reviewed V3, nice works !
Nice to hear, thanks :-)
Quoted 5 lines
Acked-by Stefano Babic <[email protected]>Best regards,
Stefano Babic
Signature · 5 lines
Best regards, Lukasz Majewski Samsung Poland R&D Center | Linux Platform Group
v4 cover pmic: Redesign PMIC framework to support multiple instances of devices
In reply to Lukasz MajewskiQuoted 2 lines · Lukasz Majewski
PMIC framework has been redesigned to support multiple instances of power related devices (e.g. fuel gauge, PMICs, chargers, micro USB IC, battery).
I _think_ this series is causing:
$ uboot-build.sh mx51_efikamx Testing mx51_efikamx on -00522-gce00053-dirty Sat Nov 3 15:55:17 MST 2012 Configuring for mx51_efikamx - Board: mx51_efikamx, Options: MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg efikamx.c:35:18: fatal error: pmic.h: No such file or directory make: *** [/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/libmx51_efikamx.o] Error 2 arm-linux-gnueabi-size: 'mx51_efikamx/u-boot': No such file efikamx.c:35:18: fatal error: pmic.h: No such file or directory compilation terminated. make[1]: *** No rule to make target `/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/.depend', needed by `/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/libmx51_efikamx.o'. Stop. make: *** [/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/libmx51_efikamx.o] Error 2
In my local tree. Can you reproduce? Thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121103/a279eb4c/attachment.pgp>
v4 cover pmic: Redesign PMIC framework to support multiple instances of devices
Hi Tom,
Quoted 28 lines · Lukasz Majewski
Quoted 4 lines
PMIC framework has been redesigned to support multiple instances of power related devices (e.g. fuel gauge, PMICs, chargers, micro USB IC, battery).
I _think_ this series is causing:
$ uboot-build.sh mx51_efikamx Testing mx51_efikamx on -00522-gce00053-dirty Sat Nov 3 15:55:17 MST 2012 Configuring for mx51_efikamx - Board: mx51_efikamx, Options: MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg efikamx.c:35:18: fatal error: pmic.h: No such file or directory make: *** [/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/libmx51_efikamx.o] Error 2 arm-linux-gnueabi-size: 'mx51_efikamx/u-boot': No such file efikamx.c:35:18: fatal error: pmic.h: No such file or directory compilation terminated. make[1]: *** No rule to make target `/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/.depend', needed by `/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/libmx51_efikamx.o'. Stop. make: *** [/home/trini/work/ssd/u-boot/u-boot/mx51_efikamx/board/genesi/mx51_efikamx/libmx51_efikamx.o] Error 2
Quoted 2 lines
In my local tree. Can you reproduce? Thanks!
Yes, I encounter the same error. I will fix it.
Signature · 5 lines
Best regards, Lukasz Majewski Samsung Poland R&D Center | Linux Platform Group