Skip to content
  • Thierry Reding's avatar
    loader: Add support for platform and host1x busses · f9bc48d4
    Thierry Reding authored
    
    
    ARM SoCs usually have their DRM/KMS devices on the platform bus, so add
    support for this bus in order to allow use of the DRI_PRIME environment
    variable with those devices.
    
    While at it, also support the host1x bus, which is effectively the same
    but uses an additional layer in the bus hierarchy.
    
    Note that it isn't enough to support the bus that has the rendering GPU
    because the loader code will also try to construct an ID path tag for a
    scanout-only device if it is the default that is being opened.
    
    The ID path tag for a device can be obtained by running udevadm info on
    the device node, as shown in this example on NVIDIA Tegra:
    
    	$ udevadm info /dev/dri/card0 | grep ID_PATH_TAG
    	E: ID_PATH_TAG=platform-50000000_host1x
    
    The corresponding OF_FULLNAME property, from which the ID_PATH_TAG is
    constructed, can be found in the sysfs "uevent" attribute for the card0
    device's parent:
    
    	$ grep OF_FULLNAME /sys/devices/platform/50000000.host1x/drm/uevent
    	OF_FULLNAME=/host1x@50000000
    
    Similarily, /dev/dri/card1 corresponds to the GPU:
    
    	$ udevadm info /dev/dri/card1 | grep ID_PATH_TAG
    	E: ID_PATH_TAG=platform-57000000_gpu
    
    and:
    
    	$ grep OF_FULLNAME /sys/devices/platform/57000000.gpu/uevent
    	OF_FULLNAME=/gpu@57000000
    
    Changes in v2:
    - avoid confusing pre-increment in strdup()
    - add examples of tags to commit message
    
    Reviewed-by: Eric Engestrom's avatarEric Engestrom <eric@engestrom.ch>
    Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    f9bc48d4