diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 16 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 3 |
3 files changed, 19 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a416645bcd23..204c3eca0fb2 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -555,6 +555,7 @@ enum intel_sbi_destination { | |||
| 555 | #define QUIRK_PIPEA_FORCE (1<<0) | 555 | #define QUIRK_PIPEA_FORCE (1<<0) |
| 556 | #define QUIRK_LVDS_SSC_DISABLE (1<<1) | 556 | #define QUIRK_LVDS_SSC_DISABLE (1<<1) |
| 557 | #define QUIRK_INVERT_BRIGHTNESS (1<<2) | 557 | #define QUIRK_INVERT_BRIGHTNESS (1<<2) |
| 558 | #define QUIRK_NO_PCH_PWM_ENABLE (1<<3) | ||
| 558 | 559 | ||
| 559 | struct intel_fbdev; | 560 | struct intel_fbdev; |
| 560 | struct intel_fbc_work; | 561 | struct intel_fbc_work; |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 76b034be2c7c..5fb305840db8 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -9400,6 +9400,17 @@ static void quirk_invert_brightness(struct drm_device *dev) | |||
| 9400 | DRM_INFO("applying inverted panel brightness quirk\n"); | 9400 | DRM_INFO("applying inverted panel brightness quirk\n"); |
| 9401 | } | 9401 | } |
| 9402 | 9402 | ||
| 9403 | /* | ||
| 9404 | * Some machines (Dell XPS13) suffer broken backlight controls if | ||
| 9405 | * BLM_PCH_PWM_ENABLE is set. | ||
| 9406 | */ | ||
| 9407 | static void quirk_no_pcm_pwm_enable(struct drm_device *dev) | ||
| 9408 | { | ||
| 9409 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 9410 | dev_priv->quirks |= QUIRK_NO_PCH_PWM_ENABLE; | ||
| 9411 | DRM_INFO("applying no-PCH_PWM_ENABLE quirk\n"); | ||
| 9412 | } | ||
| 9413 | |||
| 9403 | struct intel_quirk { | 9414 | struct intel_quirk { |
| 9404 | int device; | 9415 | int device; |
| 9405 | int subsystem_vendor; | 9416 | int subsystem_vendor; |
| @@ -9469,6 +9480,11 @@ static struct intel_quirk intel_quirks[] = { | |||
| 9469 | 9480 | ||
| 9470 | /* Acer Aspire 4736Z */ | 9481 | /* Acer Aspire 4736Z */ |
| 9471 | { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, | 9482 | { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, |
| 9483 | |||
| 9484 | /* Dell XPS13 HD Sandy Bridge */ | ||
| 9485 | { 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable }, | ||
| 9486 | /* Dell XPS13 HD and XPS13 FHD Ivy Bridge */ | ||
| 9487 | { 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable }, | ||
| 9472 | }; | 9488 | }; |
| 9473 | 9489 | ||
| 9474 | static void intel_init_quirks(struct drm_device *dev) | 9490 | static void intel_init_quirks(struct drm_device *dev) |
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index 45010bb5d132..67e2c1f1c9a8 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
| @@ -583,7 +583,8 @@ void intel_panel_enable_backlight(struct drm_device *dev, | |||
| 583 | POSTING_READ(reg); | 583 | POSTING_READ(reg); |
| 584 | I915_WRITE(reg, tmp | BLM_PWM_ENABLE); | 584 | I915_WRITE(reg, tmp | BLM_PWM_ENABLE); |
| 585 | 585 | ||
| 586 | if (HAS_PCH_SPLIT(dev)) { | 586 | if (HAS_PCH_SPLIT(dev) && |
| 587 | !(dev_priv->quirks & QUIRK_NO_PCH_PWM_ENABLE)) { | ||
| 587 | tmp = I915_READ(BLC_PWM_PCH_CTL1); | 588 | tmp = I915_READ(BLC_PWM_PCH_CTL1); |
| 588 | tmp |= BLM_PCH_PWM_ENABLE; | 589 | tmp |= BLM_PCH_PWM_ENABLE; |
| 589 | tmp &= ~BLM_PCH_OVERRIDE_ENABLE; | 590 | tmp &= ~BLM_PCH_OVERRIDE_ENABLE; |
