This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:无 DRM?

Guru**** 1125150 points
Other Parts Discussed in Thread: AM3352, LM3630A, OPA362, TFP410, TPD12S015, TLC59108
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/578688/linux-am3352-no-drm

器件型号:AM3352
主题中讨论的其他器件: DA8XXLM3630ALM3639OPA362TFP410TPD12S015TLC59108

工具/软件:Linux

您好!

在基于 Yocto 项目 (morty)的 core-image-weston 构建中、我遇到了一个问题、无法将任何内容放置在连接到定制板上 AM3352的 LCD 上。  我构建了一个具有以下图形选项的 Linux-Yocto-4.9.13内核:

  • CONFIG_DRM=y
  • CONFIG_DRM_I2C_NXP_TDA998X=y
  • CONFIG_DRM_TILCDC=y

我正在使用的板没有 NXP TDA998X 驱动程序可以使用的任何 I2C 硬件、但对于 tilcdc 驱动程序而言、这是一项要求。

我在 DTS 中配置了面板、背光和 LCDC 节点、几乎与 AM335x-EVM.dts 相同 、但我在 LCDC 节点中未包含蓝线和红线属性。  我不确定是否值得在下面介绍的其他信息中说明这一点。

我的 core-image-weston 构建非常基本、这意味着我除了通过我自己的层在 meta-custom/meta-customer-kernel/linux-yocto 自定义中以 defconfig 和补丁(仅添加我的板 dts)的形式添加对电路板的支持之外、没有对任何配方或配置进行任何更改。  在上述情况下、poky 是此构建的发行版(如果上一句未暗示)。

编译成功、当我引导至内核时、我看到以下与 DRM 相关的消息:

(笑声)

[0.907395]   [DRM]已初始化
[0.914081]   tilcdc 4830e000.lcdc:未找到编码器/连接器

(笑声)

init:版本2.88正在引导
打开/dev/fb0时出错:没有这样的文件或目录
正在启动 udev
(笑声)

/var/volatile/log/weston.log 上的 Weston 日志包含以下行:

日期:2017-03-01 UTC
[15:06:10.925] Weston 1.11.1
              http://wayland.freedesktop.org
              故障报告发送至: bugs.freedesktop.org/enter_bug.cgi
              内部版本:1.11.0-8-g79d1925 configure.ac:对于单点版本、请升级到版本1.11.1 (2016-09-20 17:39:57 -0700)
[15:06:10.925]操作系统:Linux、4.9.13-Yocto 标准、#3 Tue、2月28日16:00:57 MST 2017、armv7l
[15:06:10.927]从不包含配置文件的位置开始。
[15:06:10.938]重新喷漆窗口最长为7ms。
[15:06:10.941]加载模块'/usr/lib/weston/drm-backend.so
[15:06:10.993]正在初始化 DRM 后端
[15:06:11.000]未找到 DRM 器件
[15:06:11.000]致命:创建合成器后端失败

这让我查找/dev/drm、而不在此处。

我查找了任何 udev 规则,并且仅找到包含以下行的/etc/udev/rules.d/60-drm.rules:

#请勿编辑此文件、更新时将覆盖此文件

操作!="remove"、subsystem ="drm"、subsystem ="PCI|USB|platform"、import{builtin}="path_id"

因此、我不确定这是与内核/DTS 配置相关、与 udev 相关、还是完全与其他内容相关。  我很可能需要在 Yocto 项目中为我的编译执行更多配置、但我确信要执行的操作。

感谢大家为我提供的任何帮助。

谢谢、

Jon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大约6个月前、我遇到了完全相同的问题。 我不记得我是如何让它在我的脑海中工作的、但通过查看我的一些更改、我从内核配置中禁用了两个组件:

    CONFIG_DRM_OMA=y >> CONFIG_DRM_OMAP-n
    CONFIG_DRM_OMAP_NUM_CRTCS=2 >>应该只被删除

    不妨尝试一下。 我会不断地挖掘我的东西。 我记得它在推动我的螺母一段时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复!

    请注意、我一直在按照 TI 的 Linux 内核 LCD 控制器用户指南 尝试计算 DRM 以及如何将其正确配置到我的内核/DTS 中。

    下面是我从 defconfig 中提取的配置选项的更完整列表:

    编号

    #图形支持

    编号

    未设置# CONFIG_IMX_IPUV3_CORE

    CONFIG_DRM=y

    # CONFIG_DRM_DP_AUX_CHARDEV 未设置

    CONFIG_DRM_KMS_helper=y

    CONFIG_DRM_KMS_Fb_helper=y

    CONFIG_DRM_fbDEV_emulation=y

    未设置# CONFIG_DRM_LOAD_EDID_firmware

    CONFIG_DRM_GEM_CMA_helper=y

    CONFIG_DRM_KMS_CMA_helper=y

    编号

    # I2C 编码器或辅助芯片

    编号

    未设置# CONFIG_DRM_I2C_CH7006

    未设置# CONFIG_DRM_I2C_SIL164

    CONFIG_DRM_I2C_NXP_TDA998X=y

    未设置# CONFIG_DRM_HDLLCD

    未设置# CONFIG_DRM_Mali_display

    编号

    # ACP (音频协处理器)配置

    编号

    未设置# CONFIG_DRM_VGEM

    # CONFIG_DRM_EXYNOS 未设置

    未设置# CONFIG_DRM_UDL

    未设置# CONFIG_DRM_Armada

    未设置# CONFIG_DRM_OMAP

    CONFIG_DRM_TILCDC=y

    CONFIG_DRM_TILCDC_SLAVE_COMPAT=y

    未设置# CONFIG_DRM_FSL_DCU

    CONFIG_DRM_BRIDGE=y

    编号

    #显示接口桥接器

    编号

    # CONFIG_DRM_ANALOGUEIX_ANX78XX 未设置

    未设置# CONFIG_DRM_Dumb_VGA_DAC

    未设置# CONFIG_DRM_NXP_PTN3460

    未设置# CONFIG_DRM_parade_PS8622

    未设置# CONFIG_DRM_SII902X

    # CONFIG_DRM_Toshiba TC358767未设置

    # CONFIG_DRM_I2C_ADV7511未设置

    未设置# CONFIG_DRM_STI

    未设置# CONFIG_DRM_ARCPGU

    未设置# CONFIG_DRM_LEGACGATE

    编号

    #帧缓冲器器件

    编号

    CONFIG_FB=y

    未设置# CONFIG_firmware_EDID

    CONFIG_FB_CMDLINE=y

    CONFIG_FB_NOTIFY=y

    未设置# CONFIG_FB_DDC

    未设置# CONFIG_FB_BOOT_VESA_support

    CONFIG_FB_CFB_FILLRECT=y

    CONFIG_FB_CFB_COPYAREA=y

    CONFIG_FB_CFB_IMAGEBLIT=y

    未设置# CONFIG_FB_CFB_REV_Pixels_in_byte

    CONFIG_FB_SYS_FILLRECT = y

    CONFIG_FB_SYS_COPYAREA=y

    CONFIG_FB_SYS_IMAGEBLIT=y

    未设置# CONFIG_FB_Foreign _ENDIAN

    CONFIG_FB_SYS_FOPS=y

    CONFIG_FB_DERAD_IO=y

    未设置# CONFIG_FB_svgalib

    # CONFIG_FB_MACMODES 未设置

    未设置# CONFIG_FB_背 光

    未设置# CONFIG_FB_MODE_APERs

    # CONFIG_FB_TILEBLITTING 未设置

    编号

    #帧缓冲硬件驱动程序

    编号

    未设置# CONFIG_FB_EFI

    未设置# CONFIG_FB_OPENCORES

    未设置# CONFIG_FB_S1D13XXX

    # CONFIG_FB_SMSCUFX 未设置

    未设置# CONFIG_FB_UDL

    未设置# CONFIG_FB_IBM_GXT4500

    未设置# CONFIG_FB_DA8XX

    未设置# CONFIG_FB_virtual

    # CONFIG_FB_Metronome 未设置

    未设置# CONFIG_FB_broadsheet

    # CONFIG_FB_AUO_K190X 未设置

    CONFIG_FB_simple=y

    未设置# CONFIG_FB_OMAP2

    # CONFIG_FB_SSD1307未设置

    CONFIG_背 光_LCD_support=y

    未设置# CONFIG_LCD_CLASS_DEVICE

    CONFIG_背 光_class_device=y

    未设置# CONFIG_背 光_generic

    CONFIG_背 光_PWM=y

    未设置# CONFIG_背 光_PM8941_WLED

    未设置# CONFIG_背 光_ADP8860

    未设置# CONFIG_背 光_ADP8870

    未设置# CONFIG_背 光_LM3630A

    未设置# CONFIG_背 光_LM3639

    未设置# CONFIG_BRAY_LP855X

    未设置# CONFIG_背 光_GPIO

    未设置# CONFIG_背 光_LV5207LP

    未设置# CONFIG_BRELOAD_BD6107

    # CONFIG_VGASTATE 未设置

    CONFIG_VIDEOMODE_AIDENS=y

    CONFIG_HDMI=y

    编号

    #控制台显示驱动程序支持

    编号

    CONFIG_虚设 控制台= y

    CONFIG_frameBuffer_console=y

    CONFIG_frameBuffer_console_detect_primary=y

    未设置# CONFIG_framebuffer_console_rotation

    CONFIG_LOGO = y

    未设置# CONFIG_LOGO LINUX_Mono

    未设置# CONFIG_LOGO LINUX_VGA16

    CONFIG_LOGO LINUX_CLUT224=y

    未设置# CONFIG_SOUND

    我还想指出、/sys/中确实显示了几个与 DRM 相关的目录:

    root@custom:~# find /sys/-name DRM'*'-print
    /sys/class/drm
    /sys/module/drm_kms_helper
    /sys/module/drm
    root@custom:~# ls -l /sys/class/drm
    -r--r--r--   1根    根         4096 JAN 1 2000版本
    root@custom:~# ls -l /sys/module/drm_kms_helper
    drwxr-xr-x   2 root                用户0 Mar 3 20:48参数
    -- w ----    1    根根         4096 Mar 3 20:48 uevent
    root@custom:~# ls -l /sys/module/drm_kms_helper/parameters
    -rw-r--r--   1 root    root         4096 Mar 3 20:48 DP_aux_i2c_speed_kHz
    -rw-r--r--   1 root    root         4096 Mar 3 20:48 DP_aux_i2c_transfer_size
    -rw ----    1    根根4096         Mar 3 20:48 fbdev_emulation
    -rw ----    1    根根         4096 Mar 3 20:48轮询
    root@custom:~# ls -l /sys/module/drm
    drwxr-xr-x   2 root                用户0 Mar 3 20:48参数
    -- w ----    1    根根         4096 Mar 3 20:48 uevent
    root@custom:~# ls -l /sys/module/drm/parameters
    -rw ----    1 root    root         4096 Mar 3 20:48 debug
    -r ------    1    根根4096         Mar 3 20:48 EDID_fixup
    -rw ----    1    根根         4096 Mar 3 20:48 timestamp_monotonic
    -rw ----    1    根根4096         Mar 3 20:48 timestamp_precision_usec
    -rw ----    1    根根         4096 Mar 3 20:48 vblankoffdelay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只需查看这里的配置即可。  我在 DRM 下具有相同的配置。 我没有启用 CONFIG_DRM_TILCDC_SLAVE_COMPAT 或 CONFIG_DRM_BRIDGE。 但除此之外、情况大致相同。 您可能没有在此处发布它、但也有一个部分称为 OMAP 显示设备驱动程序。 我的外观如下所示:

    编号
    # OMAP 显示设备驱动程序(新设备型号)
    编号
    未设置# CONFIG_DISPLAY_ENCODER_OPA362
    CONFIG_DISPLAY_ENCODER_TFP410=y
    CONFIG_DISPLAY_ENCODER_TPD12S015=y
    CONFIG_DISPLAY_ENCODER_SII9022=y
    CONFIG_DISPLAY_ENCODER_TC358768=y
    CONFIG_DISPLAY_CONNECT_DVI=y
    CONFIG_DISPLAY_CONNECT_HDMI=y
    CONFIG_DISPLAY_CONNECT_ANALOG_TV=y
    CONFIG_DISPLAY_PANE_DPI=y
    CONFIG_DISPLAY_PAGE_DSI_CM=y
    CONFIG_DISPLAY_PANE_SONY_ACX565AKM=y
    CONFIG_DISPLAY_PANE_LGPHILIPS_LB035Q02=y
    CONFIG_DISPLAY_PAGE_LS037V7DW01=y
    CONFIG_DISPLAY_PAGE_TPO_TD028TTEC1=y
    CONFIG_DISPLAY_PAGE_TPO_TD043MTEA1=y
    CONFIG_DISPLAY_PANEC_NL8048HL11=y
    CONFIG_DISPLAY_PAGE_TLC59108=y

    我肯定不需要启用所有这些器件、但我认为具体而言、连接器和编码器是关键。 你有什么幸运吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    迄今为止、我还没有取得任何突破、但我非常感谢您继续响应这条线程。

    我的配置中没有任何这些选项。 您使用的内核版本是什么、您使用的是标准的 Yocto 内核或 TI 内核?

    也许我没有启用另一个与 OMAP 相关的选项、这就是为什么我看不到您列出的选项?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很抱歉 Chris。 我相信我现在看到这些选项是如何启用的。

    CONFIG_DRM_OMAP-y 似乎是第一步。

    您是否想告诉我您的其他 OMAP DRM 相关选项设置为什么(例如 CONFIG_DRM_OMAP_NUM_CRTCS=2、CONFIG_OMAP2_DSS_DPI 等)(如果设置了这些选项)?

    您是否需要对 Yocto 项目的配置进行任何特殊处理、例如在 local.conf 中更改 distro 功能或 image_install、或者类似这样的其他操作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    选择以下与 OMAP DRM 相关的选项(这些选项看起来与 Chris 先前指定的选项等效)...
    编号
    # ACP (音频协处理器)配置
    编号
    未设置# CONFIG_DRM_VGEM
    # CONFIG_DRM_EXYNOS 未设置
    未设置# CONFIG_DRM_UDL
    未设置# CONFIG_DRM_Armada
    CONFIG_DRM_OMAP-y
    CONFIG_DRM_OMAP_NUM_CRTCS=2
    CONFIG_OMAP2_DSS_INIT=y
    CONFIG_OMAP2_DSS=y
    未设置# CONFIG_OMAP2_DSS_DEBUG
    未设置# CONFIG_OMAP2_DSS_DebugFS
    CONFIG_OMAP2_DSS_DPI=y
    CONFIG_OMAP2_DSS_VENC=y
    CONFIG_OMAP2_DSS_HDMI_common=y
    CONFIG_OMAP4_DSS_HDMI=y
    CONFIG_OMAP5_DSS_HDMI=y
    CONFIG_OMAP2_DSS_SDI=y
    CONFIG_OMAP2_DSS_DSI=y
    CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
    CONFIG_OMAP2_DSS_SLEEP_After _VENC_RESET=y

    编号
    # OMAPDRM 外部显示设备驱动程序
    编号
    未设置# CONFIG_DRM_OMAP-ENCODER_OPA362
    CONFIG_DRM_OMAP_ENCODER_TFP410=y
    CONFIG_DRM_OMA_ENCODER_TPD12S015=y
    CONFIG_DRM_OMAP-CONNECT_DVI=y
    CONFIG_DRM_OMAP-CONNECT_HDMI=y
    CONFIG_DRM_OMAP-CONNECT_ANALOG_TV=y
    CONFIG_DRM_OMAP-Panel_DPI=y
    CONFIG_DRM_OMAP-Panel_DSI_CM=y
    CONFIG_DRM_OMAP_Panel_Sharp LS037V7DW01=y
    CONFIG_DRM_TILCDC=y
    CONFIG_DRM_TILCDC_SLAVE_COMPAT=y
    未设置# CONFIG_DRM_FSL_DCU
    CONFIG_DRM_BRIDGE=y

    我在启动时获得 DRM 的以下输出:
    [0.843359][DRM]已初始化
    [0.847525]错误:驱动程序'tfp410'已注册,正在中止...
    [0.856084] tilcdc 4830e000.lcdc:未找到编码器/连接器

    除了 tfp410驱动程序的错误消息之外,没有什么真正的改变。
    此外、作为对我的第一个帖子的更正/附加、没有/dev/dri 目录。 我认为,根据新的信息,我错误地说过/dev/drm。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好吧,它会慢慢地回到我身边... 以下是内核启动时的输出:

    [1.540837][DRM]已初始化 DRM 1.1.0 20060810
    [1.545664]错误:驱动程序'tfp410'已注册,正在中止...
    [1.553155]面板:找到启用 GPIO
    [1.560261][DRM]支持 vblank 时间戳缓存修订版2 (2013年10月21日)。
    [1.567137][DRM]不支持 vblank 时间戳查询的驱动程序。
    [1.592740]控制台:切换到彩色帧缓冲器设备100x30
    [1.607144] tilcdc 4830e000.lcdc:fb0:帧缓冲器件
    [1.612774] tilcdc 4830e000.lcdc:注册的紧急通知程序

    如果认为问题是找不到面板、由于某种原因无法找到面板。 或者我没有启用面板、或者面板未正确启动。 您能否打开针对 DRM/TILCDC 的所有调试。 我正在运行内核4.1.18。 我不使用 yokto、而是直接从 SDK 随附的 TI 内核 git repo 进行构建。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上是的、我想我现在还记得了。 我没有在设备树中正确设置面板。 在/drivers/gpu/drm/tilcdc/tilcdc_panel.c 或/drivers/gpu/drm/tilcdc/tilcdc_crtc.c 中、某些验证功能失败。 如果您启用调试或只是放入自己的调试器、您应该能够找到确切的原因。 那是门门门不对的。 就是这样。 很抱歉、电子邮件被拆分。 但我在某个时候编写和查看代码。 我记得现在。 LCD 制造商定义 FP BP 等的方式 与 TI 的不同之处在于、有一些检查可确保其正常工作。 我必须使用设备树中的这些设备。 您可以在器件树面板文档中查看 TI 驱动程序对其进行定义的确切方式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想这是有道理的。 我收到的唯一与"panel"相关的 dmesg 消息是:

    [1.474059]面板:找到背光

    如何打开 DRM/tilcdc 的所有调试? 我在今天早些时候已经寻找了实现这一目标的方案、但我发现的一切都是:
    内核黑客攻击-->
    printk 和 dmesg 选项-->
    显示有关 printks = y 的时序信息
    默认消息日志级别(1 - 7)= 7 (处理此数字不会更改 DRM/tilcdc 打印的详细级别)
    启用动态 printk()支持= y (在这种情况下,我认为此选项并不重要)。

    感谢您提供有关 tilcdc C 文件中的查找位置的提示。

    我将在下面添加我的 DTS 中的面板节点。 您是否会介意仔细检查一下、让我看看是否有任何令人惊讶的错误?

    Panel{
    compatible ="ti、tilcdc、panel ";
    status ="oke";
    pinctrl-names ="default";
    pinctrl-0 =<&lcd_pines>;
    backlight =<&backlight>;
    Panel-info{
    ac-bias =<255>;
    AC-BIAS-INtrpt =<0>;
    DMA-BURST-SZ =<16>;
    bpp =<32>;
    FDD =<0x80>;
    同步边沿 =<0>;
    SYNC-Ctrl =<1>;
    栅格顺序 =<0>;
    第五次 =<0>;
    };
    
    显示时序{
    native-mode =<&timing0>;
    ting0:800x480{
    时钟频率=<30000000>;//从 EVM 中得到30000000 *
    / hactive =<800>;
    vactive =<480>;
    hfront-cerch =<16 210 354>;
    后沿= 16 <210
    nC- 1 =<40>;
    
    vfront-Porch =<7 22 147>;
    vsync-len =<1 2 20>;
    HSYNC-ACTIVE =<1>;
    vsync-active =<1>;
    };
    };
    };
    



    我所拥有的特定 LCD 上的文档非常糟糕、这就是为什么我选择使用门廊和 len 参数的范围、display-timings.txt[1]状态是有效选项、但我不知道如何处理 tilcdc 驱动程序。

    再次感谢您响应此主题并帮助我完成此主题。

    [1]- lxr.free-electrons.com/.../display-timing.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、问题似乎是我需要将 DRM 和 TILCDC 驱动程序编译为模块、而不是将它们编译到内核中。  我确信、udev 或 wayland/Weston 的设置应该归咎于它、但我不知道它是哪一个。

    另一个奇怪之处是、USB 鼠标与 core-image-Weston 映像的响应速度明显慢于 core-image-Sato 映像的响应速度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这听起来非常奇怪、但正如您所说的、也许是 udev 的原因。 很高兴听到您的解决方案。 很抱歉、我对核心映像 Weston 问题没有太大帮助、因为我不熟悉所有的开放式嵌入式核心模块。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不用担心 Chris。 感谢您的帮助、也感谢您成为唯一一位回应此主题的人!