Message ID | 1454588282-14383-1-git-send-email-balbi@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Felipe, On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: > That FIFO resizing logic was added to support OMAP5 > ES1.0 which had a bogus default FIFO size. I can't > remember the exact size of default FIFO, but it was > less than one bulk superspeed packet (<1024) which > would prevent USB3 from ever working on OMAP5 ES1.0. > > However, OMAP5 ES1.0 support has been dropped by > commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 > support") which renders FIFO resizing unnecessary. > > Signed-off-by: Felipe Balbi <balbi@kernel.org> tested this series on both dra7-evm and dra72-evm using mass storage gadget and msc.sh dra72-evm: http://pastebin.ubuntu.com/14887997/ dra7-evm: http://pastebin.ubuntu.com/14887975/ Tested-by: Kishon Vijay Abraham I <kishon@ti.com> Let me know if you want me to do any other testing on dra7. Thanks Kishon > --- > Documentation/devicetree/bindings/usb/dwc3.txt | 4 +- > .../devicetree/bindings/usb/qcom,dwc3.txt | 1 - > drivers/usb/dwc3/core.c | 4 - > drivers/usb/dwc3/core.h | 5 -- > drivers/usb/dwc3/ep0.c | 9 --- > drivers/usb/dwc3/gadget.c | 86 ---------------------- > drivers/usb/dwc3/platform_data.h | 1 - > 7 files changed, 2 insertions(+), 108 deletions(-) > > diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt > index fb2ad0acedbd..15695682a480 100644 > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > +++ b/Documentation/devicetree/bindings/usb/dwc3.txt > @@ -14,7 +14,6 @@ Optional properties: > the second element is expected to be a handle to the USB3/SS PHY > - phys: from the *Generic PHY* bindings > - phy-names: from the *Generic PHY* bindings > - - tx-fifo-resize: determines if the FIFO *has* to be reallocated. > - snps,usb3_lpm_capable: determines if platform is USB3 LPM capable > - snps,disable_scramble_quirk: true when SW should disable data scrambling. > Only really useful for FPGA builds. > @@ -47,6 +46,8 @@ Optional properties: > register for post-silicon frame length adjustment when the > fladj_30mhz_sdbnd signal is invalid or incorrect. > > + - <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated. > + > This is usually a subnode to DWC3 glue to which it is connected. > > dwc3@4a030000 { > @@ -54,5 +55,4 @@ dwc3@4a030000 { > reg = <0x4a030000 0xcfff>; > interrupts = <0 92 4> > usb-phy = <&usb2_phy>, <&usb3,phy>; > - tx-fifo-resize; > }; > diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.txt b/Documentation/devicetree/bindings/usb/qcom,dwc3.txt > index ca164e71dd50..39acb084bce9 100644 > --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.txt > +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.txt > @@ -59,7 +59,6 @@ Example device nodes: > interrupts = <0 205 0x4>; > phys = <&hs_phy>, <&ss_phy>; > phy-names = "usb2-phy", "usb3-phy"; > - tx-fifo-resize; > dr_mode = "host"; > }; > }; > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index de5e01f41bc2..ed03820ebedd 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -894,9 +894,6 @@ static int dwc3_probe(struct platform_device *pdev) > dwc->usb3_lpm_capable = device_property_read_bool(dev, > "snps,usb3_lpm_capable"); > > - dwc->needs_fifo_resize = device_property_read_bool(dev, > - "tx-fifo-resize"); > - > dwc->disable_scramble_quirk = device_property_read_bool(dev, > "snps,disable_scramble_quirk"); > dwc->u2exit_lfps_quirk = device_property_read_bool(dev, > @@ -938,7 +935,6 @@ static int dwc3_probe(struct platform_device *pdev) > if (pdata->hird_threshold) > hird_threshold = pdata->hird_threshold; > > - dwc->needs_fifo_resize = pdata->tx_fifo_resize; > dwc->usb3_lpm_capable = pdata->usb3_lpm_capable; > dwc->dr_mode = pdata->dr_mode; > > diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h > index 29130682e547..c6960541c38c 100644 > --- a/drivers/usb/dwc3/core.h > +++ b/drivers/usb/dwc3/core.h > @@ -706,9 +706,7 @@ struct dwc3_scratchpad_array { > * 0 - utmi_sleep_n > * 1 - utmi_l1_suspend_n > * @is_fpga: true when we are using the FPGA board > - * @needs_fifo_resize: not all users might want fifo resizing, flag it > * @pullups_connected: true when Run/Stop bit is set > - * @resize_fifos: tells us it's ok to reconfigure our TxFIFO sizes. > * @setup_packet_pending: true when there's a Setup Packet in FIFO. Workaround > * @start_config_issued: true when StartConfig command has been issued > * @three_stage_setup: set if we perform a three phase setup > @@ -852,9 +850,7 @@ struct dwc3 { > unsigned has_lpm_erratum:1; > unsigned is_utmi_l1_suspend:1; > unsigned is_fpga:1; > - unsigned needs_fifo_resize:1; > unsigned pullups_connected:1; > - unsigned resize_fifos:1; > unsigned setup_packet_pending:1; > unsigned start_config_issued:1; > unsigned three_stage_setup:1; > @@ -1023,7 +1019,6 @@ struct dwc3_gadget_ep_cmd_params { > > /* prototypes */ > void dwc3_set_mode(struct dwc3 *dwc, u32 mode); > -int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc); > > #if IS_ENABLED(CONFIG_USB_DWC3_HOST) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) > int dwc3_host_init(struct dwc3 *dwc); > diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c > index 3a9354abcb68..2916a7f8f285 100644 > --- a/drivers/usb/dwc3/ep0.c > +++ b/drivers/usb/dwc3/ep0.c > @@ -584,9 +584,6 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) > reg = dwc3_readl(dwc->regs, DWC3_DCTL); > reg |= (DWC3_DCTL_ACCEPTU1ENA | DWC3_DCTL_ACCEPTU2ENA); > dwc3_writel(dwc->regs, DWC3_DCTL, reg); > - > - dwc->resize_fifos = true; > - dwc3_trace(trace_dwc3_ep0, "resize FIFOs flag SET"); > } > break; > > @@ -1029,12 +1026,6 @@ static int dwc3_ep0_start_control_status(struct dwc3_ep *dep) > > static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep) > { > - if (dwc->resize_fifos) { > - dwc3_trace(trace_dwc3_ep0, "Resizing FIFOs"); > - dwc3_gadget_resize_tx_fifos(dwc); > - dwc->resize_fifos = 0; > - } > - > WARN_ON(dwc3_ep0_start_control_status(dep)); > } > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 7d1dd82a95ac..a5c783dfbbd6 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -145,92 +145,6 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state) > return -ETIMEDOUT; > } > > -/** > - * dwc3_gadget_resize_tx_fifos - reallocate fifo spaces for current use-case > - * @dwc: pointer to our context structure > - * > - * This function will a best effort FIFO allocation in order > - * to improve FIFO usage and throughput, while still allowing > - * us to enable as many endpoints as possible. > - * > - * Keep in mind that this operation will be highly dependent > - * on the configured size for RAM1 - which contains TxFifo -, > - * the amount of endpoints enabled on coreConsultant tool, and > - * the width of the Master Bus. > - * > - * In the ideal world, we would always be able to satisfy the > - * following equation: > - * > - * ((512 + 2 * MDWIDTH-Bytes) + (Number of IN Endpoints - 1) * \ > - * (3 * (1024 + MDWIDTH-Bytes) + MDWIDTH-Bytes)) / MDWIDTH-Bytes > - * > - * Unfortunately, due to many variables that's not always the case. > - */ > -int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc) > -{ > - int last_fifo_depth = 0; > - int ram1_depth; > - int fifo_size; > - int mdwidth; > - int num; > - > - if (!dwc->needs_fifo_resize) > - return 0; > - > - ram1_depth = DWC3_RAM1_DEPTH(dwc->hwparams.hwparams7); > - mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0); > - > - /* MDWIDTH is represented in bits, we need it in bytes */ > - mdwidth >>= 3; > - > - /* > - * FIXME For now we will only allocate 1 wMaxPacketSize space > - * for each enabled endpoint, later patches will come to > - * improve this algorithm so that we better use the internal > - * FIFO space > - */ > - for (num = 0; num < dwc->num_in_eps; num++) { > - /* bit0 indicates direction; 1 means IN ep */ > - struct dwc3_ep *dep = dwc->eps[(num << 1) | 1]; > - int mult = 1; > - int tmp; > - > - if (!(dep->flags & DWC3_EP_ENABLED)) > - continue; > - > - if (usb_endpoint_xfer_bulk(dep->endpoint.desc) > - || usb_endpoint_xfer_isoc(dep->endpoint.desc)) > - mult = 3; > - > - /* > - * REVISIT: the following assumes we will always have enough > - * space available on the FIFO RAM for all possible use cases. > - * Make sure that's true somehow and change FIFO allocation > - * accordingly. > - * > - * If we have Bulk or Isochronous endpoints, we want > - * them to be able to be very, very fast. So we're giving > - * those endpoints a fifo_size which is enough for 3 full > - * packets > - */ > - tmp = mult * (dep->endpoint.maxpacket + mdwidth); > - tmp += mdwidth; > - > - fifo_size = DIV_ROUND_UP(tmp, mdwidth); > - > - fifo_size |= (last_fifo_depth << 16); > - > - dwc3_trace(trace_dwc3_gadget, "%s: Fifo Addr %04x Size %d", > - dep->name, last_fifo_depth, fifo_size & 0xffff); > - > - dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(num), fifo_size); > - > - last_fifo_depth += (fifo_size & 0xffff); > - } > - > - return 0; > -} > - > void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, > int status) > { > diff --git a/drivers/usb/dwc3/platform_data.h b/drivers/usb/dwc3/platform_data.h > index 2bb4d3ad0e6b..aaa6f00df755 100644 > --- a/drivers/usb/dwc3/platform_data.h > +++ b/drivers/usb/dwc3/platform_data.h > @@ -23,7 +23,6 @@ > struct dwc3_platform_data { > enum usb_device_speed maximum_speed; > enum usb_dr_mode dr_mode; > - bool tx_fifo_resize; > bool usb3_lpm_capable; > > unsigned is_utmi_l1_suspend:1; > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, Kishon Vijay Abraham I <kishon@ti.com> writes: > Hi Felipe, > > On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >> That FIFO resizing logic was added to support OMAP5 >> ES1.0 which had a bogus default FIFO size. I can't >> remember the exact size of default FIFO, but it was >> less than one bulk superspeed packet (<1024) which >> would prevent USB3 from ever working on OMAP5 ES1.0. >> >> However, OMAP5 ES1.0 support has been dropped by >> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >> support") which renders FIFO resizing unnecessary. >> >> Signed-off-by: Felipe Balbi <balbi@kernel.org> > > tested this series on both dra7-evm and dra72-evm using mass storage gadget and > msc.sh both HS and SS ? > dra72-evm: http://pastebin.ubuntu.com/14887997/ > dra7-evm: http://pastebin.ubuntu.com/14887975/ > > Tested-by: Kishon Vijay Abraham I <kishon@ti.com> > > Let me know if you want me to do any other testing on dra7. yeah, run testusb for a week or so, that usually catches odd bugs.
Hi, On Wednesday 10 February 2016 03:43 PM, Felipe Balbi wrote: > > Hi, > > Kishon Vijay Abraham I <kishon@ti.com> writes: >> Hi Felipe, >> >> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>> That FIFO resizing logic was added to support OMAP5 >>> ES1.0 which had a bogus default FIFO size. I can't >>> remember the exact size of default FIFO, but it was >>> less than one bulk superspeed packet (<1024) which >>> would prevent USB3 from ever working on OMAP5 ES1.0. >>> >>> However, OMAP5 ES1.0 support has been dropped by >>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>> support") which renders FIFO resizing unnecessary. >>> >>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >> >> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >> msc.sh > > both HS and SS ? yes.. but the logs here were for only SS. > >> dra72-evm: http://pastebin.ubuntu.com/14887997/ >> dra7-evm: http://pastebin.ubuntu.com/14887975/ >> >> Tested-by: Kishon Vijay Abraham I <kishon@ti.com> >> >> Let me know if you want me to do any other testing on dra7. > > yeah, run testusb for a week or so, that usually catches odd bugs. Okay. I'll start the test before I go for vacation next week. Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, Kishon Vijay Abraham I <kishon@ti.com> writes: >> Kishon Vijay Abraham I <kishon@ti.com> writes: >>> Hi Felipe, >>> >>> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>>> That FIFO resizing logic was added to support OMAP5 >>>> ES1.0 which had a bogus default FIFO size. I can't >>>> remember the exact size of default FIFO, but it was >>>> less than one bulk superspeed packet (<1024) which >>>> would prevent USB3 from ever working on OMAP5 ES1.0. >>>> >>>> However, OMAP5 ES1.0 support has been dropped by >>>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>>> support") which renders FIFO resizing unnecessary. >>>> >>>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >>> >>> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >>> msc.sh >> >> both HS and SS ? > > yes.. but the logs here were for only SS. cool thanks. Did you notice any speed regression or is it all the same ? >>> Let me know if you want me to do any other testing on dra7. >> >> yeah, run testusb for a week or so, that usually catches odd bugs. > > Okay. I'll start the test before I go for vacation next week. great
Hi, On Wednesday 10 February 2016 04:56 PM, Felipe Balbi wrote: > > Hi, > > Kishon Vijay Abraham I <kishon@ti.com> writes: >>> Kishon Vijay Abraham I <kishon@ti.com> writes: >>>> Hi Felipe, >>>> >>>> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>>>> That FIFO resizing logic was added to support OMAP5 >>>>> ES1.0 which had a bogus default FIFO size. I can't >>>>> remember the exact size of default FIFO, but it was >>>>> less than one bulk superspeed packet (<1024) which >>>>> would prevent USB3 from ever working on OMAP5 ES1.0. >>>>> >>>>> However, OMAP5 ES1.0 support has been dropped by >>>>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>>>> support") which renders FIFO resizing unnecessary. >>>>> >>>>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >>>> >>>> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >>>> msc.sh >>> >>> both HS and SS ? >> >> yes.. but the logs here were for only SS. > > cool thanks. Did you notice any speed regression or is it all the same ? the throughput was similar with or without this series. I'll run multiple times and check that again once I come back from my vacation. Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Felipe, On Wednesday 10 February 2016 03:47 PM, Kishon Vijay Abraham I wrote: > Hi, > > On Wednesday 10 February 2016 03:43 PM, Felipe Balbi wrote: >> >> Hi, >> >> Kishon Vijay Abraham I <kishon@ti.com> writes: >>> Hi Felipe, >>> >>> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>>> That FIFO resizing logic was added to support OMAP5 >>>> ES1.0 which had a bogus default FIFO size. I can't >>>> remember the exact size of default FIFO, but it was >>>> less than one bulk superspeed packet (<1024) which >>>> would prevent USB3 from ever working on OMAP5 ES1.0. >>>> >>>> However, OMAP5 ES1.0 support has been dropped by >>>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>>> support") which renders FIFO resizing unnecessary. >>>> >>>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >>> >>> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >>> msc.sh >> >> both HS and SS ? > > yes.. but the logs here were for only SS. >> >>> dra72-evm: http://pastebin.ubuntu.com/14887997/ >>> dra7-evm: http://pastebin.ubuntu.com/14887975/ >>> >>> Tested-by: Kishon Vijay Abraham I <kishon@ti.com> >>> >>> Let me know if you want me to do any other testing on dra7. >> >> yeah, run testusb for a week or so, that usually catches odd bugs. > > Okay. I'll start the test before I go for vacation next week. Looks like the test couldn't complete and I see dumps [1] in my host PC. Here's the output of testusb [2]. [1] -> http://pastebin.ubuntu.com/15169114/ [2] -> http://pastebin.ubuntu.com/15169116/ Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, Kishon Vijay Abraham I <kishon@ti.com> writes: >>>> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>>>> That FIFO resizing logic was added to support OMAP5 >>>>> ES1.0 which had a bogus default FIFO size. I can't >>>>> remember the exact size of default FIFO, but it was >>>>> less than one bulk superspeed packet (<1024) which >>>>> would prevent USB3 from ever working on OMAP5 ES1.0. >>>>> >>>>> However, OMAP5 ES1.0 support has been dropped by >>>>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>>>> support") which renders FIFO resizing unnecessary. >>>>> >>>>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >>>> >>>> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >>>> msc.sh >>> >>> both HS and SS ? >> >> yes.. but the logs here were for only SS. >>> >>>> dra72-evm: http://pastebin.ubuntu.com/14887997/ >>>> dra7-evm: http://pastebin.ubuntu.com/14887975/ >>>> >>>> Tested-by: Kishon Vijay Abraham I <kishon@ti.com> >>>> >>>> Let me know if you want me to do any other testing on dra7. >>> >>> yeah, run testusb for a week or so, that usually catches odd bugs. >> >> Okay. I'll start the test before I go for vacation next week. > > Looks like the test couldn't complete and I see dumps [1] in my host > PC. Here's the output of testusb [2]. > > [1] -> http://pastebin.ubuntu.com/15169114/ > [2] -> http://pastebin.ubuntu.com/15169116/ Does this also happen without this patch applied ?
Hi, On Monday 22 February 2016 02:07 PM, Felipe Balbi wrote: > > Hi, > > Kishon Vijay Abraham I <kishon@ti.com> writes: >>>>> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>>>>> That FIFO resizing logic was added to support OMAP5 >>>>>> ES1.0 which had a bogus default FIFO size. I can't >>>>>> remember the exact size of default FIFO, but it was >>>>>> less than one bulk superspeed packet (<1024) which >>>>>> would prevent USB3 from ever working on OMAP5 ES1.0. >>>>>> >>>>>> However, OMAP5 ES1.0 support has been dropped by >>>>>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>>>>> support") which renders FIFO resizing unnecessary. >>>>>> >>>>>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >>>>> >>>>> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >>>>> msc.sh >>>> >>>> both HS and SS ? >>> >>> yes.. but the logs here were for only SS. >>>> >>>>> dra72-evm: http://pastebin.ubuntu.com/14887997/ >>>>> dra7-evm: http://pastebin.ubuntu.com/14887975/ >>>>> >>>>> Tested-by: Kishon Vijay Abraham I <kishon@ti.com> >>>>> >>>>> Let me know if you want me to do any other testing on dra7. >>>> >>>> yeah, run testusb for a week or so, that usually catches odd bugs. >>> >>> Okay. I'll start the test before I go for vacation next week. >> >> Looks like the test couldn't complete and I see dumps [1] in my host >> PC. Here's the output of testusb [2]. >> >> [1] -> http://pastebin.ubuntu.com/15169114/ >> [2] -> http://pastebin.ubuntu.com/15169116/ > > Does this also happen without this patch applied ? yeah. I could see that even without the patch. I think I should update my host PC kernel and check (maybe it got fixed with the latest xhci driver). Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, Kishon Vijay Abraham I <kishon@ti.com> writes: >> Kishon Vijay Abraham I <kishon@ti.com> writes: >>>>>> On Thursday 04 February 2016 05:48 PM, Felipe Balbi wrote: >>>>>>> That FIFO resizing logic was added to support OMAP5 >>>>>>> ES1.0 which had a bogus default FIFO size. I can't >>>>>>> remember the exact size of default FIFO, but it was >>>>>>> less than one bulk superspeed packet (<1024) which >>>>>>> would prevent USB3 from ever working on OMAP5 ES1.0. >>>>>>> >>>>>>> However, OMAP5 ES1.0 support has been dropped by >>>>>>> commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 >>>>>>> support") which renders FIFO resizing unnecessary. >>>>>>> >>>>>>> Signed-off-by: Felipe Balbi <balbi@kernel.org> >>>>>> >>>>>> tested this series on both dra7-evm and dra72-evm using mass storage gadget and >>>>>> msc.sh >>>>> >>>>> both HS and SS ? >>>> >>>> yes.. but the logs here were for only SS. >>>>> >>>>>> dra72-evm: http://pastebin.ubuntu.com/14887997/ >>>>>> dra7-evm: http://pastebin.ubuntu.com/14887975/ >>>>>> >>>>>> Tested-by: Kishon Vijay Abraham I <kishon@ti.com> >>>>>> >>>>>> Let me know if you want me to do any other testing on dra7. >>>>> >>>>> yeah, run testusb for a week or so, that usually catches odd bugs. >>>> >>>> Okay. I'll start the test before I go for vacation next week. >>> >>> Looks like the test couldn't complete and I see dumps [1] in my host >>> PC. Here's the output of testusb [2]. >>> >>> [1] -> http://pastebin.ubuntu.com/15169114/ >>> [2] -> http://pastebin.ubuntu.com/15169116/ >> >> Does this also happen without this patch applied ? > > yeah. I could see that even without the patch. > > I think I should update my host PC kernel and check (maybe it got > fixed with the latest xhci driver). yeah, please do that and let me know ;-)
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt index fb2ad0acedbd..15695682a480 100644 --- a/Documentation/devicetree/bindings/usb/dwc3.txt +++ b/Documentation/devicetree/bindings/usb/dwc3.txt @@ -14,7 +14,6 @@ Optional properties: the second element is expected to be a handle to the USB3/SS PHY - phys: from the *Generic PHY* bindings - phy-names: from the *Generic PHY* bindings - - tx-fifo-resize: determines if the FIFO *has* to be reallocated. - snps,usb3_lpm_capable: determines if platform is USB3 LPM capable - snps,disable_scramble_quirk: true when SW should disable data scrambling. Only really useful for FPGA builds. @@ -47,6 +46,8 @@ Optional properties: register for post-silicon frame length adjustment when the fladj_30mhz_sdbnd signal is invalid or incorrect. + - <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated. + This is usually a subnode to DWC3 glue to which it is connected. dwc3@4a030000 { @@ -54,5 +55,4 @@ dwc3@4a030000 { reg = <0x4a030000 0xcfff>; interrupts = <0 92 4> usb-phy = <&usb2_phy>, <&usb3,phy>; - tx-fifo-resize; }; diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.txt b/Documentation/devicetree/bindings/usb/qcom,dwc3.txt index ca164e71dd50..39acb084bce9 100644 --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.txt +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.txt @@ -59,7 +59,6 @@ Example device nodes: interrupts = <0 205 0x4>; phys = <&hs_phy>, <&ss_phy>; phy-names = "usb2-phy", "usb3-phy"; - tx-fifo-resize; dr_mode = "host"; }; }; diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index de5e01f41bc2..ed03820ebedd 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -894,9 +894,6 @@ static int dwc3_probe(struct platform_device *pdev) dwc->usb3_lpm_capable = device_property_read_bool(dev, "snps,usb3_lpm_capable"); - dwc->needs_fifo_resize = device_property_read_bool(dev, - "tx-fifo-resize"); - dwc->disable_scramble_quirk = device_property_read_bool(dev, "snps,disable_scramble_quirk"); dwc->u2exit_lfps_quirk = device_property_read_bool(dev, @@ -938,7 +935,6 @@ static int dwc3_probe(struct platform_device *pdev) if (pdata->hird_threshold) hird_threshold = pdata->hird_threshold; - dwc->needs_fifo_resize = pdata->tx_fifo_resize; dwc->usb3_lpm_capable = pdata->usb3_lpm_capable; dwc->dr_mode = pdata->dr_mode; diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 29130682e547..c6960541c38c 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -706,9 +706,7 @@ struct dwc3_scratchpad_array { * 0 - utmi_sleep_n * 1 - utmi_l1_suspend_n * @is_fpga: true when we are using the FPGA board - * @needs_fifo_resize: not all users might want fifo resizing, flag it * @pullups_connected: true when Run/Stop bit is set - * @resize_fifos: tells us it's ok to reconfigure our TxFIFO sizes. * @setup_packet_pending: true when there's a Setup Packet in FIFO. Workaround * @start_config_issued: true when StartConfig command has been issued * @three_stage_setup: set if we perform a three phase setup @@ -852,9 +850,7 @@ struct dwc3 { unsigned has_lpm_erratum:1; unsigned is_utmi_l1_suspend:1; unsigned is_fpga:1; - unsigned needs_fifo_resize:1; unsigned pullups_connected:1; - unsigned resize_fifos:1; unsigned setup_packet_pending:1; unsigned start_config_issued:1; unsigned three_stage_setup:1; @@ -1023,7 +1019,6 @@ struct dwc3_gadget_ep_cmd_params { /* prototypes */ void dwc3_set_mode(struct dwc3 *dwc, u32 mode); -int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc); #if IS_ENABLED(CONFIG_USB_DWC3_HOST) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) int dwc3_host_init(struct dwc3 *dwc); diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 3a9354abcb68..2916a7f8f285 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c @@ -584,9 +584,6 @@ static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) reg = dwc3_readl(dwc->regs, DWC3_DCTL); reg |= (DWC3_DCTL_ACCEPTU1ENA | DWC3_DCTL_ACCEPTU2ENA); dwc3_writel(dwc->regs, DWC3_DCTL, reg); - - dwc->resize_fifos = true; - dwc3_trace(trace_dwc3_ep0, "resize FIFOs flag SET"); } break; @@ -1029,12 +1026,6 @@ static int dwc3_ep0_start_control_status(struct dwc3_ep *dep) static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep) { - if (dwc->resize_fifos) { - dwc3_trace(trace_dwc3_ep0, "Resizing FIFOs"); - dwc3_gadget_resize_tx_fifos(dwc); - dwc->resize_fifos = 0; - } - WARN_ON(dwc3_ep0_start_control_status(dep)); } diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 7d1dd82a95ac..a5c783dfbbd6 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -145,92 +145,6 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state) return -ETIMEDOUT; } -/** - * dwc3_gadget_resize_tx_fifos - reallocate fifo spaces for current use-case - * @dwc: pointer to our context structure - * - * This function will a best effort FIFO allocation in order - * to improve FIFO usage and throughput, while still allowing - * us to enable as many endpoints as possible. - * - * Keep in mind that this operation will be highly dependent - * on the configured size for RAM1 - which contains TxFifo -, - * the amount of endpoints enabled on coreConsultant tool, and - * the width of the Master Bus. - * - * In the ideal world, we would always be able to satisfy the - * following equation: - * - * ((512 + 2 * MDWIDTH-Bytes) + (Number of IN Endpoints - 1) * \ - * (3 * (1024 + MDWIDTH-Bytes) + MDWIDTH-Bytes)) / MDWIDTH-Bytes - * - * Unfortunately, due to many variables that's not always the case. - */ -int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc) -{ - int last_fifo_depth = 0; - int ram1_depth; - int fifo_size; - int mdwidth; - int num; - - if (!dwc->needs_fifo_resize) - return 0; - - ram1_depth = DWC3_RAM1_DEPTH(dwc->hwparams.hwparams7); - mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0); - - /* MDWIDTH is represented in bits, we need it in bytes */ - mdwidth >>= 3; - - /* - * FIXME For now we will only allocate 1 wMaxPacketSize space - * for each enabled endpoint, later patches will come to - * improve this algorithm so that we better use the internal - * FIFO space - */ - for (num = 0; num < dwc->num_in_eps; num++) { - /* bit0 indicates direction; 1 means IN ep */ - struct dwc3_ep *dep = dwc->eps[(num << 1) | 1]; - int mult = 1; - int tmp; - - if (!(dep->flags & DWC3_EP_ENABLED)) - continue; - - if (usb_endpoint_xfer_bulk(dep->endpoint.desc) - || usb_endpoint_xfer_isoc(dep->endpoint.desc)) - mult = 3; - - /* - * REVISIT: the following assumes we will always have enough - * space available on the FIFO RAM for all possible use cases. - * Make sure that's true somehow and change FIFO allocation - * accordingly. - * - * If we have Bulk or Isochronous endpoints, we want - * them to be able to be very, very fast. So we're giving - * those endpoints a fifo_size which is enough for 3 full - * packets - */ - tmp = mult * (dep->endpoint.maxpacket + mdwidth); - tmp += mdwidth; - - fifo_size = DIV_ROUND_UP(tmp, mdwidth); - - fifo_size |= (last_fifo_depth << 16); - - dwc3_trace(trace_dwc3_gadget, "%s: Fifo Addr %04x Size %d", - dep->name, last_fifo_depth, fifo_size & 0xffff); - - dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(num), fifo_size); - - last_fifo_depth += (fifo_size & 0xffff); - } - - return 0; -} - void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, int status) { diff --git a/drivers/usb/dwc3/platform_data.h b/drivers/usb/dwc3/platform_data.h index 2bb4d3ad0e6b..aaa6f00df755 100644 --- a/drivers/usb/dwc3/platform_data.h +++ b/drivers/usb/dwc3/platform_data.h @@ -23,7 +23,6 @@ struct dwc3_platform_data { enum usb_device_speed maximum_speed; enum usb_dr_mode dr_mode; - bool tx_fifo_resize; bool usb3_lpm_capable; unsigned is_utmi_l1_suspend:1;
That FIFO resizing logic was added to support OMAP5 ES1.0 which had a bogus default FIFO size. I can't remember the exact size of default FIFO, but it was less than one bulk superspeed packet (<1024) which would prevent USB3 from ever working on OMAP5 ES1.0. However, OMAP5 ES1.0 support has been dropped by commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0 support") which renders FIFO resizing unnecessary. Signed-off-by: Felipe Balbi <balbi@kernel.org> --- Documentation/devicetree/bindings/usb/dwc3.txt | 4 +- .../devicetree/bindings/usb/qcom,dwc3.txt | 1 - drivers/usb/dwc3/core.c | 4 - drivers/usb/dwc3/core.h | 5 -- drivers/usb/dwc3/ep0.c | 9 --- drivers/usb/dwc3/gadget.c | 86 ---------------------- drivers/usb/dwc3/platform_data.h | 1 - 7 files changed, 2 insertions(+), 108 deletions(-)