Abrir controlador de dispositivo adaptador de controlador de host

Finalidad

Da soporte a la especificación OHCI (Open Host Controller Interface) para controladores de dispositivo de adaptador.

Sintaxis

#include <sys/hcdi.h>
#include <sys/usbdi.h>
#include <sys/usb.h>

Descripción

Los archivos especiales /dev/usbhcn proporcionan interfaces que permiten el acceso a los dispositivos de adaptador de controlador de host USB (Universal Serial Bus). Estos archivos gestionan los recursos del adaptador para que varios controladores de cliente USB y el sistema USB (o el controlador de protocolo) puedan acceder a la velocidad baja y completa de los dispositivos USB en el mismo adaptador de controlador de host USB simultáneamente.

El adaptador OHCI da soporte a los dispositivos USB (por ejemplo, teclado y ratón) que funcionan a velocidades USB 1.0 y USB 1.1 .

Subrutinas de punto de entrada del controlador de dispositivo

El controlador de dispositivo del adaptador USB sólo da soporte a los puntos de entrada open, close, ioctly config . Los puntos de entrada read y write no están soportados.

abrir y cerrar subrutinas

La subrutina open asocia el número de dispositivo, que se especifica como parámetro para la llamada al sistema open , con la estructura de dispositivo del adaptador interno. Si la subrutina open encuentra una estructura de adaptador, verifica que el dispositivo de adaptador correspondiente está configurado y no está marcado como inactivo. Si la subrutina open no encuentra una estructura de adaptador, devuelve un error. Si la característica Enhanced Error Handling (EEH) está habilitada, la subrutina open impide el acceso al dispositivo cuando se está procesando un suceso EEH.

subrutina ioctl

El controlador de dispositivo del adaptador OHCI da soporte a la siguiente suboperación de ioctl :
Operación Descripción
HCD_REGISTER_HC Registra los vectores de llamada entre el sistema USB (o el controlador de protocolo) y el controlador de controlador de host. Una vez registrados los vectores de llamada, todos los vectores de comunicación entre el sistema USB (o el controlador de protocolo) y el controlador del controlador de host.

Resumen de condiciones de error devueltas por el controlador de dispositivo del adaptador OHCI

Los siguientes códigos de condición de error para OHCI se convierten en un valor USBstatus para informar al controlador de protocolo USB y a los controladores de cliente sobre la condición de error. Las posibles condiciones de error de OHCI y los valores de USBstatus correspondientes siguen:

Código de condición de error OHCI Valor de USBstatus Descripción
OHCI_CC_BitStuffing USBD_ERROR Condición de error general
OHCI_CC_BufferOverrun USBD_ERROR Condición de error general
OHCI_CC_BufferUnderrun USBD_ERROR Condición de error general
OHCI_CC_CRC USBD_ERROR Condición de error general
OHCI_CC_DataOverrun USBD_ERROR Condición de error general
OHCI_CC_DataToggleMismatch USBD_ERROR Condición de error general
OHCI_CC_DataUnderrun USBD_ERROR Condición de error general
OHCI_CC_DeviceNotResponding USBD_ERROR Condición de error general
OHCI_CC_NotAccessed_0 USBD_ERROR Condición de error general
OHCI_CC_NotAccessed_1 USBD_ERROR Condición de error general
OHCI_CC_NoError USBD_SUCCESS  Finalización de una transacción satisfactoria
OHCI_CC_PIDCheckFailure USBD_ERROR Condición de error general
OHCI_CC_STALL USBD_STALL El conducto lógico se retrasa
OHCI_CC_UnexpectedPID USBD_ERROR Condición de error general

Vectores de llamada

Siempre que se ejecuta el método de configuración USB, abre el archivo especial del controlador del sistema USB (USBD) de /dev/usb0 e intenta registrar cada controlador de host USB detectado y disponible con el USBD utilizando una operación de USBD_REGISTER_HC ioctl . Cuando se procesa la operación de USBD_REGISTER_HC ioctl , el USBD abre el controlador de host y solicita el registro de los vectores de llamada almacenados en el controlador de host utilizando una operación de HCD_REGISTER_HC ioctl . Después de que los vectores de llamada se registren con el USBD, toda la comunicación adicional entre el USBD y el controlador de controlador de host es manejada por los vectores de llamada. El resumen de los vectores de llamadas sigue:

Vector de llamada Descripción
hcdGetFrame Obtiene el número de trama actual del controlador de host conectado. Este vector de llamada es proporcionado por la USBD.
hcdPipeAbort Cancela el proceso de un almacenamiento intermedio de E/S. El conducto especificado por el almacenamiento intermedio de E/S ya está detenido antes de que se llame al vector de llamada hcdPipeAbort . Este vector de llamada es proporcionado por la USBD.
hcdPipeAddIOB Aumenta el número máximo de almacenamientos intermedios de E/S pendientes. Este vector de llamada es proporcionado por la USBD.
hcdPipeClear Borra, desdetiene y reinicia las operaciones de E/S en un punto final específico. Cuando se llama a este vector de llamada, la función comprueba si el anillo está en estado detenido. Este vector de llamada es proporcionado por la USBD.
hcdPipeConnect Crea una conexión de conducto con un punto final en un dispositivo USB específico.
hcdPipeDisconnect Elimina la conexión de conducto previamente establecida con el punto final en un dispositivo USB específico.
hcdPipeHalt Detiene un conducto desde la perspectiva del controlador de host. Todas las operaciones de E/S pendientes permanecen en un estado pendiente. Este vector de llamada es proporcionado por la USBD.
hcdPipeIO Realiza operaciones de E/S en el dispositivo USB. La operación de E/S puede ser de los siguientes tipos de transferencia: control, graneles, isocronos e interrupciones.
hcdPipeResetToggle Restablece el bit de conmutación de sincronización de datos a DATA0. Este vector de llamada es proporcionado por la USBD.
hcdPipeStatus Obtiene el estado del conducto desde la perspectiva de host. Este vector de llamada es proporcionado por la USBD.
hcdShutdownComplete Informa al controlador de controlador de host de que la solicitud usbdReqHCshutdown se ha completado. Este vector de llamada es proporcionado por la USBD.
hcdUnregisterHC Desregistra un controlador de host de USBD.
usbdBusMap Correlaciona memoria para la masterización de bus por parte del controlador de host. Este vector de llamada lo proporciona el controlador de controlador de host extensible (xHCD).
usbdPostIOB Retira un almacenamiento intermedio de E/S. Este vector de llamada lo proporciona el controlador del adaptador.
usbdReqHCrestart Esta llamada se proporciona cuando se detecta un error con el adaptador y la recuperación del controlador de adaptador de este error requiere que reinicie el adaptador.
usbdReqHCshutdown Este vector de llamada se proporciona durante la eliminación del controlador de host.
usbdReqHCunregister La función CFG TERM del controlador de adaptador solicita al USBD que anule el registro del controlador de host. Este vector de llamada se proporciona durante la eliminación del controlador de host.