aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-12-05 21:56:44 -0500
committerDave Airlie <airlied@redhat.com>2011-01-04 22:43:32 -0500
commitd1fbd923da0f982f12b61a44e74c2e1f74c6ef56 (patch)
tree00f63b4834e43db75044c51db366cb59076357b4
parent5ccb377feaaff3daa1e9a179534bbd7550d78af6 (diff)
nouveau/acpi: improve detection of what is IGD and what is DIS.
This improves the IGD/DIS picking using firstly if Intel, then if the bus is bus 0. There may be a correct way to do this, but I've no idea what it is. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_acpi.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
index 119152606e4c..a54238058dc5 100644
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
@@ -130,10 +130,15 @@ static int nouveau_dsm_init(void)
130 130
131static int nouveau_dsm_get_client_id(struct pci_dev *pdev) 131static int nouveau_dsm_get_client_id(struct pci_dev *pdev)
132{ 132{
133 if (nouveau_dsm_priv.dhandle == DEVICE_ACPI_HANDLE(&pdev->dev)) 133 /* easy option one - intel vendor ID means Integrated */
134 if (pdev->vendor == PCI_VENDOR_ID_INTEL)
134 return VGA_SWITCHEROO_IGD; 135 return VGA_SWITCHEROO_IGD;
135 else 136
136 return VGA_SWITCHEROO_DIS; 137 /* is this device on Bus 0? - this may need improving */
138 if (pdev->bus->number == 0)
139 return VGA_SWITCHEROO_IGD;
140
141 return VGA_SWITCHEROO_DIS;
137} 142}
138 143
139static struct vga_switcheroo_handler nouveau_dsm_handler = { 144static struct vga_switcheroo_handler nouveau_dsm_handler = {