summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/ppc/sn5s330.c10
-rw-r--r--driver/ppc/sn5s330.h1
2 files changed, 10 insertions, 1 deletions
diff --git a/driver/ppc/sn5s330.c b/driver/ppc/sn5s330.c
index 4971ab798e..c20a665f75 100644
--- a/driver/ppc/sn5s330.c
+++ b/driver/ppc/sn5s330.c
@@ -268,8 +268,16 @@ static int sn5s330_init(int port)
/*
* Indicate we are using PP2 configuration 2 and enable OVP comparator
* for CC lines.
+ *
+ * Also, turn off under-voltage protection for incoming Vbus as it would
+ * prevent us from enabling SNK path before we hibernate the ec. We
+ * need to enable the SNK path so USB power will assert ACOK and wake
+ * the EC up went inserting USB power. We always turn off under-voltage
+ * protection because the battery charger will boost the voltage up
+ * to the needed battery voltage either way (and it will have its own
+ * low voltage protection).
*/
- regval = SN5S330_OVP_EN_CC | SN5S330_PP2_CONFIG;
+ regval = SN5S330_OVP_EN_CC | SN5S330_PP2_CONFIG | SN5S330_CONFIG_UVP;
status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET9, regval);
if (status) {
CPRINTS("ppc p%d: Failed to set FUNC_SET9!", port);
diff --git a/driver/ppc/sn5s330.h b/driver/ppc/sn5s330.h
index 2e4b36cbca..7d3ba6103e 100644
--- a/driver/ppc/sn5s330.h
+++ b/driver/ppc/sn5s330.h
@@ -103,6 +103,7 @@ enum sn5s330_pp_idx {
/* FUNC_SET_9 */
#define SN5S330_PP2_CONFIG (1 << 2)
#define SN5S330_OVP_EN_CC (1 << 4)
+#define SN5S330_CONFIG_UVP (1 << 5)
/* INT_STATUS_REG3 */
#define SN5S330_VBUS_GOOD (1 << 0)