update actual transfer size for ep0 out
authoryangkai <yk@rock-chips.com>
Fri, 7 Dec 2012 07:40:42 +0000 (15:40 +0800)
committeryangkai <yk@rock-chips.com>
Fri, 7 Dec 2012 07:40:42 +0000 (15:40 +0800)
drivers/usb/dwc_otg/dwc_otg_pcd_intr.c

index e514b558a7d7be7e14c3ae6021fbc85ae5e35de3..5e1a7ccf4e6ad89260f4e605fa6bd5cb54ed93be 100755 (executable)
@@ -1804,6 +1804,7 @@ static void handle_ep0( dwc_otg_pcd_t *_pcd )
 {
        dwc_otg_core_if_t *core_if = GET_CORE_IF(_pcd);
        dwc_otg_pcd_ep_t *ep0 = &_pcd->ep0;
+       deptsiz_data_t deptsiz;
 
 #ifdef DEBUG_EP0
        DWC_DEBUGPL(DBG_PCDV, "%s()\n", __func__);
@@ -1855,6 +1856,8 @@ static void handle_ep0( dwc_otg_pcd_t *_pcd )
                                                ep0->dwc_ep.num, (ep0->dwc_ep.is_in ?"IN":"OUT"),
                                                ep0->dwc_ep.type, ep0->dwc_ep.maxpacket );
 #endif
+        deptsiz.d32 = dwc_read_reg32( &core_if->dev_if->in_ep_regs[0]->dieptsiz);
+        ep0->dwc_ep.xfer_count = ep0->dwc_ep.xfer_len - deptsiz.b.xfersize;
                ep0_complete_request( ep0 );
                break;