UEFI Spec 学习笔记---17 - Protocols — USB Support

17.1 USB2 Host Controller Protocol

USB2 Host Controller Protocol 主要是被 USB Bus Driver 调用抽象出 USB host controller I/O,然后 USB host controller (硬件抽象出来的)通过这个抽象 IO,可以管理在 USB (Universal Serial Bus)Bus 上的传输事务(传输事务是指内存和 USB 设备之前的数据传输)和集成在 USB host controller 上的 USB root Hub(控制挂在 USB hub 后面的 devices)。

UBS device driver 不直接使用这个 Protocol,而是访问USB host controller I/O,这个 protocol 只能被直接访问 USB bus 的 driver 调用。

17.1.1 USB Host Controller Protocol Overview

USB Host Controller Protocol 也就是代码中的EFI_USB_HC_PROTOCOL 或者 EFI_USB2_HC_PROTOCOL,EFI_USB2_HC_PROTOCOL 可以看作是更新的协议用于支持 USB1.1 和 USB 2.0.可以和 EHCI、UHCI、OHCI 标准一起配合使用,通过使用这个 protocol USB bus driver 不需要知道底层的 USB 控制器是否满足 EHCI、UHCI、OHCI 中的哪一种。平台中的每一个 USB host controller 都有自己的 EFI_USB2_HC_PROTOCOL 函数实例,且需要 USB controller 的父总线类型的 device driver 来将 protocol install 到 USB controller 的 device handle 上面。

typedef struct _EFI_USB2_HC_PROTOCOL {
    EFI_USB2_HC_PROTOCOL_GET_CAPABILITY GetCapability;
    EFI_USB2_HC_PROTOCOL_RESET Reset;
    EFI_USB2_HC_PROTOCOL_GET_STATE GetState;
    EFI_USB2_HC_PROTOCOL_SET_STATE SetState;
    EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer;
    EFI_USB2_HC_PROTOCOL_BULK_TRANSFER BulkTransfer;
    EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER
    AsyncInterruptTransfer;
    EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER
    SyncInterruptTransfer;
    EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER
    IsochronousTransfer;
    EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER
    AsyncIsochronousTransfer;
    EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS
    GetRootHubPortStatus;
    EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE
    SetRootHubPortFeature;
    EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE
    ClearRootHubPortFeature;
    UINT16 MajorRevision;
    UINT16 MinorRevision;
} EFI_USB2_HC_PROTOCOL;

函数名称

功能

GetCapability

获取 USB host controller的功能,比如最大传输速率,Port number,是否支持 64Bit 内存地址

Reset

重启 USB host controller

GetState

获取 USB host controller 的状态

SetState

设置 USB host controller 的状态

ControlTransfer

向目标设备发送控制请求

BulkTransfer

将大容量数据传输提交到USB设备的大容量端点

AsyncInter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值