Colocar o controlador de função em um sistema USB Type-C Windows
Este artigo descreve as tarefas de introdução do OEM para um controlador de função que tem um conector USB Type-C
APIs importantes
- Referência de programação do driver de cliente do controlador de função USB
- Driver de filtro USB para dar suporte a carregadores proprietários
O driver do controlador de funções informa ao sistema operacional sobre os níveis de carregamento que seu conector USB Type-C dá suporte e notifica o subsistema da bateria quando ele pode começar a carregar e a quantidade máxima de atual que o dispositivo pode desenhar.
Este tópico pressupõe que o controlador de funções gerencie um único conector (UFP) a qualquer momento.
1. Carregar os drivers do lado do dispositivo USB
Há dois drivers que gerenciam as operações de um controlador de funções. O par é a extensão de classe de função USB fornecida pela Microsoft e seu driver cliente. A extensão de classe relata informações enviadas pelo driver cliente para o sistema operacional. O driver cliente se comunica com o hardware usando interfaces de hardware. Confira Drivers do lado do dispositivo USB no Windows.
Se o sistema usar controladores ChipIdea e Synopsys.
- Carregue os drivers de cliente in-box fornecidos pela Microsoft para controladores ChipIdea e Synopsys.
- Escreva um driver de filtro inferior que obtém eventos de anexação/desanexação quando um carregador está conectado. O driver determina o tipo de carregador e as propriedades de configuração. Ele também pode detectar portas de carregamento USB conforme definido pela especificação BC1.2. As informações de cobrança são passadas para a extensão de classe para que ela possa denunciá-la ao driver de arbitragem de cobrança (CAD.sys). Para obter mais informações, consulte Driver de filtro USB para dar suporte a carregadores proprietários.
Se o sistema usar um controlador personalizado, escreva um driver de cliente. A lógica de detecção BC1.2 é implementada no driver do cliente. Para obter mais informações, consulte:
Referência de programação do driver de cliente do controlador de função USB
Desenvolvendo drivers do Windows para o controlador de função USB
2. Modificar o ACPI do sistema para indicar ao driver do controlador de função que o conector é um conector USB Tipo C
Isso é feito por meio de um método ACPI definido na especificação do ACPI 6.0
_UPC (USB Port Capabilities)
Use os novos valores definidos no ACPI 6.0 para indicar o tipo correto de conector USB Type-C, como "Type-C USB2" e "Type-C USB2 e SS with switch". O driver de funções comunica essas informações para CAD.sys, de modo que ele usa a lógica de arbitragem específica do Tipo C usb para determinar uma fonte de carregamento apropriada.
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()
{
...
})
...