aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-08-01uwb/whci: use correct structure type name in sizeofJulia Lawall1-1/+1
Correct typo in the name of the type given to sizeof. Because it is the size of a pointer that is wanted, the typo has no impact on compilation or execution. This problem was found using Coccinelle (http://coccinelle.lip6.fr/). The semantic patch used can be found in message 0 of this patch series. Signed-off-by: Julia Lawall <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-08-01usb-core bInterval quirkJames P Michels III3-0/+26
This patch adds a usb quirk to support devices with interupt endpoints and bInterval values expressed as microframes. The quirk causes the parse endpoint function to modify the reported bInterval to a standards conforming value. There is currently code in the endpoint parser that checks for bIntervals that are outside of the valid range (1-16 for USB 2+ high speed and super speed interupt endpoints). In this case, the code assumes the bInterval is being reported in 1ms frames. As well, the correction is only applied if the original bInterval value is out of the 1-16 range. With this quirk applied to the device, the bInterval will be accurately adjusted from microframes to an exponent. Signed-off-by: James P Michels III <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-08-01USB: serial: ftdi_sio: Add support for new Xsens devicesPatrick Riphagen2-0/+5
This adds support for new Xsens devices, using Xsens' own Vendor ID. Signed-off-by: Patrick Riphagen <[email protected]> Signed-off-by: Frans Klaver <[email protected]> Cc: Johan Hovold <[email protected]> Cc: stable <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-08-01USB: serial: ftdi_sio: Annotate the current Xsens PID assignmentsPatrick Riphagen1-5/+5
The converters are used in specific products. It can be useful to know which they are exactly. Signed-off-by: Patrick Riphagen <[email protected]> Signed-off-by: Frans Klaver <[email protected]> Cc: Johan Hovold <[email protected]> Cc: stable <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22Merge tag 'for_3.17' of ↵Greg Kroah-Hartman36-134/+2218
git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy into usb-next Kishon writes: for_3.17 Adds regulator support in PHY core. PHY core is modified to support representation of multi-phy PHY providers with each individual PHY as sub-node OF PHY provider node. New PHY drivers adapted to PHY framework (hix5hd2 SATA PHY, QCOM APQ8064 SATA PHY, QCOM IPQ806x SATA PHY, Berlin SATA PHY and MiPHY356x). Existing TI PIPE3 PHY can now be used for PCIe too. Includes misc fixes and cleanups.
2014-07-22usb: chipidea: debug: fix sparse non static symbol warningsWei Yongjun1-2/+2
Fixes the following sparse warnings: drivers/usb/chipidea/debug.c:211:5: warning: symbol 'ci_otg_show' was not declared. Should it be static? drivers/usb/chipidea/debug.c:334:5: warning: symbol 'ci_registers_show' was not declared. Should it be static? Signed-off-by: Wei Yongjun <[email protected]> Signed-off-by: Peter Chen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22usb: ci_hdrc_imx doc: fsl,usbphy is requiredMarkus Pargmann1-1/+1
fsl,usbphy is no optional property. This patch moves it to the list of required properties. Signed-off-by: Markus Pargmann <[email protected]> Signed-off-by: Peter Chen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22usb: ci_hdrc_imx: Return -EINVAL for missing USB PHYMarkus Pargmann1-0/+3
-ENODEV is interpreted by the generic driver probing function as a non-matching driver. This leads to a missing probe failure message. Also a missing USB PHY is more of an invalid configuration of the usb driver because it is necessary. This patch returns -EINVAL if devm_usb_get_phy_by_phandle() returned -ENODEV. Signed-off-by: Markus Pargmann <[email protected]> Signed-off-by: Peter Chen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22usb: core: allow zero packet flag for interrupt urbsAmit Virdi1-0/+1
Section 4.4.7.2 "Interrupt Transfer Bandwidth Requirements" of the USB3.0 spec says: A zero-length data payload is a valid transfer and may be useful for some implementations. So, extend the logic of allowing URB_ZERO_PACKET to interrupt urbs too. Otherwise, the kernel throws warning of BOGUS transfer flags. Signed-off-by: Amit Virdi <[email protected]> Acked-by: Hans de Goede <[email protected]> Acked-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22usb: lvstest: Fix sparse warnings generated by kbuild test botPratyush Anand1-2/+2
Following sparse warnings were reported by kbuild test bot drivers/usb/misc/lvstest.c:314:28: sparse: incorrect type in assignment (different base types) drivers/usb/misc/lvstest.c:314:28: expected unsigned short [unsigned] [usertype] portchange drivers/usb/misc/lvstest.c:314:28: got restricted __le16 [usertype] wPortChange drivers/usb/misc/lvstest.c:332:40: sparse: restricted __le16 degrades to integer This patch fixes above warnings. Reported-by: kbuild test robot <[email protected]> Signed-off-by: Pratyush Anand <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22USB: core: hcd-pci: free IRQ before disabling PCI device when shutting downJiang Liu1-0/+2
The assigned IRQ should be freed before calling pci_disable_device() when shutting down system, otherwise it will cause following warning. [ 568.879482] ------------[ cut here ]------------ [ 568.884236] WARNING: CPU: 1 PID: 3300 at /home/konrad/ssd/konrad/xtt-i386/bootstrap/linux-usb/fs/proc/generic.c:521 remove_proc_entry+0x165/0x170() [ 568.897846] remove_proc_entry: removing non-empty directory 'irq/16', leaking at least 'ohci_hcd:usb4' [ 568.907430] Modules linked in: dm_multipath dm_mod iscsi_boot_sysfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi libcrc32c crc32c_generic sg sd_mod crct10dif_generic crc_t10dif crct10dif_common radeon fbcon tileblit ttm font bitblit softcursor ata_generic ahci libahci drm_kms_helper skge r8169 libata mii scsi_mod wmi acpi_cpufreq [ 568.938539] CPU: 1 PID: 3300 Comm: init Tainted: G W 3.16.0-rc5upstream-01651-g03b9189 #1 [ 568.947946] Hardware name: ECS A780GM-A Ultra/A780GM-A Ultra, BIOS 080015 04/01/2010 [ 568.956008] 00000209 ed0f1cd0 c1617946 c175403c ed0f1d00 c1090c3f c1754084 ed0f1d2c [ 568.964068] 00000ce4 c175403c 00000209 c11f22a5 c11f22a5 f755e8c0 ed0f1d78 f755e90d [ 568.972128] ed0f1d18 c1090cde 00000009 ed0f1d10 c1754084 ed0f1d2c ed0f1d60 c11f22a5 [ 568.980194] Call Trace: [ 568.982715] [<c1617946>] dump_stack+0x48/0x60 [ 568.987294] [<c1090c3f>] warn_slowpath_common+0x7f/0xa0 [ 569.003887] [<c1090cde>] warn_slowpath_fmt+0x2e/0x30 [ 569.009092] [<c11f22a5>] remove_proc_entry+0x165/0x170 [ 569.014476] [<c10da6ca>] unregister_irq_proc+0xaa/0xc0 [ 569.019858] [<c10d582f>] free_desc+0x1f/0x60 [ 569.024346] [<c10d58aa>] irq_free_descs+0x3a/0x80 [ 569.029283] [<c10d9e9d>] irq_dispose_mapping+0x2d/0x50 [ 569.034666] [<c1078fd3>] mp_unmap_irq+0x73/0xa0 [ 569.039423] [<c107196b>] acpi_unregister_gsi_ioapic+0x2b/0x40 [ 569.045431] [<c107180f>] acpi_unregister_gsi+0xf/0x20 [ 569.050725] [<c1339cad>] acpi_pci_irq_disable+0x4b/0x50 [ 569.056196] [<c14daa38>] pcibios_disable_device+0x18/0x20 [ 569.061848] [<c130123d>] do_pci_disable_device+0x4d/0x60 [ 569.067410] [<c13012b7>] pci_disable_device+0x47/0xb0 [ 569.077814] [<c14800b1>] usb_hcd_pci_shutdown+0x31/0x40 [ 569.083285] [<c1304b19>] pci_device_shutdown+0x19/0x50 [ 569.088667] [<c13fda64>] device_shutdown+0x14/0x120 [ 569.093777] [<c10ac29d>] kernel_restart_prepare+0x2d/0x30 [ 569.099429] [<c10ac41e>] kernel_restart+0xe/0x60 [ 569.109028] [<c10ac611>] SYSC_reboot+0x191/0x220 [ 569.159269] [<c10ac6ba>] SyS_reboot+0x1a/0x20 [ 569.163843] [<c161c718>] sysenter_do_call+0x12/0x16 [ 569.168951] ---[ end trace ccc1ec4471c289c9 ]--- Tested-by: Aaron Lu <[email protected]> Signed-off-by: Jiang Liu <[email protected]> Reviewed-by: Huang Rui <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-22phy: miphy365x: Represent each PHY channel as a DT subnodeLee Jones1-118/+138
This has the added advantages of being able to enable/disable each of the channels as simply as enabling/disabling the DT node. Suggested-by: Kishon Vijay Abraham I <[email protected]> Signed-off-by: Lee Jones <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: miphy365x: Provide support for the MiPHY356x Generic PHYLee Jones3-0/+627
The MiPHY365x is a Generic PHY which can serve various SATA or PCIe devices. It has 2 ports which it can use for either; both SATA, both PCIe or one of each in any configuration. Acked-by: Mark Rutland <[email protected]> Signed-off-by: Alexandre Torgue <[email protected]> Signed-off-by: Lee Jones <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: miphy365x: Add Device Tree bindings for the MiPHY365xLee Jones1-0/+76
The MiPHY365x is a Generic PHY which can serve various SATA or PCIe devices. It has 2 ports which it can use for either; both SATA, both PCIe or one of each in any configuration. Acked-by: Mark Rutland <[email protected]> Acked-by: Alexandre Torgue <[email protected]> Signed-off-by: Lee Jones <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: qcom: Add device tree bindings for IPQ806x SATA PHYKumar Gala1-0/+23
Add binding spec for Qualcomm SoC PHYs, starting with the SATA PHY on the IPQ806x family of SoCs. Signed-off-by: Kumar Gala <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: qcom: Add driver for QCOM IPQ806x SATA PHYKumar Gala3-0/+219
Add a PHY driver for uses with AHCI based SATA controller driver on the IPQ806x family of SoCs. Signed-off-by: Kumar Gala <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: qcom-apq8064: fix possible timeout without checkSrinivas Kandagatla1-1/+1
This patch fixes a possible timeout in poll loop without actually checking the register before return. In theory the there is a possibility of loop being scheduled after a long lock/delay, which would then force the loop to exit without actually checking the register. Reported-by: Bartlomiej Zolnierkiewicz <[email protected]> Signed-off-by: Srinivas Kandagatla <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: core: Let node ptr of PHY point to PHY and not of PHY providerKishon Vijay Abraham I18-31/+52
In case of multi-phy PHY providers, each PHY should be modeled as a sub node of the PHY provider. Then each PHY will have a different node pointer (node pointer of sub node) than that of PHY provider. Added this provision in the PHY core. Also fixed all drivers to use the updated API. Signed-off-by: Kishon Vijay Abraham I <[email protected]> Acked-by: Lee Jones <[email protected]>
2014-07-22phy: core: Fix of_phy_provider_lookup to return PHY provider for sub nodeKishon Vijay Abraham I1-0/+5
Fixed of_phy_provider_lookup to return 'phy_provider' if _of_phy_get passes the node pointer of the sub-node of phy provider node. This is needed when phy provider implements multiple PHYs and each PHY is modelled as the sub-node of PHY provider device node. Signed-off-by: Kishon Vijay Abraham I <[email protected]> Acked-by: Lee Jones <[email protected]>
2014-07-22Documentation: bindings: add the Berlin SATA PHYAntoine Ténart1-0/+34
The Berlin SATA PHY drives the PHY related to the SATA interface. Add the corresponding documentation. Signed-off-by: Antoine Ténart <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: add a driver for the Berlin SATA PHYAntoine Ténart3-0/+292
The Berlin SoC has a two SATA ports. Add a PHY driver to handle them. The mode selection can let us think this PHY can be configured to fit other purposes. But there are reasons to think the SATA mode will be the only one usable: the PHY registers are only accessible indirectly through two registers in the SATA range, the PHY seems to be integrated and no information tells us the contrary. For these reasons, make the driver a SATA PHY driver. Signed-off-by: Antoine Ténart <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: Remove ARCH_KIRKWOOD dependencyAndrew Lunn1-1/+1
mach-kirkwood has been removed, now that kirkwood lives in mach-mvebu. Depend on MACH_KIRKWOOD, which will be set when these SoCs are built as part of mach-mvebv. Signed-off-by: Andrew Lunn <[email protected]> Cc: Kishon Vijay Abraham I <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: qcom: Add APQ8064 SATA PHY device tree bindingsSrinivas Kandagatla1-0/+24
This patch adds binding spec for Qualcomm AP8064 SATA PHY. Signed-off-by: Srinivas Kandagatla <[email protected]> Tested-by: Kiran Padwal <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: qcom: Add driver for QCOM APQ8064 SATA PHYSrinivas Kandagatla3-0/+296
Add a PHY driver for uses with AHCI based SATA controller driver on the APQ8064 family of SoCs. This patch is a forward port from Qualcomm's v3.4 andriod kernel. Tested on IFC6410 board. CC: Sujit Reddy Thumma <[email protected]> Tested-by: Kiran Padwal <[email protected]> Signed-off-by: Srinivas Kandagatla <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: Kconfig: Update config for Exynos USB DRDSachin Kamat1-0/+2
USB DWC3 driver on Exynos platform does not work without its corresponding phy driver. Hence make the PHY driver depend on Exynos DWC3 driver and default it to yes to make things easier for the end user. Signed-off-by: Sachin Kamat <[email protected]> Reviewed-by: Jingoo Han <[email protected]> Tested-by: Vivek Gautam <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: Kconfig: Re-organize Exynos USB 2.0 PHY configsSachin Kamat1-24/+11
Since the USB 2.0 PHYs are required with EHCI/OHCI USB drivers and USB gadget controller supported by the DWC2 gadget driver, make it depend on them and default to ARCH_EXYNOS as they are meant for Exynos platforms. Also, make the sub-drivers silent options enabling them based on the SoC platforms that they are meant to work with. This will make life easier for end users who do not have any way knowing the dependencies. Signed-off-by: Sachin Kamat <[email protected]> Reviewed-by: Jingoo Han <[email protected]> Tested-by: Vivek Gautam <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: core: Add phy-supply to DT binding documentationRoger Quadros1-0/+4
phy-supply is a phandle to the regulator that provides power to the PHY. This regulator is managed during the PHY power on/off sequence by the phy core driver. Signed-off-by: Roger Quadros <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: core: Support regulator supply for PHY powerRoger Quadros2-0/+28
Some PHYs can be powered by an external power regulator. e.g. USB_HS PHY on DRA7 SoC. Make the PHY core support a power regulator. Signed-off-by: Roger Quadros <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22drivers: phy: exynos-usb2: add support for Exynos 3250Marek Szyprowski5-8/+31
This patch adds support for Exynos3250 SoC to Exynos2USB PHY driver. Although Exynos3250 has only one device phy interface, the register layout and all operations that are required to get it enabled are almost same as on Exynos4x12. The only different is one more register (REFCLKSEL) which need to be set and lack of MODE SWITCH register. Signed-off-by: Marek Szyprowski <[email protected]> Reviewed-by: Tomasz Figa <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: add hix5hd2-sata-phy driverJiancheng Xue3-0/+201
Add hix5hd2-sata-phy driver on Hisilicon hix5hd2 soc. Signed-off-by: Jiancheng Xue <[email protected]> Signed-off-by: Zhangfei Gao <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22Documentation: Document Hisilicon hix5hd2 sata PHYJiancheng Xue1-0/+22
Add necessary binding documentation SATA PHY on Hisilicon hix5hd2 soc. Signed-off-by: Jiancheng Xue <[email protected]> Signed-off-by: Zhangfei Gao <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: pipe3: insert delay to enumerate in GEN2 modeKishon Vijay Abraham I4-7/+71
8-bit delay value (0xF1) is required for GEN2 devices to be enumerated consistently. Added an API to be called from PHY drivers to set this delay value and called it from PIPE3 driver to set the delay value. Signed-off-by: Kishon Vijay Abraham I <[email protected]> Reviewed-by: Roger Quadros <[email protected]>
2014-07-22phy: phy-omap-pipe3: Add support for PCIe PHYKishon Vijay Abraham I2-23/+91
PCIe PHY uses an external pll instead of the internal pll used by SATA and USB3. So added support in pipe3 PHY to use external pll. Signed-off-by: Kishon Vijay Abraham I <[email protected]> Reviewed-by: Roger Quadros <[email protected]>
2014-07-22phy: phy-samsung-usb2: Change phy power on/power off sequenceKamil Debski3-40/+77
The Exynos4412 USB 2.0 PHY hardware differs from the description provided in the documentation. Some register bits have different function. This patch fixes the defines of register bits and changes the way how phys are powered on and off. Signed-off-by: Kamil Debski <[email protected]> Tested-by: Daniel Drake <[email protected]> Tested-by: Marek Szyprowski <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: exynos5-usbdrd: Make local functions staticJingoo Han1-3/+3
Make local functions static, because these are used only in this file. Signed-off-by: Jingoo Han <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: sun4i-usb: Use PTR_ERR_OR_ZEROSachin Kamat1-3/+2
PTR_ERR_OR_ZERO simplifies the code. Signed-off-by: Sachin Kamat <[email protected]> Cc: Maxime Ripard <[email protected]> Acked-by: Hans de Goede <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: exynos-mipi-video: Use PTR_ERR_OR_ZEROSachin Kamat1-3/+2
PTR_ERR_OR_ZERO simplifies the code. Signed-off-by: Sachin Kamat <[email protected]> Cc: Sylwester Nawrocki <[email protected]> Acked-by: Hans de Goede <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: exynos-dp-video: Use PTR_ERR_OR_ZEROSachin Kamat1-3/+2
PTR_ERR_OR_ZERO simplifies the code. Signed-off-by: Sachin Kamat <[email protected]> Cc: Jingoo Han <[email protected]> Acked-by: Hans de Goede <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-22phy: miphy365x: Add MiPHY365x header file for DT x Driver definesLee Jones1-0/+14
This provides the shared header file which will be reference from both the MiPHY365x driver and its associated Device Tree node(s). Cc: Kishon Vijay Abraham I <[email protected]> Acked-by: Mark Rutland <[email protected]> Acked-by: Alexandre Torgue <[email protected]> Signed-off-by: Lee Jones <[email protected]> Signed-off-by: Kishon Vijay Abraham I <[email protected]>
2014-07-21Merge tag 'usb-for-v3.17' of ↵Greg Kroah-Hartman159-4938/+7024
git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next Felipe writes: usb: patches for v3.17 merge window Surprisingly enough, while a big set of patches, the majority is composed of cleanups (using devm_*, fixing sparse errors, moving code around, adding const, etc). The highlights are addition of new support for PLX USB338x devices, and support for USB 2.0-only configurations of the DWC3 IP core. Signed-of-by: Felipe Balbi <[email protected]>
2014-07-18USB: OHCI: add check for stopped frame counterAlan Stern2-2/+35
This patch adds an extra check to ohci-hcd's I/O watchdog routine. If the controller stops updating the frame counter, we will assume it is dead. But there has to be an exception: Some controllers stop the frame counter when no ports are connected. Check to make sure there is at least one active port before deciding the controller is dead. (This test may appear racy, but it isn't. Enabling a newly connected port takes several milliseconds, during which time the frame counter must advance.) Signed-off-by: Alan Stern <[email protected]> Tested-by: Dennis New <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18USB: OHCI: add I/O watchdog for orphan TDsAlan Stern5-0/+148
Some OHCI controllers have a bug: They fail to add completed TDs to the done queue. Examining this queue is the only method ohci-hcd has for telling when a transfer is complete; failure to add a TD can result in an URB that never completes and cannot be unlinked. This patch adds a watchdog routine to ohci-hcd. The routine periodically scans the active ED and TD lists, looking for TDs which are finished but not on the done queue. When one is found, and it is certain that the controller hardware will never add the TD to the done queue, the watchdog routine manually puts the TD on the done list so that it can be handled normally. The watchdog routine also checks for a condition indicating the controller has died. If the done queue is non-empty but the HccaDoneHead pointer hasn't been updated for a few hundred milliseconds, we assume the controller will never update it and therefore is dead. Signed-off-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18USB: OHCI: make URB completions single-threadedAlan Stern4-12/+34
URBs for a particular endpoint should complete sequentially. That is, we shouldn't call the completion handler for one URB until the handler for the previous URB has returned. When the OHCI watchdog routine is added, there will be two paths for completing URBs: interrupt handler and watchdog routine. Their activities have to be synchronized so that completions don't occur in multiple threads concurrently. For that purpose, this patch creates an ohci_work() routine which will be responsible for calling process_done_list() and finish_unlinks(), the two routines that detect when an URB is complete. Everything will funnel through ohci_work(), and it will be careful not to run in more than one thread at a time. Signed-off-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18USB: OHCI: redesign the TD done listAlan Stern4-58/+70
This patch changes the way ohci-hcd handles the TD done list. In addition to relying on the TD pointers stored by the controller hardware, we need to handle TDs that the hardware has forgotten about. This means the list has to exist even while the dl_done_list() routine isn't running. That function essentially gets split in two: update_done_list() reads the TD pointers stored by the hardware and adds the TDs to the done list, and process_done_list() scans through the list to handle URB completions. When we detect a TD that the hardware forgot about, we will be able to add it to the done list manually and then process it normally. Since the list is really a queue, and because there can be a lot of TDs, keep the existing singly linked implementation. To insure that URBs are given back in order of submission, whenever a TD is added to the done list, all the preceding TDs for the same endpoint must be added as well (going back to the first one that isn't already on the done list). The done list manipulations must all be protected by the private lock. The scope of the lock is expanded in preparation for the watchdog routine to be added in a later patch. We have to be more careful about giving back unlinked URBs. Since TDs may be added to the done list by the watchdog routine and not in response to a controller interrupt, we have to check explicitly to make sure all the URB's TDs that were added to the done list have been processed before giving back the URB. Signed-off-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18USB: OHCI: no shortcut for unlinking URBS from a dead controllerAlan Stern1-14/+8
When an URB is unlinked from a dead controller, ohci-hcd gives back the URB with no regard for cleaning up the internal data structures. This won't play nicely with the upcoming changes to the TD done list. Therefore make ohci_urb_dequeue() call finish_unlinks(), which uses td_done() to do a proper cleanup, rather than calling finish_urb() directly. Also, remove the checks that urb_priv is non-NULL; the driver guarantees that urb_priv will never be NULL for a valid URB. Signed-off-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18USB: OHCI: revert the ZF Micro orphan-TD quirkAlan Stern3-160/+5
This patch reverts the important parts of commit 89a0fd18a96e (USB: OHCI handles more ZFMicro quirks), namely, the parts related to handling orphan TDs for interrupt endpoints. A later patch in this series will introduce a more general mechanism that applies to all endpoint types and all controllers. Signed-off-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18USB: Fix persist resume of some SS USB devicesPratyush Anand1-0/+41
Problem Summary: Problem has been observed generally with PM states where VBUS goes off during suspend. There are some SS USB devices which take longer time for link training compared to many others. Such devices fail to reconnect with same old address which was associated with it before suspend. When system resumes, at some point of time (dpm_run_callback-> usb_dev_resume->usb_resume->usb_resume_both->usb_resume_device-> usb_port_resume) SW reads hub status. If device is present, then it finishes port resume and re-enumerates device with same address. If device is not present then, SW thinks that device was removed during suspend and therefore does logical disconnection and removes all the resource allocated for this device. Now, if I put sufficient delay just before root hub status read in usb_resume_device then, SW sees always that device is present. In normal course(without any delay) SW sees that no device is present and then SW removes all resource associated with the device at this port. In the latter case, after sometime, device says that hey I am here, now host enumerates it, but with new address. Problem had been reproduced when I connect verbatim USB3.0 hard disc with my STiH407 XHCI host running with 3.10 kernel. I see that similar problem has been reported here. https://bugzilla.kernel.org/show_bug.cgi?id=53211 Reading above it seems that bug was not in 3.6.6 and was present in 3.8 and again it was not present for some in 3.12.6, while it was present for few others. I tested with 3.13-FC19 running at i686 desktop, problem was still there. However, I was failed to reproduce it with 3.16-RC4 running at same i686 machine. I would say it is just a random observation. Problem for few devices is always there, as I am unable to find a proper fix for the issue. So, now question is what should be the amount of delay so that host is always able to recognize suspended device after resume. XHCI specs 4.19.4 says that when Link training is successful, port sets CSC bit to 1. So if SW reads port status before successful link training, then it will not find device to be present. USB Analyzer log with such buggy devices show that in some cases device switch on the RX termination after long delay of host enabling the VBUS. In few other cases it has been seen that device fails to negotiate link training in first attempt. It has been reported till now that few devices take as long as 2000 ms to train the link after host enabling its VBUS and RX termination. This patch implements a 2000 ms timeout for CSC bit to set ie for link training. If in a case link trains before timeout, loop will exit earlier. This patch implements above delay, but only for SS device and when persist is enabled. So, for the good device overhead is almost none. While for the bad devices penalty could be the time which it take for link training. But, If a device was connected before suspend, and was removed while system was asleep, then the penalty would be the timeout ie 2000 ms. Results: Verbatim USB SS hard disk connected with STiH407 USB host running 3.10 Kernel resumes in 461 msecs without this patch, but hard disk is assigned a new device address. Same system resumes in 790 msecs with this patch, but with old device address. Cc: <[email protected]> Signed-off-by: Pratyush Anand <[email protected]> Acked-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18usb-core: Remove Fix mes in file hcd.cNicholas Krause1-4/+0
I am removing two fix mes in this file as after dicussing then it seems there is no reason to check against Null for usb_device as it can never be NULL and this is check is therefore not needed. Signed-off-by: Nicholas Krause <[email protected]> Acked-by: Alan Stern <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-18usbcore: don't log on consecutive debounce failures of the same portOliver Neukum1-3/+8
Some laptops have an internal port for a BT device which picks up noise when the kill switch is used, but not enough to trigger printk_rlimit(). So we shouldn't log consecutive faults of this kind. Signed-off-by: Oliver Neukum <[email protected]> Cc: stable <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-17USB: serial: cp210x: Removing unncessary `usb_reset_device` on startupPreston Fick1-3/+0
This `usb_reset_device` command has been around since the driver was originally reverse engineered. It doesn't cause much issue on single interface CP210x devices, but on the CP2105 and CP2108 with 2 and 4 interfaces respectively it will cause instability on enumeration and delays enumeration noticably. There should be no reason to reset a device at startup, per the CP210x AN571 spec. Signed-off-by: Preston Fick <[email protected]> Cc: Johan Hovold <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>