-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
drm: provide agp dummies for CONFIG_AGP=n
We currently rely on gcc dead-code elimination so the drm_agp_* helpers are not called if drm_core_has_AGP() is false. That's ugly as hell so provide "static inline" dummies for the case that AGP is disabled. Fixes a build-regression introduced by: commit 28ec711 Author: David Herrmann <dh.herrmann@gmail.com> Date: Sat Jul 27 16:37:00 2013 +0200 drm/agp: move AGP cleanup paths to drm_agpsupport.c v2: switch #ifdef -> #if (spotted by Stephen) Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Daniel Vetter <daniel@ffwll.ch> Tested-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Dave Airlie <airlied@gmail.com>
- Loading branch information
David Herrmann
authored and
Dave Airlie
committed
Aug 8, 2013
1 parent
32c913e
commit 00fd78e
Showing
2 changed files
with
196 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,194 @@ | ||
#ifndef _DRM_AGPSUPPORT_H_ | ||
#define _DRM_AGPSUPPORT_H_ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/mm.h> | ||
#include <linux/mutex.h> | ||
#include <linux/types.h> | ||
#include <linux/agp_backend.h> | ||
#include <drm/drmP.h> | ||
|
||
#if __OS_HAS_AGP | ||
|
||
void drm_free_agp(DRM_AGP_MEM * handle, int pages); | ||
int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start); | ||
int drm_unbind_agp(DRM_AGP_MEM * handle); | ||
DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev, | ||
struct page **pages, | ||
unsigned long num_pages, | ||
uint32_t gtt_offset, | ||
uint32_t type); | ||
|
||
struct drm_agp_head *drm_agp_init(struct drm_device *dev); | ||
void drm_agp_destroy(struct drm_agp_head *agp); | ||
void drm_agp_clear(struct drm_device *dev); | ||
int drm_agp_acquire(struct drm_device *dev); | ||
int drm_agp_acquire_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_release(struct drm_device *dev); | ||
int drm_agp_release_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode); | ||
int drm_agp_enable_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info); | ||
int drm_agp_info_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request); | ||
int drm_agp_alloc_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request); | ||
int drm_agp_free_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request); | ||
int drm_agp_unbind_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request); | ||
int drm_agp_bind_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv); | ||
|
||
static inline int drm_core_has_AGP(struct drm_device *dev) | ||
{ | ||
return drm_core_check_feature(dev, DRIVER_USE_AGP); | ||
} | ||
|
||
#else /* __OS_HAS_AGP */ | ||
|
||
static inline void drm_free_agp(DRM_AGP_MEM * handle, int pages) | ||
{ | ||
} | ||
|
||
static inline int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_unbind_agp(DRM_AGP_MEM * handle) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev, | ||
struct page **pages, | ||
unsigned long num_pages, | ||
uint32_t gtt_offset, | ||
uint32_t type) | ||
{ | ||
return NULL; | ||
} | ||
|
||
static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev) | ||
{ | ||
return NULL; | ||
} | ||
|
||
static inline void drm_agp_destroy(struct drm_agp_head *agp) | ||
{ | ||
} | ||
|
||
static inline void drm_agp_clear(struct drm_device *dev) | ||
{ | ||
} | ||
|
||
static inline int drm_agp_acquire(struct drm_device *dev) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_release(struct drm_device *dev) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_enable(struct drm_device *dev, | ||
struct drm_agp_mode mode) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_info(struct drm_device *dev, | ||
struct drm_agp_info *info) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_alloc(struct drm_device *dev, | ||
struct drm_agp_buffer *request) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_free(struct drm_device *dev, | ||
struct drm_agp_buffer *request) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_unbind(struct drm_device *dev, | ||
struct drm_agp_binding *request) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_bind(struct drm_device *dev, | ||
struct drm_agp_binding *request) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_agp_bind_ioctl(struct drm_device *dev, void *data, | ||
struct drm_file *file_priv) | ||
{ | ||
return -ENODEV; | ||
} | ||
|
||
static inline int drm_core_has_AGP(struct drm_device *dev) | ||
{ | ||
return 0; | ||
} | ||
|
||
#endif /* __OS_HAS_AGP */ | ||
|
||
#endif /* _DRM_AGPSUPPORT_H_ */ |