(57)【要約】      （修正有）【課題】ＵＳＢバスに応じて登録される特殊制御方法に基づきＵＳＢデバイスに特殊制御を実行する。【解決手段】ＵＳＢを介してＵＳＢデバイス１０と通信するためのコントローラ４０であって、前記ＵＳＢを介してＵＳＢデバイスが接続されるＵＳＢハブ８０のトポロジ情報と、該ＵＳＢハブに接続されるＵＳＢデバイスを特殊制御するための特殊制御方法とを関連付けて登録する登録部１３０と、前記登録された情報に基づき、ＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報に対応する前記特殊制御方法を特定する処理部１２０と、前記処理部により特定された前記特殊制御方法に基づき、前記ＵＳＢハブに接続されるＵＳＢデバイスの制御を実行する前記ＵＳＢハブ８０と、を備える。【選択図】図１
2014006726.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信するためのコントローラであって、
前記ＵＳＢを介してＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報と、該ＵＳＢハブに接続されるＵＳＢデバイスを特殊制御するための特殊制御方法とを関連付けて登録する登録部と、
前記登録された情報に基づき、ＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報に対応する前記特殊制御方法を特定する処理部と、
前記処理部により特定された前記特殊制御方法に基づき、前記ＵＳＢハブに接続されるＵＳＢデバイスの制御を実行する前記ＵＳＢハブと、
を備えることを特徴とするコントローラ。
【請求項２】
前記登録部は、ポート毎に前記ＵＳＢハブの特殊制御方法を登録し、
前記処理部は、前記ＵＳＢデバイスが接続されるＵＳＢハブのポート毎に特殊制御方法を特定し、
前記ＵＳＢハブは、前記ポート毎に特定された特殊制御方法に基づき、ポート毎に前記ＵＳＢデバイスの制御を実行することを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記登録部は、前記特殊制御方法として、ＵＳＢハブの複数のポートを検索する際の優先順位を登録し、
前記処理部は、前記優先順位が高いポートから順に前記特殊制御方法を特定し、
前記ＵＳＢハブは、前記特定された特殊制御方法に基づき、前記優先順位が高いポートから順に前記ＵＳＢデバイスの制御を実行することを特徴とする請求項２に記載のコントローラ。
【請求項４】
前記登録部は、前記特殊制御方法として、ＵＳＢハブに接続されるＵＳＢデバイスの応答のための制御時間であってＵＳＢ規格に準拠したディレイを含むデフォルト値以外の制御時間を登録し、
前記処理部は、前記登録された前記デフォルト値以外の制御時間を特定し、
前記ＵＳＢハブは、前記特定されたデフォルト値以外の制御時間に基づき、前記ＵＳＢデバイスの制御を実行することを特徴とする請求項１〜３のいずれか一項に記載のコントローラ。
【請求項５】
前記登録部は、前記特殊制御方法として、ＵＳＢハブの特定のポートを検索の対象外とする情報を登録し、
前記処理部は、前記ＵＳＢハブの特定のポートの検索の不要に関する情報を特定し、
前記ＵＳＢハブは、前記特定された前記ポートの検索の不要に関する情報に基づき、前記検索を不要とされたポートに接続されたＵＳＢデバイスに対してはデフォルト値に基づく制御を実行することを特徴とする請求項１〜４のいずれか一項に記載のコントローラ。
【請求項６】
前記登録部は、前記ＵＳＢハブのトポロジ情報に関連付けて該ＵＳＢハブに接続された複数のコントローラの識別情報を登録し、
前記処理部は、前記登録されたトポロジ情報及び複数のコントローラの識別情報に基づき、ＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報及びコントローラの識別情報に対応する前記特殊制御方法を特定し、
前記ＵＳＢハブは、前記処理部により特定された前記特殊制御方法に基づき、所定の識別情報を有するコントローラの前記ＵＳＢハブに接続されるＵＳＢデバイスの制御を実行することを特徴とする請求項１〜５のいずれか一項に記載のコントローラ。
【請求項７】
前記１〜６のいずれか一項に記載のコントローラと、
バスを介して前記コントローラに接続されるホストＣＰＵと、
を備えることを特徴とする電子機器。
【請求項８】
ＵＳＢを介してＵＳＢデバイスと通信するためのコントローラによる前記ＵＳＢデバイスの制御方法であって、
前記ＵＳＢを介してＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報と、該ＵＳＢハブに接続されるＵＳＢデバイスを特殊制御するための特殊制御方法とを関連付けて登録するステップと、
前記登録された情報に基づき、ＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報に対応する前記特殊制御方法を特定するステップと、
前記特定された前記特殊制御方法に基づき、前記ＵＳＢハブに接続されるＵＳＢデバイスの制御を実行するステップと、
を含むＵＳＢデバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ、電子機器及びＵＳＢデバイスの制御方法に関する。
【背景技術】
【０００２】
ＵＳＢ（Universal Serial Bus）ホストコンピュータがＵＳＢデバイスの接続認識を完了するためには、アドレス割り当てやリセット完了待ちのためのＵＳＢ規格に準拠したディレイが必要となる。しかし、世の中のＵＳＢデバイスの中には規格値のディレイでは接続認識完了を応答しないデバイスも存在している。規格値のディレイでは応答しないデバイスを使用するためには規格値にマージンを加えたディレイをかけて、ＵＳＢデバイスの応答時間を長くする必要がある。
【０００３】
例えば、特許文献１には、規格値のディレイでは動作しないＵＳＢデバイスに対しては外部入力によりマージンを加える方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
どのデバイスが規格値のディレイで動作しないのかを網羅できれば、特定のＵＳＢデバイスに対して上記ディレイに更にマージンを加えればよい。しかしながら、この手法はすべてのＵＳＢデバイスに対して個々のデバイス動作を予め知っておく必要があり、非現実的である。そのため、どんなＵＳＢデバイスでも応答させるためには、すべてのＵＳＢデバイスに対しても対応可能なマージンを加えた値のディレイを使用する必要がある。しかし、これでは規格値のディレイを適応させた場合よりデバイス認識完了までの時間が長くなってしまい、結果として全般的に起動時間が遅くなるという影響を与えてしまう。
【０００５】
たとえば、特許文献１では、規格値のディレイでは動作しないＵＳＢデバイスに対してはマージンを加算するが、これは「どのデバイスが規格値のディレイで動作しないのかを全ＵＳＢデバイスに対して網羅できている」という前提の元に成り立っている。この前提が崩れると、ユーザに外部入力を用いてマージンを加えてもらう手間及び初回接続時にはデバイスの認識を失敗するという問題が発生する。
【０００６】
また、ユーザはディレイに対する知識はないため、デバイスの認識失敗後に初めて外部入力によりマージンを加える作業を実施すると想定される。また、デバイスの認識失敗の要因はディレイ不足だけではないためユーザが要因は何かに関する誤解を招きかねない。
【０００７】
更に、上記ＵＳＢデバイス認識のための制御時間（応答時間）の他にも、特定のＵＳＢデバイスに対して特殊制御方法を適用したい場合がある。
【０００８】
上記課題に鑑み、本発明の目的とするところは、ＵＳＢバスに応じて登録される特殊制御方法に基づきＵＳＢデバイスに特殊制御を実行することが可能なコントローラ、電子機器及びＵＳＢデバイスの制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある観点によれば、ＵＳＢ（Universal Serial Bus）を介してＵＳＢデバイスと通信するためのコントローラであって、
前記ＵＳＢを介してＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報と、該ＵＳＢハブに接続されるＵＳＢデバイスを特殊制御するための特殊制御方法とを関連付けて登録する登録部と、
前記登録された情報に基づき、ＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報に対応する前記特殊制御方法を特定する処理部と、
前記処理部により特定された前記特殊制御方法に基づき、前記ＵＳＢハブに接続されるＵＳＢデバイスの制御を実行する前記ＵＳＢハブと、
を備えることを特徴とするコントローラが提供される。
【発明の効果】
【００１０】
本発明によれば、ＵＳＢバスに応じて登録される特殊制御方法に基づきＵＳＢデバイスに特殊制御を実行することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態に係るコントローラを含む電子機器の構成図。
【図２】一実施形態に係る登録リスト例（一のホストコントローラを有する場合）。
【図３】一実施形態に係る登録リスト例（複数のホストコントローラを有する場合）。
【図４】一実施形態に係る特殊制御処理を示したフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明の好適な実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【００１３】
＜はじめに＞
近年、ＵＳＢが高速シリアルインターフェースとして脚光を浴びている。ＵＳＢでは、ＵＳＢホストコントローラとＵＳＢデバイスとの間で信号又はデータの送受信が行われる。
【００１４】
ＵＳＢ規格においては、ＵＳＢホストコントローラ側がＵＳＢデバイスの接続状況を認識するために、ＵＳＢホストコントローラは、定常的又は周期的に信号又はデータをＵＳＢに出力し又は出力を継続する時間、若しくは或る信号又はデータをＵＳＢに出力してから次の信号又はデータをＵＳＢに出力するまでの種々の時間が規定されている。
【００１５】
しかしながら、現実には、ＵＳＢホストコントローラがＵＳＢ規格に規定されている時間に従って信号又はデータをＵＳＢデバイスに出力しても、ＵＳＢデバイスを認識することができない場合がある。
【００１６】
そこで、以下に説明する本発明の一実施形態に係るＵＳＢホストコントローラでは、ＵＳＢハブのポート毎にＵＳＢハブに接続されるＵＳＢデバイスを特殊制御するための特殊制御方法を設定可能である。
【００１７】
特殊制御方法としては、ＵＳＢデバイス１０の認識処理時に必要なディレイに対するマージン加算の有無を設定したり、ポートを検索する際の優先順位を設定したり、電力供給の有無を設定したりすることが挙げられる。これにより、ＵＳＢデバイスを接続する際の処理中、ＵＳＢデバイスからの応答に必要なディレイが短すぎて、ＵＳＢデバイスを認識できないＵＳＢデバイスに対してのみマージンを加算して認識させる特殊制御や、ポート検索の効率化を図るための特殊制御や、無駄な電力供給を回避するための特殊制御を実行することができる。この結果、本実施形態に係るＵＳＢホストコントローラの制御では、ＵＳＢデバイス認識の安定性、起動時間及びデバイス認識処理の高速化、省エネルギー化等の効果を得ることができる。以下、本実施形態に係るＵＳＢホストコントローラの構成及び動作について説明する。
【００１８】
［システムの全体構成］
まず、本実施形態に係るＵＳＢホストコントローラを含む電子機器について、図１を参照しながら説明する。図１は、本実施形態に係るＵＳＢホストコントローラを含む電子機器の構成の一例を示した図である。
【００１９】
電子機器２０は、メインＣＰＵ３０とＵＳＢホストコントローラ４０とを含む。ＵＳＢホストコントローラ４０は、ＵＳＢハブ８０と、転送コントローラ１００と、処理部１２０と、レジスタ１３０（登録部に相当）と、ＤＭＡ処理部１４０とを含む。ＵＳＢホストコントローラ４０は、ＵＳＢを介してＵＳＢデバイスと通信するためのコントローラに相当する。ＵＳＢホストコントローラ４０は、半導体集積回路として実現してもよい。
【００２０】
本実施形態の電子機器２０としては、ビデオカメラ、デジタルカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、光ディスクドライブ装置、ハードディスクドライブ装置、オーディオ機器、携帯電話機、携帯型ゲーム機、電子手帳、電子辞書又は携帯型情報端末等の種々のものが考えられる。
【００２１】
メインＣＰＵ３０は、電子機器２０の全体的な処理、制御を行う。例えば電子機器２０がビデオカメラである場合には、メインＣＰＵ３０はカメラプロセッサとして機能し、撮像デバイスの制御や画像のエフェクト処理や画像の圧縮処理などを行う。
【００２２】
レジスタ１３０は、メインＣＰＵ３０のアドレス空間（メモリ空間、Ｉ／Ｏ空間等）にマッピングされており、レジスタ１３０には、ＣＰＵバスを介してメインＣＰＵ３０が発行したコマンドが書き込まれる。ＵＳＢハブ８０、転送コントローラ１００、処理部１２０、ＤＭＡ処理部１４０は、レジスタ１３０に書き込まれたコマンドに基づいて動作する。またレジスタ１３０にはＵＳＢハブ８０、転送コントローラ１００、処理部１２０、ＤＭＡ処理部１４０等の動作ステータスが書き込まれ、メインＣＰＵ３０はレジスタ１３０に書き込まれた動作ステータスを読み出すことができる。
【００２３】
ＵＳＢハブ８０は、ＵＳＢを介してデータ転送（高速シリアル転送）を行うためのインタフェースである。ＵＳＢハブ８０には、ＵＳＢを介してＵＳＢデバイス１０が接続されている。ＵＳＢハブ８０は、ＵＳＢ（シリアルバス）を介してデータの受信や送信を行う物理層回路を含み、ＵＳＢデバイス１０との間のデータ転送を行う。ＵＳＢデバイス１０の一例としては、図１に示したＵＳＢメモリ１０ａ、ＳＤカードリーダ１０ｂ、操作部１０ｃ等が挙げられる。
【００２４】
ＤＭＡ処理部１４０は、ＣＰＵバスに接続されており、ＵＳＢデバイス１０に送信されるデータをＣＰＵバスから受け取って転送コントローラ１００にＤＭＡ転送したり、ＵＳＢデバイス１０から受信されたデータを転送コントローラ１００からＣＰＵバスにＤＭＡ転送したりする。
【００２５】
転送コントローラ１００は、ＵＳＢハブ８０、ＤＭＡ処理部１４０の間でのデータ転送を制御する。これにより、ＣＰＵバスから転送されてきたデータをＵＳＢデバイス１０に書き込んだり、ＵＳＢデバイス１０に書き込まれたデータをＣＰＵバスに転送したりすることが可能になる。
【００２６】
転送コントローラ１００はデータバッファ１０２（例えばＦＩＦＯ）を含む。データバッファ１０２は、転送コントローラ１００により転送されるデータを一時的に格納するためのバッファである。このデータバッファ１０２は、ＲＡＭなどのメモリにより実現できる。
【００２７】
処理部１２０は、ＵＳＢホストコントローラ４０の全体的な処理、制御を行う。処理部１２０の機能の一部又は全部は、例えばＣＰＵとＣＰＵ上で動作するファームウェアにより実現することができる。なお、処理部１２０を専用のハードウェア回路により実現することもできる。
【００２８】
本実施形態においては、処理部１２０は、ＣＰＵ１２１と、ＲＡＭ１２２と、ＲＯＭ１２３を含む。ＲＯＭ１２３には、ＯＳ（オペレーティングシステム）や各種プログラムが記憶されている。なお、ＲＯＭ１２３は、ＥＥＰＲＯＭ等であっても良い。
【００２９】
なお、処理部１２０をＵＳＢホストコントローラ４０に内蔵させず、メインＣＰＵ３０との間のインタフェース処理を行うＣＰＵＩ／Ｆを設けるようにしてもよい。この場合には、ＵＳＢホストコントローラ４０やＵＳＢホストコントローラ４０が含む各回路ブロックの制御は、ＣＰＵＩ／Ｆを介してメインＣＰＵ３０が行うことになる。
【００３０】
また、処理部１２０を動作させるためのプログラムは、メインＣＰＵ３０側のメモリ（ＥＥＰＲＯＭ等）に記憶しておき、電源投入後にメインＣＰＵ３０がダウンロードコマンドを発行し、ＣＰＵバスを介してＵＳＢホストコントローラ４０にダウンロードするようにしてもよい。
【００３１】
ＣＰＵ１２１は、ＲＡＭ１２２を作業領域として利用しながら、ＲＯＭ１２３に記憶されているプログラムを実行する。
【００３２】
登録部は、ＵＳＢを介してＵＳＢデバイスが接続されるＵＳＢハブのトポロジ情報と、そのＵＳＢハブに接続されるＵＳＢデバイスを特殊制御するための特殊制御方法とを関連付けてレジスタ１３０、又はその他の記憶領域に登録する。その他の記憶領域は、電子機器２０に内蔵されたメモリ空間を利用しても良いし、クラウドコンピューティング上のメモリ空間を利用しても良い。
【００３３】
本実施形態における登録部により登録される特殊制御方法の一例としては、ＵＳＢデバイス１０の認識に必要なディレイに対するマージン加算の有無を設定すること、つまり、ＵＳＢハブに接続されるＵＳＢデバイスの応答のための制御時間であってＵＳＢ規格に定められたデフォルト値以外の制御時間を設定することが挙げられる。かかる特殊制御方法の設定により、ＵＳＢデバイス１０の認識の際に、ＵＳＢ規格に定められたデフォルト値以外の制御時間を使用した特殊制御を行うことができる。
【００３４】
また、特殊制御方法の他の例としては、ポート検索の検索方向を設定する、つまり、ＵＳＢハブの複数のポートを検索する際の優先順位を設定することが挙げられる。かかる特殊制御方法の設定により、優先順位に従いＵＳＢハブのポートを検索する特殊制御を行うことができる。
【００３５】
また、特殊制御方法の他の例としては、セット・ポート・フューチャー（Ｓｅｔ  Ｐｏｒｔ  Ｆｅａｔｕｒｅ）を実施しなくするフラグの設定が挙げられる。セット・ポート・フューチャーとは、ＵＳＢ規格で定められたＵＳＢハブに対するリクエストの一種でポートの状態を変化させるリクエストである。セット・ポート・フューチャーを実施しなくするフラグを設定した場合、そのＵＳＢハブに接続されたポートの状態を変化させないという特殊制御を行うことができる。
【００３６】
また、特殊制御方法の他の例としては、ＵＳＢハブの特定のポートを検索の対象外とする情報を設定することが挙げられる。かかる特殊制御方法の設定により、ＵＳＢハブの特定のポートを検索しないという特殊制御を行うことができる。
【００３７】
また、特殊制御方法の他の例としては、デバイスが接続される可能性がないポートに対してはポートパワー（ＰＯＲＴ＿ＰＯＷＥＲ）を実施しなくするフラグの設定が挙げられる。ポートパワー（ＰＯＲＴ＿ＰＯＷＥＲ）は、ポートに対して電源供給を開始するためのリクエストである。ポートパワーを実施しなくするフラグを設定した場合、そのポートに対して電源供給を開始しないという特殊制御を行うことができ、省エネルギー化を図ることができる。
【００３８】
なお、一般に、セット・ポート・フューチャーはＵＳＢハブの初期化処理時に使用される。セット・ポート・フューチャーについては、ＵＳＢ２．０仕様書（Ｐ４３５〜）に記載された事項に基づき定義される。
【００３９】
また、電子機器２０及びＵＳＢホストコントローラ４０は図１に示した構成に限定されず、その構成要素の一部を省略したり、構成要素間の接続形態を変更したり、図１とは異なる構成要素を追加する変形実施が可能である。
【００４０】
例えばＵＳＢホストコントローラ４０において転送コントローラ１００や処理部１２０やＤＭＡ処理部１４０等の構成を省く変形実施も可能である。また電子機器２０において、図１に示した要素以外の構成要素（例えば操作部、表示部、ＲＯＭ、ＲＡＭ、撮像部又は電源等）を追加してもよい。
【００４１】
［リスト情報］
ＵＳＢホストコントローラ４０は、ＵＳＢデバイス１０を認識する際、予めＵＳＢハブ８０毎に以下の（１）〜（４）の４つの情報を設定することが可能である。そして、ＵＳＢホストコントローラ４０は、下記４つの情報に基づく特殊制御を自動で実行することが可能である。
（１）ＵＳＢハブのトポロジ情報
（２）ＵＳＢホストコントローラ名
（３）ＵＳＢハブの認識処理時の特殊制御方法
（４）ポート毎の特殊制御方法
図２は、一のＵＳＢホストコントローラ４０を有する場合のリスト例である。通常、ＵＳＢホストコントローラ４０には、ルートハブと呼ばれる特別なハブが内蔵されている。図２の例では、一のＵＳＢホストコントローラ４０（ｈｃ＿ｎａｍｅ"ｅｈｃｉ０"）に、ルートハブのようにデフォルトでＵＳＢハブ８０（ｕｈｕｂ０）が接続されている。ＵＳＢデバイス１０は、このＵＳＢハブ８０（ｕｈｕｂ０）のポート、又はＵＳＢハブ８０（ｕｈｕｂ０）に接続された他のＵＳＢハブのポートに接続される。本例では、ＵＳＢハブ８０（ｕｈｕｂ０）のポート１にＵＳＢハブ８０ａ（ｕｈｕｂ１）が接続され、ＵＳＢハブ８０ａ（ｕｈｕｂ１）のポート５にＵＳＢハブ８０ｂ（ｕｈｕｂ２）が接続されている。複数のＵＳＢデバイス１０は、このＵＳＢハブ８０ｂ（ｕｈｕｂ２）の各ポートに接続されている。具体的には、図２では、ＵＳＢメモリ１０ａがポート２に接続され、ＳＤカードリーダ１０ｂがポート４に接続され、操作部１０ｃがポート１に接続されている。図２では操作部１０ｃ、図３ではＮＡＮＤが起動時に必要なＵＳＢデバイスとして取り扱われる。
【００４２】
本実施形態では、ＵＳＢホストコントローラ４０が、ＵＳＢハブに設定された特殊制御方法に基づき、ＵＳＢデバイスを自動制御する。その際、ＵＳＢハブに対して以下の４項目の設定を必要とする。設定された４項目は、ＵＳＢデバイス１０の認識処理時にデバイスドライバであるＵＳＢホストコントローラ４０にて参照可能な場所にて記録しておく。
（１）ＵＳＢハブのトポロジ情報として「トポロジ情報porttier(own_porttier)」を記録する。
（２）ＵＳＢホストコントローラ名として「接続ホストコントローラ名(hc_name)」を記録する。
（３）ＵＳＢハブの特殊制御方法として「ＵＳＢハブ特殊制御(hub_quirk)」を記録する。
（４）ポート毎の特殊制御方法として「ポート毎の特殊制御(port_quirk)」を記録する。
【００４３】
各項目の詳細について以下に説明する。
（１）ＵＳＢハブのトポロジ情報porttier(own_porttier)
ＵＳＢハブ自身がトポロジ上でどこに接続されているかを一意に表すために「トポロジ情報porttier」という概念を使用する。「トポロジ情報porttier」は２０ｂｉｔの値を持つ。最下位の桁はルートハブのどのポートに接続されているデバイスなのかを表す。以降、階層のdepth（深さ）が１増えるごとに左にシフトして該当ポートのポート番号が設定されていく。階層のdepth（深さ）は、ＵＳＢハブ８０（ｕｈｕｂ０）に対して、ＵＳＢハブ８０ａ（ｕｈｕｂ１）、ＵＳＢハブ８０ｂ（ｕｈｕｂ２）と１つずつ深くなる。「トポロジ情報porttier」の最大値が２０ｂｉｔである理由は、ＵＳＢ仕様上ルートハブ（ここではＵＳＢハブ８０（ｕｈｕｂ０））を除いてＵＳＢハブは５段までしか接続できないためである。
（２）接続ホストコントローラ名(hc_name)
図３の複数のホストコントローラが存在している場合、トポロジ情報porttierのみでは一意のポートを指定することはできない。例えば、トポロジ情報porttierが「0x00000」であっても、ホストコントローラ名が設定されていないと、ohci0、ohci1、ehci0のどのポートに接続されているかまでは特定できない。そこで、各ホストコントローラを識別するためにホストコントローラ名を設定する必要がある。
【００４４】
図３では、複数のＵＳＢホストコントローラ４０ａ、４０ｂ、４０ｃに対して接続ホストコントローラ名hc_name「ohci0」、「ohci1」、「ehci0」が付けられているので、トポロジ情報porttierと接続ホストコントローラ名hc_nameにより一意のポートを指定することができる。すなわち、トポロジ情報porttierと接続ホストコントローラ名hc_nameを指定することにより、各ＵＳＢハブのポート毎の特殊制御方法をリスト化することができる。図３では、ＵＳＢハブとしてルートハブが一つだけ存在する。よって、トポロジ情報porttierはすべて同じであり、同一ルートハブに接続されたホストコントローラ毎に「0x00000、"ohci0"」に対する特殊制御方法、「0x00000、"ohci1"」に対する特殊制御方法、「0x00000、"ehci0"」に対する特殊制御方法がそれぞれリスト化される。
【００４５】
なお、図２では、ＵＳＢホストコントローラ４０は一つであるため、接続ホストコントローラ名hc_nameはすべて同じ「ehci0」であり、同一ホストコントローラに接続されたＵＳＢハブ毎に「0x00000、"ehci0"」に対する特殊制御方法、「0x00001、"ehci0"」に対する特殊制御方法、「0x00051、"ehci0"」に対する特殊制御方法がそれぞれリスト化される。もちろん、図２と図３とを組み合わせた構成であってもリスト化は可能である。
（３）ＵＳＢハブの特殊制御方法(hub_quirk)
ＵＳＢハブの特殊制御方法を「hub_quirk」に指定する。例えば、ＵＳＢハブの特殊制御方法として、ポート番号の小さいポートから検索をするか、大きいポートから検索をするかを決めるフラグを設定する。
【００４６】
図２、３の例では、デフォルト値「０」に設定されている場合にはポート番号の小さい方から検索をする。一方、UHQ_HUB_CHECK_REVERSEが設定されている場合にはポート番号の大きい方から検索をする。ポート検索方向を指定することで起動時に必要となるデバイスを優先的に認識させ高速化を実現することができる、また、ＵＳＢハブの特殊制御方法「hub_quirk」のその他の指定方法としては、ポート番号を優先したい順に指定することや、ＵＳＢハブの特定のポートを検索の対象外とする指定方法も考えられる。
【００４７】
なお、ＵＳＢハブ８０ａ（ｕｈｕｂ１）では、ポート番号の大きい方から検索するようにUHQ_HUB_CHECK_REVERSEのフラグが設定されている。ＵＳＢハブ８０（ｕｈｕｂ０）及びＵＳＢハブ８０ｂ（ｕｈｕｂ２）はデフォルト値であるため、ポート番号の小さい方から検索する。
（４）ポートの特殊制御方法(port_quirk)
ポートの特殊制御方法を「port_quirk」に指定する。例えば、ポートの特殊制御方法として、各ポートに接続されるデバイスのディレイに関するフラグを設定する。フラグの例として、UHQ_PORT_NPSとUHQ_PORT_NMを挙げて以下に説明するが、フラグはこれに限られない。例えば、ポートの特殊制御方法には、下記ＵＳＢデバイスの制御時間（応答時間）のためのフラグの他にも、ＵＳＢデバイスが接続される可能性がないポートに対しては無駄な電力供給を避けるためにポートへの電力供給を停止するフラグを設定すること等が挙げられる。
【００４８】
各ポートに接続されるデバイスのディレイに関するフラグとして、UHQ_PORT_NPSを設定した場合、セット・ポート・フューチャー（Ｓｅｔ  Ｐｏｒｔ  Ｆｅａｔｕｒｅ（ＰＯＲＴ＿ＰＯＷＥＲ）後のディレイを省略することが可能である。これは、セルフパワーデバイスやデバイスが接続される可能性の無いポート用のフラグである（図４参照）。
【００４９】
UHQ_PORT_NMを設定した場合、そのＵＳＢハブの全てのポートに対してのディレイにはマージンを加算しない。例えばセットアドレス（SetAddress）後のディレイのみマージンを加算したいといった場合などもポートの特殊制御方法（port_quirk）に新たにフラグを設ければ、少ない修正でポートの特殊制御方法が実現可能となるため、より本実施形態に係る特殊制御の拡張性が高くなる。
【００５０】
［特殊制御処理］
次に、本実施形態に係るＵＳＢホストコントローラ４０による特殊制御について、図４を参照しながら説明する。図４は、本実施形態に係る特殊制御処理を示したフローチャートである。
【００５１】
例えば、図４のリストＡ，Ｂに示したように、上記（１）〜（４）の情報をもつ構造体を一組の要素とした構造体の配列リストで管理する場合、まず、ステップＳ１０にて、ＵＳＢホストコントローラ４０は、所定の記憶領域に記憶されたリスト群を検索する。ＵＳＢホストコントローラ４０は、デバイス認識処理中に親ＵＳＢハブの（１）ＵＳＢハブのトポロジ情報及び（２）ＵＳＢホストコントローラ名が、どの配列リストに該当するかをリスト群から検索し、特定する。図４では、ステップＳ１０にて、親ＵＳＢハブの（１）ＵＳＢハブのトポロジ情報及び（２）ＵＳＢホストコントローラ名と一致したリストＢが特定された場合を示す。
【００５２】
次に、ステップＳ１２にて、ＵＳＢホストコントローラ４０は、セット・ポート・フューチャー（Ｓｅｔ  Ｐｏｒｔ  Ｆｅａｔｕｒｅ（ＰＯＲＴ＿ＰＯＷＥＲ））をＵＳＢハブに対してリクエストする。このリクエストに応じてＵＳＢハブは、各ポートの状態を変化させる。ＵＳＢハブは、ポートパワー（ＰＯＲＴ＿ＰＯＷＥＲ）に応じてポートに対して電源供給を開始する。ただし、配列リストにセット・ポート・フューチャーやポートパワーを実施しなくするフラグが設定されている場合には、そのポートに対してポート・フューチャーやポートパワーは実行しない。
【００５３】
次に、ステップＳ１４にて、ＵＳＢホストコントローラ４０は、（３）ＵＳＢハブの認識処理時の特殊制御方法として「ＵＳＢハブ特殊制御(hub_quirk)」が存在し、各ポートに接続されるデバイスのディレイに関するフラグとして、（４）ポートの特殊制御方法（port_quirk)にUHQ_PORT_NPSが設定されているかを判定する。
【００５４】
ＵＳＢハブ特殊制御(hub_quirk)が存在し、UHQ_PORT_NPSが設定されていると判定された場合、ＵＳＢホストコントローラ４０は、セット・ポート・フューチャー後のディレイを省略し、直ちにステップＳ１８に進み、全ポートに対してセット・ポート・フューチャー（ポートパワー）を完了したかを判定する。ＵＳＢホストコントローラ４０は、完了したと判定されるまで、ステップＳ１２に戻り、ステップＳ１２〜Ｓ１８の処理をポート毎に繰り返す。
【００５５】
一方、UHQ_PORT_NPSが設定されていないと判定された場合、ステップＳ１６に進み、セット・ポート・フューチャー後、所定の制御時間だけディレイさせ、ＵＳＢデバイス１０からの応答を待った後、ステップＳ１８に進み、全ポートに対してセット・ポート・フューチャー（ポートパワー）を完了したかを判定する。ＵＳＢホストコントローラ４０は、全ポートに対して処理を完了したと判定するまで、ステップＳ１２に戻り、ステップＳ１２〜Ｓ１８の処理をポート毎に繰り返す。
【００５６】
以上に説明したように、本実施形態に係るＵＳＢホストコントローラ４０による制御では、（３）ＵＳＢハブの特殊制御方法(hub_quirk)、及び（４）ポートの特殊制御方法(port_quirk)に応じて、（１）ＵＳＢハブのトポロジ情報及び（２）ＵＳＢホストコントローラ名にて特定されるＵＳＢハブの該当ポートに対して特殊制御を実行する。これにより、該当ポートに接続されたＵＳＢデバイス１０に対する特殊制御が可能となる。
【００５７】
なお、外部接続のＵＳＢハブのように上記特殊制御のための項目が未設定のものに関しては、本実施形態に係る特殊制御処理の上記検索（図４のステップＳ１０）によりヒットされず、特殊制御の対象に特定されないため全てデフォルト値に基づき処理される。
【００５８】
以上に説明したように、本実施形態に係るＵＳＢホストコントローラ４０によれば、ＵＳＢデバイス１０が接続されるＵＳＢハブのポート単位でＵＳＢデバイスの特殊制御を行うことができる。これにより、ＵＳＢデバイス１０を認識できない問題を防止したり、ＵＳＢデバイス１０の接続されるＵＳＢハブのポート単位での特殊制御を行うことによる起動時間やデバイス認識完了までの時間の高速化を図ることができる。
【００５９】
なお、ＵＳＢハブ単位で特殊制御を行うことも可能である。
【００６０】
以上、添付図面を参照しながら本発明のコントローラ、該コントローラを含む電子機器及びＵＳＢデバイスの制御方法に係る好適な実施形態について詳細に説明したが、本発明のコントローラ、該コントローラを含む電子機器及びＵＳＢデバイスの制御方法の技術的範囲はかかる例に限定されない。本発明のコントローラ、該コントローラを含む電子機器及びＵＳＢデバイスの制御方法の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明のコントローラ、該コントローラを含む電子機器及びＵＳＢデバイスの制御方法の技術的範囲に属する。
【符号の説明】
【００６１】
１０…ＵＳＢデバイス、１０ａ…ＵＳＢメモリ、１０ｂ…ＳＤカードリーダ、１０ｃ…層サブ、２０…電子機器、３０…メインＣＰＵ、４０…ＵＳＢホストコントローラ、８０…ＵＳＢハブ、１００…転送コントローラ、１２０…処理部、１３０…レジスタ（登録部）、１４０…ＤＭＡ処理部
【先行技術文献】
【特許文献】
【００６２】
【特許文献１】特開２００９−０４８４４４号公報
【図１】
2014006726.tif 000003
【図２】
2014006726.tif 000004
【図３】
2014006726.tif 000005
【図４】
2014006726.tif 000006