|
@@ -577,7 +577,7 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * intel_init_bios - initialize VBIOS settings & find VBT
|
|
|
+ * intel_parse_bios - find VBT and initialize settings from the BIOS
|
|
|
* @dev: DRM device
|
|
|
*
|
|
|
* Loads the Video BIOS and checks that the VBT exists. Sets scratch registers
|
|
@@ -586,7 +586,7 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)
|
|
|
* Returns 0 on success, nonzero on failure.
|
|
|
*/
|
|
|
bool
|
|
|
-intel_init_bios(struct drm_device *dev)
|
|
|
+intel_parse_bios(struct drm_device *dev)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
|
struct pci_dev *pdev = dev->pdev;
|
|
@@ -647,3 +647,20 @@ intel_init_bios(struct drm_device *dev)
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+/* Ensure that vital registers have been initialised, even if the BIOS
|
|
|
+ * is absent or just failing to do its job.
|
|
|
+ */
|
|
|
+void intel_setup_bios(struct drm_device *dev)
|
|
|
+{
|
|
|
+ struct drm_i915_private *dev_priv = dev->dev_private;
|
|
|
+
|
|
|
+ /* Set the Panel Power On/Off timings if uninitialized. */
|
|
|
+ if ((I915_READ(PP_ON_DELAYS) == 0) && (I915_READ(PP_OFF_DELAYS) == 0)) {
|
|
|
+ /* Set T2 to 40ms and T5 to 200ms */
|
|
|
+ I915_WRITE(PP_ON_DELAYS, 0x019007d0);
|
|
|
+
|
|
|
+ /* Set T3 to 35ms and Tx to 200ms */
|
|
|
+ I915_WRITE(PP_OFF_DELAYS, 0x015e07d0);
|
|
|
+ }
|
|
|
+}
|