diff options
Diffstat (limited to 'linux-core')
-rw-r--r-- | linux-core/Makefile | 6 | ||||
-rw-r--r-- | linux-core/drm_compat.h | 8 | ||||
-rw-r--r-- | linux-core/drm_drv.c | 2 | ||||
-rw-r--r-- | linux-core/drm_gem.c | 26 | ||||
-rw-r--r-- | linux-core/drm_vm.c | 2 |
5 files changed, 42 insertions, 2 deletions
diff --git a/linux-core/Makefile b/linux-core/Makefile index 1790bdb0..aa212cf9 100644 --- a/linux-core/Makefile +++ b/linux-core/Makefile @@ -271,6 +271,10 @@ ifneq ($(PAGE_AGP),0) EXTRA_CFLAGS += -DHAVE_PAGE_AGP endif +ifeq ($(OS_HAS_GEM), 1) +EXTRA_CFLAGS += -DOS_HAS_GEM=1 +endif + # Start with all modules turned off. CONFIG_DRM_GAMMA := n CONFIG_DRM_TDFX := n @@ -337,8 +341,10 @@ ifneq (,$(findstring i810,$(DRM_MODULES))) CONFIG_DRM_I810 := m endif ifneq (,$(findstring i915,$(DRM_MODULES))) +ifeq ($(OS_HAS_GEM), 1) CONFIG_DRM_I915 := m endif +endif GIT_REVISION := $(shell cd "$(DRMSRCDIR)" && git-describe --abbrev=17) ifneq ($(GIT_REVISION),) diff --git a/linux-core/drm_compat.h b/linux-core/drm_compat.h index 35066f29..88c5bb1d 100644 --- a/linux-core/drm_compat.h +++ b/linux-core/drm_compat.h @@ -401,4 +401,12 @@ extern struct page *drm_vm_sg_nopage(struct vm_area_struct *vma, #define drm_core_ioremap_wc drm_core_ioremap #endif +#ifndef OS_HAS_GEM +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) +#define OS_HAS_GEM 1 +#else +#define OS_HAS_GEM 0 +#endif +#endif + #endif diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c index be441b00..aefbd76d 100644 --- a/linux-core/drm_drv.c +++ b/linux-core/drm_drv.c @@ -176,9 +176,11 @@ static struct drm_ioctl_desc drm_ioctls[] = { DRM_IOCTL_DEF(DRM_IOCTL_MM_INFO, drm_mm_info_ioctl, 0), +#if OS_HAS_GEM DRM_IOCTL_DEF(DRM_IOCTL_GEM_CLOSE, drm_gem_close_ioctl, 0), DRM_IOCTL_DEF(DRM_IOCTL_GEM_FLINK, drm_gem_flink_ioctl, DRM_AUTH), DRM_IOCTL_DEF(DRM_IOCTL_GEM_OPEN, drm_gem_open_ioctl, DRM_AUTH), +#endif }; #define DRM_CORE_IOCTL_COUNT ARRAY_SIZE( drm_ioctls ) diff --git a/linux-core/drm_gem.c b/linux-core/drm_gem.c index 05320376..0cbf9cab 100644 --- a/linux-core/drm_gem.c +++ b/linux-core/drm_gem.c @@ -25,6 +25,12 @@ * */ +#include <linux/version.h> + +#include "drmP.h" + +#if OS_HAS_GEM + #include <linux/types.h> #include <linux/slab.h> #include <linux/mm.h> @@ -34,7 +40,6 @@ #include <linux/module.h> #include <linux/mman.h> #include <linux/pagemap.h> -#include "drmP.h" /** @file drm_gem.c * @@ -417,3 +422,22 @@ drm_gem_object_handle_free(struct kref *kref) } EXPORT_SYMBOL(drm_gem_object_handle_free); +#else + +int drm_gem_init(struct drm_device *dev) +{ + return 0; +} + +void drm_gem_open(struct drm_device *dev, struct drm_file *file_private) +{ + +} + +void +drm_gem_release(struct drm_device *dev, struct drm_file *file_private) +{ + +} + +#endif diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c index 0d5242d3..d4d97a4d 100644 --- a/linux-core/drm_vm.c +++ b/linux-core/drm_vm.c @@ -698,7 +698,7 @@ EXPORT_SYMBOL(drm_mmap); * protected by the bo->mutex lock. */ -#ifdef DRM_FULL_MM_COMPAT +#if defined(DRM_FULL_MM_COMPAT) && !defined(DRM_NO_FAULT) static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) { |