diff options
author | Stefan Brüns <stefan.bruens@rwth-aachen.de> | 2015-12-22 01:21:04 +0100 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2015-12-31 16:16:30 +0100 |
commit | ac3abf0b7d3a0c59a8a6697efbe9187692f199f0 (patch) | |
tree | 4246cad490dd372a3c84d4fa0b6dbe45ae7b45e8 /drivers/mmc/fsl_esdhc.c | |
parent | faa7db24a4b6c1b645dec312a16574442d5adde2 (diff) | |
download | u-boot-imx-ac3abf0b7d3a0c59a8a6697efbe9187692f199f0.zip u-boot-imx-ac3abf0b7d3a0c59a8a6697efbe9187692f199f0.tar.gz u-boot-imx-ac3abf0b7d3a0c59a8a6697efbe9187692f199f0.tar.bz2 |
usb: musb: Fix hub port setting for SPLIT transactions
The ifdef'ed Linux kernel code uses the 1 based port number, whereas U-Boot
puts a 0 based port number into the register. The reason the 0 based port
number apparently works can probably be taken from the USB 2.0 spec:
8.4.2.2 Start-Split Transaction Token
... The host must correctly set the port field for single and multiple TT
hub implementations. A single TT hub implementation *may ignore* the port
field.
Actually, as far as I understand, a multi TT hub defaults to single TT
(bAlternateSetting: 0) until switched via SetInterface, so even "port 42"
would work.
The change was verified by hardcoding the port number to a wrong value,
SPLIT transactions kept working (although using a DWC2 instead of MUSB).
Tested hubs are the RPi onboard SMC9514 and an external "05e3:0608
Genesys Logic, Inc. USB-2.0 4-Port HUB". The former is a multi TT hub,
the latter single TT only.
Addendum: Tested on sunxi/MUSB by Hans de Goede
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'drivers/mmc/fsl_esdhc.c')
0 files changed, 0 insertions, 0 deletions