drm/nouveau: Workaround missing GPIO tables on an Apple iMac G4 NV18.
authorFrancisco Jerez <currojerez@riseup.net>
Sun, 15 Aug 2010 12:32:49 +0000 (14:32 +0200)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 17 Aug 2010 01:59:48 +0000 (11:59 +1000)
This should fix the reported TV-out load detection false positives
(fdo bug 29455).

Reported-by: Vlado Plaga <rechner@vlado-do.de>
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_bios.c

index 9e7fc1d0321c7c9d1aa78076bc24b4eb2f114e43..e144f7a38d8176e91f28b6f159863ccc6f007cdd 100644 (file)
@@ -5807,6 +5807,22 @@ parse_dcb_gpio_table(struct nvbios *bios)
                        gpio->line = tvdac_gpio[1] >> 4;
                        gpio->invert = tvdac_gpio[0] & 2;
                }
+       } else {
+               /*
+                * No systematic way to store GPIO info on pre-v2.2
+                * DCBs, try to match the PCI device IDs.
+                */
+
+               /* Apple iMac G4 NV18 */
+               if (dev->pdev->device == 0x0189 &&
+                   dev->pdev->subsystem_vendor == 0x10de &&
+                   dev->pdev->subsystem_device == 0x0010) {
+                       struct dcb_gpio_entry *gpio = new_gpio_entry(bios);
+
+                       gpio->tag = DCB_GPIO_TVDAC0;
+                       gpio->line = 4;
+               }
+
        }
 
        if (!gpio_table_ptr)