mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
CHROMIUM: usb: dwc3: add usb3_warm_reset_on_resume_quirk
This patch add a quirk for some special platforms (e.g. rk3399 platform) which need to do warm reset for USB3 device on resume. BUG=chrome-os-partner:58347 TEST=Plug an USB3 flash drive in rk3399 Kevin board Type-C port, then set system enter S3. Wakeup system, check if USB3 device can be detected after resume. Change-Id: I19acc0560001481e5a952175433e82d17dfb3a40 Signed-off-by: William wu <wulf@rock-chips.com> Reviewed-on: https://chromium-review.googlesource.com/412488 Commit-Ready: Guenter Roeck <groeck@chromium.org> Tested-by: Guenter Roeck <groeck@chromium.org> Tested-by: Inno Park <ih.yoo.park@samsung.com> Reviewed-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Meng Dongyang <daniel.meng@rock-chips.com>
This commit is contained in:
parent
12b5fa422a
commit
e403255a8c
|
|
@ -59,6 +59,7 @@ Optional properties:
|
|||
- snps,quirk-frame-length-adjustment: Value for GFLADJ_30MHZ field of GFLADJ
|
||||
register for post-silicon frame length adjustment when the
|
||||
fladj_30mhz_sdbnd signal is invalid or incorrect.
|
||||
- snps,usb3-warm-reset-on-resume-quirk: when set, need warm reset on resume.
|
||||
|
||||
- <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated.
|
||||
|
||||
|
|
|
|||
|
|
@ -999,6 +999,8 @@ static int dwc3_probe(struct platform_device *pdev)
|
|||
"snps,tx-ipgap-linecheck-dis-quirk");
|
||||
dwc->xhci_slow_suspend_quirk = device_property_read_bool(dev,
|
||||
"snps,xhci-slow-suspend-quirk");
|
||||
dwc->usb3_warm_reset_on_resume_quirk = device_property_read_bool(dev,
|
||||
"snps,usb3-warm-reset-on-resume-quirk");
|
||||
|
||||
dwc->tx_de_emphasis_quirk = device_property_read_bool(dev,
|
||||
"snps,tx_de_emphasis_quirk");
|
||||
|
|
|
|||
|
|
@ -821,6 +821,7 @@ struct dwc3_scratchpad_array {
|
|||
* @xhci_slow_suspend_quirk: set if need an extraordinary delay to wait
|
||||
* for xHC enter the Halted state after the Run/Stop
|
||||
* (R/S) bit is cleared to '0'.
|
||||
* @usb3_warm_reset_on_resume_quirk: set if need a warm reset on resume
|
||||
* @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
|
||||
* @tx_de_emphasis: Tx de-emphasis value
|
||||
* 0 - -6dB de-emphasis
|
||||
|
|
@ -971,6 +972,7 @@ struct dwc3 {
|
|||
unsigned dis_del_phy_power_chg_quirk:1;
|
||||
unsigned tx_ipgap_linecheck_dis_quirk:1;
|
||||
unsigned xhci_slow_suspend_quirk:1;
|
||||
unsigned usb3_warm_reset_on_resume_quirk:1;
|
||||
|
||||
unsigned tx_de_emphasis_quirk:1;
|
||||
unsigned tx_de_emphasis:2;
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ int dwc3_host_init(struct dwc3 *dwc)
|
|||
pdata.usb3_disable_autosuspend = dwc->dis_u3_autosuspend_quirk;
|
||||
pdata.usb3_lpm_capable = dwc->usb3_lpm_capable;
|
||||
pdata.xhci_slow_suspend = dwc->xhci_slow_suspend_quirk;
|
||||
pdata.usb3_warm_reset_on_resume = dwc->usb3_warm_reset_on_resume_quirk;
|
||||
|
||||
ret = platform_device_add_data(xhci, &pdata, sizeof(pdata));
|
||||
if (ret) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user