diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-08-08 09:41:24 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-08-18 20:05:19 -0400 |
commit | 687fbb2e4f46ad00cbfef3f0da2425af7e8684a1 (patch) | |
tree | b2de09aee7f2afffbb319c763d1727a13bca18ec | |
parent | b0e898ac555e96e7863a5ee95d70f3625f1db5e2 (diff) |
drm: rip out DRIVER_FB_DMA and related code
No driver ever sets that flag, so good riddance!
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | drivers/gpu/drm/drm_bufs.c | 161 | ||||
-rw-r--r-- | include/drm/drmP.h | 1 |
2 files changed, 2 insertions, 160 deletions
diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c index cccc25f7ef86..5f73f0af6125 100644 --- a/drivers/gpu/drm/drm_bufs.c +++ b/drivers/gpu/drm/drm_bufs.c | |||
@@ -1130,161 +1130,6 @@ static int drm_addbufs_sg(struct drm_device * dev, struct drm_buf_desc * request | |||
1130 | return 0; | 1130 | return 0; |
1131 | } | 1131 | } |
1132 | 1132 | ||
1133 | static int drm_addbufs_fb(struct drm_device * dev, struct drm_buf_desc * request) | ||
1134 | { | ||
1135 | struct drm_device_dma *dma = dev->dma; | ||
1136 | struct drm_buf_entry *entry; | ||
1137 | struct drm_buf *buf; | ||
1138 | unsigned long offset; | ||
1139 | unsigned long agp_offset; | ||
1140 | int count; | ||
1141 | int order; | ||
1142 | int size; | ||
1143 | int alignment; | ||
1144 | int page_order; | ||
1145 | int total; | ||
1146 | int byte_count; | ||
1147 | int i; | ||
1148 | struct drm_buf **temp_buflist; | ||
1149 | |||
1150 | if (!drm_core_check_feature(dev, DRIVER_FB_DMA)) | ||
1151 | return -EINVAL; | ||
1152 | |||
1153 | if (!dma) | ||
1154 | return -EINVAL; | ||
1155 | |||
1156 | if (!capable(CAP_SYS_ADMIN)) | ||
1157 | return -EPERM; | ||
1158 | |||
1159 | count = request->count; | ||
1160 | order = order_base_2(request->size); | ||
1161 | size = 1 << order; | ||
1162 | |||
1163 | alignment = (request->flags & _DRM_PAGE_ALIGN) | ||
1164 | ? PAGE_ALIGN(size) : size; | ||
1165 | page_order = order - PAGE_SHIFT > 0 ? order - PAGE_SHIFT : 0; | ||
1166 | total = PAGE_SIZE << page_order; | ||
1167 | |||
1168 | byte_count = 0; | ||
1169 | agp_offset = request->agp_start; | ||
1170 | |||
1171 | DRM_DEBUG("count: %d\n", count); | ||
1172 | DRM_DEBUG("order: %d\n", order); | ||
1173 | DRM_DEBUG("size: %d\n", size); | ||
1174 | DRM_DEBUG("agp_offset: %lu\n", agp_offset); | ||
1175 | DRM_DEBUG("alignment: %d\n", alignment); | ||
1176 | DRM_DEBUG("page_order: %d\n", page_order); | ||
1177 | DRM_DEBUG("total: %d\n", total); | ||
1178 | |||
1179 | if (order < DRM_MIN_ORDER || order > DRM_MAX_ORDER) | ||
1180 | return -EINVAL; | ||
1181 | |||
1182 | spin_lock(&dev->count_lock); | ||
1183 | if (dev->buf_use) { | ||
1184 | spin_unlock(&dev->count_lock); | ||
1185 | return -EBUSY; | ||
1186 | } | ||
1187 | atomic_inc(&dev->buf_alloc); | ||
1188 | spin_unlock(&dev->count_lock); | ||
1189 | |||
1190 | mutex_lock(&dev->struct_mutex); | ||
1191 | entry = &dma->bufs[order]; | ||
1192 | if (entry->buf_count) { | ||
1193 | mutex_unlock(&dev->struct_mutex); | ||
1194 | atomic_dec(&dev->buf_alloc); | ||
1195 | return -ENOMEM; /* May only call once for each order */ | ||
1196 | } | ||
1197 | |||
1198 | if (count < 0 || count > 4096) { | ||
1199 | mutex_unlock(&dev->struct_mutex); | ||
1200 | atomic_dec(&dev->buf_alloc); | ||
1201 | return -EINVAL; | ||
1202 | } | ||
1203 | |||
1204 | entry->buflist = kzalloc(count * sizeof(*entry->buflist), | ||
1205 | GFP_KERNEL); | ||
1206 | if (!entry->buflist) { | ||
1207 | mutex_unlock(&dev->struct_mutex); | ||
1208 | atomic_dec(&dev->buf_alloc); | ||
1209 | return -ENOMEM; | ||
1210 | } | ||
1211 | |||
1212 | entry->buf_size = size; | ||
1213 | entry->page_order = page_order; | ||
1214 | |||
1215 | offset = 0; | ||
1216 | |||
1217 | while (entry->buf_count < count) { | ||
1218 | buf = &entry->buflist[entry->buf_count]; | ||
1219 | buf->idx = dma->buf_count + entry->buf_count; | ||
1220 | buf->total = alignment; | ||
1221 | buf->order = order; | ||
1222 | buf->used = 0; | ||
1223 | |||
1224 | buf->offset = (dma->byte_count + offset); | ||
1225 | buf->bus_address = agp_offset + offset; | ||
1226 | buf->address = (void *)(agp_offset + offset); | ||
1227 | buf->next = NULL; | ||
1228 | buf->waiting = 0; | ||
1229 | buf->pending = 0; | ||
1230 | buf->file_priv = NULL; | ||
1231 | |||
1232 | buf->dev_priv_size = dev->driver->dev_priv_size; | ||
1233 | buf->dev_private = kzalloc(buf->dev_priv_size, GFP_KERNEL); | ||
1234 | if (!buf->dev_private) { | ||
1235 | /* Set count correctly so we free the proper amount. */ | ||
1236 | entry->buf_count = count; | ||
1237 | drm_cleanup_buf_error(dev, entry); | ||
1238 | mutex_unlock(&dev->struct_mutex); | ||
1239 | atomic_dec(&dev->buf_alloc); | ||
1240 | return -ENOMEM; | ||
1241 | } | ||
1242 | |||
1243 | DRM_DEBUG("buffer %d @ %p\n", entry->buf_count, buf->address); | ||
1244 | |||
1245 | offset += alignment; | ||
1246 | entry->buf_count++; | ||
1247 | byte_count += PAGE_SIZE << page_order; | ||
1248 | } | ||
1249 | |||
1250 | DRM_DEBUG("byte_count: %d\n", byte_count); | ||
1251 | |||
1252 | temp_buflist = krealloc(dma->buflist, | ||
1253 | (dma->buf_count + entry->buf_count) * | ||
1254 | sizeof(*dma->buflist), GFP_KERNEL); | ||
1255 | if (!temp_buflist) { | ||
1256 | /* Free the entry because it isn't valid */ | ||
1257 | drm_cleanup_buf_error(dev, entry); | ||
1258 | mutex_unlock(&dev->struct_mutex); | ||
1259 | atomic_dec(&dev->buf_alloc); | ||
1260 | return -ENOMEM; | ||
1261 | } | ||
1262 | dma->buflist = temp_buflist; | ||
1263 | |||
1264 | for (i = 0; i < entry->buf_count; i++) { | ||
1265 | dma->buflist[i + dma->buf_count] = &entry->buflist[i]; | ||
1266 | } | ||
1267 | |||
1268 | dma->buf_count += entry->buf_count; | ||
1269 | dma->seg_count += entry->seg_count; | ||
1270 | dma->page_count += byte_count >> PAGE_SHIFT; | ||
1271 | dma->byte_count += byte_count; | ||
1272 | |||
1273 | DRM_DEBUG("dma->buf_count : %d\n", dma->buf_count); | ||
1274 | DRM_DEBUG("entry->buf_count : %d\n", entry->buf_count); | ||
1275 | |||
1276 | mutex_unlock(&dev->struct_mutex); | ||
1277 | |||
1278 | request->count = entry->buf_count; | ||
1279 | request->size = size; | ||
1280 | |||
1281 | dma->flags = _DRM_DMA_USE_FB; | ||
1282 | |||
1283 | atomic_dec(&dev->buf_alloc); | ||
1284 | return 0; | ||
1285 | } | ||
1286 | |||
1287 | |||
1288 | /** | 1133 | /** |
1289 | * Add buffers for DMA transfers (ioctl). | 1134 | * Add buffers for DMA transfers (ioctl). |
1290 | * | 1135 | * |
@@ -1319,7 +1164,7 @@ int drm_addbufs(struct drm_device *dev, void *data, | |||
1319 | if (request->flags & _DRM_SG_BUFFER) | 1164 | if (request->flags & _DRM_SG_BUFFER) |
1320 | ret = drm_addbufs_sg(dev, request); | 1165 | ret = drm_addbufs_sg(dev, request); |
1321 | else if (request->flags & _DRM_FB_BUFFER) | 1166 | else if (request->flags & _DRM_FB_BUFFER) |
1322 | ret = drm_addbufs_fb(dev, request); | 1167 | ret = -EINVAL; |
1323 | else | 1168 | else |
1324 | ret = drm_addbufs_pci(dev, request); | 1169 | ret = drm_addbufs_pci(dev, request); |
1325 | 1170 | ||
@@ -1556,9 +1401,7 @@ int drm_mapbufs(struct drm_device *dev, void *data, | |||
1556 | if (request->count >= dma->buf_count) { | 1401 | if (request->count >= dma->buf_count) { |
1557 | if ((drm_core_has_AGP(dev) && (dma->flags & _DRM_DMA_USE_AGP)) | 1402 | if ((drm_core_has_AGP(dev) && (dma->flags & _DRM_DMA_USE_AGP)) |
1558 | || (drm_core_check_feature(dev, DRIVER_SG) | 1403 | || (drm_core_check_feature(dev, DRIVER_SG) |
1559 | && (dma->flags & _DRM_DMA_USE_SG)) | 1404 | && (dma->flags & _DRM_DMA_USE_SG))) { |
1560 | || (drm_core_check_feature(dev, DRIVER_FB_DMA) | ||
1561 | && (dma->flags & _DRM_DMA_USE_FB))) { | ||
1562 | struct drm_local_map *map = dev->agp_buffer_map; | 1405 | struct drm_local_map *map = dev->agp_buffer_map; |
1563 | unsigned long token = dev->agp_buffer_token; | 1406 | unsigned long token = dev->agp_buffer_token; |
1564 | 1407 | ||
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index cef9a507246e..922e426b3391 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -147,7 +147,6 @@ int drm_err(const char *func, const char *format, ...); | |||
147 | #define DRIVER_IRQ_SHARED 0x80 | 147 | #define DRIVER_IRQ_SHARED 0x80 |
148 | #define DRIVER_IRQ_VBL 0x100 | 148 | #define DRIVER_IRQ_VBL 0x100 |
149 | #define DRIVER_DMA_QUEUE 0x200 | 149 | #define DRIVER_DMA_QUEUE 0x200 |
150 | #define DRIVER_FB_DMA 0x400 | ||
151 | #define DRIVER_IRQ_VBL2 0x800 | 150 | #define DRIVER_IRQ_VBL2 0x800 |
152 | #define DRIVER_GEM 0x1000 | 151 | #define DRIVER_GEM 0x1000 |
153 | #define DRIVER_MODESET 0x2000 | 152 | #define DRIVER_MODESET 0x2000 |