![/sys/class/drm 디렉토리 구조](https://linux55.com/image/22077/%2Fsys%2Fclass%2Fdrm%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EA%B5%AC%EC%A1%B0.png)
"/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부터 시작하여 각각 64씩 증가하여 controlD
, 및 와 일치해야 합니다 . 커넥터에는 보조 매개변수가 없으며 해당 카드의 보조 매개변수에 있습니다.renderD
accel
이러한 항목은 다음에서 controlD
생성된 이전 버전과 호환되는 심볼릭 링크 입니다.create_compat_control_link()
드라이버/gpu/drm/drm_drv.c그리고 원래 예약된 마이너 번호를 사용합니다 controlD
.
%s
커넥터 이름은 ( in 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.