Структура каталога /sys/class/drm

Структура каталога /sys/class/drm

Кто отвечает за создание структуры каталогов «/sys/class/drm», а точнее каталога «/sys/class/drm/card0-LVDS-1»?

Я использую ядро ​​2.6.38 и карту nVidia.

решение1

Модуль DRM отвечает за это поддерево в SysFS. Вы можете просмотреть исходный код для этого вdrivers/gpu/drm/drm_sysfs.c.

Подкаталоги создаются для каждого коннектора, имя в форме card%d-%sс %dзаменой на индекс (о котором я ничего не знаю) и %sзаменяется на имя коннектора.

Должно отобразиться пять файлов на каждом устройстве:

  • Статус соединения
  • Включено (или нет)
  • Состояние DPMS
  • Список режимов
  • EDID

Для некоторых устройств вы также получите дополнительную информацию о дополнительных разъемах.

решение2

С момента последнего принятого ответа произошли некоторые изменения, поэтому я создаю новый ответ.

Начиная с версии 6.2.11 исходный код, отвечающий за это поддерево sysfs, по-прежнемудрайверы/gpu/drm/drm_sysfs.c(рабочая ссылка).

Драйвер DRM сам по себе может создавать 5 различных типов записей, в зависимости от аппаратной поддержки. Это: card%d, controlD%d, renderD%d, accel%d, затем для каждого разъема карты card%d-%s. %dЭто второстепенные номера устройств, которые должны начинаться с 0 для карт, затем с соответствующим шагом 64 для controlD, renderDи accelсоответственно. Для разъемов нет второстепенных номеров, они находятся на второстепенных номерах соответствующих карт.

Записи controlDпредставляют собой символические ссылки обратной совместимости, созданные create_compat_control_link()вдрайверы/gpu/drm/drm_drv.cи использовать изначально зарезервированный младший номер для controlD.

Формат имени соединителя (in %s) card%d-%s%s-%d, где %s— имя из struct drm_conn_prop_enum_list drm_connector_enum_list[]in драйверы/gpu/drm/drm_connector.cи %dпредставляет собой индексный номер разъема, начинающийся с 1 (поскольку на плате может быть несколько разъемов одного типа).

Наконец, любой водитель может зарегистрировать здесь свои собственные устройства, drm_class_device_register()используядрайверы/gpu/drm/drm_sysfs.c.

Связанный контент