aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-08-08 09:41:19 -0400
committerDave Airlie <airlied@redhat.com>2013-08-18 20:04:21 -0400
commite2e99a8206bcce6f2d3d72ff8be42859f98dbcda (patch)
tree57e71365586e9972a89433fe3c91b8ae74df2f23
parent8e194bbf96d81c651c52b82e125be1264db0cd4e (diff)
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>
-rw-r--r--drivers/gpu/drm/drm_dma.c17
-rw-r--r--drivers/gpu/drm/drm_drv.c4
-rw-r--r--drivers/gpu/drm/drm_fops.c12
-rw-r--r--include/drm/drmP.h4
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 @@
44 * 44 *
45 * Allocate and initialize a drm_device_dma structure. 45 * Allocate and initialize a drm_device_dma structure.
46 */ 46 */
47int drm_dma_setup(struct drm_device *dev) 47int drm_legacy_dma_setup(struct drm_device *dev)
48{ 48{
49 int i; 49 int i;
50 50
51 if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
52 drm_core_check_feature(dev, DRIVER_MODESET)) {
53 return 0;
54 }
55
56 dev->buf_use = 0;
57 atomic_set(&dev->buf_alloc, 0);
58
51 dev->dma = kzalloc(sizeof(*dev->dma), GFP_KERNEL); 59 dev->dma = kzalloc(sizeof(*dev->dma), GFP_KERNEL);
52 if (!dev->dma) 60 if (!dev->dma)
53 return -ENOMEM; 61 return -ENOMEM;
@@ -66,11 +74,16 @@ int drm_dma_setup(struct drm_device *dev)
66 * Free all pages associated with DMA buffers, the buffers and pages lists, and 74 * Free all pages associated with DMA buffers, the buffers and pages lists, and
67 * finally the drm_device::dma structure itself. 75 * finally the drm_device::dma structure itself.
68 */ 76 */
69void drm_dma_takedown(struct drm_device *dev) 77void drm_legacy_dma_takedown(struct drm_device *dev)
70{ 78{
71 struct drm_device_dma *dma = dev->dma; 79 struct drm_device_dma *dma = dev->dma;
72 int i, j; 80 int i, j;
73 81
82 if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
83 drm_core_check_feature(dev, DRIVER_MODESET)) {
84 return;
85 }
86
74 if (!dma) 87 if (!dma)
75 return; 88 return;
76 89
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 743b24d7918e..5b949a736712 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -205,9 +205,7 @@ int drm_lastclose(struct drm_device * dev)
205 kfree(vma); 205 kfree(vma);
206 } 206 }
207 207
208 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && 208 drm_legacy_dma_takedown(dev);
209 !drm_core_check_feature(dev, DRIVER_MODESET))
210 drm_dma_takedown(dev);
211 209
212 dev->dev_mapping = NULL; 210 dev->dev_mapping = NULL;
213 mutex_unlock(&dev->struct_mutex); 211 mutex_unlock(&dev->struct_mutex);
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index 72acae908a7d..f343234bd831 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)
60 atomic_set(&dev->ioctl_count, 0); 60 atomic_set(&dev->ioctl_count, 0);
61 atomic_set(&dev->vma_count, 0); 61 atomic_set(&dev->vma_count, 0);
62 62
63 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && 63 i = drm_legacy_dma_setup(dev);
64 !drm_core_check_feature(dev, DRIVER_MODESET)) { 64 if (i < 0)
65 dev->buf_use = 0; 65 return i;
66 atomic_set(&dev->buf_alloc, 0);
67
68 i = drm_dma_setup(dev);
69 if (i < 0)
70 return i;
71 }
72 66
73 for (i = 0; i < ARRAY_SIZE(dev->counts); i++) 67 for (i = 0; i < ARRAY_SIZE(dev->counts); i++)
74 atomic_set(&dev->counts[i], 0); 68 atomic_set(&dev->counts[i], 0);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 10d9f83a9df0..1da25304c289 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1374,8 +1374,8 @@ extern int drm_mapbufs(struct drm_device *dev, void *data,
1374 struct drm_file *file_priv); 1374 struct drm_file *file_priv);
1375 1375
1376 /* DMA support (drm_dma.h) */ 1376 /* DMA support (drm_dma.h) */
1377extern int drm_dma_setup(struct drm_device *dev); 1377extern int drm_legacy_dma_setup(struct drm_device *dev);
1378extern void drm_dma_takedown(struct drm_device *dev); 1378extern void drm_legacy_dma_takedown(struct drm_device *dev);
1379extern void drm_free_buffer(struct drm_device *dev, struct drm_buf * buf); 1379extern void drm_free_buffer(struct drm_device *dev, struct drm_buf * buf);
1380extern void drm_core_reclaim_buffers(struct drm_device *dev, 1380extern void drm_core_reclaim_buffers(struct drm_device *dev,
1381 struct drm_file *filp); 1381 struct drm_file *filp);