9759 Commits

Author SHA1 Message Date
Chen Gang
ece1d77ed7 USB: ohci: set urb->hcpriv = NULL immediately, after free it
although we can not say it is surely a bug.
it is better to set urb->hcpriv = NULL, after finish calling
urb_free_priv.

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:03:38 -08:00
Stefan Hubner
a8ffa0be04 usb: serial: keyspan: fixed coding style issues
fixed coding style issues.

Signed-off-by: Stefan Hubner <s.hubner@tilburguniversity.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:03:37 -08:00
Andreas Fleig
bc009eca8d USB: Add device quirk for Microsoft VX700 webcam
Add device quirk for Microsoft Lifecam VX700 v2.0 webcams.
Fixes squeaking noise of the microphone.

Signed-off-by: Andreas Fleig <andreasfleig@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:01:07 -08:00
Anatolij Gustschin
f66dea709c USB: ehci-fsl: fix regression on mpc5121e
mpc5121e doesn't have system interface registers, accessing this
register address space cause the machine check exception and a
kernel crash:

...
Machine check in kernel mode.
Caused by (from SRR1=49030): Transfer error ack signal
Oops: Machine check, sig: 7 [#1]
MPC5121 ADS
Modules linked in:
NIP: c025fd60 LR: c0265bb4 CTR: 00000000
REGS: df82dac0 TRAP: 0200   Not tainted
(3.7.0-rc7-00641-g81e6c91)
MSR: 00049030 <EE,ME,IR,DR>  CR: 42002024  XER: 20000000
TASK = df824b70[1] 'swapper' THREAD: df82c000
GPR00: 00000000 df82db70 df824b70 df3ed0f0 00000003 00000000 00000000 00000000
GPR08: 00000020 32000000 c03550ec 20000000 22002028 00000000 c0003f5c 00000000
GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 c0423898 c0450000
GPR24: 00000077 00000002 e5086180 1c000c00 e5086000 df33ec00 00000003 df34e000
NIP [c025fd60] ehci_fsl_setup_phy+0xd0/0x354
LR [c0265bb4] ehci_fsl_setup+0x220/0x284
...

Fix it by checking 'have_sysif_regs' flag before register access.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:01:07 -08:00
Fabio Estevam
929473ea05 usb: chipidea: Allow disabling streaming not only in udc mode
When running a scp transfer using a USB/Ethernet adapter the following crash
happens:

$ scp test.tar.gz fabio@192.168.1.100:/home/fabio
fabio@192.168.1.100's password:
test.tar.gz                                      0%    0     0.0KB/s   --:-- ETA
------------[ cut here ]------------
WARNING: at net/sched/sch_generic.c:255 dev_watchdog+0x2cc/0x2f0()
NETDEV WATCHDOG: eth0 (asix): transmit queue 0 timed out
Modules linked in:
Backtrace:
[<80011c94>] (dump_backtrace+0x0/0x10c) from [<804d3a5c>] (dump_stack+0x18/0x1c)
 r6:000000ff r5:80412388 r4:80685dc0 r3:80696cc0
[<804d3a44>] (dump_stack+0x0/0x1c) from [<80021868>]
(warn_slowpath_common+0x54/0x6c)
[<80021814>] (warn_slowpath_common+0x0/0x6c) from [<80021924>]
(warn_slowpath_fmt+0x38/0x40)
...

Setting SDIS (Stream Disable Mode- bit 4 of USBMODE register) fixes the problem.

However, in current code CI13XXX_DISABLE_STREAMING flag is only set in udc mode,
so allow disabling streaming also in host mode.

Tested on a mx6qsabrelite board.

Suggested-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:01:07 -08:00
Anatolij Gustschin
7c1029ba17 USB: fsl-mph-dr-of: fix regression on mpc5121e
fsl-ehci probing fails on mpc5121e:
...
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: Could not get controller version
fsl-ehci fsl-ehci.0: can't setup
fsl-ehci fsl-ehci.0: USB bus 1 deregistered
fsl-ehci fsl-ehci.0: init fsl-ehci.0 fail, -22
fsl-ehci: probe of fsl-ehci.0 failed with error -22

Fix it by returning appropriate version info for mpc5121, too.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:01:06 -08:00
Maxime Ripard
eb614c8b46 USB: select USB_ARCH_HAS_EHCI for MXS
Commit 09f6ffde (USB: EHCI: fix build error by making ChipIdea host a
normal EHCI driver) introduced a dependency on USB_EHCI_HCD for the
chipidea USB host driver, that in turns depends on USB_ARCH_HAS_EHCI.

If this symbol is not set for MXS, the MXS boards are not able to use
the chipidea driver anymore.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 16:01:06 -08:00
Oliver Neukum
07e72b95f5 USB: hub: handle claim of enabled remote wakeup after reset
Some touchscreens have buggy firmware which claims
remote wakeup to be enabled after a reset. They nevertheless
crash if the feature is cleared by the host.
Add a check for reset resume before checking for
an enabled remote wakeup feature. On compliant
devices the feature must be cleared after a reset anyway.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:15:14 -08:00
Gerd Hoffmann
f8be6bfc5d uas: fail any request submitted while resetting the device.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:14:18 -08:00
Gerd Hoffmann
4c456971f8 uas: improve device reset
Add new function to unlink and abort requests from the work
list, call it on bus reset and disconnect where we kill all
in-flight urbs.  Also reorder calls in disconnect to first
cancel transfers, then remove the scsi hba.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:14:18 -08:00
Gerd Hoffmann
5d390403fe uas: improve abort handler
Two changes.  First we check whenever the request is linked in the work
list and if so take it out.  Second check whenever the command is
actually in flight before asking the device to cancel it via task
management, and in case it isn't just zap the data urbs and finish it.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:14:18 -08:00
Gerd Hoffmann
efefecf33a uas: add IS_IN_WORK_LIST flag
Keep track whenever the request is linked into the work list or not.
Needed for request abort.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:14:17 -08:00
Gerd Hoffmann
b06e48afd1 uas: add UNLINK_DATA_URBS flag
uas_unlink_data_urbs uses this to make sure the the scsi command is
not released while looking at it.  This will be needed when we start
calling uas_unlink_data_urbs in the request cancel code paths.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:14:17 -08:00
Gerd Hoffmann
aa8f612370 uas: new function to cancel data urbs
Add uas_unlink_data_urbs function to cancel in-flight data urbs.
Moves existing code into a separate function.

[ v2: also drop the locking, just call usb_unlink_urb no matter what,
      which is safe because the usb core guarantees the completion
      callback is called only once ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:14:17 -08:00
Dongjin Kim
6a099c6365 USB: misc: Add USB3503 High-Speed Hub Controller
This patch adds new driver of SMSC USB3503 USB 2.0 hub controller with HSIC
upstream connectivity and three USB 2.0 downstream ports. The specification
can be found from 'http://www.smsc.com/index.php?tid=295&pid=325'.

The current version have been tested very basic features switching the modes,
HUB-MODE and STANDBY-MODE.

Signed-off-by: Dongjin Kim <tobetter@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:12:07 -08:00
Denis N Ladin
036915a7a4 USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i"
Adding support "PSC Scanning, Magellan 800i" in cdc-acm

Very simple, but very necessary.
Suitable for all versions of the kernel > 2.6

Signed-off-by: Denis N Ladin <denladin@gmail.com>
Cc: stable <stable@vger.kernel.org>
Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:03:59 -08:00
Dzianis Kahanovich
ad86e58661 USB: option: add Nexpring NP10T terminal id
Hyundai Petatel Inc. Nexpring NP10T terminal (EV-DO rev.A USB modem) ID

Signed-off-by: Denis Kaganovich <mahatma@eu.by>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:03:58 -08:00
Bjørn Mork
5ec0085440 USB: option: add Telekom Speedstick LTE II
also known as Alcatel One Touch L100V LTE

The driver description files gives these names to the vendor specific
functions on this modem:

 Application1: VID_1BBB&PID_011E&MI_00
 Application2: VID_1BBB&PID_011E&MI_01
 Modem:        VID_1BBB&PID_011E&MI_03
 Ethernet:     VID_1BBB&PID_011E&MI_04

Reported-by: Thomas Schäfer <tschaefer@t-online.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:01:09 -08:00
Bjørn Mork
fab38246f3 USB: option: blacklist network interface on ZTE MF880
The driver description files gives these names to the vendor specific
functions on this modem:

 diag: VID_19D2&PID_0284&MI_00
 nmea: VID_19D2&PID_0284&MI_01
 at:   VID_19D2&PID_0284&MI_02
 mdm:  VID_19D2&PID_0284&MI_03
 net:  VID_19D2&PID_0284&MI_04

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:01:09 -08:00
Fabio Estevam
bbc0313d61 usb: imx21-hcd: Include missing linux/module.h
Include <linux/module.h>, so that the following errors are fixed:

drivers/usb/host/imx21-hcd.c:1929:20: error: expected declaration specifiers or '...' before string constant
drivers/usb/host/imx21-hcd.c:1930:15: error: expected declaration specifiers or '...' before string constant
drivers/usb/host/imx21-hcd.c:1931:16: error: expected declaration specifiers or '...' before string constant
drivers/usb/host/imx21-hcd.c:1932:14: error: expected declaration specifiers or '...' before string constant

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:01:09 -08:00
Quentin.Li
94a85b6338 USB: option: Add new MEDIATEK PID support
In option.c, add some new MEDIATEK PIDs support for MEDIATEK new products. This
is a MEDIATEK inc. release patch.

Signed-off-by: Quentin.Li <snowmanli88@163.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-11 12:01:09 -08:00
supriya karanth
f278628193 usb: musb: set AUTOSET for full speed bulk DMA transfer in host mode
The "mult" factor is not updated properly for the can_bulk_split()
case.

The AUTOSET bit in the TXCSR is not being set if the "mult"
factor is greater than 1 for the High Bandwidth ISO case.
But the "mult" factor is also greater than 1 in case of Full speed
bulk transfers with the packet splitting in TXMAXP register
enabled with can_bulk_split().

Without the AUTOSET the DMA transfers will not progress in mode1

[ balbi@ti.com : fix braces placement ]

Signed-off-by: supriya karanth <supriya.karanth@stericsson.com>
Signed-off-by: Praveena NADAHALLY <praveen.nadahally@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 14:16:47 +02:00
supriya karanth
bb3a2ef2eb usb: musb: set TXMAXP and AUTOSET for full speed bulk in device mode
The TXMAXP register is not set correctly for full speed bulk case
when the can_bulk_split() is used. Without this PIO transfers will
not take place correctly

The "mult" factor needs to be updated correctly for the
can_bulk_split() case

The AUTOSET bit in the TXCSR is not being set if the "mult"
factor is greater than 0 for the High Bandwidth ISO case.
But the "mult" factor is also greater than 0 in case of Full speed
bulk transfers with the packet splitting in TXMAXP register

Without the AUTOSET the DMA transfers will not progress in mode1

[ balbi@ti.com : add braces to both branches ]

Signed-off-by: supriya karanth <supriya.karanth@stericsson.com>
Signed-off-by: Praveena NADAHALLY <praveen.nadahally@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 14:15:19 +02:00
Sachin Kamat
7e56e621ce usb: musb: dsps: Remove duplicate inclusion of linux/of.h
linux/of.h was included twice.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 14:14:03 +02:00
Aaro Koskinen
80ab72e176 usb: musb: omap2430: fix the readiness check in omap_musb_mailbox
The check in omap_musb_mailbox does not properly check if the module has
been fully initialized. The patch fixes that, and the kernel panic below:

$ modprobe twl4030-usb
[   13.924743] twl4030_usb twl4030-usb.33: HW_CONDITIONS 0xe0/224; link 3
[   13.940307] Unable to handle kernel NULL pointer dereference at virtual address 00000004
[   13.948883] pgd = ef27c000
[   13.951751] [00000004] *pgd=af256831, *pte=00000000, *ppte=00000000
[   13.958374] Internal error: Oops: 17 [#1] ARM
[   13.962921] Modules linked in: twl4030_usb(+) omap2430 libcomposite
[   13.969543] CPU: 0    Not tainted  (3.8.0-rc1-n9xx-11758-ge37a37c-dirty #6)
[   13.976867] PC is at omap_musb_mailbox+0x18/0x54 [omap2430]
[   13.982727] LR is at twl4030_usb_probe+0x240/0x354 [twl4030_usb]
[   13.989013] pc : [<bf013b6c>]    lr : [<bf018958>]    psr: 60000013
[   13.989013] sp : ef273cf0  ip : ef273d08  fp : ef273d04
[   14.001068] r10: bf01b000  r9 : bf0191d8  r8 : 00000001
[   14.006530] r7 : 00000000  r6 : ef140e10  r5 : 00000003  r4 : 00000000
[   14.013397] r3 : bf0142dc  r2 : 00000006  r1 : 00000000  r0 : 00000003
[   14.020233] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   14.027740] Control: 10c5387d  Table: af27c019  DAC: 00000015
[   14.033752] Process modprobe (pid: 616, stack limit = 0xef272238)
[   14.040161] Stack: (0xef273cf0 to 0xef274000)
[   14.044708] 3ce0:                                     ef254310 00000001 ef273d34 ef273d08
[   14.053314] 3d00: bf018958 bf013b60 bf0190a4 ef254310 c0101550 c0c3a138 ef140e10 ef140e44
[   14.061889] 3d20: bf019150 00000001 ef273d44 ef273d38 c019890c bf018724 ef273d64 ef273d48
[   14.070495] 3d40: c01974fc c01988f8 ef140e10 bf019150 ef140e44 00000000 ef273d84 ef273d68
[   14.079071] 3d60: c0197728 c019748c c0197694 00000000 bf019150 c0197694 ef273dac ef273d88
[   14.087677] 3d80: c0195c38 c01976a0 ef03610c ef143eb0 c0128954 ef254780 bf019150 c0b19548
[   14.096252] 3da0: ef273dbc ef273db0 c0197098 c0195bf0 ef273dec ef273dc0 c0196c98 c0197080
[   14.104858] 3dc0: bf0190a4 c0b27bc0 ef273dec bf019150 bf019190 c0b27bc0 ef272000 00000001
[   14.113433] 3de0: ef273e14 ef273df0 c0197c18 c0196b30 ef273f48 bf019190 c0b27bc0 ef272000
[   14.122039] 3e00: 00000001 bf01b000 ef273e24 ef273e18 c0198b28 c0197ba4 ef273e34 ef273e28
[   14.130615] 3e20: bf01b014 c0198ae8 ef273e8c ef273e38 c0008918 bf01b00c c004f730 c012ba1c
[   14.139221] 3e40: ef273e74 00000000 c00505b0 c004f72c 00000000 ef273e60 ef273f48 bf019190
[   14.147796] 3e60: 00000001 ef273f48 bf019190 00000001 ef286340 00000001 bf0191d8 c0065414
[   14.156402] 3e80: ef273f44 ef273e90 c0067754 c00087fc bf01919c 00007fff c0064794 00000000
[   14.164978] 3ea0: ef273ecc f0064000 00000001 ef272000 ef272000 00067f39 bf0192b0 bf01919c
[   14.173583] 3ec0: ef273f0c ef273ed0 c00a6bf0 c00a53fc ff000000 000000d2 c0067dc8 00000000
[   14.182159] 3ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   14.190765] 3f00: 00000000 00000000 00000000 00000000 00000000 00000000 ffffffff 00002968
[   14.199340] 3f20: 00080878 00067f39 00000080 c000e2e8 ef272000 00000000 ef273fa4 ef273f48
[   14.207946] 3f40: c0067e54 c0066188 f0064000 00002968 f0065530 f0065463 f0065fb0 000012c4
[   14.216522] 3f60: 00001664 00000000 00000000 00000000 00000014 00000015 0000000c 00000000
[   14.225128] 3f80: 00000008 00000000 00000000 00080370 00080878 0007422c 00000000 ef273fa8
[   14.233703] 3fa0: c000e140 c0067d80 00080370 00080878 00080878 00002968 00067f39 00000000
[   14.242309] 3fc0: 00080370 00080878 0007422c 00000080 00074030 00067f39 bec7aef8 00000000
[   14.250885] 3fe0: b6f05300 bec7ab68 0000e93c b6f05310 60000010 00080878 af7fe821 af7fec21
[   14.259460] Backtrace:
[   14.262054] [<bf013b54>] (omap_musb_mailbox+0x0/0x54 [omap2430]) from [<bf018958>] (twl4030_usb_probe+0x240/0x354 [twl4030_usb])
[   14.274200]  r5:00000001 r4:ef254310
[   14.277984] [<bf018718>] (twl4030_usb_probe+0x0/0x354 [twl4030_usb]) from [<c019890c>] (platform_drv_probe+0x20/0x24)
[   14.289123]  r8:00000001 r7:bf019150 r6:ef140e44 r5:ef140e10 r4:c0c3a138
[   14.296203] [<c01988ec>] (platform_drv_probe+0x0/0x24) from [<c01974fc>] (driver_probe_device+0x7c/0x214)
[   14.306243] [<c0197480>] (driver_probe_device+0x0/0x214) from [<c0197728>] (__driver_attach+0x94/0x98)
[   14.316009]  r7:00000000 r6:ef140e44 r5:bf019150 r4:ef140e10
[   14.321990] [<c0197694>] (__driver_attach+0x0/0x98) from [<c0195c38>] (bus_for_each_dev+0x54/0x88)
[   14.331390]  r6:c0197694 r5:bf019150 r4:00000000 r3:c0197694
[   14.337371] [<c0195be4>] (bus_for_each_dev+0x0/0x88) from [<c0197098>] (driver_attach+0x24/0x28)
[   14.346588]  r6:c0b19548 r5:bf019150 r4:ef254780
[   14.351440] [<c0197074>] (driver_attach+0x0/0x28) from [<c0196c98>] (bus_add_driver+0x174/0x244)
[   14.360687] [<c0196b24>] (bus_add_driver+0x0/0x244) from [<c0197c18>] (driver_register+0x80/0x154)
[   14.370086]  r8:00000001 r7:ef272000 r6:c0b27bc0 r5:bf019190 r4:bf019150
[   14.377136] [<c0197b98>] (driver_register+0x0/0x154) from [<c0198b28>] (platform_driver_register+0x4c/0x60)
[   14.387390] [<c0198adc>] (platform_driver_register+0x0/0x60) from [<bf01b014>] (twl4030_usb_init+0x14/0x1c [twl4030_usb])
[   14.398895] [<bf01b000>] (twl4030_usb_init+0x0/0x1c [twl4030_usb]) from [<c0008918>] (do_one_initcall+0x128/0x1a8)
[   14.409790] [<c00087f0>] (do_one_initcall+0x0/0x1a8) from [<c0067754>] (load_module+0x15d8/0x1bf8)
[   14.419189] [<c006617c>] (load_module+0x0/0x1bf8) from [<c0067e54>] (sys_init_module+0xe0/0xf4)
[   14.428344] [<c0067d74>] (sys_init_module+0x0/0xf4) from [<c000e140>] (ret_fast_syscall+0x0/0x30)
[   14.437652]  r6:0007422c r5:00080878 r4:00080370
[   14.442504] Code: e24cb004 e59f3038 e1a05000 e593401c (e5940004)
[   14.448944] ---[ end trace dbf47e5bc5ba03c2 ]---
[   14.453826] Kernel panic - not syncing: Fatal exception

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 14:13:37 +02:00
Michal Nazarewicz
afd2e186bd usb: gadget: FunctionFS: Use kstrtoul()
kstrtoul() checks for overflow which simple_strtoul() does not pluss
it has “*end == 0” check in it as well.  As a side effect, a new
line character is now accepted, but this should not be an issue.

Signed-off-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:42:14 +02:00
Sachin Kamat
cd76213eb5 usb: gadget: s3c-hsotg: Use devm_regulator_bulk_get API
devm_regulator_bulk_get is device managed and saves some cleanup
and exit code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:41:56 +02:00
Sachin Kamat
924d2532ab usb: gadget: s3c-hsudc: Use devm_regulator_bulk_get
devm_regulator_bulk_get is device managed and makes exit code
simpler.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:41:37 +02:00
Jean-Christophe PLAGNIOL-VILLARD
d2aec37c3b USB: gadget: at91_adc: fix pullup pin validity check
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: linux-usb@vger.kernel.org
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:41:01 +02:00
Tejun Heo
348409a267 usb: gadget: at91_udc: don't use [delayed_]work_pending()
There's no need to test whether a (delayed) work item in pending
before queueing, flushing or cancelling it.  Most uses are unnecessary
and quite a few of them are buggy.

Remove unnecessary pending tests from at91_udc.  Only compile tested.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Andrew Victor <linux@maxim.org.za>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: linux-usb@vger.kernel.org
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:40:46 +02:00
Armando Visconti
32c9cf22fc usb: gadget zero: avoid unnecessary reinit of data in f_sourcesink
In the IN case, since the USB request is allocated only when
the source/sink function is started and never freed, the USB ept
buffer needs to be initialized only at the beginning. This change
results into a more performant g_zero module, especially when
'pattern=1' is selected.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:39:41 +02:00
Sebastian Andrzej Siewior
8f900a9a6e usb: gadget: consider link speed for bMaxPower
The USB 2.0 specification says that bMaxPower is the maximum power
consumption expressed in 2 mA units and the USB 3.0 specification says
that it is expressed in 8 mA units.

This patch renames bMaxPower to MaxPower and the various /2 and *2 are
removed. Before reporting the config descriptor, the proper value is
computer based on the speed, all in-tree users are updated. MaxPower is
also increased to u16 so we can store the nokia gadget value which is
larger than the max value allowed for u8.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:38:52 +02:00
Sebastian Andrzej Siewior
98f3a1b907 usb: gadget: mass_storage: remove >= 0 check for unsigned type
| In file included from drivers/usb/gadget/acm_ms.c:43:
| f_mass_storage.c:2199:18: warning: comparison of unsigned expression >= 0 is always true  [-Wtautological-compare]
|         if (common->lun >= 0 && common->lun < common->nluns)
|             ~~~~~~~~~~~ ^  ~

common->lun is defined as "unsigned int" so its value is always >= 0.
It is assigned via cbw->Lun which is defined as u8 so it is also not
abused as -1.

[ mina86@mina86.com : make lun unsigned int and use %u in DBG() macro for it ]

Signed-off-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:36:47 +02:00
Wei Yongjun
b642435333 usb: gadget: remove unused variable in uac2_pcm_trigger()
The variable ep is initialized but never used
otherwise, so remove the unused variable.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:35:47 +02:00
Andrzej Pietrasiewicz
2b5080026c usb: gadget: f_mass_storage: remove unused operations
pre_eject and post_eject are not used by anyone. Removing them.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:25:20 +02:00
Sebastian Andrzej Siewior
8d640ad394 usb: gadget: ncm: make global variable ndp*_opts read only
There is ndp16_opts and ndp32_opts which are both global and only one
member is ever written. This patch makes the variable read-only and
moves the one member that is ever written into the private struct f_ncm.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:25:12 +02:00
Sebastian Andrzej Siewior
d3eeee6846 usb: gadget: file_storage: remove its last pieces
This patch removes the last pieces of the file_storage gadget hidden in
storage_common behind __maybe_unused bars.
The CBI bits have no user on the gadget side. Only file_storage
implemented the obsolete protocol.
The additional USB3.0 descriptors were served by file_storage, the other
gadgets are using composite for this.

Acked-by: Michal Nazarewicz <mpn@google.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-01-10 12:24:30 +02:00
Jan Beulich
75e1a2ae1f USB: ehci: make debug port in-use detection functional again
Debug port in-use determination must be done before the controller gets
reset the first time, i.e. before the call to ehci_setup() as of commit
1a49e2ac9651df7349867a5cf44e2c83de1046af. That commit effectively
rendered commit 9fa5780beea1274d498a224822397100022da7d4 useless.

While moving that code around, also fix the BAR determination - the
respective capability field is a 3- rather than a 2-bit one -, and use
PCI_CAP_ID_DBG instead of the literal 0x0a.

It's unclear to me whether the debug port functionality is important
enough to warrant fixing this in stable kernels too.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: stable <stable@vger.kernel.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-07 10:34:33 -08:00
Alan Stern
2cb5000057 USB: usbtest: fix test number in log message
This patch (as1639) fixes a minor bug in the usbtest driver.  Due to
concurrent changes, a test originally written as number 17 got changed
to number 24, but the corresponding change was not made in the log
message.  This updates the log message.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-07 10:34:20 -08:00
Greg Kroah-Hartman
102ee00191 usb-next: Further warm reset improvements
Hi Greg,
 
 Here's some patches for 3.9.  They further improve the warm reset
 error handling, but they're too big to go into stable.  There's also a
 patch to remove an unused variable in the xHCI driver.
 
 As I mentioned, you'll need to merge usb-linus into usb-next before
 applying these patches.
 
 Sarah Sharp
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.11 (GNU/Linux)
 
 iQIcBAABAgAGBQJQ5gVdAAoJEBMGWMLi1Gc5DZMQAKBwA07JWHONfJVfoPU/+Iz5
 rxstace/JP4HWerUbvuArkd7aEn+14JO2nU7czLZHxsjm1F7PiNp+f/rPTKxdoG5
 Qm6x5oASeGfFrihG8BVh4WDeT2SraCNOtD6miqZwkjVW73mfYSEjyPFxJYlnpXOI
 u7ZBQVqWC5ZTJGupR4CHs38utYFuBlS1brR+f4D4+4p/YardBM0aD2u/o5xdqQJV
 AHK1HAL9UttVubQkV7B7tQwB1hk8RQ/24TrATceQpehsqqRvWqAz2dzSivk1/tqb
 Vf8abYURxKWNUYYQ1L7iV6n+t5oiF3wK3dI+D8xwlkb4xheVwcu1lvXC0XmGdyrf
 2JqYs6quJk6755flM5qGtftdf3Bwdj8p4pqpcizxjeCDCCqIGpy+32cnzli5JfBy
 /w0pa2qbUzHZWNqGVlrqO3f8Bjb+Qsx2mqdvJVfhsbt2OsP+k/SYUwQ4UK/6ZDRO
 /mZxW0MEWVUd7CdGoFlGFam0vD/XWrPCDh32V5Oqt4kNKPHxXMjsrexR5XyRm7MV
 Kd2pA+L+XAbUPF2wJQXtyFXb4h6jtSZe6xvWujI3rtsqpeb5XyX/70uqOQ4y4ZYG
 HEWmieCCtuP+SfUQyR/xvi/WKRihQT+Pz00BlCmXEsuD5h5IBnK7i/CMBN85HUPj
 bb4GuYIrzKPADIP0ReLh
 =VBlC
 -----END PGP SIGNATURE-----

Merge tag 'for-usb-next-2013-01-03' of git://git.kernel.org/pub/scm/linux/kernel/git/sarah/xhci into usb-next

Sarah writes:
	usb-next: Further warm reset improvements

	Hi Greg,

	Here's some patches for 3.9.  They further improve the warm reset
	error handling, but they're too big to go into stable.  There's also a
	patch to remove an unused variable in the xHCI driver.

	As I mentioned, you'll need to merge usb-linus into usb-next before
	applying these patches.

	Sarah Sharp
2013-01-07 10:14:23 -08:00
Greg Kroah-Hartman
962426e0e2 usb-linus: USB core fixes for warm reset
Hi Greg,
 
 Happy New Year!  Here's some bug fixes for 3.8.  I have usb-next
 patches that are based on this set, so please merge your usb-linus
 branch into usb-next after this set is applied.
 
 The bulk of the patchset (patches 2-7) improve the USB core's warm
 reset error handling.
 
 There's also one patch that fixes an arithmetic error in the xHCI
 driver, and another to avoid the "dead ports" issue caused by
 unhandled port status change events.
 
 These are all marked for stable.
 
 Sarah Sharp
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.11 (GNU/Linux)
 
 iQIcBAABAgAGBQJQ5gLZAAoJEBMGWMLi1Gc57FUP/3PqGOZeHY9O//8tZrJGn4aL
 N1pLAO6Nz/sVcIT69G1DAFyOthD3iJJHR6yd3vlVwGYVD85M+P4DKM/xMTSeTpR0
 75RxTbcphCMKzmLvYjeWkoG2SrUNEIuTRNSRF+GaB2gp6wviNSEBJGHlxdmbXfub
 SWulb6qlr5KaSz1ecVGsGVRc0PX3m5EMq+Phi8arUyA+a5X6Q2ekcCj2IuZSCk6F
 aHJo0rcWd6Er3OpjGXM8svdQYeuBsisxQJu4/M40sxFrUJhnMujC02r0EYgSrg15
 Xjof82d22v1eFUfOAvMfSuPokMuTMakRVzLF9tCciFafYbMtYEoFUkyWHJH2tGnP
 Tn++43ps66L/vwVFy7MwRqAgekgQiCmirPaL/mFjVCrSJa3rzq4lU7Nh2+21Ri7x
 QyeVp5g0O+HufiS0koB1LARsi3M1LOG1AwFAnnf6i2L1S/i5L/cF7qr99QWELnlz
 cvhmk5w/2bsovJfiR54F4Bhod77P6U1wwjFmsYunsuPsZBRGAmPw11y24humSwll
 C2xP3tM5D8tEwvZ7rW7fwLCniJPx1aCV94Tz/vu/tuSQ+gzLEqzMyKqIwdnJMthY
 NX20cduuBMpS+F3kQ4+8yYquK0O1Vq39szPgcm2JB/ijjew10peGXw3Kwg2yBSyQ
 JuUvdVXjwUze3cDT7OaL
 =9YSo
 -----END PGP SIGNATURE-----

Merge tag 'for-usb-linus-2013-01-03' of git://git.kernel.org/pub/scm/linux/kernel/git/sarah/xhci into usb-linus

Sarah says:
	usb-linus: USB core fixes for warm reset

	Hi Greg,

	Happy New Year!  Here's some bug fixes for 3.8.  I have usb-next
	patches that are based on this set, so please merge your usb-linus
	branch into usb-next after this set is applied.

	The bulk of the patchset (patches 2-7) improve the USB core's warm
	reset error handling.

	There's also one patch that fixes an arithmetic error in the xHCI
	driver, and another to avoid the "dead ports" issue caused by
	unhandled port status change events.

	These are all marked for stable.

	Sarah Sharp
2013-01-07 10:12:35 -08:00
Greg Kroah-Hartman
e4602391e2 usb: fixes for v3.8-rc2
Here is the first set of fixes for v3.8-rc cycle.
 
 There is a build fix for musb's dsps glue layer caused
 by some header cleanup on the OMAP tree.
 
 Marvel's USB drivers got a fix up for clk API usage
 switching over to clk_prepare() calls.
 
 u_serial has a bug fix for a missing wake_up() which
 would make gs_cleanup() wait forever for gs_close()
 to finish.
 
 A minor bug fix on dwc3's debugfs interface which
 would make us read wrong addresses when dumping
 all registers.
 
 dummy_hcd learned how to enumerate g_multi.
 
 s3c-hsotg now understands that we shouldn't kfree()
 memory allocated with devm_*.
 
 Other than that, there are a bunch of other minor fixes
 on renesas_usbhs, tcm_usb_gadget and amd5536udc.
 
 All patches have been pending on mailing for many weeks
 and shouldn't cause any problems.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJQya06AAoJEIaOsuA1yqRERaoQAIwzE4HkoOVX8SU/8r02eFr7
 O+mU0bMhL8RgQ1MggSLYjA4k/E/pB4ybu1Hr/ebIcGFziyjmiZIKGeYFOXfSefnO
 AtvKRrqB62bFouTbV8JXsvfHIYIjWTqDl6Sxqjyg98lKmyBNjCWrHpWEi+7KOpI/
 1ecPonRb+SfFaFrQkHtH+1XpTca4YOemHValz/W9bHhbLFsHw1yVX9PP3Nz7MV+t
 EhOs0+uPYNs5LVyIsAslFVEnhnv4KE+eVIltnPFG/sdR02jGKo8r8JD9iIUdr6zB
 U8ScU0cqDtr3E57wa0TuoVaFaMUcWLwOpY1V1ykLWTtT3Fn6W3DlU9a7WkH+Gmis
 mH6frNUpFuMqPj+5UJv/J3p+qXMq9KmuKB2KMGCpaNg4FVVipI4Y7nNSMm9C/JEt
 0Sw2EpCo5S0Pc4DHINPVzELviTr7sSjF4q1LtY6k+4t3ZzLvxeeUlNOZvmnmNiHL
 jDBYh7EeyU4otsp0JFgK+Lj9AogP2hXCymRKz5iVwoiXYN2jK5edXkRmOnNYsNWH
 7h6mFq62sKFE9fJoJxD9Kw6PPOj64bSq0byUIUTKe62c2GuKmon94qhO6ubRI5dE
 KX/HdNxBk92hmnyp9NfVOvcG1AACReE2kqEsLBetrRhWJaiFvZupo5be0LnGM9eo
 c9bZrTZrAgIH+s+ks40X
 =UsKi
 -----END PGP SIGNATURE-----

Merge tag 'fixes-for-v3.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus

Felipe says:
	usb: fixes for v3.8-rc2

	Here is the first set of fixes for v3.8-rc cycle.

	There is a build fix for musb's dsps glue layer caused
	by some header cleanup on the OMAP tree.

	Marvel's USB drivers got a fix up for clk API usage
	switching over to clk_prepare() calls.

	u_serial has a bug fix for a missing wake_up() which
	would make gs_cleanup() wait forever for gs_close()
	to finish.

	A minor bug fix on dwc3's debugfs interface which
	would make us read wrong addresses when dumping
	all registers.

	dummy_hcd learned how to enumerate g_multi.

	s3c-hsotg now understands that we shouldn't kfree()
	memory allocated with devm_*.

	Other than that, there are a bunch of other minor fixes
	on renesas_usbhs, tcm_usb_gadget and amd5536udc.

	All patches have been pending on mailing for many weeks
	and shouldn't cause any problems.
2013-01-07 10:09:49 -08:00
Greg Kroah-Hartman
59a609a97a Drivers: usb: host: ehci-orion.c: remove __devinitdata marking
This snuck in from a different tree during the merge and needs to be
removed.

Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-03 15:57:02 -08:00
Javier Martinez Canillas
026630d09b usb: host: xhci: remove unused trb var in xhci_irq()
The union xhci_trb *trb variable is defined and assigned
inside the xHCI IRQ handler function but is never used.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
2013-01-03 14:10:39 -08:00
Sarah Sharp
470f0be8aa USB: Refactor hub_port_wait_reset.
Refactor hub_port_wait_reset into a small loop to wait for the port
reset to be complete, and then a larger block to deal with the final
port status.  This patch should not change any current behavior.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-01-03 14:10:38 -08:00
Sarah Sharp
c2f60db740 USB: Use helper function hub_set_port_link_state
Change the code that manually issues a Set Port Feature(Link State) to
use the new helper function hub_set_port_link_state().

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-01-03 14:10:36 -08:00
Sarah Sharp
d3b9d7a905 USB: Fix connected device switch to Inactive state.
A USB 3.0 device can transition to the Inactive state if a U1 or U2 exit
transition fails.  The current code in hub_events simply issues a warm
reset, but does not call any pre-reset or post-reset driver methods (or
unbind/rebind drivers without them).  Therefore the drivers won't know
their device has just been reset.

hub_events should instead call usb_reset_device.  This means
hub_port_reset now needs to figure out whether it should issue a warm
reset or a hot reset.

Remove the FIXME note about needing disconnect() for a NOTATTACHED
device.  This patch fixes that.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-01-03 14:10:35 -08:00
Sarah Sharp
a24a607875 USB: Rip out recursive call on warm port reset.
When a hot reset fails on a USB 3.0 port, the current port reset code
recursively calls hub_port_reset inside hub_port_wait_reset.  This isn't
ideal, since we should avoid recursive calls in the kernel, and it also
doesn't allow us to issue multiple warm resets on reset failures.

Rip out the recursive call.  Instead, add code to hub_port_reset to
issue a warm reset if the hot reset fails, and try multiple warm resets
before giving up on the port.

In hub_port_wait_reset, remove the recursive call and re-indent.  The
code is basically the same, except:

1. It bails out early if the port has transitioned to Inactive or
Compliance Mode after the reset completed.

2. It doesn't consider a connect status change to be a failed reset.  If
multiple warm resets needed to be issued, the connect status may have
changed, so we need to ignore that and look at the port link state
instead.  hub_port_reset will now do that.

3. It unconditionally sets udev->speed on all types of successful
resets.  The old recursive code would set the port speed when the second
hub_port_reset returned.

The old code did not handle connected devices needing a warm reset well.
There were only two situations that the old code handled correctly: an
empty port needing a warm reset, and a hot reset that migrated to a warm
reset.

When an empty port needed a warm reset, hub_port_reset was called with
the warm variable set.  The code in hub_port_finish_reset would skip
telling the USB core and the xHC host that the device was reset, because
otherwise that would result in a NULL pointer dereference.

When a USB 3.0 device reset migrated to a warm reset, the recursive call
made the call stack look like this:

hub_port_reset(warm = false)
        hub_wait_port_reset(warm = false)
                hub_port_reset(warm = true)
                        hub_wait_port_reset(warm = true)
                        hub_port_finish_reset(warm = true)
                        (return up the call stack to the first wait)

        hub_port_finish_reset(warm = false)

The old code didn't want to notify the USB core or the xHC host of device reset
twice, so it only did it in the second call to hub_port_finish_reset,
when warm was set to false.  This was necessary because
before patch two ("USB: Ignore xHCI Reset Device status."), the USB core
would pay attention to the xHC Reset Device command error status, and
the second call would always fail.

Now that we no longer have the recursive call, and warm can change from
false to true in hub_port_reset, we need to have hub_port_finish_reset
unconditionally notify the USB core and the xHC of the device reset.

In hub_port_finish_reset, unconditionally clear the connect status
change (CSC) bit for USB 3.0 hubs when the port reset is done.  If we
had to issue multiple warm resets for a device, that bit may have been
set if the device went into SS.Inactive and then was successfully warm
reset.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-01-03 14:10:33 -08:00
Sarah Sharp
2d4fa940f9 USB: Prepare for refactoring by adding extra udev checks.
The next patch will refactor the hub port code to rip out the recursive
call to hub_port_reset on a failed hot reset.  In preparation for that,
make sure all code paths can deal with being called with a NULL udev.
The usb_device will not be valid if warm reset was issued because a port
transitioned to the Inactive or Compliance Mode on a device connect.

This patch should have no effect on current behavior.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-01-03 14:10:32 -08:00
Sarah Sharp
0fe51aa5ee USB: Don't use EHCI port sempahore for USB 3.0 hubs.
The EHCI host controller needs to prevent EHCI initialization when the
UHCI or OHCI companion controller is in the middle of a port reset.  It
uses ehci_cf_port_reset_rwsem to do this.  USB 3.0 hubs can't be under
an EHCI host controller, so it makes no sense to down the semaphore for
USB 3.0 hubs.  It also makes the warm port reset code more complex.

Don't down ehci_cf_port_reset_rwsem for USB 3.0 hubs.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
2013-01-03 14:10:31 -08:00