Leave adjustment of backlight to the driver.

This commit is contained in:
Chris Wilson 2010-08-22 21:27:45 +01:00
parent 104cd0554b
commit 9c3e34703d
1 changed files with 10 additions and 45 deletions

View File

@ -80,6 +80,7 @@ struct intel_property {
struct intel_output {
struct intel_mode *mode;
int output_id;
int dpms_id;
drmModeConnectorPtr mode_output;
drmModeEncoderPtr mode_encoder;
int num_props;
@ -860,57 +861,17 @@ intel_output_destroy(xf86OutputPtr output)
output->driver_private = NULL;
}
static void
intel_output_dpms_backlight(xf86OutputPtr output, int oldmode, int mode)
{
struct intel_output *intel_output = output->driver_private;
if (!intel_output->backlight_iface)
return;
if (mode == DPMSModeOn) {
/* If we're going from off->on we may need to turn on the backlight. */
if (oldmode != DPMSModeOn)
intel_output_backlight_set(output,
intel_output->backlight_active_level);
} else {
/* Only save the current backlight value if we're going from on to off. */
if (oldmode == DPMSModeOn)
intel_output->backlight_active_level = intel_output_backlight_get(output);
intel_output_backlight_set(output, 0);
}
}
static void
intel_output_dpms(xf86OutputPtr output, int dpms)
{
struct intel_output *intel_output = output->driver_private;
drmModeConnectorPtr koutput = intel_output->mode_output;
struct intel_mode *mode = intel_output->mode;
int i;
for (i = 0; i < koutput->count_props; i++) {
drmModePropertyPtr props;
props = drmModeGetProperty(mode->fd, koutput->props[i]);
if (!props)
continue;
if (!strcmp(props->name, "DPMS")) {
drmModeConnectorSetProperty(mode->fd,
intel_output->output_id,
props->prop_id,
dpms);
intel_output_dpms_backlight(output,
intel_output->dpms_mode,
dpms);
intel_output->dpms_mode = dpms;
drmModeFreeProperty(props);
return;
}
drmModeFreeProperty(props);
}
drmModeConnectorSetProperty(mode->fd,
intel_output->output_id,
intel_output->dpms_id,
dpms);
intel_output->dpms_mode = dpms;
}
int
@ -961,6 +922,10 @@ intel_output_create_resources(xf86OutputPtr output)
drmmode_prop = drmModeGetProperty(mode->fd,
mode_output->props[i]);
if (!strcmp(drmmode_prop->name, "DPMS"))
intel_output->dpms_id = drmmode_prop->prop_id;
if (intel_property_ignore(drmmode_prop)) {
drmModeFreeProperty(drmmode_prop);
continue;