アーキテクチャ: Windows システム用 USB Type-C 設計

USB Type-C システムの一般的なハードウェア設計と、ハードウェア コンポーネントをサポートする Microsoft 提供のドライバーについて説明します。 この記事は、USB Type-C コネクタを備えたシステムを開発している OEM を対象としています。

  • USB Type-C を使用した USB デュアル ロール機能
  • USB Type-C の電流レベルと Power Delivery 2.0を 使用した高速充電
  • 代替モードと有線ドッキング エクスペリエンスを使用したディスプレイ出力機能。

USB Type-C コンポーネントをサポートするドライバー

Diagram of USB Type-C software components.

上の図において、

  • 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 ドライバーの開発に関する記事を参照してください。

    Note

    すべての USB デバイス クラスが Windows 10 Mobile でサポートされているわけではありません 。

  • USB ロール スイッチ ドライバー (URS)

    Windows によってデュアル ロール USB ポートをホスト モードまたはファンクション モードに構成するように、システムを設計することもできます。 これらの設計では、USB ロール スイッチ (URS) ドライバー スタックを使用する必要があります。

    URS ドライバーは、プラットフォームからのハードウェア イベントに基づいて、コネクタ、ホスト、またはファンクションの現在のロールと、適切なデバイス側またはホスト側ドライバーのロードとアンロードを管理します。 Microsoft では、Synopsys USB 3.0 および ChipIdea USB 2.0 コントローラー用のインボックス クライアント ドライバーが提供されています。 独自のロール スイッチ クライアント ドライバーは、USB デュアル ロール コントローラー ドライバー プログラミング インターフェイスを使用して作成できます。 ロール スイッチ ドライバーを有効化するには、ACPI テーブルを変更する必要があります。 詳細については、「USB デュアル ロール ドライバー スタック アーキテクチャ」を参照してください。

    USB micro-AB コネクタを備えたシステムでは、この決定はコネクタの ID ピンに基づいて行われます。 ID ピンの検出は、割り当てられた割り込みリソースを使用して、クライアント ドライバーによって実行されます。

    USB Type-C コネクタを搭載したシステムでは、CC ピンに基づいて決定が行われます。 コネクタのクライアント ドライバーは CC 検出を実行し、その情報をロール スイッチ ドライバーに転送します。

  • USB コネクタ マネージャー (UCM)

    この一連のドライバーは、USB Type-C コネクタのあらゆる側面を管理します。 システムが UCSI 準拠の埋め込みコントローラーを ACPI 経由で実装している場合は、Microsoft から提供されている UCSI ドライバーを使用します。 それ以外の場合 は、非 ACPI トランスポート用の UCSI クライアント ドライバーを作成します。

    ハードウェアが UCSI に準拠していない場合は、UCM クラス拡張のクライアントである USB Type-C コネクタ ドライバーを作成する必要があります。 これらは連携して、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 コネクタ マネージャーの拡張機能であり、PD ステート マシンを実装していないコネクタの Type-C ポート マネージャー (TCPM) として OS を動作させることができます。 UcmTcpciCx クライアント ドライバーを使用すると、ソフトウェア TCPM はハードウェアを制御し、そのハードウェアの状態をリアルタイムで取得できます。

    クライアント ドライバーの作成の詳細については、「USB Type-C ポート コントローラー ドライバーを作成する」を参照してください。

  • 充電調整ドライバー

    このドライバーは、Microsoft for Windows 10 Mobile で提供されています。 このドライバーは、複数の充電ソースの調整役として機能します。 USB コネクタ マネージャーは、USB Type-C および PD 充電ソース情報を CAD に報告します。CAD はその情報と、USB デバイス側ドライバー (該当する場合) によって実行される BC1.2 充電器検出の情報から選択します。 その後で CAD は、使用すべき最も適切な充電源をバッテリー サブシステムに報告します。

  • バッテリー ドライバー

    クラス ドライバーはシステム内のバッテリの全体的な機能を定義し、電源マネージャーとやり取りします。 ミニクラス ドライバーは、バッテリーの追加と削除、容量と充電の追跡など、デバイス固有の機能を処理します。 ミニクラス ドライバーは、クラス ドライバーが制御するデバイスに関する情報を取得するために呼び出すルーチンをエクスポートします。