lkml.org 
[lkml]   [2012]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 21/42] drm/i915: quirk away broken OpRegion VBT
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Daniel Vetter <daniel.vetter@ffwll.ch>

    commit 25e341cfc33d94435472983825163e97fe370a6c upstream.

    Somehow the BIOS manages to screw things up when copying the VBT
    around, because the one we scrap from the VBIOS rom actually works.

    Tested-by: Markus Heinz <markus.heinz@uni-dortmund.de>
    Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=28812
    Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/i915/intel_bios.c | 23 ++++++++++++++++++++++-
    1 file changed, 22 insertions(+), 1 deletion(-)

    --- a/drivers/gpu/drm/i915/intel_bios.c
    +++ b/drivers/gpu/drm/i915/intel_bios.c
    @@ -24,6 +24,7 @@
    * Eric Anholt <eric@anholt.net>
    *
    */
    +#include <linux/dmi.h>
    #include <drm/drm_dp_helper.h>
    #include "drmP.h"
    #include "drm.h"
    @@ -592,6 +593,26 @@ init_vbt_defaults(struct drm_i915_privat
    dev_priv->edp.bpp = 18;
    }

    +static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id)
    +{
    + DRM_DEBUG_KMS("Falling back to manually reading VBT from "
    + "VBIOS ROM for %s\n",
    + id->ident);
    + return 1;
    +}
    +
    +static const struct dmi_system_id intel_no_opregion_vbt[] = {
    + {
    + .callback = intel_no_opregion_vbt_callback,
    + .ident = "ThinkCentre A57",
    + .matches = {
    + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
    + DMI_MATCH(DMI_PRODUCT_NAME, "97027RG"),
    + },
    + },
    + { }
    +};
    +
    /**
    * intel_parse_bios - find VBT and initialize settings from the BIOS
    * @dev: DRM device
    @@ -612,7 +633,7 @@ intel_parse_bios(struct drm_device *dev)
    init_vbt_defaults(dev_priv);

    /* XXX Should this validation be moved to intel_opregion.c? */
    - if (dev_priv->opregion.vbt) {
    + if (!dmi_check_system(intel_no_opregion_vbt) && dev_priv->opregion.vbt) {
    struct vbt_header *vbt = dev_priv->opregion.vbt;
    if (memcmp(vbt->signature, "$VBT", 4) == 0) {
    DRM_DEBUG_DRIVER("Using VBT from OpRegion: %20s\n",



    \
     
     \ /
      Last update: 2012-04-12 01:31    [W:0.028 / U:0.012 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site