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

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

?? usb-ohci.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* * QEMU USB OHCI Emulation * Copyright (c) 2004 Gianni Tedesco * Copyright (c) 2006 CodeSourcery * Copyright (c) 2006 Openedhand Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * TODO: *  o Isochronous transfers *  o Allocate bandwidth in frames properly *  o Disable timers when nothing needs to be done, or remove timer usage *    all together. *  o Handle unrecoverable errors properly *  o BIOS work to boot from USB storage*/#include "hw.h"#include "qemu-timer.h"#include "usb.h"#include "pci.h"#include "pxa.h"//#define DEBUG_OHCI/* Dump packet contents.  *///#define DEBUG_PACKET//#define DEBUG_ISOCH/* This causes frames to occur 1000x slower *///#define OHCI_TIME_WARP 1#ifdef DEBUG_OHCI#define dprintf printf#else#define dprintf(...)#endif/* Number of Downstream Ports on the root hub.  */#define OHCI_MAX_PORTS 15static int64_t usb_frame_time;static int64_t usb_bit_time;typedef struct OHCIPort {    USBPort port;    uint32_t ctrl;} OHCIPort;enum ohci_type {    OHCI_TYPE_PCI,    OHCI_TYPE_PXA};typedef struct {    qemu_irq irq;    enum ohci_type type;    target_phys_addr_t mem_base;    int mem;    int num_ports;    const char *name;    QEMUTimer *eof_timer;    int64_t sof_time;    /* OHCI state */    /* Control partition */    uint32_t ctl, status;    uint32_t intr_status;    uint32_t intr;    /* memory pointer partition */    uint32_t hcca;    uint32_t ctrl_head, ctrl_cur;    uint32_t bulk_head, bulk_cur;    uint32_t per_cur;    uint32_t done;    int done_count;    /* Frame counter partition */    uint32_t fsmps:15;    uint32_t fit:1;    uint32_t fi:14;    uint32_t frt:1;    uint16_t frame_number;    uint16_t padding;    uint32_t pstart;    uint32_t lst;    /* Root Hub partition */    uint32_t rhdesc_a, rhdesc_b;    uint32_t rhstatus;    OHCIPort rhport[OHCI_MAX_PORTS];    /* PXA27x Non-OHCI events */    uint32_t hstatus;    uint32_t hmask;    uint32_t hreset;    uint32_t htest;    /* Active packets.  */    uint32_t old_ctl;    USBPacket usb_packet;    uint8_t usb_buf[8192];    uint32_t async_td;    int async_complete;} OHCIState;/* Host Controller Communications Area */struct ohci_hcca {    uint32_t intr[32];    uint16_t frame, pad;    uint32_t done;};static void ohci_bus_stop(OHCIState *ohci);/* Bitfields for the first word of an Endpoint Desciptor.  */#define OHCI_ED_FA_SHIFT  0#define OHCI_ED_FA_MASK   (0x7f<<OHCI_ED_FA_SHIFT)#define OHCI_ED_EN_SHIFT  7#define OHCI_ED_EN_MASK   (0xf<<OHCI_ED_EN_SHIFT)#define OHCI_ED_D_SHIFT   11#define OHCI_ED_D_MASK    (3<<OHCI_ED_D_SHIFT)#define OHCI_ED_S         (1<<13)#define OHCI_ED_K         (1<<14)#define OHCI_ED_F         (1<<15)#define OHCI_ED_MPS_SHIFT 16#define OHCI_ED_MPS_MASK  (0x7ff<<OHCI_ED_MPS_SHIFT)/* Flags in the head field of an Endpoint Desciptor.  */#define OHCI_ED_H         1#define OHCI_ED_C         2/* Bitfields for the first word of a Transfer Desciptor.  */#define OHCI_TD_R         (1<<18)#define OHCI_TD_DP_SHIFT  19#define OHCI_TD_DP_MASK   (3<<OHCI_TD_DP_SHIFT)#define OHCI_TD_DI_SHIFT  21#define OHCI_TD_DI_MASK   (7<<OHCI_TD_DI_SHIFT)#define OHCI_TD_T0        (1<<24)#define OHCI_TD_T1        (1<<24)#define OHCI_TD_EC_SHIFT  26#define OHCI_TD_EC_MASK   (3<<OHCI_TD_EC_SHIFT)#define OHCI_TD_CC_SHIFT  28#define OHCI_TD_CC_MASK   (0xf<<OHCI_TD_CC_SHIFT)/* Bitfields for the first word of an Isochronous Transfer Desciptor.  *//* CC & DI - same as in the General Transfer Desciptor */#define OHCI_TD_SF_SHIFT  0#define OHCI_TD_SF_MASK   (0xffff<<OHCI_TD_SF_SHIFT)#define OHCI_TD_FC_SHIFT  24#define OHCI_TD_FC_MASK   (7<<OHCI_TD_FC_SHIFT)/* Isochronous Transfer Desciptor - Offset / PacketStatusWord */#define OHCI_TD_PSW_CC_SHIFT 12#define OHCI_TD_PSW_CC_MASK  (0xf<<OHCI_TD_PSW_CC_SHIFT)#define OHCI_TD_PSW_SIZE_SHIFT 0#define OHCI_TD_PSW_SIZE_MASK  (0xfff<<OHCI_TD_PSW_SIZE_SHIFT)#define OHCI_PAGE_MASK    0xfffff000#define OHCI_OFFSET_MASK  0xfff#define OHCI_DPTR_MASK    0xfffffff0#define OHCI_BM(val, field) \  (((val) & OHCI_##field##_MASK) >> OHCI_##field##_SHIFT)#define OHCI_SET_BM(val, field, newval) do { \    val &= ~OHCI_##field##_MASK; \    val |= ((newval) << OHCI_##field##_SHIFT) & OHCI_##field##_MASK; \    } while(0)/* endpoint descriptor */struct ohci_ed {    uint32_t flags;    uint32_t tail;    uint32_t head;    uint32_t next;};/* General transfer descriptor */struct ohci_td {    uint32_t flags;    uint32_t cbp;    uint32_t next;    uint32_t be;};/* Isochronous transfer descriptor */struct ohci_iso_td {    uint32_t flags;    uint32_t bp;    uint32_t next;    uint32_t be;    uint16_t offset[8];};#define USB_HZ                      12000000/* OHCI Local stuff */#define OHCI_CTL_CBSR         ((1<<0)|(1<<1))#define OHCI_CTL_PLE          (1<<2)#define OHCI_CTL_IE           (1<<3)#define OHCI_CTL_CLE          (1<<4)#define OHCI_CTL_BLE          (1<<5)#define OHCI_CTL_HCFS         ((1<<6)|(1<<7))#define  OHCI_USB_RESET       0x00#define  OHCI_USB_RESUME      0x40#define  OHCI_USB_OPERATIONAL 0x80#define  OHCI_USB_SUSPEND     0xc0#define OHCI_CTL_IR           (1<<8)#define OHCI_CTL_RWC          (1<<9)#define OHCI_CTL_RWE          (1<<10)#define OHCI_STATUS_HCR       (1<<0)#define OHCI_STATUS_CLF       (1<<1)#define OHCI_STATUS_BLF       (1<<2)#define OHCI_STATUS_OCR       (1<<3)#define OHCI_STATUS_SOC       ((1<<6)|(1<<7))#define OHCI_INTR_SO          (1<<0) /* Scheduling overrun */#define OHCI_INTR_WD          (1<<1) /* HcDoneHead writeback */#define OHCI_INTR_SF          (1<<2) /* Start of frame */#define OHCI_INTR_RD          (1<<3) /* Resume detect */#define OHCI_INTR_UE          (1<<4) /* Unrecoverable error */#define OHCI_INTR_FNO         (1<<5) /* Frame number overflow */#define OHCI_INTR_RHSC        (1<<6) /* Root hub status change */#define OHCI_INTR_OC          (1<<30) /* Ownership change */#define OHCI_INTR_MIE         (1<<31) /* Master Interrupt Enable */#define OHCI_HCCA_SIZE        0x100#define OHCI_HCCA_MASK        0xffffff00#define OHCI_EDPTR_MASK       0xfffffff0#define OHCI_FMI_FI           0x00003fff#define OHCI_FMI_FSMPS        0xffff0000#define OHCI_FMI_FIT          0x80000000#define OHCI_FR_RT            (1<<31)#define OHCI_LS_THRESH        0x628#define OHCI_RHA_RW_MASK      0x00000000 /* Mask of supported features.  */#define OHCI_RHA_PSM          (1<<8)#define OHCI_RHA_NPS          (1<<9)#define OHCI_RHA_DT           (1<<10)#define OHCI_RHA_OCPM         (1<<11)#define OHCI_RHA_NOCP         (1<<12)#define OHCI_RHA_POTPGT_MASK  0xff000000#define OHCI_RHS_LPS          (1<<0)#define OHCI_RHS_OCI          (1<<1)#define OHCI_RHS_DRWE         (1<<15)#define OHCI_RHS_LPSC         (1<<16)#define OHCI_RHS_OCIC         (1<<17)#define OHCI_RHS_CRWE         (1<<31)#define OHCI_PORT_CCS         (1<<0)#define OHCI_PORT_PES         (1<<1)#define OHCI_PORT_PSS         (1<<2)#define OHCI_PORT_POCI        (1<<3)#define OHCI_PORT_PRS         (1<<4)#define OHCI_PORT_PPS         (1<<8)#define OHCI_PORT_LSDA        (1<<9)#define OHCI_PORT_CSC         (1<<16)#define OHCI_PORT_PESC        (1<<17)#define OHCI_PORT_PSSC        (1<<18)#define OHCI_PORT_OCIC        (1<<19)#define OHCI_PORT_PRSC        (1<<20)#define OHCI_PORT_WTC         (OHCI_PORT_CSC|OHCI_PORT_PESC|OHCI_PORT_PSSC \                               |OHCI_PORT_OCIC|OHCI_PORT_PRSC)#define OHCI_TD_DIR_SETUP     0x0#define OHCI_TD_DIR_OUT       0x1#define OHCI_TD_DIR_IN        0x2#define OHCI_TD_DIR_RESERVED  0x3#define OHCI_CC_NOERROR             0x0#define OHCI_CC_CRC                 0x1#define OHCI_CC_BITSTUFFING         0x2#define OHCI_CC_DATATOGGLEMISMATCH  0x3#define OHCI_CC_STALL               0x4#define OHCI_CC_DEVICENOTRESPONDING 0x5#define OHCI_CC_PIDCHECKFAILURE     0x6#define OHCI_CC_UNDEXPETEDPID       0x7#define OHCI_CC_DATAOVERRUN         0x8#define OHCI_CC_DATAUNDERRUN        0x9#define OHCI_CC_BUFFEROVERRUN       0xc#define OHCI_CC_BUFFERUNDERRUN      0xd#define OHCI_HRESET_FSBIR       (1 << 0)/* Update IRQ levels */static inline void ohci_intr_update(OHCIState *ohci){    int level = 0;    if ((ohci->intr & OHCI_INTR_MIE) &&        (ohci->intr_status & ohci->intr))        level = 1;    qemu_set_irq(ohci->irq, level);}/* Set an interrupt */static inline void ohci_set_interrupt(OHCIState *ohci, uint32_t intr){    ohci->intr_status |= intr;    ohci_intr_update(ohci);}/* Attach or detach a device on a root hub port.  */static void ohci_attach(USBPort *port1, USBDevice *dev){    OHCIState *s = port1->opaque;    OHCIPort *port = &s->rhport[port1->index];    uint32_t old_state = port->ctrl;    if (dev) {        if (port->port.dev) {            usb_attach(port1, NULL);        }        /* set connect status */        port->ctrl |= OHCI_PORT_CCS | OHCI_PORT_CSC;        /* update speed */        if (dev->speed == USB_SPEED_LOW)            port->ctrl |= OHCI_PORT_LSDA;        else            port->ctrl &= ~OHCI_PORT_LSDA;        port->port.dev = dev;        /* notify of remote-wakeup */        if ((s->ctl & OHCI_CTL_HCFS) == OHCI_USB_SUSPEND)            ohci_set_interrupt(s, OHCI_INTR_RD);        /* send the attach message */        usb_send_msg(dev, USB_MSG_ATTACH);        dprintf("usb-ohci: Attached port %d\n", port1->index);    } else {        /* set connect status */        if (port->ctrl & OHCI_PORT_CCS) {            port->ctrl &= ~OHCI_PORT_CCS;            port->ctrl |= OHCI_PORT_CSC;        }        /* disable port */        if (port->ctrl & OHCI_PORT_PES) {            port->ctrl &= ~OHCI_PORT_PES;            port->ctrl |= OHCI_PORT_PESC;        }        dev = port->port.dev;        if (dev) {            /* send the detach message */            usb_send_msg(dev, USB_MSG_DETACH);        }        port->port.dev = NULL;        dprintf("usb-ohci: Detached port %d\n", port1->index);    }    if (old_state != port->ctrl)        ohci_set_interrupt(s, OHCI_INTR_RHSC);}/* Reset the controller */static void ohci_reset(void *opaque){    OHCIState *ohci = opaque;    OHCIPort *port;    int i;    ohci_bus_stop(ohci);    ohci->ctl = 0;    ohci->old_ctl = 0;    ohci->status = 0;    ohci->intr_status = 0;    ohci->intr = OHCI_INTR_MIE;    ohci->hcca = 0;    ohci->ctrl_head = ohci->ctrl_cur = 0;    ohci->bulk_head = ohci->bulk_cur = 0;    ohci->per_cur = 0;    ohci->done = 0;    ohci->done_count = 7;    /* FSMPS is marked TBD in OCHI 1.0, what gives ffs?     * I took the value linux sets ...     */    ohci->fsmps = 0x2778;    ohci->fi = 0x2edf;    ohci->fit = 0;    ohci->frt = 0;    ohci->frame_number = 0;    ohci->pstart = 0;    ohci->lst = OHCI_LS_THRESH;    ohci->rhdesc_a = OHCI_RHA_NPS | ohci->num_ports;    ohci->rhdesc_b = 0x0; /* Impl. specific */    ohci->rhstatus = 0;    for (i = 0; i < ohci->num_ports; i++)      {        port = &ohci->rhport[i];        port->ctrl = 0;        if (port->port.dev)            ohci_attach(&port->port, port->port.dev);      }    if (ohci->async_td) {        usb_cancel_packet(&ohci->usb_packet);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利小视频| 日本不卡一区二区| 伊人色综合久久天天人手人婷| 亚洲一区二区精品久久av| 日本中文字幕一区二区有限公司| 国产精品中文字幕欧美| 99久精品国产| 69久久夜色精品国产69蝌蚪网| www激情久久| 亚洲精选在线视频| 精品一区二区三区在线播放视频| 成人高清视频在线| 67194成人在线观看| 亚洲国产电影在线观看| 亚洲成av人片一区二区| 成人免费三级在线| 欧美精品一级二级三级| 国产精品人成在线观看免费| 婷婷久久综合九色综合绿巨人 | 久久久久久久久久久久久女国产乱 | 亚洲成av人片在www色猫咪| 国产一区二区三区综合| 欧美在线观看一区| 久久久久综合网| 偷拍日韩校园综合在线| 99在线精品一区二区三区| 日韩欧美在线一区二区三区| 亚洲日本乱码在线观看| 国内精品伊人久久久久av一坑| 色国产精品一区在线观看| 久久色视频免费观看| 亚洲成av人片在线| 91亚洲精华国产精华精华液| 精品盗摄一区二区三区| 亚洲午夜精品网| av中文字幕不卡| 久久网这里都是精品| 日韩中文字幕av电影| 色综合一区二区三区| 久久精品免费在线观看| 蜜臀国产一区二区三区在线播放| 色综合久久88色综合天天| 国产免费久久精品| 精品一区二区影视| 91精品国产综合久久香蕉麻豆| 亚洲人成亚洲人成在线观看图片| 国产在线不卡一卡二卡三卡四卡| 91精品一区二区三区久久久久久| 一区二区三区欧美日韩| 成人三级伦理片| 国产三级精品视频| 国产一区二区电影| 精品国产三级a在线观看| 免费观看在线综合| 777午夜精品免费视频| 亚洲国产欧美日韩另类综合| 色激情天天射综合网| √…a在线天堂一区| 成人性视频网站| 国产欧美一区二区三区沐欲| 国产麻豆成人传媒免费观看| 日韩精品中文字幕一区二区三区 | www国产亚洲精品久久麻豆| 久久精品国产精品亚洲综合| 日韩免费观看高清完整版| 蜜臀av性久久久久蜜臀av麻豆| 欧美乱妇23p| 偷拍与自拍一区| 欧美一区二区视频免费观看| 天天影视网天天综合色在线播放| 欧美日韩国产欧美日美国产精品| 亚洲成在人线在线播放| 欧美日韩国产a| 三级久久三级久久久| 欧美一区二区视频在线观看2022| 色综合天天狠狠| 欧美在线视频全部完| 国产在线精品一区二区不卡了| 日韩欧美一区中文| 久久综合久久综合久久| 欧美丝袜丝nylons| 欧美乱熟臀69xxxxxx| 日韩美女主播在线视频一区二区三区| 国产精品区一区二区三区| 久久精品一区八戒影视| 青青国产91久久久久久| 婷婷久久综合九色国产成人| 日韩国产高清在线| 亚洲欧美经典视频| 日韩一区二区免费在线观看| 国产成人综合在线观看| 国产一区 二区| 国产成人精品网址| 日本视频中文字幕一区二区三区| 欧美日本高清视频在线观看| 麻豆国产精品777777在线| 精品第一国产综合精品aⅴ| 国产·精品毛片| 亚洲欧美另类小说视频| 91精品免费在线| 国产精品系列在线观看| 亚洲嫩草精品久久| 91精品麻豆日日躁夜夜躁| 国产一区不卡精品| 最新中文字幕一区二区三区| 欧美日韩久久久久久| 韩国女主播一区二区三区| 中文字幕一区免费在线观看| 欧美日韩一级视频| 黑人巨大精品欧美一区| 最新不卡av在线| 91精品国产综合久久久久久久久久 | 亚洲线精品一区二区三区| 欧美一级片免费看| 成人手机电影网| 天天av天天翘天天综合网色鬼国产| 久久亚区不卡日本| 欧美怡红院视频| 国产成a人无v码亚洲福利| 亚洲永久精品国产| 久久久久久久久久看片| 欧美三级中文字| 高清不卡在线观看| 午夜精品国产更新| 中文字幕乱码亚洲精品一区| 欧美久久久影院| 北岛玲一区二区三区四区| 奇米777欧美一区二区| 亚洲欧美在线视频观看| 欧美电影免费观看高清完整版在 | 香蕉成人伊视频在线观看| 国产日韩精品一区| 欧美剧情电影在线观看完整版免费励志电影 | 欧美日本视频在线| www.激情成人| 麻豆精品国产91久久久久久| 亚洲美女视频一区| 久久久久国产精品厨房| 欧美美女激情18p| 粉嫩一区二区三区性色av| 日本午夜精品视频在线观看| 一区二区三区欧美久久| 国产精品午夜免费| 日韩一区二区在线看| 91久久香蕉国产日韩欧美9色| 国产精品一区二区三区网站| 日韩精品一级中文字幕精品视频免费观看| 中文一区二区在线观看| 2023国产一二三区日本精品2022| 精品视频1区2区3区| 99久久久久久| 国产成人高清在线| 麻豆精品在线视频| 五月开心婷婷久久| 洋洋成人永久网站入口| 国产精品成人免费在线| 久久久久久久久97黄色工厂| 欧美一区欧美二区| 7777精品伊人久久久大香线蕉超级流畅 | 国产午夜精品一区二区三区视频 | 从欧美一区二区三区| 美女精品一区二区| 免费在线观看不卡| 丝袜美腿一区二区三区| 亚洲线精品一区二区三区| 悠悠色在线精品| 亚洲视频电影在线| 亚洲天堂精品视频| 亚洲欧洲日韩av| 中文字幕一区二区三区在线观看| 国产婷婷一区二区| 久久久蜜桃精品| 久久老女人爱爱| 久久久亚洲综合| 2020国产精品自拍| 久久久青草青青国产亚洲免观| 精品精品欲导航| 精品欧美一区二区三区精品久久| 日韩一卡二卡三卡国产欧美| 91麻豆精品91久久久久久清纯| 欧美一区二区播放| 日韩免费一区二区| 精品av久久707| 久久品道一品道久久精品| 久久九九久久九九| 国产精品美女久久久久久久久| 欧美激情中文字幕一区二区| 中文字幕欧美日本乱码一线二线| 国产精品久久久久久久久果冻传媒 | 激情综合一区二区三区| 激情国产一区二区| 国产黄色精品视频| 成人sese在线| 色呦呦网站一区| 欧美色视频在线| 91精品国产高清一区二区三区蜜臀| 日韩一二三四区| 国产午夜精品久久久久久免费视| 中文一区二区在线观看| 一区二区三区欧美久久|