firefly-linux-kernel-4.4.55.git
10 years agoMerge tag 'for_3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux...
Greg Kroah-Hartman [Sun, 9 Mar 2014 18:16:38 +0000 (11:16 -0700)]
Merge tag 'for_3.15' of git://git./linux/kernel/git/kishon/linux-phy into usb-next

Kishon writes:

Add new PHY drivers for SATA and USB in exynos, for USB in sunxi,
and a multi-purpose PHY in APM, all adapted to generic PHY framework.
Adapted USB3 PHY driver in OMAP to generic PHY driver and also used
the same driver for SATA in OMAP. It also includes miscellaneous cleanups
and fixes.

10 years agoPHY: add APM X-Gene SoC 15Gbps Multi-purpose PHY driver
Loc Ho [Fri, 7 Mar 2014 17:28:08 +0000 (10:28 -0700)]
PHY: add APM X-Gene SoC 15Gbps Multi-purpose PHY driver

This patch adds support for the APM X-Gene SoC 15Gbps Multi-purpose PHY.
This is the physical layer interface for the corresponding host
controller. Currently, only external clock and Gen3 SATA mode
are supported.

Signed-off-by: Loc Ho <lho@apm.com>
Signed-off-by: Tuan Phan <tphan@apm.com>
Signed-off-by: Suman Tripathi <stripathi@apm.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agoDocumentation: Add APM X-Gene SoC 15Gbps Multi-purpose PHY driver binding documentation
Loc Ho [Fri, 7 Mar 2014 17:28:07 +0000 (10:28 -0700)]
Documentation: Add APM X-Gene SoC 15Gbps Multi-purpose PHY driver binding documentation

This patch adds the APM X-Gene SoC 15Gbps Multi-purpose PHY driver binding
documentation.

Signed-off-by: Loc Ho <lho@apm.com>
Signed-off-by: Tuan Phan <tphan@apm.com>
Signed-off-by: Suman Tripathi <stripathi@apm.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: omap: Depend on OMAP_OCP2SCP bus driver
Roger Quadros [Thu, 6 Mar 2014 14:38:45 +0000 (16:38 +0200)]
phy: omap: Depend on OMAP_OCP2SCP bus driver

The OMAP_USB2 and OMAP_PIPE3 PHY devices will not be
detected if the OMAP_OCP2SCP bus driver is not present.
Make them depend on it.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: ti-pipe3: Fix suspend/resume and module reload
Roger Quadros [Thu, 6 Mar 2014 14:38:44 +0000 (16:38 +0200)]
phy: ti-pipe3: Fix suspend/resume and module reload

Due to Errata i783, SATA breaks if its DPLL is idled. The recommeded
workaround to issue a softreset to the SATA controller doesn't seem to
work. Here we just prevent SATA DPLL from Idling and hence avoid
the issue altogether.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: ti-pipe3: streamline PHY operations
Roger Quadros [Thu, 6 Mar 2014 14:38:43 +0000 (16:38 +0200)]
phy: ti-pipe3: streamline PHY operations

Limit .power_on() and .power_off() to just control the
PHY power and not the DPLL. The DPLL will be enabled
in .init() and idled in .exit().

Don't reprogram the DPLL if it has been already locked
by the bootloader. This fixes a problem with SATA, where
it fails if SATA was used by the bootloader.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: ti-pipe3: Don't get 'wkupclk' and 'refclk' for SATA PHY
Roger Quadros [Thu, 6 Mar 2014 14:38:42 +0000 (16:38 +0200)]
phy: ti-pipe3: Don't get 'wkupclk' and 'refclk' for SATA PHY

SATA PHY doesn't need 'wkupclk; and 'refclk' so don't
try to get them for SATA PHY.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: ti-pipe3: Add SATA DPLL support
Roger Quadros [Fri, 7 Mar 2014 06:13:39 +0000 (11:43 +0530)]
phy: ti-pipe3: Add SATA DPLL support

USB and SATA DPLLs need different settings. Provide
the SATA DPLL settings and use the proper DPLL settings
based on device tree node's compatible_id.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: ti-pipe3: cleanup clock handling
Roger Quadros [Fri, 7 Mar 2014 05:57:09 +0000 (11:27 +0530)]
phy: ti-pipe3: cleanup clock handling

As this driver is no longer USB specific, use generic clock names.
- Fix PLL_SD_SHIFT from 9 to 10
- Don't separate prepare/unprepare clock from enable/disable. This
  ensures optimal power savings.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: omap-control: update dra7 and am437 usb2 bindings
Roger Quadros [Fri, 7 Mar 2014 05:48:00 +0000 (11:18 +0530)]
phy: omap-control: update dra7 and am437 usb2 bindings

The dra7-usb2 and am437-usb2 bindings have not yet been used.
Change them to be more elegant.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: rename struct omap_control_usb to struct omap_control_phy
Kishon Vijay Abraham I [Thu, 6 Mar 2014 14:38:37 +0000 (16:38 +0200)]
phy: rename struct omap_control_usb to struct omap_control_phy

Rename struct omap_control_usb to struct omap_control_phy since it can
be used to control PHY of USB, SATA and PCIE. Also move the driver and
include files under *phy* and made the corresponding changes in the users
of phy-omap-control.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Acked-by: Felipe Balbi <balbi@ti.com>
10 years agophy: omap-usb2: Add different compatible for OMAP5
George Cherian [Thu, 6 Mar 2014 12:41:54 +0000 (18:11 +0530)]
phy: omap-usb2: Add different compatible for OMAP5

Add a new compatible for OMAP5 since it does not use any of the
OTG operations as of now.
HAS_SRP and SET_VBUS functionalities are used only for OMAP4.

Signed-off-by: George Cherian <george.cherian@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: omap-usb2: Provide workaround for USB2PHY false disconnect
Austin Beam [Thu, 6 Mar 2014 12:41:53 +0000 (18:11 +0530)]
phy: omap-usb2: Provide workaround for USB2PHY false disconnect

Enable the dra7x errata workaround for false disconnect problem
with USB2PHY. False disconnects were detected with some of the devices.
Reduce the sensitivity of the disconnect logic within the USB2PHY subsystem
to enusre these false disconnects are not registered.

[george.cherian@ti.com]
While at that, pass proper flags for each SoC's. This is a common driver
used across OMAP4,OMAP5,DRA7xx and AM437x USB2PHY.

False disconnect workaround is currently applicable for only DRA7x.

Signed-off-by: Austin Beam <austinbeam@ti.com>
Signed-off-by: George Cherian <george.cherian@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: omap-usb2: Adapt phy-omap-usb2 for AM437x
George Cherian [Thu, 6 Mar 2014 12:41:52 +0000 (18:11 +0530)]
phy: omap-usb2: Adapt phy-omap-usb2 for AM437x

Adapt phy-omap-usb2 driver for AM437x.
- Add new comaptible "ti,am437x-usb2" for AM437x
- Pass proper data to differentiate AM437x and others.
- AM437x doesnot support  set_vbus and start_srp.

Signed-off-by: George Cherian <george.cherian@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agousb: wusbcore: use multiple urbs for HWA iso transfer result frame reads
Thomas Pugliese [Fri, 7 Mar 2014 21:37:35 +0000 (15:37 -0600)]
usb: wusbcore: use multiple urbs for HWA iso transfer result frame reads

Submit multiple concurrent urbs for HWA isochronous transfer result data
frame reads.  This keeps the read pipeline full and significantly
improves performance in cases where the frame reads cannot be combined
because they are not contiguous or multiples of the max packet size.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years agousb: wusbcore: combine iso transfer result frame reads when possible
Thomas Pugliese [Fri, 7 Mar 2014 21:37:34 +0000 (15:37 -0600)]
usb: wusbcore: combine iso transfer result frame reads when possible

When reading the transfer result data for an isochronous in request, if
the current frame actual_length is contiguous with the next frame and
actual_length is a multiple of the DTI endpoint max packet size, combine
the current frame with the next frame in a single URB.  This reduces the
number of URBs that must be submitted in that case which increases
performance and reduces CPU interrupt overhead.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years agophy: Add Exynos 5250 support to the Exynos USB 2.0 PHY driver
Kamil Debski [Thu, 6 Mar 2014 11:16:49 +0000 (12:16 +0100)]
phy: Add Exynos 5250 support to the Exynos USB 2.0 PHY driver

Add support for Exynos 5250. This driver is to replace the old
USB 2.0 PHY driver.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: Add new Exynos USB 2.0 PHY driver
Kamil Debski [Thu, 6 Mar 2014 11:16:48 +0000 (12:16 +0100)]
phy: Add new Exynos USB 2.0 PHY driver

Add a new driver for the Exynos USB 2.0 PHY. The new driver uses the generic
PHY framework. The driver includes support for the Exynos 4x10 and 4x12
SoC families.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: core: Add devm_of_phy_get to phy-core
Kamil Debski [Thu, 6 Mar 2014 11:16:47 +0000 (12:16 +0100)]
phy: core: Add devm_of_phy_get to phy-core

Adding devm_of_phy_get will allow to get phys by supplying a
pointer to the struct device_node instead of struct device.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: core: Add an exported of_phy_get function
Kamil Debski [Thu, 6 Mar 2014 11:16:46 +0000 (12:16 +0100)]
phy: core: Add an exported of_phy_get function

Previously the of_phy_get function took a struct device * and
was declared static. It was impossible to call it from
another driver and thus it was impossible to get phy defined
for a given node. The old function was renamed to _of_phy_get
and was left for internal use. of_phy_get function was added
and it was exported. The function enables to get a phy for
a given device tree node.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agoMerge tag 'usb-for-v3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi...
Greg Kroah-Hartman [Sat, 8 Mar 2014 00:47:36 +0000 (16:47 -0800)]
Merge tag 'usb-for-v3.15' of git://git./linux/kernel/git/balbi/usb into usb-next

Felipe writes:

usb: patches for v3.15

another substantial pull request with new features all over
the place.

dwc3 got a bit closer towards hibernation support with after
a few patches re-factoring code to be reused for hibernation.
Also in dwc3 two new workarounds for known silicon bugs have
been implemented, some randconfig build errors have been fixed,
and it was taught about the new generic phy layer.

MUSB on AM335x now supports isochronous transfers thanks to
George Cherian's work.

The atmel_usba driver got two crash fixes: one when no endpoint
was specified in DeviceTree data and another when stopping the UDC
in DEBUG builds.

Function FS got a much needed fix to ffs_epfile_io() which was
copying too much data to userspace in some cases.

The printer gadget got a fix for a possible deadlock and plugged
a memory leak.

Ethernet drivers now use NAPI for RX which gives improved throughput.

Other than that, the usual miscelaneous fixes, cleanups, and
the like.

Signed-of-by: Felipe Balbi <balbi@ti.com>
10 years agoMerge tag 'for-usb-next-2014-03-06' of git://git.kernel.org/pub/scm/linux/kernel...
Greg Kroah-Hartman [Fri, 7 Mar 2014 20:53:41 +0000 (12:53 -0800)]
Merge tag 'for-usb-next-2014-03-06' of git://git./linux/kernel/git/sarah/xhci into usb-next

Sarah writes:

xhci: Streams and UAS cleanups, misc cleanups for 3.15

Hi Greg,

Here's 76 patches to queue to usb-next for 3.15.

The bulk of this rather large pull request is the UAS driver cleanup, the
xHCI streams fixes, and the new userspace API for usbfs to be able to use
and alloc/free bulk streams.  I've hammered on these changes, and the UAS
driver seems solid.  The performance numbers are pretty spiffy too:

root@xanatos:~# echo 3 > /proc/sys/vm/drop_caches; dd if=/dev/sdb of=/dev/null bs=4k count=1000M iflag=count_bytes
256000+0 records in
256000+0 records out
1048576000 bytes (1.0 GB) copied, 3.28557 s, 319 MB/s

That's about 100 MB/s faster than my fastest Bulk-only-Transport mass
storage drive.

There's a couple of miscellaneous cleanup patches and non-urgent bug fixes
in here as well:

7969943789df xhci: add the meaningful IRQ description if it is empty
bcffae7708eb xhci: Prevent runtime pm from autosuspending during initialization
e587b8b270d3 xhci: make warnings greppable
25cd2882e2fc usb/xhci: Change how we indicate a host supports Link PM.

Sarah Sharp

10 years agousb: wusbcore: disable transfer notifications for Alereon HWAs
Thomas Pugliese [Thu, 6 Mar 2014 18:53:37 +0000 (12:53 -0600)]
usb: wusbcore: disable transfer notifications for Alereon HWAs

The HWA driver does not do anything with transfer notifications after
receiving the first one and the Alereon HWA allows them to be disabled
as a performance optimization.  This patch sends a vendor specific
command to the Alereon HWA on startup to disable transfer notifications.
If the command is successful, the DTI system is started immediately
since that would normally be started upon the first reception of a
transfer notification which will no longer be sent.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years agousb: wusbcore: don't mark WA_SEG_DTI_PENDING segs as done in urb_dequeue
Thomas Pugliese [Tue, 4 Mar 2014 17:24:56 +0000 (11:24 -0600)]
usb: wusbcore: don't mark WA_SEG_DTI_PENDING segs as done in urb_dequeue

Data for transfer segments in the WA_SEG_DTI_PENDING state is actively
being read by the driver.  Let the buffer read callback handle the
transfer cleanup since cleaning it up in wa_urb_dequeue will cause the
read callback to access invalid memory if the transfer is completed.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years agousb: wusbcore: fix potential double list_del on urb dequeue
Thomas Pugliese [Tue, 4 Mar 2014 17:24:55 +0000 (11:24 -0600)]
usb: wusbcore: fix potential double list_del on urb dequeue

This patch locks rpipe->seg_lock around the entire transfer segment
cleanup loop in wa_urb_dequeue instead of just one case of the switch
statement.  This fixes a race between __wa_xfer_delayed_run and
wa_urb_dequeue where a transfer segment in the WA_SEG_DELAYED state
could be removed from the rpipe seg_list twice leading to memory
corruption.  It also switches the spin_lock call to use the non-irqsave
version since the xfer->lock is already held and irqs already disabled.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years agophy: omap-usb2: move omap_usb.h from linux/usb/ to linux/phy/
Kishon Vijay Abraham I [Mon, 3 Mar 2014 11:38:14 +0000 (17:08 +0530)]
phy: omap-usb2: move omap_usb.h from linux/usb/ to linux/phy/

No functional change. Moved omap_usb.h from linux/usb/ to linux/phy/.
Also removed the unused members of struct omap_usb (after phy-omap-pipe3
started using it's own header file)

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agophy: ti-pipe3: Add SATA compatible to Documentation binding
Roger Quadros [Fri, 7 Mar 2014 10:15:03 +0000 (12:15 +0200)]
phy: ti-pipe3: Add SATA compatible to Documentation binding

SATA PHY needs a new compatible ID. Add it to the DT binding documentation.

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agophy: ti-pipe3: Add clocks to PIPE3 PHY Documentation binding
Roger Quadros [Fri, 7 Mar 2014 10:15:02 +0000 (12:15 +0200)]
phy: ti-pipe3: Add clocks to PIPE3 PHY Documentation binding

Add wakeup, system and reference clocks to DT binding documentation.

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agophy: omap-control: update dra7 and am437 usb2 Documentation bindings
Roger Quadros [Fri, 7 Mar 2014 10:15:01 +0000 (12:15 +0200)]
phy: omap-control: update dra7 and am437 usb2 Documentation bindings

The dra7-usb2 and am437-usb2 bindings have not yet been used.
Change them to be more elegant.

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: return the right length in ffs_epfile_io()
Chuansheng Liu [Tue, 4 Mar 2014 07:34:57 +0000 (15:34 +0800)]
usb: gadget: return the right length in ffs_epfile_io()

When the request length is aligned to maxpacketsize, sometimes
the return length ret > the user space requested len.

At that time, we will use min_t(size_t, ret, len) to limit the
size in case of user data buffer overflow.

But we need return the min_t(size_t, ret, len) to tell the user
space rightly also.

[ balbi@ti.com: also fix comment's indentation ]

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Reviewed-by: David Cohen <david.a.cohen@linux.intel.com>
Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: fsm: update OTG HNP state transition conditions according to OTG and EH...
Li Jun [Wed, 26 Feb 2014 23:38:19 +0000 (07:38 +0800)]
usb: phy: fsm: update OTG HNP state transition conditions according to OTG and EH 2.0 spec.

According to:"On-The-Go and Embedded Host Supplement to the USB Revision 2.0
Specification July 27, 2012 Revision 2.0 version 1.1a"
- From a_host to a_wait_bcon if !b_conn
- Add transition from a_host to a_wait_vfall if id state is high or a_bus_drop
- From a_wait_vfall to a_idle if a_wait_vfall_tmout

Signed-off-by: Li Jun <b47624@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: u_ether: move hardware transmit to RX NAPI
Weinn Jheng [Thu, 27 Feb 2014 09:49:00 +0000 (17:49 +0800)]
usb: gadget: u_ether: move hardware transmit to RX NAPI

In order to reduce the interrupt times in the embedded system,
a receiving workqueue is introduced.
This modification also enhanced the overall throughput as the
benefits of reducing interrupt occurrence.

This work was derived from previous work:
u_ether: move hardware transmit to RX workqueue.
Which should be base on codeaurora's work.

However, the benchmark on my platform shows the throughput
with workqueue is slightly better than NAPI.

Signed-off-by: Weinn Jheng <clanlab.proj@gmail.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Stephen Hemminger <shemminger@vyatta.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Manu Gautam <mgautam@codeaurora.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: remove known conditions
Dan Carpenter [Fri, 7 Mar 2014 11:20:22 +0000 (14:20 +0300)]
usb: dwc3: gadget: remove known conditions

We know what "value" is and it upsets static checkers that we appear to
have doubts about it.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: cut and paste fixups in suspend/resume
Dan Carpenter [Fri, 7 Mar 2014 11:19:57 +0000 (14:19 +0300)]
usb: dwc3: gadget: cut and paste fixups in suspend/resume

These were cut and paste from the ->disconnect function.

Fixes commit 30d577b9bcc4 ('usb: dwc3: gadget: call gadget driver's
->suspend/->resume')

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agoxhci: add the meaningful IRQ description if it is empty
Adrian Huang [Thu, 27 Feb 2014 11:26:03 +0000 (11:26 +0000)]
xhci: add the meaningful IRQ description if it is empty

When some xHCI host controllers fall back to use the legacy IRQ,
the member irq_descr of the usb_hcd structure will be empty. This
leads to the empty string of the xHCI host controller in
/proc/interrupts. Here is the example (The irq 19 is the xHCI host
controller):

           CPU0
  0:         91 IO-APIC-edge       timer
  8:          1         IO-APIC-edge       rtc0
  9:       7191         IO-APIC-fasteoi    acpi
 18:        104        IR-IO-APIC-fasteoi  ehci_hcd:usb1, ehci_hcd:usb2
 19:        473      IR-IO-APIC-fasteoi

After applying the patch, the name of the registered xHCI host
controller can be displayed correctly. Here is the example:

           CPU0
  0:         91 IO-APIC-edge       timer
  8:          1         IO-APIC-edge       rtc0
  9:       7191         IO-APIC-fasteoi    acpi
 18:        104        IR-IO-APIC-fasteoi  ehci_hcd:usb1, ehci_hcd:usb2
 19:        473      IR-IO-APIC-fasteoi xhci_hcd:usb3

Tested on v3.14-rc4.

Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
Reviewed-by: Nagananda Chumbalkar <nchumbalkar@lenovo.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agoxhci: Prevent runtime pm from autosuspending during initialization
Mathias Nyman [Mon, 3 Mar 2014 17:30:17 +0000 (19:30 +0200)]
xhci: Prevent runtime pm from autosuspending during initialization

xHCI driver has its own pci probe function that will call usb_hcd_pci_probe
to register its usb-2 bus, and then continue to manually register the
usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and
might thus trigger a runtime suspend before the usb-3 bus is ready.

Prevent the runtime suspend by increasing the usage count in the
beginning of xhci_pci_probe, and decrease it once the usb-3 bus is
ready.

xhci-platform driver is not using usb_hcd_pci_probe to set up
busses and should not need to have it's usage count increased during probe.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: stable@vger.kernel.org
10 years agophy: omap-control: Update DT binding information
Roger Quadros [Thu, 6 Mar 2014 14:38:38 +0000 (16:38 +0200)]
phy: omap-control: Update DT binding information

Move omap-control binding information to the right location.

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: omap-usb2: remove *set_suspend* callback from omap-usb2
Kishon Vijay Abraham I [Mon, 3 Mar 2014 11:38:13 +0000 (17:08 +0530)]
usb: phy: omap-usb2: remove *set_suspend* callback from omap-usb2

Now that omap-usb2 is adapted to the new generic PHY framework,
*set_suspend* ops can be removed from omap-usb2 driver.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
10 years agodrivers: phy: usb3/pipe3: Adapt pipe3 driver to Generic PHY Framework
Kishon Vijay Abraham I [Mon, 3 Mar 2014 11:38:12 +0000 (17:08 +0530)]
drivers: phy: usb3/pipe3: Adapt pipe3 driver to Generic PHY Framework

Adapted omap-usb3 PHY driver to Generic PHY Framework and moved phy-omap-usb3
driver in drivers/usb/phy to drivers/phy and also renamed the file to
phy-ti-pipe3 since this same driver will be used for SATA PHY and
PCIE PHY.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
10 years agousb: gadget: f_fs: Add flags to descriptors block
Michal Nazarewicz [Fri, 28 Feb 2014 11:20:23 +0000 (16:50 +0530)]
usb: gadget: f_fs: Add flags to descriptors block

This reworks the way SuperSpeed descriptors are added and instead of
having a magic after full and high speed descriptors, it reworks the
whole descriptors block to include a flags field which lists which
descriptors are present and makes future extensions possible.

Signed-off-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: f_fs: Add support for SuperSpeed Mode
Manu Gautam [Fri, 28 Feb 2014 11:20:22 +0000 (16:50 +0530)]
usb: gadget: f_fs: Add support for SuperSpeed Mode

Allow userspace to pass SuperSpeed descriptors and
handle them in the driver accordingly.
This change doesn't modify existing desc_header and thereby
keeps the ABI changes backward compatible i.e. existing
userspace drivers compiled with old header (functionfs.h)
would continue to work with the updated kernel.

Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: atmel_usba: fix crashed during stopping when DEBUG is enabled
Gregory CLEMENT [Mon, 3 Mar 2014 16:48:34 +0000 (17:48 +0100)]
usb: gadget: atmel_usba: fix crashed during stopping when DEBUG is enabled

commit 511f3c5 (usb: gadget: udc-core: fix a regression during gadget driver
unbinding) introduced a crash when DEBUG is enabled.

The debug trace in the atmel_usba_stop function made the assumption that the
driver pointer passed in parameter was not NULL, but since the commit above,
such assumption was no longer always true.

This commit now uses the driver pointer stored in udc which fixes this
issue.

[ balbi@ti.com : improved commit log a bit ]

Cc: <stable@vger.kernel.org> # v3.2+
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: atmel_usba: fix crash when no endpoint are specified
Alexandre Belloni [Thu, 27 Feb 2014 15:42:13 +0000 (16:42 +0100)]
usb: gadget: atmel_usba: fix crash when no endpoint are specified

If no endpoints are present in the device tree, the kernel will crash with the
following error:

Unable to handle kernel paging request at virtual address 00101008
[...]
[<c0222ff4>] (composite_dev_prepare) from [<c022326c>] (composite_bind+0x5c/0x190)
[<c022326c>] (composite_bind) from [<c021ff8c>] (udc_bind_to_driver+0x48/0xf0)
[<c021ff8c>] (udc_bind_to_driver) from [<c02208e0>] (usb_gadget_probe_driver+0x7c/0xa0)
[<c02208e0>] (usb_gadget_probe_driver) from [<c0008970>] (do_one_initcall+0x94/0x140)
[<c0008970>] (do_one_initcall) from [<c04b4b50>] (kernel_init_freeable+0xec/0x1b4)
[<c04b4b50>] (kernel_init_freeable) from [<c0376cc4>] (kernel_init+0x8/0xe4)
[<c0376cc4>] (kernel_init) from [<c0009590>] (ret_from_fork+0x14/0x24)
Code: e5950014 e1a04001 e5902008 e3a010d0 (e5922008)
---[ end trace 35c74bdd89b373d0 ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

This checks for that case and returns an error, not allowing the driver to be
loaded with no endpoints.

Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Add sync time after controller clear phcd
Peter Chen [Mon, 24 Feb 2014 02:21:04 +0000 (10:21 +0800)]
usb: phy: mxs: Add sync time after controller clear phcd

After clear portsc.phcd, PHY needs 200us stable time for switch
32K clock to AHB clock.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Add system suspend/resume API
Peter Chen [Mon, 24 Feb 2014 02:21:03 +0000 (10:21 +0800)]
usb: phy: mxs: Add system suspend/resume API

We need this to keep PHY's power on or off during the system
suspend mode. If we need to enable USB wakeup, then we
must keep PHY's power being on during the system suspend mode.
Otherwise, we need to keep PHY's power being off to save power.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Add implementation of set_wakeup
Peter Chen [Mon, 24 Feb 2014 02:21:02 +0000 (10:21 +0800)]
usb: phy: mxs: Add implementation of set_wakeup

When we need the PHY can be waken up by external signals,
we can call this API. Besides, we call mxs_phy_disconnect_line
at this API to close the connection between USB PHY and
controller, after that, the line state from controller is SE0.
Once the PHY is out of power, without calling mxs_phy_disconnect_line,
there are unknown wakeups due to dp/dm floating at device mode.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: Add set_wakeup API
Peter Chen [Mon, 24 Feb 2014 02:21:01 +0000 (10:21 +0800)]
usb: phy: Add set_wakeup API

This API is used to set wakeup enable at PHY registers, in that
case, the PHY can be waken up from suspend due to external events,
like vbus change, dp/dm change and id change.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: add controller id
Peter Chen [Mon, 24 Feb 2014 02:21:00 +0000 (10:21 +0800)]
usb: phy: mxs: add controller id

It is used to access un-regulator registers according to
different controllers.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Enable IC fixes for related SoCs
Peter Chen [Mon, 24 Feb 2014 02:20:59 +0000 (10:20 +0800)]
usb: phy: mxs: Enable IC fixes for related SoCs

Two PHY bugs are fixed by IC logic, but these bits are not
enabled by default, so we enable them at driver.
The two bugs are: MXS_PHY_ABNORMAL_IN_SUSPEND and MXS_PHY_SENDING_SOF_TOO_FAST
which are described at code.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: change description of usb device speed
Peter Chen [Mon, 24 Feb 2014 02:20:58 +0000 (10:20 +0800)]
usb: phy: mxs: change description of usb device speed

Change "high speed" to "HS"
Change "non-high speed" to "FS/LS"

Implementation of notify_suspend and notify_resume will be different
according to mxs_phy_data->flags.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Add anatop regmap
Peter Chen [Mon, 24 Feb 2014 02:20:57 +0000 (10:20 +0800)]
usb: phy: mxs: Add anatop regmap

It is needed by imx6 SoC series, but not for imx23 and imx28.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: doc: phy-mxs: update binding for adding anatop phandle
Peter Chen [Mon, 24 Feb 2014 02:20:56 +0000 (10:20 +0800)]
usb: doc: phy-mxs: update binding for adding anatop phandle

Add anatop phandle which is used to access anatop registers to
control PHY's power and other USB operations.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Add auto clock and power setting
Peter Chen [Mon, 24 Feb 2014 02:20:55 +0000 (10:20 +0800)]
usb: phy: mxs: Add auto clock and power setting

The auto setting is used to open related power and clocks
automatically after receiving wakeup signal.

With this feature, the PHY's clock and power can be recovered
correctly from low power mode, it is guaranteed by IC logic.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: mxs: Add platform judgement code
Peter Chen [Mon, 24 Feb 2014 02:20:54 +0000 (10:20 +0800)]
usb: phy: mxs: Add platform judgement code

The mxs-phy has several bugs and features at different
versions, the driver code can get it through of_device_id.data.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: doc: phy-mxs: Add more compatible strings
Peter Chen [Mon, 24 Feb 2014 02:20:53 +0000 (10:20 +0800)]
usb: doc: phy-mxs: Add more compatible strings

Add "fsl,imx6q-usbphy" for imx6dq and imx6dl, add
"fsl,imx6sl-usbphy" for imx6sl, and "fsl,imx23-usbphy"
is still a fallback for other strings.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: s3c-hsotg: add proper suspend/resume support
Marek Szyprowski [Fri, 28 Feb 2014 12:06:11 +0000 (13:06 +0100)]
usb: gadget: s3c-hsotg: add proper suspend/resume support

This patch adds suspend/resume support to s3c-hsotg driver. It makes UDC
driver more power efficient.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: musb: musb_cppi41: Dont reprogram DMA if tear down is initiated
George Cherian [Thu, 27 Feb 2014 05:14:41 +0000 (10:44 +0530)]
usb: musb: musb_cppi41: Dont reprogram DMA if tear down is initiated

Reprogramming the DMA after tear down is initiated leads to warning.
This is mainly seen with ISOCH since we do a delayed completion for
ISOCH transfers. In ISOCH transfers dma_completion should not reprogram
if the channel tear down is initiated.

Signed-off-by: George Cherian <george.cherian@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: adapt dwc3 core to use Generic PHY Framework
Kishon Vijay Abraham I [Mon, 3 Mar 2014 11:38:11 +0000 (17:08 +0530)]
usb: dwc3: adapt dwc3 core to use Generic PHY Framework

Adapted dwc3 core to use the Generic PHY Framework. So for init, exit,
power_on and power_off the following APIs are used phy_init(), phy_exit(),
phy_power_on() and phy_power_off().

However using the old USB phy library wont be removed till the PHYs of all
other SoC's using dwc3 core is adapted to the Generic PHY Framework.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: core: support optional PHYs
Kishon Vijay Abraham I [Mon, 3 Mar 2014 11:38:10 +0000 (17:08 +0530)]
usb: dwc3: core: support optional PHYs

Since PHYs for dwc3 is optional (not all SoCs having PHYs for DWC3
should be programmed), do not return from probe if the USB PHY library
returns -ENODEV as that indicates the platform does not have a
programmable PHY.

While this can be considered as a temporary fix, a long term solution
would be to add 'nop' PHY for platforms that does not have programmable
PHY.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agoDocumentation: dt bindings: move ..usb/usb-phy.txt to ..phy/ti-phy.txt
Kishon Vijay Abraham I [Mon, 25 Nov 2013 10:01:26 +0000 (15:31 +0530)]
Documentation: dt bindings: move ..usb/usb-phy.txt to ..phy/ti-phy.txt

Since now we have a separate folder for phy, move the PHY dt binding
documentation of TI to that folder.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: define more revisions
Felipe Balbi [Tue, 4 Mar 2014 15:35:02 +0000 (09:35 -0600)]
usb: dwc3: define more revisions

few new revisions of the core have been released,
add them to our list of revisions so we can apply
workarounds if necessary.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: fix randconfig build errors
Felipe Balbi [Tue, 4 Mar 2014 15:23:50 +0000 (09:23 -0600)]
usb: dwc3: fix randconfig build errors

commit 388e5c5 (usb: dwc3: remove dwc3 dependency
on host AND gadget.) created the possibility for
host-only and peripheral-only dwc3 builds but
left a possible randconfig build error when host-only
builds are selected.

Cc: <stable@vger.kernel.org> # v3.8+
Reported-by: Jim Davis <jim.epost@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: pre-start Stream transfers when they're queued
Felipe Balbi [Thu, 26 Jul 2012 10:26:50 +0000 (13:26 +0300)]
usb: dwc3: gadget: pre-start Stream transfers when they're queued

we need to pre-start stream transfers otherwise we
will never know when to start them.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: call gadget driver's ->suspend/->resume
Felipe Balbi [Wed, 26 Feb 2014 16:17:07 +0000 (10:17 -0600)]
usb: dwc3: gadget: call gadget driver's ->suspend/->resume

When going into bus suspend/resume we _must_
call gadget driver's ->suspend/->resume callbacks
accordingly. This patch implements that very feature
which has been missing forever.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: add 'force' argument to stop_active_transfer
Paul Zimmerman [Fri, 27 Apr 2012 11:17:35 +0000 (14:17 +0300)]
usb: dwc3: gadget: add 'force' argument to stop_active_transfer

It's not always we need to force a transfer to be removed
from the core's internal cache. This extra argument will
help differentiating those two cases.

Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: make sure HIRD threshold is 0 in superspeed
Felipe Balbi [Thu, 19 Dec 2013 22:37:05 +0000 (16:37 -0600)]
usb: dwc3: gadget: make sure HIRD threshold is 0 in superspeed

During superspeed, HIRD threshold should always
be zero. Curent driver wasn't making sure that
was the case.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: set KEEP_CONNECT in case of hibernation
Felipe Balbi [Thu, 19 Dec 2013 19:43:19 +0000 (13:43 -0600)]
usb: dwc3: gadget: set KEEP_CONNECT in case of hibernation

if we have hibernation configured, Databook
instructs us to set KEEP_CONNECT bit together
with RUN_STOP bit, in step 9 of section 12.3.6.1
Initialization for Hibernation Support.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: core: fix indentation
Felipe Balbi [Thu, 19 Dec 2013 20:02:53 +0000 (14:02 -0600)]
usb: dwc3: core: fix indentation

no functional changes, just converting spaces
into tab.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: core: allocate scratch buffers
Felipe Balbi [Thu, 19 Dec 2013 19:04:28 +0000 (13:04 -0600)]
usb: dwc3: core: allocate scratch buffers

We must read HWPARAMS4 register to figure out
how many scratch buffers we should allocate.

Later patch will use "Set Scratchpad Buffer
Array" command to pass the pointer to the
IP so it can be used during hibernation.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: add a 'restore' argument to set_ep_config
Paul Zimmerman [Thu, 19 Dec 2013 18:38:49 +0000 (12:38 -0600)]
usb: dwc3: gadget: add a 'restore' argument to set_ep_config

That argument will be used in later patches when we
have working hibernation support. For now, always
pass it as false.

The idea of this patch is to decrease to size of
following patches and slowly add hibernation building
blocks to the gadget side of dwc3 so that it becomes
very easy to review the actual hibernation code.

[ balbi@ti.com : rewrote patch on top of current
tree. Added commit log. ]

Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: implement dwc3_gadget_get_link_state
Paul Zimmerman [Fri, 27 Apr 2012 10:35:15 +0000 (13:35 +0300)]
usb: dwc3: gadget: implement dwc3_gadget_get_link_state

This function will be used during hibernation to get
the current link state. It will be needed at least
for Hibernation support.

Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: add 'saved_state' field to dwc3_ep structure
Paul Zimmerman [Fri, 27 Apr 2012 10:56:23 +0000 (13:56 +0300)]
usb: dwc3: add 'saved_state' field to dwc3_ep structure

This extra field will save endpoint state when we're
about to enter hibernation. It will be used later
to restore the endpoint state when resuming.

Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: add has_hibernation flag
Felipe Balbi [Thu, 19 Dec 2013 18:14:29 +0000 (12:14 -0600)]
usb: dwc3: add has_hibernation flag

this will tell driver that this version
of the core was configured with hibernation
feature enabled.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: cleanup struct dwc3
Felipe Balbi [Thu, 19 Dec 2013 18:12:37 +0000 (12:12 -0600)]
usb: dwc3: cleanup struct dwc3

move 1-bit flags to the bottom of the structure,
sort all bit flags alphabetically, add documentation
which was missing.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: workaround: bogus hibernation events
Felipe Balbi [Tue, 25 Feb 2014 20:47:54 +0000 (14:47 -0600)]
usb: dwc3: workaround: bogus hibernation events

Revision 2.20a of the core has a known issue
which would generate bogus hibernation events
_and_ random failures on USB CV TD.9.23 test
case.

The suggested workaround is to ignore hibernation
events which don't match currently connected
speed.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: workaround: clock gating issues
Felipe Balbi [Tue, 25 Feb 2014 20:00:13 +0000 (14:00 -0600)]
usb: dwc3: workaround: clock gating issues

Revisions between 2.10a and 2.50a (included) have
a known issue which may cause xHCI compliance tests
to fail and/or quality issues with Isochronous
transactions.

Note that this issue only impacts certain configurations
of those revisions, namely the ones which have clock
gating enabled.

The suggested workaround is to disable clock gating in
known broken revisions, make sure HW LPM is disabled
and set GCTL.SOFITPSYNC to 1.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: core: define bit 10 of GCTL register
Felipe Balbi [Tue, 25 Feb 2014 20:08:51 +0000 (14:08 -0600)]
usb: dwc3: core: define bit 10 of GCTL register

This bit is necessary for implemeting workaround
for known issue with some revisions of this core.

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: dwc3: gadget: always enable IOC on bulk/interrupt transfers
Felipe Balbi [Fri, 13 Dec 2013 20:19:33 +0000 (14:19 -0600)]
usb: dwc3: gadget: always enable IOC on bulk/interrupt transfers

by setting IOC always, we can recycle TRBs a
lot sooner at the expense of some increased
CPU load.

The extra load seems to be quite minimal on
OMAP5 devices (instead of 1 IRQ for one MSC
transfer, we get
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS).

Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: gadget: at91_udc: fix ep maxpacket initialisation
Robert Baldyga [Thu, 20 Feb 2014 08:26:25 +0000 (09:26 +0100)]
usb: gadget: at91_udc: fix ep maxpacket initialisation

This patch fixes problem with unnecessary usb_ep_set_maxpacket_limit() usage.
It should not be used in at91udc_probe() function, where maxpacket values are
set for field "maxpacket" of struct at91_ep, which is representation of
endpoint in driver internals. Function usb_ep_set_maxpacket_limit() is called
in udc_reinit() function, where struct usb_ep instances are initialised with
values set previously in struct at91_ep instances. So it's very important to
initialise it properly.

Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: musb: USB_MUSB_DUAL_ROLE/USB_MUSB_GADGET should depend on HAS_DMA
Geert Uytterhoeven [Fri, 21 Feb 2014 19:49:53 +0000 (20:49 +0100)]
usb: musb: USB_MUSB_DUAL_ROLE/USB_MUSB_GADGET should depend on HAS_DMA

If NO_DMA=y:

    drivers/built-in.o: In function `txstate':
    musb_gadget.c:(.text+0x35955a): undefined reference to `dma_unmap_single'
    musb_gadget.c:(.text+0x35957e): undefined reference to `dma_sync_single_for_cpu'
    drivers/built-in.o: In function `musb_g_giveback':
    (.text+0x359672): undefined reference to `dma_mapping_error'
    drivers/built-in.o: In function `musb_g_giveback':
    (.text+0x3596ba): undefined reference to `dma_unmap_single'
    drivers/built-in.o: In function `musb_g_giveback':
    (.text+0x3596e0): undefined reference to `dma_sync_single_for_cpu'
    drivers/built-in.o: In function `rxstate':
    musb_gadget.c:(.text+0x3599d0): undefined reference to `dma_unmap_single'
    musb_gadget.c:(.text+0x3599f6): undefined reference to `dma_sync_single_for_cpu'
    drivers/built-in.o: In function `musb_gadget_queue':
    musb_gadget.c:(.text+0x35a8c0): undefined reference to `dma_map_single'
    musb_gadget.c:(.text+0x35a8d0): undefined reference to `dma_mapping_error'
    musb_gadget.c:(.text+0x35a906): undefined reference to `dma_sync_single_for_cpu'
    musb_gadget.c:(.text+0x35a9a0): undefined reference to `dma_unmap_single'
    musb_gadget.c:(.text+0x35a9c8): undefined reference to `dma_sync_single_for_cpu'

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: phy: rcar-gen2-usb: always use 'dev' variable in probe() method
Sergei Shtylyov [Sat, 22 Feb 2014 01:29:15 +0000 (04:29 +0300)]
usb: phy: rcar-gen2-usb: always use 'dev' variable in probe() method

The probe() method has the 'dev' local variable declared and used but strangely
not in all cases where it should be...

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agousb: musb: avoid NULL pointer dereference
Felipe Balbi [Tue, 25 Feb 2014 16:58:43 +0000 (10:58 -0600)]
usb: musb: avoid NULL pointer dereference

instead of relying on the otg pointer, which
can be NULL in certain cases, we can use the
gadget and host pointers we already hold inside
struct musb.

Cc: <stable@vger.kernel.org>
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
10 years agostorage: accept some UAS devices if streams are unavailable
Oliver Neukum [Tue, 11 Feb 2014 19:36:04 +0000 (20:36 +0100)]
storage: accept some UAS devices if streams are unavailable

On some older XHCIs streams are not supported and the UAS driver
will fail at probe time. For those devices storage should try
to bind to UAS devices.
This patch adds a flag for stream support to HCDs and evaluates
it.

[Note: Sarah fixed a bug where the USB 2.0 root hub, not USB 3.0 root
hub would get marked as being able to support streams.]

Signed-off-by: Oliver Neukum <oliver@neukum.org>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
10 years agoxhci: Kill streams URBs when the host dies.
Sarah Sharp [Fri, 21 Feb 2014 22:29:02 +0000 (14:29 -0800)]
xhci: Kill streams URBs when the host dies.

If the host controller stops responding to commands, we need to kill all
the URBs that were queued to all endpoints.  The current code would only
kill URBs that had been queued to the endpoint rings.  ep->ring is set
to NULL if streams has been enabled for the endpoint, which means URBs
submitted with a non-zero stream_id would never get killed.  Fix this.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agoxhci: Refactor command watchdog and fix split string.
Sarah Sharp [Fri, 21 Feb 2014 17:27:30 +0000 (09:27 -0800)]
xhci: Refactor command watchdog and fix split string.

In preparation for fixing this function for streams endpoints, refactor
code in the command watchdog timeout function into two new functions.
One kills all URBs on a ring (either stream or endpoint), the other
kills all URBs associated with an endpoint.  Fix a split string while
we're at it.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Remove comment about registering a uas scsi controller for each usb bus
Hans de Goede [Tue, 29 Oct 2013 10:36:43 +0000 (11:36 +0100)]
uas: Remove comment about registering a uas scsi controller for each usb bus

Although an interesting concept, I don't think that this is a good idea:

-This will result in lots of "virtual" scsi controllers confusing users
-If we get a scsi-bus-reset we will now need to do a usb-device-reset of all
 uas devices on the same usb bus, which is something to avoid if possible

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Add Hans de Goede as uas maintainer
Hans de Goede [Mon, 28 Oct 2013 10:48:04 +0000 (10:48 +0000)]
uas: Add Hans de Goede as uas maintainer

At the kernel-summit Sarah Sharp asked me if I was willing to become the
uas maintainer. I said yes, and here is a patch to make this official.

Also remove Matthew Wilcox and Sarah Sharp as maintainers at their request.

I've also added myself to the module's author tag, so that if people look there
rather then in maintainers they will know they should bug me about uas too.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: remove BROKEN
Gerd Hoffmann [Fri, 13 Sep 2013 11:27:15 +0000 (13:27 +0200)]
uas: remove BROKEN

xhci streams support is fixed, unblock usb attached scsi.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Make sure sg elements are properly aligned
Hans de Goede [Fri, 15 Nov 2013 09:04:31 +0000 (10:04 +0100)]
uas: Make sure sg elements are properly aligned

Copy the sg alignment trick from the usb-storage driver, without this I'm
seeing intermittent errors when using uas devices with an ehci controller.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Add some data in/out ready iu sanity checks
Hans de Goede [Fri, 15 Nov 2013 09:04:11 +0000 (10:04 +0100)]
uas: Add some data in/out ready iu sanity checks

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Improve error reporting
Hans de Goede [Thu, 7 Nov 2013 07:52:42 +0000 (08:52 +0100)]
uas: Improve error reporting

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Use the right error codes for different kinds of errors
Hans de Goede [Thu, 14 Nov 2013 13:27:27 +0000 (14:27 +0100)]
uas: Use the right error codes for different kinds of errors

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Clear cmdinfo on command queue-ing
Hans de Goede [Thu, 14 Nov 2013 10:06:13 +0000 (11:06 +0100)]
uas: Clear cmdinfo on command queue-ing

The scsi error handling path re-uses previously queued up (and errored-out)
cmds. If such a re-used cmd had a data-phase then cmdinfo will have
data_in_urb / data_out_urb still set to the free-ed urbs from the errored-out
cmd, and they will get free-ed a second time when the error handling cmd
completes, corrupting the kernel heap.

Clearing cmdinfo on command queue-ing fixes this, and seems like a good idea
in general.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Fix memory management
Hans de Goede [Wed, 13 Nov 2013 08:32:22 +0000 (09:32 +0100)]
uas: Fix memory management

The scsi-host structure is refcounted, scsi_remove_host tears down the
scsi-host but does not decrement the refcount, so we need to call
scsi_put_host on disconnect to get the underlying memory to be freed.

After calling scsi_remove_host, the scsi-core may still hold a reference to
the scsi-host, iow we may still get called after uas_disconnect, but we
do our own life cycle management of uas_devinfo, freeing it on disconnect,
and thus may end up using devinfo after it has been freed. Switch to letting
scsi_host_alloc allocate and manage the memory for us.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Fix command / task mgmt submission racing with disconnect
Hans de Goede [Wed, 13 Nov 2013 08:24:15 +0000 (09:24 +0100)]
uas: Fix command / task mgmt submission racing with disconnect

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: cmdinfo: use only one list head
Hans de Goede [Tue, 12 Nov 2013 13:02:12 +0000 (14:02 +0100)]
uas: cmdinfo: use only one list head

cmds are either on the inflight list or on the dead list, never both, so
we only need one list head.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: add uas_mark_cmd_dead helper function
Hans de Goede [Tue, 12 Nov 2013 12:57:24 +0000 (13:57 +0100)]
uas: add uas_mark_cmd_dead helper function

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Properly complete inflight commands on bus-reset or disconnect
Hans de Goede [Tue, 12 Nov 2013 12:44:20 +0000 (13:44 +0100)]
uas: Properly complete inflight commands on bus-reset or disconnect

Before this commit the uas driver would keep track of scsi commands which still
need to have some urbs submitted to the device, and complete this with an
ABORT result code on bus-reset or disconnect, but in flight scsi commands
which have all their urbs submitted, and thus are not part of the work list,
would never get their done callback called.

The problem is killed sense urbs don't have any tag info, so it is impossible
to tell which scsi cmd they belong to, so merely making sure all the urbs
have completed one way or the other is not enough.

This commit fixes this by changing the work list to an inflight list, which
keeps tracks of all inflight scsi cmnds, using the IS_IN_WORK_LIST flag to
determine if actual work needs to be done in uas_do_work(), and by moving
marking all inflight scsi commands as aborted and moving them to the dead list
on bus-reset or disconnect.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: uas_alloc_data_urb: Remove unnecessary use_streams check
Hans de Goede [Tue, 12 Nov 2013 09:53:57 +0000 (10:53 +0100)]
uas: uas_alloc_data_urb: Remove unnecessary use_streams check

uas_alloc_data_urb always gets called with a stream_id value of 0 when not
using streams. Removing the check makes it consistent with uas_alloc_sense_urb.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
10 years agouas: Fix task-management not working when connected over USB-2
Hans de Goede [Tue, 12 Nov 2013 09:51:33 +0000 (10:51 +0100)]
uas: Fix task-management not working when connected over USB-2

For USB-2 connections the stream-id must always be 0.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>