@@ -1061,6 +1061,18 @@ static void dwc3_set_incr_burst_type(struct dwc3 *dwc)
cfg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG0);
+ if (of_device_is_compatible(dev->of_node, "fsl,ls-dwc3")) {
+
+ cfg &= ~(DWC3_GSBUSCFG0_DATARD | DWC3_GSBUSCFG0_DESCRD |
+ DWC3_GSBUSCFG0_DATAWR | DWC3_GSBUSCFG0_DESCWR);
+ cfg |= FIELD_PREP(DWC3_GSBUSCFG0_DATARD, 2) |
+ FIELD_PREP(DWC3_GSBUSCFG0_DESCRD, 2) |
+ FIELD_PREP(DWC3_GSBUSCFG0_DATAWR, 2) |
+ FIELD_PREP(DWC3_GSBUSCFG0_DESCWR, 2);
+
+ dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, cfg);
+ }
+
/*
* Handle property "snps,incr-burst-type-adjustment".
* Get the number of value from this property:
@@ -184,6 +184,10 @@
/* Bit fields */
/* Global SoC Bus Configuration INCRx Register 0 */
+#define DWC3_GSBUSCFG0_DATARD GENMASK(31, 28)
+#define DWC3_GSBUSCFG0_DESCRD GENMASK(27, 24)
+#define DWC3_GSBUSCFG0_DATAWR GENMASK(23, 20)
+#define DWC3_GSBUSCFG0_DESCWR GENMASK(19, 16)
#define DWC3_GSBUSCFG0_INCR256BRSTENA (1 << 7) /* INCR256 burst */
#define DWC3_GSBUSCFG0_INCR128BRSTENA (1 << 6) /* INCR128 burst */
#define DWC3_GSBUSCFG0_INCR64BRSTENA (1 << 5) /* INCR64 burst */