diff options
| -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); |
