工具/软件:Linux
尊敬的 TI:
我设计了一个 AM3358定制板、支持 LVDS 输出。我启用了 DRM 驱动程序并在内核中禁用了 fbdev 驱动程序、修改了 DTS 文件以适合我的板。该板可以启动,但是10.1' LCD 不工作、始终是黑色的。我在 kenel 日志中找到了一些 erros:
/--- 内核日志-------------------------------------------------------
[0.975237][DRM]已初始化
[0.979016]面板:找到背光
[0.983010]面板:GPIO 查找以启用消费者功能
[0.983016]面板:使用器件树进行 GPIO 查找
[0.983043] of _get_named_gpio_FLAGS:解析了节点'/panel[0]的'ENABLE-GPIO'属性- STATUS
[0.983102]面板:找到启用 GPIO
[0.988011][DRM]支持 vblank 时间戳缓存修订版2 (2013年10月21日)。
[0.994721][DRM]不支持 vblank 时间戳查询的驱动程序。
[1.000795] tilcdc 4830e000.lcdc:未报告与模式连接的连接器
[1.008004][DRM]找不到任何 CRTC 或大小- 1024x768
[1.022411]控制台:切换到彩色帧缓冲器器件128x48
[1.033532] tilcdc 4830e000.lcdc:fb0:帧缓冲器件
使用 modetest 后,我收到以下消息:
/--------------- 最小的---
root@AM335x-EVM:/sys# modetest
正在尝试打开设备'i915'...失败
正在尝试打开设备'Radeoneon'...失败
尝试打开设备'nouve'失败
尝试打开设备'vmwgfx'...失败
正在尝试打开设备'omapdrm'...失败
正在尝试打开设备'exynos'...失败
正在尝试打开设备'tilcdc'...done
编码器:
ID CRTC 类型可能的 crtcs 可能的克隆
25 0 LVDS 0x00000001 0x00000000
连接器:
ID 编码器状态名称大小(mm)模式编码器
26 0已连接 LVDS-1 0x0 25
道具:
1 EDID:
flags:不可改变的 blob
BLOB:
值:
2 DPMS:
flags:枚举
枚举:ON = 0待机= 1挂起= 2关闭= 3
值:0
CRC:
Id fb pos 大小
24 0 (0、0)(0x0)
0 0 0 0 0 0 0 0 0 0 0标志:;类型:
道具:
平面:
ID CRTC fb CRTC x、y x、y 伽马大小可能的 crtcs
23 0 0 0 0 0 0 0 0 0 0 0x00000001
格式:RG16 BG24 XB24
道具:
5类型:
flags:不可 mutable 枚举
枚举:overlay=0 Primary =1 Cursor =2
值:1.
帧缓冲器:
ID 大小间距
然后我检查了 Weston 日志:
/------ Weston 日志-------------------------------------------------------
root@AM335x-EVM:/sys# cat /var/log/weston.log
日期:2017-06-28 UTC
[20:20:30.703] Weston 1.11.0
http://wayland.freedesktop.org
故障报告发送至: bugs.freedesktop.org/enter_bug.cgi
内部版本:1.10.93-2-g2d825ed configuration.ac:正式版本(2016-05-31 17:10:40 -0700)的固件版本为1.11.0
[20:20:30.704]操作系统:Linux、4.9.28-geed43d1050、#3挤占 Tue、11月21日14:37:24 CST 2017、armv7l
[20:20:30.706]使用配置文件'/etc/weston.ini'
[20:20:30.710]最大输出重新喷漆窗口为7ms。
[20:20:30.713]装载模块'/usr/lib/weston/drm-backend.so
[20:20:30.743]正在初始化 DRM 后端
[20:20:30.777]使用/dev/dri/card0
[20:20:30.786]装载模块"/usr/lib/weston/gl-renderer.so
无法加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:无此类文件或目录
无法加载模块:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:无此类文件或目录
加载的模块:GBM_PVR.SO
找到有效的 GBM 后端:GBM_PVR.SO
[20:20:30.908]警告:不支持 EGL_EXT_platform_BASE 或不支持特定平台;返回到 eglGetDisplay。
[20:20:30.971]警告:不支持 EGL_EXT_buffer_age。 性能可能会受到影响。
[20:20:30.971]检索 EGL 客户端扩展字符串失败。
[20:20:30.990]输入器件"ti-tsc"、/dev/input/event0被 udev 标记为:触摸屏
[20:20:30.990]输入器件"ti-tsc"、/dev/input/event0是一款触控器件
[20:20:30.991] LVDS-1没有可用的模式
[20:20:30.991]未找到当前活动的连接器。
[20:20:30.991]无法为/sys/devices/platform/ocp/4830e000.lcdc/drm/card0创建输出
[20:20:31.076]致命:无法创建合成器后端
启动时内核似乎没有检测到面板,但我在/sys/device/platform.上找到了面板节点
我的问题是为什么内核无法检测面板?
下面是我的 DTS 文件:
/--------------- DTS 文件-------------------------------------------------------
/*
*版权所有(C) 2012德州仪器(TI)公司- http://www.ti.com/
*
*此程序是免费软件;您可以重新分发和/或修改
*根据 GNU 通用公共许可证第2版的条款,如所示
*由免费软件基金会发布。
*
/DTS-v1/;
#include "am33xx.dtsi"
#include "AM335x-bone-common.dtsi"
#include
#include
/{
型号="TI AM335x BeagleBone Black";
兼容="ti、am335x-bone-black"、"ti、am335x-bone-"、"ti、am33xx";
LCD_BL:背光{
兼容="PWM 背光";
PWM =<&ecap0 5000000 0>;//
亮度等级=<0 51 53 56 62 75 101 152 200 255>;//
default-brightse-level =<8>;
};
面板{
兼容="ti、tilcdc、panel ";
// pinctrl-names ="default"、"sleep";
pinctrl-names ="default";
pinctrl-0 =<&LCD_PINS_DEFAULT>;
// pinctrl-1 =<&LCD_PINS_SLEEP>;
背光=<&LCD_BL>;
ENABLE-GPIO =<&GPIO2 GPIO_ACTIVE_HIGH_>;
状态="正常";
面板信息{
交流偏置=<255>;
AC-BIAS-INtrpt =<0>;
dma-burse-SZ =<16>;
bpp =<16>;
FDD =<0x80>;
同步边沿=<0>;
SYNC-Ctrl =<1>;
栅格顺序=<0>;
FIFO-TH =<0>;
};
显示时序{
本机模式=<&timing0>;
ting0:1280x800p60{
hactive =<1280>;
Vactive =<800>;
后沿=<159>;
前沿=<0>;
HSYNC-LEN =<0>;
后沿=<0>;
垂直前沿=<23>;
vsync-len =<0>;
时钟频率=<71100000>;
HSYNC-ACTIVE =<0>;
vsync-active =<0>;
停用=<1>;// DE 模式高电平有效
Pixelclk-active =<1>;//
};
};
};
};
ldo3_reg{(&L)
稳压器最小微伏=<1800000>;
稳压器最大值微伏=<1800000>;
稳压器常开;
};
mmc1{(&M)
VMMC-SUPPLY =<&vmmcsd_fixed>;
};
mmc2{(&M)
VMMC-SUPPLY =<&vmmcsd_fixed>;
pinctrl-names ="default";
pinctrl-0 =<&eMMC_PINs>;
总线宽度=<8>;
状态="正常";
};
CPU0_OPP_TABLE{
/*
*所有 PG 2.0器件可能都不支持1GHz、但有些器件支持较早的频率
* BeagleBone Black 具有可保证的 PG 2.0器件
*支持1GHz OPP、因此请在此板上启用 PG 2.0。
*
硝基平@1000000000{
opp-supported-HW =<0x06 0x0100>;
};
};
am33xx_pinmux{(am33xx_pinmux)}
LCD_PINS_DEFAULT:LCD_PINS_DEFAULT{
pinctrl-single、pins =<
// AM33XX_IOPAD (0x890、PIN_OUTPUT 上拉| MUX_MODE7)//* GPIO2_2 LCD_背 光使能控制*/
AM33XX_IOPAD (0x8a0、PIN_OUTPUT | MUX_MODE0)/* LCD_Data0.LCD_Data0 *
AM33XX_IOPAD (0x8a4、PIN_OUTPUT | MUX_MODE0)/* LCD_data1.LCD_data1 *
AM33XX_IOPAD (0x8a8、PIN_OUTPUT | MUX_MODE0)/* LCD_data2.LCD_data2 *
AM33XX_IOPAD (0x8ac、PIN_OUTPUT | MUX_MODE0)/* LCD_data3.LCD_data3 *
AM33XX_IOPAD (0x8b0、PIN_OUTPUT | MUX_MODE0)/* LCD_data4.LCD_data4 *
AM33XX_IOPAD (0x8b4、PIN_OUTPUT | MUX_MODE0)/* LCD_data5.LCD_data5 *
AM33XX_IOPAD (0x8b8、PIN_OUTPUT | MUX_MODE0)/* LCD_data6.LCD_data6 *
AM33XX_IOPAD (0x8bc、PIN_OUTPUT | MUX_MODE0)/* LCD_data7.LCD_data7 *
AM33XX_IOPAD (0x8c0、PIN_OUTPUT | MUX_MODE0)/* LCD_data8.LCD_data8 *
AM33XX_IOPAD (0x8c4、PIN_OUTPUT | MUX_MODE0)/* LCD_data9.LCD_data9 *
AM33XX_IOPAD (0x8c8、PIN_OUTPUT | MUX_MODE0)/* LCD_data10.LCD_data10 *
AM33XX_IOPAD (0x8cc、PIN_OUTPUT | MUX_MODE0)/* LCD_data11.LCD_data11 *
AM33XX_IOPAD (0x8d0、PIN_OUTPUT | MUX_MODE0)/* LCD_data12.LCD_data12 *
AM33XX_IOPAD (0x8d4、PIN_OUTPUT | MUX_MODE0)/* LCD_data13.LCD_data13 *
AM33XX_IOPAD (0x8d8、PIN_OUTPUT | MUX_MODE0)/* LCD_data14.LCD_data14 *
AM33XX_IOPAD (0x8dc、PIN_OUTPUT | MUX_MODE0)/* LCD_data15.LCD_data15 *
AM33XX_IOPAD (0x8e0、PIN_OUTPUT | MUX_MODE0)/* LCD_vSYNC.LCD_vsync *
AM33XX_IOPAD (0x8e4、PIN_OUTPUT | MUX_MODE0)/* LCD_HSYNC.LCD_HSYNC *
AM33XX_IOPAD (0x8e8、PIN_OUTPUT | MUX_MODE0)/* LCD_pclk.LCD_pclk *
AM33XX_IOPAD (0x8ec、PIN_OUTPUT | MUX_MODE0)/* LCD_AC_BIAS_EN.LCD_AC_BIAS_EN *
>;
};
LCD_PINS_SLEEP:LCD_PINS_SLEEP{
pinctrl-single、pins =<
// AM33XX_IOPAD (0x890、PULL_DISABLE | MUX_MODE7)/* GPIO2_2 LCD_背 光启用控制*
AM33XX_IOPAD (0x8a0、PULL_DISABLE | MUX_MODE7)/* LCD_Data0.LCD_Data0 *
AM33XX_IOPAD (0x8a4、PULL_DISABLE | MUX_MODE7)/* LCD_data1.LCD_data1 *
AM33XX_IOPAD (0x8a8、PULL_DISABLE | MUX_MODE7)/* LCD_data2.LCD_data2 *
AM33XX_IOPAD (0x8ac、PULL_DISABLE | MUX_MODE7)/* LCD_data3.LCD_data3 *
AM33XX_IOPAD (0x8b0、PULL_DISABLE | MUX_MODE7)/* LCD_data4.LCD_data4 *
AM33XX_IOPAD (0x8b4、PULL_DISABLE | MUX_MODE7)/* LCD_data5.LCD_data5 *
AM33XX_IOPAD (0x8b8、PULL_DISABLE | MUX_MODE7)/* LCD_data6.LCD_data6 *
AM33XX_IOPAD (0x8bc、PULL_DISABLE | MUX_MODE7)/* LCD_data7.LCD_data7 *
AM33XX_IOPAD (0x8c0、PULL_DISABLE | MUX_MODE7)/* LCD_data8.LCD_data8 *
AM33XX_IOPAD (0x8c4、PULL_DISABLE | MUX_MODE7)/* LCD_data9.LCD_data9 *
AM33XX_IOPAD (0x8c8、PULL_DISABLE | MUX_MODE7)/* LCD_data10.LCD_data10 *
AM33XX_IOPAD (0x8cc、PULL_DISABLE | MUX_MODE7)/* LCD_data11.LCD_data11 *
AM33XX_IOPAD (0x8d0、PULL_DISABLE | MUX_MODE7)/* LCD_data12.LCD_data12 */
AM33XX_IOPAD (0x8d4、PULL_DISABLE | MUX_MODE7)/* LCD_data13.LCD_data13 *
AM33XX_IOPAD (0x8d8、PULL_DISABLE | MUX_MODE7)/* LCD_data14.LCD_data14 *
AM33XX_IOPAD (0x8dc、pull_disable | MUX_MODE7)/* LCD_data15.LCD_data15 *
AM33XX_IOPAD (0x8e0、PIN_INPUT 下拉| MUX_MODE7)/* LCD_vSYNC.LCD_vsync *
AM33XX_IOPAD (0x8e4、PIN_INPUT 下拉| MUX_MODE7)/* LCD_HSYNC.LCD_HSYNC *
AM33XX_IOPAD (0x8e8、PIN_INPUT_PULLUP | MUX_MODE7)/* LCD_pclk.LCD_pclk *
AM33XX_IOPAD (0x8ec、PIN_INPUT 下拉| MUX_MODE7)/* LCD_AC_BIAS_EN.LCD_AC_BIAS_EN *
>;
};
ecap0_pins:backlight_pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x964、MUX_MODE0)//(C18) eCAP0_IN_PWM0_OUT.eCAP0_IN_PWM0_OUT *
>;
};
backlight_Ctrl_pin:backlight_Ctrl_pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x890、PIN_OUTPLUG_PULLUP | MUX_MODE7)/* GPIO2_2 LCD_背 光使能控制*
>;
};
McASP0_Pins:McASP0_Pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x9ac、PIN_INPUT_PULLUP | MUX_MODE0)/* McASP0_ahcklx.McASP0_ahclkx *
AM33XX_IOPAD (0x99c、PIN_OUTPUT 下拉| MUX_Mode2)/* McASP0_ahclkr.McASP0_axr2*/
AM33XX_IOPAD (0x994、PIN_OUTPUT 上拉| MUX_MODE0)/* McASP0_FSX.McASP0_FSX *
AM33XX_IOPAD (0x990、PIN_OUTPUT 下拉| MUX_MODE0)/* McASP0_aclkx.McASP0_aclkx *
AM33XX_IOPAD (0x86c、PIN_OUTPUT 下拉| MUX_MODE7)/* GPMC_A11.GPIO1_27 *
>;
};
};
LCDC{
状态="正常";
/*如果您希望获得24位 RGB 和16 BGR 模式,而不是
*当前16位 RGB 和24 BGR 模式、设置相应的参数
*将下面的更改为"交叉"并取消注释 VIDEA-PORTS -PRO属性
*在 tda19988节点中。
*
蓝色和红色配线="直向";
};
RTC{(&R)
系统功率控制器;
};
&McASP0{
#sound-di-cells =<0>;
pinctrl-names ="default";
pinctrl-0 =<&McASP0_PINs>;
状态="正常";
OP-MODE =<0>;/* MCASP_IIS_MODE */
TDM-SLOTS =<2>;
serial-dir =</* 0:非活动、1:TX、2:Rx *
0 0 1 0
>;
tx-num-evt =<32>;
Rx-num-evt =<32>;
};
&SGX{
状态="正常";
};
epwms0{(&E)
状态="正常";
ecap0:ECAP@48300100{
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&ecap0_PINs>;
};
};
tscadc{(&T)
状态="正常";
TSC{
TI、电线=<4>;
ti、x 板电阻=<235>;
ti、坐标读数=<5>;
TI、wire-config =<0x00 0x11 0x22 0x33>;
TI、充电延迟=<0x400>;
};
ADC{
TI、ADC 通道=<4 5 6 7>;
};
};
/{
CLK_McASP0_FIXED:CLK_McASP0_FIXED{
#clock-cells =<0>;
兼容="固定时钟";
时钟频率=<24576000>;
};
CLK_McASP0:CLK_McASP0{
#clock-cells =<0>;
兼容="GPIO-GATE -时钟";
时钟=<&clk_McASP0_FIXED>;
ENABLE-GPIO =<&GPIO1 27 0>;//在 GPIO1_27上启用 BeagleBone Black Clk *
};
};
SDK 版本: TI-processor-SDK-Linux-AM335x-EVM-04.00.04
另一个问题:内核是否使用 EDID 的显示时序值、而不是 论坛上有人提到的器件树?
如果有任何帮助、我们将不胜感激!