diff options
author | Alan Cox <alan@linux.intel.com> | 2011-07-15 12:35:24 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-07-15 13:05:08 -0400 |
commit | f75c7538c5ee3bfd0ac50d20457e773c43858a75 (patch) | |
tree | 09ab6972ed5511c967d7a7d970bd88be94d2fcb8 | |
parent | 83c871ee2b60619d74d03eaf6f75a7d9c3cb0e45 (diff) |
gma500: Use the mrst helpers and power control for mode commit
We want to hit the MM panel backlight when appropriate
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/staging/gma500/mrst_lvds.c | 29 | ||||
-rw-r--r-- | drivers/staging/gma500/psb_drv.h | 2 | ||||
-rw-r--r-- | drivers/staging/gma500/psb_intel_lvds.c | 4 |
3 files changed, 29 insertions, 6 deletions
diff --git a/drivers/staging/gma500/mrst_lvds.c b/drivers/staging/gma500/mrst_lvds.c index 108f245553e6..25fde4cc910e 100644 --- a/drivers/staging/gma500/mrst_lvds.c +++ b/drivers/staging/gma500/mrst_lvds.c | |||
@@ -147,13 +147,38 @@ static void mrst_lvds_mode_set(struct drm_encoder *encoder, | |||
147 | gma_power_end(dev); | 147 | gma_power_end(dev); |
148 | } | 148 | } |
149 | 149 | ||
150 | static void mrst_lvds_prepare(struct drm_encoder *encoder) | ||
151 | { | ||
152 | struct drm_device *dev = encoder->dev; | ||
153 | struct psb_intel_output *output = enc_to_psb_intel_output(encoder); | ||
154 | |||
155 | if (!gma_power_begin(dev, true)) | ||
156 | return; | ||
157 | |||
158 | mode_dev->saveBLC_PWM_CTL = REG_READ(BLC_PWM_CTL); | ||
159 | mode_dev->backlight_duty_cycle = (mode_dev->saveBLC_PWM_CTL & | ||
160 | BACKLIGHT_DUTY_CYCLE_MASK); | ||
161 | mrst_lvds_set_power(dev, output, false); | ||
162 | gma_power_end(dev); | ||
163 | } | ||
164 | |||
165 | static void mrst_lvds_commit(struct drm_encoder *encoder) | ||
166 | { | ||
167 | struct drm_device *dev = encoder->dev; | ||
168 | struct psb_intel_output *output = enc_to_psb_intel_output(encoder); | ||
169 | |||
170 | if (mode_dev->backlight_duty_cycle == 0) | ||
171 | mode_dev->backlight_duty_cycle = | ||
172 | psb_intel_lvds_get_max_backlight(dev); | ||
173 | mrst_lvds_set_power(dev, output, true); | ||
174 | } | ||
150 | 175 | ||
151 | static const struct drm_encoder_helper_funcs mrst_lvds_helper_funcs = { | 176 | static const struct drm_encoder_helper_funcs mrst_lvds_helper_funcs = { |
152 | .dpms = mrst_lvds_dpms, | 177 | .dpms = mrst_lvds_dpms, |
153 | .mode_fixup = psb_intel_lvds_mode_fixup, | 178 | .mode_fixup = psb_intel_lvds_mode_fixup, |
154 | .prepare = psb_intel_lvds_prepare, | 179 | .prepare = mrst_intel_lvds_prepare, |
155 | .mode_set = mrst_lvds_mode_set, | 180 | .mode_set = mrst_lvds_mode_set, |
156 | .commit = psb_intel_lvds_commit, | 181 | .commit = mrst_intel_lvds_commit, |
157 | }; | 182 | }; |
158 | 183 | ||
159 | static struct drm_display_mode lvds_configuration_modes[] = { | 184 | static struct drm_display_mode lvds_configuration_modes[] = { |
diff --git a/drivers/staging/gma500/psb_drv.h b/drivers/staging/gma500/psb_drv.h index 829657b52ecb..194c64fb6c68 100644 --- a/drivers/staging/gma500/psb_drv.h +++ b/drivers/staging/gma500/psb_drv.h | |||
@@ -792,8 +792,6 @@ extern const struct drm_crtc_helper_funcs psb_intel_helper_funcs; | |||
792 | extern const struct drm_crtc_funcs psb_intel_crtc_funcs; | 792 | extern const struct drm_crtc_funcs psb_intel_crtc_funcs; |
793 | 793 | ||
794 | /* psb_intel_lvds.c */ | 794 | /* psb_intel_lvds.c */ |
795 | extern void psb_intel_lvds_prepare(struct drm_encoder *encoder); | ||
796 | extern void psb_intel_lvds_commit(struct drm_encoder *encoder); | ||
797 | extern const struct drm_connector_helper_funcs | 795 | extern const struct drm_connector_helper_funcs |
798 | psb_intel_lvds_connector_helper_funcs; | 796 | psb_intel_lvds_connector_helper_funcs; |
799 | extern const struct drm_connector_funcs psb_intel_lvds_connector_funcs; | 797 | extern const struct drm_connector_funcs psb_intel_lvds_connector_funcs; |
diff --git a/drivers/staging/gma500/psb_intel_lvds.c b/drivers/staging/gma500/psb_intel_lvds.c index 53803b25cadb..c6436da60732 100644 --- a/drivers/staging/gma500/psb_intel_lvds.c +++ b/drivers/staging/gma500/psb_intel_lvds.c | |||
@@ -432,7 +432,7 @@ bool psb_intel_lvds_mode_fixup(struct drm_encoder *encoder, | |||
432 | return true; | 432 | return true; |
433 | } | 433 | } |
434 | 434 | ||
435 | void psb_intel_lvds_prepare(struct drm_encoder *encoder) | 435 | static void psb_intel_lvds_prepare(struct drm_encoder *encoder) |
436 | { | 436 | { |
437 | struct drm_device *dev = encoder->dev; | 437 | struct drm_device *dev = encoder->dev; |
438 | struct psb_intel_output *output = enc_to_psb_intel_output(encoder); | 438 | struct psb_intel_output *output = enc_to_psb_intel_output(encoder); |
@@ -450,7 +450,7 @@ void psb_intel_lvds_prepare(struct drm_encoder *encoder) | |||
450 | gma_power_end(dev); | 450 | gma_power_end(dev); |
451 | } | 451 | } |
452 | 452 | ||
453 | void psb_intel_lvds_commit(struct drm_encoder *encoder) | 453 | static void psb_intel_lvds_commit(struct drm_encoder *encoder) |
454 | { | 454 | { |
455 | struct drm_device *dev = encoder->dev; | 455 | struct drm_device *dev = encoder->dev; |
456 | struct psb_intel_output *output = enc_to_psb_intel_output(encoder); | 456 | struct psb_intel_output *output = enc_to_psb_intel_output(encoder); |