]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/gpu/drm/nouveau/nouveau_bios.c
drm/nouveau: Don't try to parse a GPIO table on early DCBv2.2 BIOSes.
[mv-sheeva.git] / drivers / gpu / drm / nouveau / nouveau_bios.c
index 7b7b1e27ed0b9a694f977abd389525bdd7a5fc8d..8fc2ba164ef2c7f302de5574b6d2cb1eda4913f9 100644 (file)
@@ -5809,7 +5809,7 @@ parse_dcb_gpio_table(struct nvbios *bios)
                entries   = gpio[2];
                recordlen = gpio[3];
        } else
-       if (dcb[0] >= 0x22) {
+       if (dcb[0] >= 0x22 && dcb[-1] >= 0x13) {
                gpio = ROMPTR(bios, dcb[-15]);
                if (!gpio)
                        goto no_table;
@@ -5817,6 +5817,19 @@ parse_dcb_gpio_table(struct nvbios *bios)
                headerlen = 3;
                entries   = gpio[2];
                recordlen = gpio[1];
+       } else
+       if (dcb[0] >= 0x22) {
+               /* No GPIO table present, parse the TVDAC GPIO data. */
+               uint8_t *tvdac_gpio = &dcb[-5];
+
+               if (tvdac_gpio[0] & 1) {
+                       e = new_gpio_entry(bios);
+                       e->tag = DCB_GPIO_TVDAC0;
+                       e->line = tvdac_gpio[1] >> 4;
+                       e->invert = tvdac_gpio[0] & 2;
+               }
+
+               goto no_table;
        } else {
                NV_DEBUG(dev, "no/unknown gpio table on DCB 0x%02x\n", dcb[0]);
                goto no_table;