|
21 | 21 | #define PD_RETRY_COUNT_DEFAULT 3
|
22 | 22 | #define PD_RETRY_COUNT_3_0_OR_HIGHER 2
|
23 | 23 | #define AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV 3500
|
24 |
| -#define AUTO_DISCHARGE_PD_HEADROOM_MV 850 |
25 |
| -#define AUTO_DISCHARGE_PPS_HEADROOM_MV 1250 |
| 24 | +#define VSINKPD_MIN_IR_DROP_MV 750 |
| 25 | +#define VSRC_NEW_MIN_PERCENT 95 |
| 26 | +#define VSRC_VALID_MIN_MV 500 |
| 27 | +#define VPPS_NEW_MIN_PERCENT 95 |
| 28 | +#define VPPS_VALID_MIN_MV 100 |
| 29 | +#define VSINKDISCONNECT_PD_MIN_PERCENT 90 |
26 | 30 |
|
27 | 31 | #define tcpc_presenting_rd(reg, cc) \
|
28 | 32 | (!(TCPC_ROLE_CTRL_DRP & (reg)) && \
|
@@ -351,11 +355,13 @@ static int tcpci_set_auto_vbus_discharge_threshold(struct tcpc_dev *dev, enum ty
|
351 | 355 | threshold = AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV;
|
352 | 356 | } else if (mode == TYPEC_PWR_MODE_PD) {
|
353 | 357 | if (pps_active)
|
354 |
| - threshold = (95 * requested_vbus_voltage_mv / 100) - |
355 |
| - AUTO_DISCHARGE_PD_HEADROOM_MV; |
| 358 | + threshold = ((VPPS_NEW_MIN_PERCENT * requested_vbus_voltage_mv / 100) - |
| 359 | + VSINKPD_MIN_IR_DROP_MV - VPPS_VALID_MIN_MV) * |
| 360 | + VSINKDISCONNECT_PD_MIN_PERCENT / 100; |
356 | 361 | else
|
357 |
| - threshold = (95 * requested_vbus_voltage_mv / 100) - |
358 |
| - AUTO_DISCHARGE_PPS_HEADROOM_MV; |
| 362 | + threshold = ((VSRC_NEW_MIN_PERCENT * requested_vbus_voltage_mv / 100) - |
| 363 | + VSINKPD_MIN_IR_DROP_MV - VSRC_VALID_MIN_MV) * |
| 364 | + VSINKDISCONNECT_PD_MIN_PERCENT / 100; |
359 | 365 | } else {
|
360 | 366 | /* 3.5V for non-pd sink */
|
361 | 367 | threshold = AUTO_DISCHARGE_DEFAULT_THRESHOLD_MV;
|
|
0 commit comments