diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-20 01:28:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-20 01:28:33 -0400 |
| commit | a7b0806392b527e8a616e7ea6f17aafe33949a9f (patch) | |
| tree | bad9741a4dc48a4187029d4bbf3f2264c37f4c82 | |
| parent | 172de656b98efd81399aec83837dccaa276622c4 (diff) | |
| parent | 4ba4801d73d14690ed15774424e8b1d4c18323a5 (diff) | |
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm/intel fixes from Dave Airlie:
"Just some intel fixes.
I have some radeon ones but I need to get some patches dropped from
the pull req"
* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
drm/i915: Increase WM memory latency values on SNB
drm/i915: restore backlight precision when converting from ACPI
drm/i915: Use the first mode if there is no preferred mode in the EDID
drm/i915/dp: force eDP lane count to max available lanes on BDW
drm/i915/vlv: reset VLV media force wake request register
drm/i915/SDVO: For sysfs link put directory and target in correct order
drm/i915: use lane count and link rate from VBT as minimums for eDP
drm/i915: clean up VBT eDP link param decoding
drm/i915: consider the source max DP lane count too
| -rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 52 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 55 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_fbdev.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 40 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_uncore.c | 2 |
7 files changed, 141 insertions, 29 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index fa486c5fbb02..aff4a113cda3 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
| @@ -560,47 +560,71 @@ parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb) | |||
| 560 | 560 | ||
| 561 | dev_priv->vbt.edp_pps = *edp_pps; | 561 | dev_priv->vbt.edp_pps = *edp_pps; |
| 562 | 562 | ||
| 563 | dev_priv->vbt.edp_rate = edp_link_params->rate ? DP_LINK_BW_2_7 : | 563 | switch (edp_link_params->rate) { |
| 564 | DP_LINK_BW_1_62; | 564 | case EDP_RATE_1_62: |
| 565 | dev_priv->vbt.edp_rate = DP_LINK_BW_1_62; | ||
| 566 | break; | ||
| 567 | case EDP_RATE_2_7: | ||
| 568 | dev_priv->vbt.edp_rate = DP_LINK_BW_2_7; | ||
| 569 | break; | ||
| 570 | default: | ||
| 571 | DRM_DEBUG_KMS("VBT has unknown eDP link rate value %u\n", | ||
| 572 | edp_link_params->rate); | ||
| 573 | break; | ||
| 574 | } | ||
| 575 | |||
| 565 | switch (edp_link_params->lanes) { | 576 | switch (edp_link_params->lanes) { |
| 566 | case 0: | 577 | case EDP_LANE_1: |
| 567 | dev_priv->vbt.edp_lanes = 1; | 578 | dev_priv->vbt.edp_lanes = 1; |
| 568 | break; | 579 | break; |
| 569 | case 1: | 580 | case EDP_LANE_2: |
| 570 | dev_priv->vbt.edp_lanes = 2; | 581 | dev_priv->vbt.edp_lanes = 2; |
| 571 | break; | 582 | break; |
| 572 | case 3: | 583 | case EDP_LANE_4: |
| 573 | default: | ||
| 574 | dev_priv->vbt.edp_lanes = 4; | 584 | dev_priv->vbt.edp_lanes = 4; |
| 575 | break; | 585 | break; |
| 586 | default: | ||
| 587 | DRM_DEBUG_KMS("VBT has unknown eDP lane count value %u\n", | ||
| 588 | edp_link_params->lanes); | ||
| 589 | break; | ||
| 576 | } | 590 | } |
| 591 | |||
| 577 | switch (edp_link_params->preemphasis) { | 592 | switch (edp_link_params->preemphasis) { |
| 578 | case 0: | 593 | case EDP_PREEMPHASIS_NONE: |
| 579 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_0; | 594 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_0; |
| 580 | break; | 595 | break; |
| 581 | case 1: | 596 | case EDP_PREEMPHASIS_3_5dB: |
| 582 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5; | 597 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5; |
| 583 | break; | 598 | break; |
| 584 | case 2: | 599 | case EDP_PREEMPHASIS_6dB: |
| 585 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_6; | 600 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_6; |
| 586 | break; | 601 | break; |
| 587 | case 3: | 602 | case EDP_PREEMPHASIS_9_5dB: |
| 588 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5; | 603 | dev_priv->vbt.edp_preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5; |
| 589 | break; | 604 | break; |
| 605 | default: | ||
| 606 | DRM_DEBUG_KMS("VBT has unknown eDP pre-emphasis value %u\n", | ||
| 607 | edp_link_params->preemphasis); | ||
| 608 | break; | ||
| 590 | } | 609 | } |
| 610 | |||
| 591 | switch (edp_link_params->vswing) { | 611 | switch (edp_link_params->vswing) { |
| 592 | case 0: | 612 | case EDP_VSWING_0_4V: |
| 593 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_400; | 613 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_400; |
| 594 | break; | 614 | break; |
| 595 | case 1: | 615 | case EDP_VSWING_0_6V: |
| 596 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_600; | 616 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_600; |
| 597 | break; | 617 | break; |
| 598 | case 2: | 618 | case EDP_VSWING_0_8V: |
| 599 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_800; | 619 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_800; |
| 600 | break; | 620 | break; |
| 601 | case 3: | 621 | case EDP_VSWING_1_2V: |
| 602 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_1200; | 622 | dev_priv->vbt.edp_vswing = DP_TRAIN_VOLTAGE_SWING_1200; |
| 603 | break; | 623 | break; |
| 624 | default: | ||
| 625 | DRM_DEBUG_KMS("VBT has unknown eDP voltage swing value %u\n", | ||
| 626 | edp_link_params->vswing); | ||
| 627 | break; | ||
| 604 | } | 628 | } |
| 605 | } | 629 | } |
| 606 | 630 | ||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 5ca68aa9f237..2a00cb828d20 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
| @@ -121,6 +121,22 @@ intel_dp_max_link_bw(struct intel_dp *intel_dp) | |||
| 121 | return max_link_bw; | 121 | return max_link_bw; |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | static u8 intel_dp_max_lane_count(struct intel_dp *intel_dp) | ||
| 125 | { | ||
| 126 | struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); | ||
| 127 | struct drm_device *dev = intel_dig_port->base.base.dev; | ||
| 128 | u8 source_max, sink_max; | ||
| 129 | |||
| 130 | source_max = 4; | ||
| 131 | if (HAS_DDI(dev) && intel_dig_port->port == PORT_A && | ||
| 132 | (intel_dig_port->saved_port_bits & DDI_A_4_LANES) == 0) | ||
| 133 | source_max = 2; | ||
| 134 | |||
| 135 | sink_max = drm_dp_max_lane_count(intel_dp->dpcd); | ||
| 136 | |||
| 137 | return min(source_max, sink_max); | ||
| 138 | } | ||
| 139 | |||
| 124 | /* | 140 | /* |
| 125 | * The units on the numbers in the next two are... bizarre. Examples will | 141 | * The units on the numbers in the next two are... bizarre. Examples will |
| 126 | * make it clearer; this one parallels an example in the eDP spec. | 142 | * make it clearer; this one parallels an example in the eDP spec. |
| @@ -171,7 +187,7 @@ intel_dp_mode_valid(struct drm_connector *connector, | |||
| 171 | } | 187 | } |
| 172 | 188 | ||
| 173 | max_link_clock = drm_dp_bw_code_to_link_rate(intel_dp_max_link_bw(intel_dp)); | 189 | max_link_clock = drm_dp_bw_code_to_link_rate(intel_dp_max_link_bw(intel_dp)); |
| 174 | max_lanes = drm_dp_max_lane_count(intel_dp->dpcd); | 190 | max_lanes = intel_dp_max_lane_count(intel_dp); |
| 175 | 191 | ||
| 176 | max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes); | 192 | max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes); |
| 177 | mode_rate = intel_dp_link_required(target_clock, 18); | 193 | mode_rate = intel_dp_link_required(target_clock, 18); |
| @@ -751,8 +767,10 @@ intel_dp_compute_config(struct intel_encoder *encoder, | |||
| 751 | struct intel_crtc *intel_crtc = encoder->new_crtc; | 767 | struct intel_crtc *intel_crtc = encoder->new_crtc; |
| 752 | struct intel_connector *intel_connector = intel_dp->attached_connector; | 768 | struct intel_connector *intel_connector = intel_dp->attached_connector; |
| 753 | int lane_count, clock; | 769 | int lane_count, clock; |
| 754 | int max_lane_count = drm_dp_max_lane_count(intel_dp->dpcd); | 770 | int min_lane_count = 1; |
| 771 | int max_lane_count = intel_dp_max_lane_count(intel_dp); | ||
| 755 | /* Conveniently, the link BW constants become indices with a shift...*/ | 772 | /* Conveniently, the link BW constants become indices with a shift...*/ |
| 773 | int min_clock = 0; | ||
| 756 | int max_clock = intel_dp_max_link_bw(intel_dp) >> 3; | 774 | int max_clock = intel_dp_max_link_bw(intel_dp) >> 3; |
| 757 | int bpp, mode_rate; | 775 | int bpp, mode_rate; |
| 758 | static int bws[] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7, DP_LINK_BW_5_4 }; | 776 | static int bws[] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7, DP_LINK_BW_5_4 }; |
| @@ -785,19 +803,38 @@ intel_dp_compute_config(struct intel_encoder *encoder, | |||
| 785 | /* Walk through all bpp values. Luckily they're all nicely spaced with 2 | 803 | /* Walk through all bpp values. Luckily they're all nicely spaced with 2 |
| 786 | * bpc in between. */ | 804 | * bpc in between. */ |
| 787 | bpp = pipe_config->pipe_bpp; | 805 | bpp = pipe_config->pipe_bpp; |
| 788 | if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp && | 806 | if (is_edp(intel_dp)) { |
| 789 | dev_priv->vbt.edp_bpp < bpp) { | 807 | if (dev_priv->vbt.edp_bpp && dev_priv->vbt.edp_bpp < bpp) { |
| 790 | DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n", | 808 | DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n", |
| 791 | dev_priv->vbt.edp_bpp); | 809 | dev_priv->vbt.edp_bpp); |
| 792 | bpp = dev_priv->vbt.edp_bpp; | 810 | bpp = dev_priv->vbt.edp_bpp; |
| 811 | } | ||
| 812 | |||
| 813 | if (IS_BROADWELL(dev)) { | ||
| 814 | /* Yes, it's an ugly hack. */ | ||
| 815 | min_lane_count = max_lane_count; | ||
| 816 | DRM_DEBUG_KMS("forcing lane count to max (%u) on BDW\n", | ||
| 817 | min_lane_count); | ||
| 818 | } else if (dev_priv->vbt.edp_lanes) { | ||
| 819 | min_lane_count = min(dev_priv->vbt.edp_lanes, | ||
| 820 | max_lane_count); | ||
| 821 | DRM_DEBUG_KMS("using min %u lanes per VBT\n", | ||
| 822 | min_lane_count); | ||
| 823 | } | ||
| 824 | |||
| 825 | if (dev_priv->vbt.edp_rate) { | ||
| 826 | min_clock = min(dev_priv->vbt.edp_rate >> 3, max_clock); | ||
| 827 | DRM_DEBUG_KMS("using min %02x link bw per VBT\n", | ||
| 828 | bws[min_clock]); | ||
| 829 | } | ||
| 793 | } | 830 | } |
| 794 | 831 | ||
| 795 | for (; bpp >= 6*3; bpp -= 2*3) { | 832 | for (; bpp >= 6*3; bpp -= 2*3) { |
| 796 | mode_rate = intel_dp_link_required(adjusted_mode->crtc_clock, | 833 | mode_rate = intel_dp_link_required(adjusted_mode->crtc_clock, |
| 797 | bpp); | 834 | bpp); |
| 798 | 835 | ||
| 799 | for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { | 836 | for (lane_count = min_lane_count; lane_count <= max_lane_count; lane_count <<= 1) { |
| 800 | for (clock = 0; clock <= max_clock; clock++) { | 837 | for (clock = min_clock; clock <= max_clock; clock++) { |
| 801 | link_clock = drm_dp_bw_code_to_link_rate(bws[clock]); | 838 | link_clock = drm_dp_bw_code_to_link_rate(bws[clock]); |
| 802 | link_avail = intel_dp_max_data_rate(link_clock, | 839 | link_avail = intel_dp_max_data_rate(link_clock, |
| 803 | lane_count); | 840 | lane_count); |
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index fce4a0d93c0b..f73ba5e6b7a8 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c | |||
| @@ -387,6 +387,15 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
| 387 | height); | 387 | height); |
| 388 | } | 388 | } |
| 389 | 389 | ||
| 390 | /* No preferred mode marked by the EDID? Are there any modes? */ | ||
| 391 | if (!modes[i] && !list_empty(&connector->modes)) { | ||
| 392 | DRM_DEBUG_KMS("using first mode listed on connector %s\n", | ||
| 393 | drm_get_connector_name(connector)); | ||
| 394 | modes[i] = list_first_entry(&connector->modes, | ||
| 395 | struct drm_display_mode, | ||
| 396 | head); | ||
| 397 | } | ||
| 398 | |||
| 390 | /* last resort: use current mode */ | 399 | /* last resort: use current mode */ |
| 391 | if (!modes[i]) { | 400 | if (!modes[i]) { |
| 392 | /* | 401 | /* |
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index 0eead16aeda7..cb8cfb7e0974 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
| @@ -492,6 +492,7 @@ void intel_panel_set_backlight(struct intel_connector *connector, u32 level, | |||
| 492 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 492 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
| 493 | u32 freq; | 493 | u32 freq; |
| 494 | unsigned long flags; | 494 | unsigned long flags; |
| 495 | u64 n; | ||
| 495 | 496 | ||
| 496 | if (!panel->backlight.present || pipe == INVALID_PIPE) | 497 | if (!panel->backlight.present || pipe == INVALID_PIPE) |
| 497 | return; | 498 | return; |
| @@ -502,10 +503,9 @@ void intel_panel_set_backlight(struct intel_connector *connector, u32 level, | |||
| 502 | 503 | ||
| 503 | /* scale to hardware max, but be careful to not overflow */ | 504 | /* scale to hardware max, but be careful to not overflow */ |
| 504 | freq = panel->backlight.max; | 505 | freq = panel->backlight.max; |
| 505 | if (freq < max) | 506 | n = (u64)level * freq; |
| 506 | level = level * freq / max; | 507 | do_div(n, max); |
| 507 | else | 508 | level = n; |
| 508 | level = freq / max * level; | ||
| 509 | 509 | ||
| 510 | panel->backlight.level = level; | 510 | panel->backlight.level = level; |
| 511 | if (panel->backlight.device) | 511 | if (panel->backlight.device) |
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 19e94c3edc19..d93dcf683e8c 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
| @@ -2095,6 +2095,43 @@ static void intel_print_wm_latency(struct drm_device *dev, | |||
| 2095 | } | 2095 | } |
| 2096 | } | 2096 | } |
| 2097 | 2097 | ||
| 2098 | static bool ilk_increase_wm_latency(struct drm_i915_private *dev_priv, | ||
| 2099 | uint16_t wm[5], uint16_t min) | ||
| 2100 | { | ||
| 2101 | int level, max_level = ilk_wm_max_level(dev_priv->dev); | ||
| 2102 | |||
| 2103 | if (wm[0] >= min) | ||
| 2104 | return false; | ||
| 2105 | |||
| 2106 | wm[0] = max(wm[0], min); | ||
| 2107 | for (level = 1; level <= max_level; level++) | ||
| 2108 | wm[level] = max_t(uint16_t, wm[level], DIV_ROUND_UP(min, 5)); | ||
| 2109 | |||
| 2110 | return true; | ||
| 2111 | } | ||
| 2112 | |||
| 2113 | static void snb_wm_latency_quirk(struct drm_device *dev) | ||
| 2114 | { | ||
| 2115 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 2116 | bool changed; | ||
| 2117 | |||
| 2118 | /* | ||
| 2119 | * The BIOS provided WM memory latency values are often | ||
| 2120 | * inadequate for high resolution displays. Adjust them. | ||
| 2121 | */ | ||
| 2122 | changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12) | | ||
| 2123 | ilk_increase_wm_latency(dev_priv, dev_priv->wm.spr_latency, 12) | | ||
| 2124 | ilk_increase_wm_latency(dev_priv, dev_priv->wm.cur_latency, 12); | ||
| 2125 | |||
| 2126 | if (!changed) | ||
| 2127 | return; | ||
| 2128 | |||
| 2129 | DRM_DEBUG_KMS("WM latency values increased to avoid potential underruns\n"); | ||
| 2130 | intel_print_wm_latency(dev, "Primary", dev_priv->wm.pri_latency); | ||
| 2131 | intel_print_wm_latency(dev, "Sprite", dev_priv->wm.spr_latency); | ||
| 2132 | intel_print_wm_latency(dev, "Cursor", dev_priv->wm.cur_latency); | ||
| 2133 | } | ||
| 2134 | |||
| 2098 | static void ilk_setup_wm_latency(struct drm_device *dev) | 2135 | static void ilk_setup_wm_latency(struct drm_device *dev) |
| 2099 | { | 2136 | { |
| 2100 | struct drm_i915_private *dev_priv = dev->dev_private; | 2137 | struct drm_i915_private *dev_priv = dev->dev_private; |
| @@ -2112,6 +2149,9 @@ static void ilk_setup_wm_latency(struct drm_device *dev) | |||
| 2112 | intel_print_wm_latency(dev, "Primary", dev_priv->wm.pri_latency); | 2149 | intel_print_wm_latency(dev, "Primary", dev_priv->wm.pri_latency); |
| 2113 | intel_print_wm_latency(dev, "Sprite", dev_priv->wm.spr_latency); | 2150 | intel_print_wm_latency(dev, "Sprite", dev_priv->wm.spr_latency); |
| 2114 | intel_print_wm_latency(dev, "Cursor", dev_priv->wm.cur_latency); | 2151 | intel_print_wm_latency(dev, "Cursor", dev_priv->wm.cur_latency); |
| 2152 | |||
| 2153 | if (IS_GEN6(dev)) | ||
| 2154 | snb_wm_latency_quirk(dev); | ||
| 2115 | } | 2155 | } |
| 2116 | 2156 | ||
| 2117 | static void ilk_compute_wm_parameters(struct drm_crtc *crtc, | 2157 | static void ilk_compute_wm_parameters(struct drm_crtc *crtc, |
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index d27155adf5db..46be00d66df3 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
| @@ -2424,8 +2424,8 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector, | |||
| 2424 | if (ret < 0) | 2424 | if (ret < 0) |
| 2425 | goto err1; | 2425 | goto err1; |
| 2426 | 2426 | ||
| 2427 | ret = sysfs_create_link(&encoder->ddc.dev.kobj, | 2427 | ret = sysfs_create_link(&drm_connector->kdev->kobj, |
| 2428 | &drm_connector->kdev->kobj, | 2428 | &encoder->ddc.dev.kobj, |
| 2429 | encoder->ddc.dev.kobj.name); | 2429 | encoder->ddc.dev.kobj.name); |
| 2430 | if (ret < 0) | 2430 | if (ret < 0) |
| 2431 | goto err2; | 2431 | goto err2; |
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c index f729dc71d5be..d0c75779d3f6 100644 --- a/drivers/gpu/drm/i915/intel_uncore.c +++ b/drivers/gpu/drm/i915/intel_uncore.c | |||
| @@ -185,6 +185,8 @@ static void vlv_force_wake_reset(struct drm_i915_private *dev_priv) | |||
| 185 | { | 185 | { |
| 186 | __raw_i915_write32(dev_priv, FORCEWAKE_VLV, | 186 | __raw_i915_write32(dev_priv, FORCEWAKE_VLV, |
| 187 | _MASKED_BIT_DISABLE(0xffff)); | 187 | _MASKED_BIT_DISABLE(0xffff)); |
| 188 | __raw_i915_write32(dev_priv, FORCEWAKE_MEDIA_VLV, | ||
| 189 | _MASKED_BIT_DISABLE(0xffff)); | ||
| 188 | /* something from same cacheline, but !FORCEWAKE_VLV */ | 190 | /* something from same cacheline, but !FORCEWAKE_VLV */ |
| 189 | __raw_posting_read(dev_priv, FORCEWAKE_ACK_VLV); | 191 | __raw_posting_read(dev_priv, FORCEWAKE_ACK_VLV); |
| 190 | } | 192 | } |
