USB Type-C システムと、ハードウェア コンポーネントをサポートする Microsoft が提供するドライバーの一般的なハードウェア設計について説明します。 この記事は、USB Type-C コネクタを使用してシステムを開発している OEM に適用されます。
- USB Type-C を用いたUSBデュアルロール機能
- USB Type-C 電流レベルと Power Delivery 2.0 を使用した充電の高速化
- 代替モードと有線ドッキング体験によるDisplay-Outの能力活用。
USB Type-C コンポーネントをサポートするためのドライバー
上の図では、
USB デバイス側ドライバー
USB デバイス側ドライバー 機能/デバイス/周辺機器にサービスを提供します。 USB 関数コントローラー クラス拡張機能は、MTP (メディア転送プロトコル) と BC 1.2 充電器を使用した充電をサポートしています。 Microsoft では、Synopsys USB 3.0 および ChipIdea USB 2.0 コントローラー用のインボックス クライアント ドライバーを提供しています。 の USB 関数コントローラー クライアント ドライバー プログラミング インターフェイス
使用して、関数コントローラー用のカスタム クライアント ドライバーを作成できます。 詳細については、「 USB 関数コントローラー用 Windows ドライバーの開発」参照してください。 SoC ベンダーは、従来の独自の充電器検出用の USB 関数下位フィルター ドライバーを提供する場合があります。 関数コントローラーが Synopsys USB 3.0 または ChipIdea USB 2.0 コントローラーの場合は、独自のフィルター ドライバーを実装できます
USB ホスト側ドライバー
USB ホスト側ドライバーは、EHCI または XHCI 準拠の USB ホスト コントローラーで動作するドライバーのセットです。 ロール スイッチ ドライバーがホスト ロールを列挙すると、ドライバーが読み込まれます。 ホスト コントローラーが仕様に準拠していない場合は、 USB ホスト コントローラー拡張機能 (UCX) プログラミング インターフェイスを使用してカスタム ドライバーを作成できます。 詳細については、「USB ホスト コントローラー用の Windows ドライバーの開発
」を参照してください。 注
Windows 10 Mobile では、USB デバイス クラス のすべてがサポートされているわけではありません。
USB ロール スイッチ ドライバー (URS)
デュアルロール USB ポートでホスト モードまたは関数モードに構成するために Windows が必要になるようにシステムを設計できます。 これらの設計では、USB ロール スイッチ (URS) ドライバー スタックを使用する必要があります。
URS ドライバーは、プラットフォームからのハードウェア イベントに基づいて、コネクタ、ホスト、または関数の現在の役割と、適切なデバイス側またはホスト側ドライバーの読み込みとアンロードを管理します。 Microsoft では、Synopsys USB 3.0 および ChipIdea USB 2.0 コントローラー用のインボックス クライアント ドライバーを提供しています。 USB デュアルロール コントローラー ドライバー プログラミング インターフェイスを使用して、ロール スイッチ クライアント ドライバーを作成できます。 ロール スイッチ ドライバーをアクティブにするには、ACPI テーブルを変更する必要があります。 詳細については、「 USB デュアル ロール ドライバー スタック アーキテクチャ」を参照してください。
USB マイクロ AB コネクタを使用するシステムでは、この決定はコネクタの ID ピンに基づいて行われます。 ID ピン検出は、割り当てられた割り込みリソースを使用してクライアント ドライバーによって実行されます。
USB Type-C コネクタを使用するシステムでは、CC ピンに基づいて決定されます。 コネクタのクライアント ドライバーは CC 検出を実行し、その情報をロール スイッチ ドライバーに転送します。
USB コネクタ マネージャー (UCM)
このドライバーのセットは、USB Type-C コネクタのすべての側面を管理します。 システムが ACPI 経由で UCSI 準拠の埋め込みコントローラーを実装している場合は、Microsoft が提供する UCSI ドライバーを使用します。 それ以外の場合は、非 ACPI トランスポート用の UCSI クライアント ドライバーを記述 します。
ハードウェアが UCSI に準拠していない場合は、クライアントである USB Type-C コネクタ ドライバー を UCM クラス拡張機能に書き込む必要があります。 USB Type-C コネクタとコネクタ ドライバーの予期される動作を一緒に管理します。
ドライバーを記述する場合、USB コネクタ マネージャー クラス拡張機能は、WDF クラス拡張クライアント ドライバー モデルに従います。 クライアント ドライバーは、ハードウェアとクラス拡張機能と通信して、CC 検出、PD メッセージング、多重化、VBus/VConn 制御などのタスクを処理し、電力配信と代替モードのポリシーを選択します。 クラス拡張機能は、クライアント ドライバーによって報告された情報をオペレーティング システムに伝達します。 たとえば、CC 検出の結果は、ロール スイッチ ドライバーを構成するために使用されます。USB Type-C/PD 電源情報は、システムが充電するレベルを決定するために使用されます。 クライアント ドライバーは、USB Type-C および PD ステート マシンを管理します。 クライアント ドライバーは、いくつかのタスクを他のドライバーに委任できます。たとえば、Mux は別のドライバーによって制御される場合があります。 クライアント ドライバーを記述するには、 USB Type-C コネクタ ドライバーのプログラミング インターフェイスを使用します。
USB Type-C ポート コントローラー
Type-C ポート コントローラー インターフェイス クラス拡張機能 (UcmTcpciCx.sys) は、MICROSOFT が提供する USB コネクタ マネージャーの拡張機能です。これにより、OS は PD ステート マシンを実装していないコネクタの Type-C ポート マネージャー (TCPM) として動作できます。 UcmTcpciCx クライアント ドライバーを使用すると、ソフトウェア TCPM はハードウェアを制御し、リアルタイムでその状態を取得できます。
クライアント ドライバーの記述については、「 USB Type-C ポート コントローラー ドライバーの書き込み」を参照してください。
充電判定ドライバー
このドライバーは、Microsoft for Windows 10 Mobile によって提供されます。 ドライバーは、複数の充電ソースのアービターとして機能します。 USB コネクタ マネージャーは、USB Type-C と PD 充電ソース情報を CAD に報告します。この情報から選択し、USB デバイス側ドライバーによって実行される BC1.2 充電器検出 (該当する場合) を行います。 その後、CAD は、バッテリ サブシステムに使用する最も適切な充電ソースを報告します。
バッテリードライバ
クラス ドライバーは、システム内のバッテリの全体的な機能を定義し、電源マネージャーと対話します。 ミニクラス ドライバーは、バッテリの追加や取り外し、容量と充電の追跡など、デバイス固有の機能を処理します。 ミニクラス ドライバーは、コントロールするデバイスに関する情報を取得するためにクラス ドライバーが呼び出すルーチンをエクスポートします。