summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/ppc/sn5s330.c11
-rw-r--r--driver/ppc/sn5s330.h3
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
*