diff options
author | Owain Ainsworth <oga@cvs.openbsd.org> | 2008-07-29 22:23:52 +0000 |
---|---|---|
committer | Owain Ainsworth <oga@cvs.openbsd.org> | 2008-07-29 22:23:52 +0000 |
commit | 4582fbbd361dbf42791fc2604c8557363ce51964 (patch) | |
tree | 3b2fda4eb39e539c596016017293e4fa57332f22 /sys/dev/pci/drm/drmP.h | |
parent | 2877a0ec47f42bcbf0b8f3ee0dd6c2c9bb722c39 (diff) |
Update to DRM git.
Some stability fixes for radeon. The most part of this diff is related
to fixing up the VBLANK (vertical blank interrupt) handling. Now, if the
X driver supports the DRM_IOCTL_MODESET_CTL ioctl, (to be used when
changing the video modes), then allow the vblank to be disabled once
that ioctl has been called. Otherwise, keep the interrupt enabled at all
time, since disabling it otherwise will lead to problems.
Tested by a few. "no problem" on API/ABI deraadt@.
Diffstat (limited to 'sys/dev/pci/drm/drmP.h')
-rw-r--r-- | sys/dev/pci/drm/drmP.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/pci/drm/drmP.h b/sys/dev/pci/drm/drmP.h index 0db2e7d4b19..77ccf7912fc 100644 --- a/sys/dev/pci/drm/drmP.h +++ b/sys/dev/pci/drm/drmP.h @@ -678,6 +678,7 @@ struct drm_device { int last_context; /* Last current context */ /* VBLANK support */ + int vblank_disable_allowed; int *vbl_queue; /* vbl wait channel */ atomic_t *_vblank_count; /* no vblank interrupts */ DRM_SPINTYPE vbl_lock; /* locking for vblank operations */ @@ -688,8 +689,7 @@ struct drm_device { atomic_t *vblank_refcount; /* no. users for vlank interrupts */ u_int32_t *last_vblank; /* locked, used for overflow handling*/ int *vblank_enabled; /* make sure we only disable once */ - u_int32_t *vblank_premodeset; /* compensation for wraparounds */ - int *vblank_suspend; /* Don't wait while crtc is disabled */ + int *vblank_inmodeset; /* X DDX is currently setting mode */ struct timeout vblank_disable_timer; int num_crtcs; /* number of crtcs on device */ @@ -796,7 +796,6 @@ void drm_vbl_send_signals(struct drm_device *, int); void drm_vblank_cleanup(struct drm_device *); int drm_vblank_init(struct drm_device *, int); u_int32_t drm_vblank_count(struct drm_device *, int); -void drm_update_vblank_count(struct drm_device *, int); int drm_vblank_get(struct drm_device *, int); void drm_vblank_put(struct drm_device *, int); int drm_modeset_ctl(struct drm_device *, void *, struct drm_file *); @@ -924,6 +923,7 @@ int drm_memrange_add_space_to_tail(struct drm_memrange *, unsigned long ); /* Inline replacements for DRM_IOREMAP macros */ +#define drm_core_ioremap_wc drm_core_ioremap static __inline__ void drm_core_ioremap(struct drm_local_map *map, struct drm_device *dev) { map->handle = drm_ioremap(dev, map); |