/sys/class/drm 目录结构

/sys/class/drm 目录结构

谁负责创建“/sys/class/drm”目录结构,更具体地说是“/sys/class/drm/card0-LVDS-1”目录?

我使用的是 kernel-2.6.38 和 nVidia 卡。

答案1

DRM 模块负责 SysFS 中的该子树。您可以在其中浏览源代码drivers/gpu/drm/drm_sysfs.c

子目录是每个连接器的,其形式的名称由索引(我对此一无所知)替换,并由card%d-%s连接器名称替换。%d%s

每个设备应显示五个文件:

  • 连接状态
  • 启用(或不启用)
  • DPMS状态
  • 模式列表
  • EDID

对于某些设备,您还将获得子连接器的额外信息。

答案2

自上次接受的答案以来已经有了一些发展,因此我正在创建一个新的答案。

从 v6.2.11 开始,负责此 sysfs 子树的源代码仍然是驱动程序/gpu/drm/drm_sysfs.c(工作链接)。

DRM 驱动程序本身可以根据硬件支持创建 5 种不同的条目类型。它们是:card%dcontrolD%drenderD%daccel%d、 然后针对每个卡连接器card%d-%s。它们%d是设备次要编号,卡的次要编号应从 0 开始,然后分别与controlDrenderD和匹配,以 64 为增量accel。连接器没有次要参数,它们位于各自卡的次要参数上。

这些条目是由incontrolD创建的向后兼容符号链接create_compat_control_link()驱动程序/gpu/drm/drm_drv.c并使用最初保留的次要编号controlD

连接器名称的格式(%sin card%d-%s)为%s-%d,其中是来自in 的 %s名称struct drm_conn_prop_enum_list drm_connector_enum_list[]驱动程序/gpu/drm/drm_connector.c%d从 1 开始的连接器索引号(因为一张卡可能有多个相同类型的连接器)。

drm_class_device_register()最后,任何驱动程序都可以使用in在这里注册自己的设备驱动程序/gpu/drm/drm_sysfs.c

相关内容