> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CQ2390

## 调试 DSI 显示

DSI0 面板通过 EVK 的 CTP 显示子卡连接，并映射到 `DSI-1`。其直连面板路径决定了第 4 步和第 5 步中使用的 DSI 时钟和驱动程序名称。

在运行软件检查之前，请按照 [CQ2390 DSI 显示设置](https://dragonwingdocs.qualcomm.com/zh/Technologies/Display/enable-display-cq2390-iq2390.md#connect-and-verify-the-dsi-display) 验证连接和默认显示开关位置。在重新插拔面板线缆或更改开关之前，请先关闭 EVK 电源。

**表：显示硬件检查**

| **检查项** | **预期默认状态** | **如果检查失败** |
| - | - | - |
| DSI 路由 | SW3-5 默认为 OFF，用于显示子卡的 B2B 路径。 | 如果位置已更改，请恢复默认位置，并检查子卡和面板线缆是否完全插好。 |
| 背光路由 | SW6-1 默认为 OFF，用于显示 PWM 路径。 | 如果位置已更改，请在检查 Weston 之前恢复默认位置。 |

> [!NOTE]
>
> 通过 SSH 连接到目标设备，并在 root shell 中运行目标设备命令。有关说明，请参阅 [使用 SSH 登录](https://dragonwingdocs.qualcomm.com/Key-Documents/Flash-Guide/how-to-sign-in-with-ssh)。

### 1. 识别连接器

运行以下命令：

> ```text theme={null}
> modetest -M msm -c
> ```

此命令会列出 DSI 连接器、其 DRM ID 及其连接状态。

### 2. 检查连接器状态和模式

运行以下命令：

> ```text theme={null}
> cat /sys/class/drm/card0-DSI-1/status
> ```

此命令会报告面板是否已连接。预期结果为 `connected`。

**参考输出**

```text theme={null}
connected
```

运行以下命令：

> ```text theme={null}
> cat /sys/class/drm/card0-DSI-1/modes
> ```

此命令会列出面板报告的模式。

**参考输出**

```text theme={null}
1080x1920
```

已连接的面板必须报告一个或多个模式。如果 `card0` 不存在，请使用 `modetest` 报告的 DRM 卡。仅有 `connected` 状态并不能验证物理面板连接或背光电源。即使 DRM 报告固定 DSI 面板已连接，也请检查 FPC 线缆和 EVK 路由。

### 3. 检查活动 DRM 状态

如果尚未挂载 `debugfs`，请运行以下命令：

> ```text theme={null}
> mount -t debugfs none /sys/kernel/debug
> ```

此命令使 DRM 状态和接口调试数据可供访问。运行以下命令：

> ```text theme={null}
> modetest -M msm -c -p
> ```

此命令会显示 DSI 编码器、CRTC、模式和平面。运行以下命令：

> ```text theme={null}
> cat /sys/kernel/debug/dri/0/state
> ```

此命令会显示内核 DRM 连接器、编码器、CRTC 和平面状态。

**参考输出**

```text theme={null}
connector[32]: DSI-1
        crtc=crtc-0
```

对于 `DSI-1`，请验证 `status: connected`、非零的 CRTC、`active=yes`，以及已分配给该 CRTC 的平面。请使用 `modetest` 报告的 ID，因为这些 ID 可能因版本而异。

> [!NOTE]
>
> **测试显示模式后恢复 Weston。**
>
> 要测试其他模式，请按照 [运行 DRM modetest](https://dragonwingdocs.qualcomm.com/zh/Technologies/Display/run-drm-modetest.md) 操作，然后在返回 Weston 测试之前 [重新启动 Weston](https://dragonwingdocs.qualcomm.com/zh/Technologies/Display/troubleshoot-relaunch-weston.md)。

### 4. 检查接口信号

运行以下命令：

> ```text theme={null}
> cat /sys/kernel/debug/clk/disp_cc_mdss_pclk*/clk_rate
> ```

此命令会以 Hz 为单位打印可用的 DSI 像素时钟频率。运行以下命令：

> ```text theme={null}
> ls /sys/kernel/debug/dri/0/debug/
> ```

此命令会列出可用的 DPU 调试组。将该频率与以 kHz 为单位的活动 CRTC 像素时钟进行比较。如果不存在时钟文件，请继续进行 DRM 和内核检查。

### 5. 检查本次启动的内核消息和实时显示事件

运行以下命令：

> ```text theme={null}
> journalctl -k -b --no-pager -o short-monotonic | grep -Ei 'msm_dsi|dsi_phy|panel|dpu|drm'
> ```

此命令仅显示本次启动中的面板、DSI 和 DRM 消息。如果未返回任何内容，请在重现问题时捕获实时数据。

**参考输出**

```text theme={null}
[   12.326611] msm_dpu ae01000.display-controller: bound ae94000.dsi
[   12.512759] [drm] Initialized msm 1.13.0 for ae01000.display-controller
```

要在重现问题时捕获显示事件，请运行以下命令：

> ```text theme={null}
> journalctl -f
> ```

此命令会跟踪新的 Weston 和内核消息。运行时请勿使用 `-k`，以便输出包含合成器连接器变化和输出启用信息。重现问题，然后按 `Ctrl+C`。

查找连接器状态变化、EDID 或模式检测、输出启用以及驱动程序错误。将相关消息与连接器状态和活动 DRM 状态进行比较。

成功启动时会绑定 DSI 控制器和 DPU。`timeout`、`failed` 或 `error` 消息表明问题出在面板、DSI PHY、电源或时钟路径。如果 DRM 处于活动状态且没有相应错误，请检查面板线缆和背光路由，然后将 Weston 输出与 DRM 状态进行比较。

### 6. 解读结果

| **结果** | **可能的问题区域** | **后续操作** |
| - | - | - |
| `disconnected` | 面板、线缆或 DSI 路由 | 在继续之前检查 FPC 线缆、显示子卡和 SW3-5 设置。 |
| 存在模式，但没有 CRTC、`active=yes` 或平面 | DRM 或合成器 | 检查活动 DRM 状态和 Weston。 |
| 内核日志中出现 `timeout`、`failed` 或 `error` | 面板、DSI PHY、电源或时钟 | 在重新启动 Weston 之前检查所指出的资源。 |
| CRTC 处于活动状态且无内核错误，但面板变暗或黑屏 | 面板连接、背光或 Weston | 检查 FPC 线缆和 SW6-1 设置，然后检查 Wayland 输出布局。 |

> [!NOTE]
>
> **在检查输出布局之前验证 Weston 服务。**
>
> 运行以下命令：
>
> ```text theme={null}
> systemctl is-active weston
> ```
>
> 预期结果为 `active`。如果服务未处于活动状态，请先 [重新启动 Weston](https://dragonwingdocs.qualcomm.com/zh/Technologies/Display/troubleshoot-relaunch-weston.md)，然后再继续。

### 7. 检查 Weston 和输出布局

运行以下命令：

> ```text theme={null}
> journalctl -b -u weston -n 40 --no-pager
> ```

此命令会显示本次启动中最新的 Weston 消息。如果 Weston 处于活动状态但显示黑屏，请运行以下命令：

> ```text theme={null}
> find /run/user/<weston-uid> -maxdepth 1 -type s -name 'wayland-*' -printf '%f\n'
> ```

此命令会列出可用的 Wayland 套接字名称。替换占位符后运行以下命令：

> ```text theme={null}
> runuser -u weston -- env XDG_RUNTIME_DIR=/run/user/<weston-uid> WAYLAND_DISPLAY=<socket-name> wayland-info
> ```

> [!NOTE]
>
> **将 Weston 输出与 DRM 状态进行比较。**
>
> 此命令会打印 Weston 输出信息。找到所选的显示输出，并将其与 DRM 连接器和 CRTC 状态进行比较。如果 Weston 未处于活动状态，请先 [重新启动 Weston](https://dragonwingdocs.qualcomm.com/zh/Technologies/Display/troubleshoot-relaunch-weston.md)，然后再继续。
