12025cf9eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2c269c685SPatrik Jakobsson /************************************************************************** 3c269c685SPatrik Jakobsson * Copyright (c) 2014 Patrik Jakobsson 4c269c685SPatrik Jakobsson * All Rights Reserved. 5c269c685SPatrik Jakobsson * 6c269c685SPatrik Jakobsson **************************************************************************/ 7c269c685SPatrik Jakobsson 8c269c685SPatrik Jakobsson #ifndef _GEM_H 9c269c685SPatrik Jakobsson #define _GEM_H 10c269c685SPatrik Jakobsson 11f2d061edSThomas Zimmermann #include <linux/kernel.h> 12f2d061edSThomas Zimmermann 131f9f6790SThomas Zimmermann #include <drm/drm_gem.h> 141f9f6790SThomas Zimmermann 152717e595SLee Jones struct drm_device; 162717e595SLee Jones 17*d339386cSThomas Zimmermann /* 18*d339386cSThomas Zimmermann * PSB GEM object 19*d339386cSThomas Zimmermann */ 20*d339386cSThomas Zimmermann 21f2d061edSThomas Zimmermann struct psb_gem_object { 22f2d061edSThomas Zimmermann struct drm_gem_object base; 23f2d061edSThomas Zimmermann 24f2d061edSThomas Zimmermann struct resource resource; /* GTT resource for our allocation */ 25f2d061edSThomas Zimmermann u32 offset; /* GTT offset of our object */ 26f2d061edSThomas Zimmermann int in_gart; /* Currently in the GART (ref ct) */ 27f2d061edSThomas Zimmermann bool stolen; /* Backed from stolen RAM */ 28f2d061edSThomas Zimmermann bool mmapping; /* Is mmappable */ 29f2d061edSThomas Zimmermann struct page **pages; /* Backing pages if present */ 30f2d061edSThomas Zimmermann }; 31f2d061edSThomas Zimmermann to_psb_gem_object(struct drm_gem_object * obj)32f2d061edSThomas Zimmermannstatic inline struct psb_gem_object *to_psb_gem_object(struct drm_gem_object *obj) 33f2d061edSThomas Zimmermann { 34f2d061edSThomas Zimmermann return container_of(obj, struct psb_gem_object, base); 35f2d061edSThomas Zimmermann } 36f2d061edSThomas Zimmermann 37f2d061edSThomas Zimmermann struct psb_gem_object * 38576d4d2dSThomas Zimmermann psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align); 397cd467d0SThomas Zimmermann 40f2d061edSThomas Zimmermann int psb_gem_pin(struct psb_gem_object *pobj); 41f2d061edSThomas Zimmermann void psb_gem_unpin(struct psb_gem_object *pobj); 421f9f6790SThomas Zimmermann 43*d339386cSThomas Zimmermann /* 44*d339386cSThomas Zimmermann * Memory management 45*d339386cSThomas Zimmermann */ 46*d339386cSThomas Zimmermann 47*d339386cSThomas Zimmermann int psb_gem_mm_init(struct drm_device *dev); 48*d339386cSThomas Zimmermann void psb_gem_mm_fini(struct drm_device *dev); 49*d339386cSThomas Zimmermann int psb_gem_mm_resume(struct drm_device *dev); 50*d339386cSThomas Zimmermann 51c269c685SPatrik Jakobsson #endif 52