mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
power: supply: cpcap-charger: Add usleep to cpcap charger to avoid usb plug bounce
Adds 80000 us sleep when the usb cable is plugged in to hopefully avoid bouncing contacts. Upon pluging in the usb cable vbus will bounce for some time, causing cpcap to dissconnect charging due to detecting an undervoltage condition. This is a scope of vbus on xt894 while quickly inserting the usb cable with firm force, probed at the far side of the usb socket and vbus loaded with approx 1k: http://uvos.xyz/maserati/usbplug.jpg. As can clearly be seen, vbus is all over the place for the first 15 ms or so with a small blip at ~40 ms this causes the cpcap to trip up and disable charging again. The delay helps cpcap_usb_detect avoid the worst of this. It is, however, still not ideal as strong vibrations can cause the issue to reapear any time during charging. I have however not been able to cause the device to stop charging due to this in practice as it is hard to vibrate the device such that the vbus pins start bouncing again but cpcap_usb_detect is not called again due to a detected disconnect/reconnect event. Signed-off-by: Carl Philipp Klemm <philipp@uvos.xyz> Tested-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
8a5a0cc13a
commit
751faedf06
@ -668,6 +668,9 @@ static void cpcap_usb_detect(struct work_struct *work)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Delay for 80ms to avoid vbus bouncing when usb cable is plugged in */
|
||||
usleep_range(80000, 120000);
|
||||
|
||||
/* Throttle chrgcurr2 interrupt for charger done and retry */
|
||||
switch (ddata->status) {
|
||||
case POWER_SUPPLY_STATUS_CHARGING:
|
||||
|
Loading…
Reference in New Issue
Block a user