USB Type-C Windows システムにおけるファンクション コントローラーの起動
この記事では、USB Type-C コネクタを備えたファンクション コントローラーの OEM 起動タスクについて説明します
重要な API
ファンクション コントローラーのドライバーは、USB Type-C コネクタがサポートする充電レベルをオペレーティング システムに通知し、充電を開始できるタイミングとデバイスに給電できる最大電流量をバッテリー サブシステムに通知します。
このトピックでは、ファンクション コントローラーが常に 1 つのコネクタ (UFP) を管理していることを前提としています。
1. USB デバイス側ドライバーを読み込む
ファンクション コントローラーの操作を管理するドライバーは 2 つあります。 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 で定義されている新しい値を使用して、"Type-C USB2" や "Type-C USB2 and SS with switch" など、正しい種類の 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()
{
...
})
...