ホスト・コントローラー・アダプター・デバイス・ドライバーを開く

目的

アダプター・デバイス・ドライバーの 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 アダプター・デバイス・ドライバーは、 opencloseioctl、および config の各エントリー・ポイントのみをサポートします。 read および write エントリー・ポイントはサポートされていません。

サブルーチンのオープンとクローズ

open サブルーチンは、 open システム・コールのパラメーターとして指定された装置番号を、内部アダプター装置構造に関連付けます。 open サブルーチンは、アダプター構造体を検出すると、対応するアダプター・デバイスが構成済みであり、非アクティブとマークされていないことを検証します。 open サブルーチンは、アダプター構造体を検出しないと、エラーを戻します。 拡張エラー処理 (EEH) 機能が使用可能になっている場合、 open サブルーチンは、EEH イベントの処理中にデバイスへのアクセスを防止します。

ioctl サブルーチン

OHCI アダプター・デバイス・ドライバーは、以下の 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 に要求します。 この呼び出しベクトルは、ホスト・コントローラーの取り外し中に提供されます。