/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

デバイスごとに5つのファイルを表示する必要があります。

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

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

答え2

最後の回答以来、いくつかの進歩があったので、新しい答えを作っています。

v6.2.11以降、このsysfsサブツリーを担当するソースコードはまだドライバ/gpu/drm/drm_sysfs.c(作業リンク)。

DRMドライバ自体は、ハードウェアサポートに応じて5つの項目タイプを生成できます。card%d、、、、、各カードコネクタcontrolD%drenderD%dです。これはデバイスのマイナー番号です。カードのマイナー番号は0から始まり、それぞれ64ずつ増加し、およびと一致する必要があります。コネクタには補助パラメータがなく、そのカードの補助パラメータにあります。accel%dcard%d-%s%dcontrolDrenderDaccel

これらの項目は、以下でcontrolD生成された以前のバージョンと互換性のあるシンボリックリンクです。create_compat_control_link()ドライバ/gpu/drm/drm_drv.cそして最初に予約されたマイナー番号を使用してくださいcontrolD

%sコネクタ名は(in card%d-%s)形式です。ここで名前は%s-%din からです。 %sstruct drm_conn_prop_enum_list drm_connector_enum_list[]ドライバ/gpu/drm/drm_connector.c%dは1から始まるコネクタインデックス番号です(カードに同じ種類のコネクタが複数ある可能性があるため)。

drm_class_device_register()最後に、すべてのドライバーはここを使用して自分のデバイスを登録できます。ドライバ/gpu/drm/drm_sysfs.c

関連情報