DisplayPortのホットプラグ検知を再考する

これまでのDisplayPortチャレンジ


HotPlugDetectについて

http://news.mynavi.jp/articles/2009/09/29/idt_displayport/
"DisplayPortインタフェースにはホットプラグ検知(Hot Plug Detect:HPD)シグナルが含まれており、モニタがPCに接続されていることを確認するためだけでなく、リンクを確立するためにも使用されます。HPDは、リンク・トレーニングと呼ばれるプロセスを通じて送信側に対してリンクを確立することを知らせます。"

さらにHPDの仕様については、DisplayPortをgoogle検索するとDP1.1a標準規格書のPDFが引っ掛かります。どうやら公式なものではなさそうなので引っ張りませんが、5.1.4の章を見ると書いてあります。あと、HPDでPDF内を検索するといたるところでヒットします。ということは色々な場面で使っていそうです。

あとTIのDisplayPortリドライバデバイスのPDFも参考になります。
http://www.tij.co.jp/product/jp/SN75DP130/technicaldocuments

詳しいことはドキュメントを読んでいただいて、とりあえずHPDがモニターから信号を送信することでイベントが発生します。発生するのは、この3つです。

・HPD IRQ Event
Hi→Lo(0.5-1.0ms)→Hi (HPD_IRQ Pulse)
このパルス信号をグラボに送信するとHPD IRQ Eventが発生する。ステータスが変わった時に送られる。

・Hot Unplug Event
Hi→Lo(>2.0ms) (HPD_TimeOut)
HiからHPD_TimeOut=2.0ms以上LoにするとHot Unplug Eventが発生する。ケーブルが抜かれたと認識する

・(Re)Plug Event
Lo(>HPD_TimeOut)→Hi (Hot Plug)
HPD_TimeOut以上Loの状態からHiにされた時、(Re)Plug Eventが発生する。ケーブルが再接続されたと認識する

何をすればいいのか

これを踏まえて、DisplayPort 電源オフ問題を解決しつつ、本来の動きを得るには、何をすればいいのか考えます。

1.初めてモニターの電源が入った時は、PCとリンクして欲しい
(Re)Plug Eventは、発生させたい

2.モニターの電源だけが落ちた時は、PCとリンクしたままでいて欲しい
Hot Unplug Eventは発生させたくない

3.モニターとPCがリンクした状態で、再度モニターの電源が入った時、PCとの初期リンク手順は、スルーして欲しい
(Re)Plug Eventは、発生させたくない

4.モニターがスタンバイ状態(電源がON)で、初めてPCの電源が入った時は、PCとリンクして欲しい
(Re)Plug Eventは、発生させたい

こんなところでしょうか。しかし1・4と3は相反しているので、条件によって結果を変える必要があり、つまりプログラマブルじゃないと、この問題は解決できないということです。

HPDの信号を見る




これはオシロスコープにHPDピンを繋いで、モニター電源をONしたときの信号です。波形を見ても何も分かりませんが、まず自分のモニター(DELL U2713H)は、電源をONして2秒ほどでHPDがHiになり、3秒後にぐらいで画面が出ます。この波形は、ONしてから2秒ほど進んでHPD=Hiになったところのものです。AUXの方を見れば、きっと何かしらのコマンドと共にHPD PULSEが送信されているのか分かるのですが…ロジアナが欲しいです。



実験


DP延長ケーブルでモニター前までコネクタを持ってきた方が捗ると思います。いちいちPCの裏に回るのめんどくさいですし。


一様、思い通りには動いてるみたい。


続く→DisplayPort HPD ModBoardを作る