Add TPSChrome FET API

Some designs will have the PMU not directly connected to the AP but
behind the EC.
For easier bring-up, it's nice to be able to force power rails.

Signed-off-by: Rong Chang <rongchang@chromium.org>
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BUG=chrome-os-partner:10912 chrome-os-partner:14324
TEST=manual
On snow, switch on and off the backlight using the API
BRANCH=none

Change-Id: I74e05308043546cb11f7f2cdbe644944c0a0a35e
Reviewed-on: https://gerrit.chromium.org/gerrit/26234
Reviewed-by: Rong Chang <rongchang@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
This commit is contained in:
Rong Chang
2012-06-27 21:04:54 +08:00
committed by Gerrit
parent e97896945d
commit eee90a3f35
2 changed files with 39 additions and 0 deletions

View File

@@ -77,6 +77,13 @@
/* Charger alarm */
#define CHARGER_ALARM 3
/* FET control register bits */
#define FET_CTRL_ENFET (1 << 0)
#define FET_CTRL_ADENFET (1 << 1)
#define FET_CTRL_PGFET (1 << 4)
#define FET_CTRL_BASE (FET1_CTRL - 1)
void __board_hard_reset(void)
{
CPRINTF("This board is not capable of a hard reset.\n");
@@ -363,6 +370,35 @@ int pmu_low_current_charging(int enable)
return pmu_write(CG_CTRL5, reg_val);
}
int pmu_enable_fet(int fet_id, int enable, int *power_good)
{
int rv, reg;
int reg_offset;
reg_offset = FET_CTRL_BASE + fet_id;
rv = pmu_read(reg_offset, &reg);
if (rv)
return rv;
if (enable)
reg |= FET_CTRL_ADENFET | FET_CTRL_ENFET;
else
reg &= ~FET_CTRL_ENFET;
rv = pmu_write(reg_offset, reg);
if (rv)
return rv;
if (power_good) {
rv = pmu_read(reg_offset, &reg);
if (rv)
return rv;
*power_good = reg & FET_CTRL_PGFET;
}
return EC_SUCCESS;
}
void pmu_irq_handler(enum gpio_signal signal)
{
#ifdef CONFIG_AC_POWER_STATUS

View File

@@ -60,7 +60,10 @@ enum FASTCHARGE_TIMEOUT {
};
#define FET_BACKLIGHT 1
#define FET_WWAN 3
#define FET_CAMERA 5
#define FET_LCD_PANEL 6
#define FET_TS 7
/**