return 0;
 }
 
+static bool i9xx_has_pfit(struct drm_i915_private *dev_priv)
+{
+       if (IS_I830(dev_priv))
+               return false;
+
+       return INTEL_GEN(dev_priv) >= 4 ||
+               IS_PINEVIEW(dev_priv) || IS_MOBILE(dev_priv);
+}
+
 static void i9xx_get_pfit_config(struct intel_crtc *crtc,
                                 struct intel_crtc_state *pipe_config)
 {
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        u32 tmp;
 
-       if (INTEL_GEN(dev_priv) <= 3 &&
-           (IS_I830(dev_priv) || !IS_MOBILE(dev_priv)))
+       if (!i9xx_has_pfit(dev_priv))
                return;
 
        tmp = I915_READ(PFIT_CONTROL);