52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/**************************************************************************
|
|
* Copyright (c) 2014 Patrik Jakobsson
|
|
* All Rights Reserved.
|
|
*
|
|
**************************************************************************/
|
|
|
|
#ifndef _GEM_H
|
|
#define _GEM_H
|
|
|
|
#include <linux/kernel.h>
|
|
|
|
#include <drm/drm_gem.h>
|
|
|
|
struct drm_device;
|
|
|
|
/*
|
|
* PSB GEM object
|
|
*/
|
|
|
|
struct psb_gem_object {
|
|
struct drm_gem_object base;
|
|
|
|
struct resource resource; /* GTT resource for our allocation */
|
|
u32 offset; /* GTT offset of our object */
|
|
int in_gart; /* Currently in the GART (ref ct) */
|
|
bool stolen; /* Backed from stolen RAM */
|
|
bool mmapping; /* Is mmappable */
|
|
struct page **pages; /* Backing pages if present */
|
|
};
|
|
|
|
static inline struct psb_gem_object *to_psb_gem_object(struct drm_gem_object *obj)
|
|
{
|
|
return container_of(obj, struct psb_gem_object, base);
|
|
}
|
|
|
|
struct psb_gem_object *
|
|
psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align);
|
|
|
|
int psb_gem_pin(struct psb_gem_object *pobj);
|
|
void psb_gem_unpin(struct psb_gem_object *pobj);
|
|
|
|
/*
|
|
* Memory management
|
|
*/
|
|
|
|
int psb_gem_mm_init(struct drm_device *dev);
|
|
void psb_gem_mm_fini(struct drm_device *dev);
|
|
int psb_gem_mm_resume(struct drm_device *dev);
|
|
|
|
#endif
|