この記事では、USB Type-C コネクタを備える関数コントローラーの OEM 起動タスクについて説明します
重要な API
- USB 関数コントローラー クライアント ドライバーのプログラミング リファレンス
- 独自の充電器をサポートするための USBフィルタドライバ
関数コントローラーのドライバーは、USB Type-C コネクタがサポートする充電レベルについてオペレーティング システムに通知し、充電を開始でき、デバイスが描画できる電流の最大量をバッテリ サブシステムに通知します。
このトピックでは、関数コントローラーが特定の時点で 1 つのコネクタ (UFP) を管理することを前提としています。
1. USB デバイス側ドライバーを読み込む
関数コントローラーの操作を管理するドライバーは 2 つあります。 このペアは、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 で定義されている新しい値を使用して、"Type-C USB2" や "スイッチ付き USB2 および SSType-C" など、USB Type-C コネクタの正しい種類を示します。 ファンクション ドライバーは、USB Type-C 固有の調停ロジックを使用して適切な充電ソースを決定できるように、この情報を CAD.sysに通信します。
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()
{
...
})
...