mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm/mgag200: Convert mgag200 driver to |struct drm_gem_vram_object|
The data structure |struct drm_gem_vram_object| and its helpers replace |struct mgag200_bo|. It's the same implementation; except for the type names. v4: * cleanups from checkpatch.pl * select config option DRM_VRAM_HELPER Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Link: http://patchwork.freedesktop.org/patch/msgid/20190508082630.15116-15-tzimmermann@suse.de Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
committed by
Gerd Hoffmann
parent
b3a25b9af8
commit
ebb04eb36f
@@ -230,11 +230,13 @@ int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
|
||||
}
|
||||
|
||||
/* Make small buffers to store a hardware cursor (double buffered icon updates) */
|
||||
mgag200_bo_create(dev, roundup(48*64, PAGE_SIZE), 0, 0,
|
||||
&mdev->cursor.pixels_1);
|
||||
mgag200_bo_create(dev, roundup(48*64, PAGE_SIZE), 0, 0,
|
||||
&mdev->cursor.pixels_2);
|
||||
if (!mdev->cursor.pixels_2 || !mdev->cursor.pixels_1) {
|
||||
mdev->cursor.pixels_1 = drm_gem_vram_create(dev, &mdev->ttm.bdev,
|
||||
roundup(48*64, PAGE_SIZE),
|
||||
0, 0);
|
||||
mdev->cursor.pixels_2 = drm_gem_vram_create(dev, &mdev->ttm.bdev,
|
||||
roundup(48*64, PAGE_SIZE),
|
||||
0, 0);
|
||||
if (IS_ERR(mdev->cursor.pixels_2) || IS_ERR(mdev->cursor.pixels_1)) {
|
||||
mdev->cursor.pixels_1 = NULL;
|
||||
mdev->cursor.pixels_2 = NULL;
|
||||
dev_warn(&dev->pdev->dev,
|
||||
@@ -272,7 +274,8 @@ int mgag200_gem_create(struct drm_device *dev,
|
||||
u32 size, bool iskernel,
|
||||
struct drm_gem_object **obj)
|
||||
{
|
||||
struct mgag200_bo *astbo;
|
||||
struct mga_device *mdev = dev->dev_private;
|
||||
struct drm_gem_vram_object *gbo;
|
||||
int ret;
|
||||
|
||||
*obj = NULL;
|
||||
@@ -281,13 +284,14 @@ int mgag200_gem_create(struct drm_device *dev,
|
||||
if (size == 0)
|
||||
return -EINVAL;
|
||||
|
||||
ret = mgag200_bo_create(dev, size, 0, 0, &astbo);
|
||||
if (ret) {
|
||||
gbo = drm_gem_vram_create(dev, &mdev->ttm.bdev, size, 0, false);
|
||||
if (IS_ERR(gbo)) {
|
||||
ret = PTR_ERR(gbo);
|
||||
if (ret != -ERESTARTSYS)
|
||||
DRM_ERROR("failed to allocate GEM object\n");
|
||||
return ret;
|
||||
}
|
||||
*obj = &astbo->gem;
|
||||
*obj = &gbo->gem;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -295,64 +299,8 @@ int mgag200_dumb_create(struct drm_file *file,
|
||||
struct drm_device *dev,
|
||||
struct drm_mode_create_dumb *args)
|
||||
{
|
||||
int ret;
|
||||
struct drm_gem_object *gobj;
|
||||
u32 handle;
|
||||
struct mga_device *mdev = dev->dev_private;
|
||||
|
||||
args->pitch = args->width * ((args->bpp + 7) / 8);
|
||||
args->size = args->pitch * args->height;
|
||||
|
||||
ret = mgag200_gem_create(dev, args->size, false,
|
||||
&gobj);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = drm_gem_handle_create(file, gobj, &handle);
|
||||
drm_gem_object_put_unlocked(gobj);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
args->handle = handle;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mgag200_bo_unref(struct mgag200_bo **bo)
|
||||
{
|
||||
if ((*bo) == NULL)
|
||||
return;
|
||||
ttm_bo_put(&((*bo)->bo));
|
||||
*bo = NULL;
|
||||
}
|
||||
|
||||
void mgag200_gem_free_object(struct drm_gem_object *obj)
|
||||
{
|
||||
struct mgag200_bo *mgag200_bo = gem_to_mga_bo(obj);
|
||||
|
||||
mgag200_bo_unref(&mgag200_bo);
|
||||
}
|
||||
|
||||
|
||||
static inline u64 mgag200_bo_mmap_offset(struct mgag200_bo *bo)
|
||||
{
|
||||
return drm_vma_node_offset_addr(&bo->bo.vma_node);
|
||||
}
|
||||
|
||||
int
|
||||
mgag200_dumb_mmap_offset(struct drm_file *file,
|
||||
struct drm_device *dev,
|
||||
uint32_t handle,
|
||||
uint64_t *offset)
|
||||
{
|
||||
struct drm_gem_object *obj;
|
||||
struct mgag200_bo *bo;
|
||||
|
||||
obj = drm_gem_object_lookup(file, handle);
|
||||
if (obj == NULL)
|
||||
return -ENOENT;
|
||||
|
||||
bo = gem_to_mga_bo(obj);
|
||||
*offset = mgag200_bo_mmap_offset(bo);
|
||||
|
||||
drm_gem_object_put_unlocked(obj);
|
||||
return 0;
|
||||
return drm_gem_vram_fill_create_dumb(file, dev, &mdev->ttm.bdev, 0,
|
||||
false, args);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user