]> Pileus Git - ~andy/linux/log
~andy/linux
11 years agoMerge tag 'xceiv-for-v3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi...
Greg Kroah-Hartman [Tue, 11 Sep 2012 20:48:01 +0000 (13:48 -0700)]
Merge tag 'xceiv-for-v3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next

usb: xceiv: patches for v3.7 merge window

nop xceiv got its own header to avoid polluting otg.h. It has also
learned to work as USB2 and USB3 phys so we can use it on USB3
controllers.

Together with those two changes to nop xceiv, we're adding basic
PHY support to dwc3 driver, this is to allow platforms which actually
have a SW-controllable PHY talk to them through dwc3 driver.

We're adding a new phy driver for the OMAP architecture. This driver
is for the PHY found in OMAP4 SoCs, and a new phy driver for the
marvell architecture. An extra phy driver - for Tegra SoCs - is now
moving from arch/arm/mach-tegra* to drivers/usb/phy.

Also here, there's the creation of <linux/usb/phy.h> which should be
used from now on for PHY drivers, even those which don't support
OTG.

11 years agoMerge tag 'gadget-for-v3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi...
Greg Kroah-Hartman [Tue, 11 Sep 2012 20:39:31 +0000 (13:39 -0700)]
Merge tag 'gadget-for-v3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next

usb: gadget: patches for v3.7 merge window

This pull request is large but the biggest part is the first part
of the cleanup on the gadget framework so we have a saner setup
to add configfs support for v3.8.

We have also some more conversions to the new udc_start/udc_stop
which makes us closer from dropping the old interfaces.

USB_GADGET_DUALSPEED and USB_GADGET_SUPERSPEED are finally gone,
thanks to Michal for his awesome work.

Other than that, we have the usual set of miscellaneous changes
and cleanups involving improvements to debug messages, removal
of duplicated includes, moving dereference after NULL test,
making renesas_hsbhs' irq handler Shared, unused code being dropped,
prevention of sleep-inside-spinlock bugs and a race condition fix
on udc-core.

11 years agoUSB/host: Cleanup unneccessary irq disable code
Chuansheng Liu [Tue, 11 Sep 2012 08:00:30 +0000 (16:00 +0800)]
USB/host: Cleanup unneccessary irq disable code

Because the IRQF_DISABLED as the flag is now a NOOP and has been
deprecated and in hardirq context the interrupt is disabled.

so in usb/host code:
Removing the usage of flag IRQF_DISABLED;
Removing the calling local_irq save/restore actions in irq
handler usb_hcd_irq();

Signed-off-by: liu chuansheng <chuansheng.liu@intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: add little-endian transform for DeviceRemovable of usb3.0 hub
Lan Tianyu [Mon, 10 Sep 2012 20:22:36 +0000 (04:22 +0800)]
usb: add little-endian transform for DeviceRemovable of usb3.0 hub

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb : Add sysfs files to control port power.
Lan Tianyu [Wed, 5 Sep 2012 05:44:38 +0000 (13:44 +0800)]
usb : Add sysfs files to control port power.

This patch adds two sysfs files for each usb hub port to allow userspace
to control the port power policy.

For an upcoming Intel xHCI roothub, this will translate into ACPI calls
to completely power off or power on the port.  As a reminder, when these
ports are completely powered off, the USB host and device will see a
physical disconnect.  All future USB device connections will be lost,
and the device will not be able to signal a remote wakeup.

The control sysfs file can be written to with two options:
"on" - port power must be on.
"off" - port must be off.

The state sysfs file reports usb port's power state:
"on" - powered on
"off" - powered off
"error" - can't get power state

For now, let userspace dictate the port power off policy.  Future
patches may add an in-kernel policy.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: Fail a get config when the port is powered off.
Lan Tianyu [Wed, 5 Sep 2012 05:44:37 +0000 (13:44 +0800)]
usb: Fail a get config when the port is powered off.

Alan Stern pointed out that a USB port could potentially get powered off
when the attached USB device is in the middle of enumerating, due to
race conditions:
http://marc.info/?l=linux-usb&m=134130616707548&w=2

If that happens, we need to ensure the enumeration fails.  If a call to
usb_get_descriptor() fails for a reason other than a Stall, return an
error.  That should handle the case where the port is powered off.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb/acpi: Use ACPI methods to power off ports.
Lan Tianyu [Wed, 5 Sep 2012 05:44:36 +0000 (13:44 +0800)]
usb/acpi: Use ACPI methods to power off ports.

Upcoming Intel systems will have an ACPI method to control whether a USB
port can be completely powered off.  The implication of powering off a
USB port is that the device and host sees a physical disconnect, and
subsequent port connections and remote wakeups will be lost.

Add a new function, usb_acpi_power_manageable(), that can be used to
find whether the usb port has ACPI power resources that can be used to
power on and off the port on these machines. Also add a new function
called usb_acpi_set_power_state() that controls the port power via these
ACPI methods.

When the USB core calls into the xHCI hub driver to power off a port,
check whether the port can be completely powered off via this new ACPI
mechanism.  If so, call into these new ACPI methods.  Also use the ACPI
methods when the USB core asks to power on a port.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoxhci: Handle clear PORT_POWER feature.
Lan Tianyu [Wed, 5 Sep 2012 05:44:35 +0000 (13:44 +0800)]
xhci: Handle clear PORT_POWER feature.

This patch makes the xHCI roothub code handle the clear PORT_POWER
feature request.  Setting port power is already handled.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb/acpi: Store info on device removability.
Lan Tianyu [Wed, 5 Sep 2012 05:44:34 +0000 (13:44 +0800)]
usb/acpi: Store info on device removability.

In the upcoming USB port power off patches, we need to know whether a
USB port can ever see a disconnect event.  Often USB ports are internal
to a system, and users can't disconnect USB devices from that port.
Sometimes those ports will remain empty, because the OEM chose not to
connect an internal USB device to that port.

According to ACPI Spec 9.13, PLD indicates whether USB port is
user visible and _UPC indicates whether a USB device can be connected to
the USB port (we'll call this "connectible").  Here's a matrix of the
possible combinations:

Visible Connectible
Name Example
-------------------------------------------------------------------------

Yes No Unknown (Invalid state.)

Yes Yes Hot-plug USB ports on the outside of a laptop.
A user could freely connect and disconnect
USB devices.

No Yes Hard-wired A USB modem hard-wired to a port on the
inside of a laptop.

No No Not used The port is internal to the system and
will remain empty.

Represent each of these four states with an enum usb_port_connect_type.
The four states are USB_PORT_CONNECT_TYPE_UNKNOWN,
USB_PORT_CONNECT_TYPE_HOT_PLUG, USB_PORT_CONNECT_TYPE_HARD_WIRED, and
USB_PORT_NOT_USED.  When we get the USB port's acpi_handle, store the
state in connect_type in struct usb_port.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb/acpi: Bind ACPI node to USB port, not usb_device.
Lan Tianyu [Wed, 5 Sep 2012 05:44:33 +0000 (13:44 +0800)]
usb/acpi: Bind ACPI node to USB port, not usb_device.

In the ACPI DSDT table, only usb root hub and usb ports are ACPI device
nodes.  Originally, we bound the usb port's ACPI node to the usb device
attached to the port.  However, we want to access those ACPI port
methods when the port is empty, and there's no usb_device associated
with that port.

Now that the usb port is a real device, we can bind the port's ACPI node
to struct usb_port instead.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: move children to struct usb_port
Lan Tianyu [Wed, 5 Sep 2012 05:44:32 +0000 (13:44 +0800)]
usb: move children to struct usb_port

The usb_device structure contains an array of usb_device "children".
This array is only valid if the usb_device is a hub, so it makes no
sense to store it there.  Instead, store the usb_device child
in its parent usb_port structure.

Since usb_port is an internal USB core structure, add a new function to
get the USB device child, usb_hub_find_child().  Add a new macro,
usb_hub_get_each_child(), to iterate over all the children attached to a
particular USB hub.

Remove the printing the USB children array pointer from the usb-ip
driver, since it's really not necessary.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: make usb port a real device
Lan Tianyu [Wed, 5 Sep 2012 05:44:31 +0000 (13:44 +0800)]
usb: make usb port a real device

This patch turns each USB port on a hub into a new struct device.  This
new device has the USB hub interface device as its parent.  The port
devices are stored in a new structure (usb_port), and an array of
usb_ports are dynamically allocated once we know how many ports the USB
hub has.

Move the port_owner variable out of usb_hub and into this new structure.

A new file will be created in the hub interface sysfs directory, so
add documentation.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: redefine DeviceRemovable and wHubDelay as _le16
Lan Tianyu [Mon, 10 Sep 2012 13:24:41 +0000 (21:24 +0800)]
usb: redefine DeviceRemovable and wHubDelay as _le16

DeviceRemovalbe and wHubDelay for usb3.0 hub are little-endian
and so define them as _le16.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb/core: use bin2bcd() for bcdDevice in RH
Sebastian Andrzej Siewior [Fri, 7 Sep 2012 12:31:45 +0000 (14:31 +0200)]
usb/core: use bin2bcd() for bcdDevice in RH

The kernel's version number is used as decimal in the bcdDevice field of
the RH descriptor. For kernel version v3.12 we would see 3.0c in lsusb.
I am not sure how important it is to stick with bcd values since this is
this way since we started git history and nobody complained (however back
then we reported only 2.6).

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agotools/usb: remove last USBFS user
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 07:16:39 +0000 (09:16 +0200)]
tools/usb: remove last USBFS user

In commit fb28d58b ("USB: remove CONFIG_USB_DEVICEFS") USBFS got
removed. Since it is gone we can stop using it in testusb and try udev
nodes right away.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousbfs: Add a new disconnect-and-claim ioctl (v2)
Hans de Goede [Sat, 8 Sep 2012 18:02:05 +0000 (20:02 +0200)]
usbfs: Add a new disconnect-and-claim ioctl (v2)

Apps which deal with devices which also have a kernel driver, need to do
the following:
1) Check which driver is attached, so as to not detach the wrong driver
   (ie detaching usbfs while another instance of the app is using the device)
2) Detach the kernel driver
3) Claim the interface

Where moving from one step to the next for both 1-2 and 2-3 consists of
a (small) race window. So currently such apps are racy and people just live
with it.

This patch adds a new ioctl which makes it possible for apps to do this
in a race free manner. For flexibility apps can choose to:
1) Specify the driver to disconnect
2) Specify to disconnect any driver except for the one named by the app
3) Disconnect any driver

Note that if there is no driver attached, the ioctl will just act like the
regular claim-interface ioctl, this is by design, as returning an error for
this condition would open a new bag of race-conditions.

Changes in v2:
-Fix indentation of if blocks where the condition spans multiple lines

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: gadget serial: don't shift bcd version left by 16
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 17:06:44 +0000 (19:06 +0200)]
usb: gadget serial: don't shift bcd version left by 16

Fengguang Wu reported:
|drivers/usb/gadget/serial.c:89:22: sparse: cast truncates bits from
|constant value (24000000 becomes 0)

I obviously let the version number shift away. Since the version is a
16bit number it can be applied as it.

Cc: fengguang.wu@intel.com
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: mxs-phy: Fix mx23 operation
Mike Thompson [Thu, 30 Aug 2012 21:26:25 +0000 (18:26 -0300)]
usb: otg: mxs-phy: Fix mx23 operation

Currently mx23 fails to enumerate a USB device:

[ 1.300000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 1.520000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 1.740000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 1.960000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 2.180000] hub 1-0:1.0: unable to enumerate USB device on port 1

Use a kernel workqueue to asynchronously delay the setting of
ENHOSTDISCONDETECT bit until after higher level hub connect/reset processing
is complete.  Prematurely setting the bit prevents the connection
processing from completing and not setting it prevents disconnect from being
detected. No delay is needed for clearing of ENHOSTDISCONDETECT.

Successfully tested on mx23-olinuxino (micro, mini and maxi variants) and mx28evk.

Cc: stable@vger.kernel.org # v3.6
Signed-off-by: Mike Thompson <mpthompson@gmail.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: add basic PHY support
Felipe Balbi [Thu, 19 Jul 2012 11:09:48 +0000 (14:09 +0300)]
usb: dwc3: add basic PHY support

this will let us control PHYs on platforms which
need them.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: exynos: add nop transceiver support
Felipe Balbi [Thu, 19 Jul 2012 11:01:10 +0000 (14:01 +0300)]
usb: dwc3: exynos: add nop transceiver support

We will be adding support for transceivers on
dwc3 driver but not all boards have controllable
transceivers.

For those which don't provide controllable transceivers
we will register nop transceivers.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: omap: add nop transceiver support
Felipe Balbi [Thu, 19 Jul 2012 10:56:07 +0000 (13:56 +0300)]
usb: dwc3: omap: add nop transceiver support

We will be adding support for transceivers on
dwc3 driver but not all boards have controllable
transceivers.

For those which don't provide controllable transceivers
we will register nop transceivers.

Note that once OMAP's transceiver drivers reach mainline,
this glue layer will change accordingly.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: pci: add nop transceiver support
Felipe Balbi [Thu, 19 Jul 2012 10:50:44 +0000 (13:50 +0300)]
usb: dwc3: pci: add nop transceiver support

We will be adding support for transceivers on
dwc3 driver but not all boards have controllable
transceivers.

For those which don't provide controllable transceivers
we will register nop transceivers.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: move the dereference below the NULL test
Wei Yongjun [Mon, 10 Sep 2012 04:42:31 +0000 (12:42 +0800)]
usb: otg: move the dereference below the NULL test

The dereference should be moved below the NULL test.

spatch with a semantic match is used to found this.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: add module.h to u_ether.c
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 14:30:50 +0000 (16:30 +0200)]
usb: gadget: add module.h to u_ether.c

Spotted by Fengguang Wu:
|In file included from drivers/usb/gadget/ether.c:110:0:
|drivers/usb/gadget/u_ether.c:87:21: error: expected ')' before 'uint'
|drivers/usb/gadget/u_ether.c:88:25: error: expected ')' before string constant

This is because u_ether.c relied on having module.h included somewhere.
This isn't the case since composite.c is no longer included.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: remove usb_gadget_controller_number()
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 07:16:07 +0000 (09:16 +0200)]
usb: gadget: remove usb_gadget_controller_number()

The bcdDevice field is defined as
|Device release number in binary-coded decimal
in the USB 2.0 specification. We use this field to distinguish the UDCs
from each other. In theory this could be used on the host side to apply
certain quirks if the "special" UDC in combination with this gadget is
used. This hasn't been done as far as I am aware. In practice it would
be better to fix the UDC driver before shipping since a later release
might not need this quirk anymore.

There are some driver in tree (on the host side) which use the bcdDevice
field to figure out special workarounds for a given firmware revision.
This seems to make sense. Therefore this patch converts all gadgets
(except a few) to use the kernel version instead a random 2 or 3 plus
the UDC number. The few that don't report kernel's version are:
- webcam
  This one reports always a version 0x10 so allow it to do so in future.
- nokia
  This one reports always 0x211. The comment says that this gadget works
  only if the UDC supports altsettings so I added a check for this.
- serial
  This one reports 0x2400 + UDC number. Since the gadget version is 2.4
  this could make sense. Therefore bcdDevice is 0x2400 here.

I also remove various gadget_is_<name> macros which are unused. The
remaining few macros should be moved to feature / bug bitfield.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: at91_udc: fix dt support
Fabio Porcedda [Fri, 7 Sep 2012 13:27:42 +0000 (15:27 +0200)]
usb: gadget: at91_udc: fix dt support

Don't fail the initialization check for the platform_data
if there is avaiable an associated device tree node.

Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: at91_udc: move the dereference below the NULL test
Wei Yongjun [Fri, 7 Sep 2012 06:54:25 +0000 (14:54 +0800)]
usb: gadget: at91_udc: move the dereference below the NULL test

The dereference should be moved below the NULL test.

spatch with a semantic match is used to found this.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: libcomposite: move MODULE_VERSION to composite.c
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:28 +0000 (20:11 +0200)]
usb: gadget: libcomposite: move MODULE_VERSION to composite.c

MODULE_VERSION and AUTHOR looks better in composite.c than in
usbstrings.c so I move it there.
I put David Brownell as the module Author as I belive he wrote most of
it.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: libcomposite: move composite.c into libcomposite
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:27 +0000 (20:11 +0200)]
usb: gadget: libcomposite: move composite.c into libcomposite

This moves composite.c into libcomposite and updates all gadgets.
Finally!

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: Provide a default implementation of default manufacturer string
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:58 +0000 (15:01 +0200)]
usb: gadget: Provide a default implementation of default manufacturer string

Some gadgets provide custom entry here. Some may override it with an
etntry that is also created by composite if there was no value sumbitted
at all.
This patch removes all "custom manufacturer" strings which are the same
as these which are created by composite. Then it moves the creation of
the default manufacturer string to usb_composite_overwrite_options() in
case no command line argument has been used and the entry is still an
empty string.
By doing this we get rid of the global variable "composite_manufacturer"
in composite.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: remove string override from struct usb_composite_driver
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:57 +0000 (15:01 +0200)]
usb: gadget: remove string override from struct usb_composite_driver

The struct usb_composite_driver members iProduct, iSerial and
iManufacturer can be entered directly via the string array. There is no
need for them to appear here.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: push iProduct into gadgets
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:56 +0000 (15:01 +0200)]
usb: gadget: push iProduct into gadgets

This patch pushes the iProduct module argument from composite
into each gadget.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: push iManufacturer into gadgets
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:55 +0000 (15:01 +0200)]
usb: gadget: push iManufacturer into gadgets

This patch pushes the iManufacturer module argument from composite into
each gadget. Once the user uses the module paramter, the string is
overwritten with the final value.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: push iSerialNumber into gadgets
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:54 +0000 (15:01 +0200)]
usb: gadget: push iSerialNumber into gadgets

This patch pushes the iSerialNumber module argument from composite into
each gadget. Once the user uses the module paramter, the string is
overwritten with the final value.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: make sure each gadget is using same index for Product, Serial,…
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:21 +0000 (20:11 +0200)]
usb: gadget: make sure each gadget is using same index for Product, Serial,…

The index in usb_string array is defined by the gadget. The gadget can
choose which index entry it assigns for the serial number and which the
product name. The gadget has just to ensure that the descriptor contains
the proper string id which is assigned by composite.
If the composite layer knows the index of the "default" information
which will be overwritten by module parameters, it can be used later to
overwrite it.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: push VID/PID/USB BCD module option into gadgets
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:53 +0000 (15:01 +0200)]
usb: gadget: push VID/PID/USB BCD module option into gadgets

This patch moves the module options idVendor, idProduct and bcdDevice
from composite.c into each gadgets. This ensures compatibility with
current gadgets and removes the global variable which brings me step
closer towards composite.c in libcomposite

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: move usb_gadget_controller_number() into a .c file and libcomposite
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:19 +0000 (20:11 +0200)]
usb: gadget: move usb_gadget_controller_number() into a .c file and libcomposite

After I moved the function from the header file to the c file I see:

| $ size drivers/usb/gadget/gadget_chips.o
| text    data     bss     dec     hex filename
| 1048       0       0    1048     418 drivers/usb/gadget/gadget_chips.o

That is almost a KiB which is removed from each user.
As Felipe pointed out, the function / usage is very dumb actually. This is
used for the following reasons:
- epautoconf ep hint (could provide a per-gadget callback)
- miss-features. currently the missing altsetting on pxa's and something
  ZLP related on musbhdrc (looks like an optimisation which could be
  implemented in musb itself if it is correct)
- unique BCD accross all UDCs. Not sure how important this is.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: initialize the strings in tcm_usb_gadget properly
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:18 +0000 (20:11 +0200)]
usb: gadget: initialize the strings in tcm_usb_gadget properly

I have no idea what I've been thinking while I was doing this in the first
place. Now the strings are initialized properly and reported by lsusb.

Cc: stable@vger.kernel.org # v3.5
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: make g_printer enumerate again
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:17 +0000 (20:11 +0200)]
usb: gadget: make g_printer enumerate again

This was broken in 2e87edf49 ("usb: gadget: make g_printer use
composite").
The USB-strings were not setup properly and were not used. No function
was added which results in an empty USB config.
While fixing this, the interface number is now auto generated and not
hard coded to 0.

Cc: stable@vger.kernel.org # v3.5
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: use usb_string_ids_tab instead multiple usb_string_id()
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:16 +0000 (20:11 +0200)]
usb: gadget: use usb_string_ids_tab instead multiple usb_string_id()

Using usb_string_ids_tab() instead multiple calls of usb_string_id()
seems to be handy. It also allows to add string without many checks.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: make composite module options readonly only
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:15 +0000 (20:11 +0200)]
usb: gadget: make composite module options readonly only

This is a partly revert of 4fffd6e5 ("usb: gadget: composite: make
module parameters accessible at runtime").
It is not possible to change the VID or other property for a gadget
right now. This change has been made for Anrdoid gadget which has this
functionality in its copy of the file. This function is executed currently
only once and most caller in tree are __init.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: remove bufsiz from struct usb_composite_dev
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:52 +0000 (15:01 +0200)]
usb: gadget: remove bufsiz from struct usb_composite_dev

there is no read user of bufsiz, its content is available via
USB_COMP_EP0_BUFSIZ. Remove it.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: move USB_BUFSIZ into global composite.h
Sebastian Andrzej Siewior [Mon, 10 Sep 2012 13:01:51 +0000 (15:01 +0200)]
usb: gadget: move USB_BUFSIZ into global composite.h

This patch moves USB_BUFSIZ into global header file as
USB_COMP_EP0_BUFSIZ. There is currently only one user (f_sourcesink)
besides composite which need it. Ideally f_sourcesink would have its
own ep0 buffer. Lets keep it that way it was for now.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: libcomposite: add epautoconf.c to libcomposite
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:12 +0000 (20:11 +0200)]
usb: gadget: libcomposite: add epautoconf.c to libcomposite

This patch adds epautoconf.c into libcomposite and updates all gadgets.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: move global vars from epautoconf into struct usb_gadget
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:11 +0000 (20:11 +0200)]
usb: gadget: move global vars from epautoconf into struct usb_gadget

epautoconf has two global variables which count the endpoint number of
last assigned endpoint.
This patch removes the global variable and keeps it as per (UDC) gadget.
While here, the ifdef is removed and now the in and outpoint are
enumerated unconditionally. The dwc3 for instance supports 32 endpoints
in total.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: libcomposite: move config.c into libcomposite
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:10 +0000 (20:11 +0200)]
usb: gadget: libcomposite: move config.c into libcomposite

This patch moves config.c into libcomposite and updates all gadgets.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: start with libcomposite
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:09 +0000 (20:11 +0200)]
usb: gadget: start with libcomposite

This patch aims to be simple. It removes #include usbstribgs.c line from each
gadget and creates libcomposite.ko which has only one member, that is
usbstribgs.c.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: pxa25x: make it compile with debug again
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:08 +0000 (20:11 +0200)]
usb: gadget: pxa25x: make it compile with debug again

|drivers/usb/gadget/pxa25x_udc.h: In function 'dump_state':
|drivers/usb/gadget/pxa25x_udc.h:228:20: error: invalid type argument of '->' (have 'struct usb_ep')

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: remove global variable composite in composite.c
Sebastian Andrzej Siewior [Fri, 7 Sep 2012 07:53:17 +0000 (09:53 +0200)]
usb: gadget: remove global variable composite in composite.c

This patch removes the global variable composite in composite.c.
The private data which was saved there is now passed via an additional
argument to the bind() function in struct usb_gadget_driver.

Only the "old-style" UDC drivers have to be touched here, new style are
doing it right because this change is made in udc-core.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agostaging: ccg: include all sourced files
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:06 +0000 (20:11 +0200)]
staging: ccg: include all sourced files

This Android gadget includes a bunch of .c files. Fixing normal gadgets
is not the real problem but this gadget is not always fixable since the
problem here are fundumential / design.

*I* wanted to get this removed but other people want to keep it even
though there were reports that Android itself is not using it. Some
poeple think that it is better to have this instead of nothing and other
argue that they need sdb and mass storage gadget. The sdb function is
not provided by ccg so I don't see the point of this. I don't see any
logical reasoning behind it and I decided that it is time for retreat.

This patch brings all dependencies of ccg into staging so I can do
whatever I want in drivers/usb/gadget without breaking ccg.

Cc: devel@driverdev.osuosl.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: move bind() callback back to struct usb_gadget_driver
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:05 +0000 (20:11 +0200)]
usb: gadget: move bind() callback back to struct usb_gadget_driver

This partly reverts 07a18bd7 ("usb gadget: don't save bind callback in
struct usb_composite_driver") and fixes new drivers. The section missmatch
problems was solved by whitelisting bind callback in modpost.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: move bind() callback back to struct usb_composite_driver
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:04 +0000 (20:11 +0200)]
usb: gadget: move bind() callback back to struct usb_composite_driver

This partly reverts 07a18bd7 ("usb gadget: don't save bind callback in
struct usb_composite_driver") and fixes new drivers. The section missmatch
problems was solved by whitelisting structs in question via __ref.

Cc: devel@driverdev.osuosl.org
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: push all usb_composite_driver structs into __refdata
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:03 +0000 (20:11 +0200)]
usb: gadget: push all usb_composite_driver structs into __refdata

As it turns out, Sam's comment was better than I initially assumed. This
patch pushes as struct usb_composite_driver data structures into
__refdata section to avoid a section missmatch report from modpost
because the ->bind() can be marked __init. The only downside is that
modpost does not check between ->bind() and other member. However, it is
temporary.

Cc: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: remove __devexit in f_uac2
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:02 +0000 (20:11 +0200)]
usb: gadget: remove __devexit in f_uac2

avoids the following section missmatch
|WARNING: drivers/usb/gadget/g_audio.o(.init.text+0x2e7): Section
|mismatch in reference from the function afunc_bind() to the function
|.devexit.text:snd_uac2_remove()
|The function __init afunc_bind() references
|a function __devexit snd_uac2_remove().
|This is often seen when error handling in the init function
|uses functionality in the exit path.
|The fix is often to remove the __devexit annotation of
|snd_uac2_remove() so it may be used outside an exit section.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: move bind callback into driver struct usb_composite_driver
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:01 +0000 (20:11 +0200)]
usb: gadget: move bind callback into driver struct usb_composite_driver

It was moved to be an argument in 07a18bd716ed5 ("usb gadget: don't
save bind callback in struct usb_composite_driver"). The reason was to
avoid the section missmatch. The warning was shown because ->bind is
marked as __init becuase it is a one time init. The warning can be also
suppresed by whitelisting the variable i.e. rename it to lets say _probe.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agostaging: ccg: Add a note about compatibility issues.
Sebastian Andrzej Siewior [Thu, 6 Sep 2012 18:11:00 +0000 (20:11 +0200)]
staging: ccg: Add a note about compatibility issues.

The first item on the todo list is a new user interface. Put this
information into Kconfig's help entry to people are not too confusing
once an user API changes which does not happen in kernel otherwise.

Cc: devel@driverdev.osuosl.org
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agoUSB: PLAT_ORION fulfils USB_ARCH_HAS_EHCI
Andrew Lunn [Mon, 3 Sep 2012 18:21:15 +0000 (20:21 +0200)]
USB: PLAT_ORION fulfils USB_ARCH_HAS_EHCI

The various Orion SoCs, i.e. orion5x, kirkwood, dove, mv78xx0
and 370/XP have EHCI. Make sure USB_ARCH_HAS_EHCI reflects this.

Reported-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoarm: omap: phy: remove unused functions from omap-phy-internal.c
Kishon Vijay Abraham I [Thu, 6 Sep 2012 14:57:10 +0000 (20:27 +0530)]
arm: omap: phy: remove unused functions from omap-phy-internal.c

All the unnessary functions in omap-phy-internal is removed.
These functionality are now handled by omap-usb2 phy driver.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: twl4030: Add device tree support for twl4030 usb
Kishon Vijay Abraham I [Thu, 6 Sep 2012 14:57:09 +0000 (20:27 +0530)]
usb: twl4030: Add device tree support for twl4030 usb

Add device tree support for twl4030 usb driver.
Update the Documentation with device tree binding information.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: twl6030: Add dt support for twl6030 usb
Kishon Vijay Abraham I [Thu, 6 Sep 2012 14:57:08 +0000 (20:27 +0530)]
usb: twl6030: Add dt support for twl6030 usb

Add device tree support for twl6030 usb driver.
Update the Documentation with device tree binding information.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: make twl6030_usb as a comparator driver to omap_usb2
Kishon Vijay Abraham I [Thu, 6 Sep 2012 14:57:07 +0000 (20:27 +0530)]
usb: otg: make twl6030_usb as a comparator driver to omap_usb2

All the PHY configuration other than VBUS, ID GND and OTG SRP are removed
from twl6030. The phy configurations are taken care by the dedicated
usb2 phy driver. So twl6030 is made as comparator driver for VBUS and
ID detection.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: add a new driver for omap usb2 phy
Kishon Vijay Abraham I [Thu, 6 Sep 2012 14:57:06 +0000 (20:27 +0530)]
usb: phy: add a new driver for omap usb2 phy

All phy related programming like enabling/disabling the clocks, powering
on/off the phy is taken care of by this driver. It is also used for OTG
related functionality like srp.

This also includes device tree support for usb2 phy driver and
the documentation with device tree binding information is updated.

Currently writing to control module register is taken care in this
driver which will be removed once the control module driver is in place.

Cc: Felipe Balbi <balbi@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: fix build break
Venu Byravarasu [Thu, 6 Sep 2012 05:12:15 +0000 (10:42 +0530)]
usb: phy: fix build break

During phy interface separation from otg.h, as the enum "usb_otg_state"
was having multiple otg states info and removal of member 'state'
of this enum type from usb_phy struct did not generate any compilation
issues, I removed member state from struct usb_phy.

As this is causing build break in musb code, adding member 'state'
to usb_phy structure.

Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: remove libusual
Sebastian Andrzej Siewior [Tue, 28 Aug 2012 20:37:13 +0000 (22:37 +0200)]
usb: remove libusual

The "Low Performance USB Block driver" has been removed which a user of
libusual. Now we have only the usb-storage driver as the only driver in
tree. This makes libusual needless.
This patch removes libusal, fixes up all users. The usual-table is now
linked into usb-storage.
usb_usual.h remains in public include directory because some staging
users seem to need it.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoblock: remove the deprecated ub driver
Cong Wang [Sun, 26 Aug 2012 06:40:07 +0000 (14:40 +0800)]
block: remove the deprecated ub driver

It was scheduled to be removed in 3.6.

Acked-by: Pete Zaitcev <zaitcev@redhat.com>
Cc: Jens Axboe <jaxboe@fusionio.com>
Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoUSB: cp210x: remove useless set memory to zero use memset()
Wei Yongjun [Mon, 27 Aug 2012 07:07:17 +0000 (15:07 +0800)]
USB: cp210x: remove useless set memory to zero use memset()

The memory return by kzalloc() or kmem_cache_zalloc() has already
be set to zero, so remove useless memset(0).

spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoUSB: FHCI: use list_move_tail instead of list_del/list_add_tail
Wei Yongjun [Wed, 5 Sep 2012 06:41:44 +0000 (14:41 +0800)]
USB: FHCI: use list_move_tail instead of list_del/list_add_tail

Using list_move_tail() instead of list_del() + list_add_tail().

spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: cdc-acm: remove duplicated include from cdc-acm.c
Wei Yongjun [Sun, 26 Aug 2012 01:44:45 +0000 (09:44 +0800)]
usb: cdc-acm: remove duplicated include from cdc-acm.c

Remove duplicated include.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Acked-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agodrivers/usb/gadget/lpc32xx_udc.c: adjust inconsistent IS_ERR and PTR_ERR
Julia Lawall [Sat, 25 Aug 2012 19:57:06 +0000 (21:57 +0200)]
drivers/usb/gadget/lpc32xx_udc.c: adjust inconsistent IS_ERR and PTR_ERR

Change the call to PTR_ERR to access the value just tested by IS_ERR.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression e,e1;
@@

(
if (IS_ERR(e)) { ... PTR_ERR(e) ... }
|
if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
|
*if (IS_ERR(e))
 { ...
*  PTR_ERR(e1)
   ... }
)
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agodrivers/usb/host/ohci-nxp.c: adjust inconsistent IS_ERR and PTR_ERR
Julia Lawall [Sat, 25 Aug 2012 19:57:07 +0000 (21:57 +0200)]
drivers/usb/host/ohci-nxp.c: adjust inconsistent IS_ERR and PTR_ERR

Change the call to PTR_ERR to access the value just tested by IS_ERR.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression e,e1;
@@

(
if (IS_ERR(e)) { ... PTR_ERR(e) ... }
|
if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
|
*if (IS_ERR(e))
 { ...
*  PTR_ERR(e1)
   ... }
)
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: ohci: Fix Kconfig dependency on USB_ISP1301
Roland Stigge [Thu, 23 Aug 2012 11:05:34 +0000 (13:05 +0200)]
usb: ohci: Fix Kconfig dependency on USB_ISP1301

With "select USB_ISP1301 ...", it could happen that I2C isn't selected although
USB_ISP1301 depends on it. Fixing with "depends on ..." and emulating the
condition via "|| !()".

Signed-off-by: Roland Stigge <stigge@antcom.de>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: renesas_usbhs: fixup DMA transport data alignment
Kuninori Morimoto [Thu, 23 Aug 2012 01:01:13 +0000 (18:01 -0700)]
usb: renesas_usbhs: fixup DMA transport data alignment

renesas_usbhs dma can transport 8byte alignment data, not 4byte.
This patch fixup it.

Reported-by: Sugnan Prabhu S <sugnan.prabhu@renesasmobile.com>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agopowerpc/usb: fix bug of CPU hang when missing USB PHY clock
Shengzhou Liu [Wed, 22 Aug 2012 10:17:00 +0000 (18:17 +0800)]
powerpc/usb: fix bug of CPU hang when missing USB PHY clock

when missing USB PHY clock, kernel booting up will hang during USB
initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid
CPU hanging in this case.

Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoUSB: mos7720: fix to use list_for_each_entry_safe() when delete items
Wei Yongjun [Tue, 21 Aug 2012 03:28:45 +0000 (11:28 +0800)]
USB: mos7720: fix to use list_for_each_entry_safe() when delete items

Since we will be removing items off the list using list_del() we need
to use a safer version of the list_for_each_entry() macro aptly named
list_for_each_entry_safe(). We should use the safe macro if the loop
involves deletions of items.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: renesas_usbhs: modify the irq handler for sharing irq
Shimoda, Yoshihiro [Mon, 20 Aug 2012 09:39:23 +0000 (18:39 +0900)]
usb: renesas_usbhs: modify the irq handler for sharing irq

When IORESOURCE_IRQ_SHAREABLE is set, the irq handler may be called
even if the interupt of the USB module doesn't happen. So, it may
clear the interrupt flags by mistake. This patch fixes it.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoUSB: isp1301: Remove unused static array and define
Roland Stigge [Sun, 19 Aug 2012 11:04:29 +0000 (13:04 +0200)]
USB: isp1301: Remove unused static array and define

This patch removes an unused statically defined array and an associated #define.

Signed-off-by: Roland Stigge <stigge@antcom.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb host: fix spelling of provides in Kconfig
Peter Meerwald [Sat, 18 Aug 2012 13:53:12 +0000 (15:53 +0200)]
usb host: fix spelling of provides in Kconfig

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: move phy driver from mach-tegra to drivers/usb
Venu Byravarasu [Wed, 5 Sep 2012 13:20:23 +0000 (18:50 +0530)]
usb: move phy driver from mach-tegra to drivers/usb

As part of this patch:
1. Moved existing tegra phy driver to drivers/USB directory.
2. Added standard USB phy driver APIs to tegra phy driver.

Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: bcm63xx UDC driver
Kevin Cernekee [Sat, 25 Aug 2012 19:38:52 +0000 (12:38 -0700)]
usb: gadget: bcm63xx UDC driver

Driver for the "USB20D" / "USBD" block on BCM6328, BCM6368, BCM6816,
BCM6362, BCM3383, and others.

The hardware block was designed to support networking applications
(direct connection of a home router to a PC), and the endpoint
configuration is fixed.

[ balbi@ti.com : dropped USB_GADGET_DUALSPEED from Kconfig ]

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Acked-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: Move phy interface to separate file.
Venu Byravarasu [Tue, 4 Sep 2012 08:55:58 +0000 (14:25 +0530)]
usb: otg: Move phy interface to separate file.

As otg.h is containing lots of phy interface related
stuff, moving all phy interface related stuff to new
file named phy.h

Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c-hsotg: Use devm_clk_get function
Sachin Kamat [Mon, 3 Sep 2012 10:45:18 +0000 (16:15 +0530)]
usb: gadget: s3c-hsotg: Use devm_clk_get function

devm_* functions are already used in this file. Hence
convert clk_get to devm_clk_get for completeness.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c-hsudc: Replace 0 with NULL for pointers
Sachin Kamat [Mon, 3 Sep 2012 10:18:20 +0000 (15:48 +0530)]
usb: gadget: s3c-hsudc: Replace 0 with NULL for pointers

Silences the following type of sparse warnings:
warning: Using plain integer as NULL pointer

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c-hsudc: Add missing braces around sizeof
Sachin Kamat [Mon, 3 Sep 2012 10:18:19 +0000 (15:48 +0530)]
usb: gadget: s3c-hsudc: Add missing braces around sizeof

Silences the following checkpatch warning:
WARNING: sizeof *hsreq should be sizeof(*hsreq)

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c-hsudc: Use devm_* functions
Sachin Kamat [Mon, 3 Sep 2012 10:18:18 +0000 (15:48 +0530)]
usb: gadget: s3c-hsudc: Use devm_* functions

devm_* functions are used to replace kzalloc, request_mem_region, ioremap
clk_get and request_irq functions in probe call. With the usage of devm_*
functions explicit freeing and unmapping is not required.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: remove duplicated include from pxa25x_udc.c
Wei Yongjun [Sun, 26 Aug 2012 01:43:00 +0000 (09:43 +0800)]
usb: gadget: remove duplicated include from pxa25x_udc.c

From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

Remove duplicated include.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: lpc32xx_udc.c: adjust inconsistent IS_ERR and PTR_ERR
Julia Lawall [Sat, 25 Aug 2012 19:57:06 +0000 (21:57 +0200)]
usb: gadget: lpc32xx_udc.c: adjust inconsistent IS_ERR and PTR_ERR

Change the call to PTR_ERR to access the value just tested by IS_ERR.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression e,e1;
@@

(
if (IS_ERR(e)) { ... PTR_ERR(e) ... }
|
if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
|
*if (IS_ERR(e))
 { ...
*  PTR_ERR(e1)
   ... }
)
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: get rid of USB_GADGET_{DUAL,SUPER}SPEED
Michal Nazarewicz [Fri, 24 Aug 2012 18:46:18 +0000 (20:46 +0200)]
usb: gadget: get rid of USB_GADGET_{DUAL,SUPER}SPEED

This commit removes USB_GADGET_DUALSPEED and USB_GADGET_SUPERSPEED
Kconfig options.  Since now kernel allows many UDC drivers to be
compiled, those options may turn to no longer be valid.  For
instance, if someone decides to build UDC that supports super
speed and UDC that supports high speed only, the latter will be
"assumed" to support super speed since USB_GADGET_SUPERSPEED will
be selected by the former.

The test of whether CONFIG_USB_GADGET_*SPEED was defined was just
an optimisation which removed otherwise dead code (ie. if UDC is
not dual speed, there is no need to handle cases that can happen
if speed is high).  This commit removes those checks.

Signed-off-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c2410_udc: Do not use integer for NULL
Sachin Kamat [Wed, 22 Aug 2012 10:19:02 +0000 (15:49 +0530)]
usb: gadget: s3c2410_udc: Do not use integer for NULL

'req' being a pointer shouldn't be equated with 0.

Fixes the following compilation warning:
drivers/usb/gadget/s3c2410_udc.c:1299:13: warning:
Using plain integer as NULL pointer

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c2410_udc: Move assignment outside if condition
Sachin Kamat [Wed, 22 Aug 2012 10:19:01 +0000 (15:49 +0530)]
usb: gadget: s3c2410_udc: Move assignment outside if condition

Fixes the following checkpatch errors:
ERROR: do not use assignment in if condition

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c2410_udc: Silence checkpatch errors and warnings
Sachin Kamat [Wed, 22 Aug 2012 10:19:00 +0000 (15:49 +0530)]
usb: gadget: s3c2410_udc: Silence checkpatch errors and warnings

Silences about 75 errors and warnings related to
- Spacing
- Alignment of braces
- Line over 80 characters

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c2410_udc: Use pr_* and dev_err functions
Sachin Kamat [Wed, 22 Aug 2012 10:18:59 +0000 (15:48 +0530)]
usb: gadget: s3c2410_udc: Use pr_* and dev_err functions

Replace printk with corresponding pr_* and dev_err functions.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c2410_udc: Replace <asm/io.h> with <linux/io.h>
Sachin Kamat [Wed, 22 Aug 2012 10:18:58 +0000 (15:48 +0530)]
usb: gadget: s3c2410_udc: Replace <asm/io.h> with <linux/io.h>

Fixes the following warning:
WARNING: Use #include <linux/io.h> instead of <asm/io.h>

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: dummy-hcd: remember to update driver pointer
Alan Stern [Mon, 20 Aug 2012 20:12:47 +0000 (16:12 -0400)]
usb: gadget: dummy-hcd: remember to update driver pointer

This patch (as1599) fixes dummy-hcd to make it update the appropriate
driver pointer when a new gadget driver is bound or unbound.  Without
this change, the gadget driver's name doesn't appear in dev_printk
output.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: lpc32xx_udc: Support multiple controllers
Roland Stigge [Mon, 20 Aug 2012 08:30:14 +0000 (10:30 +0200)]
usb: gadget: lpc32xx_udc: Support multiple controllers

The lpc32xx_udc driver supported only one controller by defining a global
static struct for it. This patch enables multiple instances of the controller
by dynamic allocation of the struct at probe(). A static struct is kept as a
template on initialization since it does some complex preset, reflecting fixed
hardware endpoint structure.

Signed-off-by: Roland Stigge <stigge@antcom.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: lpc32xx_udc: Remove usb_endpoint_descriptor
Roland Stigge [Mon, 20 Aug 2012 08:30:13 +0000 (10:30 +0200)]
usb: gadget: lpc32xx_udc: Remove usb_endpoint_descriptor

This patch removes the utilization of struct usb_endpoint_descriptor, as done
by other drivers also. This was done on request by the USB gadget maintainers,
since this API is obsoleted.

Signed-off-by: Roland Stigge <stigge@antcom.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: lpc32xx_udc: Port to new start/stop interface
Roland Stigge [Mon, 20 Aug 2012 08:30:12 +0000 (10:30 +0200)]
usb: gadget: lpc32xx_udc: Port to new start/stop interface

This patch adjusts the LPC32xx USB gadget driver to the new udc_start /
udc_stop interface.

Signed-off-by: Roland Stigge <stigge@antcom.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agoMerge v3.6-rc3 into usb-next
Greg Kroah-Hartman [Mon, 27 Aug 2012 14:15:30 +0000 (07:15 -0700)]
Merge v3.6-rc3 into usb-next

This picks up fixes that we need in this branch for testing.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agousb: renesas_usbhs: modify the irq handler for sharing irq
Shimoda, Yoshihiro [Mon, 20 Aug 2012 09:39:23 +0000 (18:39 +0900)]
usb: renesas_usbhs: modify the irq handler for sharing irq

When IORESOURCE_IRQ_SHAREABLE is set, the irq handler may be called
even if the interupt of the USB module doesn't happen. So, it may
clear the interrupt flags by mistake. This patch fixes it.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: use %pm to print mac addresses
Andy Shevchenko [Fri, 6 Jul 2012 15:30:21 +0000 (18:30 +0300)]
usb: gadget: use %pm to print mac addresses

%pm already provides pretty print for mac addresses, let's
use that and drop homebrew mac address printing.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: udc-core: Race between disconnect/unbind and setup
Kevin Cernekee [Thu, 9 Aug 2012 08:23:52 +0000 (11:23 +0300)]
usb: gadget: udc-core: Race between disconnect/unbind and setup

usb_gadget_remove_driver() runs through a four-step sequence to shut down
the gadget driver.  For the case of a composite gadget + at91 UDC, this
would look like:

    udc->driver->disconnect(udc->gadget);          // composite_disconnect()
    usb_gadget_disconnect(udc->gadget);            // at91_pullup(gadget, 0)
    udc->driver->unbind(udc->gadget);              // composite_unbind()
    usb_gadget_udc_stop(udc->gadget, udc->driver); // at91_stop()

The UDC driver can receive SETUP packets from the host up until the
point when usb_gadget_disconnect() returns.  On rare occasions, the
gadget driver may see this sequence:

    udc->driver->disconnect(udc->gadget);          // composite_disconnect()
    udc->driver->setup(udc->gadget, &ctrl);        // composite_setup()
    udc->driver->unbind(udc->gadget);              // composite_unbind()

Some gadget drivers, such as composite, assume this will never happen
and crash as a result.

The fix is to quiesce the UDC hardware (via usb_gadget_disconnect)
before running the gadget driver through the disconnect/unbind sequence.

Reviewed-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>