(57)【要約】  ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態において、コンピューティングシステムは、Ｉ２Ｃ上でＨＩＤを介して当該コンピューティングシステムを周辺装置にインタフェースする、例えば組み込みデバイスなどに関する、装置ソフトウェアを実装するヒューマンインタフェース装置（ＨＩＤ）ソフトウェアスタックを含む。ＨＩＤ  Ｉ２Ｃドライバが、ＨＩＤソフトウェアスタックを、Ｉ２Ｃデータバスを介して当該コンピューティングシステム内でデータを通信する装置へのＨＩＤ  Ｉ２Ｃインタフェースを各々が含む複数の周辺装置にインタフェース接続する。ＨＩＤ  Ｉ２Ｃドライバは、それらの装置のＩ２Ｃコントローラドライバ及びＧＰＩＯコントローラドライバと互換性を有し、且つそれらとインタフェースをとる。それらのＩ２Ｃコントローラドライバ及びＧＰＩＯコントローラドライバは各々、異なる実装構成を有し得る。
2015507806.tif 000002
【特許請求の範囲】
【請求項１】
装置ソフトウェア実装に関して構成されたヒューマンインタフェース装置（ＨＩＤ）ソフトウェアスタックと、
前記ＨＩＤソフトウェアスタックと１つ以上の周辺装置とのインタフェースをとるように構成されたＨＩＤ  Ｉ２Ｃドライバであり、前記１つ以上の周辺装置は各々、Ｉ２Ｃデータバスを介して当該コンピューティングシステム内でデータ通信するように構成された装置へのＨＩＤ  Ｉ２Ｃインタフェースを含む、ＨＩＤ  Ｉ２Ｃドライバと、
を有するコンピューティングシステム。
【請求項２】
前記ＨＩＤ  Ｉ２Ｃドライバは、前記装置の１つ以上のＩ２Ｃコントローラドライバと互換性を有するように構成され、前記１つ以上のＩ２Ｃコントローラドライバは各々、異なるＩ２Ｃコントローラハードウェアをサポートする異なる実装構成を有する、請求項１に記載のコンピューティングシステム。
【請求項３】
前記ＨＩＤ  Ｉ２Ｃドライバは、カーネルモード電力最適化のためカーネルモード・ツー・ユーザモードトランザクションを削減するように構成される、請求項１に記載のコンピューティングシステム。
【請求項４】
前記ＨＩＤ  Ｉ２Ｃドライバは、当該ＨＩＤ  Ｉ２ＣドライバがＩ２Ｃ装置上のアドレスの暗黙データ読み出しを前記Ｉ２Ｃ装置への先行Ｉ２Ｃ書き込みトランザクションなしで実行するように、高速読み出しトランザクションに関して構成される、請求項１に記載のコンピューティングシステム。
【請求項５】
前記ＨＩＤ  Ｉ２Ｃドライバは、当該ＨＩＤ  Ｉ２Ｃドライバがトランザクションごとの先行データ書き込みのない各データ読み出しに関して前記Ｉ２Ｃデータバス上の同じアドレスから暗黙的にデータ読み出しを行うように、単一トランザクションデータ読み出しに関して構成される、請求項１に記載のコンピューティングシステム。
【請求項６】
前記ＨＩＤ  Ｉ２Ｃドライバは、当該ＨＩＤ  Ｉ２Ｃドライバが割り込みによって開始されるときに装置データを読み出し、ソフトウェアに該割り込みの処理をアンロードして素早く該割り込みの優先順位を下げるように、パッシブ割り込み処理に関して構成される、請求項１に記載のコンピューティングシステム。
【請求項７】
前記ＨＩＤ  Ｉ２Ｃドライバは、当該ＨＩＤ  Ｉ２Ｃドライバが割り込みによって開始されるときに装置データを読み出し、このデータ読み出しが黙示的にこの装置割り込みに肯定応答するように、パッシブ割り込みアクナリッジメントに関して構成される、請求項１に記載のコンピューティングシステム。
【請求項８】
前記ＨＩＤ  Ｉ２Ｃドライバは、当該コンピューティングシステムがより低い電力状態に入る、又は装置ファームウェアが装置レベルのアクティビティを検出しない、のうちの一方のときに、低電力状態へと装置をアイドリングさせることを開始するように構成される、請求項１に記載のコンピューティングシステム。
【請求項９】
前記ＨＩＤ  Ｉ２Ｃドライバは、割り込みと装置ウェイクイベントとに共有あるいは唯一の入力接続を使用するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１０】
前記ＨＩＤ  Ｉ２Ｃドライバは、前記Ｉ２Ｃデータバス上で検出されたエラー状態のエラー訂正及びエラー処理に関して構成される、請求項１に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ヒューマンインタフェース装置のＩ２Ｃデータバスのホスト側実装に関する。
【背景技術】
【０００２】
例えば携帯電話、メディアプレーヤ、及びタブレットコンピュータなどの消費者装置は、典型的に、例えばインター−インテグレイテッドサーキット（Ｉ２Ｃ  ２線式インタフェースバス）及び／又はシリアルペリフェラルインタフェース（ＳＰＩ）バスなどのシンプルペリフェラルバス（ＳＰＢ）上で内部接続される装置用プラットフォームを可能にしている。しかしながら、これらのシンプルペリフェラルバスは、例えばタッチスクリーンディスプレイ、キーボード、マウス入力装置、センサ、加速度計、及び装置のその他のヒューマンインタフェース装置（ＨＩＤ）クラスなどの、内部装置、外部装置及び／又は組み込みデバイスを動作させるための定められた規格を有していない。シンプルペリフェラルバス上で通信を行うための標準プロトコルがこれらのクラスの装置には存在していないため、これらの装置の製造者は一般に、これらの装置用の専用ドライバを提供している。消費者システムは、幾つかの異なるサードパーティ製造者及びハードウェア業者からの複数の内部接続された装置を含むことがあり、それらに対応するドライバは相異なるインタフェースを有する。これにより、システムインテグレーションの課題がもたらされ、システム品質上の欠陥及び安定性の懸念がもたらされ、且つ／或いは統合されたシステムドライバ更新及びドライバ検証を実行する能力が制限されてしまい得る。消費者システムは、複数の異なる専用ベンダドライバを含むことがあり、それらの多くはカーネルドライバとなり、典型的に、システム・オン・チップ（ＳｏＣ）Ｉ２Ｃチップドライバでロゴ及び検証に合格しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
この概要は、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の概念を簡略化して紹介するものであり、この概念は、以下の詳細な説明にて更に説明され、且つ／或いは図面に示される。この概要は、特許請求に係る事項の本質的な特徴を記述していると見なされるべきでなく、また、特許請求に係る事項の範囲を決定あるいは限定するために使用されるべきでない。
【０００４】
実施形態により、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装を提供する。
【課題を解決するための手段】
【０００５】
ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態が記載される。実施形態において、コンピューティングシステムは、Ｉ２Ｃ上でＨＩＤを介して当該コンピューティングシステムを周辺装置にインタフェースする、例えば組み込みデバイスなどに関する、装置ソフトウェアを実装するヒューマンインタフェース装置（ＨＩＤ）ソフトウェアスタックを含む。ＨＩＤ  Ｉ２Ｃドライバが、ＨＩＤソフトウェアスタックを、Ｉ２Ｃデータバスを介して当該コンピューティングシステム内でデータを通信する装置へのＨＩＤ  Ｉ２Ｃインタフェースを各々が含む複数の周辺装置にインタフェース接続する。ＨＩＤ  Ｉ２Ｃドライバは、それらの装置のＩ２Ｃコントローラドライバ及び必要に応じてのＧＰＩＯコントローラドライバと互換性を有し、且つそれらとインタフェースをとる。それらのＩ２Ｃコントローラドライバ及びＧＰＩＯコントローラドライバは各々、異なるＩ２Ｃコントローラハードウェアをサポートする異なる実装構成を有し得る。
【０００６】
他の実施形態において、ＨＩＤ  Ｉ２Ｃドライバは、コンピューティングシステムのオペレーティングシステムにおける性能及び電力の最適化のため、カーネルモード・ツー・ユーザモードトランザクションを削減する。ＨＩＤ  Ｉ２Ｃドライバは、当該ＨＩＤ  Ｉ２ＣドライバがＩ２Ｃ装置上のアドレスの暗黙データ読み出しを該Ｉ２Ｃ装置への先行Ｉ２Ｃ書き込みトランザクションなしで実行するように、高速読み出しトランザクションに関して実装されることができる。ＨＩＤ  Ｉ２Ｃドライバはまた、当該ＨＩＤ  Ｉ２Ｃドライバがトランザクションごとの先行データ書き込みのない各データ読み出しに関してＩ２Ｃデータバス上の同じアドレスから暗黙的にデータ読み出しを行うように、単一トランザクションデータ読み出しに関して実装されることができる。
【０００７】
他の実施形態において、ＨＩＤ  Ｉ２Ｃドライバは、当該ＨＩＤ  Ｉ２Ｃドライバが割り込みによって開始されるときに装置データを読み出し、ソフトウェアに該割り込みの処理をアンロードして素早く該割り込みの優先順位を下げるように、パッシブ割り込み処理を実装する。これは、オペレーティングシステムが、この特定の装置によって遅延されることなく、他の装置からの高い優先度の要求を処理し続けることを可能にする。ＨＩＤ  Ｉ２Ｃドライバはまた、当該ＨＩＤ  Ｉ２Ｃドライバが割り込みによって開始されるときに装置データを読み出し、このデータ読み出しが黙示的にこの装置割り込みに肯定応答するように、パッシブ割り込みアクナリッジメントを実装する。ＨＩＤ  Ｉ２Ｃドライバはまた、コンピューティングシステムがより低い電力状態に入るとき、及び／又は装置ファームウェアが装置レベルのアクティビティを検出しないとき、低電力状態へと装置をアイドリングさせることを開始し得る。さらに、ＨＩＤ  Ｉ２Ｃドライバは、ピン数の最適化のため、割り込みと装置ウェイクイベントとに共有あるいは唯一の入力接続を使用するように実装される。ＨＩＤ  Ｉ２Ｃドライバはまた、Ｉ２Ｃデータバス上で検出されたエラー状態のエラー訂正及びスマートエラー処理を実装する。
【図面の簡単な説明】
【０００８】
以下の図を参照して、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を説明する。図面中に示される同様の機構及びコンポーネントを参照するために、同じ参照符号を全体を通して使用することがある。
【図１】ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態が実装され得るシステム例を示す図である。
【図２】ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態が実装され得る実装例にて上記システム例を更に示す図である。
【図３】ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態が実装され得るシステム・オン・チップ（ＳｏＣ）例を示す図である。
【図４】１つ以上の実施形態に従ったＨＩＤ  Ｉ２Ｃデータバスのホスト側実装に係る方法例を示す図である。
【図５】ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を実装することが可能な装置例の様々なコンポーネントを示す図である。
【発明を実施するための形態】
【０００９】
Ｉ２Ｃ仕様上の標準化されたＨＩＤを提供するものであるＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を説明する。ＨＩＤ  Ｉ２Ｃドライバは、Ｉ２Ｃ仕様上でＨＩＤを実装し、シンプルペリフェラルバス（ＳＰＢ）クラス拡張をコンピューティングシステム内のヒューマンインタフェース装置（ＨＩＤ）ソフトウェアスタックと接続する。ＨＩＤ  Ｉ２Ｃドライバは、既存のＨＩＤスタックとＩ２Ｃスタックとの間のインタフェースをとるクラスドライバである。コンピューティングシステムのホスト側は、ＨＩＤ  Ｉ２Ｃドライバと、コンピューティング装置のオペレーティングシステムプラットフォーム内に実装されたＨＩＤ  Ｉ２Ｃドライバと相互に関連するＨＩＤソフトウェアスタックとを含む。ＨＩＤ  Ｉ２Ｃドライバは、オペレーティングシステムＳＰＢ仕様に準拠してＩ２Ｃトランスポートと汎用入出力（ＧＰＩＯ）トランスポートとをエクスポーズする如何なるホスト上でも動作することができる（プラットフォームごとを基礎にしてドライバを開発する必要がある従来のプラットフォームとは異なる）。ＳＰＢの標準化がないと、ＨＩＤ  Ｉ２Ｃクラスドライバはさらに発展されることができるが、それはＩ２Ｃ実装ごとにカスタマイズされる必要があることになる。
【００１０】
実施形態において、ＨＩＤ  Ｉ２Ｃドライバは、適応可能であり、様々なベンダからの複数の異なるＩ２Ｃコントローラドライバとともに実装されることができる。このＨＩＤ  Ｉ２Ｃドライバはまた、コンピューティングシステムとインタフェース接続される装置の既存のＨＩＤアプリケーションとのソフトウェア互換性を維持する。このＨＩＤ  Ｉ２Ｃドライバはまた、コンピューティングシステムのオペレーティングシステムにおける効率に関して、ＨＩＤ  Ｉ２Ｃドライバの電力、性能及びピン数の最適化を行う。
【００１１】
ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の特徴及び概念は、様々な装置、システム、環境及び／又は構成にて実現されることができるが、ここでは、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を以下の例に係る装置、システム及び方法との関連で説明する。
【００１２】
図１は、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態が実装され得る一例のシステム１００を示している。このシステムは、例えばコンピュータ、サーバ、通信装置、ポータブル装置、タブレットコンピュータ、移動電話、ナビゲーション装置、メディアプレーヤ、及びゲーム装置など、如何なる種類のコンピューティング装置にて実現されてもよいコンピューティングシステム１０２を含んでいる。実施形態において、コンピューティングシステムは、システム・オン・チップ（ＳｏＣ）として実装され（図３に示すＳｏＣシステム例を参照して説明する）、Ｘ８６型ＰＣにて実装され、あるいはその他の種類のコンピューティング装置設計として実装され得る。コンピューティングシステム１０２を含んだコンピューティング装置は、例えば、プロセッサ及び／又はメモリ装置システム、並びに任意数の様々なコンポーネントの組み合わせ（図５に示す装置例を参照して更に説明する）など、様々なコンポーネントを用いて実現されることができる。また、コンピューティングシステムは、図３に示すＳｏＣシステム例を参照して更に説明するような追加コンポーネントとともに実装されることができる。
【００１３】
コンピューティングシステム１０２はまた、Ｉ２Ｃデータバス１０４と周辺装置１０６とを含むコンピュータチップとして図示されており、周辺装置１０６は、ＨＩＤ  Ｉ２Ｃインタフェース１０８を拡張性アプリケーション１１０とともに実装している。ＨＩＤ  Ｉ２Ｃインタフェースは、センサ、組み込みデバイス、内部装置及び／又は外部装置（例えば、ヒューマンインタフェース装置（ＨＩＤ））、及び／又はその他の集積コンポーネントを、コンピューティングシステムにインタフェース接続することができる。周辺装置１０６のＨＩＤ  Ｉ２Ｃインタフェース１０８及び拡張性アプリケーション１１０は、例えばファームウェアなどのコンピュータ実行可能命令として実装されることができる。それに代えて、あるいは加えて、ＨＩＤ  Ｉ２Ｃインタフェースは、ハードウェアにて実装されてもよい。周辺装置の拡張性アプリケーション１１０は、該装置に専用の機能及び／又は機構に関する拡張性データを、Ｉ２Ｃデータバス１０４を介して、コンピューティングシステム１０２にインタフェースするように実装されることができる。
【００１４】
ＨＩＤ  Ｉ２Ｃインタフェース１０８は、周辺装置のオペラビリティ（操作性）基準を構築する。サードパーティの独立ハードウェアベンダは、周辺装置１０６のＨＩＤ  Ｉ２Ｃインタフェース１０８により、内部装置、外部装置又は組み込みデバイスをインタフェース接続するとともに、周辺装置の拡張性アプリケーション１１０により、違いを付けて専用の機能及び／又は機構を実装することができる。周辺装置１０６のＨＩＤ  Ｉ２Ｃインタフェース１０８はまた、内部装置、外部装置、及び／又は組み込むデバイス若しくはセンサがＨＩＤ互換装置であることを、コンピューティングシステム１０２に指し示すように実装される。周辺装置１０６はまた、装置及び／又はセンサの構成を（例えば、データ構造や報告の記述などから）導出し、コンピューティングシステム１０２から設定データを受信して装置又はセンサを設定し、且つ／或いはコンピューティングシステムからの設定データを装置又はセンサに通信することができる。
【００１５】
周辺装置１０６の例は、例えば温度センサ、加速度計、ジャイロスコープ、方位計、又はその他の種類のセンサなどの、センサとして実装され得る周辺装置１１２を含む。周辺装置１１２のＨＩＤ  Ｉ２Ｃインタフェース１０８は、当該周辺装置をコンピューティングシステム１０２にＩ２Ｃデータバス１０４を介してインタフェース接続する。他の実装例において、周辺装置のＨＩＤ  Ｉ２Ｃインタフェース１０８は、ＨＩＤデータフォーマットにて、当該周辺装置をコンピューティングシステム１０２にＩ２Ｃデータバス１０４を介してインタフェース接続するように実装されることができ、データは、ＨＩＤデータ構造として、Ｉ２Ｃデータバスを介して通信される。周辺装置１０６のその他の例は、例えばタブレットコンピュータのタッチスクリーン表示装置などのタッチパネル１１６を、Ｉ２Ｃデータバスを介してコンピューティングシステムとインタフェース接続する周辺装置１１４を含む。他の一例において、周辺装置１１８が、例えばキーボード又はマウス入力装置などのコンピュータ入力装置１２０を、Ｉ２Ｃデータバスを介してコンピューティングシステムとインタフェース接続する。
【００１６】
周辺装置１１８はまた、センサ又はその他の集積装置（例えば、内部装置、外部装置、若しくは組み込みデバイス）を、Ｉ２Ｃデータバスを介してコンピューティングシステム１０２とインタフェース接続する。例えば、周辺装置１１８は、センサ又は装置の出力を、ＨＩＤデータの形態でＩ２Ｃインタフェース上を橋渡しするように実装されることができる。装置製造者は、装置（例えば、タッチパネル、入力装置、組み込みデバイス、センサなど）を、該装置の機能をＨＩＤを通じて提示（エクスポーズ）するように実装することができる。例えば、タッチスクリーンコントローラは、アナログセンサとし得るタッチセンサのロー（生）データを読み取って、コンピューティングシステムのＣＰＵに伝達されるデジタル信号を生成するように実装され得る。これらのタイプのコントローラは、ＨＩＤプロトコルを通じてタッチデータをＣＰＵに提示するように更新されることが可能である。
【００１７】
この例において、コンピューティングシステム１０２内のソフトウェアスタックは、センサスタック１２２、入力スタック１２４、及びＨＩＤソフトウェアスタック１２６を含んでいる。このコンピューティングシステムはまた、ＨＩＤ  Ｉ２Ｃドライバ１２８を含んでいる。ＨＩＤ  Ｉ２Ｃドライバ１２８は、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を実装するとともに、Ｉ２Ｃコントローラドライバ１３０及び汎用入出力（ＧＰＩＯ）コントローラドライバ１３２とインタフェースしている。実装例において、周辺装置１０６のこれらの例（例えば、周辺装置１１２、１１４及び１１８）の各々がＨＩＤ  Ｉ２Ｃインタフェース１０８を含み、Ｉ２Ｃコントローラと相互に関連するＨＩＤ  Ｉ２Ｃドライバが、周辺装置とＨＩＤソフトウェアスタックとの間でＨＩＤデータを通信するように実装される。
【００１８】
実施形態において、ＨＩＤ  Ｉ２Ｃドライバ１２８は、ＨＩＤソフトウェアスタック１２６内の装置アプリケーションとのソフトウェア互換性を管理する。ＨＩＤ  Ｉ２Ｃドライバ１２８は、Ｉ２Ｃデータバス１０４を介してコンピュータシステム内でデータを通信する装置へのＨＩＤ  Ｉ２Ｃインタフェース１０８を各々が含んだ周辺装置（例えば、周辺装置１０６）と、ＨＩＤソフトウェアスタック１２６とのインタフェースをとる。ＨＩＤ  Ｉ２Ｃドライバはまた、それら装置のＩ２Ｃコントローラドライバ１３０及びＧＰＩＯコントローラドライバ１３２と、ＨＩＤソフトウェアスタック１２６とのインタフェースをとる。ＨＩＤ  Ｉ２Ｃドライバはまた、例えば異なるベンダからのコントローラドライバなどの複数の異なるＩ２Ｃコントローラハードウェアをサポートするため、各々が異なる実装構成を有し得るＩ２Ｃコントローラドライバ１３０との互換性に関して実装される。ＨＩＤ  Ｉ２Ｃドライバ１２８は、複数の異なる、専用のサードパーティコントローラに適応可能であり、実装例において、ＡＰＩ入力を介して適応されることができ、あるいはプログラム可能なレジストリを含み得る。
【００１９】
実施形態において、ＨＩＤ  Ｉ２Ｃドライバ１２８は、オペレーティングシステムのカーネルモードに既に存在しているカーネルモード電力最適化に関するカーネルモード・ツー・ユーザモードトランザクションを削減するように実装される。ＨＩＤ  Ｉ２Ｃドライバはまた、ＨＩＤ  Ｉ２ＣドライバがＩ２Ｃ装置への先行Ｉ２Ｃ書き込みトランザクションなしでＩ２Ｃ装置上のアドレスの暗黙データ読み出しを実行するように、高速読み出しトランザクション関して実装される。例えば、データバス上での従来のデータ書き込みとそれに次ぐデータ読み出しとのトランザクションではなく、ＨＩＤ  Ｉ２Ｃドライバは、データバス性能を最適化するために、単一の入力データ読み出しトランザクションを起こすことができる。“ライトレス−リード”トランザクションとも呼ばれる高速読み出しトランザクションでは、データバス上のレジスタアドレスに対するデータ書き込みからデータ読み出しが黙示される。大抵の一般的なホスト・ツー・装置オペレーションのように、レジスタアドレスは暗黙であり、装置ファームウェアは入力レジスタにデフォルトである。装置ファームウェアは、それが実行している“レジスタアドレスポインタ”を、暗黙レジスタアドレスを使用するトランザクションの後に入力レジスタに戻るように移動させることをサポートすることができる。
【００２０】
ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、ＨＩＤ  Ｉ２Ｃドライバがトランザクションごとの先行データ書き込みのない各データ読み出しに関してＩ２Ｃデータバス上の同じアドレスから暗黙的にデータ読み出しを行うように、単一トランザクションデータ読み出しに関して実装される。ＳＰＢマルチトランスファシーケンスが、データ書き込みとデータ読み出しとを単一のトランザクションに結合する。
【００２１】
実施形態において、ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、ＨＩＤ  Ｉ２Ｃドライバが、割り込みによって開始されるときに装置データを読み出し、ソフトウェアにその割り込み処理をアンロードして素早くその割り込みの優先順位を下げるように、パッシブ割り込み処理に関して実装される。一実装例において、ＨＩＤ  Ｉ２Ｃドライバは、入力レポートを上位のドライバスタック（例えば、ＨＩＤソフトウェアスタック１２６）へと届ける機構としてワークアイテムを利用することができる。これは、割り込みサービスルーチン（ＩＳＲ）からワークをアンロードし、より低い優先順位のワークアイテム又はサービスプロバイダが割り込み要求を完了することを可能にする。ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、ＨＩＤ  Ｉ２Ｃドライバが割り込みによって開始されるときに装置データを読み出し、そのデータ読み出しが黙示的に装置割り込みに肯定応答するように、パッシブ割り込みアクナリッジメントに関して構成される。ＨＩＤ  Ｉ２Ｃドライバは、パッシブＧＰＩＯ割り込みをサポートし、シンプルペリフェラルバス（ＳＰＢ）入力／出力を用いて割り込み処理に肯定応答することができる。
【００２２】
実施形態において、ＨＩＤ  Ｉ２Ｃドライバ１２８は、電力最適化に使用され、コンピューティングシステム１０２がより低い電力状態に入るとき、又は装置ファームウェアが装置レベルのアクティビティを検出しないときに、低電力状態へと装置のアイドリングを開始することができる。ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、ピン数の最適化に使用され、割り込み及び装置ウェイク（目覚まし）イベントに共有あるいは唯一の入力接続を使用することができる。例えば、ＨＩＤ  Ｉ２Ｃドライバは、ウェイク可能な割り込みラインをサポートし、装置ウェイクイベントをアイドリング移行と同期させる前処理ルーチンを使用することができる。
【００２３】
実施形態において、ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、エラー処理と、Ｉ２Ｃデータバス上で検出されたエラー状態のエラー訂正に関して実装される。ＨＩＤ  Ｉ２Ｃドライバは、エンドユーザの使い勝手に影響を及ぼすことなく、Ｉ２Ｃデータバス上のエラー状態を特定し、それを自動的に訂正するよう試みる。例えば、コンピューティングシステムのホスト側（例えば、ＨＩＤ  Ｉ２Ｃドライバによってインタフェースされる）は、周辺装置１０６によりコンピューティングシステムにインタフェースした例えば組み込みデバイス又はセンサなどの装置から、予期せぬＮＡＫ（否定応答）を受信することがある。ＨＩＤ  Ｉ２Ｃドライバ１２８は、自動的に装置へのデータ送信をリトライするか、そのトランザクションを破棄して次のトランザクションに進むか、の何れかを行うように実装される。それに代えて、あるいは加えて、装置がハングアップして部分的にのみ応答することがあり、既定値のタイマーが経過した後に、ホスト側のソフトウェアは装置へのデータトランザクションを取り消して次のトランザクションを続ける。これは、例えばキーの打ち間違い又は間違ったマウス入力動作のなどの可能性ある入力損害に拘わらずに、ユーザが装置を使用し続けることを可能にする。それに代えて、あるいは加えて、装置がハングアップして応答しないことがあり、その場合、ホストのソフトウェアは、エラー状態を特定し、ユーザにエラー状態を示すことなく、また、ユーザが知覚可能な影響なく、装置の機能状態を回復させるよう、装置のリセットを開始する。
【００２４】
図２は更に、実装例２００にて、図１に示したシステム例の構成要素及び装置ソフトウェアを示している。実装例２００は、Ｉ２Ｃコントローラドライバ１３０及びＧＰＩＯコントローラドライバ１３２とインタフェースして通信を行うＨＩＤ  Ｉ２Ｃドライバ１２８を含んでいる。１つのＩ２Ｃコントローラドライバ１３０及び１つのＧＰＩＯコントローラドライバ１３２のみが図示されているが、ＨＩＤ  Ｉ２Ｃドライバは、複数のＩ２Ｃコントローラドライバ及び／又はＧＰＩＯコントローラドライバとインタフェースするように実装されることができる。
【００２５】
ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、例えばＨＩＤクラス２０２などの、コンピューティングシステムアプリケーション及びソフトウェアスタックとインタフェースして通信を行うように実装される。例えば、ＨＩＤ  Ｉ２Ｃドライバ１２８は、装置２０６がその装置のタッチスクリーン上でのタッチ接触入力２０８を検出するときに、Ｉ２Ｃコントローラドライバ１３０から且つ／或いはＧＰＩＯコントローラドライバ１３２から、割り込み２０４を受信し得る。そのとき、ＨＩＤ  Ｉ２Ｃドライバ１２８は、例えばタッチ接触入力を処理するデジタイザソフトウェアに対してなど、その割り込みをシステムアプリケーション及びソフトウェアスタックへと伝達することができる。
【００２６】
ＨＩＤ  Ｉ２Ｃドライバ１２８はまた、装置の電力状態を監視する電力制御インタフェース（advanced  configuration  and  power  interface；ＡＣＰＩ）２１０とインタフェースして通信を行うように実装されている。ＡＣＰＩはＧＰＩＯ物理デバイスオブジェクト（ＰＤＯ）２１２、Ｉ２Ｃ  ＰＤＯ２１４、及びＨＩＤ  ＰＤＯ２１６とインタフェースしており、先ずこれらのデバイスを列挙し、次いでこれらのデバイスの電力状態を監視する。
【００２７】
図３は、ここに記載されるＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の様々な実施形態を実装し得る一例に係るシステム・オン・チップ（ＳｏＣ）３００を示している。ＳｏＣ３００は、例えば消費者装置、電子装置、通信装置、ナビゲーション装置、メディア装置、コンピューティング装置、及び／又はその他の種類の電子機器のうちの何れか１つ又は何らかの組み合わせなどの、固定式あるいは移動式の装置内に実装され得る。ＳｏＣ３００は、電子回路、マイクロプロセッサ、メモリ、入力／出力（Ｉ／Ｏ）ロジック制御、通信インタフェース及びコンポーネント、並びに、コンピュータ装置を実現するためのその他のハードウェア、ファームウェア及び／又はソフトウェアとともに集積されることができる。
【００２８】
この例において、ＳｏＣ３００は、マイクロプロセッサ３０２（例えば、マイクロコントローラ又はデジタル信号プロセッサの何れか）、及び入力／出力（Ｉ／Ｏ）ロジック制御３０４（例えば、電子回路を含む）と集積されている。このＳｏＣはまた、メモリコントローラ３０６（例えば何らかの種類の不揮発性メモリ及び／又はその他好適な電子データストレージなどのメモリを含む）を含んでいる。このＳｏＣはまた、例えばメモリによって維持されてマイクロプロセッサによって実行されるオペレーティングシステム３０８などの、様々なファームウェア及び／又はソフトウェアを含むことができる。オペレーティングシステムは、例えば図１及び２を参照して説明されたものなどの、ここに記載のＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を実現するＨＩＤ  Ｉ２Ｃドライバ３１０を含んでいる。
【００２９】
ＳｏＣ３００は、例えばコンピューティング装置に子ストールされるときなどに装置、センサ、組み込みデバイス、又はその他の集積コンポーネントとインタフェースするデバイスインタフェース３１２を含んでいる。ＳｏＣ３００はまた、当該ＳｏＣの様々なコンポーネントを、これらのコンポーネント間でのデータ通信のために結合する集積データバス３１４を含んでいる。この例において、ＳｏＣ内のデータバスは、Ｉ２Ｃデータバス、その他の種類のシンプルペリフェラルバス（ＳＰＢ）、又はシリアルペリフェラルインタフェース（ＳＰＩ）データバスとして実装されることができ、また、複数の異なるバス構造及び／又はバスアーキテクチャの何れか１つ又は何らかの組み合わせとして実装されてもよい。
【００３０】
ＳｏＣ３００はまた、例えば図１に示した周辺装置の様々な例（例えば、周辺装置１０６）を参照して説明したものなどの、１つ以上の周辺装置３２０をインタフェース接続するＩ２Ｃドライバ３１６及び／又はＧＰＩＯドライバ３１８を含んでいる。Ｉ２Ｃドライバ３１６及びＧＰＩＯドライバ３１８に関連するドライバソフトウェアが、オペレーティングシステム３０８に組み込まれる。周辺装置３２０は、ＨＩＤ  Ｉ２Ｃインタフェース３２２及び／又はＧＰＩＯインタフェース３２４を実装している。ＨＩＤ  Ｉ２Ｃインタフェース及びＧＰＩＯインタフェースの例、並びに、対応する機能及び機構は、図１及び２に示したそれぞれのコンポーネントを参照して説明されている。それに代えて、あるいは加えて、周辺装置のコンポーネントは、Ｉ／Ｏロジック制御３０４及び／又はＳｏＣ若しくは周辺装置のその他の処理・制御回路と接続して実装されるハードウェア、ファームウェア、固定ロジック回路、又はこれらの何らかの組み合わせとして実装されることができる。
【００３１】
図４を参照して、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の１つ以上の実施形態に係る方法例４００を説明する。概して、ここに記載されるサービス、関数、メソッド、プロシージャ、コンポーネント、及びモジュールは何れも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定ロジック回路）。マニュアル処理、又はこれらの何らかの組み合わせを用いて実装されることができる。ソフトウェア実装は、コンピュータプロセッサによって実行されるときに指定されたタスクを実行するプログラムコードを表す。これらの方法例は、全体的に、ソフトウェア、アプリケーション、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール、関数、及びこれらに類するものを含み得るコンピュータ実行可能命令の状況で説明され得る。プログラムコードは、コンピュータプロセッサに対してローカルであろうと遠隔であろうと、１つ以上のコンピュータ読み取り可能記憶媒体装置に格納されることができる。これらの方法はまた、分散コンピューティング環境において複数のコンピュータ装置によって実行されてもよい。また、ここに記載される特徴は、プラットフォームに依存するものではなく、多様なプロセッサを有する多様な計算プラットフォーム上で実現されることができる。
【００３２】
図４は、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装に係る方法例４００を示しており、ＨＩＤ  Ｉ２Ｃドライバを参照して説明される。方法ブロックが記載される順序は、限定として解釈されることを意図したものではなく、また、記載の方法ブロックのうちの任意数が、方法又は代替方法を実行するように如何なる順序で組み合されてもよい。
【００３３】
ブロック４０２にて、コンピューティングシステムのヒューマンインタフェース装置（ＨＩＤ）ソフトウェアスタック内に、装置ソフトウェアが実装される。例えば、コンピューティングシステム１０２（図１）のホスト側のＨＩＤソフトウェアスタック１２６が、例えば、ＨＩＤ  Ｉ２Ｃドライバ１２８を介してコンピュータシステムとインタフェースし、またＩ２Ｃデータバス１０４を介して周辺装置１０６とインタフェースする内部装置、外部装置、及び／又は組み込みデバイス若しくはセンサなどに関する装置ソフトウェアを実装する。
【００３４】
ブロック４０４にて、ＨＩＤソフトウェアスタックが、装置へのＨＩＤ  Ｉ２Ｃインタフェースを各々が含む複数の周辺装置とインタフェースをとられる。例えば、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８が、ＨＩＤソフトウェアスタック１２６を、装置（例えば、組み込みデバイス又はその他の集積コンポーネント）へのＨＩＤ  Ｉ２Ｃインタフェース１０８を各々が含む複数の周辺装置（例えば、周辺装置１０６）とインタフェース接続する。装置は、Ｉ２Ｃデータバス１０４を介してコンピューティングシステム１０２内でデータ通信するように実装される内部装置、外部装置、又は、組み込みデバイス及び／又はセンサとし得る。
【００３５】
ブロック４０６にて、ＨＩＤソフトウェアスタックが、装置のＩ２Ｃコントローラドライバ及び汎用入出力（ＧＰＩＯ）コントローラドライバとインタフェースをとられる。例えば、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８がまた、ＨＩＤソフトウェアスタック１２６を、装置のＩ２Ｃコントローラドライバ１３０及び汎用入出力（ＧＰＩＯ）コントローラドライバ１３２とインタフェース接続する。
【００３６】
ブロック４０８にて、高速読み出しトランザクションのため、装置への先行Ｉ２Ｃ書き込みトランザクションなく、Ｉ２Ｃ装置上のアドレスの暗黙データ読み出しが実行される。例えば、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８が、装置への先行Ｉ２Ｃ書き込みトランザクションなく、Ｉ２Ｃ装置上のアドレスの暗黙データ読み出しとして高速読み出しトランザクションを実行する。ブロック４１０にて、単一トランザクションデータ読み出しで、先行データ書き込みのない暗黙データ読み出しのため、Ｉ２Ｃデータバス上の同じアドレスからデータが読み出される。例えば、コンピューティングシステム１０２のＨＩＤ  Ｉ２Ｃドライバ１２８が、先行データ書き込みのない暗黙データ読み出しのためＩ２Ｃデータバス１０４上の同じアドレスからデータが読み出されるよう、単一トランザクションデータ読み出しを開始する。
【００３７】
ブロック４１２にて、割り込みによって開始されるときに装置データが読み出され、その割り込み処理がソフトウェアにアンロードされてその割り込みの優先が解除される。例えば、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８が、割り込みによって開始されるときに装置データを読み出し、その割り込み処理がソフトウェアにアンロードされて、素早くその割り込みが優先解除される。ブロック４１４にて、割り込みによって開始されるときの装置データの読み出しに基づき、装置割り込みが黙示的に肯定応答される。例えば、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８が、割り込みによって開始されるときの装置データの読み出しに基づき、装置割り込みに黙示的に肯定応答する。
【００３８】
ブロック４１６にて、コンピューティングシステムがより低い電力状態に入るとき、又は装置ファームウェアが装置レベルのアクティビティを検出しないとき、装置が低電力状態へとアイドリングされる。例えば、コンピューティングシステム１０２がより低い電力状態に入るとき、又は装置ファームウェアが装置レベルのアクティビティを検出しないとき、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８が、装置（例えば、コンピューティングシステム１０２にインタフェースしている組み込みデバイス又はセンサ）を低電力状態へとアイドリングさせる。
【００３９】
ブロック４１８にて、割り込みと装置ウェイクイベントとで入力接続が共有される。例えば、コンピューティングシステム１０２のホスト側のＨＩＤ  Ｉ２Ｃドライバ１２８が、割り込みと装置ウェイクイベントとでＧＰＩＯ入力接続を共有する。ブロック４２０にて、Ｉ２Ｃデータバス上で検出されるエラー状態が訂正される。例えば、コンピューティングシステム１０２のＨＩＤ  Ｉ２Ｃドライバ１２８が、Ｉ２Ｃデータバス１０４上で検出されるＨＩＤ  Ｉ２Ｃプロトコルレベルのエラー状態を訂正する。上述のように、記載された方法ブロックは、方法又は代替方法を実行するように如何なる順序で組み合わされてもよい。従って、ブロック４２０でのＩ２Ｃデータバス上のエラー状態の検出及び訂正は、記載されたその他の方法ブロック４０２−４１８の何れかの前、最中又は後に行われてもよい。
【００４０】
図５は、図１−４を参照して説明した、装置又はそれにより実行されるサービス及びソフトウェアのうちの何れかとして実装されることが可能な装置例５００の様々なコンポーネントを示している。実施形態において、この装置は、固定式あるいは移動式の装置の何れか一方又は組み合わせとして、消費者装置、コンピュータ装置、サーバ装置、ポータブル装置、ユーザ装置、通信装置、電話装置、ナビゲーション装置、テレビジョン装置、家庭用電気機器、ゲーム装置、メディア再生装置、カメラ、及び／又は電子装置のうちの何れの形態で実装されてもよい。この装置はまた、ユーザ、ソフトウェア、ファームウェア、ハードウェア、及び／又は装置の組み合わせを含め、装置が論理装置を記述するように装置を操作するユーザ（すなわち、人物）及び／又はエンティティに関連付けられ得る。
【００４１】
装置５００は、装置データ５０４の有線通信及び／又は無線通信を可能にする通信デバイス５０２を含んでいる。装置データ又はその他の装置コンテンツは、装置のコンフィギュレーション設定、装置に格納されたメディアコンテンツ、及び／又は装置のユーザに関連付けられた情報を含むことができる。装置に格納されたメディアコンテンツは、如何なる種類のオーディオデータ、ビデオデータ、及び／又は画像データをも含み得る。当該装置は、１つ以上のデータ入力５０６を含んでおり、それを介して、例えばユーザ選択可能な入力、並びに何らかのコンテンツ及び／又はデータの供給源から受信されるその他種類のオーディオデータ、ビデオデータ及び／又は画像データなど、任意の種類のデータ、メディアコンテンツ、及び／又は入力を受信することができる。
【００４２】
装置５００はまた、例えばシリアルインタフェース、パラレルインタフェース、ネットワークインタフェース、又は無線インタフェースのうちの何れか１つ以上などの、通信インタフェース５０８を含んでいる。通信インタフェースは、その他の電子装置、コンピューティング装置、及び通信装置が当該装置と通信するための、当該装置と通信ネットワークとの間の接続及び／又は通信リンクを提供する。
【００４３】
装置５００は、様々なコンピュータ実行可能命令を処理して当該装置の動作を制御する１つ以上のプロセッサ５１０（例えば、マイクロプロセッサ、コントローラ、及びこれらに類するもののうちの何れか）、又はプロセッサとメモリのシステム（例えば、ＳｏＣにて実装される）を含んでいる。これに代えて、あるいは加えて、当該装置は、参照符号５１２にて全体として特定される処理・制御回路とともに実装されるソフトウェア、ハードウェア、ファームウェア、又は固定ロジック回路のうちの何れか１つ又は組み合わせを用いて実装されることができる。図示していないが、当該装置は、当該装置内の様々なコンポーネントを結合するシステムバス又はデータ転送システムを含むことができる。システムバスは、例えばメモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、及び／又は多様なバスアーキテクチャのうちの何れかを利用するプロセッサ若しくはローカルバスなどの、様々なバス構造のうちの何れか１つ又は組み合わせを含むことができる。
【００４４】
装置５００はまた、例えばランダムアクセスメモリ（ＲＡＭ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリなど）、及びディスク記憶デバイスなどの、データ記憶を可能にする１つ以上の記憶デバイス５１４を含んでいる。ディスク記憶デバイスは、例えばハードディスクドライブ、記録可能ディスク及び／又は書換可能ディスクなど、何らかの種類の磁気記憶装置又は光記憶装置として実現され得る。コンピュータ読み取り可能媒体は、コンピューティング装置によってアクセスされる如何なる利用可能な媒体又はメディアともし得る。
【００４５】
記憶デバイス５１４は、装置データ５０４、その他の種類の情報及び／又はデータ、並びに装置アプリケーション５１６を格納するデータ記憶機構を提供する。例えば、オペレーティングシステム５１８が、記憶デバイスを用いてソフトウェアアプリケーションとして管理され、プロセッサ上で実行され得る。この例においては、ここに記載されたＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を実行するよう、オペレーティングシステム内にＨＩＤ  Ｉ２Ｃドライバ５２０が実装されている。装置アプリケーションはまた、例えば制御アプリケーション、ソフトウェアアプリケーション、信号処理・制御モジュール、特定の装置に自生するコード、特定の装置のハードウェア抽象化レイヤなどのうちの何れかの形態などであるデバイスマネジャを含み得る。この例において、装置はまた、組み込みデバイス５２４とインタフェースする１つ以上の周辺装置５２２を含んでいる。
【００４６】
装置５００はまた、オーディオシステム５２８用のオーディオデータの生成、及び／又はディスプレイシステム５３０用の表示データの生成、を行うオーディオ及び／又はビデオ処理システム５２６を含んでいる。オーディオシステム及び／又はディスプレイシステムは、オーディオデータ、ビデオデータ、表示データ、及び／又は画像データを処理し、表示し、且つ／或いはその他の方法で表現する如何なる装置を含んでいてもよい。実装例において、オーディオシステム及び／又はディスプレイシステムは、装置の外付けコンポーネントであり、あるいは、この装置例の一体化コンポーネントである。
【００４７】
以上、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実施形態を機構及び／又は方法に特有の言葉で説明してきたが、添付の請求項に係る事項は必ずしも、記載した特定の機構又は方法に限定されるものではない。むしろ、これらの機構及び方法は、ＨＩＤ  Ｉ２Ｃデータバスのホスト側実装の実装例として開示されたものである。
【図１】
2015507806.tif 000003
【図２】
2015507806.tif 000004
【図３】
2015507806.tif 000005
【図４】
2015507806.tif 000006
【図５】
2015507806.tif 000007
【国際調査報告】
2015507806.tif 000008
2015507806.tif 000009