2019-05-29 07:18:02 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2014-01-06 02:39:10 +01:00
/**************************************************************************
* Copyright ( c ) 2014 Patrik Jakobsson
* All Rights Reserved .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef _GEM_H
# define _GEM_H
2021-10-15 10:40:53 +02:00
# include <linux/kernel.h>
2021-10-15 10:40:44 +02:00
# include <drm/drm_gem.h>
2021-01-15 18:13:04 +00:00
struct drm_device ;
2022-03-08 20:52:20 +01:00
/*
* PSB GEM object
*/
2021-10-15 10:40:53 +02:00
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 *
2021-10-15 10:40:46 +02:00
psb_gem_create ( struct drm_device * dev , u64 size , const char * name , bool stolen , u32 align ) ;
2020-09-23 12:21:42 +02:00
2021-10-15 10:40:53 +02:00
int psb_gem_pin ( struct psb_gem_object * pobj ) ;
void psb_gem_unpin ( struct psb_gem_object * pobj ) ;
2021-10-15 10:40:44 +02:00
2022-03-08 20:52:20 +01:00
/*
* 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 ) ;
2014-01-06 02:39:10 +01:00
# endif