Re: Bug in split transactions on Raspberry Pi

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 21 Jan 2016, Doug Anderson wrote:

> This doesn't sound familiar to me, but as far as I know all the
> official Raspberry Pi kernels use a pretty different dwc2 driver.  See
> the (non-mainline) code in drivers/usb/host/dwc_otg/ in the Raspberry
> Pi tree at <https://github.com/raspberrypi/linux.git>.

Ah, thanks for that pointer.  I also found the page at raspberrypi.org 
which describes how to build and install a custom kernel.

> The Raspberry Pi driver and the mainline driver are pretty different
> (though they have the same heritage).  As far as I remember the
> Raspberry Pi driver has feature to enable FIQ for helping deal with
> some of the dwc2 issues.  That gives it a chunk of code that's totally
> rewritten...

Indeed, dwc_otg is quite different from dwc2.  I found what appears to
be a bug in the dwc_otg's _hub_info() routine.  (This is the subroutine
that gets the upstream hub address and port number for devices behind a
TT.)  It does:

	*port_addr = urb->dev->tt->multi ? urb->dev->ttport : 1;

However, the USB spec says that the SPLIT packet's third byte is
supposed to contain the port for both single-TT and multi-TT hubs.  
And sure enough, the upstream hub for this non-working device is
single-TT.  Presumably that explains why the third byte in the SPLIT
packet was 0x01 rather than 0x04.

The corresponding line in the dwc2_host_hub_info() routine simply does:

	*hub_port = urb->dev->ttport;

Unfortunately, even after I changed the dwc_otg routine the device 
still didn't work.  My bus analyzer isn't on hand today, so I'll have
to work on it more next week.

> It would be really interesting to see if the patch series I just
> posted helps you (it fixes lots of problems in the mainline driver
> with splits), though it might still not be enough on the Raspberry Pi
> since the CPU clock there is much slower than on my 1.8GHz A12-based
> system and thus maybe FIQ is a must have there...

Can you tell me how to configure a mainline kernel to work on the
Raspberry Pi?  There is no arch/arm/configs/bcmrpi_defconfig.

> Anyway, sorry if that's not terribly helpful.  :(  John may have more
> familiarity with the non-mainline driver (or know people who are more
> familiar with it).

Thanks,

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux