Beagleboard usb can’t enumerate LAN9514 at the second time?

Hi,
I’m working on a Beagleboard-xm similar board(only some GPIO difference),and modify uboot&kernel,the board boot-up successfully.
To debug convinently, I include CONFIG_CMD_DHCP、CONFIG_CMD_PING、CONFIG_CMD_NET in uboot, and add mine command to reset LAN9514…

+static int reset_hub(cmd_tbl_t *cmdtp,int flag,int argc,char * const argv[])
+{
+   gpio_request(13,"reset hub");
+   gpio_direction_output(13,1);
+   __udelay(10000);
+   gpio_direction_output(13,0);
+   return 0;   
+}
+U_BOOT_CMD(resethub,CONFIG_SYS_MAXARGS,1,reset_hub,"reset hub","");

But, there is a problem:
When first start usb ,LAN9514 enumerate successfully. But in the second time, LAN9514 enumerate fail.

U-Boot# usb start
(Re)start USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 3 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
       scanning usb for ethernet devices... 1 Ethernet Device(s) found
U-Boot# usb start
(Re)start USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
       scanning usb for ethernet devices... 0 Ethernet Device(s) found

I have checked USB2HS_RESET waveform and HUB_RESET waveform,they seems ok.

and I checkout USB3320 ‘s USBDM0、USBDP0 pin, nothing output when “usb start “command, is USB3320 reset fail?

And my kernel can’t enumerate LAN9514 either,the dmesg say “connection is closed”: