Bug in split transactions on Raspberry Pi
Doug Anderson
dianders at chromium.org
Tue Jan 26 10:26:30 PST 2016
Hi,
On Tue, Jan 26, 2016 at 10:22 AM, Alan Stern <stern at rowland.harvard.edu> wrote:
> On Tue, 26 Jan 2016, Noralf Trønnes wrote:
>
>> > I installed the rpi-4.4.y branch from the
>> > https://github.com/raspberrypi/linux repository. As is, it generated a
>> > working kernel. Then I tried editing the config; I removed
>> > CONFIG_USB_DWCOTG and added CONFIG_USB_DWC2 and CONFIG_USB_DWC2_HOST.
>> > However, when I booted the resulting kernel it didn't seem to detect
>> > the host controller at all. No USB devices were probed, which meant no
>> > working ethernet or keyboard.
>> >
>> > Then I tried enabling both drivers in the config. That worked, but the
>> > controller was bound to dwc_otg, not to dwc2.
>> >
>> > I get the feeling that some magic DT incantation is missing, although I
>> > have no idea what. The base bcm2709-rpi-2-b.dtb wasn't affected by the
>> > config change, nor was the overlays/dwc2-overlay.dtb file.
>> >
>> > Any suggestions?
>>
>> Have you enabled the dwc2 overlay?
>> Add to /boot/config.txt:
>> dtoverlay=dwc2
>
> That did it! Thank you.
>
> The dwc2 driver seems to do a better job than dwc_otg -- at least, it
> sends Clear-TT-Buffer requests after each failure.
>
> Doug, do you have a list of patches you'd like me to try on top of the
> rpi-4.4.y branch?
Nice! You can give this series a try. It aims to improve SPLIT
scheduling quite a bit:
8091691 New [v5,01/21] usb: dwc2: rockchip: Make the
max_transfer_size automatic
8091701 New [v5,02/21] usb: dwc2: host: Get aligned DMA in a
more supported way
8092101 New [v5,03/21] usb: dwc2: host: Set host_rx_fifo_size
to 528 for rk3066
8092091 New [v5,04/21] usb: dwc2: host: Set
host_perio_tx_fifo_size to 304 for rk3066
8092081 New [v5,05/21] usb: dwc2: host: Avoid use of chan->qh
after qh freed
8092071 New [v5,06/21] usb: dwc2: host: Always add to the
tail of queues
8092061 New [v5,07/21] usb: dwc2: hcd: fix split transfer
schedule sequence
8091761 New [v5,08/21] usb: dwc2: host: Add scheduler tracing
8092051 New [v5,09/21] usb: dwc2: host: Add a delay before
releasing periodic bandwidth
8092041 New [v5,10/21] usb: dwc2: host: Giveback URB in tasklet context
8092031 New [v5,11/21] usb: dwc2: host: Use periodic
interrupt even with DMA
8092021 New [v5,12/21] usb: dwc2: host: Rename some fields in
struct dwc2_qh
8092011 New [v5,13/21] usb: dwc2: host: Reorder things in hcd_queue.c
8092001 New [v5,14/21] usb: dwc2: host: Split code out to
make dwc2_do_reserve()
8091991 New [v5,15/21] usb: dwc2: host: Add scheduler logging
for missed SOFs
8091821 New [v5,16/21] usb: dwc2: host: Manage frame nums
better in scheduler
8091831 New [v5,17/21] usb: dwc2: host: Schedule periodic
right away if it's time
8091971 New [v5,18/21] usb: dwc2: host: Add
dwc2_hcd_get_future_frame_number() call
8091961 New [v5,19/21] usb: dwc2: host: Properly set even/odd frame
8091981 New [v5,20/21] usb: dwc2: host: Totally redo the
microframe scheduler
8091951 New [v5,21/21] usb: dwc2: host: If using uframe
scheduler, end splits better
Plus grab:
8094921 New usb: dwc2: host: Properly set the HFIR
You could ignore the two rk3066 patches, though they won't hurt you.
Hopefully you also saw the note that you should pick the two patches:
http://marc.info/?l=linux-usb&m=145255851516121&w=2
More information about the linux-rpi-kernel
mailing list