dwusb: fix no response on set_config
Since some bits of DCTL are clear by fault.
Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
diff --git a/Drivers/Usb/DwUsb3Dxe/DwUsb3Dxe.c b/Drivers/Usb/DwUsb3Dxe/DwUsb3Dxe.c
index e324f38..e9111f9 100644
--- a/Drivers/Usb/DwUsb3Dxe/DwUsb3Dxe.c
+++ b/Drivers/Usb/DwUsb3Dxe/DwUsb3Dxe.c
@@ -1688,7 +1688,6 @@
{
if (online) {
}
-#endif
VOID
DwUsb3SetConfig (
@@ -1699,6 +1698,7 @@
UINT16 wvalue = ctrl->wValue;
usb3_pcd_ep_t *ep;
+DEBUG ((DEBUG_ERROR, "#%a, %d, wvalue:0x%x\n", __func__, __LINE__, wvalue));
if (ctrl->bmRequestType != (UT_WRITE | UT_STANDARD | UT_DEVICE)) {
EndPoint0DoStall (pcd);
return;
@@ -1730,12 +1730,14 @@
} else {
pcd->state = USB3_STATE_ADDRESSED;
}
+DEBUG ((DEBUG_ERROR, "#%a, %d, state:%d\n", __func__, __LINE__, pcd->state));
pcd->ep0.is_in = 1;
pcd->ep0state = EP0_IN_WAIT_NRDY;
} else {
EndPoint0DoStall (pcd);
}
}
+#endif
STATIC
VOID
@@ -1768,6 +1770,7 @@
UINT16 wvalue = ctrl->wValue;
usb3_pcd_ep_t *ep;
+DEBUG ((DEBUG_ERROR, "#%a, %d, wvalue:0x%x\n", __func__, __LINE__, wvalue));
if (ctrl->bmRequestType != (UT_WRITE | UT_STANDARD | UT_DEVICE)) {
EndPoint0DoStall (pcd);
return;
@@ -1795,6 +1798,7 @@
} else {
pcd->state = USB3_STATE_ADDRESSED;
}
+DEBUG ((DEBUG_ERROR, "#%a, %d, state:%d\n", __func__, __LINE__, pcd->state));
pcd->ep0.is_in = 1;
pcd->ep0state = EP0_IN_WAIT_NRDY;
} else {
@@ -2028,9 +2032,9 @@
break;
case UR_SET_CONFIG:
DwUsb3DoSetConfig (pcd);
- MmioAnd32 (DCTL, DCTL_ACCEPT_U1_EN);
- MmioAnd32 (DCTL, DCTL_ACCEPT_U2_EN);
- DEBUG ((DEBUG_INFO, "enum done"));
+ MmioOr32 (DCTL, DCTL_ACCEPT_U1_EN);
+ MmioOr32 (DCTL, DCTL_ACCEPT_U2_EN);
+ DEBUG ((DEBUG_ERROR, "enum done"));
pcd->ltm_enable = 0;
break;
case UR_GET_CONFIG: