public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: Samuel Ortiz <sameo@linux.intel.com>, Felipe Balbi <balbi@ti.com>,
	Grazvydas Ignotas <notasas@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-omap@vger.kernel.org, NeilBrown <neilb@suse.de>
Subject: [PATCH 6/6] twl4030-usb: Don't report EVENT_ID when there is VBUS.
Date: Wed, 25 Apr 2012 17:33:11 +1000	[thread overview]
Message-ID: <20120425073311.20124.58619.stgit@notabene.brown> (raw)
In-Reply-To: <20120425072931.20124.56635.stgit@notabene.brown>

Some USB chargers tie the ID pin low via various resistors.
So they can cause VBUS to be high and ID to be low.

The 'A' end of an OTG cable never receives VBUS, it only ever generates it.

So if we see VBUS and are not generating it, this must be a charger,
not the A end of an OTG cable, so in that case, ignore the fact that
ID is low.

This assumes that VBUS_PRES isn't asserted when the charge pump is
providing VBUS.  The document isn't clear on this and some experiments
suggest that it isn't.

Signed-off-by: NeilBrown <neilb@suse.de>
---

 drivers/usb/otg/twl4030-usb.c |   19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
index bd8fe9b..990400f 100644
--- a/drivers/usb/otg/twl4030-usb.c
+++ b/drivers/usb/otg/twl4030-usb.c
@@ -268,15 +268,16 @@ static enum usb_phy_events twl4030_usb_linkstat(struct twl4030_usb *twl)
 			STS_HW_CONDITIONS);
 	if (status < 0)
 		dev_err(twl->dev, "USB link status err %d\n", status);
-	else if (status & (BIT(7) | BIT(2))) {
-		if (status & (BIT(7)))
-                        twl->vbus_supplied = true;
-
-		if (status & BIT(2))
-			linkstat = USB_EVENT_ID;
-		else
-			linkstat = USB_EVENT_VBUS;
-	} else
+	else if (status & (BIT(7))) {
+		/* We have VBUS so ignore ID_PRES - it is only meaningful
+		 * as an indicator of an A plug when there is no
+		 * VBUS.
+		 */
+		twl->vbus_supplied = true;
+		linkstat = USB_EVENT_VBUS;
+	} else if (status & BIT(2))
+		linkstat = USB_EVENT_ID;
+	else
 		linkstat = USB_EVENT_NONE;
 
 	dev_dbg(twl->dev, "HW_CONDITIONS 0x%02x/%d; link %d\n",

  parent reply	other threads:[~2012-04-25  7:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-25  7:33 [PATCH 0/6] twl4030: Various fixes for charing-from-USB NeilBrown
2012-04-25  7:33 ` [PATCH 1/6] twl4030_charger: Fix some typos NeilBrown
2012-04-25  7:33 ` [PATCH 2/6] twl4030_charger: add backup-battery charging NeilBrown
2012-04-25  7:33 ` [PATCH 3/6] twl4030_charger: allow charging whenever VBUS is present NeilBrown
     [not found]   ` <20120425073310.20124.15112.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2012-04-25 11:33     ` Grazvydas Ignotas
2012-04-29 23:34       ` NeilBrown
2012-04-25  7:33 ` [PATCH 5/6] twl4030-usb: Don't power down phy when it is in-use by charger NeilBrown
2012-04-25  7:33 ` NeilBrown [this message]
2012-04-25  8:05   ` [PATCH 6/6] twl4030-usb: Don't report EVENT_ID when there is VBUS Felipe Balbi
2012-04-25 10:29     ` NeilBrown
2012-04-25 11:44   ` Grazvydas Ignotas
2012-04-25  7:33 ` [PATCH 4/6] twl4030_charger: Allow charger to control the regulator that feeds it NeilBrown
2012-04-30 10:14   ` Tero Kristo
2012-05-01  1:01     ` NeilBrown
2012-05-09 16:06   ` Samuel Ortiz
2012-04-25 11:31 ` [PATCH 0/6] twl4030: Various fixes for charing-from-USB Grazvydas Ignotas
     [not found]   ` <CANOLnOOQDxu-P=yTN6159XJANq-_FSCtZ4rBt69NSCPjLz1Rjw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-29 23:30     ` NeilBrown
     [not found]       ` <20120430093002.472dfdde-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2012-05-05 10:49         ` Anton Vorontsov
2012-05-05 10:52           ` Anton Vorontsov
2012-05-10  1:24 ` Peter Chen
2012-05-10  2:37   ` NeilBrown
2012-05-10  6:46     ` Chen Peter-B29397
2012-05-10 14:45     ` Alan Stern

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=20120425073311.20124.58619.stgit@notabene.brown \
    --to=neilb@suse.de \
    --cc=balbi@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=notasas@gmail.com \
    --cc=sameo@linux.intel.com \
    /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