From: NeilBrown <neil-+NVA1uvv1dVBDLzU/O5InQ@public.gmane.org>
To: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
Cc: NeilBrown <neilb-l3A5Bk7waGM@public.gmane.org>,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
GTA04 owners
<gta04-owner-xXXSsgcRVICgSpxsJD1C4w@public.gmane.org>,
Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org>
Subject: [PATCH 2/5] usb: phy: twl4030: allow charger to see usb current draw limits.
Date: Mon, 23 Mar 2015 09:35:23 +1100 [thread overview]
Message-ID: <20150322223523.21765.13883.stgit@notabene.brown> (raw)
In-Reply-To: <20150322223307.21765.62974.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
From: NeilBrown <neilb-l3A5Bk7waGM@public.gmane.org>
The charger needs to know when a USB gadget has been enumerated
and what the agreed maximum current was so that it can adjust
charging accordingly.
So define a "set_power()" function to record the permitted
draw, and pass a pointer to that when sending USB_EVENT_ENUMERATED
notification.
Signed-off-by: NeilBrown <neilb-l3A5Bk7waGM@public.gmane.org>
---
drivers/phy/phy-twl4030-usb.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c
index 1a244f34b748..0fcef8717d5b 100644
--- a/drivers/phy/phy-twl4030-usb.c
+++ b/drivers/phy/phy-twl4030-usb.c
@@ -173,6 +173,11 @@ struct twl4030_usb {
enum omap_musb_vbus_id_status linkstat;
bool vbus_supplied;
+ /* Permitted vbus draw in mA - only meaningful after
+ * USB_EVENT_ENUMERATED
+ */
+ unsigned int vbus_draw;
+
struct delayed_work id_workaround_work;
};
@@ -554,12 +559,7 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
mutex_unlock(&twl->lock);
if (status_changed) {
- /* FIXME add a set_power() method so that B-devices can
- * configure the charger appropriately. It's not always
- * correct to consume VBUS power, and how much current to
- * consume is a function of the USB configuration chosen
- * by the host.
- *
+ /*
* REVISIT usb_gadget_vbus_connect(...) as needed, ditto
* its disconnect() sibling, when changing to/from the
* USB_LINK_VBUS state. musb_hdrc won't care until it
@@ -631,6 +631,20 @@ static int twl4030_set_host(struct usb_otg *otg, struct usb_bus *host)
return 0;
}
+static int twl4030_set_power(struct usb_phy *phy, unsigned mA)
+{
+ struct twl4030_usb *twl = phy_to_twl(phy);
+
+ if (twl->vbus_draw != mA) {
+ phy->last_event = USB_EVENT_ENUMERATED;
+ twl->vbus_draw = mA;
+ atomic_notifier_call_chain(&phy->notifier,
+ USB_EVENT_ENUMERATED,
+ &twl->vbus_draw);
+ }
+ return 0;
+}
+
static const struct phy_ops ops = {
.init = twl4030_phy_init,
.power_on = twl4030_phy_power_on,
@@ -681,6 +695,7 @@ static int twl4030_usb_probe(struct platform_device *pdev)
twl->phy.label = "twl4030";
twl->phy.otg = otg;
twl->phy.type = USB_PHY_TYPE_USB2;
+ twl->phy.set_power = twl4030_set_power;
otg->usb_phy = &twl->phy;
otg->set_host = twl4030_set_host;
WARNING: multiple messages have this Message-ID (diff)
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 2/5] usb: phy: twl4030: allow charger to see usb current draw limits.
Date: Mon, 23 Mar 2015 09:35:23 +1100 [thread overview]
Message-ID: <20150322223523.21765.13883.stgit@notabene.brown> (raw)
In-Reply-To: <20150322223307.21765.62974.stgit@notabene.brown>
From: NeilBrown <neilb@suse.de>
The charger needs to know when a USB gadget has been enumerated
and what the agreed maximum current was so that it can adjust
charging accordingly.
So define a "set_power()" function to record the permitted
draw, and pass a pointer to that when sending USB_EVENT_ENUMERATED
notification.
Signed-off-by: NeilBrown <neilb@suse.de>
---
drivers/phy/phy-twl4030-usb.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c
index 1a244f34b748..0fcef8717d5b 100644
--- a/drivers/phy/phy-twl4030-usb.c
+++ b/drivers/phy/phy-twl4030-usb.c
@@ -173,6 +173,11 @@ struct twl4030_usb {
enum omap_musb_vbus_id_status linkstat;
bool vbus_supplied;
+ /* Permitted vbus draw in mA - only meaningful after
+ * USB_EVENT_ENUMERATED
+ */
+ unsigned int vbus_draw;
+
struct delayed_work id_workaround_work;
};
@@ -554,12 +559,7 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
mutex_unlock(&twl->lock);
if (status_changed) {
- /* FIXME add a set_power() method so that B-devices can
- * configure the charger appropriately. It's not always
- * correct to consume VBUS power, and how much current to
- * consume is a function of the USB configuration chosen
- * by the host.
- *
+ /*
* REVISIT usb_gadget_vbus_connect(...) as needed, ditto
* its disconnect() sibling, when changing to/from the
* USB_LINK_VBUS state. musb_hdrc won't care until it
@@ -631,6 +631,20 @@ static int twl4030_set_host(struct usb_otg *otg, struct usb_bus *host)
return 0;
}
+static int twl4030_set_power(struct usb_phy *phy, unsigned mA)
+{
+ struct twl4030_usb *twl = phy_to_twl(phy);
+
+ if (twl->vbus_draw != mA) {
+ phy->last_event = USB_EVENT_ENUMERATED;
+ twl->vbus_draw = mA;
+ atomic_notifier_call_chain(&phy->notifier,
+ USB_EVENT_ENUMERATED,
+ &twl->vbus_draw);
+ }
+ return 0;
+}
+
static const struct phy_ops ops = {
.init = twl4030_phy_init,
.power_on = twl4030_phy_power_on,
@@ -681,6 +695,7 @@ static int twl4030_usb_probe(struct platform_device *pdev)
twl->phy.label = "twl4030";
twl->phy.otg = otg;
twl->phy.type = USB_PHY_TYPE_USB2;
+ twl->phy.set_power = twl4030_set_power;
otg->usb_phy = &twl->phy;
otg->set_host = twl4030_set_host;
next prev parent reply other threads:[~2015-03-22 22:35 UTC|newest]
Thread overview: 30+ 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 ` NeilBrown
2015-03-22 22:35 ` [PATCH 5/5] usb: phy: twl4030: test ID resistance to see if charger is present NeilBrown
2015-03-22 22:35 ` [PATCH 3/5] usb: phy: twl4030: add ABI documentation NeilBrown
2015-03-22 22:35 ` [PATCH 4/5] usb: phy: twl4030: add support for reading restore on ID pin NeilBrown
[not found] ` <20150322223307.21765.62974.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2015-03-22 22:35 ` [PATCH 1/5] usb: phy: twl4030: make runtime pm more reliable NeilBrown
2015-03-22 22:35 ` NeilBrown
[not found] ` <20150322223523.21765.3199.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2015-03-25 21:32 ` Kishon Vijay Abraham I
2015-03-25 21:32 ` Kishon Vijay Abraham I
2015-03-26 6:39 ` Pavel Machek
2015-03-22 22:35 ` NeilBrown [this message]
2015-03-22 22:35 ` [PATCH 2/5] usb: phy: twl4030: allow charger to see usb current draw limits NeilBrown
2015-03-23 21:25 ` [PATCH 0/5] Enhancements to twl4030 phy to support better charging - V2 Pavel Machek
2015-03-23 21:25 ` Pavel Machek
2015-03-25 21:16 ` Kishon Vijay Abraham I
2015-03-25 21:16 ` Kishon Vijay Abraham I
2015-03-25 21:22 ` NeilBrown
2015-03-25 21:22 ` NeilBrown
[not found] ` <20150326082219.510ac598-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2015-03-25 23:59 ` Kishon Vijay Abraham I
2015-03-25 23:59 ` Kishon Vijay Abraham I
[not found] ` <55134BEE.7050406-l0cyMroinI0@public.gmane.org>
2015-03-26 0:16 ` NeilBrown
2015-03-26 0:16 ` NeilBrown
2015-04-01 4:41 ` NeilBrown
2015-04-01 4:41 ` NeilBrown
[not found] ` <20150401154102.5f57ec1e-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2015-04-03 13:38 ` Kishon Vijay Abraham I
2015-04-03 13:38 ` Kishon Vijay Abraham I
[not found] ` <551E97CE.4000501-l0cyMroinI0@public.gmane.org>
2015-04-04 0:28 ` NeilBrown
2015-04-04 0:28 ` NeilBrown
[not found] ` <20150404112816.025d233b-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2015-04-14 10:54 ` Kishon Vijay Abraham I
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.13883.stgit@notabene.brown \
--to=neil-+nva1uvv1dvbdlzu/o5inq@public.gmane.org \
--cc=gta04-owner-xXXSsgcRVICgSpxsJD1C4w@public.gmane.org \
--cc=kishon-l0cyMroinI0@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=neilb-l3A5Bk7waGM@public.gmane.org \
--cc=pavel-+ZI9xUNit7I@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.