---
# System prepended metadata

title: DisplayPort Alt Mode

---

DisplayPort Alt Mode
===

DP Alt Mode 與 DisplayPort 關係
---
DP Alt Mode 是將 DisplayPort protocol 在 Type-C 上傳輸
|特性| DisplayPort | DP Alt Mode |
|:-----:| :-----: | :--------: |
|Physical layer| DisplayPort 接口 | Type-C 接口     |
|Protocol layer| DP 1.4/2.0/2.1 | Type-C上傳輸DP協議|
|使用機制|直接輸出在螢幕|需透過PD協商進入 Alt Mode|
|頻寬分配|全部使用|與U3/U2/Power共享|

DP Alt Mode 的模式
---
在 VDM 的 `Discover Modes` 中，==UFP(Device)== and ==Active Cable== 會回覆支援哪些 Pin Assignment
等 `Enter Mode` 後，==DFP(Host) 會決定==用哪種 Pin Assignment，使用 VDM 的 `DisplayPort Configure(11h)` Command 告訴對方
#### 2-Lane DP + USB 3.2 Mode
可使用 USB 3.2 Gen 2x1
![image](https://hackmd.io/_uploads/B1OUJwz6xe.png)

#### 4-Lane DP + USB 2.0 Mode
剩下 USB2.0
![image](https://hackmd.io/_uploads/rJmdlvfpgg.png)

進入 DP Alt Mode
---
在 USB Power Delivery 有規範如何透過 VDM [進入 DP Alt Mode](https://hackmd.io/gHb6GPHfRoadumYqJi2F2w?view=&stext=5322%3A24%3A0%3A1759918982%3ACH3b2h)，以下 Base on PD3.2

#### VDM (Vendor Defined Message)
VDM 由 [Message Header](https://hackmd.io/@tKhMONlATf6y7pWyO9bjwA/S1ZSuAcQkx?stext=3693%3A14%3A0%3A1759907884%3Aced7ca) + VDM Header + 0~6 個 VDO 組成
![image](https://hackmd.io/_uploads/H1-w687Txg.png =70%x)
![image](https://hackmd.io/_uploads/BkMpmhX6eg.png =70%x)
![image](https://hackmd.io/_uploads/BJL373Xael.png =70%x)




:::spoiler Structured VDM Header
| Bit(s)| Field | Description|
|:-----|:-----|:-----|
|B31…16|Standard or<br> Vendor ID (SVID)|由 USB-IF 分配:<br>==PD SID (FF00h)==<br>==DisplayPort (FF01h)==|
|B15|VDM Type|Structured VDM = 1|
|B14…13| Structured VDM Version(Major)| ~~-00b: 1.0~~(Deprecated)<br>-01b:  2.x        |
|B12…11|Structured VDM Version(Minor)|-00b: 2.0(before PD 3.1.1.6)<br>-01b:  2.1(after PD 3.1.1.6)|
|B10…8| Object Position|For the `Enter Mode`, `Exit Mode`, and `Attention` Commands:<br>-000b:  Reserved<br>-001b...110b: VDO 的 index<br>111b: Exit all Active Modes<br>----------<br>For 0...3, 7...15 Commands:<br>-000b<br>-001b…111b: Reserved<br>----------<br>SVID Specific Commands 由 SVID 定義|
|B7…6|Command Type|-00b: REQ<br>-01b: ACK<br>-10b: NAK<br>-11b: BUSY|
|B5|Reserved|Shall be set to zero|
|B4…0|Command|Standard<br>- 0 = Reserved<br>- 1 = Discover Identity<br>- 2 = Discover SVIDs<br>- 3 = Discover Modes<br>- 4 = Enter Mode<br>- 5 = Exit Mode<br>- 6 = Attention<br>- 7-15 = Reserved<br>DP專用(Vendor)<br>- 16= DisplayPort Status Update<br>- 17= DisplayPort Configure|
:::spoiler Commands
| Command | VDM Header SVID Field |SOP* used |
| -------- | -------- | -------- |
|Discover Identity|**Shall** only use the ==PD SID==.|**Shall** only use SOP/SOP’|
|Discover SVIDs|**Shall** only use the ==PD SID==.|**Shall** only use SOP/SOP’|
|Discover Modes|**Valid** with any SVID.|**Shall** only use SOP/SOP’|
|Enter Mode|**Valid** with any SVID.|**Valid** with SOP*|
|Exit Mode|**Valid** with any SVID.|**Valid** with SOP*|
|Attention|**Valid** with any SVID.|**Valid** with SOP*|
|SVID Specific Commands|**Valid** with any SVID.|**Valid** with SOP* (defined by SVID).|
:::

:::spoiler ID Header VDO
提供產品的身份和能力資訊
| Bit(s) | Field/Description | Note |
| -------- | -------- | -------- |
| B31     | USB Communications Capable as USB Host     | 是否有 USB Host 能力|
| B30     | USB Communications Capable as USB Device     | 是否有 USB Device 能力|
|B29…27|![image](https://hackmd.io/_uploads/SkwHdcQpll.png)|在 ==UFP== 資料角色下的類型(無關當前的 Data Role)，或 Cable Plug/VPD 的類型|
|B26|Modal Operation Supported|表示在==UFP/Cable Plug== 是否支持 ++Alternate Modes++, **不管 UDP**|
|B25…23|![image](https://hackmd.io/_uploads/B1iYiqQ6gl.png)|在 ==DFP== 資料角色下的類型(無關當前的 Data Role)|
|B22…21|![image](https://hackmd.io/_uploads/rkkMhqQ6gl.png)||
|B20…16|Reserved||
|B15…0|USB Vendor ID|要跟 USB Device Descriptor 中的 VID 相同|
:::

:::spoiler Cert Stat VDO
32-bit, **Assigned by USB-IF**
:::

:::spoiler Product VDO
![image](https://hackmd.io/_uploads/SyeIgomage.png =50%x)
PID: 用來識別產品
bcdDevice: Device Descriptor 內的 bcdDevice
:::

:::spoiler Product Type VDO
很多種，PD3.x 有棄用一些，要看 PD2.x 的 Spec
* UFP VDO
* DFP VDO
* Passive Cable VDO
* Active Cable VDO1
* Active Cable VDO2
* VPD VDO
* Alternate Mode Adapter VDO
The Alternate Mode Adapter (AMA) VDO has been ++Deprecated++
:::


:::spoiler Use of Commands
![image](https://hackmd.io/_uploads/HyQ-st7Tel.png =70%x)
發起的結構: `Message Header` + `VDM Header`
* Discover Identity
通常由 ==DFP== 或是 ==VCONN Source== 發起
Response:
最前面都會有 `Message Header`
    * ACK: `VDM Header` + `ID Header VDO` + `Cert Stat VDO` + `Product VDO` + `0-3 Product Type VDO(s)`
    * NAK/BUSY： `VDM Header`
* Discover SVIDs
可識別已連接產品支援的 Alt Mode

* Discover Modes
通常由 ==DFP== 或是 ==VCONN Source== 發起
Response:
    * ACK: `VDM Header` + `1-6 Mode VDOs`(==DP Capabilities (VDO in the Responder USB PD Discover Modes VDM)==)
    

        | Pin Assignment | Column 2 | 
        | -------- | -------- | 
        | C     | 4 lanes for DP     | 
        | D     | 2 lanes DP + 2 lanes USB3.x     |
        | E     | 4 lanes DP (反向 plug)     |
:::
![image](https://hackmd.io/_uploads/BJnSG3NTxl.png)
==完成 Status Update UFP 還會發 Attention MSG==(如果狀態有變的話)

AUX_CH and HPD
===

HPD
---
在純 DP connector 裡，HPD 是一條從螢幕（Sink）拉回主機（Source）的線，用來做：
1. 插入 / 拔除通知
2. 顯示模式更新（IRQ_HPD）通知

Type-沒有放 HPD pin, 因此在 DP altmod 中用 PD MSG 夾帶 HPD(Status Update、
Attention)

* UFP 在進入 DP Alt Mode 之後，只有當自己的 DP 狀態改變（例如 HPD 變化、DP Source/Sink attach 改變）時，才要送 Attention，
    1. HPD_High 表示 `「DP Sink認為連線存在而且 ready」`
    2. HPD_Low `「DP Sink認為 HPD 已經是低」`
    3. HPD State (bit 7) / IRQ_HPD (bit 8)
只在 ==「DP Sink → DP Source 方向」有意義==
* 並且要「儘快」送出。


Sideband Use
---
在進入 DP Alt Mode 後，會把 SBU1 / SBU2 重新分配為 DP AUX Channel (AUX+ / AUX–)
* 「AUX_CH 是 DP 中用來傳控制/管理資訊的 sideband channel」，用來做能力詢問、連線管理等。

![image](https://hackmd.io/_uploads/BJrMqSCGWx.png =60%x)


1. Native AUX
用於控制與設定 DPCD(Display Port Configuration Data)、HDCP、Link Training
3. I2C over AUX
速度較慢，可來用傳輸EDID

    
Ref
---
[Exploring DisplayPort Alt Mode over USB-C](https://newnex.com/technology-articles-dp-alt-mode-over-usb-c.php)
[USB Power Delivery](https://hackmd.io/@tKhMONlATf6y7pWyO9bjwA/S1ZSuAcQkx)
[DisplayPort over Type-C 2.0入門及規格更新](https://www.graniteriverlabs.com/zh-tw/technical-blog/displayport-over-type-c-2-0-specification-updates)


