| #
1422d140 |
| 29-Oct-2023 |
Hector Martin <marcan@marcan.st> |
BACKPORT: usb: xhci: Guard all calls to xhci_wait_for_event
xhci_wait_for_event returns NULL on timeout, so the caller always has to check for that. This addresses immediate explosions in this part
BACKPORT: usb: xhci: Guard all calls to xhci_wait_for_event
xhci_wait_for_event returns NULL on timeout, so the caller always has to check for that. This addresses immediate explosions in this part of the code when timeouts happen, but not the root cause for the timeout.
Change-Id: Ib899b615349ed5d1d00885b6508c765b6e773d6a Signed-off-by: Hector Martin <marcan@marcan.st> Reviewed-by: Marek Vasut <marex@denx.de> Signed-off-by: William Wu <william.wu@rock-chips.com> (cherry picked from commit 8d1e03f984c7467d7c8883f15dea14b2f8b4c0e2)
show more ...
|
| #
ce2f4ca4 |
| 21-Feb-2022 |
Frank Wang <frank.wang@rock-chips.com> |
usb: ehci/xhci: add hub descriptor in its ctrl structure
Since the "bNrPorts" in hub descriptor is runtime modified, and it may be rewritten by the later initialized controller. So copy and maintain
usb: ehci/xhci: add hub descriptor in its ctrl structure
Since the "bNrPorts" in hub descriptor is runtime modified, and it may be rewritten by the later initialized controller. So copy and maintain a private instance for each controller.
Change-Id: I6cd05aef5251d05464b3eb1e9927661effa433ec Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
show more ...
|
| #
1a4f6af8 |
| 02-Mar-2020 |
Joseph Chen <chenjh@rock-chips.com> |
Merge branch 'next-dev' into thunder-boot
|
| #
143fc13b |
| 11-Sep-2019 |
Jean-Jacques Hiblot <jjhiblot@ti.com> |
UPSTREAM: usb: xhci: move xhci.h to include usb
The xhci.h header file is currently located under drivers/usb/xhci Move it to the include/usb folder to make it available to drivers that are not unde
UPSTREAM: usb: xhci: move xhci.h to include usb
The xhci.h header file is currently located under drivers/usb/xhci Move it to the include/usb folder to make it available to drivers that are not under drivers/usb/xhci
Change-Id: I13705562893b30327708fbc321547bac79615785 Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit 1708a12377b98397606677e117f93f07d7cd2f7e)
show more ...
|
| #
92937b1f |
| 18-Aug-2019 |
Michal Suchanek <msuchanek@suse.de> |
UPSTREAM: usb: Add nonblock argument to submit_int_msg
This will be used to implement non-blocking keyboard polling in case of errors.
Conflicts: common/usb.c common/usb_kbd.c common/usb_storage
UPSTREAM: usb: Add nonblock argument to submit_int_msg
This will be used to implement non-blocking keyboard polling in case of errors.
Conflicts: common/usb.c common/usb_kbd.c common/usb_storage.c include/usb.h
Change-Id: I4a951d779e2cf9e80380f93000a87a617453fb32 Signed-off-by: Michal Suchanek <msuchanek@suse.de> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit 3437121c037f502a3b0faaec97059777034a1ead)
show more ...
|
| #
3739bf7e |
| 21-Nov-2018 |
Sven Schwermer <sven@svenschwermer.de> |
UPSTREAM: usb: s/CONFIG_DM_USB/CONFIG_IS_ENABLED(DM_USB)/
This allows to disable the USB driver model in SPL because it checks the CONFIG_SPL_DM_USB variable for SPL builds. Nothing changes for regu
UPSTREAM: usb: s/CONFIG_DM_USB/CONFIG_IS_ENABLED(DM_USB)/
This allows to disable the USB driver model in SPL because it checks the CONFIG_SPL_DM_USB variable for SPL builds. Nothing changes for regular non-SPL builds.
Conflicts: drivers/usb/host/ehci-atmel.c drivers/usb/host/xhci-fsl.c
Change-Id: If6c980c620cf97c1dd131f60953c305e34dba505 Signed-off-by: Sven Schwermer <sven@svenschwermer.de> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit fd09c205fc57b90a782cac33449ef172575d0a8c)
show more ...
|
| #
affcda62 |
| 24-May-2018 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Handle endianness in xhci_set_configuration()
In xhci_set_configuration(), 'Context Entries' field in the slot context was cleared with mask LAST_CTX_MASK, but it should have ta
UPSTREAM: usb: xhci: Handle endianness in xhci_set_configuration()
In xhci_set_configuration(), 'Context Entries' field in the slot context was cleared with mask LAST_CTX_MASK, but it should have taken the endianness into consideration.
Change-Id: I5d6b94d213751151b7b8180d01e88c5ce5bf9f5a Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit e40406603fe22a5b18d7e8ac7a2eb0f2d2b13cf1)
show more ...
|
| #
fc48a70c |
| 24-May-2018 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Fix config fail of FS hub behind a HS hub with MTT
If a full speed hub connects to a high speed hub which supports MTT, the MTT field of its slot context will be set to 1 when x
UPSTREAM: usb: xhci: Fix config fail of FS hub behind a HS hub with MTT
If a full speed hub connects to a high speed hub which supports MTT, the MTT field of its slot context will be set to 1 when xHCI driver setups an xHCI virtual device in xhci_setup_addressable_virt_dev(). Once usb core fetch its hub descriptor, and need to update the xHC's internal data structures for the device, the HUB field of its slot context will be set to 1 too, meanwhile MTT is also set before, this will cause configure endpoint command fail. In the case, we should clear MTT to 0 for full speed hub according to section 6.2.2.
This keeps in sync with Linux kernel commit: 096b110: usb: xhci: fix config fail of FS hub behind a HS hub with MTT
Change-Id: I48538e3d150f79f9bca591b0a4527cf9c5d7a2ba Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit eaaefb066c86f08fb285e73fb8c5fbf497be6b57)
show more ...
|
| #
02d23558 |
| 24-May-2018 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Initialize dev_state to 0 in the input slot context
Per xHCI spec chapter 6.2.2 table 6-7, as input, software shall initialize the dev_state field to '0'. Though this does not s
UPSTREAM: usb: xhci: Initialize dev_state to 0 in the input slot context
Per xHCI spec chapter 6.2.2 table 6-7, as input, software shall initialize the dev_state field to '0'. Though this does not seem to cause any issue with most xHC implementations, let's do this to conform with the spec.
Change-Id: I604a4c9edb9b88b25ba96e16d6f7013bee64df8c Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Marek Vasut <marek.vasut@gmail.com> Tested-by: Matthias Blankertz <matthias.blankertz@cetitec.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit ae751b060e8cee3f9c48112898cd3e31ee6c0734)
show more ...
|
| #
d222f63d |
| 24-May-2018 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Set accurate add context flags when updating hub attributes
If a USB 3.0 hub is plugged into the root port of the xHC, the xHCI driver will issue a 'Configure Endpoint' command
UPSTREAM: usb: xhci: Set accurate add context flags when updating hub attributes
If a USB 3.0 hub is plugged into the root port of the xHC, the xHCI driver will issue a 'Configure Endpoint' command to the xHC for it to update its internal data structure for this hub device. The hub attributes are in the slot context so we need tell xHC to update the slot context by setting the add context flags of the input control context to only cover the slot context.
At present the add context flags is or'ed with the slot context bit, but it should really be accurately set to the slot context, as the variable that holds the value of the add context flags comes from whatever was set in the last command execution, which may contain additional contexts that 'Configure Endpoint' command should not touch. Some xHC implementations like x86 don't complain such, but it was observed on Renesas RCar Gen3 platform that the RCar xHC complains with a 'TRB error' completion codes as the response.
Change-Id: I5141a85024ea60c3dbb7bde5b6a6811142ce1f8b Reported-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Marek Vasut <marek.vasut@gmail.com> Tested-by: Matthias Blankertz <matthias.blankertz@cetitec.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit 793c819c6e2168110ad7cfca0349738c79d79a1f)
show more ...
|
| #
f018b53d |
| 18-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Set 'Average TRB Length' to 8 for control endpoints
Update the codes to conform with xHCI spec chapter 6.2.3.
Change-Id: I9227754f7f7faf27f90046178526fad4d45e699e Signed-off-by
UPSTREAM: usb: xhci: Set 'Average TRB Length' to 8 for control endpoints
Update the codes to conform with xHCI spec chapter 6.2.3.
Change-Id: I9227754f7f7faf27f90046178526fad4d45e699e Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit fae35857e1c38776854442f59d6b56c17e93fc39)
show more ...
|
| #
dd5c0fa3 |
| 18-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Set 'Error Count' to 0 for isoch endpoints
Per xHCI spec, 'Error Count' should be set to 0 for isoch endpoints.
Change-Id: Ibf1924935d705faa8a34e0bc94a44e3a0d1c28e2 Signed-off-
UPSTREAM: usb: xhci: Set 'Error Count' to 0 for isoch endpoints
Per xHCI spec, 'Error Count' should be set to 0 for isoch endpoints.
Change-Id: Ibf1924935d705faa8a34e0bc94a44e3a0d1c28e2 Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit ab2b727dc03113fe35d6a9c937911055be3d3990)
show more ...
|
| #
2874e912 |
| 18-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Program max burst size for endpoint
The 'Max Burst Size' indicates to the xHC the maximum number of consecutive USB transactions that should be executed per scheduling opportuni
UPSTREAM: usb: xhci: Program max burst size for endpoint
The 'Max Burst Size' indicates to the xHC the maximum number of consecutive USB transactions that should be executed per scheduling opportunity. This is a “zero-based” value, where 0 to 15 represents burst sizes of 1 to 16, but at present this is always set to zero. Let's program the required value according to real needs.
Change-Id: Id8dbdbfb248acd016b1e133b86334b9815b8ff2d Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit fa483b2c750f6ebdb5946f46b217aa3f9a449531)
show more ...
|
| #
1fa1b460 |
| 18-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Honor endpoint's interval
USB endpoint reports the period between consecutive requests to send or receive data as bInverval in its endpoint descriptor. So far this is ignored by
UPSTREAM: usb: xhci: Honor endpoint's interval
USB endpoint reports the period between consecutive requests to send or receive data as bInverval in its endpoint descriptor. So far this is ignored by xHCI driver and the 'Interval' field in xHC's endpoint context is always programmed to zero which means 1ms for low speed or full speed , or 125us for high speed or super speed. We should honor the interval by getting it from endpoint descriptor.
Change-Id: Ib9180ea7b15d29fdc5a90315dcb0ffea672877a3 Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit f51966bf7afe44151756e9a2432705bb56bc2007)
show more ...
|
| #
24acdf7a |
| 18-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Fix max packet size for full speed device endpoint 0
In xhci_check_maxpacket(), the control endpoint 0 max packet size is wrongly taken from the interface's endpoint descriptor.
UPSTREAM: usb: xhci: Fix max packet size for full speed device endpoint 0
In xhci_check_maxpacket(), the control endpoint 0 max packet size is wrongly taken from the interface's endpoint descriptor. However the default endpoint 0 does not come with an endpoint descriptor hence is not included in the interface structure. Change to use epmaxpacketin[0] instead.
The other bug in this routine is that when setting max packet size to the xHC endpoint 0 context, it does not clear its previous value at all before programming a new one.
Change-Id: I32199e4f4a0f2950fa71b139f667ece35e55483c Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit b5aa857b95194c15126245e99a384ec2fd9536e8)
show more ...
|
| #
83e13f0f |
| 18-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: usb: xhci: Add interrupt transfer support
xHCI uses normal TRBs for both bulk and interrupt. This adds the missing interrupt transfer support to xHCI so that devices like USB keyboard that
UPSTREAM: usb: xhci: Add interrupt transfer support
xHCI uses normal TRBs for both bulk and interrupt. This adds the missing interrupt transfer support to xHCI so that devices like USB keyboard that uses interrupt transfer can work.
Change-Id: I857a769b96c3283d99deff1f1092ddd64a9693e2 Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit 1897d60130976ece389d5875187b78ba0d41428f)
show more ...
|
| #
dbdd0140 |
| 07-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: dm: usb: xhci: Implement get_max_xfer_size() operation
xHCD allocates one segment which includes 64 TRBs for each endpoint and the last TRB in this segment is configured as a link TRB to f
UPSTREAM: dm: usb: xhci: Implement get_max_xfer_size() operation
xHCD allocates one segment which includes 64 TRBs for each endpoint and the last TRB in this segment is configured as a link TRB to form a TRB ring. Each TRB can transfer up to 64K bytes, however data buffers referenced by transfer TRBs shall not span 64KB boundaries. Hence the maximum number of TRBs we can use in one transfer is 62.
Change-Id: I7ea20b7805fe4da11343d38001a414b95751c7d5 Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit 022ceacaf8a6a67f86f0a5ed8f6ce6b2f6ab73a4)
show more ...
|
| #
211aaf30 |
| 29-Jul-2017 |
Tom Rini <trini@konsulko.com> |
Merge git://git.denx.de/u-boot-usb
|
| #
d228ca36 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: xhci: Implement update_hub_device() operation
There is no way to know whether the attached device is a hub or not in advance before the device's descriptor is fetched. But once we know it's a h
usb: xhci: Implement update_hub_device() operation
There is no way to know whether the attached device is a hub or not in advance before the device's descriptor is fetched. But once we know it's a high speed hub, per the xHCI spec, we need to tell xHC it's a hub device by initializing hub-related fields in the input slot context.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
show more ...
|
| #
daec4691 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: xhci: Change xhci_setup_addressable_virt_dev() signature
For future extension, change xhci_setup_addressable_virt_dev() signature to accept a pointer to 'struct usb_device', instead of its memb
usb: xhci: Change xhci_setup_addressable_virt_dev() signature
For future extension, change xhci_setup_addressable_virt_dev() signature to accept a pointer to 'struct usb_device', instead of its members slot_id & speed, as the struct already contains these two plus some other useful information of the device.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
show more ...
|
| #
46c1d493 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: hub: Add a new API to test if a hub device is root hub
Sometimes we need know if a given hub device is root hub or not. Add a new API to test this. This removes the xHCI driver's own version is
usb: hub: Add a new API to test if a hub device is root hub
Sometimes we need know if a given hub device is root hub or not. Add a new API to test this. This removes the xHCI driver's own version is_root_hub() and change to use the new API.
While we are here, remove the unused/commented out get_usb_device() in the xHCI driver too.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
show more ...
|
| #
7274671e |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: xhci: Get rid of CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS
xHC reports supported maximum number of ports in the HCSPARAMS1 register, so it's unnecessary to use a hardcoded config option CONFIG_SYS_USB
usb: xhci: Get rid of CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS
xHC reports supported maximum number of ports in the HCSPARAMS1 register, so it's unnecessary to use a hardcoded config option CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Tested-by: Stefan Roese <sr@denx.de>
show more ...
|
| #
337fc7e6 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: hub: Change USB hub descriptor to match USB 3.0 hubs
USB 3.0 hubs have a slightly different hub descriptor than USB 2.0 hubs, with a fixed (rather than variable length) size. Change the host co
usb: hub: Change USB hub descriptor to match USB 3.0 hubs
USB 3.0 hubs have a slightly different hub descriptor than USB 2.0 hubs, with a fixed (rather than variable length) size. Change the host controller drivers that access those last two fields (DeviceRemovable and PortPowerCtrlMask) to use the union.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Tested-by: Stefan Roese <sr@denx.de>
show more ...
|
| #
f3421196 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: hub: Send correct wValue to get hub descriptor of a USB 3.0 hub
Testing a USB 3.0 hub by connecting it to the xHCI port on Intel MinnowMax, when issuing 'get hub descriptor' to the hub, xHCI re
usb: hub: Send correct wValue to get hub descriptor of a USB 3.0 hub
Testing a USB 3.0 hub by connecting it to the xHCI port on Intel MinnowMax, when issuing 'get hub descriptor' to the hub, xHCI reports a transfer event TRB with a completion code 6 which means 'Stall Error'.
In fact super speed USB hub descriptor type is 0x2a, not 0x29. Sending correct SETUP packet to the hub makes it not stall anymore.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Tested-by: Stefan Roese <sr@denx.de>
show more ...
|
| #
aab0db08 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: xhci: Add input slot context in xhci_set_configuration()
A valid input slot context for a 'configure endpoint' command requires the 'Context Entries' field to be initialized to the index of the
usb: xhci: Add input slot context in xhci_set_configuration()
A valid input slot context for a 'configure endpoint' command requires the 'Context Entries' field to be initialized to the index of the last valid endpoint context that is defined by the target configuration. We set up the 'Context Entries' field, but we forget to include the input slot context in the input control context 'Add Context flags' bitmap. So xHC will simply ignore input slot context and continue using its own which contains old information of the device.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Tested-by: Stefan Roese <sr@denx.de>
show more ...
|