Zhi Yong,
Yes, it is uboot code limitation. in the last time I was debugging this issue, the uboot usb init code looks as following.
int host_port; /* global var */ for (int i; i < 2; i++) { if (USB[i] port mode is MUSB_HOST) host_port = i; }
You can see, if both ports are set to host mode, the global variable host_port is always pointing to USB1.