diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-09-21 10:42:27 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-09-21 15:47:33 -0700 |
commit | e70236a8d3d0a4c100a0b9f7d394d9bda9c56aca (patch) | |
tree | b9852594a97f0f2c28060aa0397868d052a5ac69 /drivers/gpu/drm/i915/i915_drv.h | |
parent | 8542a0bbbbda412560820b4c3b04e8399e2e99c1 (diff) | |
download | op-kernel-dev-e70236a8d3d0a4c100a0b9f7d394d9bda9c56aca.zip op-kernel-dev-e70236a8d3d0a4c100a0b9f7d394d9bda9c56aca.tar.gz |
drm/i915: split display functions by chip type
This patch splits out several of the display functions into a separate
display function table to avoid tons of chipset specific if..else
if..else if blocks all over. There are more opportunities for this
(some noted in the structure defintition); so more cleanup patches will
follow.
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 2f89c21..ebdc639 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -153,6 +153,23 @@ struct drm_i915_error_state { struct timeval time; }; +struct drm_i915_display_funcs { + void (*dpms)(struct drm_crtc *crtc, int mode); + bool (*fbc_enabled)(struct drm_crtc *crtc); + void (*enable_fbc)(struct drm_crtc *crtc, unsigned long interval); + void (*disable_fbc)(struct drm_device *dev); + int (*get_display_clock_speed)(struct drm_device *dev); + int (*get_fifo_size)(struct drm_device *dev, int plane); + void (*update_wm)(struct drm_device *dev, int planea_clock, + int planeb_clock, int sr_hdisplay, int pixel_size); + /* clock updates for mode set */ + /* cursor updates */ + /* render clock increase/decrease */ + /* display clock increase/decrease */ + /* pll clock increase/decrease */ + /* clock gating init */ +}; + typedef struct drm_i915_private { struct drm_device *dev; @@ -252,6 +269,9 @@ typedef struct drm_i915_private { struct work_struct error_work; struct workqueue_struct *wq; + /* Display functions */ + struct drm_i915_display_funcs display; + /* Register state */ bool suspended; u8 saveLBB; |