A527的EDP屏调试

EDP屏调试修改

1.修改了uboot和内核的设备树,添加edp0的配置

&edp0 {
    // use if hardware reset pin is need
    /* edp_hw_reset_pin = <&pio PH XX GPIO_ACTIVE_LOW>; */

    lcd_index            = <0>;
    lcd_bl_index        = <1>;
    edp_ssc_en = <0>;
    edp_ssc_mode = <0>;
    edp_psr_support = <0>;
    edp_colordepth = <8>; /* 6/8/10/12/16 */
    edp_color_fmt = <0>; /* 0:RGB 1: YUV444 2: YUV422 */

    lane0_sw = <0>;
    lane0_pre = <0>;
    lane1_sw = <0>;
    lane1_pre = <0>;
    lane2_sw = <0>;
    lane2_pre = <0>;
    lane3_sw = <0>;
    lane3_pre = <0>;
    edp_lane_cnt = <2>;
    edp_lane_rate = <1>;//5.4G
    efficient_training = <0>;
    //edp_sramble_seed = <1>;
    //edp_training_func = <1>;

    sink_capacity_prefer = <1>;
    edid_timings_prefer = <1>;
    timings_fixed = <1>;
    
    /* timings config */
    edp_timings_type = <1>;
    /*edp_x = <1920>;
    edp_ht = <2270>;
    edp_hspw = <44>;
    edp_hbp = <148>;
    edp_hfp = <88>;
    edp_y = <1080>;
    edp_vt = <1150>;
    edp_vspw = <5>;
    edp_vbp = <36>;
    edp_vfp = <4>;*/
    
    edp_x = <1920>;
    edp_ht = <2132>;
    edp_hspw = <32>;
    edp_hbp = <132>;
    edp_hfp = <48>;
    edp_y = <1080>;
    edp_vt = <1125>;
    edp_vspw = <6>;
    edp_vbp = <36>;
    edp_vfp = <3>;
    //sink_capacity_prefer=<1>;
    
    edp_hpolar = <1>;
    edp_vpolar = <1>;
    edp_fps = <60>;

    edp_panel_used = <1>;
    edp_panel_driver = "general_panel";
    edp_bl_en       = <&pio PI 3 1 0 3 1>;//???????,??????? YNH-818-V1.1.PDF  LCD1-BL-EN
    //edp_gpio_panel_reset = <&pio PL 2 1 0 3 1>;
    //edp_gpio_1 = <&pio PL 2 1 0 3 1>;
    edp_pwm_used = <1>;
    edp_pwm_ch = <5>;
    edp_pwm_freq = <50000>;
    edp_pwm_pol = <1>;
    edp_default_backlight = <200>;
    edp_panel_power_0 = "edp-panel";

    vcc-edp-supply = <&reg_bldo3>;
    vdd-edp-supply = <&reg_dcdc2>;
    edp_training_param_type=<1>;
    status = "okay";
};

如果配置为单屏,内核的lcd0/1/2的设备树需要去掉,不然会出现系统内核会跑崩

2.同时要修改安卓这边的代码,不然到了开机动画不会显示

diff --git a/a527-pro2/display/config.mk b/a527-pro2/display/config.mk
index a408c83..54c1960 100644
--- a/a527-pro2/display/config.mk
+++ b/a527-pro2/display/config.mk
@@ -1,6 +1,9 @@
 PRODUCT_SPECIAL_DISPLAYCONFIG := true
 LOCAL_MODULE_PATH := $(shell dirname $(lastword $(MAKEFILE_LIST)))
 
+DISPLAY_HOTPLUG_SUPPORT := true
+$(call soong_config_add,vendor,hotplugSupport,$(DISPLAY_HOTPLUG_SUPPORT))
+
 ifeq ($(PRODUCT_SPECIAL_DISPLAYCONFIG),true)
 PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,$(LOCAL_MODULE_PATH)/dispconfigs,$(TARGET_COPY_OUT_VENDOR)/etc/dispconfigs)
 endif
diff --git a/a527-pro2/display/dispconfigs/a527-pro2.json b/a527-pro2/display/dispconfigs/a527-pro2.json
index 6068b3f..f42bdd6 100644
--- a/a527-pro2/display/dispconfigs/a527-pro2.json
+++ b/a527-pro2/display/dispconfigs/a527-pro2.json
@@ -1,17 +1,17 @@
 {
     "DisplayEngineVersion": 2,
-    "DisplayNumber": 3, /*Display0, Display1, Display2 */
+    "DisplayNumber": 1, /*Display0, Display1, Display2 */
 
     "PrimaryDisplay": ["Display0"],
-    "ExternalDisplay": ["Display1", "Display2"],
+    "ExternalDisplay": ["Display1"],
 
     "Display0": {
         /* Available interface type: LCD/HDMI/CVBS */
-        "InterfaceType": "LCD",
+        "InterfaceType": "EDP",
         "DisplayEnginePortId": 0,
         "OverrideFramebufferSize": 1,
-        "FramebufferWidth": 800,
-        "FramebufferHeight": 1280,
+        "FramebufferWidth": 1920,
+        "FramebufferHeight": 1080,
         "DpiX": 213,
         "DpiY": 213,
         "HotplugSupported": 0,

<think>我们正在处理一个关于配置解串器DS90UB984的问题。用户希望将DS90UB984配置为通过EDP输出到IL26800A,并将LVDS信号连接到显示。注意:DS90UB984是解串器,通常用于将串行数据转换为并行数据,而IL26800A是一个桥接芯片(将eDP转换为LVDS)。因此,我们需要配置DS90UB984输出eDP信号到IL26800A,然后IL26800A将eDP转换为LVDS输出到显示。 步骤概述: 1. 硬件连接:确保DS90UB984的eDP输出正确连接到IL26800A的输入,并且IL26800A的LVDS输出连接到显示。 2. 配置DS90UB984:通过I2C等串行接口配置DS90UB984的寄存器,使其输出模式为eDP(而不是其他模式如LVDS等)。 3. 配置IL26800A:同样通过I2C配置IL26800A,使其正确接收eDP信号并转换为LVDS信号输出,同时需要根据显示的LVDS参数进行配置(如分辨率、时序等)。 4. 验证:通过读取寄存器或观察输出信号来验证配置是否正确。 详细步骤: 步骤1:硬件连接 - DS90UB984的eDP输出引脚(通常是一组差分对)连接到IL26800A的eDP输入。 - IL26800A的LVDS输出连接到显示的LVDS输入。 - 确保I2C控制线(SDA, SCL)连接正确,以便通过控制器(如MCU或处理器)配置这两个芯片。 - 确保电源和地连接正确,时钟信号等连接无误。 步骤2:配置DS90UB984 DS90UB984需要配置为eDP输出模式。具体寄存器配置需要参考DS90UB984的数据手册。以下是一些关键点: - 设置输出接口类型为eDP:在相应的输出模式寄存器中写入eDP对应的值。例如,寄存器0x4C(Output Port Configuration)可能需要设置为eDP模式。 - 配置eDP的链路参数:如通道数(通常为1或2通道)、链路速率(如1.62Gbps或2.7Gbps)、电压摆幅等。 - 配置视频参数:根据输入的视频流格式(来自串行输入)和输出的eDP格式,设置正确的视频映射、色彩深度等。 - 注意:DS90UB984的输入通常是通过FPD-Link III接收的串行数据,因此也需要确保输入配置正确(如串行器配置)。 示例配置代码(通过I2C写入寄存器): 假设我们要将寄存器0x4C设置为0x01(表示eDP输出模式): I2C写操作:设备地址(假设为0x18),寄存器地址0x4C,数据0x01。 步骤3:配置IL26800A IL26800A是一个eDP到LVDS的桥接芯片。需要根据显示的LVDS参数进行配置,包括: - 输入eDP配置:设置eDP的通道数、速率等(通常与DS90UB984的输出配置一致)。 - 输出LVDS配置:设置LVDS的通道数、输出格式(如JEIDA或VESA)、像素时钟、分辨率等。 - 时序配置:根据显示的时序要求(如水平同步、垂直同步、前沿、后沿等)配置相应的寄存器。 示例配置代码(通过I2C写入寄存器): 假设IL26800A的设备地址为0x2C,我们需要设置LVDS输出格式为6位,VESA格式,则可能需要设置寄存器0x1A为0x00(具体参考IL26800A手册)。 步骤4:验证 - 可以通过读取两个芯片的寄存器来确认配置是否成功。 - 使用示波器或逻辑分析仪检查信号是否正常。 - 如果显示能正常显示,则配置成功。 注意事项: - 以上步骤需要参考两个芯片的详细数据手册,因为具体的寄存器地址和值可能因芯片版本和具体应用而有所不同。 - 确保两个芯片的电源和复位时序正确。 由于具体寄存器配置细节依赖于芯片手册,这里无法给出所有寄存器的精确值。建议用户查阅相关手册。 相关问题: 1. 如何通过I2C配置DS90UB984的寄存器? 2. IL26800A支持哪些LVDS输出格式? 3. 如何调试DS90UB984和IL26800A之间的通信问题?</think>### 配置 DS90UB984 解串器通过 EDP 输出到 IL26800A 并连接 LVDS 显示的步骤 #### 1. **硬件连接** - **DS90UB984 输出端**:将解串器的 eDP 输出接口连接到 IL26800A 的 eDP 输入端口。 - 需匹配 eDP 通道数(通常为 1-4 对差分线)和时钟频率(参考芯片手册的电气规格)。 - **IL26800A 输出端**:将 IL26800A 的 LVDS 输出连接到显示的 LVDS 输入接口。 - 确保 LVDS 通道数(通常 1-8 对)、像素时钟和时序与显示规格一致[^1]。 - **控制接口**:连接 I²C 总线(SDA/SCL)到主控制器(如 MCU),用于寄存器配置。 #### 2. **DS90UB984 寄存器配置**(通过 I²C) - **启用 eDP 输出模式**: - 设置寄存器 `0x4C`(输出端口控制):写入 `0x01` 选择 eDP 输出(替代默认 LVDS)[^2]。 - 示例代码: ```c i2c_write(0x18, 0x4C, 0x01); // DS90UB984 设备地址通常为 0x18 ``` - **配置 eDP 参数**: - 寄存器 `0x58-0x5B`:设置 eDP 链路速率(如 2.7 Gbps/通道)、电压摆幅(Swing)和预加重(Pre-emphasis)。 - 寄存器 `0x70`:配置 eDP 的 HPD(热插拔检测)信号行为。 - **视频格式同步**: - 寄存器 `0x31-0x33`:设置输出分辨率(需与输入源和 IL26800A 匹配)。 #### 3. **IL26800A 寄存器配置**(通过 I²C) - **eDP 输入初始化**: - 寄存器 `0x02`:检查 eDP 链路状态(确认 DS90UB984 信号锁定)。 - 寄存器 `0x0A`:配置 eDP 的 Lane 数量和速率(需与 DS90UB984 一致)[^3]。 - **LVDS 输出配置**: - 寄存器 `0x1B`:设置 LVDS 格式(如 JEIDA/VESA)。 - 寄存器 `0x20-0x23`:定义 LVDS 通道映射和时序(依据显示手册)。 - 示例代码: ```c i2c_write(0x2C, 0x1B, 0x02); // IL26800A 设备地址通常为 0x2C,启用 VESA 格式 ``` - **时序生成**: - 寄存器 `0x30-0x3F`:配置分辨率、刷新率、同步信号极性等参数。 #### 4. **验证与调试** - **信号检测**: - 用示波器检查 eDP/LVDS 的时钟信号是否稳定。 - 读取 DS90UB984 的 `0x5D`(链路状态)和 IL26800A 的 `0x02`(输入状态)。 - **常见问题排查**: - **无显示**:检查 HPD 信号是否激活;确认 I²C 配置已写入(读回寄存器验证)。 - **花/撕裂**:调整 LVDS 的时钟相位(IL26800A 寄存器 `0x28`)或 eDP 预加重(DS90UB984 寄存器 `0x5A`)。 - **软件工具**: - 使用 TI 的 FPD-Link 配置工具(如 UB954/984 EVM GUI)生成寄存器配置[^2]。 #### 注意事项 - **电源时序**:DS90UB984 和 IL26800A 的电源需按手册顺序上电(通常 1.8V 早于 3.3V)。 - **ESD 防护**:操作前佩戴防静电手环,避免芯片损坏。 - **文档参考**: - DS90UB984 手册:[TI DS90UB984-Q1 Datasheet](https://www.ti.com/lit/ds/symlink/ds90ub984-q1.pdf) - IL26800A 手册:[IL26800A Datasheet](https://www.intersil.com/content/dam/Intersil/documents/il26/il26800a.pdf) --- ### 相关问题 1. 如何调试 DS90UB984 的 eDP 链路锁定失败问题? 2. IL26800A 支持哪些 LVDS 输出格式?如何配置? 3. 如何通过 I²C 读取 DS90UB984 的当前寄存器状态? [^1]: 硬件连接需严格遵循电气规范,避免信号完整性损失。 [^2]: DS90UB984 的 eDP 模式需禁用内部 LVDS 串行器。 [^3]: IL26800A 的 eDP 输入配置必须与源端匹配,否则链路无法同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值