All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  7:41 ` Anurag Kumar Vulisha
  0 siblings, 0 replies; 8+ messages in thread
From: Anurag Kumar Vulisha @ 2018-07-27  7:41 UTC (permalink / raw)
  To: balbi, gregkh
  Cc: v.anuragkumar, linux-usb, linux-kernel, Anurag Kumar Vulisha

By default when core sees any transaction error(CRC or overflow)
it replies with terminating retry ACK (Retry=1 and Nump == 0).
Enabling this Auto Retry feature in controller, on seeing any
transaction errors makes the core to send a non-terminating ACK
transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
Doing so will give controller a chance to recover from the error
condition.

Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
---
 Changes in v4:
	1. Changed the patch subject

 Changes in v3:
	1. As suggested by Felipe, added OTG related check
	2. Corrected the multi-line commenting format

 Changes in v2:
	1. As suggested by Rob Herring & Felipe Balbi removed the
	   quirk logic and setting the AutoRetry bits unconditionally
	   for hostmode
---
 drivers/usb/dwc3/core.c | 16 ++++++++++++++++
 drivers/usb/dwc3/core.h |  3 +++
 2 files changed, 19 insertions(+)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 1038075..bc9e33c 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -883,6 +883,22 @@ static int dwc3_core_init(struct dwc3 *dwc)
 		dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
 	}
 
+	if (dwc->dr_mode == USB_DR_MODE_HOST ||
+	    dwc->dr_mode == USB_DR_MODE_OTG) {
+		reg = dwc3_readl(dwc->regs, DWC3_GUCTL);
+
+		/*
+		 * Enable Auto retry Feature to make the controller operating in
+		 * Host mode on seeing transaction errors(CRC errors or internal
+		 * overrun scenerios) on IN transfers to reply to the device
+		 * with a non-terminating retry ACK (i.e, an ACK transcation
+		 * packet with Retry=1 & Nump != 0)
+		 */
+		reg |= DWC3_GUCTL_HSTINAUTORETRY;
+
+		dwc3_writel(dwc->regs, DWC3_GUCTL, reg);
+	}
+
 	/*
 	 * Must config both number of packets and max burst settings to enable
 	 * RX and/or TX threshold.
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 285ce0e..92a1077 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -227,6 +227,9 @@
 #define DWC3_GCTL_GBLHIBERNATIONEN	BIT(1)
 #define DWC3_GCTL_DSBLCLKGTNG		BIT(0)
 
+/* Global User Control Register */
+#define DWC3_GUCTL_HSTINAUTORETRY	BIT(14)
+
 /* Global User Control 1 Register */
 #define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS	BIT(28)
 #define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW	BIT(24)
-- 
2.1.1


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

* [v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  7:41 ` Anurag Kumar Vulisha
  0 siblings, 0 replies; 8+ messages in thread
From: Anurag Kumar Vulisha @ 2018-07-27  7:41 UTC (permalink / raw)
  To: balbi, gregkh
  Cc: v.anuragkumar, linux-usb, linux-kernel, Anurag Kumar Vulisha

By default when core sees any transaction error(CRC or overflow)
it replies with terminating retry ACK (Retry=1 and Nump == 0).
Enabling this Auto Retry feature in controller, on seeing any
transaction errors makes the core to send a non-terminating ACK
transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
Doing so will give controller a chance to recover from the error
condition.

Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
---
 Changes in v4:
	1. Changed the patch subject

 Changes in v3:
	1. As suggested by Felipe, added OTG related check
	2. Corrected the multi-line commenting format

 Changes in v2:
	1. As suggested by Rob Herring & Felipe Balbi removed the
	   quirk logic and setting the AutoRetry bits unconditionally
	   for hostmode
---
 drivers/usb/dwc3/core.c | 16 ++++++++++++++++
 drivers/usb/dwc3/core.h |  3 +++
 2 files changed, 19 insertions(+)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 1038075..bc9e33c 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -883,6 +883,22 @@ static int dwc3_core_init(struct dwc3 *dwc)
 		dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
 	}
 
+	if (dwc->dr_mode == USB_DR_MODE_HOST ||
+	    dwc->dr_mode == USB_DR_MODE_OTG) {
+		reg = dwc3_readl(dwc->regs, DWC3_GUCTL);
+
+		/*
+		 * Enable Auto retry Feature to make the controller operating in
+		 * Host mode on seeing transaction errors(CRC errors or internal
+		 * overrun scenerios) on IN transfers to reply to the device
+		 * with a non-terminating retry ACK (i.e, an ACK transcation
+		 * packet with Retry=1 & Nump != 0)
+		 */
+		reg |= DWC3_GUCTL_HSTINAUTORETRY;
+
+		dwc3_writel(dwc->regs, DWC3_GUCTL, reg);
+	}
+
 	/*
 	 * Must config both number of packets and max burst settings to enable
 	 * RX and/or TX threshold.
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 285ce0e..92a1077 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -227,6 +227,9 @@
 #define DWC3_GCTL_GBLHIBERNATIONEN	BIT(1)
 #define DWC3_GCTL_DSBLCLKGTNG		BIT(0)
 
+/* Global User Control Register */
+#define DWC3_GUCTL_HSTINAUTORETRY	BIT(14)
+
 /* Global User Control 1 Register */
 #define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS	BIT(28)
 #define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW	BIT(24)

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

* Re: [PATCH v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  7:48   ` Felipe Balbi
  0 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2018-07-27  7:48 UTC (permalink / raw)
  To: Anurag Kumar Vulisha, gregkh
  Cc: v.anuragkumar, linux-usb, linux-kernel, Anurag Kumar Vulisha

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

Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> writes:

> By default when core sees any transaction error(CRC or overflow)
> it replies with terminating retry ACK (Retry=1 and Nump == 0).
> Enabling this Auto Retry feature in controller, on seeing any
> transaction errors makes the core to send a non-terminating ACK
> transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
> Doing so will give controller a chance to recover from the error
> condition.
>
> Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>

now applied. I've slightly modified commit log to make it read a bit
better.

-- 
balbi

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

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

* [v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  7:48   ` Felipe Balbi
  0 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2018-07-27  7:48 UTC (permalink / raw)
  To: Anurag Kumar Vulisha, gregkh; +Cc: v.anuragkumar, linux-usb, linux-kernel

Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> writes:

> By default when core sees any transaction error(CRC or overflow)
> it replies with terminating retry ACK (Retry=1 and Nump == 0).
> Enabling this Auto Retry feature in controller, on seeing any
> transaction errors makes the core to send a non-terminating ACK
> transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
> Doing so will give controller a chance to recover from the error
> condition.
>
> Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>

now applied. I've slightly modified commit log to make it read a bit
better.

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

* RE: [PATCH v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  7:54     ` Anurag Kumar Vulisha
  0 siblings, 0 replies; 8+ messages in thread
From: Anurag Kumar Vulisha @ 2018-07-27  7:54 UTC (permalink / raw)
  To: Felipe Balbi, gregkh; +Cc: v.anuragkumar, linux-usb, linux-kernel


Hi Felipe,

>> replies with terminating retry ACK (Retry=1 and Nump == 0).
>> Enabling this Auto Retry feature in controller, on seeing any
>> transaction errors makes the core to send a non-terminating ACK
>> transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
>> Doing so will give controller a chance to recover from the error
>> condition.
>>
>> Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
>
>now applied. I've slightly modified commit log to make it read a bit better.
>
Okay. Thanks a million for helping me in correcting the patch.

Regards,
Anurag Kumar Vulisha
>--
>balbi

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

* [v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  7:54     ` Anurag Kumar Vulisha
  0 siblings, 0 replies; 8+ messages in thread
From: Anurag Kumar Vulisha @ 2018-07-27  7:54 UTC (permalink / raw)
  To: Felipe Balbi, gregkh; +Cc: v.anuragkumar, linux-usb, linux-kernel

Hi Felipe,

>> replies with terminating retry ACK (Retry=1 and Nump == 0).
>> Enabling this Auto Retry feature in controller, on seeing any
>> transaction errors makes the core to send a non-terminating ACK
>> transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
>> Doing so will give controller a chance to recover from the error
>> condition.
>>
>> Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
>
>now applied. I've slightly modified commit log to make it read a bit better.
>
Okay. Thanks a million for helping me in correcting the patch.

Regards,
Anurag Kumar Vulisha
>--
>balbi
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* RE: [PATCH v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  8:00       ` Felipe Balbi
  0 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2018-07-27  8:00 UTC (permalink / raw)
  To: Anurag Kumar Vulisha, gregkh; +Cc: v.anuragkumar, linux-usb, linux-kernel

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


Hi,

Anurag Kumar Vulisha <anuragku@xilinx.com> writes:
>>> replies with terminating retry ACK (Retry=1 and Nump == 0).
>>> Enabling this Auto Retry feature in controller, on seeing any
>>> transaction errors makes the core to send a non-terminating ACK
>>> transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
>>> Doing so will give controller a chance to recover from the error
>>> condition.
>>>
>>> Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
>>
>>now applied. I've slightly modified commit log to make it read a bit better.
>>
> Okay. Thanks a million for helping me in correcting the patch.

no problem ;)

-- 
balbi

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

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

* [v4] usb: dwc3: core: Enable AutoRetry feature in the controller
@ 2018-07-27  8:00       ` Felipe Balbi
  0 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2018-07-27  8:00 UTC (permalink / raw)
  To: Anurag Kumar Vulisha, gregkh; +Cc: v.anuragkumar, linux-usb, linux-kernel

Hi,

Anurag Kumar Vulisha <anuragku@xilinx.com> writes:
>>> replies with terminating retry ACK (Retry=1 and Nump == 0).
>>> Enabling this Auto Retry feature in controller, on seeing any
>>> transaction errors makes the core to send a non-terminating ACK
>>> transaction packet (that is, ACK TP with Retry=1 and Nump != 0).
>>> Doing so will give controller a chance to recover from the error
>>> condition.
>>>
>>> Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
>>
>>now applied. I've slightly modified commit log to make it read a bit better.
>>
> Okay. Thanks a million for helping me in correcting the patch.

no problem ;)

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

end of thread, other threads:[~2018-07-27  8:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-27  7:41 [PATCH v4] usb: dwc3: core: Enable AutoRetry feature in the controller Anurag Kumar Vulisha
2018-07-27  7:41 ` [v4] " Anurag Kumar Vulisha
2018-07-27  7:48 ` [PATCH v4] " Felipe Balbi
2018-07-27  7:48   ` [v4] " Felipe Balbi
2018-07-27  7:54   ` [PATCH v4] " Anurag Kumar Vulisha
2018-07-27  7:54     ` [v4] " Anurag Kumar Vulisha
2018-07-27  8:00     ` [PATCH v4] " Felipe Balbi
2018-07-27  8:00       ` [v4] " Felipe Balbi

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.