John Youn [Fri, 20 May 2016 00:26:15 +0000 (17:26 -0700)]
UPSTREAM: usb: dwc3: gadget: Account for link TRB in TRBs left
The TRBs left calculation didn't account for the link TRB taking up one
spot.
If the trb_dequeue < trb_enqueue, then the result includes the link
TRB slot so it must be adjusted.
Change-Id: If03f89ea1f523b4bce1b5f096ae81aebc891c63f
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
7d0a038b130cde7265d6bbc5e148734cb127f341)
John Youn [Fri, 20 May 2016 00:26:12 +0000 (17:26 -0700)]
UPSTREAM: usb: dwc3: gadget: Account for max size in TRB space
The current calculation takes dep->trb_dequeue - dep->trb_enqueue to
find the TRB space left.
If you enqueue 1, that results in:
(u8) 0 - (u8) 1 = 0xff = 255 TRBs left.
This is correct if DWC3_TRB_NUM == 256.
If DWC3_TRB_NUM is less than 256 (but still a power of 2) you need to
mod the result by DWC3_TRB_NUM.
For example the same calculation with DWC3_TRB_NUM = 8, results in:
255 % 6 = 7 TRBs left.
Change-Id: I2b41bf750e767fc7062a72da054d581c56d42f5a
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
32db3d9437b6bd560daeef82a8325436a4ac3366)
John Youn [Fri, 20 May 2016 00:26:10 +0000 (17:26 -0700)]
UPSTREAM: usb: dwc3: gadget: Don't prepare TRBs if no space
If trbs_left == 0, we don't have any space left in the TRB ring so don't
prepare anything.
Change-Id: I1dc6c665b778a7988fca9cd890884ad27dc830ef
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
89bc856e5a7462e47d90d5a3f5396bd5795efd0c)
John Youn [Fri, 20 May 2016 00:26:08 +0000 (17:26 -0700)]
UPSTREAM: usb: dwc3: gadget: Initialize the TRB ring
Clears out all the TRBs in the ring to clean up any stale data that
might be in them from the previous time the endpoint was enabled.
Also removed the existing clear of the LINK trb since the entire ring is
cleard just before.
Change-Id: I311d0931dc9daa6b6f6e39d252e54c37c516c190
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
0d25744ad107b6c9010153f3ebf8b59672b5b8e7)
John Youn [Fri, 20 May 2016 00:26:05 +0000 (17:26 -0700)]
UPSTREAM: usb: dwc3: gadget: Simplify skipping of link TRBs
Make the skipping of the link TRBS built-in to the increment operation.
This simplifies the code wherever we increment the trb index and ensures
that we never end up pointing to a link trb.
Change-Id: I72063fcf672a07c3ac5132c488e75df1a6d91e94
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
dca0119c3ab69fea2429ec2db7e3686614bd1439)
John Youn [Mon, 23 May 2016 18:32:47 +0000 (11:32 -0700)]
UPSTREAM: usb: dwc3: Endianness issue on dwc3_log_ctrl
Sparse complains even though it looks ok. Probably it cannot detect that
the wValue, wIndex, and wLength are declared __le16 due to the macro
magic.
Redeclare them as CPU endianness and make the conversion on assignment.
Change-Id: I9682aa96ba8e1115c02f5df54d51fccdcb0ed4e1
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
96bedb637a1e1ad8e7ed781fa020550aae2a8f16)
John Youn [Mon, 23 May 2016 18:32:43 +0000 (11:32 -0700)]
UPSTREAM: usb: dwc3: gadget: Fix usage of bitwise operator
Cleans up the sparse warning:
warning: dubious: x | !y
Since we do want a bitwise OR here, don't use a logical (true/false)
value. Probably is not a real issue but it cleans up the warning.
Change-Id: I741c66da3f31a26402334bf5edfd9f969580b64b
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
d07fa665c79d85fead080f4b611c3f7645576454)
John Youn [Mon, 23 May 2016 18:32:40 +0000 (11:32 -0700)]
UPSTREAM: usb: dwc3: ep0: Use the correct type for SET_SEL data
u2sel and u2pel should be __le16. Doesn't fix any issue.
Found with sparse.
Change-Id: Ibe09f6e4c938246afa664bb511c8b912216f2671
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
501058edebf957a3c101c8119c3286e496873840)
John Youn [Mon, 23 May 2016 18:32:38 +0000 (11:32 -0700)]
UPSTREAM: usb: dwc3: ep0: Fix endianness of wIndex passed to dwc3_wIndex_to_dep
The wIndex passed in here is CPU endianness, but the function expects
little endian.
Found with sparse.
Change-Id: Ib33f0b9b4e8c3320eb590496460e2cc7274b6a0e
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
958b9fa7f8cfd5799534e98ba3d05d96a5e7ccb9)
Felipe Balbi [Mon, 23 May 2016 11:16:19 +0000 (14:16 +0300)]
UPSTREAM: usb: dwc3: gadget: improve gcmd trace
Just like we did for endpoint commands, let's have a
single trace output for the command and its
status. This will improve trace readability
Change-Id: I2d092268347a92d1b6987c4283580a63ed4cfda9
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
71f7e7027028d5a8ef15dccc587dbd6c6b7f544f)
Felipe Balbi [Mon, 23 May 2016 11:08:47 +0000 (14:08 +0300)]
UPSTREAM: usb: dwc3: gadget: remove udelay() from generic cmd
We want commands to finish ASAP, so let's remove
that udelay() call.
Change-Id: I521945dc6242cfe1a8cf730ab2f7d9010a1e65a9
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
88811f7b722c417ececbc7f278c26d8df8606d02)
Felipe Balbi [Mon, 23 May 2016 11:06:07 +0000 (14:06 +0300)]
UPSTREAM: usb: dwc3: gadget: single return point on generic commands
Just like we did for endpoint commands, let's use a
single return point for generic commands as
well. This aids readability.
Change-Id: Idc1bf9bc4fe2e50cb0841e9a8483c24346b4974d
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
0fe886cdb07aeaf75a61154f34abc8dd6860978e)
Felipe Balbi [Mon, 23 May 2016 11:02:33 +0000 (14:02 +0300)]
UPSTREAM: usb: dwc3: trace: print ep cmd status with a single trace
Instead of printing command's status with a separate
trace printout, let's print it within a single call.
Change-Id: I6ea888e0b8c7afee70b90f748a9d20c469da8c04
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
0933df159c5c82f97c6bb811b149fa1158a26087)
Felipe Balbi [Mon, 23 May 2016 10:53:34 +0000 (13:53 +0300)]
UPSTREAM: usb: dwc3: gadget: loop while (timeout)
instead of having infinite loop and always checking
timeout value as a break condition, we can just
decrement timeout inside while's condition.
Change-Id: I665d39e7205463f5f4439f3a6d4fdfc6e3ed67b2
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
f6bb225bb3ca7988ff373c62cc298e56cae1eee5)
Felipe Balbi [Mon, 23 May 2016 10:50:29 +0000 (13:50 +0300)]
UPSTREAM: usb: dwc3: gadget: fix trace output when command fails
We don't need the extra %s when command fails.
Let's remove it
Change-Id: I4cbad651f7b386ceb24f077a4c3f2036cd619ee9
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ba1598410eff646e10be4e42d773e5bdc511d898)
Felipe Balbi [Mon, 23 May 2016 08:10:08 +0000 (11:10 +0300)]
UPSTREAM: usb: dwc3: trace: fully decode IRQ events
This will make it more human-friendly to read trace
output from dwc3.
Change-Id: I484b309a164c069fa06c45330ece4bded3150e65
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
f75cacc468edc4826305909d6102d60fba55199f)
Felipe Balbi [Mon, 23 May 2016 08:27:26 +0000 (11:27 +0300)]
UPSTREAM: usb: dwc3: gadget: no more tracking endpoint type with its name
I really thought this would be useful, but as it
turns out, it creates more problems than fixes. The
amount of times we had to fix this because some
other commit shuffled things around and ended up
regressing this tiny little string manupulation...
Might as well remove it, since it has a negligible
added benefit.
Change-Id: I6b64399df59313f6572df7dfd93c35e2894377b5
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
7ab373aadbd0463c0f020d368947b05e67a20bd5)
Janusz Dziedzic [Fri, 20 May 2016 08:37:13 +0000 (10:37 +0200)]
UPSTREAM: usb: dwc3: trace: pretty-print TRB's ctrl field
Improve trb tracing by showing trb flags, interrupts
trb type.
trb flags:
- h - hardware owner of descriptor
- l - last TRB
- c - chain buffers
- s - continue on short packet
interrupt flags:
- s - interrupt on short packet
- c - interrupt on complete
Capital letter means that bit is set, while
lowercase letter means bit is cleared.
Change-Id: I1f709f56a2fcc707858805289cb66fbace718abb
Signed-off-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
22f2c619a116f120fe57de1225cfe7fdeb0b12d2)
Felipe Balbi [Wed, 13 Apr 2016 13:44:39 +0000 (16:44 +0300)]
UPSTREAM: usb: dwc3: gadget: add a per-endpoint request queue lock
This will allow us to process several endpoints at a
time by making sure that we lock only shared
resources.
Change-Id: I87b6ffd1db1fbbdaeed30271b984918b5e0d9b6c
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
74674cbf858ff6a83c3f06f4ab0ffa5d3c91bf0b)
Felipe Balbi [Tue, 17 May 2016 07:15:02 +0000 (10:15 +0300)]
UPSTREAM: usb: dwc3: pci: add Power Management dummy hooks
Allow for dwc3-pci to reach D3 and enable pm_runtime
by providing dummy PM hooks. Without them, PCI
subsystem won't put device to D3.
Change-Id: Id104274d9c25bbbee73fc3d82e416a236485b33b
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
e9af9229098d92145d0b894b78878bbc6ac7c910)
Felipe Balbi [Mon, 16 May 2016 10:14:48 +0000 (13:14 +0300)]
UPSTREAM: usb: dwc3: implement runtime PM
this patch implements the most basic pm_runtime
support for dwc3. Whenever USB cable is dettached,
then we will allow core to runtime_suspend.
Runtime suspending will involve completely tearing
down event buffers and require a full soft-reset of
the IP.
Note that a further optimization could be
implemented once we decide to support hibernation,
which is to allow runtime_suspend with cable
connected when bus is in U3. That's subject to a
separate patch, however.
Change-Id: I2ff3ca0424151eb15066ccc3a6d8e46e7dc9ec4e
Tested-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
fc8bb91bc83ef82868533e75f5a11abc1158ec81)
Felipe Balbi [Wed, 18 May 2016 09:37:21 +0000 (12:37 +0300)]
UPSTREAM: usb: dwc3: gadget: fix for possible endpoint disable race
when we call dwc3_gadget_giveback(), we end up
releasing our controller's lock. Another thread
could get scheduled and disable the endpoint,
subsequently setting dep->endpoint.desc to NULL.
In that case, we would end up dereferencing a NULL
pointer which would result in a Kernel Oops. Let's
avoid the problem by simply returning early if we
have a NULL descriptor.
Change-Id: Ib2ee62e6e93ad47385f2a2d57191cbe32c720110
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
4cb4221764ef473cd36e1953f1fea11865786d65)
Konrad Leszczynski [Mon, 8 Feb 2016 15:13:12 +0000 (16:13 +0100)]
UPSTREAM: usb: dwc3: fix for the isoc transfer EP_BUSY flag
commit
f3af36511e60 ("usb: dwc3: gadget: always
enable IOC on bulk/interrupt transfers") ended up
regressing Isochronous endpoints by clearing
DWC3_EP_BUSY flag too early, which resulted in
choppy audio playback over USB.
Fix that by partially reverting original commit and
making sure that we check for isochronous endpoints.
Change-Id: If2b5897f005bc5f6a4f475e8371c2654ac04a44a
Fixes: f3af36511e60 ("usb: dwc3: gadget: always enable IOC
on bulk/interrupt transfers")
Cc: <stable@vger.kernel.org>
Signed-off-by: Konrad Leszczynski <konrad.leszczynski@intel.com>
Signed-off-by: Rafal Redzimski <rafal.f.redzimski@intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
9cad39fe4e4a4fe95d8ea5a7b0692b0a6e89e38b)
Felipe Balbi [Tue, 17 May 2016 11:55:58 +0000 (14:55 +0300)]
UPSTREAM: usb: dwc3: gadget: only resume USB2 PHY in <=HIGHSPEED
As a micro-power optimization, let's only resume the
USB2 PHY if we're working on <=HIGHSPEED. If we're
gonna work on SUPERSPEED or SUPERSPEED+, there's no
point in resuming the USB2 PHY.
Change-Id: I2661fcde935c6b20afbd54f7a9f74e1ebde2a0d0
Fixes: 2b0f11df84bb ("usb: dwc3: gadget: clear SUSPHY bit before ep cmds")
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ab2a92e7a608c09f13baf1730b9ba24c73c35d52)
Felipe Balbi [Mon, 16 May 2016 11:17:06 +0000 (14:17 +0300)]
UPSTREAM: usb: dwc3: gadget: hold gadget IRQ in dwc->irq_gadget
by holding gadget's IRQ number in dwc->irq_gadget,
it'll be simpler to free_irq() and disable the IRQ
in case an IRQ fires while we are runtime suspended.
Change-Id: I17ed4486bfcc1cd9fabb11fccb802e3a80d61501
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
3f308d17d7abbf35a6d40a7f16dc70cf43f12c98)
Felipe Balbi [Mon, 16 May 2016 07:52:58 +0000 (10:52 +0300)]
UPSTREAM: usb: dwc3: core: simplify suspend/resume operations
now that we have re-factored dwc3_core_init() and
dwc3_core_exit() we can use them for suspend/resume
operations.
This will help us avoid some common mistakes when
patching code when we have duplicated pieces of code
doing the same thing.
Change-Id: I295c3b354123ce0449e7e4ee10e96fa444994488
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
51f5d49ad6f011ee380b866ea617fd90584189a2)
Felipe Balbi [Mon, 16 May 2016 07:49:01 +0000 (10:49 +0300)]
UPSTREAM: usb: dwc3: core: re-factor init and exit paths
The idea of this patch is for dwc3_core_init() to
abstract all the details about how to initialize
dwc3 and dwc3_core_exit() to do the same for
teardown.
With this, we can simplify suspend/resume operations
by a large margin and always know that we're going
to start dwc3 from a known starting point.
Change-Id: I3193f375fa153e1636de8f86fb752ef88afa5d95
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
(cherry picked from commit
c499ff71ff2a281366c6ec7a904c547d806cbcd1)
Conflicts:
drivers/usb/dwc3/core.c
Felipe Balbi [Mon, 16 May 2016 07:42:23 +0000 (10:42 +0300)]
UPSTREAM: usb: dwc3: core: move fladj to dwc3 structure
this patch is in preparation for some further
re-factoring in dwc3 initialization. No functional
changes.
Change-Id: I19eaeca8e94616a98fe92696b05aa43d819a1d93
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
bcdb3272e889f4d2a5c8efc5e12b0fb2dcbf75e9)
Felipe Balbi [Tue, 12 Apr 2016 13:53:39 +0000 (16:53 +0300)]
UPSTREAM: usb: dwc3: gadget: add a pointer to endpoint registers
By adding a pointer to endpoint registers' base
address, we can avoid using our controller-wide
struct dwc3 pointer for everything. At some point
this will allow us to have per-endpoint locks which
will, in turn, let us queue requests to separate
endpoints in parallel.
Because of this change our debugfs interface and io
accessors need to be changed accordingly.
Change-Id: I51229661378e4756f89770e9a813a132b822631c
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
2eb8801650b315394ca376a56be2971c867aa9ec)
Felipe Balbi [Tue, 12 Apr 2016 13:42:43 +0000 (16:42 +0300)]
UPSTREAM: usb: dwc3: gadget: pass dep as argument to endpoint command
In all call sites of dwc3_send_gadget_ep_cmd() we
already had a valid dep pointer, so instead of
passing dwc and dep->number, which would be used to
fetch the same pointer we already had, just pass dep
directly.
In other words, we're changing:
struct dwc3_ep *dep = dwc[dep->number];
to just passing struct dwc3_ep *dep as argument.
Change-Id: I2e4bd7e30f1814db1dea9521b3b083707595e864
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
2cd4718d0bbe1906fcf517f0b254fbd7c072383a)
Felipe Balbi [Fri, 13 May 2016 11:09:59 +0000 (14:09 +0300)]
UPSTREAM: usb: dwc3: gadget: initialize NUMP based on RxFIFO Size
Instead of using burst size to configure NUMP, we
should be using RxFIFO Size instead. DWC3 is smart
enough to know that it shouldn't burst in case burst
size is 0.
Change-Id: I03b0290e19ed204047ff35fdf7383f57bf3566df
Reported-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
4e99472bc10bda9906526d725ff6d5f27b4ddca1)
Felipe Balbi [Fri, 13 May 2016 09:42:44 +0000 (12:42 +0300)]
UPSTREAM: usb: dwc3: gadget: split __dwc3_gadget_kick_transfer()
To aid code readability, we're gonna split
__dwc3_gadget_kick_transfer() into its constituent
parts: scatter gather and linear buffers.
That way, it's easier to follow the code and focus
debug effort when one or the other fails.
Change-Id: I5116b050ab757a177df9e4fe40996b215f6eb2e0
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
5ee85d890f8de5c6f1ab22ba13734a63fdf3ff2d)
Felipe Balbi [Fri, 13 May 2016 07:19:42 +0000 (10:19 +0300)]
UPSTREAM: usb: dwc3: gadget: return 0 if we try to Wakeup in superspeed
Instead of returning -EINVAL when someone calls
__dwc3_gadget_wakeup() in speeds > highspeed, let's
return 0. There are no problems for the driver for
calling it in superspeed as we cleanly just return.
This avoids an annoying WARN_ONCE() always
triggering during superspeed enumeration with LPM
enabled.
Change-Id: Iff35ee46a782684db1c2339ad71a73a303cb3a89
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
6b74289937f624439c87135cfabb3deb2955fb53)
Felipe Balbi [Fri, 13 May 2016 07:11:59 +0000 (10:11 +0300)]
UPSTREAM: usb: dwc3: gadget: remove udelay(1) when sending ep cmds
When we send an endpoint command, we want that to
complete as soon as possible, so let's remove the
unnecessary udelay(1) call.
Change-Id: I601a8a4c80aa5abd6ccf68f2169f38a08ef3bc5f
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
b43bba96b9036e42b2c2c71ee15e1f77b0b37aec)
Felipe Balbi [Fri, 13 May 2016 07:07:47 +0000 (10:07 +0300)]
UPSTREAM: usb: dwc3: gadget: rely on sg_is_last() and list_is_last()
sg_is_last() and list_is_last() will encode the
required information for the driver to make
decisions WRT CHN and LST bits.
While at that, also replace '1' with 'true' for
consistency.
Change-Id: I827e39df3058f696d753e03130a951017ed45bf5
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
6aff483295950abcf3be1a99f56f308bd6a1bab4)
Felipe Balbi [Thu, 12 May 2016 13:53:59 +0000 (16:53 +0300)]
UPSTREAM: usb: dwc3: gadget: simplify __dwc3_gadget_kick_transfer()
as it turns out, we don't need the extra 'start_new'
argument as that can be inferred from DWC3_EP_BUSY
flag.
Because of that, we can simplify
__dwc3_gadget_kick_transfer() by quite a bit, even
allowing us to prepare more TRBs unconditionally.
Change-Id: I74346bf9ec48e7cd7d59bb890e40a9395fb27962
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
4fae2e3e15157ac312b91234389e79f7a76667b3)
Felipe Balbi [Thu, 12 May 2016 11:08:34 +0000 (14:08 +0300)]
UPSTREAM: usb: dwc3: gadget: prepare TRBs on update transfers too
If we're updating transfers, we can also prepare as
many TRBs as we can fit in the ring. Let's start
doing that.
This patch 'solves' a limitation of how many TRBs we
can prepare when we're getting close the end of the
ring. Instead driver to prepare only up to end of
the ring, we check if we have space to wrap around
the ring properly.
Note that this only happens when our enqueue and
dequeue pointers are equal (which is the case for
bulk endpoints after an XferComplete event).
Change-Id: I3a3614061234f2408b39bd3bc235bb2bf5289dff
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
c4233573f6ee611033faa9116fc7003775a450b9)
Felipe Balbi [Mon, 9 May 2016 12:27:01 +0000 (15:27 +0300)]
UPSTREAM: usb: dwc3: core: get rid of DWC3_PM_OPS macro
that macro is unnecessary and just adds pointless
obfuscation. Let's remove it.
Change-Id: I67e73c5a6c6155fc66c1ac05047173c0e783b205
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
7f370ed0cfe9aa1520696c1c71e8a51e2c0bbcc1)
Felipe Balbi [Wed, 4 May 2016 12:50:27 +0000 (15:50 +0300)]
UPSTREAM: usb: dwc3: gadget: fix gadget suspend/resume
Instead of trying hard to stay connected to the
host, it's best (and far easier) to disconnect from
the host already.
Anything relying on KEEP_CONNECT will just have that
ignored, but we don't have proper hibernation
implementation yet, so there are no regressions.
In any case, hibernation is only useful for runtime
PM, not system sleep.
While at that, also remove dwc3.dcfg which has been
rendered unnecessary.
Change-Id: I605a452a416b3a2e2b98b6b6505ecc545846d5dd
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
9f8a67b65a49d0e35c6ca782136c84541d948a64)
Felipe Balbi [Wed, 4 May 2016 12:49:37 +0000 (15:49 +0300)]
UPSTREAM: usb: dwc3: gadget: re-factor ->udc_start and ->udc_stop
we will be re-using it for suspend/resume, so
instead of duplicating code, let's just re-factor
the functions so they can be re-used.
Change-Id: I4db5569156adb27e2fc2d8b28b85a9b9e6f2116a
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
d7be295243bbe53649986d869b398403eaa41bb7)
John Youn [Wed, 1 Jun 2016 00:49:56 +0000 (17:49 -0700)]
UPSTREAM: usb: dwc3: Set the ClearPendIN bit on Clear Stall EP command
As of core revision 2.60a the recommended programming model is to set
the ClearPendIN bit when issuing a Clear Stall EP command for IN
endpoints. This is to prevent an issue where some (non-compliant) hosts
may not send ACK TPs for pending IN transfers due to a mishandled error
condition. Synopsys STAR
9000614252.
Change-Id: Ic513ca50aa900fbfc64b8197a6311113630ce18a
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
50c763f8c1bac0dc00f7788a75f227276c0efd54)
Peter Griffin [Wed, 11 May 2016 16:33:11 +0000 (17:33 +0100)]
UPSTREAM: usb: dwc3: st: Fix USB_DR_MODE_PERIPHERAL configuration.
Set USB3_FORCE_VBUSVALID when configured for USB_DR_MODE_PERIPHERAL
mode, as it is required to have a working setup.
This worked on the internal driver by relying on the reset
value of the syscfg register as the bits aren't explicity cleared
and set like the upstream driver.
Also add a comment about what setting this bit means.
Change-Id: Ibd3a18b3a85b53dcf8471a1231b502185641c010
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
27a0faafdca53bda21ed340ca8f8960696dda049)
Dan Carpenter [Tue, 3 May 2016 07:49:00 +0000 (10:49 +0300)]
UPSTREAM: usb: dwc3: gadget: fix mask and shift order in DWC3_DCFG_NUMP()
In the original DWC3_DCFG_NUMP() was always zero. It looks like the
intent was to shift first and then do the mask.
Change-Id: I290fe7bb82bbf7adf626fcb5ee2474fce60167bd
Fixes: 2a58f9c12bb3 ('usb: dwc3: gadget: disable automatic calculation of ACK TP NUMP')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
973986126a4152ab83d09263a02bf7d2d1bf3b6e)
Felipe Balbi [Thu, 28 Apr 2016 07:56:28 +0000 (10:56 +0300)]
UPSTREAM: usb: dwc3: gadget: disable automatic calculation of ACK TP NUMP
Now that we calculate DCFG.NUMP, we can disable
dwc3's automatic calculation so we maximize our
chances of very high throughtput through the use of
bursts.
Change-Id: Icf53af4cd1fc7a9fed1731dbef3ba3abbaa68783
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
2a58f9c12bb360f38fb39e470bb5ff94014356e6)
Felipe Balbi [Tue, 26 Apr 2016 07:49:07 +0000 (10:49 +0300)]
UPSTREAM: usb: dwc3: gadget: update DCFG.NumP to max burst size
NumP field of DCFG register is used on NumP field of
ACK TP header and it tells the host how many packets
an endpoint can receive before waiting for
synchronization.
Documentation says it should be set to anything
<=bMaxBurst. Interestingly, however, this setting is
not per-endpoint how it should be (different
endpoints could have different burst sizes), but
things seem to work okay right now.
Change-Id: I2fd8e68f88b15e64fc06770ffdc6376fcb4cff62
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
(cherry picked from commit
676e3497448177bdb1934cbc4402f921730a5864)
Conflicts:
drivers/usb/dwc3/gadget.c
Konrad Leszczynski [Fri, 12 Feb 2016 15:21:46 +0000 (15:21 +0000)]
UPSTREAM: usb: dwc3: gadget: give better command return code
if Start Transfer command fails, let's try a little
harder to figure out why the command failed and give
slightly better return codes. This will be usefulf
or isochronous endpoints, at least, which could
decide to retry a given request.
Change-Id: Id3ce609ba9149235dc8c9203798dc19cb2fae4bd
Signed-off-by: Konrad Leszczynski <konrad.leszczynski@intel.com>
Signed-off-by: Rafal Redzimski <rafal.f.redzimski@intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
7b9cc7a2b101cc73f6abe3468441381c98817e54)
Heikki Krogerus [Fri, 22 Apr 2016 08:17:38 +0000 (11:17 +0300)]
UPSTREAM: usb: dwc3: pci: pass the platform device as a parameter to dwc3_pci_quirks()
For convenience, passing the dwc3 platform device as a
parameter to dwc3_pci_quirks() function.
Change-Id: Ibe81e416772780cf98c8606e84e9fbd558d88d52
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ce046d323d74ee9d280688a2cb499716f555a89f)
Heikki Krogerus [Fri, 22 Apr 2016 08:17:37 +0000 (11:17 +0300)]
UPSTREAM: usb: dwc3: pci: make build-in device properties available
Setting the ACPI companion before calling dwc3_pci_quirks.
The ACPI companion will be set unconditionally as the
primary fwnode, overriding any previously set primary
fwnode. This will make sure that any build-in properties
added to the platform device will be added as the secondary
fwnode in cases where also ACPI companion exists.
Change-Id: Ib1a5ff15cc644f8c42e6dccf7c5cf0368857e9c8
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
474799f073763b868e158b04b74f8ddd1da38da2)
Fei Yang [Wed, 20 Apr 2016 06:08:43 +0000 (09:08 +0300)]
UPSTREAM: usb: dwc3: ep0: sanity check test mode selector
In case host sends us an unsupported test mode, we
*must* stall this request. This will tell the host
that the selector is invalid and we won't put the
controller in unsupported test modes which could
have undetermined side-effects.
Change-Id: Iaf6a0ae78864efa342a514fdd5e6fc7f2e94e314
Signed-off-by: Fei Yang <fei.yang@intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ae411413760785a0a2ce6cb44d5afe95115aa24d)
Felipe Balbi [Thu, 14 Apr 2016 11:53:44 +0000 (14:53 +0300)]
UPSTREAM: usb: dwc3: debugfs: dump out endpoint details
There's a bunch of information in the debug register
set from dwc3 which is useful in some debugging
scenarios. Let's dump them out in endpoint-specific
directories and designated files.
Change-Id: I8e29084ee8edb426e3ccf501c1c895022d4c1bcd
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
818ec3aba883f58225c9f5a2318cf373263869ed)
Felipe Balbi [Thu, 14 Apr 2016 13:05:54 +0000 (16:05 +0300)]
UPSTREAM: usb: dwc3: core: add helper to extract trb type
This helper will be used later to convert trb type
into a human-readable string for debugfs.
Change-Id: I00ef9c5270465765bf0e03209172359f32368527
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
b058f3e8a3991ba3ea3504fea1faf81974cf17fa)
Felipe Balbi [Thu, 14 Apr 2016 12:03:39 +0000 (15:03 +0300)]
UPSTREAM: usb: dwc3: core: add fifo space helper
this helper will be used, initially, to dump space
of different queues and fifos in dwc3 to
debugfs. Later, it'll be used to issue remote wakeup
when we want to start a transfer and there's
something in a TX FIFO.
Change-Id: I4ebd7a0c0df1757fbfdb561eab84617710e0a580
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
cf6d867d3b57d4eca229b3c506216d98d88be49c)
Du, Changbin [Tue, 12 Apr 2016 11:10:18 +0000 (19:10 +0800)]
UPSTREAM: usb: dwc3: make dwc3_debugfs_init return value be void
Debugfs init failure is not so important. We can continue our job on
this failure. Also no break need for debugfs_create_file call failure.
Signed-off-by: Du, Changbin <changbin.du@intel.com>
[felipe.balbi@linux.intel.com :
- remove out-of-memory message, we get that from OOM.
- switch dev_err() to dev_dbg() ]
Change-Id: I73e5345b64c20e327d0b941e256c518e5c2b195e
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
(cherry picked from commit
4e9f311833a946e984c82086b21b128918f4a6a4)
Conflicts:
drivers/usb/dwc3/debugfs.c
Roger Quadros [Mon, 11 Apr 2016 14:18:25 +0000 (17:18 +0300)]
UPSTREAM: usb: dwc3: omap: get rid of dma_status
dma_status bit flag is set but never really used
so get rid of it.
Change-Id: If11b9522e8592dbeebf1e5d8e9a1eaad43d65f7d
Reported-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
af566a0be6e49b946708532a6a7a7ae29ab83aed)
Felipe Balbi [Wed, 6 Apr 2016 07:01:14 +0000 (10:01 +0300)]
UPSTREAM: usb: dwc3: gadget: don't interrupt when chained
It makes no sense to interrupt in the middle of
chained transfer. This patch just makes sure we
don't do that.
Change-Id: Ic90f7482b1f4367532199155c51fb790c3566cdc
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
8e7046b71daeb6dfbf8c6eaa164e55d4e1dcb5c8)
Felipe Balbi [Tue, 5 Apr 2016 12:05:05 +0000 (15:05 +0300)]
UPSTREAM: usb: dwc3: gadget: remove newline from trace
trace already adds a newline character for us, we
don't need to do it ourselves.
Change-Id: I1cf87e312e9f7f89916911f347fe1b4b93681c19
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
052ba52efa1717651d303a9b88f2e8cbb91702c6)
Felipe Balbi [Tue, 5 Apr 2016 10:24:36 +0000 (13:24 +0300)]
UPSTREAM: usb: dwc3: gadget: use link TRB for all endpoint types
instead of limiting link TRB only to Isoc endpoints,
let's use it for all endpoint types, this way we are
more likely to transfer more data before a
XferComplete event.
Change-Id: Id0e34e43bd1cecf59addcfcfca8e58f727a4a8fa
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
36b68aae8e39ad456eec1ec2073eee388cbcc106)
Felipe Balbi [Tue, 5 Apr 2016 10:14:31 +0000 (13:14 +0300)]
UPSTREAM: usb: dwc3: gadget: move % operation to increment helpers
By moving our % DWC3_NUM_TRB operation to the
increment helpers, the rest of the driver can be
simplified.
It's also a good practice to make sure we will have
a single place dealing with details about how to
increment our enqueue and dequeue pointers.
Change-Id: I4a218a52f6d7c8c2797c64772e25dc734fc6c861
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
4faf75504a7db790483aa419d8f61e58cec4934c)
Felipe Balbi [Tue, 5 Apr 2016 10:09:51 +0000 (13:09 +0300)]
UPSTREAM: usb: dwc3: gadget: add trb enqueue/dequeue helpers
Add three little helpers which will aid in making
the code slightly easier to read. One helper
increments enqueue pointer, another increments
dequeue pointer and the last one tests if we're
dealing with the last TRB.
Change-Id: I98da6b44c0a348978f5e03a374af5b951bb2adc5
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ef966b9d33533b0bf01fb8c4d586ac3b20a3bdb5)
Felipe Balbi [Tue, 5 Apr 2016 09:47:15 +0000 (12:47 +0300)]
UPSTREAM: usb: dwc3: get rid of DWC3_TRB_MASK
instead of using a bitwise and, let's rely on the %
operator since that's a lot more clear. Also, GCC
will optimize % 256 to nothing anyway.
Change-Id: I7c12be2d080f3c70b1028def9736d73084100de7
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
70fdb273db37196e9e5d292d5778a99fededb32f)
Felipe Balbi [Tue, 5 Apr 2016 09:42:15 +0000 (12:42 +0300)]
UPSTREAM: usb: dwc3: switch trb enqueue/dequeue and first_trb_index to u8
We *know* that we have 1 PAGE (4096 bytes) for our
TRB poll. We also know the size of each TRB and know
that we can fit 256 of them in one PAGE. By using a
u8 type we can make sure that:
enqueue++ % 256;
gets optimized to an increment only.
Change-Id: I80e868bff1c431d8b9efbe1a107bfc127da70038
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
c28f82595dde97dda0b769f78f0faea78acd993b)
Felipe Balbi [Tue, 5 Apr 2016 08:33:30 +0000 (11:33 +0300)]
UPSTREAM: usb: dwc3: core: document struct dwc3_request
No functional changes. Merely adding useful
documentation for future readers.
Change-Id: Ib3ecbad6771a72dbc56bc93e12b1c6f52092c372
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
5ef68c56e169a9249b94645a9ea9ca8d14672d26)
Felipe Balbi [Mon, 4 Apr 2016 12:33:41 +0000 (15:33 +0300)]
UPSTREAM: usb: dwc3: gadget: rename busy/free_slot to trb_enqueue/dequeue
This makes it clear that we're dealing with a queue
of TRBs. No functional changes. While at that, also
rename start_slot to first_trb_index for similar
reasons.
Change-Id: Id3efc327981472fff229182552787035de1b6fb7
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
53fd88189e08c91cb9b43e2d51b4eb314a3d00d7)
Grygorii Strashko [Tue, 5 Apr 2016 12:09:44 +0000 (15:09 +0300)]
UPSTREAM: usb: dwc3: omap: drop dma_mask configuration
The DWC3 OMAP driver supports DT-boot only, as result dma_mask will be
always configured properly from DT -
of_platform_device_create_pdata()->of_dma_configure(). More over,
dwc3-omap.c can be built as module and in this case it's unsafe to
assign local variable as dma_mask.
Hence, remove dma_mask configuration code.
Change-Id: I48f756ccc2d84b0e5eb4afc7b3789261d735600c
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
495dd5f78145c44274eeb8ec297195ac71a8fed0)
Rajesh Bhagat [Mon, 14 Mar 2016 09:10:50 +0000 (14:40 +0530)]
UPSTREAM: usb: dwc3: add disable receiver detection in P3 quirk
Some freescale QorIQ platforms require to disable receiver detection
in P3 for correct detection of USB devices. If GUSB3PIPECTL(DISRXDETINP3)
is set, Core will change PHY power state to P2 and then perform receiver
detection. After receiver detection, Core will change PHY power state to
P3. Same quirk would be added in dts file in future patches.
Change-Id: Idf29b70a5c9815a87c96e2b7d8d724157f35d8da
Signed-off-by: Sriram Dash <sriram.dash@nxp.com>
Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
e58dd357741b93f5bc5487aabba968c76bb099ef)
Felipe Balbi [Mon, 4 Apr 2016 09:46:33 +0000 (12:46 +0300)]
UPSTREAM: usb: dwc3: gadget: put link to U0 before Start Transfer
Synopsys Databook says we should move link to U0
before issuing a Start Transfer command. We could
require the gadget driver to call
usb_gadget_wakeup() however I feel that changing all
gadget drivers to keep track of Link State and
conditionally call usb_gadget_wakeup() would be far
too much work. For now we will handle this at the
UDC level, but at some point composite.c should be
one handling this.
Change-Id: I3a124898f642d909c3b705f12dcb95c6af1a7825
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
c36d8e947a56a6e6478fc48152c5f4626462db55)
Felipe Balbi [Mon, 4 Apr 2016 08:24:04 +0000 (11:24 +0300)]
UPSTREAM: usb: dwc3: gadget: extract unlocked dwc3_gadget_wakeup()
we will need this from StartTransfer to make sure
link is in U0 before starting a transfer.
Change-Id: Id6c9497969e2a65b4fae725a0ecf6ff6c369815b
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
218ef7b647e3367c9f81e18f63fbb0066f10b9a5)
Felipe Balbi [Mon, 4 Apr 2016 06:19:17 +0000 (09:19 +0300)]
UPSTREAM: usb: dwc3: gadget: clear SUSPHY bit before ep cmds
Synopsys Databook 2.60a has a note that if we're
sending an endpoint command we _must_ make sure that
DWC3_GUSB2PHY(n).SUSPHY bit is cleared.
This patch implements that particular detail.
Change-Id: Iee711b2a1035af1e82201eacf1ac236e87614819
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
2b0f11df84bb66c9ac71395382c018f33c3ff9a4)
Felipe Balbi [Mon, 4 Apr 2016 06:11:51 +0000 (09:11 +0300)]
UPSTREAM: usb: dwc3: gadget: combine return points into a single one
dwc3_send_gadget_ep_cmd() had three return
points. That becomes a pain to track when we need to
debug something or if we need to add more code
before returning.
Let's combine all three return points into a single
one just by introducing a local 'ret' variable.
Change-Id: I7faecdab1a78c973e59570fc6a32462ac4ddf6fb
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
c0ca324d09a041ab56be1aaeb5a7cc64c47f877b)
Felipe Balbi [Wed, 30 Mar 2016 06:39:34 +0000 (09:39 +0300)]
UPSTREAM: usb: dwc3: gadget: pass ev_buff as cookie to irq handler
we don't plan on using multiple event buffers, but
if we find a good use case for it, this little trick
will help us avoid a loop in hardirq handler looping
for each and every event buffer.
Change-Id: I841862a0b825e50137f6237750c963651b1fdeb7
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
dea520a4a28307034b1842adbfde947e1ed385d2)
Roger Quadros [Tue, 12 Apr 2016 08:33:29 +0000 (11:33 +0300)]
UPSTREAM: usb: dwc3: gadget: Fix suspend/resume during device mode
Gadget controller might not be always active during system
suspend/resume as gadget driver might not have yet been loaded or
might have been unloaded prior to system suspend.
Check if we're active and only then perform
necessary actions during suspend/resume.
Change-Id: I1efb16ec3b2d1c32904c7bcc8cc947d266786e20
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
9772b47a4c2916d645c551228b6085ea24acbe5d)
Du, Changbin [Tue, 12 Apr 2016 08:24:34 +0000 (16:24 +0800)]
UPSTREAM: usb: dwc3: fix memory leak of dwc->regset
dwc->regset is allocated on dwc3_debugfs_init, and should
be released on init failure or dwc3_debugfs_exit. Btw,
The line "dwc->root = NULL" is unnecessary, so remove it.
Change-Id: I57f72554e8fc6eab95bd9103c0a44f4328613d15
Signed-off-by: Du, Changbin <changbin.du@intel.com>
[ felipe.balbi@linux.intel.com : add another err label for the new
error condition ]
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
e6bdf8195b4a43ebff71f25fc7ca5e436e79161a)
Felipe Balbi [Mon, 11 Apr 2016 14:12:34 +0000 (17:12 +0300)]
UPSTREAM: usb: dwc3: core: fix PHY handling during suspend
we need to power off the PHY during suspend and
power it back on during resume.
Change-Id: Ied8a2927e522ce1a94e5bb06ce13af678e47ca18
Signed-off-by: Felipe Balbi <balbi@kernel.org>
[nsekhar@ti.com: fix call to usb_phy_set_suspend() in dwc3_suspend()]
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
5c4ad318de3b8e8680d654c82a254c4b65243739)
Felipe Balbi [Mon, 11 Apr 2016 14:12:33 +0000 (17:12 +0300)]
UPSTREAM: usb: dwc3: omap: fix up error path on probe()
Even if pm_runtime_get*() fails, we *MUST* call
pm_runtime_put_sync() before disabling PM.
While at it, remove superfluous dwc3_omap_disable_irqs()
in error path.
Change-Id: I9dfb77af15b831f0e0e2578536d64f0a36d2fc74
Signed-off-by: Felipe Balbi <balbi@kernel.org>
[nsekhar@ti.com: patch description updates]
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
45d49cb706e5d8f0ca5e868118b5d453afbb938f)
Felipe Balbi [Wed, 30 Mar 2016 06:37:03 +0000 (09:37 +0300)]
UPSTREAM: usb: dwc3: drop ev_buffs array
we will be using a single event buffer and that
renders ev_buffs array unnecessary. Let's remove it
in favor of a single pointer to a single event
buffer.
Change-Id: I3c7b2e306be660baaa570cf63abaa532f4b87eee
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
696c8b1282205caa5206264449f80ef756f14ef7)
Felipe Balbi [Wed, 30 Mar 2016 06:26:24 +0000 (09:26 +0300)]
UPSTREAM: usb: dwc3: remove num_event_buffers
We never, ever route any of the other event buffers
so we might as well drop support for them.
Until someone has a real, proper benefit for
multiple event buffers, we will rely on a single
one. This also helps reduce memory footprint of
dwc3.ko which won't allocate memory for the extra
event buffers.
Change-Id: I70bf36abecc422e59e90a89bb3438be6de0f8ef1
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
660e9bde74d6915227d7ee3485b11e5f52637b26)
Felipe Balbi [Mon, 14 Mar 2016 09:01:31 +0000 (11:01 +0200)]
UPSTREAM: usb: dwc3: better name for our request management lists
request_list and req_queued were, well, weird naming
choices.
Let's give those better names and call them,
respectively, pending_list and started_list. These
new names better reflect what these lists are
supposed to do.
While at that also rename req->queued to req->started.
Change-Id: I0055847591aa22310fd4e142729596c54010eefe
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
aa3342c8bb618ae25beccddacc3efb415c3a987b)
Felipe Balbi [Thu, 10 Mar 2016 12:40:31 +0000 (14:40 +0200)]
UPSTREAM: usb: dwc3: increase maximum number of TRBs per endpoint
previously we were using a maximum of 32 TRBs per
endpoint. With each TRB being 16 bytes long, we were
using 512 bytes of memory for each endpoint.
However, SLAB/SLUB will always allocate PAGE_SIZE
chunks. In order to better utilize the memory we
allocate and to allow deeper queues for gadgets
which would benefit from it (g_ether comes to mind),
let's increase the maximum to 256 TRBs which rounds
up to 4096 bytes for each endpoint.
Change-Id: I2591378bfa8e9c98804d52a1862509c91c4b00f5
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
8495036e986bdc7e82523d47097e7833d2782ff9)
Felipe Balbi [Thu, 10 Mar 2016 11:53:27 +0000 (13:53 +0200)]
UPSTREAM: usb: dwc3: gadget: always enable CSP
CSP bit of TRB Control is useful for protocols such
CDC EEM/ECM/NCM where we're transferring in blocks
of MTU-sized requests (usually MTU is 1500 bytes).
We know we will always have a short packet after two
(for HS) wMaxPacketSize packets and, usually, we
will have a long(-ish) queue of requests (for our
g_ether gadget, we have at least 10
requests).
Instead of always stopping the queue processing to
interrupt, giveback and restart, let's tell dwc3 to
interrupt but continue processing following request
if we have anything already pending in the queue.
This gave me a considerable improvement of 40% on my
test setup.
Change-Id: I02ba152fff9cacad4ffabb3c03a70b06774c09ee
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ca4d44ea2a91b922e1514f5ed77f6bcf3657fd67)
Felipe Balbi [Thu, 4 Feb 2016 12:18:01 +0000 (14:18 +0200)]
UPSTREAM: usb: dwc3: drop FIFO resizing logic
That FIFO resizing logic was added to support OMAP5
ES1.0 which had a bogus default FIFO size. I can't
remember the exact size of default FIFO, but it was
less than one bulk superspeed packet (<1024) which
would prevent USB3 from ever working on OMAP5 ES1.0.
However, OMAP5 ES1.0 support has been dropped by
commit
aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0
support") which renders FIFO resizing unnecessary.
Change-Id: I0c5843d4da7ab9ed975a723075b4b31b6c2fcc54
Tested-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
bc5081617faeb3b2f0c126dc37264b87af7da47f)
Grygorii Strashko [Mon, 4 Apr 2016 11:33:31 +0000 (14:33 +0300)]
UPSTREAM: usb: dwc3: keystone: drop dma_mask configuration
The Keystone 2 supports DT-boot only, as result dma_mask will be
always configured properly from DT -
of_platform_device_create_pdata()->of_dma_configure(). More over,
dwc3-keystone.c can be built as module and in this case it's unsafe to
assign local variable as dma_mask.
Hence, remove dma_mask configuration code.
Change-Id: I10ec6c75bf6deb68d27430bf52e1dc3a56ab151c
Cc: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
adf9a3ab90eb44e57f9dbf757acd897838b5ec21)
Heikki Krogerus [Fri, 1 Apr 2016 14:13:10 +0000 (17:13 +0300)]
UPSTREAM: usb: dwc3: pci: add ID for one more Intel Broxton platform
BXT-M is a Intel Broxton SoC based platform with unique PCI ID.
Change-Id: If37a323423a54e1a04396082ba672d79043082e9
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
1ffb4d5cc78a3a99109ff0808ce6915de07a0588)
Felipe Balbi [Wed, 16 Mar 2016 12:01:37 +0000 (14:01 +0200)]
UPSTREAM: usb: dwc3: gadget: fix endpoint renaming
We were exitting the function before actually
renaming anything. While at that, also always leave
control endpoint un-renamed.
Change-Id: Ia0c8f3d5451e0f5c2e1a6bf61d5b769736bf606d
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
e901aa159dac9988c9961c31c01730effe8f5c22)
Jiebing Li [Thu, 11 Dec 2014 05:26:29 +0000 (13:26 +0800)]
UPSTREAM: usb: dwc3: gadget: release spin lock during gadget resume
It's a requirement that we release controller's lock
while calling gadget API function pointers. This
patch just fixes that long standing bug.
Change-Id: I19c2cd36fa48a6c27d59305ef2d6cb4c35512433
Signed-off-by: Jiebing Li <jiebing.li@intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
ad14d4e0308afda06a60036020a15025571604af)
John Youn [Sat, 6 Feb 2016 01:08:18 +0000 (17:08 -0800)]
UPSTREAM: usb: dwc3: DWC_usb31 controller check
Add a convenience function to check if the controller is DWC_usb31.
Change-Id: I2018d882b389a8499d4c88171650ac22059139be
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit
c4137a9c841ec7fb300782d211f2d6907f4d6e20)
Stephen Boyd [Mon, 22 Feb 2016 19:12:47 +0000 (11:12 -0800)]
UPSTREAM: usb: dwc3: Remove impossible check for of_clk_get_parent_count() < 0
The check for < 0 is impossible now that
of_clk_get_parent_count() returns an unsigned int. Simplify the
code and update the types.
Change-Id: Iadb562ddbb14a61e7e7c65ec947bab12047b100b
Acked-by: Felipe Balbi <balbi@kernel.org>
Cc: <linux-usb@vger.kernel.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
(cherry picked from commit
3d755dcc20dd452b52532eca17da40ebbd12aee9)
Wu Liang feng [Wed, 10 Aug 2016 03:19:25 +0000 (11:19 +0800)]
Revert "usb: dwc3: of-simple: add compatible for rk3399"
This reverts commit
5807cf2b7abb7f8a66cfc3563b387703417e3bb4.
Wu Liang feng [Wed, 10 Aug 2016 03:19:12 +0000 (11:19 +0800)]
Revert "usb: dwc3: add dis_u2_freeclk_exists_quirk"
This reverts commit
ea8f0b113f549f7f89041890212136bcd13a3772.
Wu Liang feng [Wed, 10 Aug 2016 03:18:59 +0000 (11:18 +0800)]
Revert "usb: dwc3: make usb2 phy interface configurable in DT"
This reverts commit
2ef6df639e07b312f9cde351ba4a5d28c0009a82.
Wu Liang feng [Wed, 10 Aug 2016 03:17:40 +0000 (11:17 +0800)]
Revert "usb: dwc3: add dis_del_phy_power_chg_quirk"
This reverts commit
ffee25e68d518aed3a505543355bff1d961159ff.
Wu Liang feng [Wed, 10 Aug 2016 03:17:20 +0000 (11:17 +0800)]
Revert "usb: dwc3: add functions to set force mode"
This reverts commit
9607f47dfec23c5773d74e45ed561859eabce2b7.
Wu Liang feng [Wed, 10 Aug 2016 03:17:08 +0000 (11:17 +0800)]
Revert "usb: dwc3: fix compile failure if config host only mode"
This reverts commit
268399dd6510997f0cce07f20ab9fbd5dcd89ee9.
Wu Liang feng [Wed, 10 Aug 2016 03:15:19 +0000 (11:15 +0800)]
Revert "UPSTREAM: usb: dwc3: drop FIFO resizing logic"
This reverts commit
fea44d339a409a3270c75f91e332c7e54e0ff59d.
Wu Liang feng [Wed, 10 Aug 2016 03:05:25 +0000 (11:05 +0800)]
Revert "usb: dwc3: add a quirk xhci_slow_suspend_quirk"
This reverts commit
362400b86170bc0cf776ce19c8c133427646cebc.
Wu Liang feng [Wed, 10 Aug 2016 03:03:48 +0000 (11:03 +0800)]
Revert "usb: dwc3: core: support DRD mode switch with extcon notifier"
This reverts commit
26ecf99bd66fe915083fb69c7c20b9b9b67d38f0.
Yakir Yang [Thu, 11 Aug 2016 06:24:41 +0000 (14:24 +0800)]
arm64: dts: rockchip: add HDMI DDC pinctrl for RK3399 HDMI
Default to enable the HDMI DDC internal module.
Change-Id: I14e4e3f0b5abb37eb0bb4451e2fcf48bceb3e3b2
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Douglas Anderson [Wed, 16 Sep 2015 16:06:08 +0000 (09:06 -0700)]
CHROMIUM: drm: bridge/dw_hdmi: Reorg hdmi_unmute_interrupts()
Reorganize hdmi_unmute_interrupts() to put all the HPD-related config
together. This also eliminates an extra clearning of the HPD
interrupt.
BUG=chrome-os-partner:44922
TEST=HDMI still works fine.
Change-Id: I9d3cd847a00f9c887e2d054ff2b5671b0eeb8a42
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/299777
Reviewed-by: Yakir Yang <ykk@rock-chips.com>
Douglas Anderson [Wed, 16 Sep 2015 15:49:33 +0000 (08:49 -0700)]
CHROMIUM: drm: bridge/dw_hdmi: Eliminate dw_hdmi_fb_registered()
This is a no-op change that eliminates the dw_hdmi_fb_registered()
function and just folds the code into the one caller of the function:
hdmi_unmute_interrupts().
Eliminated because:
* The name and comment of the function implied that it was to be called
after the frame buffer was registered. ...but it wasn't called when
that happened, at least not directly.
* The function does some parts of enabling the HPD interrupt but not all
parts. Other parts are done by the calling function, and the calling
function also duplicates some bits (like clearing existing HPD). The
split doesn't make sense.
A future change will reorganize hdmi_unmute_interrupts() a little.
BUG=chrome-os-partner:44922
TEST=HDMI still works fine.
Change-Id: Ib77c03dd8f4791bc7276ccab184ff5b766de5ddd
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/299776
Reviewed-by: Yakir Yang <ykk@rock-chips.com>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Yakir Yang [Mon, 28 Sep 2015 08:58:24 +0000 (16:58 +0800)]
CHROMIUM: drm: bridge/dw_hdmi: fix i2cm standard mode setting error
I have uploaded a patch to switch DDC to standard mode in
(https://chromium-review.googlesource.com/298270), but that change
have influence the "spare register" in I2CM_DIV, I know this haven't
cause some know bug, but we need to fix it.
BUG=chrome-os-partner:34741
TEST=None
Change-Id: Iff678fb49828db9b8026422e302a03f687a7c862
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/302751
Commit-Ready: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Douglas Anderson [Mon, 28 Sep 2015 16:26:04 +0000 (09:26 -0700)]
CHROMIUM: drm: bridge/dw_hdmi: Reorder soft reset of i2c
We should really do the reset of i2c before we set the speed. There are
no actual known problems fixed by this, but it seems like a good idea
and the latest upstream patch does this.
BUG=chrome-os-partner:34741
TEST=HDMI vs. suspend/resume, broken monitor, HDCP, etc.
Change-Id: I5207f39e074b7ab0d56d945bd1ae74d06f89c74b
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/302629
Commit-Ready: Yakir Yang <ykk@rock-chips.com>
Reviewed-by: Yakir Yang <ykk@rock-chips.com>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>