summaryrefslogtreecommitdiff
authorXindong Xu <xindong.xu@amlogic.com>2019-07-17 05:21:47 (GMT)
committer Xindong Xu <xindong.xu@amlogic.com>2019-07-17 05:54:03 (GMT)
commit60ee91081f7574235f7c2f172fe9637dfd160810 (patch)
tree66ecf18d50ce2c3af8029902e1296aaefdc6326b
parent3588d2dc5bcf7902a56cc7a8b28cf95ec1321d1c (diff)
downloaduboot-60ee91081f7574235f7c2f172fe9637dfd160810.zip
uboot-60ee91081f7574235f7c2f172fe9637dfd160810.tar.gz
uboot-60ee91081f7574235f7c2f172fe9637dfd160810.tar.bz2
fastboot: diconnect usb before reboot fastboot [1/1]
PD#SWPL-11372 Problem: reboot fastboot return error Solution: diconnect usb before reboot fastboot Verify: franklin Change-Id: Iea0785570c646bb531fa3c8bfcc6ba14763f4309
Diffstat
-rw-r--r--[-rwxr-xr-x]drivers/usb/gadget/f_fastboot.c2
-rw-r--r--drivers/usb/gadget/fastboot/dwc_pcd.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index dce201c..1d2bc60 100755..100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -58,6 +58,7 @@ DECLARE_GLOBAL_DATA_PTR;
#define FB_DBG(...)
#define FB_HERE() printf("f(%s)L%d\n", __func__, __LINE__)
+extern void f_dwc_otg_pullup(int is_on);
/* The 64 defined bytes plus \0 */
@@ -416,6 +417,7 @@ static void compl_do_reboot_bootloader(struct usb_ep *ep, struct usb_request *re
static void compl_do_reboot_fastboot(struct usb_ep *ep, struct usb_request *req)
{
+ f_dwc_otg_pullup(0);
run_command("reboot fastboot", 0);
}
diff --git a/drivers/usb/gadget/fastboot/dwc_pcd.c b/drivers/usb/gadget/fastboot/dwc_pcd.c
index 10bceb3..d0354a1 100644
--- a/drivers/usb/gadget/fastboot/dwc_pcd.c
+++ b/drivers/usb/gadget/fastboot/dwc_pcd.c
@@ -201,7 +201,12 @@ int f_dwc_core_init()
return 0;
}
-
+void f_dwc_otg_pullup(int is_on)
+{
+ if (is_on)
+ dwc_modify_reg32(DWC_REG_DCTL,2,0);// connect data line
+ else dwc_modify_reg32(DWC_REG_DCTL,0,2);// disconnect data line
+}
int usb_pcd_irq_loop()
{