次の方法で共有


USB Type-C Windows システムで関数コントローラーを起動する

この記事では、USB Type-C コネクタを備える関数コントローラーの OEM 起動タスクについて説明します

重要な API

関数コントローラーのドライバーは、USB Type-C コネクタがサポートする充電レベルについてオペレーティング システムに通知し、充電を開始でき、デバイスが描画できる電流の最大量をバッテリ サブシステムに通知します。

このトピックでは、関数コントローラーが特定の時点で 1 つのコネクタ (UFP) を管理することを前提としています。

1. USB デバイス側ドライバーを読み込む

関数コントローラーの操作を管理するドライバーは 2 つあります。 このペアは、Microsoft が提供する USB 関数クラス拡張機能とそのクライアント ドライバーです。 クラス拡張機能は、クライアント ドライバーによってオペレーティング システムに送信された情報を報告します。 クライアント ドライバーは、ハードウェア インターフェイスを使用してハードウェアと通信します。 Windows の USB デバイス側ドライバーを参照してください。

usb 関数コントローラー ドライバー。

  • システムが ChipIdea および Synopsys コントローラーを使用している場合。

    1. ChipIdea および Synopsys コントローラー用の Microsoft 提供のインボックス クライアント ドライバーを読み込みます。
    2. 充電器が接続されているときにアタッチ/デタッチ イベントを取得する下位フィルター ドライバーを記述します。 ドライバーは、充電器の種類と構成プロパティを決定します。 BC1.2 仕様で定義されている USB 充電ポートを検出することもできます。 充電情報は、充電仲裁ドライバ(CAD.sys)にそれを報告できるように、クラス拡張機能に渡されます。 詳細については、独自の充電器をサポートするための USB フィルター ドライバーを参照してください。
  • システムでカスタム コントローラーを使用している場合は、クライアント ドライバーを記述します。 BC1.2 検出ロジックは、クライアント ドライバーに実装されています。 詳細については、以下を参照してください。

    USB 関数コントローラー クライアント ドライバーのプログラミング リファレンス

    USB 関数コントローラー用 Windows ドライバーの開発

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()
    {
        ...
    })

    ...