Skip to content

Commit

Permalink
CHROMIUM: i915: Add DMI override to skip CRT initialization on ZGB
Browse files Browse the repository at this point in the history
This is the method used to override LVDS in intel_lvds and appears to be
an effective way to ensure that the driver does not enable VGA hotplug.

This is the same patch from 2.6.32 kernel in R12 but ported to 2.6.38,
will send upstream next.

Signed-off-by: Duncan Laurie <[email protected]>

BUG=chrome-os-partner:117
TEST=Check PORT_HOTPLUG_EN to see if hotplug interrupt is disabled.
Run the following command as root, specifically looking at bit 9:
mmio_read32 $[$(pci_read32 0 2 0 0x10) + 0x61110] = 0x00000000

Change-Id: Id8240f9fb31d058d8d79ee72f7b4615c43893f5a
Reviewed-on: http://gerrit.chromium.org/gerrit/1390
Reviewed-by: Olof Johansson <[email protected]>
Tested-by: Duncan Laurie <[email protected]>
Signed-off-by: Keith Packard <[email protected]>
  • Loading branch information
Duncan Laurie authored and keith-packard committed Jan 12, 2012
1 parent 07c1e8c commit 8ca4013
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions drivers/gpu/drm/i915/intel_crt.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
* Eric Anholt <[email protected]>
*/

#include <linux/dmi.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include "drmP.h"
Expand Down Expand Up @@ -540,13 +541,35 @@ static const struct drm_encoder_funcs intel_crt_enc_funcs = {
.destroy = intel_encoder_destroy,
};

static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id)
{
DRM_DEBUG_KMS("Skipping CRT initialization for %s\n", id->ident);
return 1;
}

static const struct dmi_system_id intel_no_crt[] = {
{
.callback = intel_no_crt_dmi_callback,
.ident = "ACER ZGB",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ACER"),
DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"),
},
},
{ }
};

void intel_crt_init(struct drm_device *dev)
{
struct drm_connector *connector;
struct intel_crt *crt;
struct intel_connector *intel_connector;
struct drm_i915_private *dev_priv = dev->dev_private;

/* Skip machines without VGA that falsely report hotplug events */
if (dmi_check_system(intel_no_crt))
return;

crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
if (!crt)
return;
Expand Down

0 comments on commit 8ca4013

Please sign in to comment.