platform/kernel/linux-3.10.git
11 years agousb: gadget/uvc: Add support for 'get_unmapped_area' for MMUless architectures
Bhupesh Sharma [Thu, 28 Mar 2013 09:41:53 +0000 (15:11 +0530)]
usb: gadget/uvc: Add support for 'get_unmapped_area' for MMUless architectures

This patch adds the support for 'get_unmapped_area' in UVC gadget
which is called when the 'mmap' system call is executed on MMUless
architectures.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
11 years agousb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework
Bhupesh Sharma [Thu, 28 Mar 2013 09:41:52 +0000 (15:11 +0530)]
usb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework

This patch reworks the videobuffer management logic present in the UVC
webcam gadget and ports it to use the "more apt" videobuf2 framework for
video buffer management.

To support routing video data captured from a real V4L2 video capture
device with a "zero copy" operation on videobuffers (as they pass from
the V4L2 domain to UVC domain via a user-space application), we need to
support USER_PTR IO method at the UVC gadget side.

So the V4L2 capture device driver can still continue to use MMAP IO
method and now the user-space application can just pass a pointer to the
video buffers being dequeued from the V4L2 device side while queueing
them at the UVC gadget end. This ensures that we have a "zero-copy"
design as the videobuffers pass from the V4L2 capture device to the UVC
gadget.

Note that there will still be a need to apply UVC specific payload
headers on top of each UVC payload data, which will still require a copy
operation to be performed in the 'encode' routines of the UVC gadget.

This patch also addresses one issue found out while porting the UVC
gadget to videobuf2 framework:
- In case the usb requests queued by the gadget get completed
  with a status of -ESHUTDOWN (disconnected from host),
  the queue of videobuf2 should be cancelled to ensure that the
  application space daemon is not left in a state waiting for
  a vb2 to be successfully absorbed at the USB side.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
11 years agousb: renesas_usbhs: fixup sparse errors for common.c
Kuninori Morimoto [Mon, 1 Apr 2013 01:34:43 +0000 (18:34 -0700)]
usb: renesas_usbhs: fixup sparse errors for common.c

This patch fixup below sparse errors

CHECK   ${RENESAS_USB}/common.c
${RENESAS_USB}/common.c:313:17: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/common.c:322:17: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/common.c:384:17: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/common.c:524:9: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/common.c:545:9: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/common.c:574:9: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/common.c:606:9: error: incompatible types in conditional expression (different base types)
${RENESAS_USB}/mod_gadget.c:233:28: warning: symbol 'req_clear_feature' was not declared. Should it be static?
${RENESAS_USB}/mod_gadget.c:274:28: warning: symbol 'req_set_feature' was not declared. Should it be static?
${RENESAS_USB}/mod_gadget.c:375:28: warning: symbol 'req_get_status' was not declared. Should it be static?

[ balbi@ti.com : added three sparse fixes to mod_gadget.c ]

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: mv_usb: remove clock name from pdata
Chao Xie [Mon, 25 Mar 2013 07:06:57 +0000 (03:06 -0400)]
usb: mv_usb: remove clock name from pdata

Using pdata to pass clock name is not correct.
Directly get clock from usb drivers.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d_core: remove unused clock
Felipe Balbi [Tue, 2 Apr 2013 08:12:11 +0000 (11:12 +0300)]
usb: gadget: mv_u3d_core: remove unused clock

The origianl understanding of clock is wrong. The UDC controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Cc: Chao Xie <chao.xie@marvell.com>
Cc: Yu Xu <yuxu@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agoarm: mmp: remove clock name from usb pdata for ttc
Chao Xie [Mon, 25 Mar 2013 07:06:56 +0000 (03:06 -0400)]
arm: mmp: remove clock name from usb pdata for ttc

The clock name will directly get by driver. Removing
the name from pdata.

Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agoarm: mmp: remove clock from usb pdata for aspenite
Chao Xie [Mon, 25 Mar 2013 07:06:55 +0000 (03:06 -0400)]
arm: mmp: remove clock from usb pdata for aspenite

The clock name will directly get by driver. Removing
the name from pdata.

Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: ehci: mv_ehci: remove unused clock
Chao Xie [Mon, 25 Mar 2013 07:06:54 +0000 (03:06 -0400)]
usb: ehci: mv_ehci: remove unused clock

The origianl understanding of clock is wrong. The EHCI controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: mv_otg: remove unused clock
Chao Xie [Mon, 25 Mar 2013 07:06:53 +0000 (03:06 -0400)]
usb: otg: mv_otg: remove unused clock

The origianl understanding of clock is wrong. The OTG controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_udc_core: remove unused clock
Chao Xie [Mon, 25 Mar 2013 07:06:52 +0000 (03:06 -0400)]
usb: gadget: mv_udc_core: remove unused clock

The origianl understanding of clock is wrong. The UDC controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: gadget: use platform callback to enable vbus
Grazvydas Ignotas [Sun, 24 Mar 2013 15:36:55 +0000 (17:36 +0200)]
usb: musb: gadget: use platform callback to enable vbus

On some platform configurations (like OMAP3+twl4030) it's the platform
code that enables VBUS, not OTG transceiver, so call vbus platform
callback instead, it will then call the transceiver if needed.

This fixes a use case where USB cable is plugged first and gadget
driver is loaded later after that.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: omap2430: turn off vbus on cable disconnect
Grazvydas Ignotas [Sun, 24 Mar 2013 15:36:54 +0000 (17:36 +0200)]
usb: musb: omap2430: turn off vbus on cable disconnect

On USB_EVENT_ID event the musb glue enables VBUS by calling
omap2430_musb_set_vbus(musb, 1) that sets the session bit, but on
USB_EVENT_NONE reverse action is never made, and that breaks PM.

Disable VBUS on USB_EVENT_NONE to be sure musb session is ended
on cable unplug so that PM works.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030-usb: check if vbus is driven by twl itself
Grazvydas Ignotas [Sun, 24 Mar 2013 15:36:53 +0000 (17:36 +0200)]
usb: phy: twl4030-usb: check if vbus is driven by twl itself

At least on pandora, STS_VBUS gets set even when VBUS is driven by twl
itself. Reporting VBUS in this case confuses OMAP musb glue and charger
driver, so check if OTG VBUS charge pump is on before reporting VBUS
event to avoid this problem.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: ux500_dma: fix sparse warning
Felipe Balbi [Fri, 22 Mar 2013 15:03:32 +0000 (17:03 +0200)]
usb: musb: ux500_dma: fix sparse warning

fix the following sparse warning:

drivers/usb/musb/ux500_dma.c:60:6: warning: symbol 'ux500_dma_callback' was not declared. Should it be static?

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d: fix sparse warnings
Felipe Balbi [Fri, 22 Mar 2013 15:01:42 +0000 (17:01 +0200)]
usb: gadget: mv_u3d: fix sparse warnings

fix the following sparse warnings:

drivers/usb/gadget/mv_u3d_core.c:223:20: warning: context imbalance in 'mv_u3d_done' - unexpected unlock
drivers/usb/gadget/mv_u3d_core.c:1562:25: warning: context imbalance in 'mv_u3d_handle_setup_packet' - unexpected unlock

Note that the non-trivial sparse warnings
are left out of this commit due to lack of
HW to test:

drivers/usb/gadget/mv_u3d_core.c:906:42: warning: incorrect type in argument 2 (different address spaces)
drivers/usb/gadget/mv_u3d_core.c:906:42:    expected void [noderef] <asn:2>*<noident>
drivers/usb/gadget/mv_u3d_core.c:906:42:    got unsigned int *<noident>

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_udc_core: fix sparse warnings
Felipe Balbi [Fri, 22 Mar 2013 14:58:18 +0000 (16:58 +0200)]
usb: gadget: mv_udc_core: fix sparse warnings

fix the following sparse warnings:

drivers/usb/gadget/mv_udc_core.c:1850:6: warning: symbol 'irq_process_reset' was not declared. Should it be static?
drivers/usb/gadget/mv_udc_core.c:247:9: warning: context imbalance in 'done' - unexpected unlock
drivers/usb/gadget/mv_udc_core.c:1692:25: warning: context imbalance in 'handle_setup_packet' - unexpected unlock

Note that there are still other sparse warnings
which aren't trivial to fix, so I left them out:

drivers/usb/gadget/mv_udc_core.c:848:34: warning: incorrect type in argument 1 (different address spaces)
drivers/usb/gadget/mv_udc_core.c:848:34:    expected void const volatile [noderef] <asn:2>*addr
drivers/usb/gadget/mv_udc_core.c:848:34:    got unsigned int *<noident>
drivers/usb/gadget/mv_udc_core.c:849:42: warning: incorrect type in argument 2 (different address spaces)
drivers/usb/gadget/mv_udc_core.c:849:42:    expected void volatile [noderef] <asn:2>*addr
drivers/usb/gadget/mv_udc_core.c:849:42:    got unsigned int *<noident>

Acked-by: Neil Zhang <zhangwm@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: pch_udc: fix sparse warnings
Felipe Balbi [Fri, 22 Mar 2013 14:54:01 +0000 (16:54 +0200)]
usb: gadget: pch_udc: fix sparse warnings

fix the following sparse warnings:

drivers/usb/gadget/pch_udc.c:1483:9: warning: context imbalance in 'complete_req' - unexpected unlock
drivers/usb/gadget/pch_udc.c:2408:28: warning: context imbalance in 'pch_udc_svc_control_out' - unexpected unlock

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: dummy: fix sparse warning
Felipe Balbi [Fri, 22 Mar 2013 14:50:47 +0000 (16:50 +0200)]
usb: gadget: dummy: fix sparse warning

fix the following sparse warning:

drivers/usb/gadget/dummy_hcd.c:1912:12: warning: symbol 'usb3_bos_desc' was not declared. Should it be static?

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: net2280: fix sparse warnings
Felipe Balbi [Fri, 22 Mar 2013 14:47:52 +0000 (16:47 +0200)]
usb: gadget: net2280: fix sparse warnings

fix the following sparse warnings:

drivers/usb/gadget/net2280.c:2063:13: warning: Using plain integer as NULL pointer
drivers/usb/gadget/net2280.c:2321:68: warning: Using plain integer as NULL pointer
drivers/usb/gadget/net2280.c:2349:68: warning: Using plain integer as NULL pointer
drivers/usb/gadget/net2280.c:2371:68: warning: Using plain integer as NULL pointer

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: net2272: fix sparse warnings
Felipe Balbi [Thu, 21 Mar 2013 10:19:31 +0000 (12:19 +0200)]
usb: gadget: net2272: fix sparse warnings

Fix the following sparse warnings:

drivers/usb/gadget/net2272.c:916:13: warning: Using plain integer as NULL pointer
drivers/usb/gadget/net2272.c:1624:9: warning: Using plain integer as NULL pointer
drivers/usb/gadget/net2272.c:1552:30: warning: right shift by bigger than source value

Note that the last warning is an actual bug,
since ep->dma is a one bit value which is
shifted by one bit in code.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d: drop ARCH dependency
Felipe Balbi [Fri, 22 Mar 2013 07:15:45 +0000 (09:15 +0200)]
usb: gadget: mv_u3d: drop ARCH dependency

this driver compiles fine everywhere which
means we can use linux-next to compile it
for us frequently.

By dropping the arch dependency, we also
ensure driver writers don't add virtual
arch-depdencies to the driver by e.g. using
the wrong headers.

While at that, fix Marvell's USB3 PHY dependency,
that's the driver which depends on CPU_MM3, not
mv_u3d_core.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d: fix sparse warnings
Felipe Balbi [Fri, 22 Mar 2013 07:14:25 +0000 (09:14 +0200)]
usb: gadget: mv_u3d: fix sparse warnings

Fix the following sparse warnings:

drivers/usb/gadget/mv_u3d_core.c: In function ‘mv_u3d_ep_queue’:
drivers/usb/gadget/mv_u3d_core.c:812:2: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c:822:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c:823:4: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c:823:28: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c: In function ‘mv_u3d_ep_dequeue’:
drivers/usb/gadget/mv_u3d_core.c:905:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c: In function ‘mv_u3d_probe’:
drivers/usb/gadget/mv_u3d_core.c:1840:3: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c:1855:51: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c:1855:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
drivers/usb/gadget/mv_u3d_core.c:1858:53: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
drivers/usb/gadget/mv_u3d_core.c:1858:18: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
drivers/usb/gadget/mv_u3d_core.c: In function ‘mv_u3d_irq_process_tr_complete’:
drivers/usb/gadget/mv_u3d_core.c:163:21: warning: ‘remaining_length’ may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/usb/gadget/mv_u3d_core.c:125:28: note: ‘remaining_length’ was declared here

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d: remove outdated selects
Felipe Balbi [Fri, 22 Mar 2013 07:12:23 +0000 (09:12 +0200)]
usb: gadget: mv_u3d: remove outdated selects

USB_GADGET_{DUAL,SUPER}SPEED symbols have
been removed by commit 85b8614 (usb: gadget:
get rid of USB_GADGET_{DUAL,SUPER}SPEED), for
some reason mv_u3d_core was lost.

Remove those selects now.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d: remove unused headers
Felipe Balbi [Fri, 22 Mar 2013 07:11:17 +0000 (09:11 +0200)]
usb: gadget: mv_u3d: remove unused headers

none of those headers are used by the driver,
removing them still compiles fine.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_u3d: make mv_u3d_pm_ops static
Jingoo Han [Tue, 19 Mar 2013 01:28:56 +0000 (01:28 +0000)]
usb: gadget: mv_u3d: make mv_u3d_pm_ops static

Make mv_u3d_pm_ops static because mv_u3d_pm_ops is not exported.
Also, CONFIG_PM_SLEEP is used to remove unnecessary ifdefs.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: core: log VBUS error
Grazvydas Ignotas [Sun, 10 Mar 2013 00:49:28 +0000 (02:49 +0200)]
usb: musb: core: log VBUS error

VBUS_ERROR is a serious error that the driver often doesn't recover from
in my tests, so we should at least inform the user about it.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: gadget: clear gadget_driver when gadget is stopped
Grazvydas Ignotas [Sun, 10 Mar 2013 00:49:14 +0000 (02:49 +0200)]
usb: musb: gadget: clear gadget_driver when gadget is stopped

Some musb glue drivers use gadget_driver pointer to know if any gadget
drivers are loaded at some moment and base further decisions on it,
like to do runtime suspend/resume or not. Right now the pointer is
left alone on stop and OMAP musb glue later does wrong runtime_pm
decisions because of it.

Clear the gadget_driver pointer on remove, it's invalid after stop
anyway.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: core: honour initial transceiver state
Grazvydas Ignotas [Sun, 10 Mar 2013 00:48:55 +0000 (02:48 +0200)]
usb: musb: core: honour initial transceiver state

As the usb transceiver driver usually starts first, it should already
have default_a variable set according to ID pin state, so don't
override it. In case default_a was not changed by trasceiver, it will
default to 0 and this code will work as before.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: host: ehci-tegra: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 09:04:39 +0000 (11:04 +0200)]
usb: host: ehci-tegra: fix PHY error handling

PHY layer no longer returns NULL, we must
switch from IS_ERR_OR_NULL() to IS_ERR().

Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030-usb: poll for ID disconnect
Grazvydas Ignotas [Sun, 17 Mar 2013 18:23:24 +0000 (20:23 +0200)]
usb: phy: twl4030-usb: poll for ID disconnect

On pandora, STS_USB interrupt doesn't arrive on USB host cable disconnect
for some reason while VBUS is driven by twl itself, but STS_HW_CONDITIONS
is updated correctly. It does work fine when PHY is powered down though.
To work around that we have to poll.

This patch also moves twl->linkstat update code to callers so that
changes can be handled in thread safe way (as polling work can trigger
at the same time as real irq now).

TI PSP kernels have similar workarounds, so (many?) more boards are likely
affected.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030-usb: don't switch the phy on/off needlessly
Grazvydas Ignotas [Sun, 17 Mar 2013 18:23:23 +0000 (20:23 +0200)]
usb: phy: twl4030-usb: don't switch the phy on/off needlessly

With runtime_pm in place there is no longer need to turn the phy
on/off in OTG layer on cable connect/disconnect, OMAP glue does
this through otg.set_suspend() callback after it's called through
omap_musb_mailbox() on VBUS/ID interrupt. Not doing this will save
power when cable is connected but no gadget driver is loaded.

This will also have side effect of automatic USB charging no longer
working without twl4030_charger driver, because a regulator needed
for charging will no longer be enabled, so be sure to enable charger
driver if charging is needed.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030-usb: ignore duplicate events
Grazvydas Ignotas [Sun, 17 Mar 2013 18:23:22 +0000 (20:23 +0200)]
usb: phy: twl4030-usb: ignore duplicate events

In some rare cases we may get multiple interrupts that will generate
duplicate omap_musb_mailbox() calls. This is a problem because each
VBUS/ID event generates runtime_pm call in OMAP glue code, causing
unbalanced gets or puts and breaking PM.

The same goes for initial state, glue already defaults to "no cable"
state, so only bother it if we have VBUS or ID.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030-usb: don't enable PHY during init
Grazvydas Ignotas [Sun, 17 Mar 2013 18:23:21 +0000 (20:23 +0200)]
usb: phy: twl4030-usb: don't enable PHY during init

There is no need to do it, otg.set_suspend(false) (which itself
comes from runtime_pm OMAP glue calls) will enable it later anyway.
This used to be the place where things were enabled if booted with
cable connected before runtime_pm conversion, but now can be dropped.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agoarm: tegra: fix Kconfig select clauses
Felipe Balbi [Wed, 20 Mar 2013 12:18:28 +0000 (14:18 +0200)]
arm: tegra: fix Kconfig select clauses

USB_ULPI and USB_ULPI_VIEWPORT shouldn't really
be selected directly by anyone, but since Tegra
still needs some time before turning ulpi viewport
into a proper PHY driver, we need to keep the
selects in place.

This patch just fixes the conditional select
so that it will continue to build after merging
the latest PHY layer changes.

Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: gpio-vbus: don't ignore regulator APIs return value
Felipe Balbi [Wed, 20 Mar 2013 06:01:53 +0000 (08:01 +0200)]
usb: phy: gpio-vbus: don't ignore regulator APIs return value

Due to recent changes to regulator API, all
users which don't check regulator_{en,dis}able()'s
return value will generate compile warnings.

Add such checks to gpio-vbus.

Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: samsung: fix sparse warning
Felipe Balbi [Tue, 19 Mar 2013 08:14:35 +0000 (10:14 +0200)]
usb: phy: samsung: fix sparse warning

Fix the following sparse warning:

drivers/usb/phy/phy-samsung-usb2.c:50:26: sparse: incorrect type in argument 1 (different address spaces)
drivers/usb/phy/phy-samsung-usb2.c:50:26:    expected void const volatile [noderef] <asn:2>*addr
drivers/usb/phy/phy-samsung-usb2.c:50:26:    got void *

Cc: Vivek Gautam <gautam.vivek@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: ab8500-usb: update irq handling code
Fabio Baltieri [Fri, 8 Mar 2013 02:27:09 +0000 (10:27 +0800)]
usb: phy: ab8500-usb: update irq handling code

Update irq handling code to notify all possible link status changes of
AB8500 and AB8505 to the ux500-musb glue driver.  The additional event
codes will be used for pm-runtime implementation, and are defined in a
separate ux500-specific header.

This also modify the irq registration code to use devm_* helpers and
drop all non necessary fail path code.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: ab8500-usb: drop support for ab8500 pre v2.0
Fabio Baltieri [Fri, 8 Mar 2013 02:27:08 +0000 (10:27 +0800)]
usb: otg: ab8500-usb: drop support for ab8500 pre v2.0

AB8500 versions preceding 2.0 were only used internally by ST-Ericsson
and are not supported anymore.  This patch drops all v1.0 and v1.1
support code.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: ux500: add otg notifier support
Fabio Baltieri [Fri, 8 Mar 2013 02:27:07 +0000 (10:27 +0800)]
usb: musb: ux500: add otg notifier support

Add transceiver notifier event handling to the ux500 driver to set vbus
on specific transceiver events.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
[ balbi@ti.com: fix build error due to missing
otg_state_string() ]

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: ux500: implement musb_set_vbus
Fabio Baltieri [Fri, 8 Mar 2013 02:27:06 +0000 (10:27 +0800)]
usb: musb: ux500: implement musb_set_vbus

Add ux500_musb_set_vbus() implementation for ux500.

This is based on the version originally developed inside ST-Ericsson.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
[ balbi@ti.com: fix a build error due to
missing otg_state_string() ]

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: ux500_dma: add missing MEM resource check
Virupax Sadashivpetimath [Fri, 8 Mar 2013 02:27:05 +0000 (10:27 +0800)]
usb: musb: ux500_dma: add missing MEM resource check

Fix dma_controller_create() fail path in case memory resource is
missing.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Virupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: host: ohci-exynos: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 09:05:03 +0000 (11:05 +0200)]
usb: host: ohci-exynos: fix PHY error handling

PHY layer no longer returns NULL. We must
switch from IS_ERR_OR_NULL() to IS_ERR().

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: host: ehci-s5p: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 09:04:15 +0000 (11:04 +0200)]
usb: host: ehci-s5p: fix PHY error handling

PHY layer no longer returns NULL. We must
switch from IS_ERR_OR_NULL() to IS_ERR().

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: host: ehci-mv: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 09:03:30 +0000 (11:03 +0200)]
usb: host: ehci-mv: fix PHY error handling

PHY layer no longer returns NULL. We must
switch from IS_ERR_OR_NULL() to IS_ERR().

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: host: ehci-msm: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 09:02:56 +0000 (11:02 +0200)]
usb: host: ehci-msm: fix PHY error handling

PHY layer no longer returns NULL. We must
switch from IS_ERR_OR_NULL() to IS_ERR().

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: omap2430: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 08:57:40 +0000 (10:57 +0200)]
usb: musb: omap2430: fix PHY error handling

PHY layer no longer returns NULL. It will
return -ENXIO when PHY layer isn't enabled
and we can use that to bail out instead of
request a probe deferral.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c-hsotg: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 08:56:19 +0000 (10:56 +0200)]
usb: gadget: s3c-hsotg: fix PHY error handling

PHY laye rno longer return NULL. We need to
switch over from IS_ERR_OR_NULL() to IS_ERR().

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_udc_core: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 08:54:59 +0000 (10:54 +0200)]
usb: gadget: mv_udc_core: fix PHY error handling

PHY layer no longer returns NULL. It will
return -ENXIO when PHY layer isn't enabled
and we can use that to bail out instead of
request a probe deferral.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: fix PHY error handling
Felipe Balbi [Fri, 15 Mar 2013 08:52:08 +0000 (10:52 +0200)]
usb: dwc3: fix PHY error handling

PHY layer no longer returns NULL. It will
return -ENXIO when PHY layer isn't enabled
and we can use that to bail out instead of
request a probe deferral.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030: fix cold plug on OMAP3
Kishon Vijay Abraham I [Fri, 15 Mar 2013 13:28:52 +0000 (18:58 +0530)]
usb: phy: twl4030: fix cold plug on OMAP3

Having twl4030_usb_phy_init() (detects if a cable is connected before
twl4030 is probed) in twl4030 probe makes cable connect events to be
missed by musb glue, since it gets loaded after twl4030. Having
twl4030_usb_phy_init as a usb_phy ops lets twl4030_usb_phy_init to be
called when glue is ready.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: twl4030: use devres API for regulator get and request irq
Kishon Vijay Abraham I [Fri, 15 Mar 2013 13:28:51 +0000 (18:58 +0530)]
usb: phy: twl4030: use devres API for regulator get and request irq

Used devres APIs devm_request_threaded_irq and devm_regulator_get for
requesting irq and for getting regulator respectively.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: return -ENXIO when PHY layer isn't enabled
Felipe Balbi [Thu, 14 Mar 2013 15:59:06 +0000 (17:59 +0200)]
usb: phy: return -ENXIO when PHY layer isn't enabled

in cases where PHY layer isn't enabled, we want
to still return an error code (actually an error
pointer) so that our users don't need to cope with
either error pointer of NULL.

This will simplify users as below:

- return IS_ERR(phy) ? PTR_ERR(phy) : -ENODEV;
+ return PTR_ERR(phy);

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Reported-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: omap: add usb_phy_init in omap2430_musb_init
Kishon Vijay Abraham I [Thu, 14 Mar 2013 06:23:58 +0000 (11:53 +0530)]
usb: musb: omap: add usb_phy_init in omap2430_musb_init

Some PHYs load too early (twl4030) making omap glue to miss cable connect events
if the board is booted with cable connected. So adding usb_phy_init in
omap2430_musb_init lets PHYs to report events once glue is ready.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: omap: remove the check before calling otg_set_vbus
Kishon Vijay Abraham I [Thu, 14 Mar 2013 06:23:56 +0000 (11:53 +0530)]
usb: musb: omap: remove the check before calling otg_set_vbus

No functional change. otg_set_vbus is already protected so removed the
check before calling otg_set_vbus.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: use capped length value
Dan Carpenter [Thu, 14 Mar 2013 08:01:05 +0000 (11:01 +0300)]
usb: gadget: uvc: use capped length value

"req->length" is a capped version of "data->length".

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: omap: fix sparse warning
Felipe Balbi [Thu, 14 Mar 2013 14:00:58 +0000 (16:00 +0200)]
usb: dwc3: omap: fix sparse warning

our global '_omap' pointer wasn't marked
static. This patch solves the following sparse
warning:

warning: symbol '_omap' was not declared. \
Should it be static?

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: omap2430: replace *_* with *-* in property names
Kishon Vijay Abraham I [Thu, 7 Mar 2013 13:21:46 +0000 (18:51 +0530)]
usb: musb: omap2430: replace *_* with *-* in property names

No functional change. Replace *_* with *-* in property names of otg to
follow the general convention.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Use strlcpy instead of strncpy
Chen Gang [Fri, 1 Mar 2013 19:46:33 +0000 (20:46 +0100)]
usb: gadget: uvc: Use strlcpy instead of strncpy

For NULL terminated string, better notice '\0' in the end.

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Use GFP_ATOMIC under spin lock
Cyril Roelandt [Fri, 1 Mar 2013 19:46:32 +0000 (20:46 +0100)]
usb: gadget: uvc: Use GFP_ATOMIC under spin lock

Found using the following semantic patch:
<spml>
@@
@@
spin_lock_irqsave(...);
... when != spin_unlock_irqrestore(...);
* GFP_KERNEL
</spml>

Signed-off-by: Cyril Roelandt <tipecaml@gmail.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Make video streaming buffer size comply with USB3.0 SS
Bhupesh Sharma [Fri, 1 Mar 2013 19:46:31 +0000 (20:46 +0100)]
usb: gadget: uvc: Make video streaming buffer size comply with USB3.0 SS

As per the USB3.0 specs, the bandwidth requirements of a UVC's video
streaming endpoint will change to support super-speed. These changes
will be dependent on whether the UVC video streaming endpoint is Bulk or
Isochronous:

- If video streaming endpoint is Isochronous:
  As per Section 4.4.8.2 (Isochronous Transfer Bandwidth Requirements)
  of the USB3.0 specs:

    A SuperSpeed isochronous endpoint can move up to three burst
    transactions of up to 16 maximum sized packets (3 * 16 * 1024 bytes)
    per service interval.

- If video streaming endpoint is Bulk:
  As per 4.4.6.1 (Bulk Transfer Data Packet Size) of the USB3.0 specs:

    An endpoint for bulk transfers shall set the maximum data packet
    payload size in its endpoint descriptor to 1024 bytes. It also
    specifies the burst size that the endpoint can accept from or
    transmit on the SuperSpeed bus. The allowable burst size for a bulk
    endpoint shall be in the range of 1 to 16.

So, in the Isochronous case, we can define the USB request's buffer to
be equal to = (Maximum packet size) * (bMaxBurst + 1) * (Mult + 1), so
that the UDC driver can try to send out this buffer in one Isochronous
service interval.

The same computation will hold good for the Bulk case as the Mult
value is 0 here and we can have a USB request buffer of maximum
16 * 1024 bytes size, which can be sent out by the UDC driver as
per the Bulk bandwidth allocation on the USB3 bus.

This patch adds the above-mentioned support and is also USB2.0 backward
compliant.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Delay the status stage when setting alternate setting 1
Bhupesh Sharma [Fri, 1 Mar 2013 19:46:30 +0000 (20:46 +0100)]
usb: gadget: uvc: Delay the status stage when setting alternate setting 1

This patch adds the support in UVC webcam gadget design for providing
USB_GADGET_DELAYED_STATUS in response to a set_interface(alt setting 1)
command issue by the Host.

The current UVC webcam gadget design generates a STREAMON event
corresponding to a set_interface(alt setting 1) command from the Host.
This STREAMON event will eventually be routed to a real V4L2 device.

To start video streaming, it may be required to perform some register
writes to a camera sensor device over slow external busses like I2C or
SPI. So, it makes sense to ensure that we delay the STATUS stage of the
set_interface (alt setting 1) command.

Otherwise, a lot of ISOC IN tokens sent by the Host will be replied to
by zero-length packets by the webcam device. On certain Hosts this may
even lead to ISOC URBs been cancelled from the Host side.

So, as soon as we finish doing all the "streaming" related stuff on the
real V4L2 device, we call a STREAMON ioctl on the UVC side and from here
we call the 'usb_composite_setup_continue' function to complete the
status stage of the set_interface(alt setting 1) command.

Further, we need to ensure that we queue no video buffers on the UVC
webcam gadget, until we de-queue a video buffer from the V4L2 device.
So, the application should call the STREAMON on UVC side only when it
has dequeued sufficient buffers from the V4L2 side and queued them to
the UVC gadget.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Add fix for UVC compliance test suite's assertion 6.1.25 failure
Bhupesh Sharma [Fri, 1 Mar 2013 19:46:29 +0000 (20:46 +0100)]
usb: gadget: uvc: Add fix for UVC compliance test suite's assertion 6.1.25 failure

As per the UVC compliance test suite's assertion 6.1.25, the `iFunction`
field of the Interface Association Descriptor (IAD) should the match the
`iInterface` field of the standard Video Control (VC) Interface Descriptor for
this Video Interface Collection (VIC).

This mandatory case is captured in section 3.11 of the
USB Video Class Compliance specification revision 1.1

This patch fixes this test assertion's failure and has been tested on
Linux FC16, WinXP, WIN7 and WIN8 High speed and Super Speed hosts
for successful enumeration.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@st.com>
[Merged the association and control string descriptors]
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Add fix for UVC compliance test suite assertion 6.3.90 failure
Bhupesh Sharma [Fri, 1 Mar 2013 19:46:28 +0000 (20:46 +0100)]
usb: gadget: uvc: Add fix for UVC compliance test suite assertion 6.3.90 failure

As per UVC compliance test specification's assertion number 6.3.90
related to 'Standard VS Isochronous Video Data Endpoint Descriptor Assertions',
the bits D3..2 of 'bmAttributes' field of Standard VS Isochronous Video Data
Endpoint Descriptor should be 01 (binary) to indicate that the
synchronization type is ASYNCHRONOUS.

This mandatory requirement has been captured in section 3.10.1.1 of the UVC
Video Class Specification version 1.1

This patch adds a fix for the same.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Configure the streaming endpoint based on the speed
Laurent Pinchart [Fri, 1 Mar 2013 19:46:27 +0000 (20:46 +0100)]
usb: gadget: uvc: Configure the streaming endpoint based on the speed

Call the appropriate usb_ep_autoconf*() function depending on the device
speed, and pass it the corresponding streaming endpoint.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Merge the streaming maxpacket and mult parameters
Laurent Pinchart [Fri, 1 Mar 2013 19:46:26 +0000 (20:46 +0100)]
usb: gadget: uvc: Merge the streaming maxpacket and mult parameters

Compute the multiplier from the maximum packet size based on the speed.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Merge the SS/HS/FS control endpoint descriptors
Laurent Pinchart [Fri, 1 Mar 2013 19:46:25 +0000 (20:46 +0100)]
usb: gadget: uvc: Merge the SS/HS/FS control endpoint descriptors

The descriptors are identical, there's no need to have several copies of
them.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Fix coding style issues introduced by SS support
Laurent Pinchart [Fri, 1 Mar 2013 19:46:24 +0000 (20:46 +0100)]
usb: gadget: uvc: Fix coding style issues introduced by SS support

Let's keep the code consistent, people might want to read it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: Rename STATUS_BYTECOUNT to UVC_STATUS_MAX_PACKET_SIZE
Laurent Pinchart [Fri, 1 Mar 2013 19:46:23 +0000 (20:46 +0100)]
usb: gadget: uvc: Rename STATUS_BYTECOUNT to UVC_STATUS_MAX_PACKET_SIZE

Descriptive names make the code more readable.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: clarify comment about string descriptors
Laurent Pinchart [Fri, 1 Mar 2013 19:46:22 +0000 (20:46 +0100)]
usb: gadget: uvc: clarify comment about string descriptors

The comment that describes string descriptors allocation isn't clear,
fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: exynos: use clk_prepare_enable and clk_disable_unprepare
Vivek Gautam [Thu, 14 Mar 2013 10:44:58 +0000 (16:14 +0530)]
usb: dwc3: exynos: use clk_prepare_enable and clk_disable_unprepare

Convert clk_enable/clk_disable to clk_prepare_enable/clk_disable_unprepare
calls as required by common clock framework.

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
CC: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: exynos: Use of_platform API to create dwc3 core pdev
Vivek Gautam [Thu, 14 Mar 2013 12:39:49 +0000 (18:09 +0530)]
usb: dwc3: exynos: Use of_platform API to create dwc3 core pdev

Used of_platform_populate() to create dwc3 core platform_device
from device tree data. Additionally some cleanup is also done.

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
CC: Felipe Balbi <balbi@ti.com>
CC: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: samsung: Add PHY support for USB 3.0 controller
Vivek Gautam [Thu, 14 Mar 2013 10:29:11 +0000 (15:59 +0530)]
usb: phy: samsung: Add PHY support for USB 3.0 controller

Adding PHY driver support for USB 3.0 controller for Samsung's
SoCs.

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: samsung: Common out the generic stuff
Vivek Gautam [Thu, 14 Mar 2013 10:29:10 +0000 (15:59 +0530)]
usb: phy: samsung: Common out the generic stuff

Moving register and structure definitions to header file,
and keeping the generic functions to be used across
multiple PHYs in common phy helper driver under SAMSUNG_USBPHY,
and moving USB 2.0 PHY driver under SAMSUNG_USB2PHY.

Also allowing samsung PHY drivers be built as modules.

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: dwc3-omap: return -EPROBE_DEFER if probe has not yet executed
Kishon Vijay Abraham I [Thu, 7 Mar 2013 13:21:44 +0000 (18:51 +0530)]
usb: dwc3: dwc3-omap: return -EPROBE_DEFER if probe has not yet executed

return -EPROBE_DEFER from dwc3_omap_mailbox in dwc3-omap.c, if the probe of
dwc3-omap has not yet been executed or failed.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: set dma_mask for dwc3_omap device
Kishon Vijay Abraham I [Thu, 7 Mar 2013 13:21:43 +0000 (18:51 +0530)]
usb: dwc3: set dma_mask for dwc3_omap device

*dma_mask* is not set for devices created from dt data. So filled dma_mask
for dwc3_omap device here. And dwc3 core will copy the dma_mask from its
parent.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: core: fix wrong OTG event regitser offset
George Cherian [Thu, 14 Mar 2013 10:35:24 +0000 (16:05 +0530)]
usb: dwc3: core: fix wrong OTG event regitser offset

This patch fixes the wrong OTG_EVT,OTG_EVTEN and OTG_STS register
offsets.

While at that, also add a missing register to debugfs regdump
utility.

Signed-off-by: George Cherian <george.cherian@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: renesas: remove unused DMA_ADDR_INVALID
Felipe Balbi [Thu, 14 Mar 2013 08:49:13 +0000 (10:49 +0200)]
usb: renesas: remove unused DMA_ADDR_INVALID

DMA_ADDR_INVALID isn't used anymore, it's safe
to remove it.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: uvc: remove references to DMA_ADDR_INVALID
Felipe Balbi [Thu, 14 Mar 2013 08:48:02 +0000 (10:48 +0200)]
usb: gadget: uvc: remove references to DMA_ADDR_INVALID

gadget drivers shouldn't touch req->dma at all,
since UDC drivers are the ones required to handle
mapping and unmapping of the request buffer.

Remove references to DMA_ADDR_INVALID so we don't
creat false expectations to gadget driver writers.

Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: net2280: remove unused DMA_ADDR_INVALID
Felipe Balbi [Thu, 14 Mar 2013 08:46:19 +0000 (10:46 +0200)]
usb: gadget: net2280: remove unused DMA_ADDR_INVALID

DMA_ADDR_INVALID isn't used anymore, it's safe
to remove it.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: net2272: remove unused DMA_ADDR_INVALID
Felipe Balbi [Thu, 14 Mar 2013 08:45:42 +0000 (10:45 +0200)]
usb: gadget: net2272: remove unused DMA_ADDR_INVALID

DMA_ADDR_INVALID isn't used anymore, it's safe
to remove it.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: atmel: remove unused DMA_ADDR_INVALID
Felipe Balbi [Thu, 14 Mar 2013 08:45:02 +0000 (10:45 +0200)]
usb: gadget: atmel: remove unused DMA_ADDR_INVALID

DMA_ADDR_INVALID isn't (and shouldn't) be used
anymore, let's remove it.

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: s3c-hsudc: delete outdated comment
Chen Gang [Mon, 11 Mar 2013 10:28:02 +0000 (18:28 +0800)]
usb: gadget: s3c-hsudc: delete outdated comment

since commit d93e260 (usb: gadget: s3c-hsudc: use udc_start and udc_stop
functions) the 'driver' parameter has been deleted from
s3c_hsudc_stop_activity() but its documentation was left outdated. This
patch deletes the comment since it makes no sense anymore.

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: isp1301: implement PHY API
Felipe Balbi [Fri, 8 Mar 2013 11:25:18 +0000 (13:25 +0200)]
usb: phy: isp1301: implement PHY API

this patch implements ->init() and ->set_vbus()
methods for isp1301 transceiver driver.

Later patches can now come in order to remove
the hackery from ohci-nxp and lpc32xx udc drivers.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: introduce ->set_vbus() method
Felipe Balbi [Fri, 8 Mar 2013 11:22:58 +0000 (13:22 +0200)]
usb: phy: introduce ->set_vbus() method

this method will be used to enable or disable
the charge pump.

Whenever we have DRD devices, we need to be
able to turn VBUS on or off whenever we want.

Note that in the ideal case, this would be
controlled by the ID-pin Interrupt, but not
all devices have ID-pin properly routed since
manufacturers can choose to save that trace
if they're building a host-only product out
of a DRD IP.

This is also useful during debugging where
we might not have the proper cable hanging
around.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: isp1301: give it a context structure
Felipe Balbi [Fri, 8 Mar 2013 11:01:40 +0000 (13:01 +0200)]
usb: phy: isp1301: give it a context structure

this patch is a small preparation to fix
isp1301 driver so that other platforms can
use it.

We're defining our private data structure
to represent this device and adding the
PHY to the PHY list.

Later patches will come implementing proper
PHY API and removing bogus code from ohci_nxp
and lpc32xx_udc drivers.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: rename all phy drivers to phy-$name-usb.c
Felipe Balbi [Thu, 7 Mar 2013 15:37:59 +0000 (17:37 +0200)]
usb: phy: rename all phy drivers to phy-$name-usb.c

this will make sure that we have sensible names
for all phy drivers. Current situation was already
quite bad with too generic names being used.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: remove CONFIG_USB_OTG_UTILS
Felipe Balbi [Thu, 7 Mar 2013 09:31:18 +0000 (11:31 +0200)]
usb: phy: remove CONFIG_USB_OTG_UTILS

there are no more users of CONFIG_USB_OTG_UTILS
left in tree, we can remove it just fine.

[ kishon@ti.com : fixed a linking error due
to original patch forgetting to change
drivers/usb/Makefile ]

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: ehci: tegra: check against CONFIG_USB_PHY
Felipe Balbi [Thu, 7 Mar 2013 09:24:58 +0000 (11:24 +0200)]
usb: ehci: tegra: check against CONFIG_USB_PHY

CONFIG_USB_OTG_UTILS will be removed very
soon, so we should check CONFIG_USB_PHY
instead.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: ehci: marvel: check against CONFIG_USB_PHY
Felipe Balbi [Thu, 7 Mar 2013 09:24:32 +0000 (11:24 +0200)]
usb: ehci: marvel: check against CONFIG_USB_PHY

CONFIG_USB_OTG_UTILS will be removed very
soon, so we should check CONFIG_USB_PHY
instead.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: gadget: mv_udc_core: check against CONFIG_USB_PHY
Felipe Balbi [Thu, 7 Mar 2013 09:24:08 +0000 (11:24 +0200)]
usb: gadget: mv_udc_core: check against CONFIG_USB_PHY

CONFIG_USB_OTG_UTILS will be removed very
soon, so we should check CONFIG_USB_PHY
instead.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: power: pda_power: check against CONFIG_USB_PHY
Felipe Balbi [Thu, 7 Mar 2013 09:23:50 +0000 (11:23 +0200)]
usb: power: pda_power: check against CONFIG_USB_PHY

CONFIG_USB_OTG_UTILS will be removed very
soon, so we should check CONFIG_USB_PHY
instead.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: make it a menuconfig
Felipe Balbi [Thu, 7 Mar 2013 09:13:43 +0000 (11:13 +0200)]
usb: phy: make it a menuconfig

We already have a considerable amount of USB
PHY drivers, making it a menuconfig just
prevents us from adding too much churn to
USB's menuconfig.

While at that, also select USB_OTG_UTILS from
this new menuconfig just to keep backwards
compatibility until we manage to remove
that symbol.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: move all PHY drivers to drivers/usb/phy/
Felipe Balbi [Thu, 7 Mar 2013 09:01:15 +0000 (11:01 +0200)]
usb: phy: move all PHY drivers to drivers/usb/phy/

that's a much more reasonable location for
those drivers. It helps us saving drivers/usb/otg/
for when we actually start adding generic OTG
code.

Also completely delete drivers/usb/otg/ as there's
nothing left there.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: phy: convert EXPORT_SYMBOL to EXPORT_SYMBOL_GPL
Felipe Balbi [Thu, 7 Mar 2013 08:49:27 +0000 (10:49 +0200)]
usb: phy: convert EXPORT_SYMBOL to EXPORT_SYMBOL_GPL

we only want GPL users for our generic functions,
so let's switch over to EXPORT_SYMBOL_GPL.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: move usb_otg_state_string to usb-common.c
Felipe Balbi [Thu, 7 Mar 2013 08:45:56 +0000 (10:45 +0200)]
usb: otg: move usb_otg_state_string to usb-common.c

otg.c only had a single function definition
which might make more sense to be placed in
usb-common.c. While doing that, we also delete
otg.c since it's now empty.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: prefix otg_state_string with usb_
Felipe Balbi [Thu, 7 Mar 2013 08:39:57 +0000 (10:39 +0200)]
usb: otg: prefix otg_state_string with usb_

all other functions under drivers/usb/ start
with usb_, let's do the same thing.

This patch is in preparation for moving otg_state_string
to usb-common.c and deleting otg.c completely.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: gadget: use num_(in|out)_eps from HW params
Felipe Balbi [Thu, 5 May 2011 13:21:59 +0000 (16:21 +0300)]
usb: dwc3: gadget: use num_(in|out)_eps from HW params

that way we will only tell gadget framework about
the endpoints we actually have.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: dwc3: calculate the number of endpoints
Felipe Balbi [Thu, 5 May 2011 12:53:10 +0000 (15:53 +0300)]
usb: dwc3: calculate the number of endpoints

hwparams2 holds the number of endpoints which
were selected during RTL generation, we can
use that on our driver.

Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: otg: fsl_otg: remove redundant NULL check before kfree
Syam Sidhardhan [Tue, 5 Mar 2013 19:34:50 +0000 (01:04 +0530)]
usb: otg: fsl_otg: remove redundant NULL check before kfree

kfree on NULL pointer is a no-op.

Signed-off-by: Syam Sidhardhan <s.syam@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
11 years agousb: musb: drop dangling CONFIG_USB_MUSB_DEBUG
Fabio Baltieri [Wed, 20 Feb 2013 08:53:39 +0000 (09:53 +0100)]
usb: musb: drop dangling CONFIG_USB_MUSB_DEBUG

CONFIG_USB_MUSB_DEBUG option was removed in

5c8a86e usb: musb: drop unneeded musb_debug trickery

to cleanup the code from driver specific debug facilities.  This patch
drops the last references to the musb debug config option,
unconditionally enabling all debug code paths, thus letting that code
being dropped at compile time if not needed.

Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>