forked from mirrors/linux
		
	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: e1a97bf80a ("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>
			
			
This commit is contained in:
		
							parent
							
								
									73f3d9453d
								
							
						
					
					
						commit
						4288debeaa
					
				
					 1 changed files with 12 additions and 6 deletions
				
			
		|  | @ -21,8 +21,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)) && \ | ||||
|  | @ -351,11 +355,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; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Badhri Jagan Sridharan
						Badhri Jagan Sridharan