Estrutura de diretório /sys/class/drm

Estrutura de diretório /sys/class/drm

Quem é responsável por criar a estrutura de diretórios "/sys/class/drm", mais especificamente o diretório "/sys/class/drm/card0-LVDS-1"?

Estou usando o kernel-2.6.38 e uma placa nVidia.

Responder1

O módulo DRM é responsável por essa subárvore no SysFS. Você pode navegar pelo código-fonte para isso emdrivers/gpu/drm/drm_sysfs.c.

Os subdiretórios são por conector, com um nome no formato card%d-%ssubstituído %dpor um índice (sobre o qual não sei nada) e %ssubstituído pelo nome do conector.

Cinco arquivos por dispositivo devem aparecer:

  • Status da conexão
  • Habilitado (ou não)
  • Estado do DPMS
  • Lista de modos
  • EDI

Para alguns dispositivos, você também obterá informações extras sobre subconectores.

Responder2

Houve algum desenvolvimento desde a última resposta aceita, por isso estou criando uma nova resposta.

A partir da v6.2.11, o código-fonte responsável por esta subárvore sysfs ainda édrivers/gpu/drm/drm_sysfs.c(link de trabalho).

O próprio driver DRM pode criar 5 tipos de entrada diferentes, com base no suporte de hardware. São eles: card%d, controlD%d, renderD%d, accel%d, então para cada conector de placa card%d-%s. São %dnúmeros secundários de dispositivos, que devem começar em 0 para os cartões e, em seguida, corresponder a 64 incrementos para e controlD, respectivamente. Não há menores para os conectores, eles estão nos menores de suas respectivas placas.renderDaccel

As controlDentradas são links simbólicos de compatibilidade com versões anteriores criados por create_compat_control_link()emdrivers/gpu/drm/drm_drv.ce use o número menor originalmente reservado para controlD.

O formato do nome do conector ( %sin card%d-%s) é %s-%d, onde %sé um nome de struct drm_conn_prop_enum_list drm_connector_enum_list[]in drivers/gpu/drm/drm_connector.ce %dé um número de índice do conector começando em 1 (já que uma placa pode ter mais de um conector do mesmo tipo).

Finalmente, qualquer driver pode registrar seus próprios dispositivos aqui drm_class_device_register()usandodrivers/gpu/drm/drm_sysfs.c.

informação relacionada