Re: [PATCH 5/5] power: supply: cpcap-charger: Add usleep to cpcap charger to avoid usb plug bounce

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Sun, Apr 04, 2021 at 10:21:46AM +0300, Tony Lindgren wrote:
> * 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>

Thanks, queued.

-- Sebastian

> > ---
> >  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
> > 

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux