summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames_Chao <james_chao@asus.corp-partner.google.com>2019-01-22 17:02:47 +0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-25 04:09:05 -0800
commit4ca73139635261ee1273fbe1767dcf06886d2208 (patch)
tree326d22a57ba490819490f4a9795112902b44a1af
parentc7db1b252418b36a6a0ec619b45ad0aa443af3c8 (diff)
downloadchrome-ec-4ca73139635261ee1273fbe1767dcf06886d2208.tar.gz
Ampton: Set the PS8751 to source mode before enter low power mode
BUG=b:113830171 BRANCH=octopus TEST=check the power consumption is lower Change-Id: I527cdc5d1e4dd5de137ab0927e66c171696758ce Signed-off-by: James_Chao <james_chao@asus.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/1426306 Commit-Ready: James Chao <james_chao@asus.corp-partner.google.com> Tested-by: James Chao <james_chao@asus.corp-partner.google.com> Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r--baseboard/octopus/variant_usbc_ec_tcpcs.c2
-rw-r--r--board/ampton/board.c4
-rw-r--r--driver/tcpm/ps8xxx.c14
-rw-r--r--driver/tcpm/ps8xxx.h2
-rw-r--r--driver/tcpm/tcpci.c2
-rw-r--r--driver/tcpm/tcpci.h1
6 files changed, 21 insertions, 4 deletions
diff --git a/baseboard/octopus/variant_usbc_ec_tcpcs.c b/baseboard/octopus/variant_usbc_ec_tcpcs.c
index 35365e232b..570a919b6c 100644
--- a/baseboard/octopus/variant_usbc_ec_tcpcs.c
+++ b/baseboard/octopus/variant_usbc_ec_tcpcs.c
@@ -73,7 +73,7 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
.port_addr = MUX_PORT_AND_ADDR(
I2C_PORT_USBC1, PS8751_I2C_ADDR1),
.flags = USB_MUX_FLAG_NOT_TCPC,
- .driver = &tcpci_tcpm_usb_mux_driver,
+ .driver = &ps8xxx_usb_mux_driver,
.hpd_update = &ps8xxx_tcpc_update_hpd_status,
}
};
diff --git a/board/ampton/board.c b/board/ampton/board.c
index a405a265c0..caca6f1d13 100644
--- a/board/ampton/board.c
+++ b/board/ampton/board.c
@@ -72,7 +72,7 @@ struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
.port_addr = MUX_PORT_AND_ADDR(
I2C_PORT_USBC0, PS8751_I2C_ADDR1),
.flags = USB_MUX_FLAG_NOT_TCPC,
- .driver = &tcpci_tcpm_usb_mux_driver,
+ .driver = &ps8xxx_usb_mux_driver,
.hpd_update = &ps8xxx_tcpc_update_hpd_status,
},
[USB_PD_PORT_ITE_1] = {
@@ -80,7 +80,7 @@ struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
.port_addr = MUX_PORT_AND_ADDR(
I2C_PORT_USBC1, PS8751_I2C_ADDR1),
.flags = USB_MUX_FLAG_NOT_TCPC,
- .driver = &tcpci_tcpm_usb_mux_driver,
+ .driver = &ps8xxx_usb_mux_driver,
.hpd_update = &ps8xxx_tcpc_update_hpd_status,
}
};
diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c
index 3bf2ab5b12..3cb6903e5b 100644
--- a/driver/tcpm/ps8xxx.c
+++ b/driver/tcpm/ps8xxx.c
@@ -206,3 +206,17 @@ struct i2c_stress_test_dev ps8xxx_i2c_stress_test_dev = {
.i2c_write = &tcpc_i2c_write,
};
#endif /* CONFIG_CMD_I2C_STRESS_TEST_TCPC */
+
+static int ps8xxx_mux_enter_low_power_mode(int port)
+{
+ mux_write(port, TCPC_REG_ROLE_CTRL,
+ TCPC_REG_ROLE_CTRL_SET(0, 0, TYPEC_CC_RP, TYPEC_CC_RP));
+ return tcpci_tcpm_mux_enter_low_power(port);
+}
+
+const struct usb_mux_driver ps8xxx_usb_mux_driver = {
+ .init = &tcpci_tcpm_mux_init,
+ .set = &tcpci_tcpm_mux_set,
+ .get = &tcpci_tcpm_mux_get,
+ .enter_low_power_mode = &ps8xxx_mux_enter_low_power_mode,
+};
diff --git a/driver/tcpm/ps8xxx.h b/driver/tcpm/ps8xxx.h
index 1459bb4b3e..6d0faab56f 100644
--- a/driver/tcpm/ps8xxx.h
+++ b/driver/tcpm/ps8xxx.h
@@ -67,4 +67,6 @@ void ps8xxx_tcpc_update_hpd_status(int port, int hpd_lvl, int hpd_irq);
extern struct i2c_stress_test_dev ps8xxx_i2c_stress_test_dev;
#endif /* defined(CONFIG_CMD_I2C_STRESS_TEST_TCPC) */
+extern const struct usb_mux_driver ps8xxx_usb_mux_driver;
+
#endif /* defined(__CROS_EC_USB_PD_TCPM_PS8XXX_H) */
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c
index f7d98312cf..f20fbd91e3 100644
--- a/driver/tcpm/tcpci.c
+++ b/driver/tcpm/tcpci.c
@@ -809,7 +809,7 @@ int tcpci_tcpm_mux_init(int port)
return error ? EC_ERROR_UNKNOWN : EC_SUCCESS;
}
-static int tcpci_tcpm_mux_enter_low_power(int port)
+int tcpci_tcpm_mux_enter_low_power(int port)
{
/* If this MUX is also the TCPC, then skip low power */
if (!(usb_muxes[port].flags & USB_MUX_FLAG_NOT_TCPC))
diff --git a/driver/tcpm/tcpci.h b/driver/tcpm/tcpci.h
index 52a4d62847..8084e92232 100644
--- a/driver/tcpm/tcpci.h
+++ b/driver/tcpm/tcpci.h
@@ -155,6 +155,7 @@ void tcpci_tcpc_discharge_vbus(int port, int enable);
int tcpci_tcpm_mux_init(int i2c_addr);
int tcpci_tcpm_mux_set(int i2c_addr, mux_state_t mux_state);
int tcpci_tcpm_mux_get(int i2c_addr, mux_state_t *mux_state);
+int tcpci_tcpm_mux_enter_low_power(int port);
int tcpci_get_chip_info(int port, int renew,
struct ec_response_pd_chip_info_v1 **chip_info);
#ifdef CONFIG_USBC_PPC