USBデバイスが(ホストによって開始されたのではなく)それ自体で低電力モードに移行したことをカーネルはどのようにして知ることができますか?

アヌラグチャウハン

1つのUSBデバイスには、低電力モードに入る機能があります(サスペンドとレジュームをサポートします)。

ホストはデバイスのサスペンドとレジュームを開始することもできます。この場合、ホストはデバイスの状態を認識しています。

シナリオは次のとおりです。

  • デバイスは低電力モードを開始します。
  • ホストドライバーデバイスの低電力状態に関するこの情報にアクセスしたい
  • ドライバーはどのようにしてLinuxカーネルからこの情報を取得できますか?
シャイバル

USB仕様に従い、USBデバイスはUSBホストへのリンクを一時停止できません。リンクを一時停止できるのはホストだけです。また、サスペンド(U3)は低電力モード(U1 / U2)と同じではありません。デバイスは、ホストとネゴシエートすることで低電力モードへの切り替えを開始できますが、サスペンドはできません。

ここで、低電力モード(U1 / U2)を意味していると考えてみましょう。その場合、イベントが発生しないため、ホストドライバーはポートがデバイスによって開始された低電力モードにいつ切り替わるかを知る方法がありません。リンクが低電力モードに切り替わったかどうかを確認するには、リンク状態を自分で監視する必要があります。

私の知る限り、ハブに接続されているデバイスのリンク状態を取得するために使用されるAPIが1つあります。

static void xhci_hub_report_link_state(struct xhci_hcd *xhci,
                u32 *status, u32 status_reg)

このAPIを使用して、外部ハブを介して接続されているデバイスのリンク状態を追跡できます。ただし、ルートハブポートのリンク状態を読み取るために使用できるAPIはありません。ホストコントローラードライバーが任意のインターフェイスを公開している場合は、それを使用できます。

リンク状態の読み取りに使用できるdebugfsインターフェイスを公開するdwc3コントローラーコードを参照してください。

パス-usb / dwc3 / debugfs.c

API-

static int dwc3_link_state_show(struct seq_file *s, void *unused)

PS-私はあなたがXHCIコントローラーを持っていると考えました。しかし、EHCIコントローラーでもほぼ同じです。デバイスがUSBリンクを一時停止することはできません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ