* Carl Philipp Klemm <philipp@xxxxxxxx> [210117 23:48]: > 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@xxxxxxxx> This patch fixes an issue where connecting a charger often fails for me: Tested-by: Tony Lindgren <tony@xxxxxxxxxxx> > --- > drivers/power/supply/cpcap-charger.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/power/supply/cpcap-charger.c b/drivers/power/supply/cpcap-charger.c > index be7d1da7a5a5..3e5fbdbdd645 100644 > --- a/drivers/power/supply/cpcap-charger.c > +++ b/drivers/power/supply/cpcap-charger.c > @@ -650,6 +650,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: > -- > 2.29.2 >