应该是 de-bounce 问题,NUC970/NUC980 USB host 有个 bug,当 Host 在做 port reset 的时候,如果刚好 device disconnect,有机率造成 port status卡死,之后插拔也无法恢复。尤其是极缓慢的插拔,容易复现。
解决方案是将 port de-bounce 时间拉到比较长,建议 500ms ~ 1000ms
修改 drivers/usb/core/hub.c
原始设定 (debounce 100ms)
#define HUB_DEBOUNCE_TIMEOUT 2000
#define HUB_DEBOUNCE_STEP 25
#define HUB_DEBOUNCE_STABLE 100
改为 (debounce 500ms)
#define HUB_DEBOUNCE_TIMEOUT 3000
#define HUB_DEBOUNCE_STEP 100
#define HUB_DEBOUNCE_STABLE 500
或者
改为 (debounce 1000ms)
#define HUB_DEBOUNCE_TIMEOUT 5000
#define HUB_DEBOUNCE_STEP 100
#define HUB_DEBOUNCE_STABLE 1000