summaryrefslogtreecommitdiff
path: root/linux-core/intel_crt.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-05-29 14:02:14 +1000
committerDave Airlie <airlied@redhat.com>2008-05-29 14:02:14 +1000
commitdf8cd54286fbae5903d8ede390ec4a11cb6c4b6c (patch)
tree915a1b55354bbd6e2f32f68ecd4d1fde8fb5cae6 /linux-core/intel_crt.c
parentee5afc63428488c9c39e5ecd7d8cdc646a7b65b7 (diff)
modesetting: reorganise code into core and helper functions.
This splits a lot of the core modesetting code out into a file of helper functions, that are only called from themselves and/or the driver. The driver gets called into more often or can call these functions from itself if it is a helper using driver. I've broken framebuffer resize doing this but I didn't like the API for that in any case.
Diffstat (limited to 'linux-core/intel_crt.c')
-rw-r--r--linux-core/intel_crt.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/linux-core/intel_crt.c b/linux-core/intel_crt.c
index ef40871e..3c5dae1a 100644
--- a/linux-core/intel_crt.c
+++ b/linux-core/intel_crt.c
@@ -28,6 +28,7 @@
#include "drmP.h"
#include "drm.h"
#include "drm_crtc.h"
+#include "drm_crtc_helper.h"
#include "intel_drv.h"
#include "i915_drm.h"
#include "i915_drv.h"
@@ -220,19 +221,24 @@ static bool intel_crt_set_property(struct drm_output *output,
/*
* Routines for controlling stuff on the analog port
*/
+
+static const struct drm_output_helper_funcs intel_crt_helper_funcs = {
+ .mode_fixup = intel_crt_mode_fixup,
+ .prepare = intel_output_prepare,
+ .commit = intel_output_commit,
+ .mode_set = intel_crt_mode_set,
+};
+
static const struct drm_output_funcs intel_crt_output_funcs = {
.dpms = intel_crt_dpms,
.save = intel_crt_save,
.restore = intel_crt_restore,
- .mode_valid = intel_crt_mode_valid,
- .mode_fixup = intel_crt_mode_fixup,
- .prepare = intel_output_prepare,
- .mode_set = intel_crt_mode_set,
- .commit = intel_output_commit,
.detect = intel_crt_detect,
.get_modes = intel_crt_get_modes,
.cleanup = intel_crt_destroy,
.set_property = intel_crt_set_property,
+ .mode_valid = intel_crt_mode_valid,
+
};
void intel_crt_init(struct drm_device *dev)
@@ -261,6 +267,7 @@ void intel_crt_init(struct drm_device *dev)
output->interlace_allowed = 0;
output->doublescan_allowed = 0;
+ drm_output_helper_add(output, &intel_crt_helper_funcs);
drm_sysfs_output_add(output);
drm_output_attach_property(output, dev->mode_config.connector_type_property, ConnectorVGA);