Compartilhar via


Hardware da câmera

Visão geral de topologia

Em termos de suporte ao driver do Windows, o subsistema de câmera contém componentes off-System on a Chip (SoC), como o sensor da câmera, uma unidade de foco automático opcional e flash , e possivelmente outros hardwares associados. O hardware da câmera também inclui as unidades de processamento de imagem no SoC.

O hardware de processamento de imagem no SoC deve ser gerenciado por energia pelo PEP (plug-in do power engine) fornecido pelo fornecedor do SoC. O hardware de processamento de imagem deve ser enumerado como um único dispositivo no ACPI e gerenciado por um driver WDF (Windows Driver Framework). Habilite o gerenciamento do sistema do tempo limite ocioso do dispositivo de processamento de imagem para que o PEP possa controlar qualquer topologia de compartilhamento de relógio e power rail exclusiva para o SoC. Qualquer hardware de processamento de imagem no SoC deve ser desligado sempre que o dispositivo de câmera estiver desativado.

Alguns designs de SoC têm um bloco de funções compartilhado que faz a captura da câmera e outros processamentos de imagens e gráficos. Em uma plataforma que usa esse SoC, o PEP fornecido pelo fornecedor do SoC deve fazer referência à contagem do uso desse bloco compartilhado e desligá-lo quando todos os clientes estiverem ociosos.

Em algumas plataformas, o hardware de processamento de imagem no SoC pode ser compartilhado entre dois ou mais dispositivos de câmera. Nesse caso, o hardware de processamento de imagem é multiplexado entre os dispositivos de câmera. Os componentes de cada dispositivo de câmera devem ser descritos independentemente no namespace ACPI e devem ser enumerados como objetos de dispositivo separados para o gerenciador de Plug and Play do Windows.

As plataformas que têm duas (ou mais) câmeras inseridas são exigidas pelo Windows para poder usar (ou seja, transmitir conteúdo de) ambas (ou todas) câmeras ao mesmo tempo com qualquer combinação dos modos e resoluções compatíveis com as câmeras individuais. Os fornecedores de SoC que não podem atender a esse requisito devem trabalhar diretamente com a Microsoft para obter diretrizes sobre como implementar seus drivers e firmware do sistema.

Configuração de energia com suporte

O Windows dá suporte a uma única configuração de gerenciamento de energia de hardware para dispositivos de câmera em plataformas em espera modernas. Em suma, cada sensor de câmera deve estar conectado ao SoC (Sistema em um Chip) por meio de um link MIPI-CSI e, opcionalmente, pode ser conectado a um barramento I2C e a um ou mais pinos GPIO. O dispositivo do sensor de câmera, seu flash opcional e quaisquer outros componentes de câmera fora do SoC devem ser colocados em um trilho de alimentação que pode ser ligado e desativado pelo firmware ACPI.

Se, além de um link MIPI-CSI, o dispositivo de câmera tiver pinos I2C ou GPIO para controlar o sensor de câmera ou dispositivo flash, esses pinos deverão ser roteados para os pinos correspondentes do controlador I2C ou do controlador GPIO no SoC. O integrador do sistema deve enumerar os recursos I2C e GPIO para o sensor de câmera e o dispositivo flash em um objeto _CRS sob o dispositivo de câmera no namespace ACPI.

Nota O integrador do sistema deve trabalhar com o desenvolvedor do driver de subsistema da câmera para determinar como os drivers de câmera esperam que os recursos de GPIO e I2C sejam ordenados. Por exemplo, um driver que recebe dois recursos de I2C distingue entre eles com base na ordem em que eles aparecem na lista de recursos. Da mesma forma, um driver que recebe três recursos de GPIO espera que esses recursos sejam listados em uma ordem específica. O integrador do sistema deve enumerar os recursos I2C e GPIO na mesma ordem no objeto _CRS.

O sensor da câmera e o dispositivo flash devem ser colocados em um trilho de alimentação que pode ser ativado e desativado pelos métodos de controle ACPI. É recomendável usar um pin GPIO do SoC para controlar o hardware do power-switch. O GPIO deve ser enumerado em uma região de operação GPIO para que seu estado possa ser alterado por métodos de controle ACPI. O integrador do sistema deve descrever o recurso de energia para um dispositivo de câmera (sensor, flash ou qualquer outro componente de câmera) no namespace ACPI. Esse recurso deve incluir um método _ON e um método _OFF para alterar o estado do sinal GPIO roteado para o hardware do power-switch. No dispositivo de câmera no namespace ACPI, o integrador do sistema deve fornecer um objeto _PR0 e um objeto _PR3 que se referem ao recurso de energia.

Quando o driver do controlador de câmera detecta que todos os pinos de streaming entraram no estado KSSTATE_STOP, ele usa uma interface privada para informar aos drivers que controlam os componentes de câmera off-SoC que capturam não são mais necessários. Por sua vez, esses drivers chamam o método IWDFDevice2::ResumeIdle para informar à estrutura do driver que seu hardware está ocioso. Em resposta, a estrutura do driver inicia uma transição para D3, o que faz com que um IRP D3 flua pela pilha do driver do dispositivo de câmera. (A D3 IRP é um IRP IRP_MJ_POWER que especifica um valor de enumeração DEVICE_POWER_STATE de PowerDeviceD3.) O driver ACPI do Windows, Acpi.sys, observará o IRP D3 e executará o método _OFF do recurso de energia identificado pelo objeto _PR3 no dispositivo de câmera no namespace ACPI.

A última frase no parágrafo anterior pressupõe que o recurso de energia não fornece energia para nenhum dispositivo diferente do dispositivo de uma câmera. Se outros dispositivos tiverem referências a esse recurso de energia, Acpi.sys executará o método _OFF somente depois que todos os outros dispositivos que referenciam o recurso de energia tiverem feito a transição para D3. Para obter mais informações, consulte Habilitando transições para d3cold.

Retornar o hardware da câmera para o estado de energia ativo é um processo semelhante. Quando o driver do controlador de câmera detecta o primeiro pino de captura de fluxo para entrar no estado KSSTATE_ACQUIRE, o driver do controlador de câmera se comunica com os drivers para os outros componentes on-SoC e off-SoC que compõem o subsistema da câmera. Em resposta, o driver que controla a unidade de processamento de imagem no SoC chama o método IWDFDevice2::StopIdle, que informa ao PEP que o hardware da unidade de processamento de imagem deve ser ativado. O driver do controlador de câmera informa aos drivers que controlam os componentes da câmera off-SoC que eles devem retornar ao estado ativo. Por sua vez, esses drivers chamam StopIdle para informar à estrutura do driver que o hardware não está mais ocioso, o que faz com que um IRP D0 flua pela pilha do driver do dispositivo da câmera. (A D0 IRP é um IRP IRP_MJ_POWER que especifica um valor de enumeração DEVICE_POWER_STATE de PowerDeviceD0.) Acpi.sys responde ao D0 IRP executando o método _ON do recurso de energia identificado pelo objeto _PR0 no dispositivo de câmera no namespace ACPI.

Se a plataforma tiver vários dispositivos de câmera, cada dispositivo de câmera deverá ter seu próprio power rail comutável independentemente e recurso de energia descrito no namespace ACPI. Para cada dispositivo de câmera no namespace ACPI, o integrador do sistema deve fornecer um objeto _PLD que indique se o dispositivo de câmera está na parte frontal ou na parte traseira do computador. Se um dispositivo de câmera for integrado à tampa de um computador clamshell-form-factor e enfrentar o usuário quando a tampa estiver aberta, o objeto _PLD deste dispositivo deverá indicar que a câmera está na frente da plataforma. Se um dispositivo de câmera for integrado à tampa de um computador clamshell-form-factor e ficar afastado do usuário quando a tampa estiver aberta, o objeto _PLD deste dispositivo deverá indicar que a câmera está na parte de trás do sistema.

Preocupações de ativação

O hardware do dispositivo de câmera não deve dar suporte à ativação. O Windows não espera que os dispositivos de câmera possam ativar o SoC de seu estado de energia mais baixo durante o modo de espera moderno. Muitos telefones celulares permitem que o SoC acorde do sono quando o usuário pressiona o botão da câmera. O botão da câmera é tratado pelo Windows como um dispositivo de entrada do usuário cuja operação é separada e independente da integração do sytem ou do gerenciamento de energia do dispositivo de câmera, do sensor e do flash opcional.