Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fc5cde7 authored by David Herrmann's avatar David Herrmann Committed by Dave Airlie
Browse files

drm: mark drm_buf and drm_map as legacy



Move internal declarations to drm_legacy.h and add drm_legacy_*() prefix
to all legacy functions.

[airlied: add a bit of an explaination to drm_legacy.h]

Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 9f50bd89
Loading
Loading
Loading
Loading
+44 −46
Original line number Original line Diff line number Diff line
/**
 * \file drm_bufs.c
 * Generic buffer template
 *
 * \author Rickard E. (Rik) Faith <faith@valinux.com>
 * \author Gareth Hughes <gareth@valinux.com>
 */

/*
/*
 * Created: Thu Nov 23 03:10:50 2000 by gareth@valinux.com
 * Legacy: Generic DRM Buffer Management
 *
 *
 * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas.
 * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas.
 * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
 * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
 * All Rights Reserved.
 * All Rights Reserved.
 *
 *
 * Author: Rickard E. (Rik) Faith <faith@valinux.com>
 * Author: Gareth Hughes <gareth@valinux.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * to deal in the Software without restriction, including without limitation
@@ -39,6 +34,7 @@
#include <linux/export.h>
#include <linux/export.h>
#include <asm/shmparam.h>
#include <asm/shmparam.h>
#include <drm/drmP.h>
#include <drm/drmP.h>
#include "drm_legacy.h"


static struct drm_map_list *drm_find_matching_map(struct drm_device *dev,
static struct drm_map_list *drm_find_matching_map(struct drm_device *dev,
						  struct drm_local_map *map)
						  struct drm_local_map *map)
@@ -365,7 +361,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset,
	return 0;
	return 0;
}
}


int drm_addmap(struct drm_device * dev, resource_size_t offset,
int drm_legacy_addmap(struct drm_device * dev, resource_size_t offset,
		      unsigned int size, enum drm_map_type type,
		      unsigned int size, enum drm_map_type type,
		      enum drm_map_flags flags, struct drm_local_map **map_ptr)
		      enum drm_map_flags flags, struct drm_local_map **map_ptr)
{
{
@@ -377,8 +373,7 @@ int drm_addmap(struct drm_device * dev, resource_size_t offset,
		*map_ptr = list->map;
		*map_ptr = list->map;
	return rc;
	return rc;
}
}

EXPORT_SYMBOL(drm_legacy_addmap);
EXPORT_SYMBOL(drm_addmap);


/**
/**
 * Ioctl to specify a range of memory that is available for mapping by a
 * Ioctl to specify a range of memory that is available for mapping by a
@@ -391,7 +386,7 @@ EXPORT_SYMBOL(drm_addmap);
 * \return zero on success or a negative value on error.
 * \return zero on success or a negative value on error.
 *
 *
 */
 */
int drm_addmap_ioctl(struct drm_device *dev, void *data,
int drm_legacy_addmap_ioctl(struct drm_device *dev, void *data,
			    struct drm_file *file_priv)
			    struct drm_file *file_priv)
{
{
	struct drm_map *map = data;
	struct drm_map *map = data;
@@ -429,9 +424,9 @@ int drm_addmap_ioctl(struct drm_device *dev, void *data,
 * its being used, and free any associate resource (such as MTRR's) if it's not
 * its being used, and free any associate resource (such as MTRR's) if it's not
 * being on use.
 * being on use.
 *
 *
 * \sa drm_addmap
 * \sa drm_legacy_addmap
 */
 */
int drm_rmmap_locked(struct drm_device *dev, struct drm_local_map *map)
int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map)
{
{
	struct drm_map_list *r_list = NULL, *list_t;
	struct drm_map_list *r_list = NULL, *list_t;
	drm_dma_handle_t dmah;
	drm_dma_handle_t dmah;
@@ -485,19 +480,19 @@ int drm_rmmap_locked(struct drm_device *dev, struct drm_local_map *map)


	return 0;
	return 0;
}
}
EXPORT_SYMBOL(drm_rmmap_locked);
EXPORT_SYMBOL(drm_legacy_rmmap_locked);


int drm_rmmap(struct drm_device *dev, struct drm_local_map *map)
int drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map)
{
{
	int ret;
	int ret;


	mutex_lock(&dev->struct_mutex);
	mutex_lock(&dev->struct_mutex);
	ret = drm_rmmap_locked(dev, map);
	ret = drm_legacy_rmmap_locked(dev, map);
	mutex_unlock(&dev->struct_mutex);
	mutex_unlock(&dev->struct_mutex);


	return ret;
	return ret;
}
}
EXPORT_SYMBOL(drm_rmmap);
EXPORT_SYMBOL(drm_legacy_rmmap);


/* The rmmap ioctl appears to be unnecessary.  All mappings are torn down on
/* The rmmap ioctl appears to be unnecessary.  All mappings are torn down on
 * the last close of the device, and this is necessary for cleanup when things
 * the last close of the device, and this is necessary for cleanup when things
@@ -514,7 +509,7 @@ EXPORT_SYMBOL(drm_rmmap);
 * \param arg pointer to a struct drm_map structure.
 * \param arg pointer to a struct drm_map structure.
 * \return zero on success or a negative value on error.
 * \return zero on success or a negative value on error.
 */
 */
int drm_rmmap_ioctl(struct drm_device *dev, void *data,
int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data,
			   struct drm_file *file_priv)
			   struct drm_file *file_priv)
{
{
	struct drm_map *request = data;
	struct drm_map *request = data;
@@ -546,7 +541,7 @@ int drm_rmmap_ioctl(struct drm_device *dev, void *data,
		return 0;
		return 0;
	}
	}


	ret = drm_rmmap_locked(dev, map);
	ret = drm_legacy_rmmap_locked(dev, map);


	mutex_unlock(&dev->struct_mutex);
	mutex_unlock(&dev->struct_mutex);


@@ -599,7 +594,8 @@ static void drm_cleanup_buf_error(struct drm_device * dev,
 * reallocates the buffer list of the same size order to accommodate the new
 * reallocates the buffer list of the same size order to accommodate the new
 * buffers.
 * buffers.
 */
 */
int drm_addbufs_agp(struct drm_device * dev, struct drm_buf_desc * request)
int drm_legacy_addbufs_agp(struct drm_device *dev,
			   struct drm_buf_desc *request)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
	struct drm_buf_entry *entry;
	struct drm_buf_entry *entry;
@@ -759,10 +755,11 @@ int drm_addbufs_agp(struct drm_device * dev, struct drm_buf_desc * request)
	atomic_dec(&dev->buf_alloc);
	atomic_dec(&dev->buf_alloc);
	return 0;
	return 0;
}
}
EXPORT_SYMBOL(drm_addbufs_agp);
EXPORT_SYMBOL(drm_legacy_addbufs_agp);
#endif				/* __OS_HAS_AGP */
#endif				/* __OS_HAS_AGP */


int drm_addbufs_pci(struct drm_device * dev, struct drm_buf_desc * request)
int drm_legacy_addbufs_pci(struct drm_device *dev,
			   struct drm_buf_desc *request)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
	int count;
	int count;
@@ -964,9 +961,10 @@ int drm_addbufs_pci(struct drm_device * dev, struct drm_buf_desc * request)
	return 0;
	return 0;


}
}
EXPORT_SYMBOL(drm_addbufs_pci);
EXPORT_SYMBOL(drm_legacy_addbufs_pci);


static int drm_addbufs_sg(struct drm_device * dev, struct drm_buf_desc * request)
static int drm_legacy_addbufs_sg(struct drm_device *dev,
				 struct drm_buf_desc *request)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
	struct drm_buf_entry *entry;
	struct drm_buf_entry *entry;
@@ -1135,7 +1133,7 @@ static int drm_addbufs_sg(struct drm_device * dev, struct drm_buf_desc * request
 * addbufs_sg() or addbufs_pci() for AGP, scatter-gather or consistent
 * addbufs_sg() or addbufs_pci() for AGP, scatter-gather or consistent
 * PCI memory respectively.
 * PCI memory respectively.
 */
 */
int drm_addbufs(struct drm_device *dev, void *data,
int drm_legacy_addbufs(struct drm_device *dev, void *data,
		       struct drm_file *file_priv)
		       struct drm_file *file_priv)
{
{
	struct drm_buf_desc *request = data;
	struct drm_buf_desc *request = data;
@@ -1149,15 +1147,15 @@ int drm_addbufs(struct drm_device *dev, void *data,


#if __OS_HAS_AGP
#if __OS_HAS_AGP
	if (request->flags & _DRM_AGP_BUFFER)
	if (request->flags & _DRM_AGP_BUFFER)
		ret = drm_addbufs_agp(dev, request);
		ret = drm_legacy_addbufs_agp(dev, request);
	else
	else
#endif
#endif
	if (request->flags & _DRM_SG_BUFFER)
	if (request->flags & _DRM_SG_BUFFER)
		ret = drm_addbufs_sg(dev, request);
		ret = drm_legacy_addbufs_sg(dev, request);
	else if (request->flags & _DRM_FB_BUFFER)
	else if (request->flags & _DRM_FB_BUFFER)
		ret = -EINVAL;
		ret = -EINVAL;
	else
	else
		ret = drm_addbufs_pci(dev, request);
		ret = drm_legacy_addbufs_pci(dev, request);


	return ret;
	return ret;
}
}
@@ -1179,7 +1177,7 @@ int drm_addbufs(struct drm_device *dev, void *data,
 * lock, preventing of allocating more buffers after this call. Information
 * lock, preventing of allocating more buffers after this call. Information
 * about each requested buffer is then copied into user space.
 * about each requested buffer is then copied into user space.
 */
 */
int drm_infobufs(struct drm_device *dev, void *data,
int drm_legacy_infobufs(struct drm_device *dev, void *data,
			struct drm_file *file_priv)
			struct drm_file *file_priv)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
@@ -1260,7 +1258,7 @@ int drm_infobufs(struct drm_device *dev, void *data,
 *
 *
 * \note This ioctl is deprecated and mostly never used.
 * \note This ioctl is deprecated and mostly never used.
 */
 */
int drm_markbufs(struct drm_device *dev, void *data,
int drm_legacy_markbufs(struct drm_device *dev, void *data,
			struct drm_file *file_priv)
			struct drm_file *file_priv)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
@@ -1307,7 +1305,7 @@ int drm_markbufs(struct drm_device *dev, void *data,
 * Calls free_buffer() for each used buffer.
 * Calls free_buffer() for each used buffer.
 * This function is primarily used for debugging.
 * This function is primarily used for debugging.
 */
 */
int drm_freebufs(struct drm_device *dev, void *data,
int drm_legacy_freebufs(struct drm_device *dev, void *data,
			struct drm_file *file_priv)
			struct drm_file *file_priv)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
@@ -1360,7 +1358,7 @@ int drm_freebufs(struct drm_device *dev, void *data,
 * offset equal to 0, which drm_mmap() interpretes as PCI buffers and calls
 * offset equal to 0, which drm_mmap() interpretes as PCI buffers and calls
 * drm_mmap_dma().
 * drm_mmap_dma().
 */
 */
int drm_mapbufs(struct drm_device *dev, void *data,
int drm_legacy_mapbufs(struct drm_device *dev, void *data,
		       struct drm_file *file_priv)
		       struct drm_file *file_priv)
{
{
	struct drm_device_dma *dma = dev->dma;
	struct drm_device_dma *dma = dev->dma;
@@ -1448,7 +1446,7 @@ int drm_mapbufs(struct drm_device *dev, void *data,
	return retcode;
	return retcode;
}
}


int drm_dma_ioctl(struct drm_device *dev, void *data,
int drm_legacy_dma_ioctl(struct drm_device *dev, void *data,
		  struct drm_file *file_priv)
		  struct drm_file *file_priv)
{
{
	if (drm_core_check_feature(dev, DRIVER_MODESET))
	if (drm_core_check_feature(dev, DRIVER_MODESET))
@@ -1460,7 +1458,7 @@ int drm_dma_ioctl(struct drm_device *dev, void *data,
		return -EINVAL;
		return -EINVAL;
}
}


struct drm_local_map *drm_getsarea(struct drm_device *dev)
struct drm_local_map *drm_legacy_getsarea(struct drm_device *dev)
{
{
	struct drm_map_list *entry;
	struct drm_map_list *entry;


@@ -1472,4 +1470,4 @@ struct drm_local_map *drm_getsarea(struct drm_device *dev)
	}
	}
	return NULL;
	return NULL;
}
}
EXPORT_SYMBOL(drm_getsarea);
EXPORT_SYMBOL(drm_legacy_getsarea);
+2 −2
Original line number Original line Diff line number Diff line
@@ -143,7 +143,7 @@ static void drm_master_destroy(struct kref *kref)


	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) {
	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) {
		if (r_list->master == master) {
		if (r_list->master == master) {
			drm_rmmap_locked(dev, r_list->map);
			drm_legacy_rmmap_locked(dev, r_list->map);
			r_list = NULL;
			r_list = NULL;
		}
		}
	}
	}
@@ -779,7 +779,7 @@ void drm_dev_unregister(struct drm_device *dev)
	drm_vblank_cleanup(dev);
	drm_vblank_cleanup(dev);


	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
		drm_rmmap(dev, r_list->map);
		drm_legacy_rmmap(dev, r_list->map);


	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
	drm_minor_unregister(dev, DRM_MINOR_LEGACY);
	drm_minor_unregister(dev, DRM_MINOR_RENDER);
	drm_minor_unregister(dev, DRM_MINOR_RENDER);
+8 −8
Original line number Original line Diff line number Diff line
@@ -62,8 +62,8 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
	DRM_IOCTL_DEF(DRM_IOCTL_UNBLOCK, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_UNBLOCK, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_AUTH_MAGIC, drm_authmagic, DRM_AUTH|DRM_MASTER),
	DRM_IOCTL_DEF(DRM_IOCTL_AUTH_MAGIC, drm_authmagic, DRM_AUTH|DRM_MASTER),


	DRM_IOCTL_DEF(DRM_IOCTL_ADD_MAP, drm_addmap_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_ADD_MAP, drm_legacy_addmap_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_RM_MAP, drm_rmmap_ioctl, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_RM_MAP, drm_legacy_rmmap_ioctl, DRM_AUTH),


	DRM_IOCTL_DEF(DRM_IOCTL_SET_SAREA_CTX, drm_legacy_setsareactx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_SET_SAREA_CTX, drm_legacy_setsareactx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_GET_SAREA_CTX, drm_legacy_getsareactx, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_GET_SAREA_CTX, drm_legacy_getsareactx, DRM_AUTH),
@@ -87,12 +87,12 @@ static const struct drm_ioctl_desc drm_ioctls[] = {


	DRM_IOCTL_DEF(DRM_IOCTL_FINISH, drm_noop, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_FINISH, drm_noop, DRM_AUTH),


	DRM_IOCTL_DEF(DRM_IOCTL_ADD_BUFS, drm_addbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_ADD_BUFS, drm_legacy_addbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_MARK_BUFS, drm_markbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_MARK_BUFS, drm_legacy_markbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_INFO_BUFS, drm_infobufs, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_INFO_BUFS, drm_legacy_infobufs, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_MAP_BUFS, drm_mapbufs, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_MAP_BUFS, drm_legacy_mapbufs, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_FREE_BUFS, drm_freebufs, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_FREE_BUFS, drm_legacy_freebufs, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_DMA, drm_dma_ioctl, DRM_AUTH),
	DRM_IOCTL_DEF(DRM_IOCTL_DMA, drm_legacy_dma_ioctl, DRM_AUTH),


	DRM_IOCTL_DEF(DRM_IOCTL_CONTROL, drm_control, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
	DRM_IOCTL_DEF(DRM_IOCTL_CONTROL, drm_control, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),


+20 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,11 @@
 * OTHER DEALINGS IN THE SOFTWARE.
 * OTHER DEALINGS IN THE SOFTWARE.
 */
 */


/*
 * This file contains legacy interfaces that modern drm drivers
 * should no longer be using. They cannot be removed as legacy
 * drivers use them, and removing them are API breaks.
 */
struct drm_device;
struct drm_device;
struct drm_file;
struct drm_file;


@@ -48,4 +53,19 @@ int drm_legacy_rmctx(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_setsareactx(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_setsareactx(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_getsareactx(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_getsareactx(struct drm_device *d, void *v, struct drm_file *f);


/*
 * Generic Buffer Management
 */

#define DRM_MAP_HASH_OFFSET 0x10000000

int drm_legacy_addmap_ioctl(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_rmmap_ioctl(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_addbufs(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_infobufs(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_markbufs(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_freebufs(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_mapbufs(struct drm_device *d, void *v, struct drm_file *f);
int drm_legacy_dma_ioctl(struct drm_device *d, void *v, struct drm_file *f);

#endif /* __DRM_LEGACY_H__ */
#endif /* __DRM_LEGACY_H__ */
+1 −1
Original line number Original line Diff line number Diff line
@@ -196,7 +196,7 @@ static int i915_initialize(struct drm_device *dev, drm_i915_init_t *init)
	struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
	struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
	int ret;
	int ret;


	master_priv->sarea = drm_getsarea(dev);
	master_priv->sarea = drm_legacy_getsarea(dev);
	if (master_priv->sarea) {
	if (master_priv->sarea) {
		master_priv->sarea_priv = (drm_i915_sarea_t *)
		master_priv->sarea_priv = (drm_i915_sarea_t *)
			((u8 *)master_priv->sarea->handle + init->sarea_priv_offset);
			((u8 *)master_priv->sarea->handle + init->sarea_priv_offset);
Loading