在USB Type-C Windows 系統上啟動函式控制器
本文說明具有 USB Type-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 Type-C 連接器
這是透過 ACPI 6.0 規格中定義的 ACPI 方法來完成
_UPC (USB Port Capabilities)
使用 ACPI 6.0 中定義的新值來指出正確的 USB Type-C 連接器類型,例如 “Type-C USB2” 和 “Type-C USB2 和 SS with switch”。 函式驅動程式會將此資訊傳達給 CAD.sys,以便使用USB Type-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()
{
...
})
...