<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>DisplayPort on Tech Snippets - 嵌入式技术笔记</title><link>https://tech-snippets.xyz/tags/displayport/</link><description>Recent content in DisplayPort on Tech Snippets - 嵌入式技术笔记</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 07 Oct 2026 13:21:27 +0800</lastBuildDate><atom:link href="https://tech-snippets.xyz/tags/displayport/index.xml" rel="self" type="application/rss+xml"/><item><title>MAX96745 技术详解：eDP/DP 转双通道 GMSL2 车规显示串行器（寄存器参考）</title><link>https://tech-snippets.xyz/posts/max96745-gmsl2-serializer-register-reference-2026/</link><pubDate>Wed, 07 Oct 2026 13:21:27 +0800</pubDate><guid>https://tech-snippets.xyz/posts/max96745-gmsl2-serializer-register-reference-2026/</guid><description>基于 Rockchip 内核与 U-Boot 开源驱动逆向整理的 MAX96745 技术参考：eDP/DP 转双通道 GMSL2 车规显示串行器的寄存器定义、初始化流程、GPIO 隧道、设备树配置与同系列对比。</description><content:encoded><![CDATA[<h2 id="写在前面">写在前面</h2>
<p>MAX96745 是 ADI（原 Maxim）的 <strong>eDP/DisplayPort 转 GMSL2 车规显示串行器</strong>，官方 datasheet 不公开（需 NDA）。本文档基于 Rockchip Linux 内核与 U-Boot 开源驱动（GPL-2.0）逆向整理，寄存器信息为芯片接口技术事实，<strong>非 ADI 官方文档</strong>；如需商用授权或官方规格，请联系 Analog Devices 申请。</p>
<blockquote>
<p><strong>来源声明</strong>：本文基于以下开源驱动整理，遵循 GPL-2.0 许可，转载需保留本声明与来源链接：</p>
<ul>
<li>U-Boot：<code>neggles/u-boot-quartz64</code> → <code>drivers/i2c/muxes/max96745.c</code></li>
<li>Linux 内核（kernel-5.10-rockchip）：<code>drivers/mfd/max96745.c</code>、<code>drivers/pinctrl/pinctrl-max96745.c</code>、<code>include/linux/mfd/max96745.h</code></li>
</ul>
</blockquote>
<hr>
<h2 id="1-芯片是什么">1. 芯片是什么</h2>
<p>MAX96745 把 SoC 的 <strong>eDP / DisplayPort</strong> 视频信号串行化成 <strong>GMSL2</strong> 链路，通过一根同轴电缆（FAKRA 连接器）或 STP 双绞线传输到远端显示器，同时通过同一条线反向隧道 I²C / UART / GPIO 控制信号，并支持 Power-over-Coax（PoC）。</p>
<table>
<thead>
<tr>
<th>项目</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>厂商</td>
<td>Analog Devices（原 Maxim Integrated）</td>
</tr>
<tr>
<td>类型</td>
<td>eDP/DP → GMSL2 串行器（Serializer）</td>
</tr>
<tr>
<td>输出</td>
<td>双通道 GMSL2（链路 A / 链路 B）</td>
</tr>
<tr>
<td>车规型号示例</td>
<td>MAX96745GTN/V+T（AEC-Q100，TQFN）</td>
</tr>
<tr>
<td>评估板</td>
<td>MAX96745-AAG-EVK#</td>
</tr>
<tr>
<td>同系列</td>
<td>MAX96755 / MAX96755F（同类 eDP→GMSL2）</td>
</tr>
<tr>
<td>寄存器寻址</td>
<td>16 位地址 / 8 位数据，最大寄存器 0x8000</td>
</tr>
<tr>
<td>设备树 compatible</td>
<td><code>maxim,max96745</code> / <code>maxim,max96745-pinctrl</code> / <code>maxim,max96745-bridge</code></td>
</tr>
</tbody>
</table>
<p>典型应用：车载信息娱乐显示、仪表盘、后排娱乐屏、工业显示网关——凡是&quot;SoC 的 eDP 输出要拉一根长线到屏幕&quot;的场景。</p>
<h2 id="2-架构总览">2. 架构总览</h2>
<figure>
<svg width="880" height="460" viewBox="0 0 880 460" xmlns="http://www.w3.org/2000/svg">
<defs><linearGradient id="m45-bg" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#111827"/><stop offset="100%" stop-color="#1f2937"/></linearGradient><marker id="m45-ar" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0,10 3.5,0 7" fill="#38bdf8"/></marker></defs>
<rect width="880" height="460" fill="url(#m45-bg)" rx="16"/>
<text x="440" y="32" text-anchor="middle" fill="#facc15" font-family="Arial,sans-serif" font-size="18" font-weight="bold">MAX96745 系统架构</text>
<rect x="40" y="70" width="180" height="150" rx="10" fill="#0f172a" stroke="#38bdf8" stroke-width="2"/>
<text x="130" y="100" text-anchor="middle" fill="#e5e7eb" font-family="Arial,sans-serif" font-size="14">SoC 主控</text>
<text x="130" y="122" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">eDP / DisplayPort</text>
<text x="130" y="142" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">视频输出</text>
<text x="130" y="176" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">I²C / UART</text>
<text x="130" y="196" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">GPIO 控制</text>
<rect x="330" y="55" width="220" height="230" rx="10" fill="#172554" stroke="#60a5fa" stroke-width="2"/>
<text x="440" y="85" text-anchor="middle" fill="#e5e7eb" font-family="Arial,sans-serif" font-size="15" font-weight="bold">MAX96745</text>
<line x1="350" y1="97" x2="530" y2="97" stroke="#334155" stroke-width="1"/>
<text x="440" y="120" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">eDP/DP RX（训练/车道/速率）</text>
<text x="440" y="140" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">视频处理 + FRC 帧率转换</text>
<text x="440" y="160" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">GMSL2 串行化（链路 A / B）</text>
<text x="440" y="180" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">Remote CC（I²C/UART 隧道）</text>
<text x="440" y="200" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">GPIO 隧道（MFP0~25）</text>
<text x="440" y="220" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">线故障监测（LF）</text>
<text x="440" y="260" text-anchor="middle" fill="#94a3b8" font-family="Arial,sans-serif" font-size="11">16 位寄存器 · 0x0000~0x8000</text>
<rect x="660" y="60" width="180" height="100" rx="10" fill="#0f172a" stroke="#38bdf8" stroke-width="2"/>
<text x="750" y="92" text-anchor="middle" fill="#e5e7eb" font-family="Arial,sans-serif" font-size="14">链路 A</text>
<text x="750" y="114" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">同轴 / STP</text>
<text x="750" y="134" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">远端显示器 1</text>
<rect x="660" y="200" width="180" height="100" rx="10" fill="#0f172a" stroke="#38bdf8" stroke-width="2"/>
<text x="750" y="232" text-anchor="middle" fill="#e5e7eb" font-family="Arial,sans-serif" font-size="14">链路 B</text>
<text x="750" y="254" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">同轴 / STP</text>
<text x="750" y="274" text-anchor="middle" fill="#cbd5e1" font-family="Arial,sans-serif" font-size="12">远端显示器 2</text>
<path d="M220 130 L330 130" stroke="#38bdf8" stroke-width="2" fill="none" marker-end="url(#m45-ar)"/>
<path d="M220 185 L330 160" stroke="#38bdf8" stroke-width="2" fill="none" marker-end="url(#m45-ar)"/>
<path d="M550 130 L660 110" stroke="#38bdf8" stroke-width="2" fill="none" marker-end="url(#m45-ar)"/>
<path d="M550 185 L660 250" stroke="#38bdf8" stroke-width="2" fill="none" marker-end="url(#m45-ar)"/>
<text x="440" y="330" text-anchor="middle" fill="#94a3b8" font-family="Arial,sans-serif" font-size="11">视频 + 双向控制信号共缆传输，支持 PoC 远端供电</text>
</svg>
<figcaption style="text-align:center;color:#888;font-size:12px;margin-top:8px;">图 1　MAX96745 系统架构：eDP 输入，双通道 GMSL2 输出，控制信号反向隧道。</figcaption>
</figure>
<h2 id="3-特性详解">3. 特性详解</h2>
<h3 id="31-edpdisplayport-接收端">3.1 eDP/DisplayPort 接收端</h3>
<p>从寄存器布局可以确认这是一颗<strong>显示方向</strong>的串行器（对比摄像头方向的 MAX96717 是 CSI-2 输入）：</p>
<table>
<thead>
<tr>
<th>寄存器</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x641A</td>
<td>7:4</td>
<td>DPRX_TRAIN_STATE</td>
<td>DP RX 链路训练状态（LT 阶段）</td>
</tr>
<tr>
<td>0x7000</td>
<td>0</td>
<td>LINK_ENABLE</td>
<td>DP 链路使能</td>
</tr>
<tr>
<td>0x7070</td>
<td>7:0</td>
<td>MAX_LANE_COUNT</td>
<td>DP lane 数量</td>
</tr>
<tr>
<td>0x7074</td>
<td>7:0</td>
<td>MAX_LINK_RATE</td>
<td>DP 链路速率档位</td>
</tr>
<tr>
<td>0x0101</td>
<td>5:0</td>
<td>BPP</td>
<td>输入每像素位数</td>
</tr>
</tbody>
</table>
<p>DP RX 的 lane 数和链路速率决定了能传输的最大分辨率/刷新率组合（典型 4-lane HBR2/HBR3，具体以 ADI 官方规格为准）。</p>
<h3 id="32-双通道-gmsl2-输出链路-a--b">3.2 双通道 GMSL2 输出（链路 A / B）</h3>
<p>两颗远端显示器可以各挂一条链路，或做镜像/复制输出。链路 A/B 的寄存器完全对称：</p>
<table>
<thead>
<tr>
<th>功能</th>
<th>链路 A</th>
<th>链路 B</th>
</tr>
</thead>
<tbody>
<tr>
<td>链路使能</td>
<td>0x0028（LINK_EN）</td>
<td>0x0032（LINK_EN）</td>
</tr>
<tr>
<td>链路复位</td>
<td>0x0029（RESET_LINK / RESET_ONESHOT）</td>
<td>0x0033（同左）</td>
</tr>
<tr>
<td>链路锁定状态</td>
<td>0x002A（LINK_LOCKED）</td>
<td>0x0034（同左）</td>
</tr>
<tr>
<td>远程控制通道开关</td>
<td>0x0076（DIS_REM_CC）</td>
<td>0x0086（DIS_REM_CC）</td>
</tr>
<tr>
<td>视频发送激活</td>
<td>0x0107 bit6（VID_TX_ACTIVE_A）</td>
<td>0x0107 bit7（VID_TX_ACTIVE_B）</td>
</tr>
<tr>
<td>视频状态</td>
<td>0x0102（PCLKDET/DRIFT_ERR/OVERFLOW/FIFO_WARN）</td>
<td>0x0108（同左）</td>
</tr>
<tr>
<td>线故障状态</td>
<td>0x0026（LF_0/LF_1）</td>
<td>0x0027（LF_2/LF_3）</td>
</tr>
</tbody>
</table>
<p>链路使能后必须轮询 LINK_LOCKED，U-Boot 驱动里未锁定直接返回 <code>-ENODEV</code>——这是最常见的&quot;串行器不工作&quot;排查点。</p>
<h3 id="33-视频发送与状态监测">3.3 视频发送与状态监测</h3>
<ul>
<li><code>0x0100</code>：VID_TX_EN（发送使能）+ VID_LINK_SEL（选择输出到哪条链路）</li>
<li><code>0x0102/0x0108</code>：实时状态——PCLKDET（像素时钟检测）、DRIFT_ERR（时钟漂移）、OVERFLOW（FIFO 溢出）、FIFO_WARN</li>
<li><code>0x0107</code>：VID_TX_ACTIVE，驱动用它在 extcon 里上报&quot;视频输出已激活&quot;（<code>EXTCON_JACK_VIDEO_OUT</code>）</li>
</ul>
<h3 id="34-frc-帧率转换">3.4 FRC 帧率转换</h3>
<p><code>0x0750~0x0752</code> 是一组帧率转换寄存器（FRCEN、FRCGAIN、FRCSDEN、FRCDATAWIDTH、FRCASYNCEN、FRCHSPOL/FRCVSPOL、FRCDCMODE 等）。显示串行器常用它做帧率/时序适配（例如 60Hz 输入转 120Hz 输出给高刷屏），配置时要同步确认输入 BPP 与输出时序的匹配。</p>
<h3 id="35-gpio-隧道mfp0--mfp25">3.5 GPIO 隧道（MFP0 ~ MFP25）</h3>
<p>这是 GMSL 串行器最有价值的功能之一：把本地 GPIO 通过链路隧道到远端，反过来远端 GPIO 也能读回来。</p>
<ul>
<li>26 个多功能引脚 MFP0~MFP25</li>
<li>每引脚 4 个寄存器（间隔 8 字节）：
<pre tabindex="0"><code>GPIO_A_REG(gpio) = 0x0200 + gpio × 8   （方向/输出配置）
GPIO_B_REG(gpio) = 0x0201 + gpio × 8   （TX 映射 ID/上下拉）
GPIO_C_REG(gpio) = 0x0202 + gpio × 8   （RX 映射 ID/边沿速率）
GPIO_D_REG(gpio) = 0x0203 + gpio × 8   （A/B 链路收发使能）
</code></pre></li>
<li>每个引脚可配：GPIO_TX_A_x / GPIO_TX_B_x（发向链路 A/B 的远端引脚）、GPIO_RX_A_x / GPIO_RX_B_x（从链路 A/B 的远端引脚接收）、GPIO（本地直连）、I2C、UART（MFP3/MFP7）</li>
<li>GPIO TX/RX ID 范围 0~31，用于告诉远端&quot;这个 GPIO 对应远端第几号脚&quot;</li>
</ul>
<p>Linux pinctrl 驱动把这些封装成 pin function（如 <code>GPIO_TX_A_5</code>），设备树里直接指定 function 即可，不用手写寄存器。</p>
<h3 id="36-ic--uart-隧道">3.6 I²C / UART 隧道</h3>
<ul>
<li>芯片本身是 <strong>I²C MUX</strong>：本地 I²C 总线通过 Remote CC 通道访问链路远端器件</li>
<li>两个通道对应两条链路：通道 0 走链路 A（0x0076 DIS_REM_CC 控制）、通道 1 走链路 B（0x0086）</li>
<li>设备树里用 <code>i2c-mux-idle-disconnect</code> 属性控制空闲时是否断开</li>
<li>UART 复用 MFP3/MFP7</li>
</ul>
<h3 id="37-线故障监测line-fault-monitor">3.7 线故障监测（Line Fault Monitor）</h3>
<p>驱动实现了完整的线缆故障诊断（sysfs 接口 <code>line_fault_monitor</code>）：</p>
<ul>
<li>使能：<code>0x0005</code> 的 PU_LF0~PU_LF3（对应 LMN0~3 引脚）</li>
<li>状态：<code>0x0026</code>（LF_0/LF_1）、<code>0x0027</code>（LF_2/LF_3）</li>
</ul>
<table>
<thead>
<tr>
<th>状态编码</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>0b000</td>
<td>对电源短路</td>
</tr>
<tr>
<td>0b001</td>
<td>对地短路</td>
</tr>
<tr>
<td>0b010</td>
<td>正常</td>
</tr>
<tr>
<td>0b011</td>
<td>线路开路</td>
</tr>
<tr>
<td>0b1XX</td>
<td>线间短路</td>
</tr>
</tbody>
</table>
<p>这对车载线束排查非常实用——不用万用表就能知道哪根线断了还是短路了。</p>
<h3 id="38-复位电源与功耗管理">3.8 复位、电源与功耗管理</h3>
<ul>
<li><code>0x0010</code>：RESET_ALL（bit7）、SLEEP（bit3）</li>
<li>电源引脚：<code>enable-gpio</code>（高有效，上电后需 200ms）、<code>pwdnb-gpio</code>（低有效，30ms）</li>
<li>驱动用 regmap 缓存（REGCACHE_RBTREE）支持 suspend/resume，休眠时缓存寄存器、唤醒后一次性同步</li>
</ul>
<h2 id="4-引脚定义驱动确认">4. 引脚定义（驱动确认）</h2>
<blockquote>
<p>说明：MAX96745 的物理封装引脚（TQFN 具体引脚号、电源/地/功能矩阵）属于 ADI datasheet 内容，官方不公开。以下为从开源驱动逆向确认的<strong>逻辑/功能引脚</strong>，可指导软件配置；硬件设计请向 ADI 申请官方文档。</p>
</blockquote>
<h3 id="41-多功能引脚-mfp0--mfp2526-个">4.1 多功能引脚 MFP0 ~ MFP25（26 个）</h3>
<p>pinctrl 驱动确认，每个 MFP 引脚可配置为以下功能之一：</p>
<table>
<thead>
<tr>
<th>功能</th>
<th>方向</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>GPIO</td>
<td>本地</td>
<td>本地普通 GPIO（输入 / 输出 / 上下拉）</td>
</tr>
<tr>
<td>GPIO_TX_A_x</td>
<td>本地 → 链路 A</td>
<td>把本地 GPIO 状态隧道发送到链路 A 远端 x 号脚</td>
</tr>
<tr>
<td>GPIO_TX_B_x</td>
<td>本地 → 链路 B</td>
<td>同上，发往链路 B</td>
</tr>
<tr>
<td>GPIO_RX_A_x</td>
<td>链路 A → 本地</td>
<td>读取链路 A 远端 x 号脚状态</td>
</tr>
<tr>
<td>GPIO_RX_B_x</td>
<td>链路 B → 本地</td>
<td>读取链路 B 远端 x 号脚状态</td>
</tr>
<tr>
<td>I2C</td>
<td>本地</td>
<td>复用为 I2C（仅 MFP3 / MFP7）</td>
</tr>
<tr>
<td>UART</td>
<td>本地</td>
<td>复用为 UART（仅 MFP3 / MFP7）</td>
</tr>
</tbody>
</table>
<ul>
<li>x = 0~31（GPIO 隧道远端映射 ID，寄存器 GPIO_TX_ID / GPIO_RX_ID）</li>
<li>每个引脚 4 个配置寄存器（0x0200 + gpio×8 起），方向 / 隧道映射 / 上下拉独立可配</li>
</ul>
<p><strong>引脚清单</strong>（26 个多功能引脚）：</p>
<table>
<thead>
<tr>
<th>引脚</th>
<th>可用功能</th>
</tr>
</thead>
<tbody>
<tr>
<td>MFP0 ~ MFP2</td>
<td>GPIO / GPIO_TX_A_x / GPIO_TX_B_x / GPIO_RX_A_x / GPIO_RX_B_x</td>
</tr>
<tr>
<td><strong>MFP3</strong></td>
<td>上述功能 <strong>+ I2C + UART</strong></td>
</tr>
<tr>
<td>MFP4 ~ MFP6</td>
<td>GPIO / GPIO_TX_A_x / GPIO_TX_B_x / GPIO_RX_A_x / GPIO_RX_B_x</td>
</tr>
<tr>
<td><strong>MFP7</strong></td>
<td>上述功能 <strong>+ I2C + UART</strong></td>
</tr>
<tr>
<td>MFP8 ~ MFP25</td>
<td>GPIO / GPIO_TX_A_x / GPIO_TX_B_x / GPIO_RX_A_x / GPIO_RX_B_x</td>
</tr>
</tbody>
</table>
<h3 id="42-线故障监测引脚-lmn0--lmn34-个">4.2 线故障监测引脚 LMN0 ~ LMN3（4 个）</h3>
<p>从 0x0005 的 PU_LF0~PU_LF3 与 0x0026 / 0x0027 的 LF_0~LF_3 推断：</p>
<table>
<thead>
<tr>
<th>引脚</th>
<th>使能位</th>
<th>状态位</th>
<th>监测对象</th>
</tr>
</thead>
<tbody>
<tr>
<td>LMN0</td>
<td>PU_LF0</td>
<td>LF_0</td>
<td>链路通道 0</td>
</tr>
<tr>
<td>LMN1</td>
<td>PU_LF1</td>
<td>LF_1</td>
<td>链路通道 1</td>
</tr>
<tr>
<td>LMN2</td>
<td>PU_LF2</td>
<td>LF_2</td>
<td>链路通道 2</td>
</tr>
<tr>
<td>LMN3</td>
<td>PU_LF3</td>
<td>LF_3</td>
<td>链路通道 3</td>
</tr>
</tbody>
</table>
<h3 id="43-控制与电源引脚">4.3 控制与电源引脚</h3>
<p>从设备树属性确认：</p>
<table>
<thead>
<tr>
<th>引脚</th>
<th>设备树属性</th>
<th>极性 / 时序</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>EN（使能）</td>
<td>enable-gpios</td>
<td>高有效，200ms</td>
<td>芯片上电使能</td>
</tr>
<tr>
<td>PWDNB</td>
<td>pwdnb-gpios</td>
<td>低有效，30ms</td>
<td>掉电 / 复位控制（低 = 关闭）</td>
</tr>
</tbody>
</table>
<h3 id="44-接口引脚接口级推断">4.4 接口引脚（接口级，推断）</h3>
<p>以下为接口级引脚（具体封装引脚号需官方文档）：</p>
<table>
<thead>
<tr>
<th>接口</th>
<th>说明</th>
<th>依据</th>
</tr>
</thead>
<tbody>
<tr>
<td>eDP / DP 输入</td>
<td>多 lane（lane 数可配）+ DP AUX</td>
<td>0x7070 MAX_LANE_COUNT、0x641A 训练状态</td>
</tr>
<tr>
<td>GMSL2 输出 A</td>
<td>SIO+/SIO-（或同轴单端）</td>
<td>链路 A 寄存器组</td>
</tr>
<tr>
<td>GMSL2 输出 B</td>
<td>SIO+/SIO-（或同轴单端）</td>
<td>链路 B 寄存器组</td>
</tr>
<tr>
<td>本地 I2C</td>
<td>SCL / SDA（16 位寄存器配置总线）</td>
<td>i2c 驱动</td>
</tr>
<tr>
<td>电源</td>
<td>核心供电 + PoC（Power-over-Coax）</td>
<td>enable / pwdnb 时序 + PoC 支持</td>
</tr>
</tbody>
</table>
<blockquote>
<p>物理封装（TQFN）的完整引脚图与功能矩阵请向 ADI 申请官方 datasheet（NDA）。</p>
</blockquote>
<h2 id="5-寄存器速查总表">5. 寄存器速查总表</h2>
<h3 id="41-系统与复位">4.1 系统与复位</h3>
<table>
<thead>
<tr>
<th>地址</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x0005</td>
<td>3:0</td>
<td>PU_LF3~PU_LF0</td>
<td>线故障监测使能（每 bit 对应 LMN0~3）</td>
</tr>
<tr>
<td>0x0010</td>
<td>7</td>
<td>RESET_ALL</td>
<td>全复位</td>
</tr>
<tr>
<td>0x0010</td>
<td>3</td>
<td>SLEEP</td>
<td>睡眠</td>
</tr>
<tr>
<td>0x0013</td>
<td>3</td>
<td>LOCKED</td>
<td>链路锁定标志</td>
</tr>
<tr>
<td>0x0013</td>
<td>2</td>
<td>ERROR</td>
<td>链路错误标志</td>
</tr>
<tr>
<td>0x0070</td>
<td>7:0</td>
<td>I2C_FAST_MODE</td>
<td>I2C 快速模式配置（驱动写 0x16）</td>
</tr>
</tbody>
</table>
<h3 id="42-链路-a--b">4.2 链路 A / B</h3>
<table>
<thead>
<tr>
<th>地址</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x0026</td>
<td>2:0 / 6:4</td>
<td>LF_0 / LF_1</td>
<td>链路 A 侧通道 0/1 线故障</td>
</tr>
<tr>
<td>0x0027</td>
<td>2:0 / 6:4</td>
<td>LF_2 / LF_3</td>
<td>链路 B 侧通道 2/3 线故障</td>
</tr>
<tr>
<td>0x0028 / 0x0032</td>
<td>7</td>
<td>LINK_EN</td>
<td>链路 A / B 使能</td>
</tr>
<tr>
<td>0x0029 / 0x0033</td>
<td>0</td>
<td>RESET_LINK</td>
<td>链路 A / B 复位</td>
</tr>
<tr>
<td>0x0029 / 0x0033</td>
<td>1</td>
<td>RESET_ONESHOT</td>
<td>链路 A / B 一次性复位</td>
</tr>
<tr>
<td>0x002A / 0x0034</td>
<td>0</td>
<td>LINK_LOCKED</td>
<td>链路 A / B 锁定状态</td>
</tr>
<tr>
<td>0x0076 / 0x0086</td>
<td>7</td>
<td>DIS_REM_CC</td>
<td>禁用链路 A / B 远程控制通道</td>
</tr>
</tbody>
</table>
<h3 id="43-视频">4.3 视频</h3>
<table>
<thead>
<tr>
<th>地址</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x0100</td>
<td>2:1</td>
<td>VID_LINK_SEL</td>
<td>视频输出链路选择</td>
</tr>
<tr>
<td>0x0100</td>
<td>0</td>
<td>VID_TX_EN</td>
<td>视频发送使能</td>
</tr>
<tr>
<td>0x0101</td>
<td>5:0</td>
<td>BPP</td>
<td>每像素位数</td>
</tr>
<tr>
<td>0x0102</td>
<td>7</td>
<td>PCLKDET_A</td>
<td>链路 A 像素时钟检测</td>
</tr>
<tr>
<td>0x0102</td>
<td>6</td>
<td>DRIFT_ERR_A</td>
<td>链路 A 时钟漂移错误</td>
</tr>
<tr>
<td>0x0102</td>
<td>5</td>
<td>OVERFLOW_A</td>
<td>链路 A FIFO 溢出</td>
</tr>
<tr>
<td>0x0102</td>
<td>4</td>
<td>FIFO_WARN_A</td>
<td>链路 A FIFO 警告</td>
</tr>
<tr>
<td>0x0102</td>
<td>2</td>
<td>LIM_HEART</td>
<td>心跳限制</td>
</tr>
<tr>
<td>0x0107</td>
<td>7:6</td>
<td>VID_TX_ACTIVE_B / _A</td>
<td>链路 B / A 视频发送激活</td>
</tr>
<tr>
<td>0x0108</td>
<td>7:4</td>
<td>PCLKDET_B / DRIFT_ERR_B / OVERFLOW_B / FIFO_WARN_B</td>
<td>链路 B 视频状态</td>
</tr>
</tbody>
</table>
<h3 id="44-gpio--mfpgpio--025">4.4 GPIO / MFP（gpio = 0~25）</h3>
<table>
<thead>
<tr>
<th>寄存器组</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>A（0x0200+gpio×8）</td>
<td>7</td>
<td>RES_CFG</td>
<td>电阻配置</td>
</tr>
<tr>
<td>A</td>
<td>5</td>
<td>TX_COM_EN</td>
<td>发送公共端使能</td>
</tr>
<tr>
<td>A</td>
<td>4 / 3</td>
<td>GPIO_OUT / GPIO_IN</td>
<td>输出 / 输入</td>
</tr>
<tr>
<td>A</td>
<td>0</td>
<td>GPIO_OUT_DIS</td>
<td>输出禁用</td>
</tr>
<tr>
<td>B（0x0201+gpio×8）</td>
<td>7:6</td>
<td>PULL_UPDN_SEL</td>
<td>上下拉选择</td>
</tr>
<tr>
<td>B</td>
<td>5</td>
<td>OUT_TYPEC</td>
<td>输出类型</td>
</tr>
<tr>
<td>B</td>
<td>4:0</td>
<td>GPIO_TX_ID</td>
<td>GPIO TX 映射 ID（0~31）</td>
</tr>
<tr>
<td>C（0x0202+gpio×8）</td>
<td>7</td>
<td>OVR_RES_CFG</td>
<td>电阻配置覆盖</td>
</tr>
<tr>
<td>C</td>
<td>6:5</td>
<td>IO_EDGE_RATE</td>
<td>IO 边沿速率</td>
</tr>
<tr>
<td>C</td>
<td>4:0</td>
<td>GPIO_RX_ID</td>
<td>GPIO RX 映射 ID（0~31）</td>
</tr>
<tr>
<td>D（0x0203+gpio×8）</td>
<td>5</td>
<td>GPIO_IO_RX_EN</td>
<td>IO RX 使能</td>
</tr>
<tr>
<td>D</td>
<td>4</td>
<td>GPIO_OUT_LGC</td>
<td>输出逻辑</td>
</tr>
<tr>
<td>D</td>
<td>3 / 2</td>
<td>GPIO_RX_EN_B / GPIO_TX_EN_B</td>
<td>链路 B 收 / 发使能</td>
</tr>
<tr>
<td>D</td>
<td>1 / 0</td>
<td>GPIO_RX_EN_A / GPIO_TX_EN_A</td>
<td>链路 A 收 / 发使能</td>
</tr>
</tbody>
</table>
<h3 id="45-frc-帧率转换">4.5 FRC 帧率转换</h3>
<table>
<thead>
<tr>
<th>地址</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x0750</td>
<td>7:6</td>
<td>FRCZEROPAD</td>
<td>零填充</td>
</tr>
<tr>
<td>0x0750</td>
<td>5</td>
<td>FRCZPEN</td>
<td>零填充使能</td>
</tr>
<tr>
<td>0x0750</td>
<td>4</td>
<td>FRCSDGAIN</td>
<td>增益（简化）</td>
</tr>
<tr>
<td>0x0750</td>
<td>3</td>
<td>FRCSDEN</td>
<td>FRC 使能（简化）</td>
</tr>
<tr>
<td>0x0750</td>
<td>2:1</td>
<td>FRCGAIN</td>
<td>FRC 增益</td>
</tr>
<tr>
<td>0x0750</td>
<td>0</td>
<td>FRCEN</td>
<td>FRC 使能</td>
</tr>
<tr>
<td>0x0751</td>
<td>3</td>
<td>FRCDATAWIDTH</td>
<td>数据宽度</td>
</tr>
<tr>
<td>0x0751</td>
<td>2</td>
<td>FRCASYNCEN</td>
<td>异步模式</td>
</tr>
<tr>
<td>0x0751</td>
<td>1 / 0</td>
<td>FRCHSPOL / FRCVSPOL</td>
<td>HS / VS 极性</td>
</tr>
<tr>
<td>0x0752</td>
<td>1:0</td>
<td>FRCDCMODE</td>
<td>DC 模式</td>
</tr>
</tbody>
</table>
<h3 id="46-dp-接收">4.6 DP 接收</h3>
<table>
<thead>
<tr>
<th>地址</th>
<th>位</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>0x641A</td>
<td>7:4</td>
<td>DPRX_TRAIN_STATE</td>
<td>DP 链路训练状态</td>
</tr>
<tr>
<td>0x7000</td>
<td>0</td>
<td>LINK_ENABLE</td>
<td>DP 链路使能</td>
</tr>
<tr>
<td>0x7070</td>
<td>7:0</td>
<td>MAX_LANE_COUNT</td>
<td>lane 数量</td>
</tr>
<tr>
<td>0x7074</td>
<td>7:0</td>
<td>MAX_LINK_RATE</td>
<td>链路速率</td>
</tr>
</tbody>
</table>
<h2 id="6-初始化流程由驱动推导">6. 初始化流程（由驱动推导）</h2>
<pre tabindex="0"><code>1. 上电：enable GPIO = 1 → 等待 200ms → pwdnb GPIO = 0 → 等待 30ms
2. 全复位：0x0010 写 RESET_ALL=1 → 等待 100ms
3. I2C 快速模式：0x0070 = 0x16
4. （可选）线故障监测：0x0005 置位 PU_LFx
5. 链路使能：0x0028（A）/ 0x0032（B）写 LINK_EN=1
6. 等待锁定：轮询 0x002A（A）/ 0x0034（B）LINK_LOCKED=1
   → 超时未锁定说明链路物理层有问题（线序/供电/对端未上电）
7. 视频发送：0x0100 写 VID_TX_EN=1 + VID_LINK_SEL 选择链路
8. GPIO 隧道：按需配置 MFP 的 0x0200~0x0203
   （Linux 下直接用 pinctrl 的 function，如 GPIO_TX_A_5）
9. I2C 隧道：通过 0x0076/0x0086 的 DIS_REM_CC 切换通道访问远端器件
</code></pre><h2 id="7-设备树配置示例">7. 设备树配置示例</h2>
<p>以下设备树基于驱动代码推断（I2C 地址和 GPIO 编号按实际硬件调整）：</p>
<pre tabindex="0"><code class="language-dts" data-lang="dts">&amp;i2c4 {
    max96745: max96745@48 {            /* I2C 地址按硬件实际修改 */
        compatible = &#34;maxim,max96745&#34;;
        reg = &lt;0x48&gt;;
        enable-gpios = &lt;&amp;gpio2 5 GPIO_ACTIVE_HIGH&gt;;   /* 上电使能 */
        pwdnb-gpios  = &lt;&amp;gpio2 6 GPIO_ACTIVE_LOW&gt;;    /* 低有效 */
        i2c-mux-idle-disconnect;                       /* 空闲断开 MUX */
        line-fault-monitor = &lt;0&gt;;                      /* 使能 LMN0 监测 */

        #address-cells = &lt;1&gt;;
        #size-cells = &lt;0&gt;;

        /* 链路 A 远端器件（通过 Remote CC 隧道访问） */
        link_a_dev: link_a@50 {
            reg = &lt;0x50&gt;;                              /* 远端器件 I2C 地址 */
        };

        /* 链路 B 远端器件 */
        link_b_dev: link_b@51 {
            reg = &lt;0x51&gt;;
        };
    };
};
</code></pre><blockquote>
<p>注：以上 I2C 地址 0x48 为常见默认值，<strong>需以实际硬件/ADI 确认为准</strong>；GPIO 编号按你的板卡原理图修改。</p>
</blockquote>
<h2 id="8-与同系列芯片对比">8. 与同系列芯片对比</h2>
<table>
<thead>
<tr>
<th>芯片</th>
<th>方向</th>
<th>输入</th>
<th>输出</th>
<th>用途</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>MAX96745</strong></td>
<td>串行器</td>
<td>eDP / DisplayPort</td>
<td>双 GMSL2</td>
<td>车载/工业显示长线传输</td>
</tr>
<tr>
<td>MAX96755 / F</td>
<td>串行器</td>
<td>eDP</td>
<td>GMSL2</td>
<td>同类显示串行器</td>
</tr>
<tr>
<td>MAX96717</td>
<td>串行器</td>
<td>MIPI CSI-2</td>
<td>GMSL2</td>
<td>摄像头信号上行车</td>
</tr>
<tr>
<td>MAX96789</td>
<td>串行器</td>
<td>多路</td>
<td>GMSL2</td>
<td>摄像头聚合（寄存器手册已另文整理）</td>
</tr>
<tr>
<td>MAX96724</td>
<td>解串器</td>
<td>4× GMSL2/1</td>
<td>CSI-2</td>
<td>摄像头信号聚合接收</td>
</tr>
</tbody>
</table>
<p>选型要点：<strong>显示方向选 MAX96745/96755，摄像头方向选 MAX96717/96789</strong>；需要多路输入聚合选解串器（MAX96724 等）。</p>
<h2 id="9-参考资料">9. 参考资料</h2>
<h3 id="驱动源码">驱动源码</h3>
<table>
<thead>
<tr>
<th>来源</th>
<th>仓库</th>
<th>文件</th>
</tr>
</thead>
<tbody>
<tr>
<td>U-Boot</td>
<td><a href="https://github.com/neggles/u-boot-quartz64">neggles/u-boot-quartz64</a></td>
<td><code>drivers/i2c/muxes/max96745.c</code></td>
</tr>
<tr>
<td>Linux MFD</td>
<td>kernel-5.10-rockchip</td>
<td><code>drivers/mfd/max96745.c</code></td>
</tr>
<tr>
<td>Linux Pinctrl</td>
<td>同上</td>
<td><code>drivers/pinctrl/pinctrl-max96745.c</code></td>
</tr>
<tr>
<td>Linux 头文件</td>
<td>同上</td>
<td><code>include/linux/mfd/max96745.h</code></td>
</tr>
</tbody>
</table>
<h3 id="官方资料">官方资料</h3>
<ul>
<li>ADI 官方产品页与 datasheet 不公开（需 NDA），可通过 ADI 官网联系 FAE 申请</li>
<li>ADI 官方 GMSL 开源入口：https://github.com/analogdevicesinc/gmsl</li>
<li>ADI GMSL2 硬件设计与验证指南（公开 PDF）：<code>Public GMSL2 Hardware Design and Validation Guide</code></li>
</ul>
<hr>
<p><em>本文档由开源驱动逆向整理，寄存器信息为芯片接口技术事实，仅供工程参考，不构成 ADI 官方规格承诺。</em></p>
]]></content:encoded></item></channel></rss>