diff options
-rw-r--r-- | driver/ppc/sn5s330.c | 11 | ||||
-rw-r--r-- | driver/ppc/sn5s330.h | 3 |
2 files changed, 14 insertions, 0 deletions
diff --git a/driver/ppc/sn5s330.c b/driver/ppc/sn5s330.c index 4abf85cf50..9cc5918bf1 100644 --- a/driver/ppc/sn5s330.c +++ b/driver/ppc/sn5s330.c @@ -333,6 +333,17 @@ static int sn5s330_init(int port) return status; } + /* + * Set RCP voltage threshold to 3mV instead of 6mV default for the + * source path. This modification helps prevent false RCP triggers + * against certain port partners when VBUS is set to 20V. + */ + status = clr_flags(port, SN5S330_FUNC_SET10, SN5S330_PP1_RCP_OFFSET); + if (status) { + ppc_prints("Failed to set FUNC_SET10!", port); + return status; + } + /* Turn off PP1 FET. */ status = sn5s330_pp_fet_enable(port, SN5S330_PP1, 0); if (status) { diff --git a/driver/ppc/sn5s330.h b/driver/ppc/sn5s330.h index f94a3e8e10..188499e34a 100644 --- a/driver/ppc/sn5s330.h +++ b/driver/ppc/sn5s330.h @@ -122,6 +122,9 @@ enum sn5s330_pp_idx { #define SN5S330_VSAFE0V_STAT BIT(2) #define SN5S330_VSAFE0V_MASK BIT(3) +/* FUNC_SET_10 */ +#define SN5S330_PP1_RCP_OFFSET BIT(4) + /* * INT_MASK_RISE/FALL_EDGE_1 * |