mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-08 16:41:55 +00:00
snow: Change TPSCHROME fastcharge timeout to 6 hours
When battery temperature t in range 0C to 10C, default charging current is 50%. And it will take longer than 3 hours to charge battery from 0% to full. Signed-off-by: Rong Chang <rongchang@chromium.org> BRANCH=snow BUG=chrome-os-partner:13172 TEST=manual Check pmu register 0x4. FASTCHARGE bits[4:2] should be 0b100. Change-Id: I133acee21c0886b0739b4b41766ca077bb4babbc Reviewed-on: https://gerrit.chromium.org/gerrit/31458 Reviewed-by: Yung-Chieh Lo <yjlou@chromium.org> Commit-Ready: Rong Chang <rongchang@chromium.org> Tested-by: Rong Chang <rongchang@chromium.org>
This commit is contained in:
@@ -279,11 +279,12 @@ void board_pmu_init(void)
|
||||
{
|
||||
int ver;
|
||||
|
||||
/*
|
||||
* Set fast charging timeout to 3hr.
|
||||
* Enable gpio charge_en control.
|
||||
*/
|
||||
pmu_write(0x04, 0x06);
|
||||
/* Set fast charging timeout to 6 hours*/
|
||||
pmu_set_fastcharge(TIMEOUT_6HRS);
|
||||
/* Enable external gpio CHARGER_EN control */
|
||||
pmu_enable_ext_control(1);
|
||||
/* Disable force charging */
|
||||
pmu_enable_charger(0);
|
||||
|
||||
/* Set NOITERM bit */
|
||||
pmu_low_current_charging(1);
|
||||
|
||||
@@ -49,7 +49,10 @@
|
||||
#define TPSCHROME_VER 0x19
|
||||
|
||||
/* Charger control */
|
||||
#define CG_CTRL0_EN 1
|
||||
#define CG_EN (1 << 0)
|
||||
#define CG_EXT_EN (1 << 1)
|
||||
#define CG_FASTCHARGE_SHIFT 2
|
||||
#define CG_FASTCHARGE_MASK (7 << CG_FASTCHARGE_SHIFT)
|
||||
|
||||
/* Charger termination voltage/current */
|
||||
#define CG_VSET_SHIFT 3
|
||||
@@ -164,6 +167,13 @@ int pmu_get_power_source(int *ac_good, int *battery_good)
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable charger's charging function
|
||||
*
|
||||
* When enable, charger ignores external control and charge the
|
||||
* battery directly. If EC wants to contorl charging, set the flag
|
||||
* to 0.
|
||||
*/
|
||||
int pmu_enable_charger(int enable)
|
||||
{
|
||||
int rv;
|
||||
@@ -173,11 +183,54 @@ int pmu_enable_charger(int enable)
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
if (reg & CG_CTRL0_EN)
|
||||
return EC_SUCCESS;
|
||||
if (enable)
|
||||
reg |= CG_EN;
|
||||
else
|
||||
reg &= ~CG_EN;
|
||||
|
||||
return pmu_write(CG_CTRL0, enable ? (reg | CG_CTRL0_EN) :
|
||||
(reg & ~CG_CTRL0));
|
||||
return pmu_write(CG_CTRL0, reg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set external charge enable pin
|
||||
*
|
||||
* @param enable boolean, set 1 to eanble external control
|
||||
*/
|
||||
int pmu_enable_ext_control(int enable)
|
||||
{
|
||||
int rv;
|
||||
int reg;
|
||||
|
||||
rv = pmu_read(CG_CTRL0, ®);
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
if (enable)
|
||||
reg |= CG_EXT_EN;
|
||||
else
|
||||
reg &= ~CG_EXT_EN;
|
||||
|
||||
return pmu_write(CG_CTRL0, reg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set fast charge timeout
|
||||
*
|
||||
* @param timeout enum FASTCHARGE_TIMEOUT
|
||||
*/
|
||||
int pmu_set_fastcharge(enum FASTCHARGE_TIMEOUT timeout)
|
||||
{
|
||||
int rv;
|
||||
int reg;
|
||||
|
||||
rv = pmu_read(CG_CTRL0, ®);
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
reg &= ~CG_FASTCHARGE_MASK;
|
||||
reg |= (timeout << CG_FASTCHARGE_SHIFT) & CG_FASTCHARGE_MASK;
|
||||
|
||||
return pmu_write(CG_CTRL0, reg);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,6 +47,18 @@ enum TPS_TERMINATION_CURRENT {
|
||||
TERM_I1000, /* 100 % */
|
||||
};
|
||||
|
||||
/* Fast charge timeout */
|
||||
enum FASTCHARGE_TIMEOUT {
|
||||
TIMEOUT_2HRS,
|
||||
TIMEOUT_3HRS,
|
||||
TIMEOUT_4HRS,
|
||||
TIMEOUT_5HRS,
|
||||
TIMEOUT_6HRS,
|
||||
TIMEOUT_7HRS,
|
||||
TIMEOUT_8HRS,
|
||||
TIMEOUT_10HRS, /* No 9 hours option */
|
||||
};
|
||||
|
||||
#define FET_BACKLIGHT 1
|
||||
#define FET_LCD_PANEL 6
|
||||
|
||||
@@ -111,7 +123,7 @@ int pmu_get_power_source(int *ac_good, int *battery_good);
|
||||
int pmu_enable_fet(int fet_id, int enable, int *power_good);
|
||||
|
||||
/**
|
||||
* Enable/disable pmu internal charger
|
||||
* Enable/disable pmu internal charger force charging mode
|
||||
*
|
||||
* @param enable 0 to disable the charger, 1 to enable
|
||||
* @return EC_SUCCESS if no I2C communication error
|
||||
@@ -190,5 +202,20 @@ void pmu_init(void);
|
||||
*/
|
||||
int pmu_shutdown(void);
|
||||
|
||||
/**
|
||||
* Set external charge enable pin
|
||||
*
|
||||
* @param enable boolean, set 1 to eanble external control
|
||||
*/
|
||||
int pmu_enable_ext_control(int enable);
|
||||
|
||||
/**
|
||||
* Set fast charge timeout
|
||||
*
|
||||
* @param timeout enum FASTCHARGE_TIMEOUT
|
||||
*/
|
||||
int pmu_set_fastcharge(enum FASTCHARGE_TIMEOUT timeout);
|
||||
|
||||
|
||||
#endif /* __CROS_EC_TPSCHROME_H */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user