diff options
author | Ting Shen <phoenixshen@google.com> | 2021-07-05 16:46:56 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-20 07:25:08 +0000 |
commit | 40bebeea31a6a22607e963e1e075b1b096294c8d (patch) | |
tree | c6e21db24700823c136542cdd464d17f080720f5 /driver | |
parent | d385897bc7102dc107306644bb2701cc93a286ea (diff) | |
download | chrome-ec-40bebeea31a6a22607e963e1e075b1b096294c8d.tar.gz |
rt1718s: implement low power mode
enable low power mode to further decrease power consumption.
BUG=b:192815893
TEST=manually measure power
BRANCH=main
Signed-off-by: Ting Shen <phoenixshen@google.com>
Change-Id: Ib5d22d1d3c9cc8ed644075b8ed239f96d0eea67e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3004127
Reviewed-by: Eric Yilun Lin <yllin@google.com>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/tcpm/rt1718s.c | 16 | ||||
-rw-r--r-- | driver/tcpm/rt1718s.h | 3 |
2 files changed, 18 insertions, 1 deletions
diff --git a/driver/tcpm/rt1718s.c b/driver/tcpm/rt1718s.c index 5c35ed03e4..0c3c9c9b10 100644 --- a/driver/tcpm/rt1718s.c +++ b/driver/tcpm/rt1718s.c @@ -321,6 +321,20 @@ static void rt1718s_alert(int port) tcpci_tcpc_alert(port); } +static int rt1718s_enter_low_power_mode(int port) +{ + /* enter low power mode */ + RETURN_ERROR(rt1718s_update_bits8(port, RT1718S_SYS_CTRL2, + RT1718S_SYS_CTRL2_LPWR_EN, 0xFF)); + RETURN_ERROR(rt1718s_update_bits8(port, RT1718S_SYS_CTRL2, + RT1718S_SYS_CTRL2_BMCIO_OSC_EN, 0)); + + /* disable DP/DM/SBU swtiches */ + RETURN_ERROR(rt1718s_write8(port, RT1718S_RT2_SBU_CTRL_01, 0)); + + return tcpci_enter_low_power_mode(port); +} + /* RT1718S is a TCPCI compatible port controller */ const struct tcpm_drv rt1718s_tcpm_drv = { .init = &rt1718s_init, @@ -353,7 +367,7 @@ const struct tcpm_drv rt1718s_tcpm_drv = { .set_src_ctrl = &tcpci_tcpm_set_src_ctrl, #endif #ifdef CONFIG_USB_PD_TCPC_LOW_POWER - .enter_low_power_mode = &tcpci_enter_low_power_mode, + .enter_low_power_mode = &rt1718s_enter_low_power_mode, #endif }; diff --git a/driver/tcpm/rt1718s.h b/driver/tcpm/rt1718s.h index b626db0281..7e42426ae3 100644 --- a/driver/tcpm/rt1718s.h +++ b/driver/tcpm/rt1718s.h @@ -24,6 +24,9 @@ #define RT1718S_SYS_CTRL1 0x8F #define RT1718S_SYS_CTRL1_TCPC_CONN_INVALID BIT(6) #define RT1718S_SYS_CTRL1_SHIPPING_OFF BIT(5) +#define RT1718S_SYS_CTRL2 0x90 +#define RT1718S_SYS_CTRL2_BMCIO_OSC_EN BIT(0) +#define RT1718S_SYS_CTRL2_LPWR_EN BIT(3) #define RT1718S_RT_MASK1 0x91 #define RT1718S_RT_MASK1_M_VBUS_FRS_LOW BIT(7) |