Pilote de filtre USB pour la prise en charge des chargeurs USB

Écrivez un pilote de filtre qui prend en charge la détection des chargeurs, si le contrôleur de fonction utilise les pilotes Synopsys et ChipIdea en boîte. Si vous écrivez un pilote client pour un contrôleur de fonction propriétaire, la détection du chargeur/attachement est intégrée au pilote client en implémentant EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET et EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER.

La pile de fonctions USB permet à l’appareil, tel qu’un téléphone ou une tablette, de se charger lorsqu’il est connecté à un hôte et à un chargeur USB, comme défini par la spécification USB Battery Charging (BC) 1.2.

  • Il existe deux types de ports que l’appareil peut utiliser pour le chargement. L’appareil peut charger à partir d’un port de charge dédié (DCP) sur un chargeur fourni avec l’appareil. L’appareil peut également utiliser des ports en aval standard ou charger des ports en aval lorsque l’appareil est connecté à un PC. Ces deux cas sont conformes à la spécification USB BC 1.2.

  • Certains chargeurs ne suivent pas la spécification. La pile de fonctions USB permet à l’appareil de charger à partir de ces chargeurs USB propriétaires.

Pour prendre en charge les chargeurs propriétaires et conformes aux spécifications, ces opérations sont nécessaires.

  • L’appareil est en mesure de détecter quand un hôte ou un chargeur USB est attaché ou détaché.
  • L’appareil est en mesure de détecter les différents ports de charge USB définis par la spécification BC 1.2.
  • Pour les chargeurs USB définis par la spécification BC 1.2, l’appareil se charge avec la quantité maximale de courant autorisée par la spécification BC 1.2.
  • L’appareil est en mesure de détecter les chargeurs USB propriétaires.
  • Pour les chargeurs USB propriétaires, déterminez la quantité maximale de courant que l’appareil peut dessiner.
  • Informez le système d’exploitation du type de port USB connecté.
  • Empêchez l’appareil d’extraire le courant via USB dans le système d’exploitation, même si un hôte USB est connecté et que l’appareil s’est configuré lui-même avec l’hôte.

Ces opérations sont gérées par l’extension de classe de fonction USB (UFX)/le pilote client et un pilote de filtre chargé en tant que filtre inférieur dans la pile de périphériques de fonction USB. Le pilote gère la charge USB depuis la détection du port USB jusqu’à la notification de la pile de la batterie quand elle peut commencer à charger et la quantité maximale de courant que l’appareil peut dessiner.

Voici une représentation architecturale des piles d’appareils.

Charge USB.

Lorsqu’un port USB est attaché à l’appareil, le pilote client reçoit une notification par le pilote de filtre inférieur ou une interruption. À ce stade, le pilote client effectue la détection de port en communiquant avec le matériel USB et signale le type de port à UFX. Elle peut également demander le pilote de filtre. Dans ce cas, le pilote de filtre se coordonne avec le matériel USB pour effectuer la détection du port USB et retourne le type de port détecté au pilote client et le pilote client le transmet à UFX.

En fonction du type de port, UFX détermine la quantité maximale de courant que l’appareil peut dessiner et envoie ces informations au pilote d’agrégation de charge (CAO). LA CAO valide les informations. Si le courant est valide, CAD envoie une demande au pilote de la classe batterie pour commencer à charger jusqu’au courant maximal spécifié. Le pilote de la classe batterie transfère la demande de charge au pilote de la mini-classe de batterie pour traitement. Si la demande de charge a spécifié qu’un chargeur propriétaire a été attaché et que la mini-classe de batterie gère les chargeurs propriétaires, le pilote de la mini-classe peut tenter de charger avec un courant maximal qu’il juge approprié. Sinon, la mini-classe de batterie ne peut charger que jusqu’au courant maximal spécifié par CAO.