@@ -271,8 +271,14 @@ bool msm_use_mmu(struct drm_device *dev)
{
struct msm_drm_private *priv = dev->dev_private;
- /* a2xx comes with its own MMU */
- return priv->is_a2xx || iommu_present(&platform_bus_type);
+ /*
+ * a2xx comes with its own MMU
+ * On other platforms IOMMU can be declared specified either for the
+ * MDP/DPU device or for its parent, MDSS device.
+ */
+ return priv->is_a2xx ||
+ device_iommu_mapped(dev->dev) ||
+ device_iommu_mapped(dev->dev->parent);
}
static int msm_init_vram(struct drm_device *dev)