Age | Commit message (Collapse) | Author |
|
The interrupt endpoint handling code stores the buffer pointer in the QH
padding field. We need to make it the size of a pointer to avoid strict
aliasing issue with the compiler.
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BUG=chromium-os:24760
TEST=emerge-lumpy chromeos-u-boot ; emerge-tegra2_kaen chromeos-u-boot
Change-Id: Iecbfa0610591d24452106b79de61abb033c36f2e
Reviewed-on: https://gerrit.chromium.org/gerrit/13732
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
|
|
Interrupt transfers aren't meant to be used from the async list
(the EHCI spec indicates trouble with low/full-speed intr on async).
Build a periodic list instead, and provide an API to make use of it.
Then, use that API from the existing interrupt transfer API.
BUG=chrome-os-partner:5752
TEST=Use USB keyboard in u-boot (recovery mode) when later
commits make use of this code
Change-Id: I9bf0ef838af1076f8060c39bd942d95271cf0035
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: https://gerrit.chromium.org/gerrit/13489
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
|
|
BUG=chromium-os:23496
TEST=built Seaboard and Waluigi OK
Signed-off-by: Tom Warren <twarren@nvidia.com>
Change-Id: I52fcccc1627d1e9b6e0270e5ba9ab81c5d7fa9b7
Reviewed-on: https://gerrit.chromium.org/gerrit/12444
|
|
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Cc: Remy Bohmer <linux@bohmer.net>
(cherry picked from u-boot-usb.git
commit 62d5f9a8b9e9a395b7e8af3344a2b2e47157c8f9)
BUG=chrome-os-partner:5752
TEST=on Lumpy, use USB keyboard to enter commands on U-Boot command line
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Change-Id: I6986ebda2191caf641444fca8909b253867e873b
Reviewed-on: https://gerrit.chromium.org/gerrit/12510
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
|
|
According to EHCI specification v1.0, the controller should stabilize
the power on a port at most 20 ms after the port power bit transition.
So, we put this setting in the virtual descriptor corresponding field,
(bPwrOn2PwrGood = 10 => 10 x 2ms = 20ms), this saves about 500ms at each
controller initialization/enumeration.
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BUG=chrome-os-partner:6344
TEST=check USB time stamp on Lumpy before and after the patch
Change-Id: Ia09f62bdb6545387e5e7386ef9095abd53a7d192
Reviewed-on: https://gerrit.chromium.org/gerrit/12491
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
|
|
The newer compiler version is more thorough in detecting code
inconsistencies, and reports warnings in many cases when building
u-boot for kaen and alex.
This change modifies the code to get rid of the warnings. There
supposed to be no logical changes, so no testing other than
building the system is being done.
The files not yet upstreamed are excluded and will be submitted
separately.
BUG=chromium-os:18862
TEST=manual
. run the following commands
emerge-tegra2_kaen chromeos-u-boot
emerge-x86-alex chromeos-u-boot
. observe them succeed
Change-Id: I4c872d84352539d24a418ba910274d08d02d26a8
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: http://gerrit.chromium.org/gerrit/5706
Reviewed-by: Simon Glass <sjg@chromium.org>
|
|
The SMSC95XX is a USB hub with a built-in Ethernet adapter. This adds support
for this, using the USB host network framework.
The source is from a prevous commit:
http://lists.denx.de/pipermail/u-boot/2011-June/094243.html
And fix warnings of "Dereferencing type-punned pointer will break
strict-aliasing rules", as:
351c351,352
< u32 addr_lo, addr_hi;
---
> u32 addr_lo;
> u16 addr_hi;
356,357c357,360
< addr_lo = cpu_to_le32(*((u32 *)eth->enetaddr));
< addr_hi = cpu_to_le16(*((u16 *)(eth->enetaddr + 4)));
---
> memcpy(&addr_lo, eth->enetaddr, sizeof(u32));
> addr_lo = cpu_to_le32(addr_lo);
> memcpy(&addr_hi, eth->enetaddr + 4, sizeof(u16));
> addr_hi = cpu_to_le16(addr_hi);
BUG=none
TEST=booted u-boot and detected a SMSC9500 USB Etherenet Adadpter.
Change-Id: I5fc136933d9923e5e446eecbbb7aeb8e2ccc7077
Reviewed-on: http://gerrit.chromium.org/gerrit/5714
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Rong Chang <rongchang@chromium.org>
|
|
Fix the crash when running several times usb_init() with a USB ethernet
device plugged.
BUG=chromium-os:15206
TEST=run several "usb start" commands and having inserted/removed all
possible combinations of 0 to 3 USB Ethernet devices.
Change-Id: I23109ad8774daeb07eeba5de615700fec643dfdb
Reviewed-on: http://gerrit.chromium.org/gerrit/5026
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Doug Anderson <dianders@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
|
|
Add the ability to have several active EHCI controller on a system
and implement it for Tegra EHCI controllers.
BUG=chrome-os-partner:5043
TEST=boot an Aebl with USB key on USB3 port, boot a Kaen with USB key on
USB1 port, boot a Kaen with USB key on USB3 port.
Change-Id: Id37a9a4f92b986505fd6f8778d6f7964890d46b4
Reviewed-on: http://gerrit.chromium.org/gerrit/4981
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
|
|
Add the ability to have USB devices enumerated on several controllers
BUG=chrome-os-partner:5043
TEST=Compile U-Boot
Change-Id: If43d32d4dc90c15ba570e5b9f86641cbf60ce064
Reviewed-on: http://gerrit.chromium.org/gerrit/4951
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
|
|
This reverts commit b95dbcd6aea80e7ad86c8355e1db410b5582515c.
It is no longer needed since the .bss alignment issue has been fixed.
BUG=chrome-os-partner:3914
TEST=Boot a Chromeos image from a USB key on Alex :
"usb start ; fatload usb 1:c 3000000 syslinux/vmlinuz.a ; zboot 3000000"
Change-Id: Iba3df10c1abdcbb44a474e60beac502d5dd0f6aa
Reviewed-on: http://gerrit.chromium.org/gerrit/4099
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@google.com>
|
|
Instead of hardcoding the PCI IDs on the USB controller, use the PCI
class to detect them.
Ensure the busmaster bit is properly set in the PCI configuration.
BUG=chrome-os-partner:3914
TEST=Boot a Chromeos image from a USB key on Alex :
"usb start ; fatload usb 1:c 3000000 syslinux/vmlinuz.a ; zboot 3000000"
and launch a TFTP transfer using a USB-ethernet dongle.
Change-Id: Id74bf23ce95a76d4d2c3be506d713bbef9734bd3
Reviewed-on: http://gerrit.chromium.org/gerrit/3657
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@google.com>
|
|
Various control data structures used by the EHCI hardware such as QH and
TD must be 32-byte aligned.
When using the GCC attribute "aligned", the maximum alignment supported
by the linker depends on the architecture.
On x86, the linker only support 8-byte alignment. So we need to enforce
alignment manually by allocating larger or aligned buffers.
BUG=chrome-os-partner:3914
TEST=Boot a Chromeos image from a USB key on Alex :
"usb start ; fatload usb 1:c 3000000 syslinux/vmlinuz.a ; zboot 3000000"
and launch a TFTP transfer using a USB-ethernet dongle.
Change-Id: I9c3e86f6ad04d18c3da1eb45926cec0e6d251461
Reviewed-on: http://gerrit.chromium.org/gerrit/3656
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@google.com>
|
|
On EHCI controller with 64-bit address space support, we must initialize
properly the high word for the PCI bus master accesses.
BUG=chrome-os-partner:3914
TEST=Boot a Chromeos image from a USB key on Alex :
"usb start ; fatload usb 1:c 3000000 syslinux/vmlinuz.a ; zboot 3000000"
and launch a TFTP transfer using a USB-ethernet dongle.
Change-Id: I61026276c27d82707469f7296deaffef4f5d7926
Reviewed-on: http://gerrit.chromium.org/gerrit/3655
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@google.com>
|
|
After discussions on the U-Boot Mailing List it seems that this patch
improves the ASIX network driver timeout issue.
This is an interim fix since there is not time to look at it in detail now.
BUG=chromium-os:17147
TEST=network boot and observe that timeouts seems less common
(however, they still occur)
Change-Id: I5847c04abbd2d15382df6ef45fe21214e13d1b60
Reviewed-on: http://gerrit.chromium.org/gerrit/3409
Tested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Anton Staaf <robotboy@chromium.org>
|
|
USB ports relied on CONFIG_TEGRA2_USBx macros to select the ordering.
This change records the order that the ports are configured and uses
that to select ports by number. This properly honors CONFIG_TEGRA2_USBx
when not using an FDT.
Also removed direct access to the USB peripheral address from the Tegra2
EHCI driver.
BUG=chromium-os:11623
TEST=usb start; run usb_boot
Change-Id: Ib906ec4483bcd95ff9564411f44dc0a2e48fff8c
Reviewed-on: http://gerrit.chromium.org/gerrit/2537
Tested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Anton Staaf <robotboy@chromium.org>
Reviewed-by: Tom Warren <twarren@nvidia.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
|
|
This tidied up the USB configuration a little, to ready it for run-time
configuration.
BUG=chromium-os:11623
TEST=Build and boot U-Boot, usb start, network boot
Change-Id: Ifdd5790c727cd697553455b57b167cd8dc51a823
Reviewed-on: http://gerrit.chromium.org/gerrit/2346
Tested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Anton Staaf <robotboy@chromium.org>
|
|
The Asix driver takes the link down during init() and then brings it back up.
This commit changes this so that if a link has already been established
successfully we simply check that the link is still good.
This reduces the delay between successive network commands.
TEST=bootp; tftp ... - see that delay is now shorter than before.
Change-Id: I044e6d12f6c175a87ee3c93bf874b497f9379c3e
BUG=chromium-os:14082
TEST=run U-boot; usb start; bootp; bootp
See that second bootp happens quickly and link stays up.
Change-Id: I79fdf4f099041ed0a077e8a833d66076c1b28402
Reviewed-on: http://gerrit.chromium.org/gerrit/200
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Warren <twarren@nvidia.com>
|
|
This adds basic USB support for port 0. The other port is not supported by this CL.
BUG=chromium-os:13875
TEST=Put USB stick in side port. Then:
Tegra2 (SeaBoard) # ext2load usb 0:3 10000000 /boot/vmlinuz
Loading file "/boot/vmlinuz" from usb device 0:3 (gpt3)
2745808 bytes read
Tegra2 (SeaBoard) #
Change-Id: I10f9228377ee7ed7817bb30bf665d69c5e74f239
Review URL: http://codereview.chromium.org/6896012
|
|
Looks like this was missed during the conversion to partial linking.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Convert the PCI base address into a virtual address.
Signed-off-by: Zhao Chenhui <b35336@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
|
|
When dealing with non-multipoint devices, if the software root hub code
accepted the message, then we still need to process it normally. So only
return quickly when the root hub skipped the message or is otherwise in
an error state.
Signed-off-by: Cliff Cai <cliff.cai@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
and remove the now unused asm/arch-at91/io.h
Signed-off-by: Reinhard Meyer <u-boot@emk-elektronik.de>
|
|
Signed-off-by: Reinhard Meyer <u-boot@emk-elektronik.de>
|
|
As exception among the i.MX processors, the i.MX31 has headers
without general names (mx31-regs.h, mx31.h instead of imx-regs.h and
clock.h). This requires several nasty #ifdef in the drivers to
include the correct header. The patch cleans up the driver and
renames the header files as for the other i.MX processors.
Signed-off-by: Stefano Babic <sbabic@denx.de>
|
|
Conflicts:
drivers/usb/host/ehci-pci.c
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
|
Add ULI1575 EHCI controller to the list of the supported devices.
Signed-off-by: Zhao Chenhui <b35336@freescale.com>
Acked-by: Remy Bohmer <linux@bohmer.net>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
|
|
This patch adds support for the PI7C9X442SL PCIe EHCI host controller
from Pericom.
Tested at P4080DS eval board from Freescale.
Signed-off-by: Ralf Trübenbach <ralf.truebenbach@men.de>
Cc: Remy Bohmer <linux@bohmer.net>
|
|
The anomaly workarounds we need for older silicon might break things
if used on newer versions where the anomalies don't exist. So check
the silicon rev at runtime too.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Not everyone has a 24MHz clkin to the USB, so let board porters override.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
|
Add waiting for receiving Ethernet gadget state on the Windows host
side before dropping pullup, but keep it for debug.
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Port USB gadget RNDIS protocol support from linux-2.6.26
(.27 gadget stack actually has composite drivers).
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Port struct net_device_stats and statistics collecting needed for
RNDIS protocol.
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Disconnecting USB gadget with pending interrupt may cause its wrong
handling in the next time when interface will be started again
(especially actual for RNDIS). This interrupt may force the gadget
to queue unexpected response before setup stage.
Despite the fact that such interrupt handled after dropped pullup
also may add pending response, this will not bring to any issues due to
usb_ep_disable (which clears the queue) called on gadget unregistering.
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Driver originally written by NVIDIA Corporation, modified to
handle odd-length packets.
Signed-off-by: Simon Glass <sjg@chromium.org>
|
|
This adds support for using USB Ethernet dongles in host mode. This is just
the framework - drivers will come later. A new config option called
CONFIG_USB_HOST_ETHER can be defined in board config files to switch this
on.
The was originally written by NVIDIA and was cleaned up for release by the
Chromium authors.
Signed-off-by: Simon Glass <sjg@chromium.org>
|
|
Changed both to use a common timeout for URB submission, since they were using
different values and EHCI's was too short.
Also fixed EHCI to actually check if urb submission succeeded, rather than
silently continuing into the weeds.
Change-Id: I7f71499ffaa05187d8e5618db2419e1606007b82
Signed-off-by: Simon Glass <sjg@chromium.org>
|
|
This allows to change device and host MAC addresses without performing
reset.
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Calling eth_bind at usb_eth_init time causes renaming of the network
device from 'usb_ether' to 'usb0'. Fixing this to keep the first name.
Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
|
|
Since the ether may not be the only one usb gadget would be used
in the uboot, it is neccessary to do the register each time the
eth begin to work to make usb gadget driver less confussed when
we want to use two different usb gadget at the same time.
Usb gadget driver could simple ignore the register operation, if
it find the driver has been registered already.
Signed-off-by: Lei Wen <leiwen@marvell.com>
|
|
Calling usb_dev_init() from within the EHCI host driver is wrong.
The EHCI host driver should have no dependency/interconnection to the
USB device driver.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
|
|
This patch fixes a problem noticed on lwmon5 (PPC440EPx) using the
common EHCI driver, when "usb reset" is issued multiple times.
Upon the 2nd (and further) "usb reset" command, the command fails
with the following messages:
=> usb reset
(Re)start USB...
USB: Register 1111 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 5 USB Device(s) found
scanning bus for storage devices... 2 Storage Device(s) found
=> usb reset
(Re)start USB...
USB: EHCI fail to reset
Error, couldn't init Lowlevel part
This patch fixes this problem. Now "usb reset" can be called multiple
times.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
|
|
This watchdog reset call is needed here, otherwise the lwmon5 board
(PPC440EPx based) will reset upon the "usb reset" command.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
|
|
Checking the status field of the qTD token in the current code
do not take into acount cases where endpoint stall (halted) bit
is set together with XactErr status bit. As a result clearing
stall on an endpoint won't be done if this status bit was also
set. Check for halted bit and report USB_ST_STALLED status
if the host controller also indicates endpoit stall condition.
Signed-off-by: Anatolij Gustschin <agust@denx.de>
|
|
Before this commit, weak symbols were not overridden by non-weak symbols
found in archive libraries when linking with recent versions of
binutils. As stated in the System V ABI, "the link editor does not
extract archive members to resolve undefined weak symbols".
This commit changes all Makefiles to use partial linking (ld -r) instead
of creating library archives, which forces all symbols to participate in
linking, allowing non-weak symbols to override weak symbols as intended.
This approach is also used by Linux, from which the gmake function
cmd_link_o_target (defined in config.mk and used in all Makefiles) is
inspired.
The name of each former library archive is preserved except for
extensions which change from ".a" to ".o". This commit updates
references accordingly where needed, in particular in some linker
scripts.
This commit reveals board configurations that exclude some features but
include source files that depend these disabled features in the build,
resulting in undefined symbols. Known such cases include:
- disabling CMD_NET but not CMD_NFS;
- enabling CONFIG_OF_LIBFDT but not CONFIG_QE.
Signed-off-by: Sebastien Carlier <sebastien.carlier@gmail.com>
|
|
Signed-off-by: Wolfgang Denk <wd@denx.de>
|
|
This patch solves a problem with USB hanging under higher load on a
i.MX31 board. It falls into class of typical USB problems and fixes:
if you don't understand the real cause, add a delay somewhere.
The problem appeared after introduction of ELF relocation, which
results in smaller code, which appears to run faster (probably because
it fits better in the cache); turning off the instruction cache,
adding debug printf()s and increasing the delay have all been found to
make the problem go away.
Moving the original "udelay(1)" up in the code to it's new place made
the problem appear much less frequently. Increasing the delay to 2
microseconds then made the code run reliably in all (hour-long) tests.
To be on the safe side, we set it to 5 microseconds here.
Signed-off-by: Heiko schocher <hs@denx.de>
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
Cc: Stefano Babic <sbabic@denx.de>
|
|
These ep and root hub structures need not be writable.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|