|
Mian Yousaf Kaukab |
db7ddd |
From 594d6e7a9f529110fadd72b89edb87518e5856bd Mon Sep 17 00:00:00 2001
|
|
Mian Yousaf Kaukab |
db7ddd |
From: William Wu <william.wu@rock-chips.com>
|
|
Mian Yousaf Kaukab |
db7ddd |
Date: Fri, 2 Jun 2017 11:20:24 +0800
|
|
Mian Yousaf Kaukab |
db7ddd |
Subject: [PATCH 33/86] phy: rockchip-inno-usb2: increase otg sm work first
|
|
Mian Yousaf Kaukab |
db7ddd |
schedule time
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
Git-commit: 5a74a8b74233f0e3c018d4e1c2a52e9393605f47
|
|
Mian Yousaf Kaukab |
db7ddd |
Patch-mainline: v4.13-rc1
|
|
Mian Yousaf Kaukab |
db7ddd |
References: fate#323912
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
In rockchip-inno-usb2 phy driver, we use otg_sm_work to
|
|
Mian Yousaf Kaukab |
db7ddd |
dynamically manage power consumption for phy otg-port.
|
|
Mian Yousaf Kaukab |
db7ddd |
If the otg-port works as peripheral mode and does not
|
|
Mian Yousaf Kaukab |
db7ddd |
communicate with usb host, we will suspend phy.
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
But once suspend phy, the phy no longer has any internal
|
|
Mian Yousaf Kaukab |
db7ddd |
clock running, include the utmi_clk which supplied for
|
|
Mian Yousaf Kaukab |
db7ddd |
usb controller. So if we suspend phy before usb controller
|
|
Mian Yousaf Kaukab |
db7ddd |
init, it will cause usb controller fail to initialize.
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
Specifically, without this patch, the observed order is:
|
|
Mian Yousaf Kaukab |
db7ddd |
1. unplug usb cable
|
|
Mian Yousaf Kaukab |
db7ddd |
2. start system, do dwc2 controller probe
|
|
Mian Yousaf Kaukab |
db7ddd |
3. dwc2_lowlevel_hw_enable()
|
|
Mian Yousaf Kaukab |
db7ddd |
- phy_init()
|
|
Mian Yousaf Kaukab |
db7ddd |
- rockchip_usb2phy_init()
|
|
Mian Yousaf Kaukab |
db7ddd |
- schedule otg_sm_work after 2s
|
|
Mian Yousaf Kaukab |
db7ddd |
put phy in suspend, and close utmi_clk
|
|
Mian Yousaf Kaukab |
db7ddd |
4. dwc2_hsotg_udc_start() - fail to initialize the usb core
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
Generally, dwc2_hsotg_udc_start() can be called within 5s
|
|
Mian Yousaf Kaukab |
db7ddd |
after start system on Rockchip platform, so we increase the
|
|
Mian Yousaf Kaukab |
db7ddd |
the first schedule delay time to 6s for otg_sm_work afer usb
|
|
Mian Yousaf Kaukab |
db7ddd |
controller calls phy_init(), this can make sure that the usb
|
|
Mian Yousaf Kaukab |
db7ddd |
controller completes initialization before phy enter suspend.
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
Signed-off-by: William Wu <william.wu@rock-chips.com>
|
|
Mian Yousaf Kaukab |
db7ddd |
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
|
|
Mian Yousaf Kaukab |
db7ddd |
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
|
|
Mian Yousaf Kaukab |
db7ddd |
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
|
|
Mian Yousaf Kaukab |
db7ddd |
---
|
|
Mian Yousaf Kaukab |
db7ddd |
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 2 +-
|
|
Mian Yousaf Kaukab |
db7ddd |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
|
|
Mian Yousaf Kaukab |
db7ddd |
index f12dc8db5230..d6e459d7094a 100644
|
|
Mian Yousaf Kaukab |
db7ddd |
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
|
|
Mian Yousaf Kaukab |
db7ddd |
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
|
|
Mian Yousaf Kaukab |
db7ddd |
@@ -421,7 +421,7 @@ static int rockchip_usb2phy_init(struct phy *phy)
|
|
Mian Yousaf Kaukab |
db7ddd |
goto out;
|
|
Mian Yousaf Kaukab |
db7ddd |
|
|
Mian Yousaf Kaukab |
db7ddd |
schedule_delayed_work(&rport->otg_sm_work,
|
|
Mian Yousaf Kaukab |
db7ddd |
- OTG_SCHEDULE_DELAY);
|
|
Mian Yousaf Kaukab |
db7ddd |
+ OTG_SCHEDULE_DELAY * 3);
|
|
Mian Yousaf Kaukab |
db7ddd |
} else {
|
|
Mian Yousaf Kaukab |
db7ddd |
/* If OTG works in host only mode, do nothing. */
|
|
Mian Yousaf Kaukab |
db7ddd |
dev_dbg(&rport->phy->dev, "mode %d\n", rport->mode);
|
|
Mian Yousaf Kaukab |
db7ddd |
--
|
|
Mian Yousaf Kaukab |
db7ddd |
2.11.0
|
|
Mian Yousaf Kaukab |
db7ddd |
|