在 USB 类型 C Windows 系统上启动功能控制器

本文介绍具有 USB 类型 C 连接器的功能控制器的 OEM 启动任务

重要的 API

功能控制器的驱动程序通知操作系统其 USB Type-C 连接器支持的充电级别,并通知电池子系统何时可以开始充电,以及设备可以消耗的最大电流量。

本主题假定函数控制器在任何给定时间管理单个连接器 (UFP) 。

1. 加载 USB 设备端驱动程序

有两个驱动程序用于管理函数控制器的操作。 该对是 Microsoft 提供的 USB 函数类扩展及其客户端驱动程序。 类扩展将客户端驱动程序发送到操作系统的信息报告。 客户端驱动程序使用硬件接口与硬件通信。 请参阅 Windows 中的 USB 设备端驱动程序

usb 功能控制器驱动程序。

  • 如果系统使用 ChipIdea 和 Synopsys 控制器。

    1. 为 ChipIdea 和 Synopsys 控制器加载 Microsoft 提供的内置客户端驱动程序。
    2. 编写一个较低的筛选器驱动程序,该驱动程序在连接充电器时获取附加/分离事件。 驱动程序确定充电器的类型和配置属性。 它还可以检测 BC1.2 规范定义的 USB 充电端口。 充电信息将传递给类扩展,以便它可以将其报告给) 的仲裁驱动程序 (CAD.sys。 有关详细信息,请参阅 用于支持专有充电器的 USB 筛选器驱动程序
  • 如果系统使用自定义控制器,请编写客户端驱动程序。 BC1.2 检测逻辑在客户端驱动程序中实现。 有关详细信息,请参阅:

    USB 功能控制器客户端驱动程序编程参考

    开发适用于 USB 功能控制器的 Windows 驱动程序

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()
    {
        ...
    })

    ...