firefly-linux-kernel-4.4.55.git
8 years agoUPSTREAM: usb: dwc3: gadget: prepare TRBs on update transfers too
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)

8 years agoUPSTREAM: usb: dwc3: core: get rid of DWC3_PM_OPS macro
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)

8 years agoUPSTREAM: usb: dwc3: gadget: fix gadget suspend/resume
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)

8 years agoUPSTREAM: usb: dwc3: gadget: re-factor ->udc_start and ->udc_stop
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)

8 years agoUPSTREAM: usb: dwc3: Set the ClearPendIN bit on Clear Stall EP command
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)

8 years agoUPSTREAM: usb: dwc3: st: Fix USB_DR_MODE_PERIPHERAL configuration.
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)

8 years agoUPSTREAM: usb: dwc3: gadget: fix mask and shift order in DWC3_DCFG_NUMP()
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)

8 years agoUPSTREAM: usb: dwc3: gadget: disable automatic calculation of ACK TP NUMP
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)

8 years agoUPSTREAM: usb: dwc3: gadget: update DCFG.NumP to max burst size
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

8 years agoUPSTREAM: usb: dwc3: gadget: give better command return code
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)

8 years agoUPSTREAM: usb: dwc3: pci: pass the platform device as a parameter to dwc3_pci_quirks()
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)

8 years agoUPSTREAM: usb: dwc3: pci: make build-in device properties available
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)

8 years agoUPSTREAM: usb: dwc3: ep0: sanity check test mode selector
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)

8 years agoUPSTREAM: usb: dwc3: debugfs: dump out endpoint details
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)

8 years agoUPSTREAM: usb: dwc3: core: add helper to extract trb type
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)

8 years agoUPSTREAM: usb: dwc3: core: add fifo space helper
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)

8 years agoUPSTREAM: usb: dwc3: make dwc3_debugfs_init return value be void
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

8 years agoUPSTREAM: usb: dwc3: omap: get rid of dma_status
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)

8 years agoUPSTREAM: usb: dwc3: gadget: don't interrupt when chained
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)

8 years agoUPSTREAM: usb: dwc3: gadget: remove newline from trace
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)

8 years agoUPSTREAM: usb: dwc3: gadget: use link TRB for all endpoint types
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)

8 years agoUPSTREAM: usb: dwc3: gadget: move % operation to increment helpers
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)

8 years agoUPSTREAM: usb: dwc3: gadget: add trb enqueue/dequeue helpers
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)

8 years agoUPSTREAM: usb: dwc3: get rid of DWC3_TRB_MASK
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)

8 years agoUPSTREAM: usb: dwc3: switch trb enqueue/dequeue and first_trb_index to u8
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)

8 years agoUPSTREAM: usb: dwc3: core: document struct dwc3_request
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)

8 years agoUPSTREAM: usb: dwc3: gadget: rename busy/free_slot to trb_enqueue/dequeue
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)

8 years agoUPSTREAM: usb: dwc3: omap: drop dma_mask configuration
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)

8 years agoUPSTREAM: usb: dwc3: add disable receiver detection in P3 quirk
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)

8 years agoUPSTREAM: usb: dwc3: gadget: put link to U0 before Start Transfer
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)

8 years agoUPSTREAM: usb: dwc3: gadget: extract unlocked dwc3_gadget_wakeup()
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)

8 years agoUPSTREAM: usb: dwc3: gadget: clear SUSPHY bit before ep cmds
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)

8 years agoUPSTREAM: usb: dwc3: gadget: combine return points into a single one
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)

8 years agoUPSTREAM: usb: dwc3: gadget: pass ev_buff as cookie to irq handler
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)

8 years agoUPSTREAM: usb: dwc3: gadget: Fix suspend/resume during device mode
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)

8 years agoUPSTREAM: usb: dwc3: fix memory leak of dwc->regset
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)

8 years agoUPSTREAM: usb: dwc3: core: fix PHY handling during suspend
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)

8 years agoUPSTREAM: usb: dwc3: omap: fix up error path on probe()
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)

8 years agoUPSTREAM: usb: dwc3: drop ev_buffs array
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)

8 years agoUPSTREAM: usb: dwc3: remove num_event_buffers
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)

8 years agoUPSTREAM: usb: dwc3: better name for our request management lists
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)

8 years agoUPSTREAM: usb: dwc3: increase maximum number of TRBs per endpoint
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)

8 years agoUPSTREAM: usb: dwc3: gadget: always enable CSP
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)

8 years agoUPSTREAM: usb: dwc3: drop FIFO resizing logic
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)

8 years agoUPSTREAM: usb: dwc3: keystone: drop dma_mask configuration
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)

8 years agoUPSTREAM: usb: dwc3: pci: add ID for one more Intel Broxton platform
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)

8 years agoUPSTREAM: usb: dwc3: gadget: fix endpoint renaming
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)

8 years agoUPSTREAM: usb: dwc3: gadget: release spin lock during gadget resume
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)

8 years agoUPSTREAM: usb: dwc3: DWC_usb31 controller check
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)

8 years agoUPSTREAM: usb: dwc3: Remove impossible check for of_clk_get_parent_count() < 0
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)

8 years agoRevert "usb: dwc3: of-simple: add compatible for rk3399"
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.

8 years agoRevert "usb: dwc3: add dis_u2_freeclk_exists_quirk"
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.

8 years agoRevert "usb: dwc3: make usb2 phy interface configurable in DT"
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.

8 years agoRevert "usb: dwc3: add dis_del_phy_power_chg_quirk"
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.

8 years agoRevert "usb: dwc3: add functions to set force mode"
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.

8 years agoRevert "usb: dwc3: fix compile failure if config host only mode"
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.

8 years agoRevert "UPSTREAM: usb: dwc3: drop FIFO resizing logic"
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.

8 years agoRevert "usb: dwc3: add a quirk xhci_slow_suspend_quirk"
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.

8 years agoRevert "usb: dwc3: core: support DRD mode switch with extcon notifier"
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.

8 years agoarm64: dts: rockchip: add HDMI DDC pinctrl for RK3399 HDMI
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>
8 years agoCHROMIUM: drm: bridge/dw_hdmi: Reorg hdmi_unmute_interrupts()
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>
8 years agoCHROMIUM: drm: bridge/dw_hdmi: Eliminate dw_hdmi_fb_registered()
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>
8 years agoCHROMIUM: drm: bridge/dw_hdmi: fix i2cm standard mode setting error
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>
8 years agoCHROMIUM: drm: bridge/dw_hdmi: Reorder soft reset of i2c
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>
8 years agoCHROMIUM: drm: bridge/dw_hdmi: switch ddc mode to standard mode
Yakir Yang [Wed, 9 Sep 2015 02:13:53 +0000 (21:13 -0500)]
CHROMIUM: drm: bridge/dw_hdmi: switch ddc mode to standard mode

DDC have two modes: fast mode, standard mode. The previous ddc support
patch(https://chromium-review.googlesource.com/#/c/292012/) configure
the ddc to fast mode.

It works rightly in most HDTV case, but I found that ddc would always
failed if I used the VGA->HDMI adapter. And after I switch ddc to
standard mode, no failed anymore. I believe the standard mode could
provide better compatibility.

BUG=chrome-os-partner:34741
TEST=My VGA->HDMI adapter can read edid now

Change-Id: Ia33ade0a4fda998483baf454b9ccb9f31802f6bc
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/298270
Commit-Ready: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
8 years agoCHROMIUM: drm: bridge/dw_hdmi: Provide an of_node to DDC i2c bus
Douglas Anderson [Wed, 2 Sep 2015 18:04:11 +0000 (11:04 -0700)]
CHROMIUM: drm: bridge/dw_hdmi: Provide an of_node to DDC i2c bus

In (3b9ba9a FROMLIST: drm: bridge/dw_hdmi: add dw hdmi i2c bus adapter
support) we added a new i2c bus adapter but no of_node was provided to
the adapter.  This made it difficult to assign a bus number to the
adapter in the device tree.

Because of the fact that dynamic bus numbering of i2c starts at 0 and
the fact that i2c busses are no longer allowed to be loaded extra-early
at boot (because deferred probe solves the boot order problem), it's
possible that this could cause the DDC i2c bus to get ID 0 and could
cause later SoC i2c busses to fail to probe because they're expecting to
get ID 0.

Note that probe ordering of mickey is slightly different than probe
ordering of other veyron devices, which is why this only shows up on
mickey.

BUG=chrome-os-partner:44802
TEST=With dts patch can now boot mickey again

Change-Id: I8f971a967f398ab58a6713a2b6471a4a2fe61dc6
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/297040
Reviewed-by: Alexandru Stan <amstan@chromium.org>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
8 years agoFROMLIST: drm: bridge/dw_hdmi: add dw hdmi i2c bus adapter support
Vladimir Zapolskiy [Sun, 30 Aug 2015 21:34:30 +0000 (00:34 +0300)]
FROMLIST: drm: bridge/dw_hdmi: add dw hdmi i2c bus adapter support

The change adds support of internal HDMI I2C master controller, this
subdevice is used by default, if "ddc-i2c-bus" DT property is omitted.

The main purpose of this functionality is to support reading EDID from
an HDMI monitor on boards, which don't have an I2C bus connected to
DDC pins.

The current implementation does not support "I2C Master Interface
Extended Read Mode" to read data addressed by non-zero segment
pointer, this means that if EDID has more than 1 extension blocks,
EDID reading operation won't succeed, in my practice all tested HDMI
monitors have at maximum one extension block.
(am from https://patchwork.kernel.org/patch/7098101)

Change-Id: Ic3abe878a02f89bda15f39676164803b467c62a1
Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/292012
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
8 years agodt-bindings: screen-timing: add AUO mipi screen H381DLN01
Andy Yan [Thu, 11 Aug 2016 09:16:02 +0000 (17:16 +0800)]
dt-bindings: screen-timing: add AUO mipi screen H381DLN01

H381DLN01 is a 3.81" signle channel MIPI SCREEN with resolution 1080x1200,
it can connect to RK3399 via one DSI channel or dual channel with two panels.

Change-Id: Ib6b5e021b65ac5d24f32ef4a6c0e3fdf5aa4cf08
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
8 years agoarm64: rockchip_defconfig: enable console thread
Huibin Hong [Tue, 16 Aug 2016 01:24:03 +0000 (09:24 +0800)]
arm64: rockchip_defconfig: enable console thread

Change-Id: Id8b01e7379fda8de10997bb32a24640665b95b9f
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
8 years agofiq_debugger: print log by console thread
Huibin Hong [Fri, 12 Aug 2016 03:19:48 +0000 (11:19 +0800)]
fiq_debugger: print log by console thread

Change-Id: Id664cdfe02f87b1f8bb37b9a4e3985c1eafef226
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
8 years agoARM: configs: rockchip: enable configfs usb gadget and dw2 otg in rockchip_linux_defc...
Jacob Chen [Sun, 14 Aug 2016 05:39:29 +0000 (13:39 +0800)]
ARM: configs: rockchip: enable configfs usb gadget and dw2 otg in rockchip_linux_defconfig

Required by ADB

Change-Id: I2f0b85131839bfb62402a7fa8b36e5be2b360b29
Signed-off-by: Jacob Chen <jacob2.chen@rock-chips.com>
8 years agoARM: dts: rk3288: enable usb otg for evb-board
Jacob Chen [Sun, 14 Aug 2016 05:40:10 +0000 (13:40 +0800)]
ARM: dts: rk3288: enable usb otg for evb-board

Required by ADB

Change-Id: I80bd0205aabd03978c8070cf6c4eca2359386219
Signed-off-by: Jacob Chen <jacob2.chen@rock-chips.com>
8 years agoARM: dts: rk3288: support AP6212 bt for rk3288-Fennec
Nickey Yang [Mon, 8 Aug 2016 07:07:56 +0000 (15:07 +0800)]
ARM: dts: rk3288: support AP6212 bt for rk3288-Fennec

This patch add and enable AP6212 bt node for rk3288-Fennec

Change-Id: I71b7c3a59cad92c6867d3b9f4bcfb44fe560c39c
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
8 years agodt-bindings: screen-timing: lcd-LP097Qx2: add cabc-lut for cabc
Zhou weixin [Mon, 15 Aug 2016 02:50:44 +0000 (10:50 +0800)]
dt-bindings: screen-timing: lcd-LP097Qx2: add cabc-lut for cabc

Change-Id: I836780fd37f4623c5ee23be1594a75f838aae645
Signed-off-by: Zhou weixin <zwx@rock-chips.com>
8 years agoarm64: dts: rockchip: rename RK3399 Excavator files name
Yakir Yang [Thu, 11 Aug 2016 06:45:31 +0000 (14:45 +0800)]
arm64: dts: rockchip: rename RK3399 Excavator files name

Let Sapphire SoC board name at the front of Excavator Main board.

Change-Id: Ie6bcd411900b43a1412197927238337e3a7ae5b0
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
8 years agoarm64: dts: rockchip: resort RK3399 Excavator boards by alpha
Yakir Yang [Thu, 11 Aug 2016 06:42:14 +0000 (14:42 +0800)]
arm64: dts: rockchip: resort RK3399 Excavator boards by alpha

Resort the RK3399 Excavator and Sapphire dts files by alpha.

Change-Id: I1942144c20d25c6776c5a28132a3ea961cf4ac0f
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
8 years agopwm: rockchip: fix ioremap failed for voppwm
David Wu [Tue, 5 Apr 2016 18:26:29 +0000 (02:26 +0800)]
pwm: rockchip: fix ioremap failed for voppwm

Change-Id: I3df7e2ee2b8cb24c4c8aad30cf6d55d11adf0573
Signed-off-by: David Wu <david.wu@rock-chips.com>
8 years agoarm64: dts: rockchip: add voppwm support for rk3399
David Wu [Tue, 5 Apr 2016 13:58:04 +0000 (21:58 +0800)]
arm64: dts: rockchip: add voppwm support for rk3399

Change-Id: I16b4f77083c05ffa71d569e378ea6e3cc9b1ee54
Signed-off-by: David Wu <david.wu@rock-chips.com>
8 years agoarm64: dts: rk3399: add device node for loader display
Mark Yao [Mon, 1 Aug 2016 10:04:30 +0000 (18:04 +0800)]
arm64: dts: rk3399: add device node for loader display

Change-Id: I11e144fa8c7c0dfae70a03c23e392cebc6303177
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
8 years agodrm/rockchip: support loader display
Mark Yao [Mon, 1 Aug 2016 10:00:50 +0000 (18:00 +0800)]
drm/rockchip: support loader display

Change-Id: Ia3708d4dff638380aa03f83e38248840454e2b70
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
8 years agoFROMLIST: drm/bridge: dw-hdmi: fix hdmi display lost
Mark Yao [Thu, 11 Aug 2016 07:54:03 +0000 (15:54 +0800)]
FROMLIST: drm/bridge: dw-hdmi: fix hdmi display lost

hdmi->disabled maybe not match to the real hardware status.

->dw_hdmi_bridge_enable()
  hdmi->disabled = false;
-->dw_hdmi_update_power()
   if (hdmi->rxsense)
       force = DRM_FORCE_ON;
   else
       force = DRM_FORCE_OFF;

hdmi->rxsense maybe false on bridge enable path, then hdmi->disabled
is false, but actually hardware is power off, they are not match.

So on dw_hdmi_irq, judge the hardware status with hdmi->disabled is wrong.
This bug would cause display lost, unplug/plug can't recovery display.

Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Liu Ying <gnuiyl@gmail.com>
Change-Id: Iaa5c56b5df32c6d3811f4131d63033fbccd005ae
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
(am from https://patchwork.kernel.org/patch/9274599)

8 years agopd: rockchip: support active_wakeup for rockchip pd
Elaine Zhang [Thu, 11 Aug 2016 05:23:15 +0000 (13:23 +0800)]
pd: rockchip: support active_wakeup for rockchip pd

Register gpd_dev_ops.active_wakeup function to support keep power
during suspend state. And add flag to each power domain to
decide whether keep power during suspend or not.

Change-Id: I00b5111c4703be871180d859993dbea00ec82953
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
8 years agoARM64: dts: rk3399: fix pwm id for vdd_center
Jianqun Xu [Wed, 10 Aug 2016 03:11:29 +0000 (11:11 +0800)]
ARM64: dts: rk3399: fix pwm id for vdd_center

RK3399 EVB1 and EVB2 use pwm3 for vdd_center, but EVB3 use pwm2.
This patch moved the vdd_center node to each board dtsi file.

Change-Id: I2b46b06b622c30ab65f26663a3628e73733472ad
Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
8 years agodriver,sensor,ak8963: compatible with hardware code
Zorro Liu [Fri, 12 Aug 2016 02:40:07 +0000 (10:40 +0800)]
driver,sensor,ak8963: compatible with hardware code

Change-Id: I18bccedb914cf373188f2e199c6b15b917e0e366
Signed-off-by: Zorro Liu <lyx@rock-chips.com>
8 years agoARM64: rockchip_defconfig: cpufreq: use interactive as default policy
Chen Liang [Fri, 12 Aug 2016 03:48:18 +0000 (11:48 +0800)]
ARM64: rockchip_defconfig: cpufreq: use interactive as default policy

We meet some problem of performance with sched policy, interactive is
better.

Change-Id: Ie62c0e7b82b1c67b5646f6b90d3e4666015c5816
Signed-off-by: Chen Liang <cl@rock-chips.com>
8 years agoUPSTREAM: mmc: mmc: use ops->card_busy() to check card status in __mmc_switch()
Chaotian Jing [Thu, 19 May 2016 08:47:40 +0000 (16:47 +0800)]
UPSTREAM: mmc: mmc: use ops->card_busy() to check card status in __mmc_switch()

some MMC host do not support MMC_CAP_WAIT_WHILE_BUSY but provides
ops->card_busy(), So, add this method to check card status after
switch command.

This patch also fix CMD23 command response timeout which found on
evb-rk3288.

[   13.725563  ] mmcblk0: timed out sending SET_BLOCK_COUNT
command,card status 0x400e00
[   13.733328  ] mmcblk0: command error, retrying timeout
[   13.741792  ] mmcblk0: timed out sending SET_BLOCK_COUNT command,card
status 0x400e00
[   13.749555  ] mmcblk0: command error, retrying timeout
[   13.758246  ] mmcblk0: timed out sending SET_BLOCK_COUNT command,card
status 0x400e00

(cherry picked from commit 87a18a6a565271a886d48df49e5e27ba99e26c60)

Change-Id: I7e1b0f0001639e0b43d4a6951148ed5f625e18dd
Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
8 years agoUPSTREAM: mmc: mmc: fix switch timeout issue caused by jiffies precision
Chaotian Jing [Thu, 19 May 2016 08:47:42 +0000 (16:47 +0800)]
UPSTREAM: mmc: mmc: fix switch timeout issue caused by jiffies precision

with CONFIG_HZ=100, the precision of jiffies is 10ms, and the
generic_cmd6_time of some card is also 10ms. then, may be current
time is only 5ms, but already timed out caused by jiffies precision.

(cherry picked from commit 987aa5f8059613bf85cbb6f64ffbd34f5cb7a9d1)

Change-Id: I43f1bc93e1100e86b138ec20a37612338a7153c6
Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
8 years agoUPSTREAM: mmc: sdhci: Fix sdhci_card_busy()
Adrian Hunter [Thu, 23 Jun 2016 11:00:58 +0000 (14:00 +0300)]
UPSTREAM: mmc: sdhci: Fix sdhci_card_busy()

host->card_busy() was introduced for SD voltage switching which checks all
4 data lines.

Increasingly, host->card_busy is being used to poll the the busy signal
which is only data line 0 (DAT[0]).

The current logic in sdhci_card_busy() does not work in that case because
it returns false if any of the data lines is high.  It also ignores
possibilities:
- data lines 1-3 are not connected and could show at any level
- data lines 1-2 can be used by SDIO for other purposes

According to the SD specification, it is OK to check any of the data lines
for voltage switching, so change to use DAT[0] only.

(cherry picked from commit e613cc477c777a175c89d607d1f7a8ef528d2c43)

Change-Id: I11862e4ab67867271caedc01c0e74c5e24daea37
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
8 years agoMALI: midgard: rockchip: change devfreq_dvfs_interval to 20 ms
chenzhen [Thu, 11 Aug 2016 08:15:38 +0000 (16:15 +0800)]
MALI: midgard: rockchip: change devfreq_dvfs_interval to 20 ms

Change-Id: I2ba7988bd08bb05661a324b66a27cf2028ebd5db
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
8 years agoARM64: dts: rk3399: vr: set NO_DUAL vop mode
wlq [Wed, 10 Aug 2016 12:37:21 +0000 (20:37 +0800)]
ARM64: dts: rk3399: vr: set NO_DUAL vop mode

Change-Id: I0e951dad9d733e0765e65cb0cb9216e7422b9fbc
Signed-off-by: Wu Liangqing <wlq@rock-chips.com>
8 years agoARM: dts: rk3288: add asoc simple-audio-card for DW-HDMI audio for miniarm
Nickey Yang [Mon, 1 Aug 2016 09:13:38 +0000 (17:13 +0800)]
ARM: dts: rk3288: add asoc simple-audio-card for DW-HDMI audio for miniarm

Change-Id: Iccc88ef5cdc926f79d65b6bcfcf1b4e8c1a84055
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
8 years agopower: rk818-battery: add POWER_SUPPLY_PROP_STATUS report property
Jianhong Chen [Wed, 10 Aug 2016 13:08:13 +0000 (21:08 +0800)]
power: rk818-battery: add POWER_SUPPLY_PROP_STATUS report property

Change-Id: Ie301f934e8f8cf88702d89b733d7006bbf1ed023
Signed-off-by: Jianhong Chen <chenjh@rock-chips.com>
8 years agovideo: rockchip: fb: only open vop one time when switch screen
Huang Jiachai [Mon, 8 Aug 2016 06:26:32 +0000 (14:26 +0800)]
video: rockchip: fb: only open vop one time when switch screen

Change-Id: I7c95d25d80e303aae41dd9bec0e3eb326c4baba7
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
8 years agodrm/rockchip: add plane feature scale and alpha
Mark Yao [Tue, 2 Aug 2016 07:40:53 +0000 (15:40 +0800)]
drm/rockchip: add plane feature scale and alpha

Change-Id: I64b89e616ff9f2059df38a7f9995ff98e670104a
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
8 years agovideo: rockchip: vop: 3368: add FBDC_ABGR_888 data format
Huang Jiachai [Wed, 10 Aug 2016 13:35:50 +0000 (21:35 +0800)]
video: rockchip: vop: 3368: add FBDC_ABGR_888 data format

Change-Id: I6e0ae64c988038d65eb74be99ccfdd170fd61320
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
8 years agodrm/rockchip: fix compile warning when build as modules
Mark Yao [Thu, 11 Aug 2016 01:19:52 +0000 (09:19 +0800)]
drm/rockchip: fix compile warning when build as modules

rockchip_drm_fb.c:In function 'rockchip_drm_fb_destroy':
rockchip_drm_fb.c:51:21: warning: unused variable 'dev' [-Wunused-variable]

Change-Id: I4b9f976c71b310c411a4d1fb9990743d7109b45f
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
8 years agoARM: dts: rockchip: enable vpu for rk3288-firefly
Nickey Yang [Tue, 9 Aug 2016 08:01:38 +0000 (16:01 +0800)]
ARM: dts: rockchip: enable vpu for rk3288-firefly

Change-Id: I551cc01e658228656fed1a423a9dbeee23dbdcd3
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
8 years agoARM: dts: rockchip: bump sd card pin drive strength up on rk3288-firefly
Nickey Yang [Tue, 9 Aug 2016 07:40:02 +0000 (15:40 +0800)]
ARM: dts: rockchip: bump sd card pin drive strength up on rk3288-firefly

This patch fix a corruption when reading card information during probe time.

Change-Id: I3fe1b32db12b7d71f7ae0c724b7c6d70382e3210
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
8 years agoARM: dts: rk3288: support AP6335 bt for rk3288-firefly
Nickey Yang [Mon, 8 Aug 2016 10:18:17 +0000 (18:18 +0800)]
ARM: dts: rk3288: support AP6335 bt for rk3288-firefly

Change-Id: Ib9ea03fe42eecde3bf0292b57a9aa0754f849bf5
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
8 years agoARM: dts: rk3288: support AP6335 wifi for rk3288-firefly
Nickey Yang [Mon, 8 Aug 2016 06:19:17 +0000 (14:19 +0800)]
ARM: dts: rk3288: support AP6335 wifi for rk3288-firefly

This patch add and enable AP6335 wifi node for rk3288-firefly

Change-Id: I5db126aa50b7d83cd50498d487c35383c900b855
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>