| #
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
|
| #
db0e15c2 |
| 06-Oct-2019 |
Marek Vasut <marek.vasut+renesas@gmail.com> |
UPSTREAM: usb: ehci-hcd: Keep async schedule running
Profiling the EHCI driver shows a significant performance problem in ehci_submit_async(). Specifically, this function keeps enabling and disablin
UPSTREAM: usb: ehci-hcd: Keep async schedule running
Profiling the EHCI driver shows a significant performance problem in ehci_submit_async(). Specifically, this function keeps enabling and disabling async schedule back and forth for every single transaction. However, enabling/disabling the async schedule does not take effect immediatelly, but instead may take up to 1 mS (8 uFrames) to complete.
This impacts USB storage significantly, esp. since the recent reduction of maximum transfer size to support more USB storage devices. This in turn results in sharp increase in the number of ehci_submit_async() calls. Since one USB storage BBB transfer does three such calls and the maximum transfer size is 120 kiB, the overhead is 6 mS per 120 kiB, which is unacceptable.
However, this overhead can be removed simply by keeping the async schedule running. Specifically, the first transfer starts the async schedule and then each and every subsequent transfer only adds a new QH into that schedule, waits until the QH is completed and does NOT disable the async schedule. The async schedule is stopped only by shutting down the controller, which must happen before moving out of U-Boot, otherwise the controller will corrupt memory.
Change-Id: I33a5eccac2579be09c5f1c9385ae245e680bc125 Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Bin Meng <bmeng.cn@gmail.com> Cc: Simon Glass <sjg@chromium.org> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit 02b0e1a36c5bc20174299312556ec4e266872bd6)
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 ...
|
| #
f5439a16 |
| 08-Aug-2018 |
Marek Vasut <marek.vasut+renesas@gmail.com> |
UPSTREAM: usb: ehci: Make the PHY handling generic
Pull out the EHCI PHY functions into the ehci-hcd.c to let other EHCI drivers use them.
Change-Id: I5b1cbaf7acb4cee6034e891ee7aecf0ca7d50728 Signe
UPSTREAM: usb: ehci: Make the PHY handling generic
Pull out the EHCI PHY functions into the ehci-hcd.c to let other EHCI drivers use them.
Change-Id: I5b1cbaf7acb4cee6034e891ee7aecf0ca7d50728 Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit b43cdf9b3fe246a8920d2b62ee41fc1722315ef0)
show more ...
|
| #
1bee64cb |
| 17-Nov-2017 |
Dirk Behme <dirk.behme@gmail.com> |
UPSTREAM: usb: ehci: do not invalidate a NULL buffer
Its a valid use case to call ehci_submit_async() with a NULL buffer with length 0. E.g. from usb_set_configuration().
As invalidate_dcache_range
UPSTREAM: usb: ehci: do not invalidate a NULL buffer
Its a valid use case to call ehci_submit_async() with a NULL buffer with length 0. E.g. from usb_set_configuration().
As invalidate_dcache_range() isn't able to judge if the address NULL is valid or not (depending on the SoC hardware configuration it might be valid) do the check in ehci_submit_async() as here we know that we don't have to invalidate such a buffer.
Change-Id: If8d1ee336c3123356138551ed4cbb556e26bf4ed Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit b3cbcd902db7019410dfe3729a660abcb1f03ffb)
show more ...
|
| #
85b3e780 |
| 20-Nov-2017 |
Heinrich Schuchardt <xypron.glpk@gmx.de> |
UPSTREAM: dm: usb: ehci: avoid possible NULL dereference
Currently we check in ehci_shutdown() if ctrl is NULL after dereferencing it.
Before this we have already dereferenced ctrl, ctrl->hccr, and
UPSTREAM: dm: usb: ehci: avoid possible NULL dereference
Currently we check in ehci_shutdown() if ctrl is NULL after dereferencing it.
Before this we have already dereferenced ctrl, ctrl->hccr, and ctrl->hcor in ehci_get_portsc_register(), ehci_submit_root(), and hci_common_init().
A better approach is to already check ctrl, ctrl->hccr, and ctrl->hcor during the initialization in ehci_register() and usb_lowlevel_init() and signal an error here via the return code.
Change-Id: I940999cbb94fbae4642fd25df820997c4d642da1 Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit 45157d27644c23493ea1b5a6c9dd67572eb75c8c)
show more ...
|
| #
50293ea8 |
| 07-Sep-2017 |
Bin Meng <bmeng.cn@gmail.com> |
UPSTREAM: dm: usb: ehci: Implement get_max_xfer_size() operation
EHCD can handle any transfer length as long as there is enough free heap space left, hence set the theoretical max number SIZE_MAX.
UPSTREAM: dm: usb: ehci: Implement get_max_xfer_size() operation
EHCD can handle any transfer length as long as there is enough free heap space left, hence set the theoretical max number SIZE_MAX.
Change-Id: I58711c5a6348b525caf950748d7c3338997e146a Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> (cherry picked from commit a23aa66baa3725e8707da46b18c645ad1a7243a0)
show more ...
|
| #
211aaf30 |
| 29-Jul-2017 |
Tom Rini <trini@konsulko.com> |
Merge git://git.denx.de/u-boot-usb
|
| #
99c22556 |
| 19-Jul-2017 |
Bin Meng <bmeng.cn@gmail.com> |
usb: ehci: Get rid of CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
EHC reports supported maximum number of ports in the HCSPARAMS register, so it's unnecessary to use a hardcoded config option CONFIG_SYS_USB_
usb: ehci: Get rid of CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
EHC reports supported maximum number of ports in the HCSPARAMS register, so it's unnecessary to use a hardcoded config option CONFIG_SYS_USB_EHCI_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 ...
|
| #
121a4d13 |
| 22-Jun-2017 |
Masahiro Yamada <yamada.masahiro@socionext.com> |
usb: add static to local symbols
Sparse reports "... was not declared. Should it be static?"
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
|
| #
a10a31ec |
| 19-Jun-2016 |
Tom Rini <trini@konsulko.com> |
Merge branch 'master' of git://git.denx.de/u-boot-usb
Signed-off-by: Tom Rini <trini@konsulko.com>
Conflicts: arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
|
| #
1e6fb0e3 |
| 15-Jun-2016 |
Peng Fan <van.freenix@gmail.com> |
usb: ehci: only shutdown opened controller
If the usb controller is not running, no need to shutdown it, otherwise `usb stop` complains about: "EHCI failed to shut down host controller".
To i.MX7D
usb: ehci: only shutdown opened controller
If the usb controller is not running, no need to shutdown it, otherwise `usb stop` complains about: "EHCI failed to shut down host controller".
To i.MX7D SDB, there are two usb ports, one Host, one OTG. If we only plug one udisk to the Host port and then `usb start`, the OTG controller for OTG port does not run actually. Then, if `usb stop`, the OTG controller for OTG port will also be shutdown, but it is not running.
This patch adds a check to only shutdown the running controller.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Cc: Marek Vasut <marex@denx.de> Cc: Simon Glass <sjg@chromium.org> Cc: Mateusz Kulikowski <mateusz.kulikowski@gmail.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: "Stefan Brüns" <stefan.bruens@rwth-aachen.de> Cc: Stephen Warren <swarren@nvidia.com>
show more ...
|
| #
7e8f2702 |
| 10-Apr-2016 |
Tom Rini <trini@konsulko.com> |
Merge branch 'master' of git://git.denx.de/u-boot-usb
|
| #
cfb3f1cd |
| 03-Apr-2016 |
Mateusz Kulikowski <mateusz.kulikowski@gmail.com> |
usb: ehci-hcd: Fix crash when no ops are provided to ehci_register()
This commit fixes crash on BananaPi (and possibly others) casued by 3f9f8a5b83f8aec40c9f4ee496046a695e333c45.
Crash reason: When
usb: ehci-hcd: Fix crash when no ops are provided to ehci_register()
This commit fixes crash on BananaPi (and possibly others) casued by 3f9f8a5b83f8aec40c9f4ee496046a695e333c45.
Crash reason: When no ops were passed to ehci_register(), USB host driver caused NULL pointer dereference.
Signed-off-by: Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
show more ...
|
| #
3f9f8a5b |
| 31-Mar-2016 |
Mateusz Kulikowski <mateusz.kulikowski@gmail.com> |
ehci-hcd: Add init_after_reset
Some host controllers need addidional initialization after ehci_reset() In non-dm implementation it is possible to use CONFIG_EHCI_HCD_INIT_AFTER_RESET. This patch add
ehci-hcd: Add init_after_reset
Some host controllers need addidional initialization after ehci_reset() In non-dm implementation it is possible to use CONFIG_EHCI_HCD_INIT_AFTER_RESET. This patch adds similar option to ehci drivers using dm.
Signed-off-by: Mateusz Kulikowski <mateusz.kulikowski@gmail.com> Acked-by: Marek Vasut <marex@denx.de> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
show more ...
|
| #
50dc8677 |
| 26-Feb-2016 |
Tom Rini <trini@konsulko.com> |
Merge git://git.denx.de/u-boot-usb
|
| #
abd702f4 |
| 26-Feb-2016 |
Marek Vasut <marex@denx.de> |
usb: ehci: Fix warning on aarch64
Fix the following warning on aarch64 introduced by using p2v/v2p functions in the code:
In file included from ./arch/arm/include/asm/byteorder.h:29:0,
usb: ehci: Fix warning on aarch64
Fix the following warning on aarch64 introduced by using p2v/v2p functions in the code:
In file included from ./arch/arm/include/asm/byteorder.h:29:0, from include/compiler.h:125, from include/image.h:19, from include/common.h:88, from drivers/usb/host/ehci-hcd.c:10: drivers/usb/host/ehci-hcd.c: In function ‘ehci_td_buffer’: drivers/usb/host/ehci-hcd.c:250:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] td->qt_buffer[idx] = cpu_to_hc32(virt_to_phys((void *)addr)); ^ include/linux/byteorder/little_endian.h:34:51: note: in definition of macro ‘__cpu_to_le32’ #define __cpu_to_le32(x) ((__force __le32)(__u32)(x)) ^ drivers/usb/host/ehci-hcd.c:250:24: note: in expansion of macro ‘cpu_to_hc32’ td->qt_buffer[idx] = cpu_to_hc32(virt_to_phys((void *)addr));
Signed-off-by: Marek Vasut <marex@denx.de> Cc: Stephen Warren <swarren@wwwdotorg.org> Cc: Tom Rini <trini@konsulko.com>
show more ...
|
| #
fec26e72 |
| 24-Feb-2016 |
Tom Rini <trini@konsulko.com> |
Merge branch 'master' of git://git.denx.de/u-boot-usb
|
| #
7ab0d355 |
| 23-Jan-2016 |
Marek Vasut <marex@denx.de> |
usb: ehci: Clear USBMODE_BE on LE MMIO
If the USB EHCI is configured for little endian MMIO, make sure to clear the USBMODE_BE flag from the USBMODE register.
Signed-off-by: Marek Vasut <marex@denx
usb: ehci: Clear USBMODE_BE on LE MMIO
If the USB EHCI is configured for little endian MMIO, make sure to clear the USBMODE_BE flag from the USBMODE register.
Signed-off-by: Marek Vasut <marex@denx.de> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Hans de Goede <hdegoede@redhat.com>
show more ...
|
| #
cf7c93cd |
| 23-Jan-2016 |
Marek Vasut <marex@denx.de> |
usb: ehci: Implement V2P mapping
Certain processor architectures, like MIPS, require that the USB structures and transfer buffers are passed with their PA to the USB controller. If VA is passed, the
usb: ehci: Implement V2P mapping
Certain processor architectures, like MIPS, require that the USB structures and transfer buffers are passed with their PA to the USB controller. If VA is passed, the USB will not work. Add the necessary virt_to_phys() calls into the USB EHCI code to make it work.
Signed-off-by: Marek Vasut <marex@denx.de> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Hans de Goede <hdegoede@redhat.com>
show more ...
|
| #
d83c25c3 |
| 02-Jan-2016 |
Tom Rini <trini@konsulko.com> |
Merge git://git.denx.de/u-boot-usb
|
| #
faa7db24 |
| 22-Dec-2015 |
Stefan Brüns <stefan.bruens@rwth-aachen.de> |
usb: Move determination of TT hub address/port into separate function
Start split and complete split tokens need the hub address and the downstream port of the first HS hub (device view).
The core
usb: Move determination of TT hub address/port into separate function
Start split and complete split tokens need the hub address and the downstream port of the first HS hub (device view).
The core of the function was duplicated in both host/ehci_hcd and musb-new/usb-compat.h.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Reviewed-by: Marek Vasut <marex@denx.de> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Tested-by: Hans de Goede <hdegoede@redhat.com>
show more ...
|