Ouvrir le pilote de périphérique de l'adaptateur de contrôleur d'hôte
Objectif
Prend en charge la spécification OHCI (Open Host Controller Interface) pour les pilotes de périphérique d'adaptateur.
Syntaxe
#include <sys/hcdi.h>
#include <sys/usbdi.h>
#include <sys/usb.h>Descriptif
Les fichiers spéciaux /dev/usbhcn fournissent des interfaces qui permettent d'accéder aux unités d'adaptateur de contrôleur hôte USB (Universal Serial Bus). Ces fichiers gèrent les ressources de l'adaptateur de sorte que plusieurs pilotes de client USB et le système USB (ou le pilote de protocole) puissent accéder à la vitesse basse et à la vitesse complète des périphériques USB sur le même adaptateur de contrôleur hôte USB simultanément.
L'adaptateur OHCI prend en charge les périphériques USB (par exemple, le clavier et la souris) qui fonctionnent à des vitesses USB 1.0 et USB 1.1 .
Sous-routines du point d'entrée du pilote de périphérique de l'adaptateur
Le pilote de périphérique de l'adaptateur USB prend en charge uniquement les points d'entrée open, close, ioctlet config . Les points d'entrée read et write ne sont pas pris en charge.
Sous-routines ouvertes et proches
La sous-routine open associe le numéro d'unité, qui est spécifié en tant que paramètre à l'appel système open , à la structure d'unité de l'adaptateur interne. Si la sous-routine open trouve une structure d'adaptateur, elle vérifie que l'unité d'adaptateur correspondante est configurée et qu'elle n'est pas marquée comme inactive. Si la sous-routine open ne trouve pas de structure d'adaptateur, elle renvoie une erreur. Si la fonction Enhanced Error Handling (EEH) est activée, la sous-routine open empêche l'accès au périphérique lorsqu'un événement EEH est en cours de traitement.
Sous-routine ioctl
ioctl suivante:| Opération | Descriptif |
|---|---|
| HCD_REGISTER_HC | Enregistre les vecteurs d'appel entre le système USB (ou le pilote de protocole) et le pilote du contrôleur hôte. Une fois que les vecteurs d'appel sont enregistrés, toutes les autres communications entre le système USB (ou le pilote de protocole) et le pilote du contrôleur hôte sont traitées par ces vecteurs. |
Récapitulatif des conditions d'erreur renvoyées par le pilote de périphérique de l'adaptateur OHCI
Les codes de condition d'erreur suivants pour OHCI sont convertis en une valeur Etat USBstatus pour informer le pilote de protocole USB et les pilotes client de la condition d'erreur. Les conditions d'erreur OHCI possibles et les valeurs Etat USBstatus correspondantes sont les suivantes:
| Code de condition d'erreur OHCI | Valeur Etat USBstatus | Descriptif |
|---|---|---|
| OHCI_CC_BitStuffing | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_BufferOverrun | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_BufferUnderrun | ERREUR D'UTILISATION | Condition d'erreur générale |
| CRC OHCI_CC_C | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_DataOverrun | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_DataToggleMismatch | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_DataUnderrun | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_DeviceNotResponding | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_NotAccessed_0 | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_NotAccessed_1 | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_NoError | _RÉUSSITE USBD_SUCCÈS | Achèvement d'une transaction réussie |
| OHCI_CC_PIDCheckFailure | ERREUR D'UTILISATION | Condition d'erreur générale |
| OHCI_CC_STALL | D_STABD_USAGE_UTILISATEUR | Le canal logique est retardé |
| OHCI_CC_UnexpectedPID | ERREUR D'UTILISATION | Condition d'erreur générale |
Vecteurs d'appel
Chaque fois que la méthode de configuration USB est exécutée, elle ouvre le fichier spécial du pilote système USB /dev/usb0 (USBD) et tente d'enregistrer chaque contrôleur hôte USB détecté et disponible auprès de l'USBD à l'aide d'une opération USBD_REGISTER_HC ioctl . Lorsque l'opération USBD_REGISTER_HC ioctl est traitée, USBD ouvre le pilote de contrôleur d'hôte et demande l'enregistrement des vecteurs d'appel stockés dans le pilote de contrôleur d'hôte à l'aide d'une opération HCD_REGISTER_HC ioctl . Une fois que les vecteurs d'appel sont enregistrés auprès de l'USBD, toutes les autres communications entre le USBD et le pilote du contrôleur hôte sont traitées par les vecteurs d'appel. Voici le récapitulatif des vecteurs d'appel:
| Vecteur d'appel | Descriptif |
|---|---|
| hcdGetFrame | Obtient le numéro de châssis actuel du contrôleur hôte connecté. Ce vecteur d'appel est fourni par le USBD. |
| hcdPipeAbort | Annule le traitement d'une mémoire tampon d'E-S. Le canal de communication spécifié par la mémoire tampon d'E-S est déjà arrêté avant l'appel du vecteur d'appel hcdPipeAbort . Ce vecteur d'appel est fourni par le USBD. |
| hcdPipeAddIOB | Augmente le nombre maximal de mémoires tampon d'E-S en attente. Ce vecteur d'appel est fourni par le USBD. |
| hcdPipeClear | Efface, arrête et redémarre les opérations d'E-S sur un noeud final spécifique. Lorsque ce vecteur d'appel est appelé, la fonction vérifie si l'anneau est à l'état arrêté. Ce vecteur d'appel est fourni par le USBD. |
| hcdPipeConnect | Crée une connexion de canal de communication avec un noeud final sur un périphérique USB spécifique. |
| hcdPipeDisconnect | Supprime la connexion de canal précédemment établie avec le noeud final sur un périphérique USB spécifique. |
| hcdPipeHalt | Halte un tube du point de vue du contrôleur hôte. Toutes les opérations d'E-S en attente restent à l'état en attente. Ce vecteur d'appel est fourni par le USBD. |
| hcdPipeIO | Effectua des opérations d'E-S sur le périphérique USB. L'opération d'E-S peut être des types de transfert suivants: contrôle, vrac, isochrone et interruption. |
| hcdPipeResetToggle | Réinitialise le bit de basculement de la synchronisation de données sur DATA0. Ce vecteur d'appel est fourni par le USBD. |
| hcdPipeStatus | Obtient le statut du tube du point de vue de l'hôte. Ce vecteur d'appel est fourni par le USBD. |
| hcdShutdownComplete | Informe le pilote du contrôleur d'hôte que la demande usbdReqHCshutdown est terminée. Ce vecteur d'appel est fourni par le USBD. |
| hcdUnregisterHC | Désenregistre un contrôleur hôte de l'USBD. |
| usbdBusMap | Mappe la mémoire pour le mastering de bus par le contrôleur hôte. Ce vecteur d'appel est fourni par le pilote de contrôleur d'hôte extensible (xHCD). |
| usbdPostIOB | Retraite une mémoire tampon d'entrée-sortie. Ce vecteur d'appel est fourni par le pilote de l'adaptateur. |
| usbdReqHCrestart | Cet appel est fourni lorsqu'une erreur est détectée avec l'adaptateur et que la récupération du pilote de l'adaptateur à partir de cette erreur nécessite le redémarrage de l'adaptateur. |
| usbdReqHCshutdown | Ce vecteur d'appel est fourni lors de la suppression du contrôleur hôte. |
| usbdReqHCunregister | La fonction CFG TERM du pilote de l'adaptateur demande à l'USBD de désenregistrer le contrôleur hôte. Ce vecteur d'appel est fourni lors de la suppression du contrôleur hôte. |