本文說明 OEM 針對具有 USB Type-C 連接器的函式控制器啟動工作
重要 API
函式控制器的驅動程式會通知作業系統其 USB Type-C 連接器所支援的充電階段,並且通知電池子系統何時可以開始充電,以及裝置最大可承受的電流量。
本主題假設函式控制器在任何指定時間管理單一連接器 (UFP)。
1.載入 USB 裝置端驅動程式
有兩個驅動程式可管理函式控制器的作業。 這組是 Microsoft 提供的 USB 功能類別擴充及其用戶端驅動程式。 類別延伸模組會提供用戶端驅動程式傳送到作業系統的資訊。 用戶端驅動程式會使用硬體介面與硬體通訊。 請參閱,Windows中的 USB 裝置端驅動程式。
如果您的系統使用 ChipIdea 和 Synopsys 控制器。
- 載入 Microsoft 提供的內建適用於 ChipIdea 和 Synopsys 控制器的用戶端驅動程式。
- 撰寫較低的篩選驅動程式,以在連接充電器時取得附加/中斷連結事件。 驅動程式會決定充電器的類型和組態屬性。 它也可以偵測 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 和 SuperSpeed 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()
{
...
})
...