All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Liu <b-liu@ti.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: <linux-usb@vger.kernel.org>, Bin Liu <b-liu@ti.com>
Subject: [PATCH 10/25] usb: musb: Get rid of omap2430_musb_set_vbus()
Date: Wed, 15 Jan 2020 07:25:32 -0600	[thread overview]
Message-ID: <20200115132547.364-11-b-liu@ti.com> (raw)
In-Reply-To: <20200115132547.364-1-b-liu@ti.com>

From: Tony Lindgren <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.

Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Bin Liu <b-liu@ti.com>
---
 drivers/usb/musb/omap2430.c | 71 ++++++++++++-------------------------
 1 file changed, 23 insertions(+), 48 deletions(-)

diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index bc5810e14ebb..d62c78b97cad 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -38,42 +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;
@@ -113,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;
@@ -141,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;
 		}
@@ -160,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.17.1


  parent reply	other threads:[~2020-01-15 13:26 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-15 13:25 [PATCH 00/25] musb patches for v5.6-rc1 Bin Liu
2020-01-15 13:25 ` [PATCH 01/25] usb: musb: core: Update the function description Bin Liu
2020-01-15 13:25 ` [PATCH 02/25] usb: musb: sunxi: propagate devicetree node to glue pdev Bin Liu
2020-01-15 13:25 ` [PATCH 03/25] usb: musb: jz4740: Drop dependency on NOP_USB_XCEIV Bin Liu
2020-01-15 13:25 ` [PATCH 04/25] usb: musb: omap2430: Get rid of musb .set_vbus for omap2430 glue Bin Liu
2020-01-15 13:25 ` [PATCH 05/25] usb: musb: omap2430: Wait on enable to avoid babble Bin Liu
2020-01-15 13:25 ` [PATCH 06/25] usb: musb: omap2430: Handle multiple ID ground interrupts Bin Liu
2020-01-15 13:25 ` [PATCH 07/25] usb: musb: Add musb_set_host and peripheral and use them for omap2430 Bin Liu
2020-01-15 13:25 ` [PATCH 08/25] usb: musb: omap2430: Clean up enable and remove devctl tinkering Bin Liu
2020-01-15 13:25 ` [PATCH 09/25] usb: musb: omap2430: Idle musb on init Bin Liu
2020-01-15 13:25 ` Bin Liu [this message]
2020-01-15 13:25 ` [PATCH 11/25] usb: musb: jz4740: Suppress useless field in priv structure Bin Liu
2020-01-15 13:25 ` [PATCH 12/25] usb: musb: jz4740: Add local dev variable to clean up probe Bin Liu
2020-01-15 13:25 ` [PATCH 13/25] usb: musb: jz4740: Constify jz4740_musb_pdata struct Bin Liu
2020-01-15 13:25 ` [PATCH 14/25] usb: musb: jz4740: Rename platform_device field in priv struct Bin Liu
2020-01-15 13:25 ` [PATCH 15/25] usb: musb: jz4740: Comments fix Bin Liu
2020-01-15 13:25 ` [PATCH 16/25] usb: musb: jz4740: Whitespace and indentation fixes Bin Liu
2020-01-15 13:25 ` [PATCH 17/25] USB: musb: fix __iomem in trace functions Bin Liu
2020-01-15 13:25 ` [PATCH 18/25] usb: musb/ux500: Use dma_request_chan() instead dma_request_slave_channel() Bin Liu
2020-01-15 13:25 ` [PATCH 19/25] dt-bindings: usb: musb: Add support for MediaTek musb controller Bin Liu
2020-01-15 13:25 ` [PATCH 20/25] usb: musb: Add get/set toggle hooks Bin Liu
2020-01-15 13:25 ` [PATCH 21/25] usb: musb: Add noirq type of dma create interface Bin Liu
2020-01-15 13:25 ` [PATCH 22/25] usb: musb: Add musb_clearb/w() interface Bin Liu
2020-01-15 13:25 ` [PATCH 23/25] usb: musb: Add support for MediaTek musb controller Bin Liu
2020-01-15 13:25 ` [PATCH 24/25] usb: musb: davinci: Convert to use GPIO descriptor Bin Liu
2020-01-15 13:25 ` [PATCH 25/25] usb: musb: remove dummy driver musb_am335x.c 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=20200115132547.364-11-b-liu@ti.com \
    --to=b-liu@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-usb@vger.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 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.