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

Le pilote de périphérique de l'adaptateur OHCI prend en charge la sous-opération 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.