switch (intel_crtc->ddi_pll_sel) {
        case PORT_CLK_SEL_SPLL:
-               plls->spll_refcount--;
-               if (plls->spll_refcount == 0) {
-                       DRM_DEBUG_KMS("Disabling SPLL\n");
-                       val = I915_READ(SPLL_CTL);
-                       WARN_ON(!(val & SPLL_PLL_ENABLE));
-                       I915_WRITE(SPLL_CTL, val & ~SPLL_PLL_ENABLE);
-                       POSTING_READ(SPLL_CTL);
-               }
+               DRM_DEBUG_KMS("Disabling SPLL\n");
+               val = I915_READ(SPLL_CTL);
+               WARN_ON(!(val & SPLL_PLL_ENABLE));
+               I915_WRITE(SPLL_CTL, val & ~SPLL_PLL_ENABLE);
+               POSTING_READ(SPLL_CTL);
                break;
        case PORT_CLK_SEL_WRPLL1:
                plls->wrpll1_refcount--;
                break;
        }
 
-       WARN(plls->spll_refcount < 0, "Invalid SPLL refcount\n");
        WARN(plls->wrpll1_refcount < 0, "Invalid WRPLL1 refcount\n");
        WARN(plls->wrpll2_refcount < 0, "Invalid WRPLL2 refcount\n");
 
                }
 
        } else if (type == INTEL_OUTPUT_ANALOG) {
-               if (plls->spll_refcount == 0) {
-                       DRM_DEBUG_KMS("Using SPLL on pipe %c\n",
-                                     pipe_name(pipe));
-                       plls->spll_refcount++;
-                       intel_crtc->ddi_pll_sel = PORT_CLK_SEL_SPLL;
-               } else {
-                       DRM_ERROR("SPLL already in use\n");
-                       return false;
-               }
-
+               DRM_DEBUG_KMS("Using SPLL on pipe %c\n",
+                             pipe_name(pipe));
+               intel_crtc->ddi_pll_sel = PORT_CLK_SEL_SPLL;
        } else {
                WARN(1, "Invalid DDI encoder type %d\n", type);
                return false;
                return;
 
        case PORT_CLK_SEL_SPLL:
-               pll_name = "SPLL";
-               reg = SPLL_CTL;
-               refcount = plls->spll_refcount;
                new_val = SPLL_PLL_ENABLE | SPLL_PLL_FREQ_1350MHz |
                          SPLL_PLL_SSC;
-               break;
-
+               WARN(I915_READ(SPLL_CTL) & enable_bit, "SPLL already enabled\n");
+               I915_WRITE(SPLL_CTL, new_val);
+               POSTING_READ(SPLL_CTL);
+               udelay(20);
+               return;
        case PORT_CLK_SEL_WRPLL1:
        case PORT_CLK_SEL_WRPLL2:
                if (crtc->ddi_pll_sel == PORT_CLK_SEL_WRPLL1) {
        enum pipe pipe;
        struct intel_crtc *intel_crtc;
 
-       dev_priv->ddi_plls.spll_refcount = 0;
        dev_priv->ddi_plls.wrpll1_refcount = 0;
        dev_priv->ddi_plls.wrpll2_refcount = 0;
 
                                                                 pipe);
 
                switch (intel_crtc->ddi_pll_sel) {
-               case PORT_CLK_SEL_SPLL:
-                       dev_priv->ddi_plls.spll_refcount++;
-                       break;
                case PORT_CLK_SEL_WRPLL1:
                        dev_priv->ddi_plls.wrpll1_refcount++;
                        break;