All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/3] Update DWC2 driver
@ 2018-03-15 17:00 patrice.chotard at st.com
  2018-03-15 17:00 ` [U-Boot] [PATCH 1/3] usb: dwc2: disable external vbus supply when the device is removed patrice.chotard at st.com
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: patrice.chotard at st.com @ 2018-03-15 17:00 UTC (permalink / raw)
  To: u-boot

From: Patrice Chotard <patrice.chotard@st.com>

This series :
 _ adds dwc_vbus_supply_exit() to disable VBUS on device removal
 _ increases timeout in wait_for_chhltd()
 _ replaces printf() and pr_err by dev_info() and dev_err()


Christophe Kerello (2):
  usb: dwc2: disable external vbus supply when the device is removed
  usb: dwc2: increase timeout in wait_for_chhltd

Patrice Chotard (1):
  usb: dwc2: Replace printf, pr_err by dev_info, dev_err

 drivers/usb/host/dwc2.c | 60 ++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 47 insertions(+), 13 deletions(-)

-- 
1.9.1

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

* [U-Boot] [PATCH 1/3] usb: dwc2: disable external vbus supply when the device is removed
  2018-03-15 17:00 [U-Boot] [PATCH 0/3] Update DWC2 driver patrice.chotard at st.com
@ 2018-03-15 17:00 ` patrice.chotard at st.com
  2018-03-15 17:00 ` [U-Boot] [PATCH 2/3] usb: dwc2: increase timeout in wait_for_chhltd patrice.chotard at st.com
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: patrice.chotard at st.com @ 2018-03-15 17:00 UTC (permalink / raw)
  To: u-boot

From: Christophe Kerello <christophe.kerello@st.com>

This patch adds an interface to disable the power in dwc2 driver.
This new interface is called when the device is removed.

Signed-off-by: Christophe Kerello <christophe.kerello@st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
 drivers/usb/host/dwc2.c | 38 +++++++++++++++++++++++++++++++++++---
 1 file changed, 35 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index 0efe645044c5..cd70b2a195ca 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -34,6 +34,9 @@ struct dwc2_priv {
 #ifdef CONFIG_DM_USB
 	uint8_t aligned_buffer[DWC2_DATA_BUF_SIZE] __aligned(ARCH_DMA_MINALIGN);
 	uint8_t status_buffer[DWC2_STATUS_BUF_SIZE] __aligned(ARCH_DMA_MINALIGN);
+#ifdef CONFIG_DM_REGULATOR
+	struct udevice *vbus_supply;
+#endif
 #else
 	uint8_t *aligned_buffer;
 	uint8_t *status_buffer;
@@ -168,16 +171,17 @@ static void dwc_otg_core_reset(struct dwc2_core_regs *regs)
 #if defined(CONFIG_DM_USB) && defined(CONFIG_DM_REGULATOR)
 static int dwc_vbus_supply_init(struct udevice *dev)
 {
-	struct udevice *vbus_supply;
+	struct dwc2_priv *priv = dev_get_priv(dev);
 	int ret;
 
-	ret = device_get_supply_regulator(dev, "vbus-supply", &vbus_supply);
+	ret = device_get_supply_regulator(dev, "vbus-supply",
+					  &priv->vbus_supply);
 	if (ret) {
 		debug("%s: No vbus supply\n", dev->name);
 		return 0;
 	}
 
-	ret = regulator_set_enable(vbus_supply, true);
+	ret = regulator_set_enable(priv->vbus_supply, true);
 	if (ret) {
 		pr_err("Error enabling vbus supply\n");
 		return ret;
@@ -185,11 +189,34 @@ static int dwc_vbus_supply_init(struct udevice *dev)
 
 	return 0;
 }
+
+static int dwc_vbus_supply_exit(struct udevice *dev)
+{
+	struct dwc2_priv *priv = dev_get_priv(dev);
+	int ret;
+
+	if (priv->vbus_supply) {
+		ret = regulator_set_enable(priv->vbus_supply, false);
+		if (ret) {
+			dev_err(dev, "Error disabling vbus supply\n");
+			return ret;
+		}
+	}
+
+	return 0;
+}
 #else
 static int dwc_vbus_supply_init(struct udevice *dev)
 {
 	return 0;
 }
+
+#if defined(CONFIG_DM_USB)
+static int dwc_vbus_supply_exit(struct udevice *dev)
+{
+	return 0;
+}
+#endif
 #endif
 
 /*
@@ -1269,6 +1296,11 @@ static int dwc2_usb_probe(struct udevice *dev)
 static int dwc2_usb_remove(struct udevice *dev)
 {
 	struct dwc2_priv *priv = dev_get_priv(dev);
+	int ret;
+
+	ret = dwc_vbus_supply_exit(dev);
+	if (ret)
+		return ret;
 
 	dwc2_uninit_common(priv->regs);
 
-- 
1.9.1

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

* [U-Boot] [PATCH 2/3] usb: dwc2: increase timeout in wait_for_chhltd
  2018-03-15 17:00 [U-Boot] [PATCH 0/3] Update DWC2 driver patrice.chotard at st.com
  2018-03-15 17:00 ` [U-Boot] [PATCH 1/3] usb: dwc2: disable external vbus supply when the device is removed patrice.chotard at st.com
@ 2018-03-15 17:00 ` patrice.chotard at st.com
  2018-03-15 17:00 ` [U-Boot] [PATCH 3/3] usb: dwc2: Replace printf, pr_err by dev_info, dev_err patrice.chotard at st.com
  2018-03-17  2:23 ` [U-Boot] [PATCH 0/3] Update DWC2 driver Marek Vasut
  3 siblings, 0 replies; 5+ messages in thread
From: patrice.chotard at st.com @ 2018-03-15 17:00 UTC (permalink / raw)
  To: u-boot

From: Christophe Kerello <christophe.kerello@st.com>

This patch increases timeout to 2s.
It was seen on 2 USB devices (Verbatim STORE N GO 070B4AED0FB22358 and
USB DISK 2.0 9000729BA41DDF40) that the request sense command takes
between 1.3s and and 1.5s.

Signed-off-by: Christophe Kerello <christophe.kerello@st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
 drivers/usb/host/dwc2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index cd70b2a195ca..596f583406e4 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -811,7 +811,7 @@ int wait_for_chhltd(struct dwc2_hc_regs *hc_regs, uint32_t *sub, u8 *toggle)
 	uint32_t hcint, hctsiz;
 
 	ret = wait_for_bit_le32(&hc_regs->hcint, DWC2_HCINT_CHHLTD, true,
-				1000, false);
+				2000, false);
 	if (ret)
 		return ret;
 
-- 
1.9.1

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

* [U-Boot] [PATCH 3/3] usb: dwc2: Replace printf, pr_err by dev_info, dev_err
  2018-03-15 17:00 [U-Boot] [PATCH 0/3] Update DWC2 driver patrice.chotard at st.com
  2018-03-15 17:00 ` [U-Boot] [PATCH 1/3] usb: dwc2: disable external vbus supply when the device is removed patrice.chotard at st.com
  2018-03-15 17:00 ` [U-Boot] [PATCH 2/3] usb: dwc2: increase timeout in wait_for_chhltd patrice.chotard at st.com
@ 2018-03-15 17:00 ` patrice.chotard at st.com
  2018-03-17  2:23 ` [U-Boot] [PATCH 0/3] Update DWC2 driver Marek Vasut
  3 siblings, 0 replies; 5+ messages in thread
From: patrice.chotard at st.com @ 2018-03-15 17:00 UTC (permalink / raw)
  To: u-boot

From: Patrice Chotard <patrice.chotard@st.com>

Replace printf() call by dev_info() and pr_err() by dev_err()

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
 drivers/usb/host/dwc2.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index 596f583406e4..03a2ed2f504b 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -114,7 +114,7 @@ static void dwc_otg_flush_tx_fifo(struct dwc2_core_regs *regs, const int num)
 	ret = wait_for_bit_le32(&regs->grstctl, DWC2_GRSTCTL_TXFFLSH,
 				false, 1000, false);
 	if (ret)
-		printf("%s: Timeout!\n", __func__);
+		dev_info(dev, "%s: Timeout!\n", __func__);
 
 	/* Wait for 3 PHY Clocks */
 	udelay(1);
@@ -133,7 +133,7 @@ static void dwc_otg_flush_rx_fifo(struct dwc2_core_regs *regs)
 	ret = wait_for_bit_le32(&regs->grstctl, DWC2_GRSTCTL_RXFFLSH,
 				false, 1000, false);
 	if (ret)
-		printf("%s: Timeout!\n", __func__);
+		dev_info(dev, "%s: Timeout!\n", __func__);
 
 	/* Wait for 3 PHY Clocks */
 	udelay(1);
@@ -151,14 +151,14 @@ static void dwc_otg_core_reset(struct dwc2_core_regs *regs)
 	ret = wait_for_bit_le32(&regs->grstctl, DWC2_GRSTCTL_AHBIDLE,
 				true, 1000, false);
 	if (ret)
-		printf("%s: Timeout!\n", __func__);
+		dev_info(dev, "%s: Timeout!\n", __func__);
 
 	/* Core Soft Reset */
 	writel(DWC2_GRSTCTL_CSFTRST, &regs->grstctl);
 	ret = wait_for_bit_le32(&regs->grstctl, DWC2_GRSTCTL_CSFTRST,
 				false, 1000, false);
 	if (ret)
-		printf("%s: Timeout!\n", __func__);
+		dev_info(dev, "%s: Timeout!\n", __func__);
 
 	/*
 	 * Wait for core to come out of reset.
@@ -183,7 +183,7 @@ static int dwc_vbus_supply_init(struct udevice *dev)
 
 	ret = regulator_set_enable(priv->vbus_supply, true);
 	if (ret) {
-		pr_err("Error enabling vbus supply\n");
+		dev_err(dev, "Error enabling vbus supply\n");
 		return ret;
 	}
 
@@ -297,7 +297,7 @@ static void dwc_otg_core_host_init(struct udevice *dev,
 		ret = wait_for_bit_le32(&regs->hc_regs[i].hcchar,
 					DWC2_HCCHAR_CHEN, false, 1000, false);
 		if (ret)
-			printf("%s: Timeout!\n", __func__);
+			dev_info("%s: Timeout!\n", __func__);
 	}
 
 	/* Turn on the vbus power. */
@@ -1118,7 +1118,7 @@ int _submit_int_msg(struct dwc2_priv *priv, struct usb_device *dev,
 	timeout = get_timer(0) + USB_TIMEOUT_MS(pipe);
 	for (;;) {
 		if (get_timer(0) > timeout) {
-			printf("Timeout poll on interrupt endpoint\n");
+			dev_err(dev, "Timeout poll on interrupt endpoint\n");
 			return -ETIMEDOUT;
 		}
 		ret = _submit_bulk_msg(priv, dev, pipe, buffer, len);
@@ -1134,11 +1134,13 @@ static int dwc2_init_common(struct udevice *dev, struct dwc2_priv *priv)
 	int i, j;
 
 	snpsid = readl(&regs->gsnpsid);
-	printf("Core Release: %x.%03x\n", snpsid >> 12 & 0xf, snpsid & 0xfff);
+	dev_info(dev, "Core Release: %x.%03x\n",
+		 snpsid >> 12 & 0xf, snpsid & 0xfff);
 
 	if ((snpsid & DWC2_SNPSID_DEVID_MASK) != DWC2_SNPSID_DEVID_VER_2xx &&
 	    (snpsid & DWC2_SNPSID_DEVID_MASK) != DWC2_SNPSID_DEVID_VER_3xx) {
-		printf("SNPSID invalid (not DWC2 OTG device): %08x\n", snpsid);
+		dev_info(dev, "SNPSID invalid (not DWC2 OTG device): %08x\n",
+			 snpsid);
 		return -ENODEV;
 	}
 
-- 
1.9.1

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

* [U-Boot] [PATCH 0/3] Update DWC2 driver
  2018-03-15 17:00 [U-Boot] [PATCH 0/3] Update DWC2 driver patrice.chotard at st.com
                   ` (2 preceding siblings ...)
  2018-03-15 17:00 ` [U-Boot] [PATCH 3/3] usb: dwc2: Replace printf, pr_err by dev_info, dev_err patrice.chotard at st.com
@ 2018-03-17  2:23 ` Marek Vasut
  3 siblings, 0 replies; 5+ messages in thread
From: Marek Vasut @ 2018-03-17  2:23 UTC (permalink / raw)
  To: u-boot

On 03/15/2018 06:00 PM, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
> 
> This series :
>  _ adds dwc_vbus_supply_exit() to disable VBUS on device removal
>  _ increases timeout in wait_for_chhltd()
>  _ replaces printf() and pr_err by dev_info() and dev_err()
> 
> 
> Christophe Kerello (2):
>   usb: dwc2: disable external vbus supply when the device is removed
>   usb: dwc2: increase timeout in wait_for_chhltd
> 
> Patrice Chotard (1):
>   usb: dwc2: Replace printf, pr_err by dev_info, dev_err
> 
>  drivers/usb/host/dwc2.c | 60 ++++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 47 insertions(+), 13 deletions(-)

Applied all three, thanks

-- 
Best regards,
Marek Vasut

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

end of thread, other threads:[~2018-03-17  2:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-15 17:00 [U-Boot] [PATCH 0/3] Update DWC2 driver patrice.chotard at st.com
2018-03-15 17:00 ` [U-Boot] [PATCH 1/3] usb: dwc2: disable external vbus supply when the device is removed patrice.chotard at st.com
2018-03-15 17:00 ` [U-Boot] [PATCH 2/3] usb: dwc2: increase timeout in wait_for_chhltd patrice.chotard at st.com
2018-03-15 17:00 ` [U-Boot] [PATCH 3/3] usb: dwc2: Replace printf, pr_err by dev_info, dev_err patrice.chotard at st.com
2018-03-17  2:23 ` [U-Boot] [PATCH 0/3] Update DWC2 driver Marek Vasut

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.