次の方法で共有


カメラ ハードウェア

トポロジの概要

Windows ドライバーのサポートに関しては、カメラ サブシステムには、カメラ センサー、オプションの自動フォーカス ユニット、フラッシュなどのオフシステム オン チップ (SoC) コンポーネントと、場合によっては他の関連ハードウェアが含まれます。 カメラ ハードウェアには、SoC 上の画像処理ユニットも含まれています。

SoC 上の画像処理ハードウェアは、SoC ベンダーから提供される電源エンジン プラグイン (PEP) によって電源管理されている必要があります。 画像処理ハードウェアは、ACPI で 1 つのデバイスとして列挙され、Windows Driver Framework (WDF) ドライバーによって管理される必要があります。 PEP が SoC に固有のクロックおよびパワー レール共有トポロジを制御できるように、画像処理デバイスのアイドル タイムアウトのシステム管理を有効にします。 SoC 上の画像処理ハードウェアは、カメラ デバイスの電源がオフになっているときは常に電源をオフにする必要があります。

一部の SoC デザインには、カメラ キャプチャと他の画像およびグラフィックス処理の両方を行う共有関数ブロックがあります。 このような SoC を使用するプラットフォームでは、SoC ベンダーによって提供される PEP は、この共有ブロックの使用を参照カウントし、すべてのクライアントがアイドル状態のときに電源をオフにする必要があります。

一部のプラットフォームでは、SoC 上の画像処理ハードウェアが 2 つ以上のカメラ デバイス間で共有される場合があります。 この場合、画像処理ハードウェアはカメラ装置間で多重化される。 各カメラ デバイスのコンポーネントは、ACPI 名前空間で個別に記述する必要があり、Windows プラグ アンド プレイ マネージャーに個別のデバイス オブジェクトとして列挙する必要があります。

2 つ (またはそれ以上) の埋め込みカメラを備えたプラットフォームでは、個々のカメラでサポートされているモードと解像度の任意の組み合わせで、両方 (またはすべての) カメラを同時に使用 (つまり、コンテンツをストリーム配信) できる必要があります。 この要件を満たすことができない SoC ベンダーは、ドライバーとシステム ファームウェアの実装に関するガイダンスのために Microsoft と直接連携する必要があります。

サポートされている電源構成

Windows では、最新のスタンバイ プラットフォームでのカメラ デバイスの単一のハードウェア電源管理構成がサポートされています。 要するに、各カメラ センサーは、MIPI-CSI リンクを介してチップ上のシステム (SoC) に接続する必要があり、必要に応じて I2C バスと 1 つ以上の GPIO ピンに接続できます。 カメラ センサー デバイス、オプションのフラッシュ、およびその他のオフ SoC カメラ コンポーネントは、ACPI ファームウェアでオンとオフを切り替えることができる電源レールに配置する必要があります。

MIPI-CSI リンクに加えて、カメラ デバイスにカメラ センサーまたはフラッシュ デバイスを制御するための I2C または GPIO ピンがある場合は、これらのピンを SoC 上の I2C コントローラーまたは GPIO コントローラーの対応するピンにルーティングする必要があります。 システム インテグレーターは、ACPI 名前空間のカメラ デバイスの下にある_CRS オブジェクト内のカメラ センサーとフラッシュ デバイスの両方の I2C および GPIO リソースを列挙する必要があります。

注記 システムインテグレーターは、カメラサブシステムのドライバ開発者と協力して、カメラドライバがGPIOとI2Cリソースの順序をどのように期待しているかを確認する必要があります。 たとえば、2 つの I2C リソースを受け取るドライバーは、リソース一覧に表示される順序に基づいてそれらを区別します。 同様に、3 つの GPIO リソースを受け取るドライバーでは、これらのリソースが特定の順序で一覧表示されることを想定しています。 システム インテグレーターは、_CRS オブジェクト内の同じ順序で I2C および GPIO リソースを列挙する必要があります。

カメラ センサーとフラッシュ デバイスは、ACPI 制御方法でオンとオフを切り替えることができる電源レールに配置する必要があります。 SoC の GPIO ピンを使用して、電源スイッチ ハードウェアを制御することをお勧めします。 GPIO は、ACPI 制御メソッドで状態を変更できるように、GPIO 操作領域で列挙する必要があります。 システム インテグレーターは、ACPI 名前空間内のカメラ デバイス (センサー、フラッシュ、またはその他のカメラ コンポーネント) の電源リソースを記述する必要があります。 このリソースには、電源スイッチ ハードウェアにルーティングされる GPIO 信号の状態を変更するために、_ON メソッドと_OFF メソッドを含める必要があります。 ACPI 名前空間のカメラ デバイスの下で、システム インテグレーターは、電源リソースを参照する_PR0 オブジェクトと_PR3 オブジェクトを提供する必要があります。

カメラ コントローラー ドライバーは、すべてのストリーミング ピンがKSSTATE_STOP状態に入っていることを検出すると、プライベート インターフェイスを使用して、キャプチャするオフ SoC カメラ コンポーネントを制御するドライバーに対して不要であることを通知します。 次に、これらのドライバーは IWDFDevice2::ResumeIdle メソッドを呼び出して、ハードウェアがアイドル状態であることをドライバー フレームワークに通知します。 これに対して、ドライバー フレームワークは D3 への移行を開始します。これにより、D3 IRP がカメラ デバイス ドライバー スタックを通過します。 (D3 IRP は、PowerDeviceD3 のDEVICE_POWER_STATE列挙値を指定するIRP_MJ_POWER IRP です)。Windows ACPI ドライバー Acpi.sys、D3 IRP を観察し、ACPI 名前空間のカメラ デバイスの下の_PR3 オブジェクトによって識別される電源リソースの_OFFメソッドを実行します。

前の段落の最後の文は、電源リソースが 1 台のカメラ デバイス以外のデバイスに電力を供給しないことを前提としています。 他のデバイスがこの電源リソースを参照している場合、Acpi.sys は、電源リソースを参照する他のすべてのデバイスが D3 に移行した後にのみ、_OFF メソッドを実行します。 詳細については、「D3cold への切り替えを有効にする」を参照してください。

カメラ ハードウェアをアクティブな電源状態に戻すのも同様のプロセスです。 カメラ コントローラー ドライバーが最初のストリーム キャプチャ ピンを検出してKSSTATE_ACQUIRE状態になると、カメラ コントローラー ドライバーは、カメラ サブシステムを構成する他の On-SoC および off-SoC コンポーネントのドライバーと通信します。 これに対して、SoC 上の画像処理ユニットを制御するドライバーは、IWDFDevice2::StopIdle メソッドを呼び出します。このメソッドは、イメージ処理装置のハードウェアの電源をオンにする必要があることを PEP に通知します。 カメラ コントローラー ドライバーは、オフ SoC カメラ コンポーネントを制御するドライバーに、アクティブな状態に戻るように指示します。 次に、これらのドライバーは StopIdle を呼び出して、ハードウェアがアイドル状態ではなくなったことをドライバー フレームワークに通知します。これにより、D0 IRP がカメラ デバイス ドライバー スタックを通過します。 (D0 IRP は、PowerDeviceD0 のDEVICE_POWER_STATE列挙値を指定するIRP_MJ_POWER IRP です)。Acpi.sys は、ACPI 名前空間のカメラ デバイスの下にある_PR0 オブジェクトによって識別される電源リソースの_ONメソッドを実行することによって、D0 IRP に応答します。

プラットフォームに複数のカメラ デバイスがある場合、各カメラ デバイスには、ACPI 名前空間で説明されている独自の切り替え可能な電源レールと電源リソースが必要です。 ACPI 名前空間内の各カメラ デバイスについて、システム インテグレーターは、カメラ デバイスがコンピューターの前面と背面のどちらにあるかを示す_PLD オブジェクトを提供する必要があります。 カメラ デバイスがクラムシェル フォーム ファクター コンピューターの蓋に組み込まれており、蓋が開いているときにユーザーに向いている場合、このデバイスの_PLD オブジェクトは、カメラがプラットフォームの前面にあることを示す必要があります。 カメラ デバイスがクラムシェル フォーム ファクター コンピューターの蓋に組み込まれており、蓋が開いているときにユーザーから離れた場所に向いている場合、このデバイスの_PLD オブジェクトは、カメラがシステムの背面にあることを示す必要があります。

ウェイクの懸念事項

カメラ デバイス ハードウェアは、ウェイクをサポートしてはなりません。 Windows では、最新のスタンバイ中に、カメラ デバイスが SoC を最も低い電源状態から復帰できるとは想定していません。 多くの携帯電話では、ユーザーがカメラ ボタンを押したときに SoC がスリープ状態から復帰できます。 カメラ ボタンは、Windows によってユーザー入力デバイスとして扱われます。このデバイスの操作は、カメラ デバイス、センサー、およびオプションのフラッシュのシステム統合または電源管理とは別であり、独立しています。