usb: dwc3: core: Enable AutoRetry feature in the controller
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 will make the core send a non-terminanting ACK upon such transaction errors. That is, ACK TP with Retry=1 and Nump != 0. Doing so will give controller a chance to recover from transient error conditions. Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
a770046811
commit
b138e23d3d
@ -985,6 +985,22 @@ static int dwc3_core_init(struct dwc3 *dwc)
|
|||||||
dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
|
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
|
* Must config both number of packets and max burst settings to enable
|
||||||
* RX and/or TX threshold.
|
* RX and/or TX threshold.
|
||||||
|
@ -238,6 +238,9 @@
|
|||||||
#define DWC3_GCTL_GBLHIBERNATIONEN BIT(1)
|
#define DWC3_GCTL_GBLHIBERNATIONEN BIT(1)
|
||||||
#define DWC3_GCTL_DSBLCLKGTNG BIT(0)
|
#define DWC3_GCTL_DSBLCLKGTNG BIT(0)
|
||||||
|
|
||||||
|
/* Global User Control Register */
|
||||||
|
#define DWC3_GUCTL_HSTINAUTORETRY BIT(14)
|
||||||
|
|
||||||
/* Global User Control 1 Register */
|
/* Global User Control 1 Register */
|
||||||
#define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS BIT(28)
|
#define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS BIT(28)
|
||||||
#define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24)
|
#define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW BIT(24)
|
||||||
|
Loading…
Reference in New Issue
Block a user