aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-03-30 16:01:04 -0400
committerKeith Packard <keithp@keithp.com>2011-05-10 16:56:29 -0400
commit929c77fb38aa1e5f028f1b59dfb641b25fffea8b (patch)
tree2efb13e1a82a3444a92277a865aa8ffabed5f33a
parent0b701d27b37d52b80d8da2d8d15fb99e072ee819 (diff)
drm/i915: Remove the PCH paths from the pre-Ironlake crtc_mode_set().
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c281
1 files changed, 23 insertions, 258 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f121aaf20ba9..622820b6a236 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4538,10 +4538,8 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4538 struct intel_encoder *encoder; 4538 struct intel_encoder *encoder;
4539 const intel_limit_t *limit; 4539 const intel_limit_t *limit;
4540 int ret; 4540 int ret;
4541 struct fdi_m_n m_n = {0};
4542 u32 reg, temp; 4541 u32 reg, temp;
4543 u32 lvds_sync = 0; 4542 u32 lvds_sync = 0;
4544 int target_clock;
4545 4543
4546 list_for_each_entry(encoder, &mode_config->encoder_list, base.head) { 4544 list_for_each_entry(encoder, &mode_config->encoder_list, base.head) {
4547 if (encoder->base.crtc != crtc) 4545 if (encoder->base.crtc != crtc)
@@ -4583,9 +4581,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4583 refclk / 1000); 4581 refclk / 1000);
4584 } else if (!IS_GEN2(dev)) { 4582 } else if (!IS_GEN2(dev)) {
4585 refclk = 96000; 4583 refclk = 96000;
4586 if (HAS_PCH_SPLIT(dev) &&
4587 (!has_edp_encoder || intel_encoder_is_pch_edp(&has_edp_encoder->base)))
4588 refclk = 120000; /* 120Mhz refclk */
4589 } else { 4584 } else {
4590 refclk = 48000; 4585 refclk = 48000;
4591 } 4586 }
@@ -4642,143 +4637,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4642 } 4637 }
4643 } 4638 }
4644 4639
4645 /* FDI link */
4646 if (HAS_PCH_SPLIT(dev)) {
4647 int pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode);
4648 int lane = 0, link_bw, bpp;
4649 /* CPU eDP doesn't require FDI link, so just set DP M/N
4650 according to current link config */
4651 if (has_edp_encoder && !intel_encoder_is_pch_edp(&has_edp_encoder->base)) {
4652 target_clock = mode->clock;
4653 intel_edp_link_config(has_edp_encoder,
4654 &lane, &link_bw);
4655 } else {
4656 /* [e]DP over FDI requires target mode clock
4657 instead of link clock */
4658 if (is_dp || intel_encoder_is_pch_edp(&has_edp_encoder->base))
4659 target_clock = mode->clock;
4660 else
4661 target_clock = adjusted_mode->clock;
4662
4663 /* FDI is a binary signal running at ~2.7GHz, encoding
4664 * each output octet as 10 bits. The actual frequency
4665 * is stored as a divider into a 100MHz clock, and the
4666 * mode pixel clock is stored in units of 1KHz.
4667 * Hence the bw of each lane in terms of the mode signal
4668 * is:
4669 */
4670 link_bw = intel_fdi_link_freq(dev) * MHz(100)/KHz(1)/10;
4671 }
4672
4673 /* determine panel color depth */
4674 temp = I915_READ(PIPECONF(pipe));
4675 temp &= ~PIPE_BPC_MASK;
4676 if (is_lvds) {
4677 /* the BPC will be 6 if it is 18-bit LVDS panel */
4678 if ((I915_READ(PCH_LVDS) & LVDS_A3_POWER_MASK) == LVDS_A3_POWER_UP)
4679 temp |= PIPE_8BPC;
4680 else
4681 temp |= PIPE_6BPC;
4682 } else if (has_edp_encoder) {
4683 switch (dev_priv->edp.bpp/3) {
4684 case 8:
4685 temp |= PIPE_8BPC;
4686 break;
4687 case 10:
4688 temp |= PIPE_10BPC;
4689 break;
4690 case 6:
4691 temp |= PIPE_6BPC;
4692 break;
4693 case 12:
4694 temp |= PIPE_12BPC;
4695 break;
4696 }
4697 } else
4698 temp |= PIPE_8BPC;
4699 I915_WRITE(PIPECONF(pipe), temp);
4700
4701 switch (temp & PIPE_BPC_MASK) {
4702 case PIPE_8BPC:
4703 bpp = 24;
4704 break;
4705 case PIPE_10BPC:
4706 bpp = 30;
4707 break;
4708 case PIPE_6BPC:
4709 bpp = 18;
4710 break;
4711 case PIPE_12BPC:
4712 bpp = 36;
4713 break;
4714 default:
4715 DRM_ERROR("unknown pipe bpc value\n");
4716 bpp = 24;
4717 }
4718
4719 if (!lane) {
4720 /*
4721 * Account for spread spectrum to avoid
4722 * oversubscribing the link. Max center spread
4723 * is 2.5%; use 5% for safety's sake.
4724 */
4725 u32 bps = target_clock * bpp * 21 / 20;
4726 lane = bps / (link_bw * 8) + 1;
4727 }
4728
4729 intel_crtc->fdi_lanes = lane;
4730
4731 if (pixel_multiplier > 1)
4732 link_bw *= pixel_multiplier;
4733 ironlake_compute_m_n(bpp, lane, target_clock, link_bw, &m_n);
4734 }
4735
4736 /* Ironlake: try to setup display ref clock before DPLL
4737 * enabling. This is only under driver's control after
4738 * PCH B stepping, previous chipset stepping should be
4739 * ignoring this setting.
4740 */
4741 if (HAS_PCH_SPLIT(dev)) {
4742 temp = I915_READ(PCH_DREF_CONTROL);
4743 /* Always enable nonspread source */
4744 temp &= ~DREF_NONSPREAD_SOURCE_MASK;
4745 temp |= DREF_NONSPREAD_SOURCE_ENABLE;
4746 temp &= ~DREF_SSC_SOURCE_MASK;
4747 temp |= DREF_SSC_SOURCE_ENABLE;
4748 I915_WRITE(PCH_DREF_CONTROL, temp);
4749
4750 POSTING_READ(PCH_DREF_CONTROL);
4751 udelay(200);
4752
4753 if (has_edp_encoder) {
4754 if (intel_panel_use_ssc(dev_priv)) {
4755 temp |= DREF_SSC1_ENABLE;
4756 I915_WRITE(PCH_DREF_CONTROL, temp);
4757
4758 POSTING_READ(PCH_DREF_CONTROL);
4759 udelay(200);
4760 }
4761 temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK;
4762
4763 /* Enable CPU source on CPU attached eDP */
4764 if (!intel_encoder_is_pch_edp(&has_edp_encoder->base)) {
4765 if (intel_panel_use_ssc(dev_priv))
4766 temp |= DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD;
4767 else
4768 temp |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD;
4769 } else {
4770 /* Enable SSC on PCH eDP if needed */
4771 if (intel_panel_use_ssc(dev_priv)) {
4772 DRM_ERROR("enabling SSC on PCH\n");
4773 temp |= DREF_SUPERSPREAD_SOURCE_ENABLE;
4774 }
4775 }
4776 I915_WRITE(PCH_DREF_CONTROL, temp);
4777 POSTING_READ(PCH_DREF_CONTROL);
4778 udelay(200);
4779 }
4780 }
4781
4782 if (IS_PINEVIEW(dev)) { 4640 if (IS_PINEVIEW(dev)) {
4783 fp = (1 << clock.n) << 16 | clock.m1 << 8 | clock.m2; 4641 fp = (1 << clock.n) << 16 | clock.m1 << 8 | clock.m2;
4784 if (has_reduced_clock) 4642 if (has_reduced_clock)
@@ -4791,25 +4649,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4791 reduced_clock.m2; 4649 reduced_clock.m2;
4792 } 4650 }
4793 4651
4794 /* Enable autotuning of the PLL clock (if permissible) */ 4652 dpll = DPLL_VGA_MODE_DIS;
4795 if (HAS_PCH_SPLIT(dev)) {
4796 int factor = 21;
4797
4798 if (is_lvds) {
4799 if ((intel_panel_use_ssc(dev_priv) &&
4800 dev_priv->lvds_ssc_freq == 100) ||
4801 (I915_READ(PCH_LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP)
4802 factor = 25;
4803 } else if (is_sdvo && is_tv)
4804 factor = 20;
4805
4806 if (clock.m1 < factor * clock.n)
4807 fp |= FP_CB_TUNE;
4808 }
4809
4810 dpll = 0;
4811 if (!HAS_PCH_SPLIT(dev))
4812 dpll = DPLL_VGA_MODE_DIS;
4813 4653
4814 if (!IS_GEN2(dev)) { 4654 if (!IS_GEN2(dev)) {
4815 if (is_lvds) 4655 if (is_lvds)
@@ -4821,12 +4661,10 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4821 if (pixel_multiplier > 1) { 4661 if (pixel_multiplier > 1) {
4822 if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) 4662 if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev))
4823 dpll |= (pixel_multiplier - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; 4663 dpll |= (pixel_multiplier - 1) << SDVO_MULTIPLIER_SHIFT_HIRES;
4824 else if (HAS_PCH_SPLIT(dev))
4825 dpll |= (pixel_multiplier - 1) << PLL_REF_SDVO_HDMI_MULTIPLIER_SHIFT;
4826 } 4664 }
4827 dpll |= DPLL_DVO_HIGH_SPEED; 4665 dpll |= DPLL_DVO_HIGH_SPEED;
4828 } 4666 }
4829 if (is_dp || intel_encoder_is_pch_edp(&has_edp_encoder->base)) 4667 if (is_dp)
4830 dpll |= DPLL_DVO_HIGH_SPEED; 4668 dpll |= DPLL_DVO_HIGH_SPEED;
4831 4669
4832 /* compute bitmask from p1 value */ 4670 /* compute bitmask from p1 value */
@@ -4834,9 +4672,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4834 dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW; 4672 dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW;
4835 else { 4673 else {
4836 dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; 4674 dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT;
4837 /* also FPA1 */
4838 if (HAS_PCH_SPLIT(dev))
4839 dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT;
4840 if (IS_G4X(dev) && has_reduced_clock) 4675 if (IS_G4X(dev) && has_reduced_clock)
4841 dpll |= (1 << (reduced_clock.p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT; 4676 dpll |= (1 << (reduced_clock.p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT;
4842 } 4677 }
@@ -4854,7 +4689,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4854 dpll |= DPLLB_LVDS_P2_CLOCK_DIV_14; 4689 dpll |= DPLLB_LVDS_P2_CLOCK_DIV_14;
4855 break; 4690 break;
4856 } 4691 }
4857 if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) 4692 if (INTEL_INFO(dev)->gen >= 4)
4858 dpll |= (6 << PLL_LOAD_PULSE_PHASE_SHIFT); 4693 dpll |= (6 << PLL_LOAD_PULSE_PHASE_SHIFT);
4859 } else { 4694 } else {
4860 if (is_lvds) { 4695 if (is_lvds) {
@@ -4888,12 +4723,10 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4888 4723
4889 /* Ironlake's plane is forced to pipe, bit 24 is to 4724 /* Ironlake's plane is forced to pipe, bit 24 is to
4890 enable color space conversion */ 4725 enable color space conversion */
4891 if (!HAS_PCH_SPLIT(dev)) { 4726 if (pipe == 0)
4892 if (pipe == 0) 4727 dspcntr &= ~DISPPLANE_SEL_PIPE_MASK;
4893 dspcntr &= ~DISPPLANE_SEL_PIPE_MASK; 4728 else
4894 else 4729 dspcntr |= DISPPLANE_SEL_PIPE_B;
4895 dspcntr |= DISPPLANE_SEL_PIPE_B;
4896 }
4897 4730
4898 if (pipe == 0 && INTEL_INFO(dev)->gen < 4) { 4731 if (pipe == 0 && INTEL_INFO(dev)->gen < 4) {
4899 /* Enable pixel doubling when the dot clock is > 90% of the (display) 4732 /* Enable pixel doubling when the dot clock is > 90% of the (display)
@@ -4909,23 +4742,16 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4909 pipeconf &= ~PIPECONF_DOUBLE_WIDE; 4742 pipeconf &= ~PIPECONF_DOUBLE_WIDE;
4910 } 4743 }
4911 4744
4912 if (!HAS_PCH_SPLIT(dev)) 4745 dpll |= DPLL_VCO_ENABLE;
4913 dpll |= DPLL_VCO_ENABLE;
4914 4746
4915 DRM_DEBUG_KMS("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B'); 4747 DRM_DEBUG_KMS("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B');
4916 drm_mode_debug_printmodeline(mode); 4748 drm_mode_debug_printmodeline(mode);
4917 4749
4918 /* assign to Ironlake registers */ 4750 fp_reg = FP0(pipe);
4919 if (HAS_PCH_SPLIT(dev)) { 4751 dpll_reg = DPLL(pipe);
4920 fp_reg = PCH_FP0(pipe);
4921 dpll_reg = PCH_DPLL(pipe);
4922 } else {
4923 fp_reg = FP0(pipe);
4924 dpll_reg = DPLL(pipe);
4925 }
4926 4752
4927 /* PCH eDP needs FDI, but CPU eDP does not */ 4753 /* PCH eDP needs FDI, but CPU eDP does not */
4928 if (!has_edp_encoder || intel_encoder_is_pch_edp(&has_edp_encoder->base)) { 4754 if (!has_edp_encoder) {
4929 I915_WRITE(fp_reg, fp); 4755 I915_WRITE(fp_reg, fp);
4930 I915_WRITE(dpll_reg, dpll & ~DPLL_VCO_ENABLE); 4756 I915_WRITE(dpll_reg, dpll & ~DPLL_VCO_ENABLE);
4931 4757
@@ -4933,50 +4759,19 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4933 udelay(150); 4759 udelay(150);
4934 } 4760 }
4935 4761
4936 /* enable transcoder DPLL */
4937 if (HAS_PCH_CPT(dev)) {
4938 temp = I915_READ(PCH_DPLL_SEL);
4939 switch (pipe) {
4940 case 0:
4941 temp |= TRANSA_DPLL_ENABLE | TRANSA_DPLLA_SEL;
4942 break;
4943 case 1:
4944 temp |= TRANSB_DPLL_ENABLE | TRANSB_DPLLB_SEL;
4945 break;
4946 case 2:
4947 /* FIXME: manage transcoder PLLs? */
4948 temp |= TRANSC_DPLL_ENABLE | TRANSC_DPLLB_SEL;
4949 break;
4950 default:
4951 BUG();
4952 }
4953 I915_WRITE(PCH_DPLL_SEL, temp);
4954
4955 POSTING_READ(PCH_DPLL_SEL);
4956 udelay(150);
4957 }
4958
4959 /* The LVDS pin pair needs to be on before the DPLLs are enabled. 4762 /* The LVDS pin pair needs to be on before the DPLLs are enabled.
4960 * This is an exception to the general rule that mode_set doesn't turn 4763 * This is an exception to the general rule that mode_set doesn't turn
4961 * things on. 4764 * things on.
4962 */ 4765 */
4963 if (is_lvds) { 4766 if (is_lvds) {
4964 reg = LVDS; 4767 reg = LVDS;
4965 if (HAS_PCH_SPLIT(dev))
4966 reg = PCH_LVDS;
4967 4768
4968 temp = I915_READ(reg); 4769 temp = I915_READ(reg);
4969 temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; 4770 temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP;
4970 if (pipe == 1) { 4771 if (pipe == 1) {
4971 if (HAS_PCH_CPT(dev)) 4772 temp |= LVDS_PIPEB_SELECT;
4972 temp |= PORT_TRANS_B_SEL_CPT;
4973 else
4974 temp |= LVDS_PIPEB_SELECT;
4975 } else { 4773 } else {
4976 if (HAS_PCH_CPT(dev)) 4774 temp &= ~LVDS_PIPEB_SELECT;
4977 temp &= ~PORT_TRANS_SEL_MASK;
4978 else
4979 temp &= ~LVDS_PIPEB_SELECT;
4980 } 4775 }
4981 /* set the corresponsding LVDS_BORDER bit */ 4776 /* set the corresponsding LVDS_BORDER bit */
4982 temp |= dev_priv->lvds_border_bits; 4777 temp |= dev_priv->lvds_border_bits;
@@ -4992,8 +4787,8 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
4992 * appropriately here, but we need to look more thoroughly into how 4787 * appropriately here, but we need to look more thoroughly into how
4993 * panels behave in the two modes. 4788 * panels behave in the two modes.
4994 */ 4789 */
4995 /* set the dithering flag on non-PCH LVDS as needed */ 4790 /* set the dithering flag on LVDS as needed */
4996 if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) { 4791 if (INTEL_INFO(dev)->gen >= 4) {
4997 if (dev_priv->lvds_dither) 4792 if (dev_priv->lvds_dither)
4998 temp |= LVDS_ENABLE_DITHER; 4793 temp |= LVDS_ENABLE_DITHER;
4999 else 4794 else
@@ -5018,34 +4813,18 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
5018 I915_WRITE(reg, temp); 4813 I915_WRITE(reg, temp);
5019 } 4814 }
5020 4815
5021 /* set the dithering flag and clear for anything other than a panel. */ 4816 if (is_dp) {
5022 if (HAS_PCH_SPLIT(dev)) {
5023 pipeconf &= ~PIPECONF_DITHER_EN;
5024 pipeconf &= ~PIPECONF_DITHER_TYPE_MASK;
5025 if (dev_priv->lvds_dither && (is_lvds || has_edp_encoder)) {
5026 pipeconf |= PIPECONF_DITHER_EN;
5027 pipeconf |= PIPECONF_DITHER_TYPE_ST1;
5028 }
5029 }
5030
5031 if (is_dp || intel_encoder_is_pch_edp(&has_edp_encoder->base)) {
5032 intel_dp_set_m_n(crtc, mode, adjusted_mode); 4817 intel_dp_set_m_n(crtc, mode, adjusted_mode);
5033 } else if (HAS_PCH_SPLIT(dev)) {
5034 /* For non-DP output, clear any trans DP clock recovery setting.*/
5035 I915_WRITE(TRANSDATA_M1(pipe), 0);
5036 I915_WRITE(TRANSDATA_N1(pipe), 0);
5037 I915_WRITE(TRANSDPLINK_M1(pipe), 0);
5038 I915_WRITE(TRANSDPLINK_N1(pipe), 0);
5039 } 4818 }
5040 4819
5041 if (!has_edp_encoder || intel_encoder_is_pch_edp(&has_edp_encoder->base)) { 4820 if (!has_edp_encoder) {
5042 I915_WRITE(dpll_reg, dpll); 4821 I915_WRITE(dpll_reg, dpll);
5043 4822
5044 /* Wait for the clocks to stabilize. */ 4823 /* Wait for the clocks to stabilize. */
5045 POSTING_READ(dpll_reg); 4824 POSTING_READ(dpll_reg);
5046 udelay(150); 4825 udelay(150);
5047 4826
5048 if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) { 4827 if (INTEL_INFO(dev)->gen >= 4) {
5049 temp = 0; 4828 temp = 0;
5050 if (is_sdvo) { 4829 if (is_sdvo) {
5051 temp = intel_mode_get_pixel_multiplier(adjusted_mode); 4830 temp = intel_mode_get_pixel_multiplier(adjusted_mode);
@@ -5116,30 +4895,16 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
5116 /* pipesrc and dspsize control the size that is scaled from, 4895 /* pipesrc and dspsize control the size that is scaled from,
5117 * which should always be the user's requested size. 4896 * which should always be the user's requested size.
5118 */ 4897 */
5119 if (!HAS_PCH_SPLIT(dev)) { 4898 I915_WRITE(DSPSIZE(plane),
5120 I915_WRITE(DSPSIZE(plane), 4899 ((mode->vdisplay - 1) << 16) |
5121 ((mode->vdisplay - 1) << 16) | 4900 (mode->hdisplay - 1));
5122 (mode->hdisplay - 1)); 4901 I915_WRITE(DSPPOS(plane), 0);
5123 I915_WRITE(DSPPOS(plane), 0);
5124 }
5125 I915_WRITE(PIPESRC(pipe), 4902 I915_WRITE(PIPESRC(pipe),
5126 ((mode->hdisplay - 1) << 16) | (mode->vdisplay - 1)); 4903 ((mode->hdisplay - 1) << 16) | (mode->vdisplay - 1));
5127 4904
5128 if (HAS_PCH_SPLIT(dev)) {
5129 I915_WRITE(PIPE_DATA_M1(pipe), TU_SIZE(m_n.tu) | m_n.gmch_m);
5130 I915_WRITE(PIPE_DATA_N1(pipe), m_n.gmch_n);
5131 I915_WRITE(PIPE_LINK_M1(pipe), m_n.link_m);
5132 I915_WRITE(PIPE_LINK_N1(pipe), m_n.link_n);
5133
5134 if (has_edp_encoder && !intel_encoder_is_pch_edp(&has_edp_encoder->base)) {
5135 ironlake_set_pll_edp(crtc, adjusted_mode->clock);
5136 }
5137 }
5138
5139 I915_WRITE(PIPECONF(pipe), pipeconf); 4905 I915_WRITE(PIPECONF(pipe), pipeconf);
5140 POSTING_READ(PIPECONF(pipe)); 4906 POSTING_READ(PIPECONF(pipe));
5141 if (!HAS_PCH_SPLIT(dev)) 4907 intel_enable_pipe(dev_priv, pipe, false);
5142 intel_enable_pipe(dev_priv, pipe, false);
5143 4908
5144 intel_wait_for_vblank(dev, pipe); 4909 intel_wait_for_vblank(dev, pipe);
5145 4910