2017-07-11 21 views
0

リンクパワーマネージメントでL2サスペンド状態を実装する必要があるタスクがあります。私は開発ボードを使用しています。そこにはDWC3 USBコントローラーとPHYがインターフェースしています。基本的に私たちのボードはLinuxのUSB DWC3ドライバを使用し、ホストに接続しています。リンクパワーマネージメントのL2状態

私の理解では、USBコントローラは、バスの非活動状態が3.125ミリ秒後にSUSPEND信号を生成します。 L2サスペンド状態を実装するためにこのコントローラをどのように設定することができますか?

答えて

0

現在の設定では、ボードはデバイス/ガジェットモードにあり、ホストに接続しています。 USBデバイスはサスペンドシグナリングを駆動できないことに注意してください。ホストによって開始されるはずです。

USB 2.0デバイスのためのサスペンド処理 -

1 - USBホストに送信するデータがないと、現在の送信SOFは
2フレーム - ホストSWはU3 /サスペンド設定することにより、デバイスを中断USBデバイスがSOFのないバスでアイドル状態になっています
4 - 約3 ms後、デバイスのハードウェアは、終端をグランドに接続せずにサスペンドし、内部プルアップ・レジスタ
5 - 次に、デバイスは回線をポーリングして、ホストが終端を削除したかどうかを確認します。
6 -

1 - - USBホストは、送信するデータがないホストが終了を取り除いているので、デバイスは、USB 3.0デバイスのために一時停止の

プロセスを中断することになります
2 - ホストSWは、XHCIコントローラでU3を設定してデバイスをサスペンドします。
3 - ホストがサスペンドシグナリングを開始するLGO_U3リンクコマンドの送信を開始します。
4 - デバイスはLGO_U3コマンドを受信した後、それを認識し、そう結論で、USBデバイスからあなたが中断シグナリングを開始することはできません

を中断開始します。デバイススタックの内部状態のみを設定できます。

EDIT 1 - このサスペンドのプロセスは、USB 2.0 /高速デバイス向けです。あなたのボードがSSポートを介してホストに接続された超スピード/ USB 3.0デバイスである場合、プロセスはリンクレベルで少し異なりますが、ユーザーの観点からは違いはありません。
EDIT 2 - USB 2.0およびUSb 3.0デバイスのサスペンドプロセスの回答を更新しました

+0

返信いただきありがとうございますShaibal。つまり、コントローラを設定する必要はありません。それは単独でサスペンド信号を生成しますか?はいの場合、特定のレジスタビットは3msec後に設定されますか?またはISRが実行されますか? – user3267021

+0

コントローラはデバイスモードで動作しています。 DWCコントローラは、ホストモードとデバイスモードで動作します。デバイスモードで動作しているときは、信号はドライブされません。サスペンド信号は、ボードを接続したホストから来たものとします。そして、サスペンド後、はい、あなたのコントローラーでPORTSCがU3に設定され、そのためにイベント/割り込みが送られます。 ISRが実行されます。 – Shaibal

+0

ありがとうございました。最後の質問ですが、このISRが実行される情報はどこにありますか?または、割り込みやイベントが発生したときにコードのどの部分が実行されますか? – user3267021