- 03 12月, 2013 1 次提交
-
-
由 David Laight 提交于
Section 4.11.7.1 of rev 1.0 of the xhci specification states that a link TRB can only occur at a boundary between underlying USB frames (512 bytes for high speed devices). If this isn't done the USB frames aren't formatted correctly and, for example, the USB3 ethernet ax88179_178a card will stop sending (while still receiving) when running a netperf tcp transmit test with (say) and 8k buffer. This should be a candidate for stable, the ax88179_178a driver defaults to gso and tso enabled so it passes a lot of fragmented skb to the USB stack. Notes from Sarah: Discussion: http://marc.info/?l=linux-usb&m=138384509604981&w=2 This patch fixes a long-standing xHCI driver bug that was revealed by a change in 3.12 in the usb-net driver. Commit 638c5115 "USBNET: support DMA SG" added support to use bulk endpoint scatter-gather (urb->sg). Only the USB ethernet drivers trigger this bug, because the mass storage driver sends sg list entries in page-sized chunks. This patch only fixes the issue for bulk endpoint scatter-gather. The problem will still occur for periodic endpoints, because hosts will interpret no-op transfers as a request to skip a service interval, which is not what we want. Luckily, the USB core isn't set up for scatter-gather on isochronous endpoints, and no USB drivers use scatter-gather for interrupt endpoints. Document this known limitation so that developers won't try to use urb->sg for interrupt endpoints until this issue is fixed. The more comprehensive fix would be to allow link TRBs in the middle of the endpoint ring and revert this patch, but that fix would touch too much code to be allowed in for stable. This patch should be backported to kernels as old as 3.12, that contain the commit 638c5115 "USBNET: support DMA SG". Without this patch, the USB network device gets wedged, and stops sending packets. Mark Lord confirms this patch fixes the regression: http://marc.info/?l=linux-netdev&m=138487107625966&w=2Signed-off-by: NDavid Laight <david.laight@aculab.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Tested-by: NMark Lord <mlord@pobox.com> Cc: stable@vger.kernel.org
-
- 31 10月, 2013 6 次提交
-
-
由 Russell King 提交于
Acked-by: NFelipe Balbi <balbi@ti.com> Acked-by: NNicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
The correct way for a driver to specify the coherent DMA mask is not to directly access the field in the struct device, but to use dma_set_coherent_mask(). Only arch and bus code should access this member directly. Convert all direct write accesses to using the correct API. Acked-by: NFelipe Balbi <balbi@ti.com> Acked-by: NNicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
Add a comment to explain why this driver doesn't call any of the DMA API dma_set_mask() functions. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
Replace the following sequence: dma_set_mask(dev, mask); dma_set_coherent_mask(dev, mask); with a call to the new helper dma_set_mask_and_coherent(). Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Russell King 提交于
Replace the following sequence: dma_set_mask(dev, mask); dma_set_coherent_mask(dev, mask); with a call to the new helper dma_set_mask_and_coherent(). Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Boris BREZILLON 提交于
The AT91 PMC (Power Management Controller) provides a USB clock used by the different USB controllers (ehci, ohci and udc). The atmel-ehci driver must configure the usb clock rate to 48Mhz in order to get a fully functionnal USB host controller. This configuration was formely done in mach-at91/clock.c, but will be bypassed when moving to common clk framework. This patch adds support for usb clock retrieval and configuration only if CCF is enabled (CONFIG_COMMON_CLK). Signed-off-by: NBoris BREZILLON <b.brezillon@overkiz.com> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 30 10月, 2013 2 次提交
-
-
由 Thomas Pugliese 提交于
Add a quirk for Alereon HWA devices to concatenate the frames of isoc transfer requests. Signed-off-by: NThomas Pugliese <thomas.pugliese@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 H Hartley Sweeten 提交于
Convert ep93xx to use the OHCI platform driver and remove the ohci-ep93xx bus glue driver. Enable CONFIG_OHCI_HCD_PLATFORM in the ep93xx_defconfig so that USB is still enabled by default on the EP93xx platform. Signed-off-by: NH Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: NAlan Stern <stern@rowland.harvard.edu> Cc: Ryan Mallon <rmallon@gmail.com> Cc: Lennert Buytenhek <kernel@wantstofly.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Olof Johansson <olof@lixom.net> Cc: Russell King <linux@arm.linux.org.uk> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 20 10月, 2013 5 次提交
-
-
由 Alan Stern 提交于
hcd-pci.c in usbcore contains a check for wakeup requests racing with controller suspend. This check is going to be moved out of usbcore and into the individual controller drivers, where it can apply to all platforms, not just PCI. This patch adds the check to uhci-hcd. Ironically, none of the non-PCI platform drivers for uhci-hcd implement suspend/resume. Nevertheless, this change is needed to accomodate the upcoming change to usbcore. The patch also removes an outdated check of the root hub state. For one thing, the PM layer has long been quite reliable about suspending root hubs before controllers. For another, virtually the same check is also made in hcd-pci.c; there's no point in repeating it. Signed-off-by: NAlan Stern <stern@rowland.harvard.edu> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Alan Stern 提交于
hcd-pci.c in usbcore contains a check for wakeup requests racing with controller suspend. This check is going to be moved out of usbcore and into the individual controller drivers, where it can apply to all platforms, not just PCI. This patch adds the check to ehci-hcd. Signed-off-by: NAlan Stern <stern@rowland.harvard.edu> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Alan Stern 提交于
This patch fixes an endian-related error in ohci-hcd (detected by sparse) and clarifies a comment explaining a peculiar locking arrangement that sparse warns about. Signed-off-by: NAlan Stern <stern@rowland.harvard.edu> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Alan Stern 提交于
This patch fixes several sparse errors in ehci-hcd introduced by commit 3d091a6f (USB: EHCI: AMD periodic frame list table quirk). Although the problem fixed by that commit affects only little-endian systems, the source code has to use types appropriate for big-endian too. Signed-off-by: NAlan Stern <stern@rowland.harvard.edu> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
由 Alan Stern 提交于
This patch fixes a type mismatch in ehci-hcd caused by commit b35c5009 (USB: EHCI: create per-TT bandwidth tables). The c_maskp parameter in check_intr_schedule() was changed to point to unsigned int rather than __hc32, but the prototype declaration wasn't adjusted accordingly. Signed-off-by: NAlan Stern <stern@rowland.harvard.edu> Reported-by: Nkbuild test robot <fengguang.wu@intel.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 19 10月, 2013 1 次提交
-
-
由 Thomas Pugliese 提交于
Do not overwrite the multi-byte fields of usb_wa_descriptor with their cpu format values after reading the descriptor. Leave the values as __le16 and swap on use. This is more consistent with other uses of USB descriptors. Signed-off-by: NThomas Pugliese <thomas.pugliese@gmail.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 17 10月, 2013 24 次提交
-
-
由 Dan Williams 提交于
Only used for debug output, so we don't need to save it. Signed-off-by: NDan Williams <dan.j.williams@intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Dan Williams 提交于
Perform an unconditional toggle of the cycle bit with 'xor'. Signed-off-by: NDan Williams <dan.j.williams@intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch replaces the 'event' argument of xhci_handle_cmd_set_deq() and xhci_handle_cmd_reset_ep(), which is used to retrieve the command completion status code, with the cmd_comp_code directly, since it is available. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
Since the Slot ID field in the command completion event matches the Slot ID field in the associated command TRB for the Stop Endpoint, Set Dequeue Pointer and Reset Endpoint commands, this patch adds in the handlers of their completion events a 'slot_id' argument and removes the slot id calculation in each of them. Also, a WARN_ON() was added in case the slot ids reported by command TRB and event TRB differ (although according to xhci spec rev1.0 that should not happen) Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch replaces 'xhci->cmd_ring->dequeue' with 'trb', the address of the command TRB, since it is available to reduce line length. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch adds a new variable 'cmd_type' to hold the command type so that switch cases can be simplified by removing TRB_TYPE() macro improving code readability. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch adds a new variable 'cmd_trb' to hold the address of the command TRB, that is associated with the command completion event, and to replace repetitions of xhci->cmd_ring->dequeue into the code. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch adds a new variable 'cmd_comp_code' to hold the command completion status code aiming to reduce code duplication and to improve code readability. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_CONFIG_EP switch case, in handle_cmd_completion(), into a fuction named xhci_handle_cmd_config_ep(). There were added two additional variables, 'add_flags' and 'drop_flags', to reduce line length below 80 chars and improve code readability. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch removes the variable 'ep_ring' that is assigned in TRB_CONFIG_EP switch case but never used. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_EVAL_CONTEXT switch case in handle_cmd_completion() into a fuction named xhci_handle_cmd_eval_ctx(). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_NEC_GET_FW switch case in handle_cmd_completion() into a fuction named xhci_handle_cmd_nec_get_fw(). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_RESET_DEV switch case in handle_cmd_completion() into a fuction named xhci_handle_cmd_reset_dev(). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
Since the slot id retrieved from the Reset Device TRB matches the slot id in the command completion event, which is available, there is no need to determine it again. This patch removes the uneccessary reassignment to slot id and adds a WARN_ON in case the two Slot ID fields differ (although according xhci spec rev1.0 they should not differ). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_ADDR_DEV switch case in handle_cmd_completion() into a fuction named xhci_handle_cmd_addr_dev(). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_DISABLE_SLOT switch case in handle_cmd_completion() into a fuction named xhci_handle_cmd_disable_slot(). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
The function that handles xHCI command completion is much too long and there is need to be broken up into individual functions for each command completion to improve code readablity. This patch refactors the code in TRB_ENABLE_SLOT switch case in handle_cmd_completion() into a fuction named xhci_handle_cmd_enable_slot(). Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch renames the function handlers of a triggered Command Completion Event that correspond to each command type into 'xhci_handle_cmd_<type>'. That is done to give a consistent naming space to all the functions that handle Command Completion Events and that will permit the code reader to reference to them more easily. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Xenia Ragiadakou 提交于
This patch removes the "adjective" argument from xhci_giveback_urb_in_irq(), since it is not used in the function anymore. Signed-off-by: NXenia Ragiadakou <burzalodowa@gmail.com> Acked-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 xiao jin 提交于
The usage of USB_CTRL_SET_TIMEOUT in xhci is incorrect. The definition of USB_CTRL_SET_TIMEOUT is 5000ms. The input timeout to wait_for_completion_interruptible_timeout is jiffies. That makes the timeout be longer than what we want, such as 50s in some platform. The patch is to use XHCI_CMD_DEFAULT_TIMEOUT instead of USB_CTRL_SET_TIMEOUT as command completion event timeout. Signed-off-by: Nxiao jin <jin.xiao@intel.com> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Sachin Kamat 提交于
'xhci_del_comp_mod_timer' is local to this file. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Sarah Sharp 提交于
The USB core currently handles enabling and disabling optional USB power management features during device transitions (device suspend/resume, driver bind/unbind, device reset, and device disconnect). Those optional power features include Latency Tolerance Messaging (LTM), USB 3.0 Link PM, and USB 2.0 Link PM. The USB core currently enables LPM on device enumeration and disables USB 2.0 Link PM when the device is reset. However, the xHCI driver disables LPM when the device is disconnected and the device context is freed. Push the call up into the USB core, in order to be consistent with the core handling all power management enabling and disabling. Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
-
由 Sarah Sharp 提交于
How it's supposed to work: -------------------------- USB 2.0 Link PM is a lower power state that some newer USB 2.0 devices support. USB 3.0 devices certified by the USB-IF are required to support it if they are plugged into a USB 2.0 only port, or a USB 2.0 cable is used. USB 2.0 Link PM requires both a USB device and a host controller that supports USB 2.0 hardware-enabled LPM. USB 2.0 Link PM is designed to be enabled once by software, and the host hardware handles transitions to the L1 state automatically. The premise of USB 2.0 Link PM is to be able to put the device into a lower power link state when the bus is idle or the device NAKs USB IN transfers for a specified amount of time. ...but hardware is broken: -------------------------- It turns out many USB 3.0 devices claim to support USB 2.0 Link PM (by setting the LPM bit in their USB 2.0 BOS descriptor), but they don't actually implement it correctly. This manifests as the USB device refusing to respond to transfers when it is plugged into a USB 2.0 only port under the Haswell-ULT/Lynx Point LP xHCI host. These devices pass the xHCI driver's simple test to enable USB 2.0 Link PM, wait for the port to enter L1, and then bring it back into L0. They only start to break when L1 entry is interleaved with transfers. Some devices then fail to respond to the next control transfer (usually a Set Configuration). This results in devices never enumerating. Other mass storage devices (such as a later model Western Digital My Passport USB 3.0 hard drive) respond fine to going into L1 between control transfers. They ACK the entry, come out of L1 when the host needs to send a control transfer, and respond properly to those control transfers. However, when the first READ10 SCSI command is sent, the device NAKs the data phase while it's reading from the spinning disk. Eventually, the host requests to put the link into L1, and the device ACKs that request. Then it never responds to the data phase of the READ10 command. This results in not being able to read from the drive. Some mass storage devices (like the Corsair Survivor USB 3.0 flash drive) are well behaved. They ACK the entry into L1 during control transfers, and when SCSI commands start coming in, they NAK the requests to go into L1, because they need to be at full power. Not all USB 3.0 devices advertise USB 2.0 link PM support. My Point Grey USB 3.0 webcam advertises itself as a USB 2.1 device, but doesn't have a USB 2.0 BOS descriptor, so we don't enable USB 2.0 Link PM. I suspect that means the device isn't certified. What do we do about it? ----------------------- There's really no good way for the kernel to test these devices. Therefore, the kernel needs to disable USB 2.0 Link PM by default, and distros will have to enable it by writing 1 to the sysfs file /sys/bus/usb/devices/../power/usb2_hardware_lpm. Rip out the xHCI Link PM test, since it's not sufficient to detect these buggy devices, and don't automatically enable LPM after the device is addressed. This patch should be backported to kernels as old as 3.11, that contain the commit a558ccdc "usb: xhci: add USB2 Link power management BESL support". Without this fix, some USB 3.0 devices will not enumerate or work properly under USB 2.0 ports on Haswell-ULT systems. Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Cc: stable@vger.kernel.org
-
由 Sarah Sharp 提交于
To enable USB 2.0 Link Power Management (LPM), the xHCI host controller needs the device slot ID to generate the device address used in L1 entry tokens. That information is set in the L1 device slot ID field of the USB 2.0 LPM registers. Currently, the L1 device slot ID is overwritten when the xHCI driver initiates the software test of USB 2.0 Link PM in xhci_usb2_software_lpm_test. It is never cleared when USB 2.0 Link PM is disabled for the device. That should be harmless, because the Hardware LPM Enable (HLE) bit is cleared when USB 2.0 Link PM is disabled, so the host should not pay attention to the slot ID. This patch should have no effect on host behavior, but since xhci_usb2_software_lpm_test is going away in an upcoming bug fix patch, we need to move that code to the function that enables and disables USB 2.0 Link PM. This patch should be backported to kernels as old as 3.11, that contain the commit a558ccdc "usb: xhci: add USB2 Link power management BESL support". The upcoming bug fix patch is also marked for that stable kernel. Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com> Cc: stable@vger.kernel.org
-
- 15 10月, 2013 1 次提交
-
-
由 Jingoo Han 提交于
The non-DT for EXYNOS SoCs is not supported from v3.11. Thus, there is no need to support non-DT for Exynos OHCI driver. The 'include/linux/platform_data/usb-ohci-exynos.h' file has been used for non-DT support. Thus, the 'usb-ohci-exynos.h' file can be removed. Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-