USB Type-C Windows システムにおけるファンクション コントローラーの起動

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

重要な API

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

このトピックでは、ファンクション コントローラーが常に 1 つのコネクタ (UFP) を管理していることを前提としています。

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

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

usb function controller driver.

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

    ...