linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] musb host improvments mostly for omap2430 glue
@ 2019-08-30 23:20 Tony Lindgren
  2019-08-30 23:20 ` [PATCH 1/4] usb: musb: omap2430: Wait on enable to avoid babble Tony Lindgren
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Tony Lindgren @ 2019-08-30 23:20 UTC (permalink / raw)
  To: Bin Liu
  Cc: Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit, Pavel Machek,
	Sebastian Reichel

Hi all,

So I ended up cleaning up omap2430 glue layer a bit for host mode with the
various reproducable errors I was seeing docking droid4 to a lapdock. There
are a few fixes, and then we end up removing all the devctl register tinkering
for omap2430 glue layer.

Regards,

Tony


Tony Lindgren (4):
  usb: musb: omap2430: Wait on enable to avoid babble
  usb: musb: omap2430: Handle multiple ID ground interrupts
  usb: musb: Add musb_set_host and peripheral and use them for omap2430
  usb: musb: omap2430: Clean up enable and remove devctl tinkering

 drivers/usb/musb/musb_core.c | 103 ++++++++++++++++++++++++++++++
 drivers/usb/musb/musb_core.h |   3 +
 drivers/usb/musb/omap2430.c  | 118 +++++++++++++----------------------
 3 files changed, 149 insertions(+), 75 deletions(-)

-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/4] usb: musb: omap2430: Wait on enable to avoid babble
  2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
@ 2019-08-30 23:20 ` Tony Lindgren
  2019-08-30 23:20 ` [PATCH 2/4] usb: musb: omap2430: Handle multiple ID ground interrupts Tony Lindgren
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Tony Lindgren @ 2019-08-30 23:20 UTC (permalink / raw)
  To: Bin Liu
  Cc: Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit, Pavel Machek,
	Sebastian Reichel

We can babble interrupt if we attempt to switch to USB host mode too
soon after enabling musb. Let's fix the issue by waiting a bit in
runtime_resume.

Cc: Jacopo Mondi <jacopo@jmondi.org>
Cc: Marcel Partap <mpartap@gmx.net>
Cc: Merlijn Wajer <merlijn@wizzup.org>
Cc: Michael Scott <hashcode0f@gmail.com>
Cc: NeKit <nekit1000@gmail.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/usb/musb/omap2430.c | 3 +++
 1 file changed, 3 insertions(+)

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
@@ -552,6 +552,9 @@ static int omap2430_runtime_resume(struct device *dev)
 	musb_writel(musb->mregs, OTG_INTERFSEL,
 		    musb->context.otg_interfsel);
 
+	/* Wait for musb to get oriented. Otherwise we can get babble */
+	usleep_range(200000, 250000);
+
 	return 0;
 }
 
-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/4] usb: musb: omap2430: Handle multiple ID ground interrupts
  2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
  2019-08-30 23:20 ` [PATCH 1/4] usb: musb: omap2430: Wait on enable to avoid babble Tony Lindgren
@ 2019-08-30 23:20 ` Tony Lindgren
  2019-08-30 23:20 ` [PATCH 3/4] usb: musb: Add musb_set_host and peripheral and use them for omap2430 Tony Lindgren
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Tony Lindgren @ 2019-08-30 23:20 UTC (permalink / raw)
  To: Bin Liu
  Cc: Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit, Pavel Machek,
	Sebastian Reichel

We currently get "unhandled DISCONNECT transition" warnings from musb core
on device disconnect as things are wrongly set to OTG_STATE_A_IDLE in
host mode when enumerating devices. We can also get "Failed to write reg
index" errors after enumerating.

This is happening at least with cpcap phy where we get multiple ID ground
interrupts. Looks like it's VBUS keeps timing out and needs to be kicked
when the phy sends multiple ID ground interrupts during host mode.

Cc: Jacopo Mondi <jacopo@jmondi.org>
Cc: Marcel Partap <mpartap@gmx.net>
Cc: Merlijn Wajer <merlijn@wizzup.org>
Cc: Michael Scott <hashcode0f@gmail.com>
Cc: NeKit <nekit1000@gmail.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/usb/musb/omap2430.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 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
@@ -151,13 +151,26 @@ static void omap_musb_set_mailbox(struct omap2430_glue *glue)
 	switch (glue->status) {
 	case MUSB_ID_GROUND:
 		dev_dbg(musb->controller, "ID GND\n");
-
-		musb->xceiv->otg->state = OTG_STATE_A_IDLE;
-		musb->xceiv->last_event = USB_EVENT_ID;
-		if (musb->gadget_driver) {
-			omap_control_usb_set_mode(glue->control_otghs,
-				USB_MODE_HOST);
+		switch (musb->xceiv->otg->state) {
+		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);
+			break;
+		default:
+			musb->xceiv->otg->state = OTG_STATE_A_IDLE;
+			musb->xceiv->last_event = USB_EVENT_ID;
+			if (musb->gadget_driver) {
+				omap_control_usb_set_mode(glue->control_otghs,
+							  USB_MODE_HOST);
+				omap2430_musb_set_vbus(musb, 1);
+			}
+			break;
 		}
 		break;
 
-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 3/4] usb: musb: Add musb_set_host and peripheral and use them for omap2430
  2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
  2019-08-30 23:20 ` [PATCH 1/4] usb: musb: omap2430: Wait on enable to avoid babble Tony Lindgren
  2019-08-30 23:20 ` [PATCH 2/4] usb: musb: omap2430: Handle multiple ID ground interrupts Tony Lindgren
@ 2019-08-30 23:20 ` Tony Lindgren
  2019-08-30 23:20 ` [PATCH 4/4] usb: musb: omap2430: Clean up enable and remove devctl tinkering Tony Lindgren
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Tony Lindgren @ 2019-08-30 23:20 UTC (permalink / raw)
  To: Bin Liu
  Cc: Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit, Pavel Machek,
	Sebastian Reichel

At least some revisions of musb core need to set devctl session bit
in peripheral mode to force musb to host mode. And we have places
clearing the devctl session bit.

Let's add a generic function to do this, and use it for omap2430.
This should get us a bit closer to completely removing devctl register
tinkering in the SoC glue code.

Before making use of this code for the other glue layers, things need
to be tested carefully as there may be a approximately a 200 ms delay
needed between powering up musb and calling musb_set_host() to avoid.
Otherwise the system hangs at least with omap2430 glue layer.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/usb/musb/musb_core.c | 103 +++++++++++++++++++++++++++++++++++
 drivers/usb/musb/musb_core.h |   3 +
 drivers/usb/musb/omap2430.c  |  70 +++++++-----------------
 3 files changed, 127 insertions(+), 49 deletions(-)

diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -73,6 +73,7 @@
 #include <linux/prefetch.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/iopoll.h>
 #include <linux/dma-mapping.h>
 #include <linux/usb.h>
 #include <linux/usb/of.h>
@@ -414,6 +415,108 @@ void musb_write_fifo(struct musb_hw_ep *hw_ep, u16 len, const u8 *src)
 	return hw_ep->musb->io.write_fifo(hw_ep, len, src);
 }
 
+static u8 musb_read_devctl(struct musb *musb)
+{
+	return musb_readb(musb->mregs, MUSB_DEVCTL);
+}
+
+/**
+ * musb_set_host - set and initialize host mode
+ * @musb: musb controller driver data
+ *
+ * At least some musb revisions need to enable devctl session bit in
+ * peripheral mode to switch to host mode. Initializes things to host
+ * mode and sets A_IDLE. SoC glue needs to advance state further
+ * based on phy provided VBUS state.
+ *
+ * Note that the SoC glue code may need to wait for musb to settle
+ * on enable before calling this to avoid babble.
+ */
+int musb_set_host(struct musb *musb)
+{
+	int error = 0;
+	u8 devctl;
+
+	if (!musb)
+		return -EINVAL;
+
+	devctl = musb_read_devctl(musb);
+	if (!(devctl & MUSB_DEVCTL_BDEVICE)) {
+		dev_info(musb->controller,
+			 "%s: already in host mode: %02x\n",
+			 __func__, devctl);
+		goto init_data;
+	}
+
+	devctl |= MUSB_DEVCTL_SESSION;
+	musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
+
+	error = readx_poll_timeout(musb_read_devctl, musb, devctl,
+				   !(devctl & MUSB_DEVCTL_BDEVICE), 5000,
+				   1000000);
+	if (error) {
+		dev_err(musb->controller, "%s: could not set host: %02x\n",
+			__func__, devctl);
+
+		return error;
+	}
+
+init_data:
+	musb->is_active = 1;
+	musb->xceiv->otg->state = OTG_STATE_A_IDLE;
+	MUSB_HST_MODE(musb);
+
+	return error;
+}
+EXPORT_SYMBOL_GPL(musb_set_host);
+
+/**
+ * musb_set_peripheral - set and initialize peripheral mode
+ * @musb: musb controller driver data
+ *
+ * Clears devctl session bit and initializes things for peripheral
+ * mode and sets B_IDLE. SoC glue needs to advance state further
+ * based on phy provided VBUS state.
+ */
+int musb_set_peripheral(struct musb *musb)
+{
+	int error = 0;
+	u8 devctl;
+
+	if (!musb)
+		return -EINVAL;
+
+	devctl = musb_read_devctl(musb);
+	if (devctl & MUSB_DEVCTL_BDEVICE) {
+		dev_info(musb->controller,
+			 "%s: already in peripheral mode: %02x\n",
+			 __func__, devctl);
+
+		goto init_data;
+	}
+
+	devctl &= ~MUSB_DEVCTL_SESSION;
+	musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
+
+	error = readx_poll_timeout(musb_read_devctl, musb, devctl,
+				   devctl & MUSB_DEVCTL_BDEVICE, 5000,
+				   1000000);
+	if (error) {
+		dev_err(musb->controller, "%s: could not set periperal: %02x\n",
+			__func__, devctl);
+
+		return error;
+	}
+
+init_data:
+	musb->is_active = 0;
+	musb->xceiv->otg->state = OTG_STATE_B_IDLE;
+	MUSB_DEV_MODE(musb);
+
+	return error;
+}
+EXPORT_SYMBOL_GPL(musb_set_peripheral);
+
 /*-------------------------------------------------------------------------*/
 
 /* for high speed test mode; see USB 2.0 spec 7.1.20 */
diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -487,6 +487,9 @@ extern void musb_start(struct musb *musb);
 extern void musb_write_fifo(struct musb_hw_ep *ep, u16 len, const u8 *src);
 extern void musb_read_fifo(struct musb_hw_ep *ep, u16 len, u8 *dst);
 
+extern int musb_set_host(struct musb *musb);
+extern int musb_set_peripheral(struct musb *musb);
+
 extern void musb_load_testpacket(struct musb *);
 
 extern irqreturn_t musb_interrupt(struct musb *);
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,65 +38,37 @@ 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;
-	u8		devctl;
-	unsigned long timeout = jiffies + msecs_to_jiffies(1000);
-	/* HDRC controls CPEN, but beware current surges during device
-	 * connect.  They can trigger transient overcurrent conditions
-	 * that must be ignored.
-	 */
-
-	devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
+	struct usb_otg *otg = musb->xceiv->otg;
+	int error;
 
 	if (is_on) {
-		if (musb->xceiv->otg->state == OTG_STATE_A_IDLE) {
-			int loops = 100;
-			/* start the session */
-			devctl |= MUSB_DEVCTL_SESSION;
-			musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
-			/*
-			 * Wait for the musb to set as A device to enable the
-			 * VBUS
-			 */
-			while (musb_readb(musb->mregs, MUSB_DEVCTL) &
-			       MUSB_DEVCTL_BDEVICE) {
-
-				mdelay(5);
-				cpu_relax();
-
-				if (time_after(jiffies, timeout)
-				    || loops-- <= 0) {
-					dev_err(musb->controller,
-					"configured as A device timeout");
-					break;
-				}
+		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);
-		} else {
-			musb->is_active = 1;
-			musb->xceiv->otg->state = OTG_STATE_A_WAIT_VRISE;
-			devctl |= MUSB_DEVCTL_SESSION;
-			MUSB_HST_MODE(musb);
+			break;
 		}
 	} else {
-		musb->is_active = 0;
-
-		/* NOTE:  we're skipping A_WAIT_VFALL -> A_IDLE and
-		 * jumping right to B_IDLE...
-		 */
-
-		musb->xceiv->otg->state = OTG_STATE_B_IDLE;
-		devctl &= ~MUSB_DEVCTL_SESSION;
-
-		MUSB_DEV_MODE(musb);
+		error = musb_set_peripheral(musb);
+		otg_set_vbus(otg, 0);
 	}
-	musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
 
-	dev_dbg(musb->controller, "VBUS %s, devctl %02x "
-		/* otg %3x conf %08x prcm %08x */ "\n",
+	dev_dbg(musb->controller, "VBUS %s, devctl %02x\n",
 		usb_otg_state_string(musb->xceiv->otg->state),
 		musb_readb(musb->mregs, MUSB_DEVCTL));
 }
-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 4/4] usb: musb: omap2430: Clean up enable and remove devctl tinkering
  2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
                   ` (2 preceding siblings ...)
  2019-08-30 23:20 ` [PATCH 3/4] usb: musb: Add musb_set_host and peripheral and use them for omap2430 Tony Lindgren
@ 2019-08-30 23:20 ` Tony Lindgren
  2019-09-01 19:39 ` next-20190830 on Droid 4 was Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue Pavel Machek
  2019-09-02  9:23 ` Pavel Machek
  5 siblings, 0 replies; 13+ messages in thread
From: Tony Lindgren @ 2019-08-30 23:20 UTC (permalink / raw)
  To: Bin Liu
  Cc: Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit, Pavel Machek,
	Sebastian Reichel

There should be no need to tinker with devctl in enable in the SoC glue
code. We have musb_start() to take care of handling it already.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/usb/musb/omap2430.c | 20 --------------------
 1 file changed, 20 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
@@ -275,33 +275,13 @@ static int omap2430_musb_init(struct musb *musb)
 
 static void omap2430_musb_enable(struct musb *musb)
 {
-	u8		devctl;
-	unsigned long timeout = jiffies + msecs_to_jiffies(1000);
 	struct device *dev = musb->controller;
 	struct omap2430_glue *glue = dev_get_drvdata(dev->parent);
-	struct musb_hdrc_platform_data *pdata = dev_get_platdata(dev);
-	struct omap_musb_board_data *data = pdata->board_data;
-
 
 	switch (glue->status) {
 
 	case MUSB_ID_GROUND:
 		omap_control_usb_set_mode(glue->control_otghs, USB_MODE_HOST);
-		if (data->interface_type != MUSB_INTERFACE_UTMI)
-			break;
-		devctl = musb_readb(musb->mregs, MUSB_DEVCTL);
-		/* start the session */
-		devctl |= MUSB_DEVCTL_SESSION;
-		musb_writeb(musb->mregs, MUSB_DEVCTL, devctl);
-		while (musb_readb(musb->mregs, MUSB_DEVCTL) &
-				MUSB_DEVCTL_BDEVICE) {
-			cpu_relax();
-
-			if (time_after(jiffies, timeout)) {
-				dev_err(dev, "configured as A device timeout");
-				break;
-			}
-		}
 		break;
 
 	case MUSB_VBUS_VALID:
-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* next-20190830 on Droid 4 was Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
                   ` (3 preceding siblings ...)
  2019-08-30 23:20 ` [PATCH 4/4] usb: musb: omap2430: Clean up enable and remove devctl tinkering Tony Lindgren
@ 2019-09-01 19:39 ` Pavel Machek
  2019-09-01 19:49   ` Pavel Machek
  2019-09-02  9:23 ` Pavel Machek
  5 siblings, 1 reply; 13+ messages in thread
From: Pavel Machek @ 2019-09-01 19:39 UTC (permalink / raw)
  To: Tony Lindgren, kernel list, linux-arm-kernel, linux-omap, sre,
	nekit1000, mpartap, merlijn
  Cc: Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit,
	Sebastian Reichel

[-- Attachment #1: Type: text/plain, Size: 748 bytes --]

Hi!

> So I ended up cleaning up omap2430 glue layer a bit for host mode with the
> various reproducable errors I was seeing docking droid4 to a lapdock. There
> are a few fixes, and then we end up removing all the devctl register tinkering
> for omap2430 glue layer.

I thought I'd test this, so I took

commit 6d028043b55e54f48fbdf62ea8ce11a4ad830cac
    Add linux-next specific files for 20190830

Series (and the other two patches you sent around it) applies ok, but
the result does not boot.

Hmm.

I guess I'll need to resurrect the serial port cable.

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: next-20190830 on Droid 4 was Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-09-01 19:39 ` next-20190830 on Droid 4 was Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue Pavel Machek
@ 2019-09-01 19:49   ` Pavel Machek
  0 siblings, 0 replies; 13+ messages in thread
From: Pavel Machek @ 2019-09-01 19:49 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Tony Lindgren, kernel list, linux-arm-kernel, linux-omap, sre,
	nekit1000, mpartap, merlijn, Bin Liu, Greg Kroah-Hartman,
	linux-usb, Jacopo Mondi, Michael Scott

[-- Attachment #1: Type: text/plain, Size: 2423 bytes --]

On Sun 2019-09-01 21:39:25, Pavel Machek wrote:
> Hi!
> 
> > So I ended up cleaning up omap2430 glue layer a bit for host mode with the
> > various reproducable errors I was seeing docking droid4 to a lapdock. There
> > are a few fixes, and then we end up removing all the devctl register tinkering
> > for omap2430 glue layer.
> 
> I thought I'd test this, so I took
> 
> commit 6d028043b55e54f48fbdf62ea8ce11a4ad830cac
>     Add linux-next specific files for 20190830
> 
> Series (and the other two patches you sent around it) applies ok, but
> the result does not boot.

Hmm. Maybe I'm just having problem with the backlight. I do see
regulator failure:

[    2.143920] cpcap-usb-phy cpcap-usb-phy.0: using device tree for
GPIO lookup
[    2.151031] of_get_named_gpiod_flags: parsed 'mode-gpios' property
of node ')
[    2.166015] gpio gpiochip2: Persistence not supported for GPIO 28
214935] ------------[ cut here ]------------
[    2.219604] WARNING: CPU: 0 PID: 1 at drivers/regulator/core.c:2040
_regulat0
[    2.228118] Modules linked in:
[    2.231201] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
5.3.0-rc6-next-20190834
[    2.238800] Hardware name: Generic OMAP4 (Flattened Device Tree)
[    2.244873] [<c010f224>] (unwind_backtrace) from [<c010b4fc>]
(show_stack+0x)
[    2.252655] [<c010b4fc>] (show_stack) from [<c08ca584>]
(dump_stack+0xa8/0xc)

and some drm problems:

[   59.303253] omap-mcbsp 40124000.mcbsp: CLKS: could not clk_get()
prcm_fck
[   59.311492] ------------[ cut here ]------------
[   59.314666] WARNING: CPU: 0 PID: 2704 at
drivers/gpu/drm/omapdrm/dss/hdmi4.c0
[   59.325866] Modules linked in:
[   59.328948] CPU: 0 PID: 2704 Comm: alsa-sink-HDMI  Tainted: G
W      4
[   59.337982] Hardware name: Generic OMAP4 (Flattened Device Tree)
[   59.344757] [<c010f224>] (unwind_backtrace) from [<c010b4fc>]
(show_stack+0x)
[   59.352569] [<c010b4fc>] (show_stack) from [<c08ca584>]
(dump_stack+0xa8/0xc)
[   59.359832] [<c08ca584>] (dump_stack) from [<c012de94>]
(__warn+0xc8/0xf0)

But I get login prompt on the serial. And after I do:

root@devuan:/sys/class/leds/lm3532::backlight# echo 255 > brightness

I can even see X are running.

Good so far :-).

Best regards,							Pavel

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
                   ` (4 preceding siblings ...)
  2019-09-01 19:39 ` next-20190830 on Droid 4 was Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue Pavel Machek
@ 2019-09-02  9:23 ` Pavel Machek
  2019-09-02  9:44   ` Pavel Machek
  5 siblings, 1 reply; 13+ messages in thread
From: Pavel Machek @ 2019-09-02  9:23 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit,
	Sebastian Reichel

[-- Attachment #1: Type: text/plain, Size: 1456 bytes --]

Hi!

> So I ended up cleaning up omap2430 glue layer a bit for host mode with the
> various reproducable errors I was seeing docking droid4 to a lapdock. There
> are a few fixes, and then we end up removing all the devctl register tinkering
> for omap2430 glue layer.

I should have your recent patches up-to [PATCH] power: supply:
cpcap-charger: Enable vbus boost voltage applied to linux-next, -0830.

So... to get usb host to work even with stock kernel, I need a hub and
external power... and "right" cable between phone and hub.

When I plugged/unplugged it several times, I got

### usb unplug:
musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
ub0: stop stats: rx/tx 0/0, errs 0/0
l3_init_cm:clk:0040:0: failed to disable
l3_init_cm:clk:00c0:0: failed to disable
### usb plug produces nothing
### usb unplug:
musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80

Hmm. I did it two more times, and now machine rebooted, and USB was
powered from the phone for a while (3.6V).

And I reproduced the crash on the next boot.

Is there anything I may be missing in .config?

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-09-02  9:23 ` Pavel Machek
@ 2019-09-02  9:44   ` Pavel Machek
  2019-09-02 16:06     ` Tony Lindgren
  0 siblings, 1 reply; 13+ messages in thread
From: Pavel Machek @ 2019-09-02  9:44 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Tony Lindgren, Bin Liu, Greg Kroah-Hartman, linux-usb,
	linux-omap, Jacopo Mondi, Marcel Partap, Merlijn Wajer,
	Michael Scott, NeKit, Sebastian Reichel

[-- Attachment #1: Type: text/plain, Size: 2767 bytes --]

On Mon 2019-09-02 11:23:44, Pavel Machek wrote:
> Hi!
> 
> > So I ended up cleaning up omap2430 glue layer a bit for host mode with the
> > various reproducable errors I was seeing docking droid4 to a lapdock. There
> > are a few fixes, and then we end up removing all the devctl register tinkering
> > for omap2430 glue layer.
> 
> I should have your recent patches up-to [PATCH] power: supply:
> cpcap-charger: Enable vbus boost voltage applied to linux-next, -0830.
> 
> So... to get usb host to work even with stock kernel, I need a hub and
> external power... and "right" cable between phone and hub.
> 
> When I plugged/unplugged it several times, I got
> 
> ### usb unplug:
> musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
> musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
> ub0: stop stats: rx/tx 0/0, errs 0/0
> l3_init_cm:clk:0040:0: failed to disable
> l3_init_cm:clk:00c0:0: failed to disable
> ### usb plug produces nothing
> ### usb unplug:
> musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
> musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 80
> 
> Hmm. I did it two more times, and now machine rebooted, and USB was
> powered from the phone for a while (3.6V).
> 
> And I reproduced the crash on the next boot.
> 
> Is there anything I may be missing in .config?

Hmm. I guess CONFIG_USB_MUSB_DUAL_ROLE=y might be useful.

And now... if I unplug/replug the usb after the boot, USB hub and
mouse are recognized. Good!

Less than minute later:

mmusb-hdrc.0.auto: Babble
USB disconnect

I unplug, replug usb (not at the phone, between hub and dongle, and
green LED indincating charging starts blinking rapidly.

cpcap-core spi0.0: EOT timed out.

I try plug/replug, and now green led is on.

I unplug replug at the phone, and get bunch more of messages:

musm _set_peripheral: already in peripheral mode: 99
musm _set_peripheral: already in peripheral mode: 81
musm _set_peripheral: already in peripheral mode: 81

musb_set_host: could not set host: 99
musb_set_host: could not set host: 99
musb_set_host: could not set host: 99
musb_set_host: could not set host: 99
musb_set_host: could not set host: 99
musb_set_host: could not set host: 99
musb_set_host: could not set host: 99
musb_set_host: could not set host: 99

Unplug/replug at host, and again, hub+mouse is detected.

I unplug power connected to one of USB hub's ports... and find out
that phone was _not_ powering it.

Ok... so something somehow works.... sometimes :-).

								Pavel
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-09-02  9:44   ` Pavel Machek
@ 2019-09-02 16:06     ` Tony Lindgren
  2019-09-03  8:07       ` Pavel Machek
  0 siblings, 1 reply; 13+ messages in thread
From: Tony Lindgren @ 2019-09-02 16:06 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap, Jacopo Mondi,
	Marcel Partap, Merlijn Wajer, Michael Scott, NeKit,
	Sebastian Reichel

* Pavel Machek <pavel@denx.de> [190902 09:44]:
> On Mon 2019-09-02 11:23:44, Pavel Machek wrote:
> Hmm. I guess CONFIG_USB_MUSB_DUAL_ROLE=y might be useful.
> 
> And now... if I unplug/replug the usb after the boot, USB hub and
> mouse are recognized. Good!
> 
> Less than minute later:
> 
> mmusb-hdrc.0.auto: Babble
> USB disconnect

The babble is most likely caused by some kind of signaling issue.

> I unplug, replug usb (not at the phone, between hub and dongle, and
> green LED indincating charging starts blinking rapidly.
> 
> cpcap-core spi0.0: EOT timed out.
> 
> I try plug/replug, and now green led is on.
> 
> I unplug replug at the phone, and get bunch more of messages:
> 
> musm _set_peripheral: already in peripheral mode: 99
> musm _set_peripheral: already in peripheral mode: 81
> musm _set_peripheral: already in peripheral mode: 81
> 
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> musb_set_host: could not set host: 99
> 
> Unplug/replug at host, and again, hub+mouse is detected.
> 
> I unplug power connected to one of USB hub's ports... and find out
> that phone was _not_ powering it.
> 
> Ok... so something somehow works.... sometimes :-).

My guess is you're missing a USB micro-B cable with ID pin
grounded, with that things should just work automagically.

So no need for hubs feeding back VBUS and no need to
try to force host mode via sysfs unlike on n900.

Regards,

Tony

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-09-02 16:06     ` Tony Lindgren
@ 2019-09-03  8:07       ` Pavel Machek
  2019-09-16  1:20         ` Tony Lindgren
  0 siblings, 1 reply; 13+ messages in thread
From: Pavel Machek @ 2019-09-03  8:07 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Pavel Machek, Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap,
	Jacopo Mondi, Marcel Partap, Merlijn Wajer, Michael Scott, NeKit,
	Sebastian Reichel

[-- Attachment #1: Type: text/plain, Size: 2608 bytes --]

Hi!

On Mon 2019-09-02 09:06:51, Tony Lindgren wrote:
> * Pavel Machek <pavel@denx.de> [190902 09:44]:
> > On Mon 2019-09-02 11:23:44, Pavel Machek wrote:
> > Hmm. I guess CONFIG_USB_MUSB_DUAL_ROLE=y might be useful.
> > 
> > And now... if I unplug/replug the usb after the boot, USB hub and
> > mouse are recognized. Good!
> > 
> > Less than minute later:
> > 
> > mmusb-hdrc.0.auto: Babble
> > USB disconnect
> 
> The babble is most likely caused by some kind of signaling issue.
> 
> > I unplug, replug usb (not at the phone, between hub and dongle, and
> > green LED indincating charging starts blinking rapidly.
> > 
> > cpcap-core spi0.0: EOT timed out.
> > 
> > I try plug/replug, and now green led is on.
> > 
> > I unplug replug at the phone, and get bunch more of messages:
> > 
> > musm _set_peripheral: already in peripheral mode: 99
> > musm _set_peripheral: already in peripheral mode: 81
> > musm _set_peripheral: already in peripheral mode: 81
> > 
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > musb_set_host: could not set host: 99
> > 
> > Unplug/replug at host, and again, hub+mouse is detected.
> > 
> > I unplug power connected to one of USB hub's ports... and find out
> > that phone was _not_ powering it.
> > 
> > Ok... so something somehow works.... sometimes :-).
> 
> My guess is you're missing a USB micro-B cable with ID pin
> grounded, with that things should just work automagically.
> 
> So no need for hubs feeding back VBUS and no need to
> try to force host mode via sysfs unlike on n900.

I don't think so... I got it to run in the end (and I have to
apologize, it seems to work at least as long as it is plugged it an
boot and not touched).

So... I actually have two cables.

#1 definitely does not have ID pin grounded. That does not work, not
 even in original android.

#2 definitely has _something_, because it does work in original
 android. But not even original android provides VBUS (5V on USB) in
 that configuration. It also looks like hardware _can_ provide at
 least VBAT on VBUS, because I seen that during some of the crashes.

Thanks for the patches, BTW.

Best regards,
							Pavel

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-09-03  8:07       ` Pavel Machek
@ 2019-09-16  1:20         ` Tony Lindgren
  2019-09-16  1:26           ` Tony Lindgren
  0 siblings, 1 reply; 13+ messages in thread
From: Tony Lindgren @ 2019-09-16  1:20 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Pavel Machek, Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap,
	Jacopo Mondi, Marcel Partap, Merlijn Wajer, Michael Scott, NeKit,
	Sebastian Reichel

Hi,

* Pavel Machek <pavel@ucw.cz> [190903 08:08]:
> On Mon 2019-09-02 09:06:51, Tony Lindgren wrote:
> #2 definitely has _something_, because it does work in original
>  android. But not even original android provides VBUS (5V on USB) in
>  that configuration. It also looks like hardware _can_ provide at
>  least VBAT on VBUS, because I seen that during some of the crashes.

I started seeing the musb hang issue you reported today
on one droid4 but not on an other one :) Turns out we have
racy .set_vbus still around that might get called.

The following patch is needed in preparation for this $subject
series as otherwise patch "[PATCH 3/4] usb: musb: Add
musb_set_host and peripheral and use them for omap2430" can
cause a hang with "scheduling while atomic" if .set_vbus
gets called from musb_stage0_irq() path.

Regards,

Tony

8< -----------------
From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Sun, 15 Sep 2019 17:16:58 -0700
Subject: [PATCH] usb: musb: Get rid of musb_set_vbus()

We currently have musb_set_vbus() called from two different paths. Mostly
it gets called from the USB PHY via omap_musb_set_mailbox(), but in some
cases it can get also called from musb_stage0_irq() rather via .set_vbus:

(musb_set_host [musb_hdrc])
(omap2430_musb_set_vbus [omap2430])
(musb_stage0_irq [musb_hdrc])
(musb_interrupt [musb_hdrc])
(omap2430_musb_interrupt [omap2430])

This is racy and will not work with introducing generic helper functions
for musb_set_host() and musb_set_peripheral(). We want to get rid of the
busy loops in favor of usleep_range().

Let's just get rid of .set_vbus for omap2430 glue layer and let the PHY
code handle VBUS with musb_set_vbus(). Note that in the follow-up patch
we can completely remove omap2430_musb_set_vbus(), but let's do it in a
separate patch as this change may actually turn out to be needed as a
fix.

Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/usb/musb/omap2430.c | 2 --
 1 file changed, 2 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
@@ -312,8 +312,6 @@ static const struct musb_platform_ops omap2430_ops = {
 	.init		= omap2430_musb_init,
 	.exit		= omap2430_musb_exit,
 
-	.set_vbus	= omap2430_musb_set_vbus,
-
 	.enable		= omap2430_musb_enable,
 	.disable	= omap2430_musb_disable,
 
-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue
  2019-09-16  1:20         ` Tony Lindgren
@ 2019-09-16  1:26           ` Tony Lindgren
  0 siblings, 0 replies; 13+ messages in thread
From: Tony Lindgren @ 2019-09-16  1:26 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Pavel Machek, Bin Liu, Greg Kroah-Hartman, linux-usb, linux-omap,
	Jacopo Mondi, Marcel Partap, Merlijn Wajer, Michael Scott, NeKit,
	Sebastian Reichel

* Tony Lindgren <tony@atomide.com> [190916 01:21]:
> Let's just get rid of .set_vbus for omap2430 glue layer and let the PHY
> code handle VBUS with musb_set_vbus(). Note that in the follow-up patch
> we can completely remove omap2430_musb_set_vbus(), but let's do it in a
> separate patch as this change may actually turn out to be needed as a
> fix.

FYI, below is a quick take at dropping omap2430_musb_set_vbus(),
needs more testing though. I'm still seeing some errors on
disconnect with this one like:

VBUS_ERROR in b_idle (80, <SessEnd), retry #0, port1 00000100

Other than that, things seems to work just fine for host and
peripheral.

Regards,

Tony

8< -------------------From tony Mon Sep 17 00:00:00 2001
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,14 +139,10 @@ 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);
-
+		otg_set_vbus(musb->xceiv->otg, 0);
 		omap_control_usb_set_mode(glue->control_otghs,
 			USB_MODE_DISCONNECT);
+		musb_set_peripheral(musb);
 		break;
 	default:
 		dev_dbg(musb->controller, "ID float\n");
-- 
2.23.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2019-09-16  1:26 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-30 23:20 [PATCH 0/4] musb host improvments mostly for omap2430 glue Tony Lindgren
2019-08-30 23:20 ` [PATCH 1/4] usb: musb: omap2430: Wait on enable to avoid babble Tony Lindgren
2019-08-30 23:20 ` [PATCH 2/4] usb: musb: omap2430: Handle multiple ID ground interrupts Tony Lindgren
2019-08-30 23:20 ` [PATCH 3/4] usb: musb: Add musb_set_host and peripheral and use them for omap2430 Tony Lindgren
2019-08-30 23:20 ` [PATCH 4/4] usb: musb: omap2430: Clean up enable and remove devctl tinkering Tony Lindgren
2019-09-01 19:39 ` next-20190830 on Droid 4 was Re: [PATCH 0/4] musb host improvments mostly for omap2430 glue Pavel Machek
2019-09-01 19:49   ` Pavel Machek
2019-09-02  9:23 ` Pavel Machek
2019-09-02  9:44   ` Pavel Machek
2019-09-02 16:06     ` Tony Lindgren
2019-09-03  8:07       ` Pavel Machek
2019-09-16  1:20         ` Tony Lindgren
2019-09-16  1:26           ` Tony Lindgren

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).