From eee90a3f351c45a575623f4b9f89fa7be491937a Mon Sep 17 00:00:00 2001 From: Rong Chang Date: Wed, 27 Jun 2012 21:04:54 +0800 Subject: [PATCH] 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 Signed-off-by: Vincent Palatin 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 Reviewed-by: Simon Glass Commit-Ready: Vincent Palatin Tested-by: Vincent Palatin --- common/pmu_tps65090.c | 36 ++++++++++++++++++++++++++++++++++++ include/pmu_tpschrome.h | 3 +++ 2 files changed, 39 insertions(+) diff --git a/common/pmu_tps65090.c b/common/pmu_tps65090.c index 97e3292c54..2afe7aa585 100644 --- a/common/pmu_tps65090.c +++ b/common/pmu_tps65090.c @@ -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, ®); + 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, ®); + 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 diff --git a/include/pmu_tpschrome.h b/include/pmu_tpschrome.h index 5f9d1e89a9..757f833f17 100644 --- a/include/pmu_tpschrome.h +++ b/include/pmu_tpschrome.h @@ -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 /**