2017-07-27 10 views
0

1つのUSBデバイスは低電力モード(サスペンドとレジュームをサポート)に移行する機能を備えています。カーネルは、USBデバイスが低電力モードになったとき(ホストによって起動されていない)を知る方法を教えてください。

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

シナリオは次のとおり

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

sysfsはこの情報を提供しています。こちらをご覧ください:https://www.kernel.org/doc/html/latest/driver-api/usb/power-management.html – ApriOri

+0

ありがとう、@ApriOri、リモートウェイクアップ、サスペンドおよびレジュームの機能を有効または無効にする方法、およびautosuspend_delay_msを設定する方法を設定できます。これらはすべてUSBデバイスの動作に関するすべての設定です。デバイスが低電力モードで起動しているときにデバイスのステータスが必要です。 .....私はデバイスのレジュームを制御できるように。再開プロセスの制御に関する情報はありません。 – AnuragChauhan

答えて

1

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

次に、低電力モード(U1/U2)を意味すると考えてください。ホストドライバは、デバイスによって起動された低電力モードにポートが切り替わるタイミングを知らないため、イベントは発生しません。リンクが低消費電力モードに切り替わったかどうかを確認するには、自己のリンク状態を監視する必要があります。

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

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リンクを中断することはありません。

+0

Thanks A Lot、:-)、@Shaibal、はい私はサスペンドを使用しました| USBやFrom Host Driverのようなさまざまな観点から話をするときに範囲を変更する可能性のある用語を再開します。しかし、はい、私はUSBデバイスの能力にあるパワーモードの開始を意味しました。あなたが言ったように、ホストドライバはこれらの変更を認識できません。 – AnuragChauhan

+0

あなたは@Shaibalが、私がこの機能を使用している特定のOSでこの機能を無効にできるように、ホストドライバ(ファームウェアではなくカーネルから)からSET FEATUREコマンド(U1/U2有効化)ドライバ。 [間違った用語を再度使用している場合はヘルプ] 具体的には、私はカーネルドライバからUSBコマンドを送信したいと思います。 – AnuragChauhan

+1

U1/U2機能を無効にするには、CLEAR_FEATUREを送信する必要があります。アプリケーションをホストに書き込むことで、デバイスへの制御転送を行うことができます。そのためにlibusbが最適です。 libusbの例として、https://github.com/tytouf/libusb-cdc-example/blob/master/cdc_example.cに従ってください。 – Shaibal

関連する問題