summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Courbot <acourbot@nvidia.com>2016-02-09 18:27:28 +0900
committerAlexandre Courbot <acourbot@nvidia.com>2016-02-26 16:48:41 +0900
commitb7bc1d65bba3e26cd6244bc1943a8baf72449785 (patch)
treea835292ec995f9389fa200547896e79ee38eb6d2
parented67936d6e5c1f07f54d8f13bc3accfb9a91d1fe (diff)
downloadnouveau-b7bc1d65bba3e26cd6244bc1943a8baf72449785.tar.gz
compile with 4.5
-rw-r--r--drm/nouveau/nouveau_display.c29
-rw-r--r--drm/nouveau/nouveau_display.h10
2 files changed, 39 insertions, 0 deletions
diff --git a/drm/nouveau/nouveau_display.c b/drm/nouveau/nouveau_display.c
index 934159035..55a5ae71a 100644
--- a/drm/nouveau/nouveau_display.c
+++ b/drm/nouveau/nouveau_display.c
@@ -54,7 +54,11 @@ nouveau_display_vblank_handler(struct nvif_notify *notify)
}
int
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
nouveau_display_vblank_enable(struct drm_device *dev, unsigned int pipe)
+#else
+nouveau_display_vblank_enable(struct drm_device *dev, int pipe)
+#endif
{
struct drm_crtc *crtc;
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
@@ -68,7 +72,11 @@ nouveau_display_vblank_enable(struct drm_device *dev, unsigned int pipe)
}
void
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
nouveau_display_vblank_disable(struct drm_device *dev, unsigned int pipe)
+#else
+nouveau_display_vblank_disable(struct drm_device *dev, int pipe)
+#endif
{
struct drm_crtc *crtc;
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
@@ -106,7 +114,9 @@ nouveau_display_scanoutpos_head(struct drm_crtc *crtc, int *vpos, int *hpos,
.base.head = nouveau_crtc(crtc)->index,
};
struct nouveau_display *disp = nouveau_display(crtc->dev);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
struct drm_vblank_crtc *vblank = &crtc->dev->vblank[drm_crtc_index(crtc)];
+#endif
int ret, retry = 1;
do {
@@ -120,7 +130,11 @@ nouveau_display_scanoutpos_head(struct drm_crtc *crtc, int *vpos, int *hpos,
break;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
if (retry) ndelay(vblank->linedur_ns);
+#else
+ if (retry) ndelay(crtc->linedur_ns);
+#endif
} while (retry--);
*hpos = args.scan.hline;
@@ -135,10 +149,16 @@ nouveau_display_scanoutpos_head(struct drm_crtc *crtc, int *vpos, int *hpos,
}
int
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
nouveau_display_scanoutpos(struct drm_device *dev, unsigned int pipe,
unsigned int flags, int *vpos, int *hpos,
ktime_t *stime, ktime_t *etime,
const struct drm_display_mode *mode)
+#else
+nouveau_display_scanoutpos(struct drm_device *dev, int pipe,
+ unsigned int flags, int *vpos, int *hpos,
+ ktime_t *stime, ktime_t *etime)
+#endif
{
struct drm_crtc *crtc;
@@ -153,15 +173,24 @@ nouveau_display_scanoutpos(struct drm_device *dev, unsigned int pipe,
}
int
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
nouveau_display_vblstamp(struct drm_device *dev, unsigned int pipe,
int *max_error, struct timeval *time, unsigned flags)
+#else
+nouveau_display_vblstamp(struct drm_device *dev, int pipe,
+ int *max_error, struct timeval *time, unsigned flags)
+#endif
{
struct drm_crtc *crtc;
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
if (nouveau_crtc(crtc)->index == pipe) {
return drm_calc_vbltimestamp_from_scanoutpos(dev,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
pipe, max_error, time, flags,
+#else
+ pipe, max_error, time, flags, crtc,
+#endif
&crtc->hwmode);
}
}
diff --git a/drm/nouveau/nouveau_display.h b/drm/nouveau/nouveau_display.h
index 81b7d3c09..3fd084f60 100644
--- a/drm/nouveau/nouveau_display.h
+++ b/drm/nouveau/nouveau_display.h
@@ -67,6 +67,7 @@ int nouveau_display_init(struct drm_device *dev);
void nouveau_display_fini(struct drm_device *dev);
int nouveau_display_suspend(struct drm_device *dev, bool runtime);
void nouveau_display_resume(struct drm_device *dev, bool runtime);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
int nouveau_display_vblank_enable(struct drm_device *, unsigned int);
void nouveau_display_vblank_disable(struct drm_device *, unsigned int);
int nouveau_display_scanoutpos(struct drm_device *, unsigned int,
@@ -74,6 +75,15 @@ int nouveau_display_scanoutpos(struct drm_device *, unsigned int,
ktime_t *, const struct drm_display_mode *);
int nouveau_display_vblstamp(struct drm_device *, unsigned int, int *,
struct timeval *, unsigned);
+#else
+int nouveau_display_vblank_enable(struct drm_device *, int);
+void nouveau_display_vblank_disable(struct drm_device *, int);
+int nouveau_display_scanoutpos(struct drm_device *, int,
+ unsigned int, int *, int *, ktime_t *,
+ ktime_t *);
+int nouveau_display_vblstamp(struct drm_device *, int, int *,
+ struct timeval *, unsigned);
+#endif
int nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
struct drm_pending_vblank_event *event,