/sys/class/drm estructura de directorios

/sys/class/drm estructura de directorios

¿Quién es responsable de crear la estructura de directorios "/sys/class/drm", más específicamente el directorio "/sys/class/drm/card0-LVDS-1"?

Estoy usando kernel-2.6.38 y una tarjeta nVidia.

Respuesta1

El módulo DRM es responsable de ese subárbol en SysFS. Puedes buscar el código fuente para eso endrivers/gpu/drm/drm_sysfs.c.

Los subdirectorios son por conector, con un nombre del formulario card%d-%sreemplazado %dpor un índice (del que no sé nada) y %sreemplazado con el nombre del conector.

Deberían aparecer cinco archivos por dispositivo:

  • Estado de conexión
  • Habilitado (o no)
  • Estado del DPMS
  • Lista de modos
  • edid

Para algunos dispositivos, también obtendrá información adicional sobre los subconectores.

Respuesta2

Ha habido algún desarrollo desde la última respuesta aceptada, por lo que estoy creando una nueva respuesta.

A partir de v6.2.11, el código fuente responsable de este subárbol sysfs sigue siendocontroladores/gpu/drm/drm_sysfs.c(enlace de trabajo).

El propio controlador DRM puede crear 5 tipos de entradas diferentes, según la compatibilidad del hardware. Son: card%d, controlD%d, renderD%d, accel%d, luego para cada conector de tarjeta card%d-%s. Son %dnúmeros menores del dispositivo, que deben comenzar en 0 para las tarjetas y luego en incrementos coincidentes de 64 para controlDy renderDrespectivamente accel. No hay menores para los conectores, están en el menor de su respectiva tarjeta.

Las controlDentradas son enlaces simbólicos de compatibilidad con versiones anteriores creados por create_compat_control_link()encontroladores/gpu/drm/drm_drv.cy utilice el número menor originalmente reservado para controlD.

El formato del nombre del conector ( %sin card%d-%s) es %s-%d, %sde donde es un nombre struct drm_conn_prop_enum_list drm_connector_enum_list[]en controladores/gpu/drm/drm_connector.cy %des un número de índice de conector que comienza en 1 (ya que una tarjeta puede tener más de un conector del mismo tipo).

Finalmente, cualquier conductor puede registrar sus propios dispositivos aquí usando drm_class_device_register()encontroladores/gpu/drm/drm_sysfs.c.

información relacionada