diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-08-08 09:41:19 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-08-18 20:04:21 -0400 |
commit | e2e99a8206bcce6f2d3d72ff8be42859f98dbcda (patch) | |
tree | 57e71365586e9972a89433fe3c91b8ae74df2f23 | |
parent | 8e194bbf96d81c651c52b82e125be1264db0cd4e (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.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_drv.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_fops.c | 12 | ||||
-rw-r--r-- | 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 @@ | |||
44 | * | 44 | * |
45 | * Allocate and initialize a drm_device_dma structure. | 45 | * Allocate and initialize a drm_device_dma structure. |
46 | */ | 46 | */ |
47 | int drm_dma_setup(struct drm_device *dev) | 47 | int 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 | */ |
69 | void drm_dma_takedown(struct drm_device *dev) | 77 | void 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) */ |
1377 | extern int drm_dma_setup(struct drm_device *dev); | 1377 | extern int drm_legacy_dma_setup(struct drm_device *dev); |
1378 | extern void drm_dma_takedown(struct drm_device *dev); | 1378 | extern void drm_legacy_dma_takedown(struct drm_device *dev); |
1379 | extern void drm_free_buffer(struct drm_device *dev, struct drm_buf * buf); | 1379 | extern void drm_free_buffer(struct drm_device *dev, struct drm_buf * buf); |
1380 | extern void drm_core_reclaim_buffers(struct drm_device *dev, | 1380 | extern void drm_core_reclaim_buffers(struct drm_device *dev, |
1381 | struct drm_file *filp); | 1381 | struct drm_file *filp); |