History log of /rk3399_rockchip-uboot/drivers/usb/host/xhci.c (Results 1 – 25 of 47)
Revision Date Author Comments
# 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 ...


12