为 USB 类型 C Windows 系统启动双角色控制器

总结

  • OEM 为具有 USB Type-C 连接器的双角色控制器启动任务

适用于

  • Windows 10 移动版

重要的 API

USB 角色切换驱动程序 (URS) 是一组 WDF 类扩展及其客户端驱动程序,用于处理双角色控制器的角色切换功能。 如果系统具有双角色控制器,则可以根据连接到系统 USB Type-C 连接器的伙伴端口的设备切换系统角色。 这允许有趣的方案,如有线停靠。

系统可以设计为双角色 USB 控制器需要 Windows 才能将其配置为主机或功能模式。 这些设计使用 USB 角色交换机堆栈。 如果系统不使用 Synopsys 或 ChipIdea 双角色控制器,则需要为系统的双角色控制器编写 USB 角色切换客户端驱动程序。

注意

系统可以设计为双角色 USB 端口需要 Windows 才能将其配置为主机或函数模式。 这些设计使用 USB 角色交换机堆栈。 如果系统不使用 Synopsys 双角色控制器,则需要为系统的双角色控制器编写 USB 角色切换客户端驱动程序。

客户端驱动程序处理硬件事件并将其报告给类扩展。 如果发生角色切换硬件事件,URS 将决定该角色,从而加载该角色的驱动程序。 如果控制器处于主机角色,则加载 USB 主机端驱动程序 ;对于函数角色,将加载 设备端驱动程序

在使用 USB micro-AB 连接器的系统上,双角色控制器的客户端驱动程序使用分配给它的中断资源,根据连接器中的 ID 引脚做出决策。 在具有 USB Type-C 连接器的系统上,此决定由连接器的客户端驱动程序做出。 该驱动程序根据 CC 引脚确定角色,并将结果报告给 USB 连接器管理器 (UCM) ,后者然后将结果发送到角色切换驱动程序。

usb 角色切换驱动程序。

1. 在系统 ACPI 中启用 URS 驱动程序

若要使用 URS,必须进行 ACPI 修改。 将 USB 设备端驱动程序 加载的设备替换为 URS 必须加载的设备。 有关如何更改 ACPI 定义的详细信息,请参阅 USB 双角色驱动程序堆栈体系结构中提供的示例。 请确保删除中断资源。 USB Type-C 不需要这样做。

2. 为双角色控制器驱动程序加载 USB 角色切换驱动程序

usb 角色切换堆栈。

  • 如果系统使用 ChipIdea 和 Synopsys 控制器,请加载 Microsoft 为 ChipIdea 和 Synopsys 控制器提供的内置客户端驱动程序。

    若要加载驱动程序,必须创建驱动程序安装包。 INF 文件必须具有 Include-Needs 指令,该指令引用受支持控制器的内置 INF。 内置 INF 已包含其他控制器的硬件 ID。 如果双角色控制器的硬件 ID 不是内置 INF 中的硬件 ID 之一,则此步骤是必需的。 请与 SoC 供应商联系。

    有关详细信息,请参阅驱动程序安装包下的“URS 驱动程序包”。

  • 如果系统使用自定义控制器,请编写角色切换客户端驱动程序。 有关详细信息,请参阅:

    USB 双角色控制器驱动程序编程参考