summaryrefslogtreecommitdiff
path: root/drivers/usb/host
AgeCommit message (Collapse)Author
2013-10-20USB: xHCI: Add stack support for xHCIVivek Gautam
This adds stack layer for eXtensible Host Controller Interface which facilitates use of USB 3.0 in host mode. Adapting xHCI host controller driver in linux-kernel by Sarah Sharp to needs in u-boot. Initial porting from Linux kernel version 3.4, with following top commit history of drivers/usb/host/xhci* : cf84055 xHCI: Cleanup isoc transfer ring when TD length mismatch found This adds the basic xHCI host controller driver with bare minimum features: - Control/Bulk transfer support has been added with required infrastructure for necessary xHC data structures. - Stream protocol hasn't been supported yet. - No support for quirky devices has been added. Signed-off-by: Vikas C Sajjan <[email protected]> Signed-off-by: Julius Werner <[email protected]> Signed-off-by: Vivek Gautam <[email protected]> Cc: Simon Glass <[email protected]> Cc: Minkyu Kang <[email protected]> Cc: Dan Murphy <[email protected]> Cc: Marek Vasut <[email protected]>
2013-10-20usb: Move 'bmRequestType' USB device request macros from EHCI headerVivek Gautam
Macros defining bmRequestType field of USB device request, given in table 9.2 USB 2.0 spec, are rather generic macros which can be further used by other Host controller stacks. So moving them to usb_defs header. Signed-off-by: Vivek Gautam <[email protected]> Cc: Julius Werner <[email protected]> Cc: Simon Glass <[email protected]> Cc: Minkyu Kang <[email protected]> Cc: Dan Murphy <[email protected]> Cc: Marek Vasut <[email protected]>
2013-10-14Coding Style cleanup: remove trailing white spaceWolfgang Denk
Signed-off-by: Wolfgang Denk <[email protected]>
2013-09-27usb: ehci: Fix test mode for connected portsJulius Werner
The EHCI controller has some very specific requirements for the USB 2.0 port test modes, which were not closely followed in the initial test mode commit. It demands that the host controller is completely shut down (all ports suspended, Run/Stop bit unset) when activating test mode, and will not work on an already enumerated port. This patch fixes that by introducing a new ehci_shutdown() function that closely follows the procedure listed in EHCI 4.14. Also, when we have such a function anyway, we might as well also use it in usb_lowlevel_stop() to make the normal host controller shutdown cleaner. Signed-off-by: Julius Werner <[email protected]> Acked-by: Simon Glass <[email protected]>
2013-08-26usb: ehci-mx5: Use 'bool' instead of 'unsigned char'Fabio Estevam
The 'enable' argument can be better expressed as boolean. Signed-off-by: Fabio Estevam <[email protected]> Reviewed-by: Otavio Salvador <[email protected]>
2013-08-26usb: ehci-mx5: Remove unneeded write to cscmr1 registerFabio Estevam
Currently we have the following behavior in ehci_hcd_init() - Read csmr1 register, clear bit 26 and then set bit 26. However a little bit later we call set_usb_phy_clk() which clears bit 26, so let's get rid of the unnecessary code. Signed-off-by: Fabio Estevam <[email protected]>
2013-08-26ARM: OMAP: USB: Fix linker error when ULPI is not definedDan Murphy
Fix the linker error for missing ulpi_reset when ulpi is not defined in the board config. Signed-off-by: Dan Murphy <[email protected]> Acked-by: Marek Vasut <[email protected]>
2013-08-26ARM: OMAP5: USB: Add OMAP5 common USB EHCI informationDan Murphy
* Enable the OMAP5 EHCI host clocks * Add OMAP5 EHCI register definitions * Add OMAP5 ES2 host revision Signed-off-by: Dan Murphy <[email protected]>
2013-07-29ehci-hcd: fix memory leak in lowlevel initNikita Kiryanov
usb_lowlevel_init() allocates a new periodic_list each time it is invoked, without freeing the original list. Since it is initialized later on in the code, just reuse the first-allocated list in future invocations of usb_lowlevel_init. Cc: Marek Vasut <[email protected]> Cc: Igor Grinberg <[email protected]> Signed-off-by: Nikita Kiryanov <[email protected]>
2013-07-29usb: ehci-omap: Don't softreset USB High-speed Host (UHH) ModuleRoger Quadros
Fixes NFS root problems with Beagle (3530 ES1.0) when used with external USB-ethernet adapter and "USB start" command used within u-boot. Soft resetting the UHH module causes instability issues on all OMAPs so we just avoid it. See OMAP36xx Errata i571: USB host EHCI may stall when entering smart-standby mode i660: USBHOST Configured In Smart-Idle Can Lead To a Deadlock On OMAP4/5, soft-resetting the UHH module can put it into Smart-Idle mode and lead to a deadlock. On OMAP3 this doesn't seem to be the case but still instabilities are observed on beagle (3530 ES1.0) if soft-reset is used. e.g. NFS root failures with Linux kernel. Signed-off-by: Roger Quadros <[email protected]>
2013-07-29usb: ehci: Split out struct ehci_ctrl definitionMarek Vasut
Move the struct ehci_ctrl defition from ehci-hcd.c into ehci.h so it can be re-used by drivers. In particular, the mv_udc driver can benefit from this move. Signed-off-by: Marek Vasut <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Lei Wen <[email protected]> Cc: Otavio Salvador <[email protected]> Cc: Stefano Babic <[email protected]>
2013-07-24Add GPL-2.0+ SPDX-License-Identifier to source filesWolfgang Denk
Signed-off-by: Wolfgang Denk <[email protected]> [trini: Fixup common/cmd_io.c] Signed-off-by: Tom Rini <[email protected]>
2013-07-12Merge branch 'master' of git://git.denx.de/u-boot-armTom Rini
Fix a trivial conflict in arch/arm/dts/exynos5250.dtsi about gpio and serial. Conflicts: arch/arm/dts/exynos5250.dtsi Signed-off-by: Tom Rini <[email protected]>
2013-07-11ARM: Tegra: USB: EHCI: Add support for Tegra30/Tegra114Jim Lin
Tegra30 and Tegra114 are compatible except PLL parameters. Tested on Tegra30 Cardhu, and Tegra114 Dalmore platforms. All works well. Signed-off-by: Jim Lin <[email protected]> Signed-off-by: Tom Warren <[email protected]>
2013-06-12usb: ehci: add missing cache managmentStephen Warren
Commit 8f62ca6 "usb: ehci: Support interrupt transfers via periodic list" didn't include any cache management in the new interrupt transfer path. It also added an extra write to or_asynclistaddr in usb_lowlevel_init(), without having flushed out the data there. Add the missing cache management calls, so that the code works again. This allows the USB keyboard on Tegra's Seaboard/Springbank boards to work. Cc: Patrick Georgi <[email protected]> Cc: Vincent Palatin <[email protected]> Cc: Julius Werner <[email protected]> Cc: Simon Glass <[email protected]> Cc: Marek Vasut <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-06-12usb: ehci: add Faraday USB 2.0 EHCI supportKuo-Jung Su
This patch adds support to both Faraday FUSBH200 and FOTG210, the differences between Faraday EHCI and standard EHCI are listed bellow: 1. The PORTSC starts at 0x30 instead of 0x44. 2. The CONFIGFLAG(0x40) is not only un-implemented, and also has its address space removed. 3. Faraday EHCI is a TDI design, but it doesn't compatible with the general TDI implementation found at both U-Boot and Linux. 4. The ISOC descriptors differ from standard EHCI in several ways. But since U-boot doesn't support ISOC, we don't have to worry about that. Signed-off-by: Kuo-Jung Su <[email protected]> CC: Marek Vasut <[email protected]>
2013-06-12usb: ehci: add weak-aliased function for PORTSCKuo-Jung Su
There is at least one non-EHCI compliant controller (i.e. Faraday EHCI) not only leave RESERVED and CONFIGFLAG registers un-implemented but also has their address spaces removed. As an result, the PORTSC register of Faraday EHCI always starts from 0x30 instead of 0x44 in standard EHCI. So that we'll need a weak-aliased function for abstraction. Signed-off-by: Kuo-Jung Su <[email protected]> CC: Marek Vasut <[email protected]>
2013-06-12usb: ehci: prevent bad PORTSC register accessKuo-Jung Su
1. The 'index' of ehci_submit_root() is not always > 0. e.g. While it gets invoked from usb_get_descriptor(), the 'index' is always a '0'. (See ch.9 of USB2.0) 2. The PORTSC register is not always required, and thus it should only report a port error when necessary. It would cause a port scan failure if the ehci_submit_root() always gets terminated by a port error. Signed-off-by: Kuo-Jung Su <[email protected]> CC: Marek Vasut <[email protected]>
2013-06-12usb: Correct CLEAR_FEATURE code in ehci-hcdSimon Glass
This commit broke USB2 on link (Chromebook Pixel): 020bbcb usb: hub: Power-cycle on root-hub ports However the root cause seems to be a missing mask and missing 'break' in ehci-hcd.c. This patch fixes both. On link, 'usb start' with a USB keyboard and memory stick inserted now finds both. The keyboard works as expected. Also ext2ls shows a directory listing from the memory stick. Signed-off-by: Simon Glass <[email protected]>
2013-05-30Merge branch 'u-boot/master' into 'u-boot-arm/master'Albert ARIBAUD
Conflicts: common/cmd_fpga.c drivers/usb/host/ohci-at91.c
2013-05-21USB: ohci-at91: support sama5d3x devicesBo Shen
Add OHCI support for sama5d3x devices Signed-off-by: Bo Shen <[email protected]> Signed-off-by: Andreas Bießmann <[email protected]>
2013-05-06usb: common: Use a global definition for 'min3'Vivek Gautam
We can use a common global method for calculating minimum of 3 numbers. Put the same in 'common header' and let 'ehci' use it. Signed-off-by: Vivek Gautam <[email protected]> Acked-by: Tom Rini <[email protected]>
2013-05-05USB: ohci-at91: make OHCI work on at91sam9g10 SoCBo Shen
The at91sam9g10 need to configure HCK0 to make OHCI work Signed-off-by: Bo Shen <[email protected]>
2013-05-05usb: Add new command to set USB 2.0 port test modesJulius Werner
This patch adds a new 'usb test' command, that will set a port to a USB 2.0 test mode (see USB 2.0 spec 7.1.20). It supports all five test modes on both downstream hub ports and ordinary device's upstream ports. In addition, it supports EHCI root hub ports. Signed-off-by: Julius Werner <[email protected]>
2013-05-05USB: EHCI: Add weak functions to support new chipJim Lin
Add ehci_get_port_speed() and ehci_set_usbmode() weak functions for platform driver to support new chip. Signed-off-by: Jim Lin <[email protected]>
2013-05-05imx: mx5: Remove legacy iomux supportBenoît Thébaudeau
Legacy iomux support is no longer needed now that all boards have been converted to iomux-v3. Signed-off-by: Benoît Thébaudeau <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2013-04-12arm: Remove support for unused s3c64xxBenoît Thébaudeau
Following the removal of the smdk6400 board, the s3c64xx SoC becomes unused, so remove associated code. It will still be possible to restore it later from the Git history if necessary. Signed-off-by: Benoît Thébaudeau <[email protected]>
2013-03-18Merge branch 'master' of git://git.denx.de/u-boot-usbTom Rini
2013-03-18usb: Add multiple controllers support for EHCI PCIVincent Palatin
Use the ability to have several active EHCI controller on a system in the PCI EHCI controller implementation. Signed-off-by: Simon Glass <[email protected]>
2013-03-18usb: ehci: Fix aliasing issue in EHCI interrupt codeVincent Palatin
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 <[email protected]> Signed-off-by: Simon Glass <[email protected]>
2013-03-18usb: ehci: Support interrupt transfers via periodic listPatrick Georgi
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. This provides support for USB keyboards using EHCI. Use timeouts to ensure we cannot get stuck in the keyboard scanning if something wrong happens (USB device unplugged or fatal I/O error) Signed-off-by: Vincent Palatin <[email protected]> Signed-off-by: Julius Werner <[email protected]> Signed-off-by: Simon Glass <[email protected]>
2013-03-18usb: ehci: exynos: Enable non-dt pathVivek Gautam
Enabling the non-dt path for the driver so that we don't get any build errors for non-dt configuration. Signed-off-by: Vivek Gautam <[email protected]> Acked-by: Simon Glass <[email protected]>
2013-03-18usb: ehci: exynos: Fix multiple FDT decodeVivek Gautam
With current FDT support driver tries to parse device node twice in ehci_hcd_init() and ehci_hcd_stop(), which shouldn't happen ideally. Making provision to store data in a global structure and thereby passing its pointer when needed. Signed-off-by: Vivek Gautam <[email protected]>
2013-03-16usb/host/ehci: Add support for EHCI on spearVipin Kumar
Add EHCI support for spear boards Signed-off-by: Armando Visconti <[email protected]> Signed-off-by: Vipin Kumar <[email protected]>
2013-03-16usb: ehci: Add 64-bit controller supportVincent Palatin
On EHCI controller with 64-bit address space support, we must initialize properly the high word for the PCI bus master accesses. Signed-off-by: Vincent Palatin <[email protected]> Signed-off-by: Simon Glass <[email protected]>
2013-03-16usb: ehci: generic PCI supportVincent Palatin
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. Signed-off-by: Simon Glass <[email protected]>
2013-03-15Merge branch 'u-boot-tegra/master' into 'u-boot-arm/master'Albert ARIBAUD
2013-03-14tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop]Lucas Stach
The ehci_hcd entry points were just calling into the Tegra USB functions. Now that they are in the same file we can just move over the implementation. Signed-off-by: Lucas Stach <[email protected]> Acked-by: Simon Glass <[email protected]> Signed-off-by: Tom Warren <[email protected]>
2013-03-14tegra: usb: move implementation into right directoryLucas Stach
This moves the Tegra USB implementation into the drivers/usb/host directory. Note that this merges the old /arch/arm/cpu/armv7/tegra20/usb.c file into ehci-tegra.c. No code changes, just moving stuff around. v2: While at it also move some defines and the usb.h header file to make usb driver usable for Tegra30. NOTE: A lot more work is required to properly init the PHYs and PLL_U on Tegra30, this is just to make porting easier and it does no harm here. Signed-off-by: Lucas Stach <[email protected]> Acked-by: Simon Glass <[email protected]> Signed-off-by: Tom Warren <[email protected]>
2013-03-07mxs: Make ehci-mxs multiport capableMarek Vasut
Rework ehci-mxs so it supports both ports on MX28. It was necessary to wrap the per-port configuration into struct ehci_mxs_port and pull out the clock configuration function. Signed-off-by: Marek Vasut <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Otavio Salvador <[email protected]> Cc: Stefano Babic <[email protected]>
2013-03-07mxs: Squash the header file usage in ehci-mxsMarek Vasut
The ehci-mxs driver included the register definitions directly. Use imx-regs.h instead since it contains proper handling of the differences between mx23 and mx28. Signed-off-by: Marek Vasut <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Otavio Salvador <[email protected]> Cc: Stefano Babic <[email protected]> Acked-by: Otavio Salvador <[email protected]>
2013-03-07USB: drop unneeded header in ehci-mx6Stefano Babic
Including header for pads is not needed and breaks board after renaming pin definitions. Series-to: u-boot Series-cc: [email protected],[email protected],[email protected] Signed-off-by: Stefano Babic <[email protected]>
2013-01-14Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master'Albert ARIBAUD
2013-01-09Merge 'u-boot-atmel/master' into 'u-boot-arm/master'Albert ARIBAUD
2013-01-08EHCI: Exynos: Add fdt supportRajeshwari Shinde
Adding fdt support to ehci-exynos in order to parse register base addresses from the device node. Signed-off-by: Vivek Gautam <[email protected]> Signed-off-by: Rajeshwari Shinde <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2012-12-10Merge branch 'master' of git://git.denx.de/u-boot into resolveMinkyu Kang
Conflicts: README board/samsung/universal_c210/universal.c drivers/misc/Makefile drivers/power/power_fsl.c include/configs/mx35pdk.h include/configs/mx53loco.h include/configs/seaboard.h
2012-12-09at91sam9x5: enable USB support for 9x5ek board.Richard Genoud
Signed-off-by: Richard Genoud <[email protected]> Acked-by: Bo Shen <[email protected]> Signed-off-by: Andreas Bießmann <[email protected]>
2012-11-20usb: r8a6659: Fix build by missing of parenthesisNobuhiro Iwamatsu
By commit c7e3b2b5, this was chanded to support multiple controllers. But this has missing of parenthesis. This commit fix it. ----- r8a66597-hcd.c: In function ‘usb_lowlevel_init’: r8a66597-hcd.c:911:52: error: expected declaration specifiers before ‘)’ token r8a66597-hcd.c:935:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or‘__attribute__’ before ‘{’ token r8a66597-hcd.c:939:1: error: expected ‘{’ at end of input ----- Signed-off-by: Nobuhiro Iwamatsu <[email protected]> CC: Lucas Stach <[email protected]>
2012-11-20usb: r8a66597: Switched from variable to only macroNobuhiro Iwamatsu
Some variables are initialized with a value defined by macro. This was changed to use the macro directly. And the variable not to use deleted it. Signed-off-by: Nobuhiro Iwamatsu <[email protected]>
2012-11-20usb: use linux/usb/ch9.h instead of usbdescriptors.hIlya Yanok
Linux usb/ch9.h seems to have all the same information (and more) as usbdescriptors.h so use the former instead of the later one. As a consequense of this change USB_SPEED_* values don't correspond directly to EHCI speed encoding anymore, I've added necessary recoding in EHCI driver. Also there is no point to put speed into pipe anymore so it's removed and a bunch of host drivers fixed to look at usb_device->speed instead. Old usbdescriptors.h included is not removed as it seems to be used by old USB device code. This makes usb.h and usbdevice.h incompatible. Fortunately the only place that tries to include both are the old MUSB code and it needs usb.h only for USB_DMA_MINALIGN used in aligned attribute on musb_regs structure but this attribute seems to be unneeded (old MUSB code doesn't support any DMA at all). Signed-off-by: Ilya Yanok <[email protected]>