summaryrefslogtreecommitdiff
path: root/driver/ppc/syv682x.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/ppc/syv682x.c')
-rw-r--r--driver/ppc/syv682x.c52
1 files changed, 15 insertions, 37 deletions
diff --git a/driver/ppc/syv682x.c b/driver/ppc/syv682x.c
index 4444d9f5a0..08deec7592 100644
--- a/driver/ppc/syv682x.c
+++ b/driver/ppc/syv682x.c
@@ -308,22 +308,22 @@ static int syv682x_set_vbus_source_current_limit(int port,
/* We need buffer room for all current values. */
switch (rp) {
case TYPEC_RP_3A0:
- limit = SYV682X_ILIM_3_30;
+ limit = SYV682X_5V_ILIM_3_30;
break;
case TYPEC_RP_1A5:
- limit = SYV682X_ILIM_1_75;
+ limit = SYV682X_5V_ILIM_1_75;
break;
case TYPEC_RP_USB:
default:
/* 1.25 A is lowest current limit setting for SVY682 */
- limit = SYV682X_ILIM_1_25;
+ limit = SYV682X_5V_ILIM_1_25;
break;
};
- regval &= ~SYV682X_ILIM_MASK;
- regval |= (limit << SYV682X_ILIM_BIT_SHIFT);
+ regval &= ~SYV682X_5V_ILIM_MASK;
+ regval |= (limit << SYV682X_5V_ILIM_BIT_SHIFT);
return write_reg(port, SYV682X_CONTROL_1_REG, regval);
}
@@ -456,27 +456,6 @@ void syv682x_interrupt(int port)
syv682x_interrupt_delayed(port, 0);
}
-static int syv682x_reset(int port)
-{
- int rv;
-
- CPRINTS("p%d: PPC SW reset", port);
- /*
- * Reset all I2C registers to default values because the SYV682x does
- * not provide a pin reset. The SYV682X_RST_REG bit is self-clearing.
- */
- rv = write_reg(port, SYV682X_CONTROL_3_REG, SYV682X_RST_REG);
- if (rv)
- return rv;
-
- /* BUSY gets asserted until the reset completes */
- rv = syv682x_wait_for_ready(port);
- if (rv)
- return rv;
-
- return EC_SUCCESS;
-}
-
static bool syv682x_is_sink(uint8_t control_1)
{
/*
@@ -516,18 +495,17 @@ static int syv682x_init(int port)
if (!syv682x_is_sink(control_1)
|| (status & SYV682X_STATUS_VSAFE_0V)) {
/*
- * PPC is not configured as a sink or there is no VBUS present.
- * It's safe to perform a full register reset.
+ * Disable both power paths,
+ * set HV_ILIM to 3.3A,
+ * set 5V_ILIM to 3.3A,
+ * set HV direction to sink,
+ * select HV channel.
*/
- rv = syv682x_reset(port);
- if (rv)
- return rv;
-
- /* Disable both power paths */
- rv = read_reg(port, SYV682X_CONTROL_1_REG, &regval);
- if (rv)
- return rv;
- regval |= SYV682X_CONTROL_1_PWR_ENB;
+ regval = SYV682X_CONTROL_1_PWR_ENB |
+ (SYV682X_HV_ILIM_3_30 << SYV682X_HV_ILIM_BIT_SHIFT) |
+ (SYV682X_5V_ILIM_3_30 << SYV682X_5V_ILIM_BIT_SHIFT) |
+ /* !SYV682X_CONTROL_1_HV_DR */
+ SYV682X_CONTROL_1_CH_SEL;
rv = write_reg(port, SYV682X_CONTROL_1_REG, regval);
if (rv)
return rv;