author | Xindong 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) |
commit | 60ee91081f7574235f7c2f172fe9637dfd160810 (patch) | |
tree | 66ecf18d50ce2c3af8029902e1296aaefdc6326b | |
parent | 3588d2dc5bcf7902a56cc7a8b28cf95ec1321d1c (diff) | |
download | uboot-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
-rw-r--r--[-rwxr-xr-x] | drivers/usb/gadget/f_fastboot.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/fastboot/dwc_pcd.c | 7 |
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() { |