/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

デバイスごとに 5 つのファイルが表示されます。

  • 接続ステータス
  • 有効(または無効)
  • DPMSの状態
  • モードリスト
  • EDID

一部のデバイスでは、サブコネクタに関する追加情報も取得できます。

答え2

前回の回答が承認されてから、いくつかの進展があったため、新しい回答を作成しています。

v6.2.11の時点では、このsysfsサブツリーのソースコードは依然としてドライバー/gpu/drm/drm_sysfs.c(有効なリンク)。

DRM ドライバー自体は、ハードウェア サポートに基づいて 5 つの異なるエントリ タイプを作成する場合があります。これらは、、、、card%dで、各カード コネクタ ですcontrolD%d。はデバイスのマイナー番号で、カードの場合は 0 から始まり、、の場合はそれぞれ 64 ずつ増加します。コネクタにはマイナーはなく、それぞれのカードのマイナーにあります。renderD%daccel%dcard%d-%s%dcontrolDrenderDaccel

エントリは、によってcontrolD作成された下位互換性のシンボリックリンクです。create_compat_control_link()ドライバー/gpu/drm/drm_drv.c元々予約されていたマイナー番号を使用しますcontrolD

コネクタ名の形式(%scard%d-%s)は であり%s-%d、は %sの名前です。struct drm_conn_prop_enum_list drm_connector_enum_list[]ドライバー/gpu/drm/drm_connector.cコネクタのインデックス番号は%d1 から始まります (カードには同じタイプのコネクタが複数ある場合がある)。

最後に、どのドライバーもここで独自のデバイスを登録することができますdrm_class_device_register()ドライバー/gpu/drm/drm_sysfs.c

関連情報