/sys/class/drm-Verzeichnisstruktur

/sys/class/drm-Verzeichnisstruktur

Wer ist für die Erstellung der Verzeichnisstruktur „/sys/class/drm“ verantwortlich, genauer gesagt für das Verzeichnis „/sys/class/drm/card0-LVDS-1“?

Ich verwende Kernel 2.6.38 und eine nVidia-Karte.

Antwort1

Das DRM-Modul ist für diesen Teilbaum in SysFS verantwortlich. Sie können den Quellcode dafür indrivers/gpu/drm/drm_sysfs.c.

Die Unterverzeichnisse sind pro Konnektor, wobei ein Name des Formulars card%d-%sdurch %deinen Index (über den ich nichts weiß) und %sdurch den Konnektornamen ersetzt wird.

Es sollten fünf Dateien pro Gerät angezeigt werden:

  • Verbindungsstatus
  • Aktiviert (oder nicht)
  • DPMS-Zustand
  • Modusliste
  • EDID

Bei manchen Geräten erhalten Sie auch zusätzliche Informationen zu den Unteranschlüssen.

Antwort2

Seit der letzten akzeptierten Antwort hat es einige Entwicklungen gegeben, daher erstelle ich eine neue Antwort.

Ab v6.2.11 ist der für diesen Sysfs-Teilbaum verantwortliche Quellcode immer nochTreiber/GPU/DRM/DRM_sysfs.c(funktionierender Link).

Der DRM-Treiber selbst kann je nach Hardwareunterstützung 5 verschiedene Eintragstypen erstellen. Diese lauten: card%d, controlD%d, renderD%d, accel%d, und dann für jeden Kartenanschluss card%d-%s. Dies %dsind Geräte-Minor-Nummern, die für die Karten bei 0 beginnen und dann in entsprechenden 64er-Schritten für controlD, renderDbzw. accel. Für die Anschlüsse gibt es keine Minor-Nummern, sie befinden sich auf der Minor-Nummer der jeweiligen Karte.

Die controlDEinträge sind abwärtskompatible Symlinks, die von create_compat_control_link()in erstellt wurdenTreiber/GPU/DRM/DRM_DRV.cund verwenden Sie die ursprünglich reservierte Nebennummer für controlD.

Das Format des Connector-Namens (das %sin card%d-%s) ist %s-%d, wobei %sein Name aus struct drm_conn_prop_enum_list drm_connector_enum_list[]in istTreiber/GPU/DRM/DRM_Connector.cund %dist eine Anschlussindexnummer, die bei 1 beginnt (da eine Karte mehr als einen Anschluss desselben Typs haben kann).

Schließlich kann jeder Fahrer seine eigenen Geräte hier registrieren, indem drm_class_device_register()erTreiber/GPU/DRM/DRM_sysfs.c.

verwandte Informationen