• Michael Walle's avatar
    drm/etnaviv: fix dma configuration of the virtual device · 0ea057a9
    Michael Walle authored
    The DMA configuration of the virtual device is inherited from the first
    actual etnaviv device. Unfortunately, this doesn't work with an IOMMU:
    
    [    5.191008] Failed to set up IOMMU for device (null); retaining platform DMA ops
    
    This is because there is no associated iommu_group with the device. The
    group is set in iommu_group_add_device() which is eventually called by
    device_add() via the platform bus:
      device_add()
        blocking_notifier_call_chain()
          iommu_bus_notifier()
            iommu_probe_device()
              __iommu_probe_device()
                iommu_group_get_for_dev()
                  iommu_group_add_device()
    
    Move of_dma_configure() into the probe function, which is called after
    device_add(). Normally, the platform code will already call it itself
    if .of_node is set. Unfortunately, this isn't the case here.
    Signed-off-by: default avatarMichael Walle <michael@walle.cc>
    Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
    0ea057a9
etnaviv_drv.c 16.2 KB