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]

 



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



[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