FROMGIT: usb: typec: tcpci: Fix up sink disconnect thresholds for PD
"Table 4-3 VBUS Sink Characteristics" of "Type-C Cable and Connector Specification" defines the disconnect voltage thresholds of various configurations. This change fixes the disconnect threshold voltage calculation based on vSinkPD_min and vSinkDisconnectPD as defined by the table. Fixes: e1a97bf80a022 ("usb: typec: tcpci: Implement Auto discharge disconnect callbacks") Cc: stable <stable@vger.kernel.org> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Badhri Jagan Sridharan <badhri@google.com> Link: https://lore.kernel.org/r/20210615174323.1160132-1-badhri@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit 4288debeaa4e21d8dd5132739ffba2d343892bbf https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next) Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Iefff860a879d5ae383272ca116ba6e34bbedc823
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
bba0d8a87e
commit
c4707b7f87
@@ -22,8 +22,12 @@
|
||||
#define PD_RETRY_COUNT_DEFAULT 3
|
||||
#define PD_RETRY_COUNT_3_0_OR_HIGHER 2
|
||||
#define AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV 3500
|
||||
#define AUTO_DISCHARGE_PD_HEADROOM_MV 850
|
||||
#define AUTO_DISCHARGE_PPS_HEADROOM_MV 1250
|
||||
#define VSINKPD_MIN_IR_DROP_MV 750
|
||||
#define VSRC_NEW_MIN_PERCENT 95
|
||||
#define VSRC_VALID_MIN_MV 500
|
||||
#define VPPS_NEW_MIN_PERCENT 95
|
||||
#define VPPS_VALID_MIN_MV 100
|
||||
#define VSINKDISCONNECT_PD_MIN_PERCENT 90
|
||||
|
||||
#define tcpc_presenting_rd(reg, cc) \
|
||||
(!(TCPC_ROLE_CTRL_DRP & (reg)) && \
|
||||
@@ -364,11 +368,13 @@ static int tcpci_set_auto_vbus_discharge_threshold(struct tcpc_dev *dev, enum ty
|
||||
threshold = AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV;
|
||||
} else if (mode == TYPEC_PWR_MODE_PD) {
|
||||
if (pps_active)
|
||||
threshold = (95 * requested_vbus_voltage_mv / 100) -
|
||||
AUTO_DISCHARGE_PD_HEADROOM_MV;
|
||||
threshold = ((VPPS_NEW_MIN_PERCENT * requested_vbus_voltage_mv / 100) -
|
||||
VSINKPD_MIN_IR_DROP_MV - VPPS_VALID_MIN_MV) *
|
||||
VSINKDISCONNECT_PD_MIN_PERCENT / 100;
|
||||
else
|
||||
threshold = (95 * requested_vbus_voltage_mv / 100) -
|
||||
AUTO_DISCHARGE_PPS_HEADROOM_MV;
|
||||
threshold = ((VSRC_NEW_MIN_PERCENT * requested_vbus_voltage_mv / 100) -
|
||||
VSINKPD_MIN_IR_DROP_MV - VSRC_VALID_MIN_MV) *
|
||||
VSINKDISCONNECT_PD_MIN_PERCENT / 100;
|
||||
} else {
|
||||
/* 3.5V for non-pd sink */
|
||||
threshold = AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV;
|
||||
|
Reference in New Issue
Block a user