亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kitlusbser.c

?? 6410BSP3
?? C
?? 第 1 頁 / 共 4 頁
字號:
                OTGDEV_WrPktEp0((UINT8 *)aDescStr2+(oOtgDev.m_uEp0SubState*oOtgDev.m_uControlEPMaxPktSize), oOtgDev.m_uControlEPMaxPktSize);
                oOtgDev.m_uEp0State = EP0_STATE_GD_STR_I2;
                oOtgDev.m_uEp0SubState++;
            }
            else
            {
                if (oOtgDev.m_eSpeed == USB_HIGH)
                    Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(0<<0));    //ep0 enable, clear nak, next ep0, 64byte
                else
                    Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
                DBGUSB("[E]");
                OTGDEV_WrPktEp0((UINT8 *)aDescStr2+(oOtgDev.m_uEp0SubState*oOtgDev.m_uControlEPMaxPktSize), sizeof(aDescStr2)-(oOtgDev.m_uEp0SubState*oOtgDev.m_uControlEPMaxPktSize));
                oOtgDev.m_uEp0State = EP0_STATE_INIT;
                oOtgDev.m_uEp0SubState = 0;
            }
            break;

        case EP0_STATE_GD_DEV_QUALIFIER:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 10);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(0<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)aDeviceQualifierDescriptor+0, 10);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;

        case EP0_STATE_INTERFACE_GET:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 1);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)&oInterfaceGet+0, 1);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;


        case EP0_STATE_GET_STATUS0:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 1);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)&oStatusGet+0, 1);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;

        case EP0_STATE_GET_STATUS1:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 1);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)&oStatusGet+1, 1);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;

        case EP0_STATE_GET_STATUS2:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 1);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)&oStatusGet+2, 1);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;

        case EP0_STATE_GET_STATUS3:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 1);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)&oStatusGet+3, 1);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;

        case EP0_STATE_GET_STATUS4:
            OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, 1);
            Outp32(DIEPCTL0, (1u<<31)|(1<<26)|(BULK_IN_EP<<11)|(3<<0));    //ep0 enable, clear nak, next ep0, 8byte
            OTGDEV_WrPktEp0((UINT8 *)&oStatusGet+4, 1);
            oOtgDev.m_uEp0State = EP0_STATE_INIT;
            break;

        default:
            break;
    }
}


//////////
// Function Name : OTGDEV_HandleEvent_BulkIn
// Function Desctiption : This function handles bulk in transfer in CPU mode.
// Input : NONE
// Output : NONE
// Version :
UINT16 OTGDEV_HandleEvent_BulkIn(UINT8 *pch, UINT32 fifoCntByte)
{
    UINT32 ucLen;

    volatile UINT32 uGIntStatus,uDaint;

    if (!pch ) 
    {
        fifoCntByte = 0;
        return fifoCntByte;
    }
                      
    // Don't try to send more than EP1 can handle.
    if( fifoCntByte > oOtgDev.m_uBulkInEPMaxPktSize )
    {
            ucLen = oOtgDev.m_uBulkInEPMaxPktSize;
    }
    else 
    {
        // If we end exactly on a packet boundary, the host doesn't
        // realize there is no more data.  So if we exactly fill the final 
        // packet, truncate it so we can send a short packet next frame
        // indicating end of the transmission
        if( fifoCntByte == oOtgDev.m_uBulkInEPMaxPktSize ) 
        {
            ucLen = oOtgDev.m_uBulkInEPMaxPktSize - 4;
        }
        else
        {
            ucLen = fifoCntByte;
        }
    }   
    while(1)
    {    
        Inp32(GINTSTS, uGIntStatus); // System status read
        
        if (uGIntStatus & INT_IN_EP)
        {
            Inp32(DAINT, uDaint);
            if (uDaint & (1<<BULK_IN_EP))
            {
                break;
            }
        }
    }   
    
    OTGDEV_SetInEpXferSize(EP_TYPE_BULK, 1, ucLen);
    Outp32(bulkIn_DIEPCTL, 1<<31|1<<26|2<<18|1<<15|oOtgDev.m_uBulkInEPMaxPktSize<<0);        //ep3 enable, clear nak, bulk, usb active, next ep3, max pkt 64
    OTGDEV_WrPktBulkInEp(pch, ucLen);
    return ucLen;
}

//////////
// Function Name : OTGDEV_HandleEvent_BulkOut
// Function Desctiption : This function handles bulk out transfer.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_HandleEvent_BulkOut(UINT8 *pch, UINT32 fifoCntByte)
{
    if (oOtgDev.m_eOpMode == USB_CPU)
    {
        OTGDEV_RdPktBulkOutEp((UINT8 *)pch, fifoCntByte);

        OTGDEV_SetOutEpXferSize(EP_TYPE_BULK, 1, oOtgDev.m_uBulkOutEPMaxPktSize);
        
        Outp32(bulkOut_DOEPCTL, 1<<31|1<<26|2<<18|1<<15|oOtgDev.m_uBulkOutEPMaxPktSize<<0);        //ep3 enable, clear nak, bulk, usb active, next ep3, max pkt 64
    }
}

//#pragma optimize ("",off)

//////////
// Function Name : OTGDEV_InitPhyCon
// Function Desctiption : This function initializes OTG Phy.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_InitPhyCon(void)
{
    Outp32(PHYPWR, 0x0);
    Outp32(PHYCTRL, 0x20);
    Outp32(RSTCON, 0x1);
    delayLoop(10);
    Outp32(RSTCON, 0x0);
    delayLoop(10);
}

//#pragma optimize ("",on)


//////////
// Function Name : OTGDEV_SoftResetCore
// Function Desctiption : This function soft-resets OTG Core and then unresets again.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_SoftResetCore(void)
{
    volatile UINT32 uTemp;

    Outp32(GRSTCTL, CORE_SOFT_RESET);

    do
    {
        Inp32(GRSTCTL, uTemp);
    }while(!(uTemp & AHB_MASTER_IDLE));
    
}

//////////
// Function Name : OTGDEV_InitCore
// Function Desctiption : This function initializes OTG Link Core.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_InitCore(void)
{    
    Outp32(GAHBCFG, PTXFE_HALF|NPTXFE_HALF|MODE_SLAVE|BURST_SINGLE|GBL_INT_UNMASK);
    
    Outp32(GUSBCFG, 0<<15            // PHY Low Power Clock sel
                    |1<<14            // Non-Periodic TxFIFO Rewind Enable
                    |0x5<<10        // Turnaround time
                    |0<<9|0<<8        // [0:HNP disable, 1:HNP enable][ 0:SRP disable, 1:SRP enable] H1= 1,1                            
                    |0<<7            // Ulpi DDR sel
                    |0<<6            // 0: high speed utmi+, 1: full speed serial
                    |0<<4            // 0: utmi+, 1:ulpi
                    |1<<3            // phy i/f  0:8bit, 1:16bit
                    |0x7<<0            // HS/FS Timeout*
                    );
}

//////////
// Function Name : OTGDEV_CheckCurrentMode
// Function Desctiption : This function checks the current mode.
// Input : pucMode, current mode(device or host)
// Output : NONE
// Version :
void OTGDEV_CheckCurrentMode(UINT8 *pucMode)
{
    volatile UINT32 uTemp;

    Inp32(GINTSTS, uTemp);
    *pucMode = uTemp & 0x1;
}

//////////
// Function Name : OTGDEV_SetSoftDisconnect
// Function Desctiption : This function puts the OTG device core in the disconnected state.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_SetSoftDisconnect(void)
{
    volatile UINT32 uTemp;

    Inp32(DCTL, uTemp);
    uTemp |= SOFT_DISCONNECT;
    Outp32(DCTL, uTemp);
}

//////////
// Function Name : OTGDEV_ClearSoftDisconnect
// Function Desctiption : This function makes the OTG device core to exit from the disconnected state.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_ClearSoftDisconnect(void)
{
    volatile UINT32 uTemp;

    Inp32(DCTL, uTemp);
    uTemp = uTemp & ~SOFT_DISCONNECT;
    Outp32(DCTL, uTemp);
}

//////////
// Function Name : OTGDEV_InitDevice
// Function Desctiption : This function configures OTG Core to initial settings of device mode.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_InitDevice(void)
{
    Outp32(DCFG, 1<<18|oOtgDev.m_eSpeed<<0);                // [][1: full speed(30Mhz) 0:high speed]

    Outp32(GINTMSK, INT_RESUME|INT_OUT_EP|INT_IN_EP|INT_ENUMDONE|INT_RESET
                    |INT_SUSPEND|INT_RX_FIFO_NOT_EMPTY);    //gint unmask    
}



//////////
// Function Name : OTGDEV_SetAllOutEpNak
// Function Desctiption : This function sets NAK bit of all EPs.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_SetAllOutEpNak(void)
{
    UINT8 i;
    volatile UINT32 uTemp;
    
    for(i=0;i<16;i++)
    {
        Inp32(DOEPCTL0+0x20*i, uTemp);
        uTemp |= DEPCTL_SNAK;
        Outp32(DOEPCTL0+0x20*i, uTemp);
    }
}

//////////
// Function Name : OTGDEV_ClearAllOutEpNak
// Function Desctiption : This function clears NAK bit of all EPs.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_ClearAllOutEpNak(void)
{
    UINT8 i;
    volatile UINT32 uTemp;
    
    for(i=0;i<16;i++)
    {
        //uTemp = Inp32(DOEPCTL0+0x20*i);
        Inp32(DOEPCTL0+0x20*i, uTemp);
        uTemp |= DEPCTL_CNAK;
        Outp32(DOEPCTL0+0x20*i, uTemp);
    }
}

//////////
// Function Name : OTGDEV_SetMaxPktSizes
// Function Desctiption : This function sets the max packet sizes of USB transfer types according to the speed.
// Input : eSpeed, usb speed(high or full)
// Output : NONE
// Version :
void OTGDEV_SetMaxPktSizes(USB_SPEED eSpeed)
{
    if (eSpeed == USB_HIGH)
    {
        oOtgDev.m_eSpeed = USB_HIGH;
        oOtgDev.m_uControlEPMaxPktSize = HIGH_SPEED_CONTROL_PKT_SIZE;
        oOtgDev.m_uBulkInEPMaxPktSize = HIGH_SPEED_BULK_PKT_SIZE;
        oOtgDev.m_uBulkOutEPMaxPktSize = HIGH_SPEED_BULK_PKT_SIZE;
    }
    else
    {
        oOtgDev.m_eSpeed = USB_FULL;
        oOtgDev.m_uControlEPMaxPktSize = FULL_SPEED_CONTROL_PKT_SIZE;
        oOtgDev.m_uBulkInEPMaxPktSize = FULL_SPEED_BULK_PKT_SIZE;
        oOtgDev.m_uBulkOutEPMaxPktSize = FULL_SPEED_BULK_PKT_SIZE;
    }
}

//////////
// Function Name : OTGDEV_SetEndpoint
// Function Desctiption : This function sets the endpoint-specific CSRs.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_SetEndpoint(void)
{
    // Unmask DAINT source
    Outp32(DIEPINT0, 0xff);
    Outp32(DOEPINT0, 0xff);    
    Outp32(bulkIn_DIEPINT, 0xff);
    Outp32(bulkOut_DOEPINT, 0xff);
    
    // Init For Ep0
    if(oOtgDev.m_eSpeed == USB_HIGH)
    {
        Outp32(DIEPCTL0, (1u<<31)|((1<<26)|(BULK_IN_EP<<11)|(0<<0)));    //MPS:64bytes
    }
    else
    {
        Outp32(DIEPCTL0, (1u<<31)|((1<<26)|(BULK_IN_EP<<11)|(3<<0)));    //MPS:8bytes    
    }
    
    OTGDEV_SetInEpXferSize(EP_TYPE_CONTROL, 1, oOtgDev.m_uControlEPMaxPktSize);
    OTGDEV_SetOutEpXferSize(EP_TYPE_CONTROL, 1, oOtgDev.m_uControlEPMaxPktSize);
    Outp32(DOEPCTL0, (0u<<31)|(1<<26));        //ep0 enable, clear nak
}


//////////
// Function Name : OTGDEV_SetDescriptorTable
// Function Desctiption : This function sets the standard descriptors.
// Input : NONE
// Output : NONE
// Version :
void OTGDEV_SetDescriptorTable(void)
{
    // Standard device descriptor
    oOtgDev.m_oDesc.oDescDevice.bLength=DEVICE_DESC_SIZE;    //0x12 
    oOtgDev.m_oDesc.oDescDevice.bDescriptorType=DEVICE_DESCRIPTOR;
    oOtgDev.m_oDesc.oDescDevice.bDeviceClass=0xFF; // 0x0
    oOtgDev.m_oDesc.oDescDevice.bDeviceSubClass=0xFF;
    oOtgDev.m_oDesc.oDescDevice.bDeviceProtocol=0xFF;
    oOtgDev.m_oDesc.oDescDevice.bMaxPacketSize0=oOtgDev.m_uControlEPMaxPktSize;
    oOtgDev.m_oDesc.oDescDevice.idVendorL=0x5E;    //0x45;
    oOtgDev.m_oDesc.oDescDevice.idVendorH=0x04;    //0x53;
    oOtgDev.m_oDesc.oDescDevice.idProductL=0xCE;    //0x34;
    oOtgDev.m_oDesc.oDescDevice.idProductH=0x00;    //0x12;
    oOtgDev.m_oDesc.oDescDevice.bcdDeviceL=0x00;
    oOtgDev.m_oDesc.oDescDevice.bcdDeviceH=0x00;
    oOtgDev.m_oDesc.oDescDevice.iManufacturer=0x0; // index of string descriptor
    oOtgDev.m_oDesc.oDescDevice.iProduct=0x0;    // index of string descriptor
    oOtgDev.m_oDesc.oDescDevice.iSerialNumber=0x0;
    oOtgDev.m_oDesc.oDescDevice.bNumConfigurations=0x1;
    if (oOtgDev.m_eSpeed == USB_FULL) {
        oOtgDev.m_oDesc.oDescDevice.bcdUSBL=0x10;
        oOtgDev.m_oDesc.oDescDevice.bcdUSBH=0x01;     // Ver 1.10
    }
    else {
        oOtgDev.m_oDesc.oDescDevice.bcdUSBL=0x00;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人h精品动漫一区二区三区| 亚洲精选免费视频| 色成人在线视频| 成人黄色网址在线观看| 高清在线观看日韩| 高清国产一区二区| 成人午夜视频网站| 一本一道综合狠狠老| 91电影在线观看| 欧美日韩午夜在线视频| 欧美一区二区三区四区五区| 日韩亚洲欧美中文三级| 精品国产一区久久| 国产精品嫩草影院com| 最近日韩中文字幕| 香蕉久久夜色精品国产使用方法 | 国产精品88av| 成人中文字幕合集| 欧美曰成人黄网| 日韩午夜小视频| 国产视频一区二区三区在线观看| 国产精品第四页| 亚洲亚洲人成综合网络| 麻豆国产精品官网| 99久久久免费精品国产一区二区| 91福利小视频| 精品国免费一区二区三区| 欧美国产综合色视频| 一区二区三区在线观看动漫| 天天色图综合网| 国产1区2区3区精品美女| 色婷婷一区二区| 精品成人一区二区| 亚洲欧美偷拍卡通变态| 男人操女人的视频在线观看欧美| 成人一区在线观看| 欧美人伦禁忌dvd放荡欲情| 久久综合久色欧美综合狠狠| 亚洲伦理在线免费看| 久久99精品一区二区三区| thepron国产精品| 欧美变态凌虐bdsm| 亚洲香肠在线观看| 成人性生交大片免费看中文网站| 色av成人天堂桃色av| 久久久av毛片精品| 日韩精品视频网站| 91丨九色porny丨蝌蚪| 精品国产凹凸成av人导航| 夜夜夜精品看看| kk眼镜猥琐国模调教系列一区二区 | 日韩在线卡一卡二| 91在线视频18| 国产拍欧美日韩视频二区| 日韩精品色哟哟| 91国产视频在线观看| 国产欧美日韩综合精品一区二区| 日韩国产精品91| 在线日韩av片| 亚洲色图.com| av成人免费在线观看| 国产亚洲美州欧州综合国| 久久99国产精品免费网站| 欧美电影影音先锋| 天堂一区二区在线免费观看| 99精品欧美一区二区三区综合在线| 久久综合九色综合97婷婷女人| 亚洲成年人影院| 欧美日韩成人综合天天影院| 亚洲猫色日本管| 91丨九色porny丨蝌蚪| 亚洲私人影院在线观看| 99re热视频精品| 国产精品女同互慰在线看| 国产成人精品免费| 国产精品乱人伦| 成人免费看视频| 国产精品另类一区| 91网址在线看| 亚洲一区二区三区四区五区黄| 色呦呦国产精品| 亚洲v中文字幕| 日韩一级二级三级精品视频| 免费在线观看不卡| 久久婷婷综合激情| 成人激情小说乱人伦| 亚洲欧美日韩一区二区 | 美女诱惑一区二区| 欧美成人艳星乳罩| 国产成人夜色高潮福利影视| 亚洲国产精品黑人久久久| 99久久国产综合精品色伊| 夜夜精品浪潮av一区二区三区| 91国偷自产一区二区三区观看 | 久久99国产精品久久99果冻传媒| 欧美变态tickle挠乳网站| 国产精品一区三区| 国产精品久久久久久妇女6080| 色综合视频一区二区三区高清| 一区二区三国产精华液| 日韩写真欧美这视频| 国产高清久久久久| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩在线播放| 韩国在线一区二区| 亚洲精品第一国产综合野| 日韩三级电影网址| 成人激情小说网站| 日韩福利视频导航| 国产精品热久久久久夜色精品三区| 在线视频综合导航| 国产在线播放一区三区四| 亚洲女厕所小便bbb| 精品久久久久久久久久久久久久久 | 久久97超碰国产精品超碰| 中文字幕视频一区| 日韩三级伦理片妻子的秘密按摩| 成人午夜又粗又硬又大| 无码av免费一区二区三区试看| 久久久精品综合| 在线电影院国产精品| 国产成人精品亚洲777人妖| 性欧美疯狂xxxxbbbb| 国产精品日韩精品欧美在线| 日韩一级黄色大片| 欧美日韩中文一区| 91视频.com| 一本大道久久a久久精二百| 久久精品国产免费| 亚洲品质自拍视频| 日本一区二区三区国色天香| 欧美福利视频一区| 色就色 综合激情| 成人av在线一区二区三区| 国产真实乱子伦精品视频| 婷婷久久综合九色综合绿巨人| 玉足女爽爽91| 最新不卡av在线| 国产亚洲欧美在线| 久久综合国产精品| 日韩美女视频在线| 欧美一区二区三区啪啪| 欧美日韩黄色一区二区| 色欧美乱欧美15图片| 波波电影院一区二区三区| 国产伦精品一区二区三区在线观看| 日韩精品免费视频人成| 五月天精品一区二区三区| 亚洲成av人片在线观看| 一区二区三区日韩欧美精品| **欧美大码日韩| 最新国产精品久久精品| 国产精品丝袜在线| 国产精品成人免费在线| 国产精品乱码人人做人人爱| 国产精品成人一区二区三区夜夜夜 | 制服丝袜国产精品| 欧美一区二区三区播放老司机| 欧美色图片你懂的| 欧美日韩久久久| 制服视频三区第一页精品| 欧美日韩国产在线播放网站| 在线综合+亚洲+欧美中文字幕| 欧美日本一道本| 日韩一级完整毛片| 久久久久久久综合日本| 国产精品麻豆视频| 一区二区三区小说| 五月天丁香久久| 国产一区二区免费视频| 不卡视频一二三四| 欧美性xxxxx极品少妇| 日韩欧美一二区| 久久久精品国产免大香伊| 中文字幕亚洲不卡| 偷拍亚洲欧洲综合| 国产精品99久| 在线视频欧美区| 精品国产亚洲一区二区三区在线观看| 精品国产伦一区二区三区观看方式| 国产亚洲精品久| 亚洲综合一区二区三区| 另类调教123区| www.久久久久久久久| 91精品国产欧美一区二区 | 成人av网址在线观看| 欧美丝袜自拍制服另类| 精品国产一区二区亚洲人成毛片 | 日韩欧美一二三区| 国产精品美日韩| 日韩在线a电影| 99久久99久久久精品齐齐| 91精品福利在线一区二区三区| 欧美国产激情一区二区三区蜜月| 亚洲伊人色欲综合网| 国产精品18久久久久久vr| 欧美性极品少妇| 国产精品人妖ts系列视频| 日本不卡1234视频| 色中色一区二区|