在 USB 类型 C Windows 系统上启动功能控制器
本文介绍具有 USB 类型 C 连接器的功能控制器的 OEM 启动任务
重要的 API
功能控制器的驱动程序通知操作系统其 USB Type-C 连接器支持的充电级别,并通知电池子系统何时可以开始充电,以及设备可以消耗的最大电流量。
本主题假定函数控制器在任何给定时间管理单个连接器 (UFP) 。
1. 加载 USB 设备端驱动程序
有两个驱动程序用于管理函数控制器的操作。 该对是 Microsoft 提供的 USB 函数类扩展及其客户端驱动程序。 类扩展将客户端驱动程序发送到操作系统的信息报告。 客户端驱动程序使用硬件接口与硬件通信。 请参阅 Windows 中的 USB 设备端驱动程序。
如果系统使用 ChipIdea 和 Synopsys 控制器。
- 为 ChipIdea 和 Synopsys 控制器加载 Microsoft 提供的内置客户端驱动程序。
- 编写一个较低的筛选器驱动程序,该驱动程序在连接充电器时获取附加/分离事件。 驱动程序确定充电器的类型和配置属性。 它还可以检测 BC1.2 规范定义的 USB 充电端口。 充电信息将传递给类扩展,以便它可以将其报告给) 的仲裁驱动程序 (CAD.sys。 有关详细信息,请参阅 用于支持专有充电器的 USB 筛选器驱动程序。
如果系统使用自定义控制器,请编写客户端驱动程序。 BC1.2 检测逻辑在客户端驱动程序中实现。 有关详细信息,请参阅:
2.修改系统 ACPI,以向功能控制器驱动程序指示连接器是 USB 类型 C 连接器
这是通过 ACPI 6.0 规范中定义的 ACPI 方法完成的
_UPC (USB Port Capabilities)
使用 ACPI 6.0 中定义的新值来指示正确类型的 USB Type-C 连接器,例如“Type-C USB2”和“Type-C USB2 and SS with switch”。 函数驱动程序将此信息传达给 CAD.sys,以便它使用特定于 USB 类型 C 的仲裁逻辑来确定适当的充电源。
Device (UFN0)
{
...
Name (_UPC, Package()
{
0x1, // Connectable
0x9, // Type-C USB2 and Type-C USB2 and SS with switch
0x0, // Reserved
0x0 // Reserved
})
Name (_CRS, ResourceTemplate()
{
...
})
...