향상된 호스트 컨트롤러 어댑터 장치 드라이버
용도
어댑터 장치 드라이버에 대한 EHCI(Enhanced Host Controller Interface) 사양을 지원합니다.
구문
#include <sys/hcdi.h>
#include <sys/usbdi.h>
#include <sys/usb.h>설명
그만큼/dev/usbhcn 특수 파일은 USB(범용 직렬 버스) 호스트 컨트롤러 어댑터 장치에 액세스할 수 있는 인터페이스를 제공합니다. 이러한 파일은 여러 USB 클라이언트 드라이버와 USB 시스템(또는 프로토콜 드라이버)이 동일한 USB 호스트 컨트롤러 어댑터의 USB 장치에 동시에 액세스할 수 있도록 어댑터 리소스를 관리합니다.
USB에서는2.0 USB-IF(USB Implementers Forum)는 고속 데이터 전송만 지원하는 EHCI라는 단일 사양을 구현했습니다. EHCI 기반 어댑터는 USB에 대한 OHCI(Open Host Controller Interface) 연결을 지원하는 동반 컨트롤러라고 하는 가상 호스트 컨트롤러 기능으로 구성된 다기능 PCI(Peripheral Component Interconnect) 장치입니다.1.0 그리고1.1 장치. 개체 데이터 관리자(ODM )alt_usb_ctrl EHCI 어댑터의 속성은 동반 OHCI 컨트롤러에 대한 위치 값을 제공합니다.
어댑터 장치 드라이버 진입점 서브루틴
USB 어댑터 장치 드라이버는open ,close ,ioctl , 그리고config 진입점. 그만큼read 그리고write 진입점은 지원되지 않습니다.
서브루틴 열기 및 닫기
그만큼open 서브루틴은 매개변수로 지정된 장치 번호를open 내부 어댑터 장치 구조를 사용하는 시스템 호출입니다. 만약open 서브루틴은 어댑터 구조를 찾은 후 해당 어댑터 장치가 구성되어 있고 비활성으로 표시되지 않았는지 확인합니다. 만약open 서브루틴이 어댑터 구조를 찾지 못하면 오류를 반환합니다. 향상된 오류 처리(EEH) 기능이 활성화된 경우open 서브루틴은 EEH 이벤트가 처리되는 동안 장치에 액세스하지 않습니다.
ioctl 서브루틴
ioctl 하위 작업:| 운영 | 설명 |
|---|---|
| HCD_REGISTER_HC | USB 시스템(또는 프로토콜 드라이버)과 호스트 컨트롤러 드라이버 간의 호출 벡터를 등록합니다. 호출 벡터가 등록된 후 USB 시스템(또는 프로토콜 드라이버)과 호스트 컨트롤러 드라이버 간의 모든 추가 통신은 이러한 벡터에 의해 처리됩니다. |
| HCD_REQUEST_COMPANIONS | 동반 OHCI 호스트 컨트롤러에 대한 포트 라우팅 정보를 요청합니다. |
EHCI 어댑터 장치 드라이버에서 반환된 오류 조건 요약
가능한 값은 USB상태 EHCI 어댑터 장치 드라이버의 반환 값은 다음과 같습니다.
| 오류 코드 | 설명 |
|---|---|
| USBD_ABORTED | 관련 IRP가 종료되었습니다. |
| USBD_ABORTING | 연결된 IRP(I/O 요청 패킷)가 실패합니다. |
| USBD_ACTIVE | 논리 파이프가 작동 중이며 정지되지 않았습니다. |
| USBD_BADHANDLE | 호출 벡터 인터페이스를 통해 매개변수로 전달된 핸들이 잘못되었습니다. |
| USBD_BANDWIDTH | 대역폭 요구 사항으로 인해 논리적 파이프 연결에 실패했습니다. |
| USBD_CONNECT | 논리 파이프가 이미 연결되어 있습니다. |
| USBD_DATA | 장치의 응답이 잘못되었습니다. |
| USBD_DISCONNECT | 트랜잭션과 연결된 장치가 연결 해제되거나 제거됩니다. |
| USBD_ERROR | 일반 오류 상태. |
| USBD_HALTED | 트랜잭션과 연관된 논리 파이프가 중지되었습니다. |
| USBD_POWER | 장치가 전력 예산을 초과했습니다. |
| USBD_SPEED | 장치 속도 불일치로 인해 포트 재설정 작업이 실패했습니다. |
| USBD_STALL | 트랜잭션과 연관된 논리 파이프가 지연됩니다. |
| USBD_TIMEOUT | I/O 작업 시간이 초과되었습니다. |
호출 벡터
USB 구성 방법이 실행될 때마다/dev/usb0 USB 시스템 드라이버(USBD) 특수 파일을 사용하여 감지되고 사용 가능한 각 USB 호스트 컨트롤러를 USBD에 등록하려고 시도합니다.USBD_REGISTER_HCioctl 작업. 때USBD_REGISTER_HCioctl 작업이 처리되면 USBD는 호스트 컨트롤러 드라이버를 열고 호스트 컨트롤러 드라이버 내에 저장된 호출 벡터의 등록을 요청합니다.HCD_REGISTER_HCioctl 작업. 호출 벡터가 USBD에 등록된 후 USBD와 호스트 컨트롤러 드라이버 간의 모든 추가 통신은 호출 벡터에 의해 처리됩니다. 호출 벡터의 요약은 다음과 같습니다.
| 호출 벡터 | 설명 |
|---|---|
| hcdGetFrame | 연결된 호스트 컨트롤러로부터 현재 프레임 번호를 얻습니다. 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdPipeAbort | I/O 버퍼 처리를 취소합니다. I/O 버퍼에 의해 지정된 파이프는 이미 중지되었습니다.hcdPipeAbort 호출 벡터가 호출됩니다. 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdPipeAddIOB | 미해결 I/O 버퍼의 최대 수를 늘립니다. 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdPipeClear | 특정 끝점에서 I/O 작업을 지우고, 중지를 취소하고, 다시 시작합니다. 이 호출 벡터가 호출되면 함수는 링이 정지 상태인지 확인합니다. |
| hcdPipeConnect | 특정 USB 장치의 끝점에 대한 파이프 연결을 만듭니다. |
| hcdPipeDisconnect | 특정 USB 장치의 끝점과 이전에 설정된 파이프 연결을 제거합니다. |
| hcdPipeHalt | 호스트 컨트롤러의 관점에서 파이프를 중지합니다. 보류 중인 모든 I/O 작업은 보류 상태로 유지됩니다. 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdPipeIO | USB 장치에서 I/O 작업을 수행합니다. I/O 작업에는 제어, 대량, 등시성, 인터럽트 등의 전송 유형이 있을 수 있습니다. |
| hcdPipeResetToggle | 데이터 동기화 토글 비트를 다음으로 재설정합니다.DATA0 . 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdPipeStatus | 호스트 컨트롤러의 관점에서 파이프 상태를 가져옵니다. 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdShutdownComplete | 호스트 컨트롤러 드라이버에 알립니다.usbdReqHCshutdown 요청이 완료되었습니다. 이 호출 벡터는 USBD에서 제공됩니다. |
| hcdUnregisterHC | USBD에서 호스트 컨트롤러를 등록 취소합니다. |
| usbdBusMap | 버스 마스터링을 위한 메모리를 매핑합니다. 이 호출 벡터는 확장 가능 호스트 컨트롤러 드라이버(xHCD ). |
| usbdPostIOB | I/O 버퍼를 폐기합니다. 이 호출 벡터는 어댑터 드라이버에서 제공됩니다. |
| usbdReqHCrestart | 이 호출 벡터는 어댑터에서 오류가 감지되고 이 오류로부터 어댑터 드라이버를 복구하려면 어댑터를 다시 시작해야 할 때 제공됩니다. |
| usbdReqHCshutdown | 이 호출 벡터는 호스트 컨트롤러를 제거하는 동안 제공됩니다. |
| usbdReqHCunregister | 그만큼CFG TERM 어댑터 드라이버의 기능은 USBD에 호스트 컨트롤러 등록을 취소하도록 요청합니다. 이 호출 벡터는 호스트 컨트롤러를 제거하는 동안 제공됩니다. |