Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-intel-fixes-2014-08-28' of git://anongit.freedesktop.org/drm-intel into drm-fixes

Some more fixes for 3.17, mostly stable material.

* tag 'drm-intel-fixes-2014-08-28' of git://anongit.freedesktop.org/drm-intel:
drm/i915: Remove bogus __init annotation from DMI callbacks
drm/i915: don't warn if backlight unexpectedly enabled
drm/i915: Move intel_ddi_set_vc_payload_alloc(false) to haswell_crtc_disable()
drm/i915: fix plane/cursor handling when runtime suspended
drm/i915: Ignore VBT backlight presence check on Acer C720 (4005U)

+37 -11
+1 -1
drivers/gpu/drm/i915/intel_bios.c
··· 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 1128 DRM_DEBUG_KMS("Falling back to manually reading VBT from " 1129 1129 "VBIOS ROM for %s\n",
+1 -1
drivers/gpu/drm/i915/intel_crt.c
··· 804 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 809 DRM_INFO("Skipping CRT initialization for %s\n", id->ident); 810 810 return 1;
+30 -4
drivers/gpu/drm/i915/intel_display.c
··· 2233 2233 if (need_vtd_wa(dev) && alignment < 256 * 1024) 2234 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 2245 dev_priv->mm.interruptible = false; 2237 2246 ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); 2238 2247 if (ret) ··· 2259 2250 i915_gem_object_pin_fence(obj); 2260 2251 2261 2252 dev_priv->mm.interruptible = true; 2253 + intel_runtime_pm_put(dev_priv); 2262 2254 return 0; 2263 2255 2264 2256 err_unpin: 2265 2257 i915_gem_object_unpin_from_display_plane(obj); 2266 2258 err_interruptible: 2267 2259 dev_priv->mm.interruptible = true; 2260 + intel_runtime_pm_put(dev_priv); 2268 2261 return ret; 2269 2262 } 2270 2263 ··· 4199 4188 intel_set_pch_fifo_underrun_reporting(dev, pipe, false); 4200 4189 4201 4190 intel_disable_pipe(dev_priv, pipe); 4202 - 4203 - if (intel_crtc->config.dp_encoder_is_mst) 4204 - intel_ddi_set_vc_payload_alloc(crtc, false); 4205 - 4206 4191 ironlake_pfit_disable(intel_crtc); 4207 4192 4208 4193 for_each_encoder_on_crtc(dev, crtc, encoder) ··· 4262 4255 if (intel_crtc->config.has_pch_encoder) 4263 4256 intel_set_pch_fifo_underrun_reporting(dev, TRANSCODER_A, false); 4264 4257 intel_disable_pipe(dev_priv, pipe); 4258 + 4259 + if (intel_crtc->config.dp_encoder_is_mst) 4260 + intel_ddi_set_vc_payload_alloc(crtc, false); 4265 4261 4266 4262 intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder); 4267 4263 ··· 8250 8240 goto fail_locked; 8251 8241 } 8252 8242 8243 + /* 8244 + * Global gtt pte registers are special registers which actually 8245 + * forward writes to a chunk of system memory. Which means that 8246 + * there is no risk that the register values disappear as soon 8247 + * as we call intel_runtime_pm_put(), so it is correct to wrap 8248 + * only the pin/unpin/fence and not more. 8249 + */ 8250 + intel_runtime_pm_get(dev_priv); 8251 + 8253 8252 /* Note that the w/a also requires 2 PTE of padding following 8254 8253 * the bo. We currently fill all unused PTE with the shadow 8255 8254 * page and so we should always have valid PTE following the ··· 8271 8252 ret = i915_gem_object_pin_to_display_plane(obj, alignment, NULL); 8272 8253 if (ret) { 8273 8254 DRM_DEBUG_KMS("failed to move cursor bo into the GTT\n"); 8255 + intel_runtime_pm_put(dev_priv); 8274 8256 goto fail_locked; 8275 8257 } 8276 8258 8277 8259 ret = i915_gem_object_put_fence(obj); 8278 8260 if (ret) { 8279 8261 DRM_DEBUG_KMS("failed to release fence for cursor"); 8262 + intel_runtime_pm_put(dev_priv); 8280 8263 goto fail_unpin; 8281 8264 } 8282 8265 8283 8266 addr = i915_gem_obj_ggtt_offset(obj); 8267 + 8268 + intel_runtime_pm_put(dev_priv); 8284 8269 } else { 8285 8270 int align = IS_I830(dev) ? 16 * 1024 : 256; 8286 8271 ret = i915_gem_object_attach_phys(obj, align); ··· 12503 12480 12504 12481 /* Acer C720 and C720P Chromebooks (Celeron 2955U) have backlights */ 12505 12482 { 0x0a06, 0x1025, 0x0a11, quirk_backlight_present }, 12483 + 12484 + /* Acer C720 Chromebook (Core i3 4005U) */ 12485 + { 0x0a16, 0x1025, 0x0a11, quirk_backlight_present }, 12506 12486 12507 12487 /* Toshiba CB35 Chromebook (Celeron 2955U) */ 12508 12488 { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present },
+1 -1
drivers/gpu/drm/i915/intel_lvds.c
··· 538 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 543 DRM_INFO("Skipping LVDS initialization for %s\n", id->ident); 544 544 return 1;
+4 -4
drivers/gpu/drm/i915/intel_panel.c
··· 801 801 802 802 cpu_ctl2 = I915_READ(BLC_PWM_CPU_CTL2); 803 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 805 cpu_ctl2 &= ~BLM_PWM_ENABLE; 806 806 I915_WRITE(BLC_PWM_CPU_CTL2, cpu_ctl2); 807 807 } ··· 845 845 846 846 ctl = I915_READ(BLC_PWM_CTL); 847 847 if (ctl & BACKLIGHT_DUTY_CYCLE_MASK_PNV) { 848 - WARN(1, "backlight already enabled\n"); 848 + DRM_DEBUG_KMS("backlight already enabled\n"); 849 849 I915_WRITE(BLC_PWM_CTL, 0); 850 850 } 851 851 ··· 876 876 877 877 ctl2 = I915_READ(BLC_PWM_CTL2); 878 878 if (ctl2 & BLM_PWM_ENABLE) { 879 - WARN(1, "backlight already enabled\n"); 879 + DRM_DEBUG_KMS("backlight already enabled\n"); 880 880 ctl2 &= ~BLM_PWM_ENABLE; 881 881 I915_WRITE(BLC_PWM_CTL2, ctl2); 882 882 } ··· 910 910 911 911 ctl2 = I915_READ(VLV_BLC_PWM_CTL2(pipe)); 912 912 if (ctl2 & BLM_PWM_ENABLE) { 913 - WARN(1, "backlight already enabled\n"); 913 + DRM_DEBUG_KMS("backlight already enabled\n"); 914 914 ctl2 &= ~BLM_PWM_ENABLE; 915 915 I915_WRITE(VLV_BLC_PWM_CTL2(pipe), ctl2); 916 916 }