| From 8d8e3896a74c7aa9a428e768adcab586e16705d0 Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Thu, 8 Aug 2013 15:41:19 +0200 |
| Subject: drm: mark dma setup/teardown as legacy systems |
| |
| And hide the checks a bit better. This was already disallowed for |
| modesetting drivers, so no functinal change here. |
| |
| Reviewed-by: Eric Anholt <eric@anholt.net> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| (cherry picked from commit e2e99a8206bcce6f2d3d72ff8be42859f98dbcda) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/drm_dma.c | 17 +++++++++++++++-- |
| drivers/gpu/drm/drm_drv.c | 4 +--- |
| drivers/gpu/drm/drm_fops.c | 12 +++--------- |
| include/drm/drmP.h | 4 ++-- |
| 4 files changed, 21 insertions(+), 16 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/drm_dma.c b/drivers/gpu/drm/drm_dma.c |
| index 495b5fd2787c..8a140a953754 100644 |
| --- a/drivers/gpu/drm/drm_dma.c |
| +++ b/drivers/gpu/drm/drm_dma.c |
| @@ -44,10 +44,18 @@ |
| * |
| * Allocate and initialize a drm_device_dma structure. |
| */ |
| -int drm_dma_setup(struct drm_device *dev) |
| +int drm_legacy_dma_setup(struct drm_device *dev) |
| { |
| int i; |
| |
| + if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) || |
| + drm_core_check_feature(dev, DRIVER_MODESET)) { |
| + return 0; |
| + } |
| + |
| + dev->buf_use = 0; |
| + atomic_set(&dev->buf_alloc, 0); |
| + |
| dev->dma = kzalloc(sizeof(*dev->dma), GFP_KERNEL); |
| if (!dev->dma) |
| return -ENOMEM; |
| @@ -66,11 +74,16 @@ int drm_dma_setup(struct drm_device *dev) |
| * Free all pages associated with DMA buffers, the buffers and pages lists, and |
| * finally the drm_device::dma structure itself. |
| */ |
| -void drm_dma_takedown(struct drm_device *dev) |
| +void drm_legacy_dma_takedown(struct drm_device *dev) |
| { |
| struct drm_device_dma *dma = dev->dma; |
| int i, j; |
| |
| + if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) || |
| + drm_core_check_feature(dev, DRIVER_MODESET)) { |
| + return; |
| + } |
| + |
| if (!dma) |
| return; |
| |
| diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c |
| index 45a2ea10b1c9..c89aecb181a8 100644 |
| --- a/drivers/gpu/drm/drm_drv.c |
| +++ b/drivers/gpu/drm/drm_drv.c |
| @@ -204,9 +204,7 @@ int drm_lastclose(struct drm_device * dev) |
| kfree(vma); |
| } |
| |
| - if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && |
| - !drm_core_check_feature(dev, DRIVER_MODESET)) |
| - drm_dma_takedown(dev); |
| + drm_legacy_dma_takedown(dev); |
| |
| dev->dev_mapping = NULL; |
| mutex_unlock(&dev->struct_mutex); |
| diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c |
| index 49bec8a62d89..0aff5f2542d2 100644 |
| --- a/drivers/gpu/drm/drm_fops.c |
| +++ b/drivers/gpu/drm/drm_fops.c |
| @@ -60,15 +60,9 @@ static int drm_setup(struct drm_device * dev) |
| atomic_set(&dev->ioctl_count, 0); |
| atomic_set(&dev->vma_count, 0); |
| |
| - if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && |
| - !drm_core_check_feature(dev, DRIVER_MODESET)) { |
| - dev->buf_use = 0; |
| - atomic_set(&dev->buf_alloc, 0); |
| - |
| - i = drm_dma_setup(dev); |
| - if (i < 0) |
| - return i; |
| - } |
| + i = drm_legacy_dma_setup(dev); |
| + if (i < 0) |
| + return i; |
| |
| for (i = 0; i < ARRAY_SIZE(dev->counts); i++) |
| atomic_set(&dev->counts[i], 0); |
| diff --git a/include/drm/drmP.h b/include/drm/drmP.h |
| index 4b76bd8dfc32..4dfa1dad9a37 100644 |
| --- a/include/drm/drmP.h |
| +++ b/include/drm/drmP.h |
| @@ -1390,8 +1390,8 @@ extern int drm_mapbufs(struct drm_device *dev, void *data, |
| extern int drm_order(unsigned long size); |
| |
| /* DMA support (drm_dma.h) */ |
| -extern int drm_dma_setup(struct drm_device *dev); |
| -extern void drm_dma_takedown(struct drm_device *dev); |
| +extern int drm_legacy_dma_setup(struct drm_device *dev); |
| +extern void drm_legacy_dma_takedown(struct drm_device *dev); |
| extern void drm_free_buffer(struct drm_device *dev, struct drm_buf * buf); |
| extern void drm_core_reclaim_buffers(struct drm_device *dev, |
| struct drm_file *filp); |
| -- |
| 1.8.5.rc3 |
| |