ホスト・コントローラー・アダプター・デバイス・ドライバーを開く
目的
アダプター・デバイス・ドライバーの Open Host Controller Interface (OHCI) 仕様をサポートします。
構文
#include <sys/hcdi.h>
#include <sys/usbdi.h>
#include <sys/usb.h>
説明
/dev/usbhcn スペシャル・ファイルは、USB (Universal Serial Bus) ホスト・コントローラー・アダプター・デバイスへのアクセスを可能にするインターフェースを提供します。 これらのファイルは、複数の USB クライアント・ドライバーと USB システム (またはプロトコル・ドライバー) が同じ USB ホスト・コントローラー・アダプター上の USB デバイスの低速およびフルスピードに同時にアクセスできるように、アダプター・リソースを管理します。
OHCI アダプターは、USB 1.0 および USB 1.1 の速度で動作する USB デバイス (キーボードやマウスなど) をサポートします。
アダプター・デバイス・ドライバー・エントリー・ポイント・サブルーチン
USB アダプター・デバイス・ドライバーは、 open
、 close
、 ioctl
、および config
の各エントリー・ポイントのみをサポートします。 read
および write
エントリー・ポイントはサポートされていません。
サブルーチンのオープンとクローズ
open
サブルーチンは、 open
システム・コールのパラメーターとして指定された装置番号を、内部アダプター装置構造に関連付けます。 open
サブルーチンは、アダプター構造体を検出すると、対応するアダプター・デバイスが構成済みであり、非アクティブとマークされていないことを検証します。 open
サブルーチンは、アダプター構造体を検出しないと、エラーを戻します。 拡張エラー処理 (EEH) 機能が使用可能になっている場合、 open
サブルーチンは、EEH イベントの処理中にデバイスへのアクセスを防止します。
ioctl サブルーチン
ioctl
サブ操作をサポートします。実行 | 説明 |
---|---|
HCD REGISTER_HC | USB システム (またはプロトコル・ドライバー) とホスト・コントローラー・ドライバーの間のコール・ベクトルを登録します。 コール・ベクトルが登録されると、USB システム (またはプロトコル・ドライバー) とホスト・コントローラー・ドライバーの間のすべての通信は、これらのベクトルによって処理されます。 |
OHCI アダプター・デバイス・ドライバーによって戻されるエラー条件の要約
OHCI の以下のエラー条件コードは、USB プロトコル・ドライバーおよびクライアント・ドライバーにエラー状態を通知するために、 USBstatus (SBstatus) 値に変換されます。 考えられる OHCI エラー条件とそれに対応する USBstatus (SBstatus) 値は、以下のとおりです。
OHCI エラー条件コード | USBstatus (SBstatus) 値 | 説明 |
---|---|---|
OHCI_CC_BitStuffing | SBD エラー | 一般エラー条件 |
OHCI_CC_BufferOverrun | SBD エラー | 一般エラー条件 |
OHCI_CC_BufferUnderrun | SBD エラー | 一般エラー条件 |
OHCI の CC_CRC | SBD エラー | 一般エラー条件 |
OHCI_CC_DataOverrun | SBD エラー | 一般エラー条件 |
OHCI_CC_DataToggle不一致 | SBD エラー | 一般エラー条件 |
OHCI_CC_DataUnderrun | SBD エラー | 一般エラー条件 |
OHCI_CC_DeviceNot応答 | SBD エラー | 一般エラー条件 |
OHCI_CC_NotAccessed_0 | SBD エラー | 一般エラー条件 |
OHCI_CC_NotAccessed_1 | SBD エラー | 一般エラー条件 |
OHCI_CC_NoError | Usbd_success | トランザクションの正常終了 |
OHCI_CC_PIDCheckFailure | SBD エラー | 一般エラー条件 |
OHCI CC_STALL (OHCI CC_STALL) | 使用中の在庫管理単位 | 論理パイプが遅延しています |
OHCI_CC_UnexpectedPID | SBD エラー | 一般エラー条件 |
呼び出しベクトル
USB 構成方式を実行すると、 /dev/usb0 USB システム・ドライバー (USBD) 特殊ファイルが開き、 USBD_REGISTER_HC
ioctl
操作を使用して、検出され、使用可能な各 USB ホスト・コントローラーを USBD に登録しようとします。 USBD_REGISTER_HC
ioctl
操作が処理されると、USBD はホスト・コントローラー・ドライバーを開き、 HCD_REGISTER_HC
ioctl
操作を使用して、ホスト・コントローラー・ドライバー内に保管されている呼び出しベクトルの登録を要求します。 呼び出しベクトルが USBD に登録されると、USBD とホスト・コントローラー・ドライバーの間のそれ以降のすべての通信は、呼び出しベクトルによって処理されます。 呼び出しベクトルの要約を以下に示します。
呼び出しベクトル | 説明 |
---|---|
hcdGetフレーム | 接続されたホスト・コントローラーから現行フレーム番号を取得します。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdPipe中止 | 入出力バッファーの処理を取り消します。 入出力バッファーによって指定されたパイプは、 hcdPipeAbort 呼び出しベクトルが呼び出される前に既に停止しています。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdPipeAddIOB | 未解決の入出力バッファーの最大数を増やします。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdPipeクリア | 特定のエンドポイントでの入出力操作をクリア、一時停止解除、および再始動します。 この呼び出しベクトルが呼び出されると、関数はリングが一時停止状態にあるかどうかを検査します。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdPipe接続 | 特定の USB デバイス上のエンドポイントへのパイプ接続を作成します。 |
hcdPipe切断 | 特定の USB デバイス上のエンドポイントとの以前に確立されたパイプ接続を削除します。 |
hcdPipe一時停止 | ホスト・コントローラーの観点からパイプを停止します。 保留中の入出力操作はすべて保留状態のままです。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdPipe入出力 | USB デバイスで入出力操作を実行します。 入出力操作の転送タイプは、control、bulk、isochronous、および interrupt のいずれかです。 |
hcdPipeResetToggle | データ同期化トグル・ビットを DATA0 にリセットします。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdPipe状況 | ホストの観点からパイプの状況を取得します。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdShutdown完了 | usbdReqHCshutdown 要求が完了したことをホスト・コントローラー・ドライバーに通知します。 この呼び出しベクトルは、USBD によって提供されます。 |
hcdUnregisterHC | ホスト・コントローラーを USBD から登録抹消します。 |
usbdBusマップ | ホスト・コントローラーによるバス・マスタリングのためのメモリーをマップします。 この呼び出しベクトルは、拡張可能ホスト・コントローラー・ドライバー (xHCD) によって提供されます。 |
usbdPostIOB | 入出力バッファーを廃棄します。 この呼び出しベクトルは、アダプター・ドライバーによって提供されます。 |
usbdReqHCrestart | この呼び出しは、アダプターでエラーが検出され、このエラーからのアダプター・ドライバーのリカバリーでアダプターを再始動する必要がある場合に提供されます。 |
usbdReqHCshutdown | この呼び出しベクトルは、ホスト・コントローラーの取り外し中に提供されます。 |
usbdReqHCunregister | アダプター・ドライバーの CFG TERM 関数は、ホスト・コントローラーを登録抹消するように USBD に要求します。 この呼び出しベクトルは、ホスト・コントローラーの取り外し中に提供されます。 |