diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 34 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 8 |
5 files changed, 37 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index a66955037e4e..eee79e1c3222 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
| @@ -1123,7 +1123,7 @@ init_vbt_defaults(struct drm_i915_private *dev_priv) | |||
| 1123 | } | 1123 | } |
| 1124 | } | 1124 | } |
| 1125 | 1125 | ||
| 1126 | static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id) | 1126 | static int intel_no_opregion_vbt_callback(const struct dmi_system_id *id) |
| 1127 | { | 1127 | { |
| 1128 | DRM_DEBUG_KMS("Falling back to manually reading VBT from " | 1128 | DRM_DEBUG_KMS("Falling back to manually reading VBT from " |
| 1129 | "VBIOS ROM for %s\n", | 1129 | "VBIOS ROM for %s\n", |
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index e8abfce40976..9212e6504e0f 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
| @@ -804,7 +804,7 @@ static const struct drm_encoder_funcs intel_crt_enc_funcs = { | |||
| 804 | .destroy = intel_encoder_destroy, | 804 | .destroy = intel_encoder_destroy, |
| 805 | }; | 805 | }; |
| 806 | 806 | ||
| 807 | static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id) | 807 | static int intel_no_crt_dmi_callback(const struct dmi_system_id *id) |
| 808 | { | 808 | { |
| 809 | DRM_INFO("Skipping CRT initialization for %s\n", id->ident); | 809 | DRM_INFO("Skipping CRT initialization for %s\n", id->ident); |
| 810 | return 1; | 810 | return 1; |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index d074d704f458..d8324c69fa86 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -2233,6 +2233,15 @@ intel_pin_and_fence_fb_obj(struct drm_device *dev, | |||
| 2233 | if (need_vtd_wa(dev) && alignment < 256 * 1024) | 2233 | if (need_vtd_wa(dev) && alignment < 256 * 1024) |
| 2234 | alignment = 256 * 1024; | 2234 | alignment = 256 * 1024; |
| 2235 | 2235 | ||
| 2236 | /* | ||
| 2237 | * Global gtt pte registers are special registers which actually forward | ||
| 2238 | * writes to a chunk of system memory. Which means that there is no risk | ||
| 2239 | * that the register values disappear as soon as we call | ||
| 2240 | * intel_runtime_pm_put(), so it is correct to wrap only the | ||
| 2241 | * pin/unpin/fence and not more. | ||
| 2242 | */ | ||
| 2243 | intel_runtime_pm_get(dev_priv); | ||
| 2244 | |||
| 2236 | dev_priv->mm.interruptible = false; | 2245 | dev_priv->mm.interruptible = false; |
| 2237 | ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); | 2246 | ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); |
| 2238 | if (ret) | 2247 | if (ret) |
| @@ -2250,12 +2259,14 @@ intel_pin_and_fence_fb_obj(struct drm_device *dev, | |||
| 2250 | i915_gem_object_pin_fence(obj); | 2259 | i915_gem_object_pin_fence(obj); |
| 2251 | 2260 | ||
| 2252 | dev_priv->mm.interruptible = true; | 2261 | dev_priv->mm.interruptible = true; |
| 2262 | intel_runtime_pm_put(dev_priv); | ||
| 2253 | return 0; | 2263 | return 0; |
| 2254 | 2264 | ||
| 2255 | err_unpin: | 2265 | err_unpin: |
| 2256 | i915_gem_object_unpin_from_display_plane(obj); | 2266 | i915_gem_object_unpin_from_display_plane(obj); |
| 2257 | err_interruptible: | 2267 | err_interruptible: |
| 2258 | dev_priv->mm.interruptible = true; | 2268 | dev_priv->mm.interruptible = true; |
| 2269 | intel_runtime_pm_put(dev_priv); | ||
| 2259 | return ret; | 2270 | return ret; |
| 2260 | } | 2271 | } |
| 2261 | 2272 | ||
| @@ -4188,10 +4199,6 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc) | |||
| 4188 | intel_set_pch_fifo_underrun_reporting(dev, pipe, false); | 4199 | intel_set_pch_fifo_underrun_reporting(dev, pipe, false); |
| 4189 | 4200 | ||
| 4190 | intel_disable_pipe(dev_priv, pipe); | 4201 | intel_disable_pipe(dev_priv, pipe); |
| 4191 | |||
| 4192 | if (intel_crtc->config.dp_encoder_is_mst) | ||
| 4193 | intel_ddi_set_vc_payload_alloc(crtc, false); | ||
| 4194 | |||
| 4195 | ironlake_pfit_disable(intel_crtc); | 4202 | ironlake_pfit_disable(intel_crtc); |
| 4196 | 4203 | ||
| 4197 | for_each_encoder_on_crtc(dev, crtc, encoder) | 4204 | for_each_encoder_on_crtc(dev, crtc, encoder) |
| @@ -4256,6 +4263,9 @@ static void haswell_crtc_disable(struct drm_crtc *crtc) | |||
| 4256 | intel_set_pch_fifo_underrun_reporting(dev, TRANSCODER_A, false); | 4263 | intel_set_pch_fifo_underrun_reporting(dev, TRANSCODER_A, false); |
| 4257 | intel_disable_pipe(dev_priv, pipe); | 4264 | intel_disable_pipe(dev_priv, pipe); |
| 4258 | 4265 | ||
| 4266 | if (intel_crtc->config.dp_encoder_is_mst) | ||
| 4267 | intel_ddi_set_vc_payload_alloc(crtc, false); | ||
| 4268 | |||
| 4259 | intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder); | 4269 | intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder); |
| 4260 | 4270 | ||
| 4261 | ironlake_pfit_disable(intel_crtc); | 4271 | ironlake_pfit_disable(intel_crtc); |
| @@ -8240,6 +8250,15 @@ static int intel_crtc_cursor_set_obj(struct drm_crtc *crtc, | |||
| 8240 | goto fail_locked; | 8250 | goto fail_locked; |
| 8241 | } | 8251 | } |
| 8242 | 8252 | ||
| 8253 | /* | ||
| 8254 | * Global gtt pte registers are special registers which actually | ||
| 8255 | * forward writes to a chunk of system memory. Which means that | ||
| 8256 | * there is no risk that the register values disappear as soon | ||
| 8257 | * as we call intel_runtime_pm_put(), so it is correct to wrap | ||
| 8258 | * only the pin/unpin/fence and not more. | ||
| 8259 | */ | ||
| 8260 | intel_runtime_pm_get(dev_priv); | ||
| 8261 | |||
| 8243 | /* Note that the w/a also requires 2 PTE of padding following | 8262 | /* Note that the w/a also requires 2 PTE of padding following |
| 8244 | * the bo. We currently fill all unused PTE with the shadow | 8263 | * the bo. We currently fill all unused PTE with the shadow |
| 8245 | * page and so we should always have valid PTE following the | 8264 | * page and so we should always have valid PTE following the |
| @@ -8252,16 +8271,20 @@ static int intel_crtc_cursor_set_obj(struct drm_crtc *crtc, | |||
| 8252 | ret = i915_gem_object_pin_to_display_plane(obj, alignment, NULL); | 8271 | ret = i915_gem_object_pin_to_display_plane(obj, alignment, NULL); |
| 8253 | if (ret) { | 8272 | if (ret) { |
| 8254 | DRM_DEBUG_KMS("failed to move cursor bo into the GTT\n"); | 8273 | DRM_DEBUG_KMS("failed to move cursor bo into the GTT\n"); |
| 8274 | intel_runtime_pm_put(dev_priv); | ||
| 8255 | goto fail_locked; | 8275 | goto fail_locked; |
| 8256 | } | 8276 | } |
| 8257 | 8277 | ||
| 8258 | ret = i915_gem_object_put_fence(obj); | 8278 | ret = i915_gem_object_put_fence(obj); |
| 8259 | if (ret) { | 8279 | if (ret) { |
| 8260 | DRM_DEBUG_KMS("failed to release fence for cursor"); | 8280 | DRM_DEBUG_KMS("failed to release fence for cursor"); |
| 8281 | intel_runtime_pm_put(dev_priv); | ||
| 8261 | goto fail_unpin; | 8282 | goto fail_unpin; |
| 8262 | } | 8283 | } |
| 8263 | 8284 | ||
| 8264 | addr = i915_gem_obj_ggtt_offset(obj); | 8285 | addr = i915_gem_obj_ggtt_offset(obj); |
| 8286 | |||
| 8287 | intel_runtime_pm_put(dev_priv); | ||
| 8265 | } else { | 8288 | } else { |
| 8266 | int align = IS_I830(dev) ? 16 * 1024 : 256; | 8289 | int align = IS_I830(dev) ? 16 * 1024 : 256; |
| 8267 | ret = i915_gem_object_attach_phys(obj, align); | 8290 | ret = i915_gem_object_attach_phys(obj, align); |
| @@ -12481,6 +12504,9 @@ static struct intel_quirk intel_quirks[] = { | |||
| 12481 | /* Acer C720 and C720P Chromebooks (Celeron 2955U) have backlights */ | 12504 | /* Acer C720 and C720P Chromebooks (Celeron 2955U) have backlights */ |
| 12482 | { 0x0a06, 0x1025, 0x0a11, quirk_backlight_present }, | 12505 | { 0x0a06, 0x1025, 0x0a11, quirk_backlight_present }, |
| 12483 | 12506 | ||
| 12507 | /* Acer C720 Chromebook (Core i3 4005U) */ | ||
| 12508 | { 0x0a16, 0x1025, 0x0a11, quirk_backlight_present }, | ||
| 12509 | |||
| 12484 | /* Toshiba CB35 Chromebook (Celeron 2955U) */ | 12510 | /* Toshiba CB35 Chromebook (Celeron 2955U) */ |
| 12485 | { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present }, | 12511 | { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present }, |
| 12486 | 12512 | ||
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 881361c0f27e..fdf40267249c 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
| @@ -538,7 +538,7 @@ static const struct drm_encoder_funcs intel_lvds_enc_funcs = { | |||
| 538 | .destroy = intel_encoder_destroy, | 538 | .destroy = intel_encoder_destroy, |
| 539 | }; | 539 | }; |
| 540 | 540 | ||
| 541 | static int __init intel_no_lvds_dmi_callback(const struct dmi_system_id *id) | 541 | static int intel_no_lvds_dmi_callback(const struct dmi_system_id *id) |
| 542 | { | 542 | { |
| 543 | DRM_INFO("Skipping LVDS initialization for %s\n", id->ident); | 543 | DRM_INFO("Skipping LVDS initialization for %s\n", id->ident); |
| 544 | return 1; | 544 | return 1; |
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index 59b028f0b1e8..8e374449c6b5 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
| @@ -801,7 +801,7 @@ static void pch_enable_backlight(struct intel_connector *connector) | |||
| 801 | 801 | ||
| 802 | cpu_ctl2 = I915_READ(BLC_PWM_CPU_CTL2); | 802 | cpu_ctl2 = I915_READ(BLC_PWM_CPU_CTL2); |
| 803 | if (cpu_ctl2 & BLM_PWM_ENABLE) { | 803 | if (cpu_ctl2 & BLM_PWM_ENABLE) { |
| 804 | WARN(1, "cpu backlight already enabled\n"); | 804 | DRM_DEBUG_KMS("cpu backlight already enabled\n"); |
| 805 | cpu_ctl2 &= ~BLM_PWM_ENABLE; | 805 | cpu_ctl2 &= ~BLM_PWM_ENABLE; |
| 806 | I915_WRITE(BLC_PWM_CPU_CTL2, cpu_ctl2); | 806 | I915_WRITE(BLC_PWM_CPU_CTL2, cpu_ctl2); |
| 807 | } | ||
