drm/exynos: Fix dma_parms allocation
authorMarek Szyprowski <m.szyprowski@samsung.com>
Tue, 7 Jul 2020 11:08:27 +0000 (13:08 +0200)
committerInki Dae <inki.dae@samsung.com>
Tue, 22 Sep 2020 04:49:09 +0000 (13:49 +0900)
Since commit 9495b7e92f71 ("driver core: platform: Initialize dma_parms
for platform devices") driver core handles allocation of the dma_parms
structure for platform device, so there is no need to manually allocate
nor free it.

Reported-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_dma.c

index 58b89ec..5887f7f 100644 (file)
 #define EXYNOS_DEV_ADDR_START  0x20000000
 #define EXYNOS_DEV_ADDR_SIZE   0x40000000
 
-static inline int configure_dma_max_seg_size(struct device *dev)
-{
-       if (!dev->dma_parms)
-               dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL);
-       if (!dev->dma_parms)
-               return -ENOMEM;
-
-       dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
-       return 0;
-}
-
-static inline void clear_dma_max_seg_size(struct device *dev)
-{
-       kfree(dev->dma_parms);
-       dev->dma_parms = NULL;
-}
-
 /*
  * drm_iommu_attach_device- attach device to iommu mapping
  *
@@ -69,10 +52,7 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev,
                return -EINVAL;
        }
 
-       ret = configure_dma_max_seg_size(subdrv_dev);
-       if (ret)
-               return ret;
-
+       dma_set_max_seg_size(subdrv_dev, DMA_BIT_MASK(32));
        if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) {
                /*
                 * Keep the original DMA mapping of the sub-device and
@@ -89,9 +69,6 @@ static int drm_iommu_attach_device(struct drm_device *drm_dev,
                ret = iommu_attach_device(priv->mapping, subdrv_dev);
        }
 
-       if (ret)
-               clear_dma_max_seg_size(subdrv_dev);
-
        return ret;
 }
 
@@ -114,8 +91,6 @@ static void drm_iommu_detach_device(struct drm_device *drm_dev,
                arm_iommu_attach_device(subdrv_dev, *dma_priv);
        } else if (IS_ENABLED(CONFIG_IOMMU_DMA))
                iommu_detach_device(priv->mapping, subdrv_dev);
-
-       clear_dma_max_seg_size(subdrv_dev);
 }
 
 int exynos_drm_register_dma(struct drm_device *drm, struct device *dev,