From: NeilBrown <neil@brown.name>
To: Kishon Vijay Abraham I <kishon@ti.com>
Cc: NeilBrown <neilb@suse.de>,
linux-api@vger.kernel.org, linux-kernel@vger.kernel.org,
GTA04 owners <gta04-owner@goldelico.com>,
Tony Lindgren <tony@atomide.com>, Pavel Machek <pavel@ucw.cz>
Subject: [PATCH 5/5] usb: phy: twl4030: test ID resistance to see if charger is present.
Date: Mon, 23 Mar 2015 09:35:23 +1100 [thread overview]
Message-ID: <20150322223523.21765.9452.stgit@notabene.brown> (raw)
In-Reply-To: <20150322223307.21765.62974.stgit@notabene.brown>
From: NeilBrown <neilb@suse.de>
If an 'A' plug is inserted, ID should be pulled to ground.
If a 'B' plug, then ID should be floating.
If an Accessory Charger Adapter is inserted, then ID will
be neither grounded nor floating. In this case tell the
USB subsystem that it is an A plug, and the battery
charging subsystem that it is a charger.
Fortunately, this will treat the Openmoko charger (and
other similar chargers) as a charger.
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: NeilBrown <neilb@suse.de>
---
drivers/phy/phy-twl4030-usb.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c
index 8dbf9d2a99d1..d81753bad1ca 100644
--- a/drivers/phy/phy-twl4030-usb.c
+++ b/drivers/phy/phy-twl4030-usb.c
@@ -606,9 +606,31 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
struct twl4030_usb *twl = _twl;
enum omap_musb_vbus_id_status status;
bool status_changed = false;
+ bool found_charger = false;
status = twl4030_usb_linkstat(twl);
+ if (status == OMAP_MUSB_ID_GROUND ||
+ status == OMAP_MUSB_VBUS_VALID) {
+ /* We should check the resistance on the ID pin.
+ * If not a Ground or Floating, then this is
+ * likely a charger
+ */
+ enum twl4030_id_status sts = twl4030_get_id(twl);
+ if (sts > TWL4030_GROUND &&
+ sts < TWL4030_FLOATING) {
+ /*
+ * This might be a charger, or an
+ * Accessory Charger Adapter.
+ * In either case we can charge, and it
+ * makes sense to tell the USB system
+ * that we might be acting as a HOST.
+ */
+ status = OMAP_MUSB_ID_GROUND;
+ found_charger = true;
+ }
+ }
+
mutex_lock(&twl->lock);
if (status >= 0 && status != twl->linkstat) {
status_changed =
@@ -633,6 +655,12 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
}
omap_musb_mailbox(status);
}
+ if (found_charger && twl->phy.last_event != USB_EVENT_CHARGER) {
+ twl->phy.last_event = USB_EVENT_CHARGER;
+ atomic_notifier_call_chain(&twl->phy.notifier,
+ USB_EVENT_CHARGER,
+ NULL);
+ }
/* don't schedule during sleep - irq works right then */
if (status == OMAP_MUSB_ID_GROUND && pm_runtime_active(twl->dev)) {
next prev parent reply other threads:[~2015-03-22 22:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-22 22:35 [PATCH 0/5] Enhancements to twl4030 phy to support better charging - V2 NeilBrown
2015-03-22 22:35 ` [PATCH 2/5] usb: phy: twl4030: allow charger to see usb current draw limits NeilBrown
2015-03-22 22:35 ` [PATCH 3/5] usb: phy: twl4030: add ABI documentation NeilBrown
2015-03-22 22:35 ` NeilBrown [this message]
2015-03-22 22:35 ` [PATCH 1/5] usb: phy: twl4030: make runtime pm more reliable NeilBrown
2015-03-25 21:32 ` Kishon Vijay Abraham I
2015-03-26 6:39 ` Pavel Machek
2015-03-22 22:35 ` [PATCH 4/5] usb: phy: twl4030: add support for reading restore on ID pin NeilBrown
2015-03-23 21:25 ` [PATCH 0/5] Enhancements to twl4030 phy to support better charging - V2 Pavel Machek
2015-03-25 21:16 ` Kishon Vijay Abraham I
2015-03-25 21:22 ` NeilBrown
2015-03-25 23:59 ` Kishon Vijay Abraham I
2015-03-26 0:16 ` NeilBrown
2015-04-01 4:41 ` NeilBrown
2015-04-03 13:38 ` Kishon Vijay Abraham I
2015-04-04 0:28 ` NeilBrown
2015-04-14 10:54 ` Kishon Vijay Abraham I
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=20150322223523.21765.9452.stgit@notabene.brown \
--to=neil@brown.name \
--cc=gta04-owner@goldelico.com \
--cc=kishon@ti.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--cc=pavel@ucw.cz \
--cc=tony@atomide.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;
as well as URLs for NNTP newsgroup(s).