drm/nouveau: remove legacy vbios type detection
authorBen Skeggs <bskeggs@redhat.com>
Thu, 6 Dec 2012 05:32:56 +0000 (15:32 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 20 Feb 2013 06:00:26 +0000 (16:00 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_bios.c

index 865eddfa30a73faee6f985b0d7176ceefa7e48f9..9a69e0b131bf1ac0de7766239b7d627f56fa81ff 100644 (file)
@@ -2052,45 +2052,27 @@ uint8_t *nouveau_bios_embedded_edid(struct drm_device *dev)
 static bool NVInitVBIOS(struct drm_device *dev)
 {
        struct nouveau_drm *drm = nouveau_drm(dev);
-       struct nvbios *bios = &drm->vbios;
-
-       memset(bios, 0, sizeof(struct nvbios));
-       spin_lock_init(&bios->lock);
-       bios->dev = dev;
-
-       bios->data = nouveau_bios(drm->device)->data;
-       bios->length = nouveau_bios(drm->device)->size;
-       return true;
-}
+       struct nouveau_bios *bios = nouveau_bios(drm->device);
+       struct nvbios *legacy = &drm->vbios;
+
+       memset(legacy, 0, sizeof(struct nvbios));
+       spin_lock_init(&legacy->lock);
+       legacy->dev = dev;
+
+       legacy->data = bios->data;
+       legacy->length = bios->size;
+       if (bios->bit_offset) {
+               legacy->type = NVBIOS_BIT;
+               legacy->offset = bios->bit_offset;
+               return !parse_bit_structure(legacy, legacy->offset + 6);
+       } else
+       if (bios->bmp_offset) {
+               legacy->type = NVBIOS_BMP;
+               legacy->offset = bios->bmp_offset;
+               return !parse_bmp_structure(dev, legacy, legacy->offset);
+       }
 
-static int nouveau_parse_vbios_struct(struct drm_device *dev)
-{
-       struct nouveau_drm *drm = nouveau_drm(dev);
-       struct nvbios *bios = &drm->vbios;
-       const uint8_t bit_signature[] = { 0xff, 0xb8, 'B', 'I', 'T' };
-       const uint8_t bmp_signature[] = { 0xff, 0x7f, 'N', 'V', 0x0 };
-       int offset;
-
-       offset = findstr(bios->data, bios->length,
-                                       bit_signature, sizeof(bit_signature));
-       if (offset) {
-               NV_INFO(drm, "BIT BIOS found\n");
-               bios->type = NVBIOS_BIT;
-               bios->offset = offset;
-               return parse_bit_structure(bios, offset + 6);
-       }
-
-       offset = findstr(bios->data, bios->length,
-                                       bmp_signature, sizeof(bmp_signature));
-       if (offset) {
-               NV_INFO(drm, "BMP BIOS found\n");
-               bios->type = NVBIOS_BMP;
-               bios->offset = offset;
-               return parse_bmp_structure(dev, bios, offset);
-       }
-
-       NV_ERROR(drm, "No known BIOS signature found\n");
-       return -ENODEV;
+       return false;
 }
 
 int
@@ -2146,10 +2128,6 @@ nouveau_bios_init(struct drm_device *dev)
        if (!NVInitVBIOS(dev))
                return -ENODEV;
 
-       ret = nouveau_parse_vbios_struct(dev);
-       if (ret)
-               return ret;
-
        ret = parse_dcb_table(dev, bios);
        if (ret)
                return ret;