"/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%d
, renderD%d
, accel%d
, 각 카드 커넥터에 대한 것 입니다 card%d-%s
. 장치 %d
부 번호는 카드의 경우 0에서 시작하고 controlD
, renderD
및 accel
각각에 대해 64개 증분 단위로 일치해야 합니다. 커넥터에는 미성년자가 없으며 해당 카드의 미성년자에 있습니다.
항목 은 다음 에서 controlD
생성된 이전 버전과 호환되는 심볼릭 링크입니다.create_compat_control_link()
드라이버/gpu/drm/drm_drv.c에 원래 예약된 마이너 번호를 사용합니다 controlD
.
커넥터 이름의 형식( in %s
) card%d-%s
은 입니다 %s-%d
. 여기서 는 in %s
의 이름입니다.struct 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.