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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? kitlusbser.c

?? 6410BSP3
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
        oOtgDev.m_oDesc.oDescDevice.bcdUSBH=0x02;     // Ver 2.0
    }

    // Standard configuration descriptor
    oOtgDev.m_oDesc.oDescConfig.bLength=CONFIG_DESC_SIZE; // 0x9 bytes
    oOtgDev.m_oDesc.oDescConfig.bDescriptorType=CONFIGURATION_DESCRIPTOR;
    oOtgDev.m_oDesc.oDescConfig.wTotalLengthL=CONFIG_DESC_TOTAL_SIZE; 
    oOtgDev.m_oDesc.oDescConfig.wTotalLengthH=0;
    oOtgDev.m_oDesc.oDescConfig.bNumInterfaces=1;
// dbg    descConf.bConfigurationValue=2; // why 2? There's no reason.
    oOtgDev.m_oDesc.oDescConfig.bConfigurationValue=1;
    oOtgDev.m_oDesc.oDescConfig.iConfiguration=0;
    oOtgDev.m_oDesc.oDescConfig.bmAttributes=CONF_ATTR_DEFAULT|CONF_ATTR_SELFPOWERED; // bus powered only.
    oOtgDev.m_oDesc.oDescConfig.maxPower=25; // draws 50mA current from the USB bus.

    // Standard interface descriptor
    oOtgDev.m_oDesc.oDescInterface.bLength=INTERFACE_DESC_SIZE; // 9
    oOtgDev.m_oDesc.oDescInterface.bDescriptorType=INTERFACE_DESCRIPTOR;
    oOtgDev.m_oDesc.oDescInterface.bInterfaceNumber=0x0;
    oOtgDev.m_oDesc.oDescInterface.bAlternateSetting=0x0; // ?
    oOtgDev.m_oDesc.oDescInterface.bNumEndpoints = 2;    // # of endpoints except EP0
    oOtgDev.m_oDesc.oDescInterface.bInterfaceClass=0xff; // 0x0 ?
    oOtgDev.m_oDesc.oDescInterface.bInterfaceSubClass=0xFF;
    oOtgDev.m_oDesc.oDescInterface.bInterfaceProtocol=0xFF;
    oOtgDev.m_oDesc.oDescInterface.iInterface=0x0;

    // Standard endpoint0 descriptor
    oOtgDev.m_oDesc.oDescEndpt1.bLength=ENDPOINT_DESC_SIZE;
    oOtgDev.m_oDesc.oDescEndpt1.bDescriptorType=ENDPOINT_DESCRIPTOR;
    oOtgDev.m_oDesc.oDescEndpt1.bEndpointAddress=BULK_IN_EP|EP_ADDR_IN; // 2400Xendpoint 1 is IN endpoint.
    oOtgDev.m_oDesc.oDescEndpt1.bmAttributes=EP_ATTR_BULK;
    oOtgDev.m_oDesc.oDescEndpt1.wMaxPacketSizeL=(UINT8)oOtgDev.m_uBulkInEPMaxPktSize; // 64
    oOtgDev.m_oDesc.oDescEndpt1.wMaxPacketSizeH=(UINT8)(oOtgDev.m_uBulkInEPMaxPktSize>>8);
    oOtgDev.m_oDesc.oDescEndpt1.bInterval=0x0; // not used

    // Standard endpoint1 descriptor
    oOtgDev.m_oDesc.oDescEndpt2.bLength=ENDPOINT_DESC_SIZE;
    oOtgDev.m_oDesc.oDescEndpt2.bDescriptorType=ENDPOINT_DESCRIPTOR;
    oOtgDev.m_oDesc.oDescEndpt2.bEndpointAddress=BULK_OUT_EP|EP_ADDR_OUT; // 2400X endpoint 3 is OUT endpoint.
    oOtgDev.m_oDesc.oDescEndpt2.bmAttributes=EP_ATTR_BULK;
    oOtgDev.m_oDesc.oDescEndpt2.wMaxPacketSizeL=(UINT8)oOtgDev.m_uBulkOutEPMaxPktSize; // 64
    oOtgDev.m_oDesc.oDescEndpt2.wMaxPacketSizeH=(UINT8)(oOtgDev.m_uBulkOutEPMaxPktSize>>8);
    oOtgDev.m_oDesc.oDescEndpt2.bInterval=0x0; // not used
}

//////////
// Function Name : OTGDEV_CheckEnumeratedSpeed
// Function Desctiption : This function checks the current usb speed.
// Input : eSpeed, usb speed(high or full)
// Output : NONE
// Version :
void OTGDEV_CheckEnumeratedSpeed(USB_SPEED *eSpeed)
{
    volatile UINT32 uDStatus;
    
    Inp32(DSTS, uDStatus); // System status read

    *eSpeed = (USB_SPEED)((uDStatus&0x6) >>1);
    /// 0 : High Speed (phy 30mhz or 60mhz
    /// 1 : Full Speed (phy 30mhz or 60mhz)
    /// 2 : low Speed (phy 6Mhz
    /// 3 : Full Speed (phy 48Mhz)
}




//////////
// Function Name : OTGDEV_SetInEpXferSize
// Function Desctiption : This function sets DIEPTSIZn CSR according to input parameters.
// Input : eType, transfer type
//            uPktCnt, packet count to transfer
//            uXferSize, transfer size
// Output : NONE
// Version :
void OTGDEV_SetInEpXferSize(EP_TYPE eType, UINT32 uPktCnt, UINT32 uXferSize)
{    
    if(eType == EP_TYPE_CONTROL)
    {
        Outp32(DIEPTSIZ0, (uPktCnt<<19)|(uXferSize<<0));
    }
    else if(eType == EP_TYPE_BULK)
    {
        Outp32(bulkIn_DIEPTSIZ, (1<<29)|(uPktCnt<<19)|(uXferSize<<0));
    }
}

//////////
// Function Name : OTGDEV_SetOutEpXferSize
// Function Desctiption : This function sets DOEPTSIZn CSR according to input parameters.
// Input : eType, transfer type
//            uPktCnt, packet count to transfer
//            uXferSize, transfer size
// Output : NONE
// Version :
void OTGDEV_SetOutEpXferSize(EP_TYPE eType, UINT32 uPktCnt, UINT32 uXferSize)
{    
    if(eType == EP_TYPE_CONTROL)
    {
        Outp32(DOEPTSIZ0, (1<<29)|(uPktCnt<<19)|(uXferSize<<0));
    }
    else if(eType == EP_TYPE_BULK)
    {
        Outp32(bulkOut_DOEPTSIZ, (uPktCnt<<19)|(uXferSize<<0));
    }
}

//////////
// Function Name : OTGDEV_WrPktEp0
// Function Desctiption : This function reads data from the buffer and writes the data on EP0 FIFO.
// Input : buf, address of the data buffer to write on Control EP FIFO
//            num, size of the data to write on Control EP FIFO(byte count)
// Output : NONE
// Version :
void OTGDEV_WrPktEp0(UINT8 *buf, int num)
{
    int i;
    volatile UINT32 Wr_Data=0;

    for(i=0;i<num;i+=4)
    {
        Wr_Data = ((*(buf+3))<<24)|((*(buf+2))<<16)|((*(buf+1))<<8)|*buf;
        Outp32(control_EP_FIFO, Wr_Data);
        buf += 4;
    }
}

//////////
// Function Name : OTGDEV_PrintEp0Pkt
// Function Desctiption : This function reads data from the buffer and displays the data.
// Input : pt, address of the data buffer to read
//            count, size of the data to read(byte count)
// Output : NONE
// Version :
void OTGDEV_PrintEp0Pkt(UINT8 *pt, UINT8 count)
{
    int i;
    EdbgOutputDebugString("[DBG:");
    for(i=0;i<count;i++)
        EdbgOutputDebugString("%x,", pt[i]);
    EdbgOutputDebugString("]\n");
}


//////////
// Function Name : OTGDEV_WrPktBulkInEp
// Function Desctiption : This function reads data from the buffer and writes the data on Bulk In EP FIFO.
// Input : buf, address of the data buffer to write on Bulk In EP FIFO
//            num, size of the data to write on Bulk In EP FIFO(byte count)
// Output : NONE
// Version :
void OTGDEV_WrPktBulkInEp(UINT8 *buf, int num)
{
    int i;
    volatile UINT32 Wr_Data=0;

    for(i=0;i<num;i+=4)
    {
        Wr_Data=((*(buf+3))<<24)|((*(buf+2))<<16)|((*(buf+1))<<8)|*buf;
        Outp32(bulkIn_EP_FIFO, Wr_Data);
        buf += 4;
    }
}

//////////
// Function Name : OTGDEV_RdPktBulkOutEp
// Function Desctiption : This function reads data from Bulk Out EP FIFO and writes the data on the buffer.
// Input : buf, address of the data buffer to write
//            num, size of the data to read from Bulk Out EP FIFO(byte count)
// Output : NONE
// Version :
void OTGDEV_RdPktBulkOutEp(UINT8 *buf, int num)
{
    int i;
    volatile UINT32 Rdata;

    for (i=0;i<num;i+=4)
    {
        //Rdata = Inp32(bulkOut_EP_FIFO);
        Inp32(bulkOut_EP_FIFO, Rdata);

        buf[i] = (UINT8)Rdata;
        buf[i+1] = (UINT8)(Rdata>>8);
        buf[i+2] = (UINT8)(Rdata>>16);
        buf[i+3] = (UINT8)(Rdata>>24);
    }

    // increase global down pointer for usb download function
    g_pDownPt += num;
}



//////////
// Function Name : OTGDEV_IsUsbOtgSetConfiguration
// Function Desctiption : This function checks if Set Configuration is received from the USB Host.
// Input : NONE
// Output : configuration result
// Version :
BOOL OTGDEV_IsUsbOtgSetConfiguration(void)
{
    if (oOtgDev.m_uIsUsbOtgSetConfiguration == 0)
        return false;
    else
        return true;
}

//////////
// Function Name : OTGDEV_SetOpMode
// Function Desctiption : This function sets CSRs related to the operation mode.
// Input : eMode, operation mode(cpu or dma)
// Output : NONE
// Version :
void OTGDEV_SetOpMode(USB_OPMODE eMode)
{
    oOtgDev.m_eOpMode = eMode;

    Outp32(GINTMSK, INT_RESUME|INT_OUT_EP|INT_IN_EP|INT_ENUMDONE|INT_RESET|INT_SUSPEND|INT_RX_FIFO_NOT_EMPTY); //gint unmask
    Outp32(GAHBCFG, MODE_SLAVE|BURST_SINGLE|GBL_INT_UNMASK);

    OTGDEV_SetOutEpXferSize(EP_TYPE_BULK, 1, oOtgDev.m_uBulkOutEPMaxPktSize);
    OTGDEV_SetInEpXferSize(EP_TYPE_BULK, 1, 0);

    Outp32(bulkOut_DOEPCTL, 1<<31|1<<26|2<<18|1<<15|oOtgDev.m_uBulkOutEPMaxPktSize<<0);        //bulk out ep enable, clear nak, bulk, usb active, next ep3, max pkt
    Outp32(bulkIn_DIEPCTL, 0<<31|1<<26|2<<18|1<<15|oOtgDev.m_uBulkInEPMaxPktSize<<0);        //bulk in ep enable, clear nak, bulk, usb active, next ep1, max pkt
}


/* S3C6410USBSER_Init
 *
 *  Called by PQOAL KITL framework to initialize the serial port
 *
 *  Return Value:
 */
BOOL S3C6410USBSER_Init (KITL_SERIAL_INFO *pSerInfo)
{
    volatile S3C6410_SYSCON_REG *g_pSysConReg;

    g_pSysConReg = (S3C6410_SYSCON_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_SYSCON, FALSE);

    // Enable Clock Source
    g_pSysConReg->HCLK_GATE |= (1<<20);        // HCLK_USB

    memset(&g_Info, 0, sizeof(g_Info));
    memset(&USBSerInfo, 0, sizeof(USBSERKITL_INFO));

    KITLOutputDebugString ("Wait for connecting\n");

    KitlIoPortBase = (DWORD)pSerInfo->pAddress; 
//    delayLoop(100);
    if (!KitlIoPortBase)
    {    
        return FALSE;
    }
    else
    {
        OTGDEV_InitOtg(USB_HIGH);        
//        OTGDEV_InitOtg(USB_FULL);
    }
    pSerInfo->bestSize = 512;
//    pSerInfo->bestSize = 64;

    return TRUE;
}

/* S3C6410USBSER_WriteData
 *
 *  Block until the byte is sent
 *
 *  Return Value: TRUE on success, FALSE otherwise
 */
 #define NPTxFEmpty (0x1<<5)
 
UINT16 S3C6410USBSER_WriteData (UINT8 *pch, UINT16 length)
{

    volatile UINT32 uGIntStatus;
    if (USBSerInfo.dwState != KITLUSBSER_STATE_CONNECTED)
    {
        return length;
    }

    while(1)
    {
        Inp32(GINTSTS, uGIntStatus); // Wait Until TX FIFO is availabled.
        if (uGIntStatus & NPTxFEmpty)
        {
            break;
        }
    }
    
    length = OTGDEV_HandleEvent_BulkIn(pch, length);
    return length;    
}


void S3C6410USBSER_SendComplete (UINT16 length)
{

    volatile UINT32 dwDiepint;
    Inp32(bulkIn_DIEPINT, dwDiepint);
    Outp32(bulkIn_DIEPINT, dwDiepint);
}



/* S3C6410USBSER_ReadData
 *
 *  Called from PQOAL KITL to read a byte from serial port
 *
 *  Return Value: TRUE on success, FALSE otherwise
 */
UINT16 S3C6410USBSER_ReadData (UINT8 *pch, UINT16 length)
{
    length = OTGDEV_HandleEvent(pch, length);
    return length;
}


/* S3C6410USBSER_EnableInt
 *
 *  Enable Recv data interrupt
 *
 *  Return Value:
 */

VOID S3C6410USBSER_EnableInt (void)
{
    volatile S3C6410_VIC_REG *g_pVIC1Reg;
    g_pVIC1Reg = (volatile S3C6410_VIC_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_VIC1, FALSE);

    if (!USBSerKitl_POLL)
    {
        g_pVIC1Reg->VICINTENABLE = (1<<(PHYIRQ_OTG-32));
    }
}

/* S3C6410USBSER_DisableInt
 *
 *  Disable Recv data interrupt
 *
 *  Return Value:
 */
VOID S3C6410USBSER_DisableInt (void)
{
    volatile S3C6410_VIC_REG *g_pVIC1Reg;
    g_pVIC1Reg = (volatile S3C6410_VIC_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_VIC1, FALSE);

    if (!USBSerKitl_POLL)
    {
        g_pVIC1Reg->VICINTENCLEAR = (1<<(PHYIRQ_OTG-32));
    }
}


VOID S3C6410USBSER_PowerOff (void)
{
    //KITLOutputDebugString ("+S3C6410USBSER_PowerOff\n");    
}

VOID S3C6410USBSER_PowerOn (void)
{
    //KITLOutputDebugString ("+S3C6410USBSER_PowerOn\n");
}

// serial driver
OAL_KITL_SERIAL_DRIVER DrvUSBSerial = {
    S3C6410USBSER_Init,
    NULL,
    S3C6410USBSER_WriteData,//TX
    S3C6410USBSER_SendComplete,//Clear EP1 Interrupt pending
    S3C6410USBSER_ReadData,//RX
    S3C6410USBSER_EnableInt,
    S3C6410USBSER_DisableInt,
    NULL,    //S3C6410USBSER_PowerOff,
    NULL,    //S3C6410USBSER_PowerOn,
    NULL, //flow control
};

const OAL_KITL_SERIAL_DRIVER *GetKitlUSBSerialDriver (void)
{
    return &DrvUSBSerial;
}

static void delayLoop(int count)
{
    volatile int j,k;
    for(j = 0; j < count; j++)
    {
        for(k=0;k<100000;k++);
    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线亚洲视频| 日韩视频免费观看高清在线视频| 国产99久久精品| 精品一区二区三区久久| 毛片一区二区三区| 久久精品国产久精国产爱| 日本特黄久久久高潮| 免费成人你懂的| 韩国av一区二区三区| 国产一区二区三区在线观看免费视频| 蜜桃精品视频在线| 国产一区二三区好的| 国产成人精品网址| 波多野结衣一区二区三区| 91社区在线播放| 欧美日韩精品福利| 日韩你懂的在线观看| 久久―日本道色综合久久| 欧美国产一区二区在线观看| 亚洲国产精品成人综合| 中文字幕一区二区三| 亚洲线精品一区二区三区| 日韩精品免费专区| 国产在线精品一区在线观看麻豆| 国产激情91久久精品导航| www.亚洲激情.com| 欧美少妇bbb| 日韩亚洲电影在线| 中文字幕av一区二区三区| 亚洲日本在线视频观看| 亚洲国产精品视频| 精品亚洲欧美一区| eeuss国产一区二区三区| 欧美日韩国产乱码电影| 精品久久久久久久久久久久包黑料 | 亚洲欧洲精品一区二区精品久久久| 中文字幕精品—区二区四季| 一区二区三区久久| 免费人成网站在线观看欧美高清| 国产精品456露脸| 欧美在线视频你懂得| 日韩美一区二区三区| 亚洲色图清纯唯美| 美女网站视频久久| 97国产一区二区| 日韩欧美另类在线| 亚洲视频一区二区免费在线观看| 午夜精品福利一区二区三区av| 国产真实乱对白精彩久久| 色综合一区二区| 日韩欧美不卡在线观看视频| 综合欧美一区二区三区| 欧美96一区二区免费视频| 波多野结衣的一区二区三区| 欧美一区二区黄色| 亚洲欧洲日本在线| 韩国视频一区二区| 欧美日韩中文字幕一区二区| 欧美激情在线一区二区三区| 香蕉av福利精品导航| 成人av动漫在线| 日韩视频在线观看一区二区| 依依成人精品视频| 国产精品18久久久久| 欧美精品粉嫩高潮一区二区| 国产精品国模大尺度视频| 六月婷婷色综合| 欧美日本一区二区| 亚洲欧美色一区| 国产成a人亚洲精品| 欧美一区二区人人喊爽| 亚洲狠狠丁香婷婷综合久久久| 激情久久五月天| 9191久久久久久久久久久| 亚洲三级视频在线观看| 国产传媒欧美日韩成人| 日韩视频一区二区在线观看| 亚洲一区电影777| av成人老司机| 国产欧美在线观看一区| 奇米综合一区二区三区精品视频| 色猫猫国产区一区二在线视频| 久久夜色精品一区| 久久精品国产网站| 91精品一区二区三区久久久久久| 亚洲人成在线播放网站岛国| 国产福利不卡视频| 欧美精品一区二区三区蜜臀| 日本欧美大码aⅴ在线播放| 欧美午夜精品一区二区三区| 亚洲视频一区在线观看| 成人黄色片在线观看| 国产三级欧美三级日产三级99 | 国内久久婷婷综合| 欧美一级夜夜爽| 日韩电影一二三区| 欧美酷刑日本凌虐凌虐| 亚洲国产日日夜夜| 欧美性色aⅴ视频一区日韩精品| 亚洲女人小视频在线观看| www.亚洲免费av| 中文字幕日韩av资源站| 99re在线精品| 亚洲另类色综合网站| 91蜜桃免费观看视频| 亚洲精品免费一二三区| 一本一本大道香蕉久在线精品 | 国产精品久久久久久久蜜臀| 国产成人精品在线看| 国产日韩欧美精品一区| 国产不卡一区视频| 中文字幕人成不卡一区| 色综合网站在线| 亚洲一区在线播放| 欧美日韩精品福利| 美女在线一区二区| 久久久久免费观看| 成人a免费在线看| 一区二区在线观看免费| 欧美色倩网站大全免费| 石原莉奈一区二区三区在线观看 | 欧美激情一区在线观看| 99综合影院在线| 亚洲综合激情网| 欧美精品视频www在线观看| 日韩av在线发布| 久久网站最新地址| 99久久精品免费看| 亚洲国产日韩在线一区模特| 7777精品久久久大香线蕉| 久久99精品久久只有精品| 国产欧美日韩一区二区三区在线观看| 成人精品免费网站| 亚洲香肠在线观看| 日韩三级在线免费观看| 国产成人免费av在线| 亚洲免费三区一区二区| 在线不卡a资源高清| 国产自产2019最新不卡| 中文字幕在线观看不卡视频| 欧美日韩日日骚| 国产一区二区不卡| 亚洲毛片av在线| 欧美岛国在线观看| av色综合久久天堂av综合| 亚洲r级在线视频| 久久久久久亚洲综合影院红桃| 99re66热这里只有精品3直播 | 日韩中文字幕1| 国产网站一区二区| 欧美日韩五月天| 国产成a人亚洲| 婷婷久久综合九色综合绿巨人| 久久婷婷久久一区二区三区| 色天使色偷偷av一区二区| 久久草av在线| 一区二区三区不卡在线观看| 久久中文字幕电影| 欧美在线观看你懂的| 国产成人欧美日韩在线电影| 亚洲线精品一区二区三区八戒| 欧美精品一区二区三区四区| 欧美专区在线观看一区| 国产成人午夜视频| 天天色综合天天| 最新热久久免费视频| 26uuu国产日韩综合| 欧美性一二三区| 成人黄色片在线观看| 伦理电影国产精品| 亚洲超碰97人人做人人爱| 久久一区二区三区四区| 在线电影一区二区三区| 色又黄又爽网站www久久| 国产精品18久久久久| 视频一区二区三区中文字幕| 亚洲女女做受ⅹxx高潮| 久久久国际精品| 日韩免费福利电影在线观看| 在线亚洲精品福利网址导航| 成人免费视频播放| 国内精品伊人久久久久av影院| 亚洲成人激情社区| 亚洲日本va午夜在线电影| 欧美激情一区二区| 2024国产精品| 日韩欧美激情四射| 69堂国产成人免费视频| 欧美色精品在线视频| 91国偷自产一区二区开放时间| 国产成人啪免费观看软件| 国模少妇一区二区三区| 日本vs亚洲vs韩国一区三区二区| 亚洲一区二区三区四区五区中文| 国产精品免费人成网站| 国产欧美日韩在线视频| 国产午夜精品福利| 欧美国产一区在线| 中文字幕乱码久久午夜不卡| 久久精品视频网|