Linux Power Management development
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Carl Philipp Klemm <philipp@uvos.xyz>
Cc: Sebastian Reichel <sre@kernel.org>,
	linux-pm@vger.kernel.org, linux-omap@vger.kernel.org,
	Arthur Demchenkov <spinal.by@gmail.com>,
	Merlijn Wajer <merlijn@wizzup.org>, Pavel Machek <pavel@ucw.cz>
Subject: Re: [PATCH 5/5] power: supply: cpcap-charger: Add usleep to cpcap charger to avoid usb plug bounce
Date: Sun, 4 Apr 2021 10:21:46 +0300	[thread overview]
Message-ID: <YGlpCr26qU6F/Uwl@atomide.com> (raw)
In-Reply-To: <20210117224853.3602368391c9785e74748239@uvos.xyz>

* Carl Philipp Klemm <philipp@uvos.xyz> [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@uvos.xyz>

This patch fixes an issue where connecting a charger often fails for me:

Tested-by: Tony Lindgren <tony@atomide.com>


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

  reply	other threads:[~2021-04-04  7:21 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-17 21:48 [PATCH 5/5] power: supply: cpcap-charger: Add usleep to cpcap charger to avoid usb plug bounce Carl Philipp Klemm
2021-04-04  7:21 ` Tony Lindgren [this message]
2021-04-05  8:23   ` Sebastian Reichel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YGlpCr26qU6F/Uwl@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=merlijn@wizzup.org \
    --cc=pavel@ucw.cz \
    --cc=philipp@uvos.xyz \
    --cc=spinal.by@gmail.com \
    --cc=sre@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox