From: Tony Lindgren <tony@atomide.com>
To: Bin Liu <b-liu@ti.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-omap@vger.kernel.org,
Jacopo Mondi <jacopo@jmondi.org>, Marcel Partap <mpartap@gmx.net>,
Merlijn Wajer <merlijn@wizzup.org>,
Michael Scott <hashcode0f@gmail.com>, NeKit <nekit1000@gmail.com>,
Pavel Machek <pavel@ucw.cz>, Sebastian Reichel <sre@kernel.org>
Subject: [PATCH 7/7] usb: musb: Get rid of omap2430_musb_set_vbus()
Date: Wed, 9 Oct 2019 14:21:44 -0700 [thread overview]
Message-ID: <20191009212145.28495-8-tony@atomide.com> (raw)
In-Reply-To: <20191009212145.28495-1-tony@atomide.com>
Now that we've removed direct calls from interrupt handler to
omap2430_musb_set_vbus(), let's make things less confusing and
configure VBUS directly in omap_musb_set_mailbox().
We have omap_musb_set_mailbox() called from the PHYs, and that's
all we need.
Note that we can now also drop the check for MUSB_INTERFACE_UTMI,
we've been already calling otg_set_vbus(musb->xceiv->otg, 0)
unconditionally via omap2430_musb_set_vbus() and we should only
need to call it once.
And we want to disable VBUS unconditionally on disconnect even
without musb->gadget_driver, so let's drop that check too.
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
drivers/usb/musb/omap2430.c | 70 ++++++++++++-------------------------
1 file changed, 23 insertions(+), 47 deletions(-)
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -38,41 +38,6 @@ struct omap2430_glue {
static struct omap2430_glue *_glue;
-/*
- * HDRC controls CPEN, but beware current surges during device connect.
- * They can trigger transient overcurrent conditions that must be ignored.
- *
- * Note that we're skipping A_WAIT_VFALL -> A_IDLE and jumping right to B_IDLE
- * as set by musb_set_peripheral().
- */
-static void omap2430_musb_set_vbus(struct musb *musb, int is_on)
-{
- struct usb_otg *otg = musb->xceiv->otg;
- int error;
-
- if (is_on) {
- switch (musb->xceiv->otg->state) {
- case OTG_STATE_A_IDLE:
- error = musb_set_host(musb);
- if (!error) {
- musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
- otg_set_vbus(otg, 1);
- }
- break;
- default:
- otg_set_vbus(otg, 1);
- break;
- }
- } else {
- error = musb_set_peripheral(musb);
- otg_set_vbus(otg, 0);
- }
-
- dev_dbg(musb->controller, "VBUS %s, devctl %02x\n",
- usb_otg_state_string(musb->xceiv->otg->state),
- musb_readb(musb->mregs, MUSB_DEVCTL));
-}
-
static inline void omap2430_low_level_exit(struct musb *musb)
{
u32 l;
@@ -112,27 +77,42 @@ static int omap2430_musb_mailbox(enum musb_vbus_id_status status)
return 0;
}
+/*
+ * HDRC controls CPEN, but beware current surges during device connect.
+ * They can trigger transient overcurrent conditions that must be ignored.
+ *
+ * Note that we're skipping A_WAIT_VFALL -> A_IDLE and jumping right to B_IDLE
+ * as set by musb_set_peripheral().
+ */
static void omap_musb_set_mailbox(struct omap2430_glue *glue)
{
struct musb *musb = glue_to_musb(glue);
- struct musb_hdrc_platform_data *pdata =
- dev_get_platdata(musb->controller);
- struct omap_musb_board_data *data = pdata->board_data;
+ int error;
pm_runtime_get_sync(musb->controller);
+
+ dev_dbg(musb->controller, "VBUS %s, devctl %02x\n",
+ usb_otg_state_string(musb->xceiv->otg->state),
+ musb_readb(musb->mregs, MUSB_DEVCTL));
+
switch (glue->status) {
case MUSB_ID_GROUND:
dev_dbg(musb->controller, "ID GND\n");
switch (musb->xceiv->otg->state) {
+ case OTG_STATE_A_IDLE:
+ error = musb_set_host(musb);
+ if (error)
+ break;
+ musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
+ /* Fall through */
case OTG_STATE_A_WAIT_VRISE:
case OTG_STATE_A_WAIT_BCON:
case OTG_STATE_A_HOST:
- case OTG_STATE_A_IDLE:
/*
* On multiple ID ground interrupts just keep enabling
* VBUS. At least cpcap VBUS shuts down otherwise.
*/
- omap2430_musb_set_vbus(musb, 1);
+ otg_set_vbus(musb->xceiv->otg, 1);
break;
default:
musb->xceiv->otg->state = OTG_STATE_A_IDLE;
@@ -140,7 +120,7 @@ static void omap_musb_set_mailbox(struct omap2430_glue *glue)
if (musb->gadget_driver) {
omap_control_usb_set_mode(glue->control_otghs,
USB_MODE_HOST);
- omap2430_musb_set_vbus(musb, 1);
+ otg_set_vbus(musb->xceiv->otg, 1);
}
break;
}
@@ -159,12 +139,8 @@ static void omap_musb_set_mailbox(struct omap2430_glue *glue)
dev_dbg(musb->controller, "VBUS Disconnect\n");
musb->xceiv->last_event = USB_EVENT_NONE;
- if (musb->gadget_driver)
- omap2430_musb_set_vbus(musb, 0);
-
- if (data->interface_type == MUSB_INTERFACE_UTMI)
- otg_set_vbus(musb->xceiv->otg, 0);
-
+ musb_set_peripheral(musb);
+ otg_set_vbus(musb->xceiv->otg, 0);
omap_control_usb_set_mode(glue->control_otghs,
USB_MODE_DISCONNECT);
break;
--
2.23.0
next prev parent reply other threads:[~2019-10-09 21:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-09 21:21 [PATCHv2 0/7] musb host improvments mostly for omap2430 glue Tony Lindgren
2019-10-09 21:21 ` [PATCH 1/7] usb: musb: omap2430: Get rid of musb .set_vbus " Tony Lindgren
2019-10-09 21:21 ` [PATCH 2/7] usb: musb: omap2430: Wait on enable to avoid babble Tony Lindgren
2019-10-10 9:46 ` Sergei Shtylyov
2019-10-16 15:39 ` Tony Lindgren
2019-10-09 21:21 ` [PATCH 3/7] usb: musb: omap2430: Handle multiple ID ground interrupts Tony Lindgren
2019-10-13 11:32 ` Pavel Machek
2019-10-09 21:21 ` [PATCH 4/7] usb: musb: Add musb_set_host and peripheral and use them for omap2430 Tony Lindgren
2019-10-09 21:21 ` [PATCH 5/7] usb: musb: omap2430: Clean up enable and remove devctl tinkering Tony Lindgren
2019-10-09 21:21 ` [PATCH 6/7] usb: musb: omap2430: Idle musb on init Tony Lindgren
2019-10-09 21:21 ` Tony Lindgren [this message]
2019-10-13 14:34 ` [PATCH 7/7] usb: musb: Get rid of omap2430_musb_set_vbus() Pavel Machek
2019-12-13 20:23 ` [PATCHv2 0/7] musb host improvments mostly for omap2430 glue Bin Liu
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=20191009212145.28495-8-tony@atomide.com \
--to=tony@atomide.com \
--cc=b-liu@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=hashcode0f@gmail.com \
--cc=jacopo@jmondi.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=merlijn@wizzup.org \
--cc=mpartap@gmx.net \
--cc=nekit1000@gmail.com \
--cc=pavel@ucw.cz \
--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;
as well as URLs for NNTP newsgroup(s).