Commit Graph

605909 Commits

Author SHA1 Message Date
Jerry Xu
041de7d0c1 Documentation: display: bridge: add adv7125 documentation
Change-Id: I637c8ffc9cd7f22a1bfabff109c5c87a42a30cd0
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2018-01-26 10:40:58 +08:00
Jerry Xu
92b345eb3e ARM: dts: rk3288-popmetal: Add RGB to VGA bridge support
Change-Id: I8a584752fb4fbfb4a247aa53e31c372d5fdf5103
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2018-01-26 10:40:19 +08:00
Jerry Xu
751b94a7e9 drm/bridge: add psave gpio control for dumb-vga-dac
Change-Id: If2c5402d842e13df4baf2d608718e0597f5d4ff7
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2018-01-26 10:39:49 +08:00
Dingqiang Lin
1a0b9345e8 arm64: dts: rockchip: add nandc node for px30
Change-Id: Ifaa92e2d4ec1e35356a4051ae19084859149770e
Signed-off-by: Dingqiang Lin <jon.lin@rock-chips.com>
2018-01-26 09:26:26 +08:00
Zhang Yunlong
354664b4b4 arm64: dts: rockchip: px30: correct cif pinctrl place
Change-Id: I0181fe97e0528c3552f4cef25453f9c2f834f7c8
Signed-off-by: Zhang Yunlong <dalon.zhang@rock-chips.com>
2018-01-25 20:29:52 +08:00
Zhang Yunlong
a75b4427e1 arm64: dts: rockchip: px30: add cif and isp node
Change-Id: Ic6f6780acf315ab46bd1023f449ca2eca97132fe
Signed-off-by: Zhang Yunlong <dalon.zhang@rock-chips.com>
2018-01-25 18:28:20 +08:00
Zorro Liu
d35c257365 arm64: dts: rockchip: add sensor config for px30 and rk3326
Change-Id: I474977744146b72928a66ef4bd35858260de0364
Signed-off-by: Zorro Liu <lyx@rock-chips.com>
2018-01-25 18:21:19 +08:00
William Wu
b742b07e84 usb: dwc_otg_310: increase otg max_transfer_size to 128KB
The default value of the max_transfer_size is only 65535,
but according to the field of PktSizeWidth in GHWCFG3, the
otg controller on rockchip platforms can support max 512KB
transfer size. So we increase the otg max_transfer_size to
128KB, it can help to avoid dividing into two hardware
transmissions if the usb device class driver(e.g. f_mtp.c)
request to transfer more than 65535 Bytes data in a single
usb request.

Change-Id: Ic281965815e48e4a146a13f9d37f88a10ee0d33e
Signed-off-by: William Wu <william.wu@rock-chips.com>
2018-01-25 15:09:20 +08:00
William Wu
c94093c84f usb: dwc_otg_310: pcd: fix out short packet handle
If there is more data in the request than we could fit into
a single hardware request, then check both of the following
conditions:

- ep->dwc_ep.xfer_len < ep->dwc_ep.total_len;
- deptsiz.b.xfersize == 0;

If ep->dwc_ep.xfer_len < ep->dwc_ep.total_len and deptsiz.b.xfersize
isn't zero, it means that we have received a short packet from
host, then we shouldn't setup transfer for next portion of
data.

This patch can fix the following issue:
Use MTP to transfer more than 4GB single file from PC to RK3368
tablet base on the follow conditions:

- Increase the default Tx/Rx buf size to 64K or more in f_mtp.c
- Set the core_params->max_transfer_size to 65535;

Without this patch, it will fail to transfer the file at the end
because the f_mtp driver is waiting for a short packet to signal
EOF for file sizes > 4 gig, but the dwc2 driver doesn't handle
the short packet.

Change-Id: I172d48d727da4b75153705ce6b60728203dd35ca
Signed-off-by: William Wu <william.wu@rock-chips.com>
2018-01-25 15:09:20 +08:00
Zhang Yunlong
b988a8dabd camera: rockchip: cif: oneframe mode support px30
Change-Id: Ic65a33cb9edb40e552ff0510ff9dbadb7eb9674f
Signed-off-by: Zhang Yunlong <dalon.zhang@rock-chips.com>
2018-01-25 14:41:54 +08:00
Algea Cao
1a3b8415bc drm/rockchip: Fix up cvbs NTSC timing
Change-Id: Ieb0491da7fdd5babf8b016d680111bee56cf6bff
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
2018-01-25 14:37:01 +08:00
Tao Huang
717b50db3a gpio: remove unused rk drivers
Change-Id: I5422c234f695874d7585db80c1d8d47629332852
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-25 11:12:37 +08:00
Tao Huang
5bd9647081 mfd: remove unused rk-rk808 drivers
Change-Id: I3f20b66b9e1c426407d8a09b0a61f7445158f75c
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-25 11:11:40 +08:00
Tao Huang
1992cc0e41 serial: remove unused rk drivers
Change-Id: If7356271263694862030136aed9b32016e6327e4
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-25 11:11:32 +08:00
Tao Huang
8f5dace1e0 spi: remove unused rk drivers
Change-Id: Ib0eb7eb391637253cbe5f09f684ef2dc9a266b2e
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-25 10:54:59 +08:00
Tao Huang
052b8beaa3 i2c: remove unused rk drivers
Change-Id: I7e198d811ec2163c28ac095d60e95f4e9ac702e3
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-25 10:39:37 +08:00
Tao Huang
8f9e364c9c input: keyboard: remove unused rk29_keys driver
Change-Id: I4faf4e44cbfad2b3353d49baa75b3d21d9a01edf
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-25 10:23:37 +08:00
Jung Zhao
1c67d0330a video: rockchip: vpu: remove extra lock
when power off, no need to lock/unlock reset_lock. and
if set reg failed, need to unlock reset_lock.

Change-Id: If0a50920504bb69f9fa13790e85af1830fda7946
Signed-off-by: Jung Zhao <jung.zhao@rock-chips.com>
2018-01-25 10:14:14 +08:00
Jung Zhao
0d4515d3bb video: rockchip: vpu: add default power off when rk322x power off
Change-Id: I860a6624724468b1e61d56f9b638e2e300a81184
Signed-off-by: Jung Zhao <jung.zhao@rock-chips.com>
2018-01-25 10:14:10 +08:00
Zhou weixin
b12504fad6 ARM: dts: rockchip: rk3126-bnd-d708: update system/vendor partition path
The new partition path is compatible with the following two partition names.
GTP partition: rknand0px
Old partition: rknand_X(rknand_system)

Change-Id: I993d42064bf4e093bfe01512db563f635baeff39
Signed-off-by: Weixin Zhou <zwx@rock-chips.com>
2018-01-25 10:13:17 +08:00
zhangyunlong
df069b4939 camera: rockchip: camsys_drv: v0.0x22.4
Change-Id: I169afc59a55a4056da76d2bdd1a32fbf86d28658
Signed-off-by: Zhang Yunlong <dalon.zhang@rock-chips.com>
2018-01-25 10:03:41 +08:00
zhangyunlong
1cea76da68 camera: rockchip: camsys driver v0.0x23.0
Change-Id: Ia4f527488f588c3adb6c3ea6cd1be868fe006d14
Signed-off-by: zhangyunlong <dalon.zhang@rock-chips.com>
2018-01-25 10:03:31 +08:00
Frank Wang
62932c7e33 usb: amend ehci no-relinquish-port for rk3288 platform
For the hardware bug of RK3288 OHCI, we use commit cfe6f1dd57
("usb: ehci: add rockchip relinquishing port quirk support") to fix
it previously. However, it have been ineffective after upstream commit
94c43b9897 ("USB: Check for dropped connection before switching to
full speed") was merged due to the condition of relinquishing port was
changed.

This patch adds an additional condition for the previous commit to ensure
no relinquish port quirk can take effect for RK3288 EHCI.

Change-Id: I0630265e101afb349816955e069e1c121745ac08
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
2018-01-24 20:02:00 +08:00
Wyon Bi
35cd525521 drm/rockchip: lvds: Add support for PX30
Change-Id: I353e76f1afdac02edd2ec78b5d107d6431c4a7d8
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-01-24 15:27:44 +08:00
Wyon Bi
d79a942925 arm64: dts: rockchip: px30: update lvds and dsi node
Change-Id: Ib78c7287e75bbc3ded341a9b44a8531b374b8740
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-01-24 11:21:10 +08:00
Zhou weixin
f8eee37712 ARM: dts: rockchip: detect sdcard by gpio for rk312x
if the sdmmc detect with iomux sdmmc_detn will false trigger
once the system into deepsleep

Change-Id: I5928b94327175ee2b39bd0740ea2eafa9d28604d
Signed-off-by: Weixin Zhou <zwx@rock-chips.com>
2018-01-24 11:17:14 +08:00
Tao Huang
117a23131e Revert "asm-generic: fncpy: Add function copying macros"
This reverts commit 49d083bd72.

The patch is part of PIE, we do not need it anymore.

Change-Id: Iedc231105fa18c3cadd2cfd023c451c40570be96
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
2018-01-24 10:58:19 +08:00
Finley Xiao
38cd02b946 clk: rockchip: px30: Add pclk for cif and isp
Change-Id: Ied25f2c6746e7cc233c4c22436f45ba82900631a
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2018-01-24 10:36:56 +08:00
David Wu
f37ae45b20 dt-bindings: clock: px30-cru: Rename the gmac reset
Change-Id: I91976f4f4fe4e8b81a5520a12995c317c16b0190
Signed-off-by: David Wu <david.wu@rock-chips.com>
2018-01-24 09:45:19 +08:00
Xinhuang Li
28b5fdf0f4 ARM: dts: rk322x: add iep and iep_mmu node
Change-Id: I023fd9ca35c605f36555d8e7a4499c59b2573e0c
Signed-off-by: Xinhuang Li <buluess.li@rock-chips.com>
2018-01-24 09:24:48 +08:00
Alex Zhao
6b8e6ee695 net: wireless: rockchip_wlan: add WIFI_FEATURE_LINK_LAYER_STATS support
Change-Id: I97334e69270e280f39236eebee7663e08b78d6be
Signed-off-by: Alex Zhao <zzc@rock-chips.com>
2018-01-24 09:23:36 +08:00
Huicong Xu
fe62b85484 phy: rockchip: inno-hdmi: fix hdmi no display sometime wake up
when wake up only power on hdmi phy, it may result in tmds pll unlock
because when in deep suspend, the power maybe no in a normal state.
now reinstall all register when wark up.

Change-Id: Ie882fa9b99bc6f4bfb3b2a6ea88a043b2f89ed58
Signed-off-by: Huicong Xu <xhc@rock-chips.com>
2018-01-23 14:31:02 +08:00
Huicong Xu
bc980e7ce2 phy: rockchip: inno-hdmi: fix hdmi abnormal after set color depth
reinstall hdmi TMDS clock when set color depth between 8bit and 10bit
to fix tmds clock frequency mismatch

Change-Id: I5ac951cd6cc0ac04b595009be7ae250e42290854
Signed-off-by: Huicong Xu <xhc@rock-chips.com>
2018-01-23 14:30:05 +08:00
William Wu
784560b520 usb: dwc2: don't clear mode if already in normal mode
When clear the force mode bits, it needs to wait up to
100 ms to account for any potential IDDIG filter delay.
In the current code, it will call this three times during
probe if dr_mode == OTG. With this patch, we can reduce
it to once. It can help to speed up the DWC2 probe time.

Change-Id: I588042b03b086599e4020c3072653dfb3138fdc1
Signed-off-by: William Wu <william.wu@rock-chips.com>
2018-01-23 14:28:19 +08:00
John Stultz
8fff4c95e6 UPSTREAM: usb: dwc2: Error out of dwc2_hsotg_ep_disable() if we're in host mode
We've found that while in host mode, using Android, if one runs
the command:
  stop adbd

The existing usb devices being utilized in host mode are disconnected.
This is most visible with usb networking devices.

This seems to be due to adbd closing the file:
  /dev/usb-ffs/adb/ep0
Which calls ffs_ep0_release() and the following backtrace:

[<ffffff800875a430>] dwc2_hsotg_ep_disable+0x148/0x150
[<ffffff800875a498>] dwc2_hsotg_udc_stop+0x60/0x110
[<ffffff8008787950>] usb_gadget_remove_driver+0x58/0x78
[<ffffff80087879e4>] usb_gadget_unregister_driver+0x74/0xe8
[<ffffff80087850c0>] unregister_gadget+0x28/0x58
[<ffffff800878511c>] unregister_gadget_item+0x2c/0x40
[<ffffff8008790ea8>] ffs_data_clear+0xe8/0xf8
[<ffffff8008790ed8>] ffs_data_reset+0x20/0x58
[<ffffff8008793218>] ffs_data_closed+0x98/0xe8
[<ffffff80087932d8>] ffs_ep0_release+0x20/0x30

Then when dwc2_hsotg_ep_disable() is called, we call
kill_all_requests() which causes a bunch of the following
messages:

dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
dwc2 f72c0000.usb: Mode Mismatch Interrupt: currently in Host mode
init: Service 'adbd' (pid 1915) killed by signal 9
init: Sending signal 9 to service 'adbd' (pid 1915) process group...
init: Successfully killed process cgroup uid 0 pid 1915 in 0ms
init: processing action (init.svc.adbd=stopped) from (/init.usb.configfs.rc:15)
dwc2 f72c0000.usb: dwc2_hc_chhltd_intr_dma: Channel 8 - ChHltd set, but reason is unknown
dwc2 f72c0000.usb: hcint 0x00000002, intsts 0x04200029
dwc2 f72c0000.usb: dwc2_hc_chhltd_intr_dma: Channel 12 - ChHltd set, but reason is unknown
dwc2 f72c0000.usb: hcint 0x00000002, intsts 0x04200029
dwc2 f72c0000.usb: dwc2_hc_chhltd_intr_dma: Channel 15 - ChHltd set, but reason is unknown
dwc2 f72c0000.usb: hcint 0x00000002, intsts 0x04200029
dwc2 f72c0000.usb: dwc2_hc_chhltd_intr_dma: Channel 3 - ChHltd set, but reason is unknown
dwc2 f72c0000.usb: hcint 0x00000002, intsts 0x04200029
dwc2 f72c0000.usb: dwc2_hc_chhltd_intr_dma: Channel 4 - ChHltd set, but reason is unknown
dwc2 f72c0000.usb: hcint 0x00000002, intsts 0x04200029
dwc2 f72c0000.usb: dwc2_update_urb_state_abn(): trimming xfer length

And the usb devices connected are basically hung at this point.

It seems like if we're in host mode, we probably shouldn't run
the dwc2_hostg_ep_disable logic, so this patch returns an error
in that case.

With this patch (along with the previous patch in this set), we avoid
the mismatched interrupts and connected usb devices continue to function.

I'm not sure if some other solution would be better here, but this seems
to work, so I wanted to send it out for input on what the right approach
should be.

Change-Id: Iabdcdd0e33dc2009bfa5127971b7c6097a69c98f
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: YongQin Liu <yongqin.liu@linaro.org>
Cc: John Youn <johnyoun@synopsys.com>
Cc: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Chen Yu <chenyu56@huawei.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Acked-by: Minas Harutyunyan <hminas@synopsys.com>
Tested-by: Minas Harutyunyan <hminas@synopsys.com>
Reported-by: YongQin Liu <yongqin.liu@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 9b481092c2)
2018-01-23 14:28:19 +08:00
Heiner Kallweit
3d7b42013a UPSTREAM: usb: dwc2: fix "iomem 0x00000000" message
Set the iomem parameters in the usb_hcd to fix this misleading
message during driver load:
dwc2 c9100000.usb: irq 22, io mem 0x00000000

Conflicts:
        drivers/usb/dwc2/hcd.c

Change-Id: I20cc185d05fe506321d8541ee6df728967d82482
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 348becdcc3)
2018-01-23 14:28:19 +08:00
Chen Yu
b769d292d6 UPSTREAM: usb: dwc2: Force port resume on switching to device mode
We've seen failures when switching between host and gadget mode,
which was diagnosed as being caused due to the bus being
auto-suspended when we switched.

So this patch forces a port resume when switching to device
mode if the bus is suspended.

Change-Id: I6e1023484d5cf7120b7b5836c1fd8476f47cef11
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: John Youn <johnyoun@synopsys.com>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Chen Yu <chenyu56@huawei.com>
Cc: Vardan Mikayelyan <mvardan@synopsys.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Signed-off-by: Chen Yu <chenyu56@huawei.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 9156a7ef1c)
2018-01-23 14:28:19 +08:00
John Stultz
17a558fa5e UPSTREAM: usb: dwc2: Workaround case where GOTGCTL state is wrong
When removing a USB-A to USB-otg adapter cable, we get a change status
irq, and then in dwc2_conn_id_status_change, we erroneously see the
GOTGCTL_CONID_B flag set. This causes us to get stuck in the
"while (!dwc2_is_device_mode(hsotg))" loop, spitting out "Waiting for
Peripheral Mode, Mode=Host" warnings until it fails out many seconds
later.

This patch works around the issue by re-reading the GOTGCTL state to
check if the GOTGCTL_CONID_B is still set and if not restarting the
change status logic.

Change-Id: If75fea4e81d40413dca696750873ba7e51d6b105
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: John Youn <johnyoun@synopsys.com>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Chen Yu <chenyu56@huawei.com>
Cc: Vardan Mikayelyan <mvardan@synopsys.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Reviewed-by: Vardan Mikayelyan <mvardan@synopsys.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit fc30c4bb44)
2018-01-23 14:28:19 +08:00
John Stultz
a875efed49 UPSTREAM: usb: dwc2: Avoid sleeping while holding hsotg->lock
Basically when plugging in various cables in different orders, I'm
occasionally seeing the following BUG splat:

[   86.215403] BUG: scheduling while atomic: kworker/u16:2/53/0x00000002
[   86.219164] usb 1-1: USB disconnect, device number 9
[   86.226845] Preemption disabled at:[   86.230218]
[<ffffff8008673558>] dwc2_conn_id_status_change+0x120/0x250
[   86.236894] CPU: 0 PID: 53 Comm: kworker/u16:2 Tainted: G        W
     4.9.0-rc8-00051-gd5a7979-dirty #1702
[   86.246836] Hardware name: HiKey Development Board (DT)
[   86.252100] Workqueue: dwc2 dwc2_conn_id_status_change
[   86.257279] Call trace:
[   86.259771] [<ffffff8008087c28>] dump_backtrace+0x0/0x1a0
[   86.265210] [<ffffff8008087ddc>] show_stack+0x14/0x20
[   86.270308] [<ffffff80084343f0>] dump_stack+0x90/0xb0
[   86.275401] [<ffffff80080d8d94>] __schedule_bug+0x6c/0xb8
[   86.280841] [<ffffff8008a07220>] __schedule+0x4f8/0x5b0
[   86.286099] [<ffffff8008a073e8>] schedule+0x38/0xa0
[   86.291017] [<ffffff8008a0a6cc>] schedule_hrtimeout_range_clock+0x8c/0xf0
[   86.297846] [<ffffff8008a0a740>] schedule_hrtimeout_range+0x10/0x18
[   86.304150] [<ffffff8008a0a4a0>] usleep_range+0x50/0x58
[   86.309418] [<ffffff800866d8dc>] dwc2_wait_for_mode.isra.4+0x54/0xd0
[   86.315815] [<ffffff800866f058>] dwc2_core_reset+0xe0/0x168
[   86.321431] [<ffffff800867e364>] dwc2_hsotg_core_init_disconnected+0x2c/0x310
[   86.328602] [<ffffff8008673568>] dwc2_conn_id_status_change+0x130/0x250
[   86.335254] [<ffffff80080ccd48>] process_one_work+0x118/0x370
[   86.341035] [<ffffff80080ccfe8>] worker_thread+0x48/0x498
[   86.346473] [<ffffff80080d2eb0>] kthread+0xd0/0xe8
[   86.351299] [<ffffff8008082e80>] ret_from_fork+0x10/0x50

This seems to be caused by the dwc2_wait_for_mode() calling
usleep_range() while the hstog->lock spinlock is held, since
we take that before calling dwc2_hsotg_core_init_disconnected().

This patch avoids the issue by adding an extra argument to
dwc2_core_reset(), as suggested by John Youn, which allows us to
skip the waiting, which should be unnecessary when calling from
dwc2_hsotg_core_init_disconnected().

Change-Id: Idd6ca776e7a503f3415cdaa8864ef05927b067dd
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: John Youn <johnyoun@synopsys.com>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Chen Yu <chenyu56@huawei.com>
Cc: Vardan Mikayelyan <mvardan@synopsys.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 6e6360b67d)
2018-01-23 14:28:19 +08:00
Nicholas Mc Guire
569e50e592 UPSTREAM: usb: dwc2: host: use msleep() for long delays
ulseep_range() uses hrtimers and provides no advantage over msleep()
for larger delays. Fix up the 20+ ms delays here passing the adjusted "min"
value to msleep(). This helps reduce the load on the hrtimer subsystem.

Change-Id: I11c79f5796c2ef86765cf724c95bdb717775e054
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 04a9db7992)
2018-01-23 14:28:19 +08:00
Nicholas Mc Guire
eeaee633c5 UPSTREAM: usb: dwc2: host: fix Wmaybe-uninitialized warning
Uninitialized char* causes a sparse build-warning, fix it up by
initializing it to NULL.

Change-Id: I1908e251c1af10ef5ec0a69988b6e9251d59006e
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit efe357f463)
2018-01-23 14:28:19 +08:00
Amelie Delaunay
ce2975094d UPSTREAM: usb: dwc2: gadget: Fix GUSBCFG.USBTRDTIM value
USBTrdTim must be programmed to 0x5 when phy has a UTMI+ 16-bit wide
interface or 0x9 when it has a 8-bit wide interface.
GUSBCFG reset value (Value After Reset: 0x1400) sets USBTrdTim to 0x5.
In case of 8-bit UTMI+, without clearing GUSBCFG.USBTRDTIM mask, USBTrdTim
results in 0xD (0x5 | 0x9).
That's why we need to clear GUSBCFG.USBTRDTIM mask before setting USBTrdTim
value, to ensure USBTrdTim is correctly set in case of 8-bit UTMI+.

Change-Id: If5a0c92b03fa51ead559fbf3be52cade404f5d25
Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit ca02954ada)
2018-01-23 14:28:19 +08:00
John Stultz
e01a704ff2 UPSTREAM: usb: dwc2: Avoid suspending if we're in gadget mode
I've found when booting HiKey with the usb gadget cable attached
if I then try to connect via adb, I get an infinite spew of:

dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790ecb18 ep1out, 0)
dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790eca18 ep1in, 0)

It seems that the usb autosuspend is suspending the bus shortly
after bootup when the gadget cable is attached. So when adbd
then tries to use the device, it doesn't work and it then tries
to restart it over and over via the ep_sethalt calls (via
FUNCTIONFS_CLEAR_HALT ioctl).

Chen Yu suggested this patch to avoid suspending if we're
in device mode, and it avoids the problem.

Change-Id: I20086689c36fced465f348661a3c731c8c297899
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Cc: Amit Pundir <amit.pundir@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: John Youn <johnyoun@synopsys.com>
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Chen Yu <chenyu56@huawei.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Suggested-by: Chen Yu <chenyu56@huawei.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 866932e277)
2018-01-23 14:28:19 +08:00
Sevak Arakelyan
361eb95bc3 UPSTREAM: usb: dwc2: Stop Complete Splits after Data PID == 0
Stop sending complete split requests in case of ISOC IN split transfers
after getting data with PID0. Otherwise we will get a NYET for each
additional IN token.

Change-Id: I2713509085f2c89f4d442584445547f87345c37d
Signed-off-by: Sevak Arakelyan <sevaka@synopsys.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 9d8da85798)
2018-01-23 14:28:19 +08:00
John Youn
231d1336b5 UPSTREAM: usb: dwc2: Remove unnecessary kfree
This shouldn't be freed by the HCD as it is owned by the core and
allocated with devm_kzalloc.

Change-Id: I269deb75e19e9a5eb27ace999c92c1ef22e361e4
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit cd4b1e3465)
2018-01-23 14:28:19 +08:00
Masahiro Yamada
ccc85416af UPSTREAM: usb: dwc2: cleanup with list_first_entry_or_null()
The combo of list_empty() check and return list_first_entry()
can be replaced with list_first_entry_or_null().

Change-Id: I562e6b5a1961c7003b2016c35b32fd56e1d36240
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit ffc4b4067e)
2018-01-23 14:28:19 +08:00
Nicholas Mc Guire
c9def7c856 UPSTREAM: usb: dwc2: host: use msleep() for long delay
ulseep_range() uses hrtimers and provides no advantage over msleep()
for larger delays. Fix up the 100ms delays here passing the adjusted "min"
value to msleep(). This helps reduce the load on the hrtimer subsystem.

Link: http://lkml.org/lkml/2017/1/11/377
Change-Id: I133f0126b8289c9844432e5cc21838216e63498b
Fixes: commit 2938fc63e0 ("usb: dwc2: Properly account for the force mode delays")
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit d3fe81d2cc)
2018-01-23 14:28:19 +08:00
Heiko Stuebner
c456bcd090 UPSTREAM: usb: dwc2: Add msleep for host-only
Although a host-only controller should not have any associated delay,
some rockchip SOC platforms will not show the correct host-values of
registers until after a delay.

So add a 50 ms sleep when in host-only mode.

Change-Id: I3f4963b3ad00a49ed60fe9f27c83939ed5b4742a
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit a07ce8d34e)
2018-01-23 14:28:19 +08:00
John Youn
7d5c96662a UPSTREAM: usb: dwc2: Properly account for the force mode delays
When a force mode bit is set and the IDDIG debounce filter is enabled,
there is a delay for the forced mode to take effect. This delay is due
to the IDDIG debounce filter and is variable depending on the platform's
PHY clock speed. To account for this delay we can poll for the expected
mode.

On a clear force mode, since we don't know what mode to poll for, delay
for a fixed 100 ms. This is the maximum delay based on the slowest PHY
clock speed.

Change-Id: I73b1d8db9a1782f2b08647ceef08f3bffdf9c2b1
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit 2938fc63e0)
2018-01-23 14:28:19 +08:00
John Youn
a4a76d0c39 UPSTREAM: usb: dwc2: Add delay to core soft reset
Add a delay to the core soft reset function to account for the IDDIG
debounce filter.

If the current mode is host, either due to the force mode bit being
set (which persists after core reset) or the connector id pin, a core
soft reset will temporarily reset the mode to device and a delay from
the IDDIG debounce filter will occur before going back to host mode.

Change-Id: I1c08c00b877b9fc330741469d0310fdfda834bbc
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit fef6bc37db)
2018-01-23 14:28:19 +08:00