UBUNTU: SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting
[linux-flexiantxendom0-natty.git] / drivers / gpu / drm / i915 / intel_panel.c
index e00d200..db8733e 100644 (file)
@@ -83,11 +83,15 @@ intel_pch_panel_fitting(struct drm_device *dev,
                        u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay;
                        if (scaled_width > scaled_height) { /* pillar */
                                width = scaled_height / mode->vdisplay;
+                               if (width & 1)
+                                       width++;
                                x = (adjusted_mode->hdisplay - width + 1) / 2;
                                y = 0;
                                height = adjusted_mode->vdisplay;
                        } else if (scaled_width < scaled_height) { /* letter */
                                height = scaled_width / mode->hdisplay;
+                               if (height & 1)
+                                       height++;
                                y = (adjusted_mode->vdisplay - height + 1) / 2;
                                x = 0;
                                width = adjusted_mode->hdisplay;
@@ -208,7 +212,6 @@ u32 intel_panel_get_backlight(struct drm_device *dev)
                        val &= ~1;
                        pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc);
                        val *= lbpc;
-                       val >>= 1;
                }
        }
 
@@ -235,11 +238,11 @@ void intel_panel_set_backlight(struct drm_device *dev, u32 level)
 
        if (is_backlight_combination_mode(dev)){
                u32 max = intel_panel_get_max_backlight(dev);
-               u8 lpbc;
+               u8 lbpc;
 
-               lpbc = level * 0xfe / max + 1;
-               level /= lpbc;
-               pci_write_config_byte(dev->pdev, PCI_LBPC, lpbc);
+               lbpc = level * 0xfe / max + 1;
+               level /= lbpc;
+               pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc);
        }
 
        tmp = I915_READ(BLC_PWM_CTL);
@@ -278,6 +281,6 @@ void intel_panel_setup_backlight(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
 
-       dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
+       dev_priv->backlight_level = intel_panel_get_backlight(dev);
        dev_priv->backlight_enabled = dev_priv->backlight_level != 0;
 }