diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2012-12-06 00:32:56 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-02-20 01:00:26 -0500 |
commit | e84e4b67ddd6fcbfe5ab39c7aed1d490a8c6283c (patch) | |
tree | 8dca768aa070dae2ec4c800fa87acbbe5de6ed7e /drivers/gpu/drm/nouveau | |
parent | 5e90a88cb37b665cc0609f1236d6099421139449 (diff) |
drm/nouveau: remove legacy vbios type detection
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bios.c | 62 |
1 files changed, 20 insertions, 42 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index 865eddfa30a7..9a69e0b131bf 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | |||
@@ -2052,45 +2052,27 @@ uint8_t *nouveau_bios_embedded_edid(struct drm_device *dev) | |||
2052 | static bool NVInitVBIOS(struct drm_device *dev) | 2052 | static bool NVInitVBIOS(struct drm_device *dev) |
2053 | { | 2053 | { |
2054 | struct nouveau_drm *drm = nouveau_drm(dev); | 2054 | struct nouveau_drm *drm = nouveau_drm(dev); |
2055 | struct nvbios *bios = &drm->vbios; | 2055 | struct nouveau_bios *bios = nouveau_bios(drm->device); |
2056 | 2056 | struct nvbios *legacy = &drm->vbios; | |
2057 | memset(bios, 0, sizeof(struct nvbios)); | 2057 | |
2058 | spin_lock_init(&bios->lock); | 2058 | memset(legacy, 0, sizeof(struct nvbios)); |
2059 | bios->dev = dev; | 2059 | spin_lock_init(&legacy->lock); |
2060 | 2060 | legacy->dev = dev; | |
2061 | bios->data = nouveau_bios(drm->device)->data; | 2061 | |
2062 | bios->length = nouveau_bios(drm->device)->size; | 2062 | legacy->data = bios->data; |
2063 | return true; | 2063 | legacy->length = bios->size; |
2064 | } | 2064 | if (bios->bit_offset) { |
2065 | legacy->type = NVBIOS_BIT; | ||
2066 | legacy->offset = bios->bit_offset; | ||
2067 | return !parse_bit_structure(legacy, legacy->offset + 6); | ||
2068 | } else | ||
2069 | if (bios->bmp_offset) { | ||
2070 | legacy->type = NVBIOS_BMP; | ||
2071 | legacy->offset = bios->bmp_offset; | ||
2072 | return !parse_bmp_structure(dev, legacy, legacy->offset); | ||
2073 | } | ||
2065 | 2074 | ||
2066 | static int nouveau_parse_vbios_struct(struct drm_device *dev) | 2075 | return false; |
2067 | { | ||
2068 | struct nouveau_drm *drm = nouveau_drm(dev); | ||
2069 | struct nvbios *bios = &drm->vbios; | ||
2070 | const uint8_t bit_signature[] = { 0xff, 0xb8, 'B', 'I', 'T' }; | ||
2071 | const uint8_t bmp_signature[] = { 0xff, 0x7f, 'N', 'V', 0x0 }; | ||
2072 | int offset; | ||
2073 | |||
2074 | offset = findstr(bios->data, bios->length, | ||
2075 | bit_signature, sizeof(bit_signature)); | ||
2076 | if (offset) { | ||
2077 | NV_INFO(drm, "BIT BIOS found\n"); | ||
2078 | bios->type = NVBIOS_BIT; | ||
2079 | bios->offset = offset; | ||
2080 | return parse_bit_structure(bios, offset + 6); | ||
2081 | } | ||
2082 | |||
2083 | offset = findstr(bios->data, bios->length, | ||
2084 | bmp_signature, sizeof(bmp_signature)); | ||
2085 | if (offset) { | ||
2086 | NV_INFO(drm, "BMP BIOS found\n"); | ||
2087 | bios->type = NVBIOS_BMP; | ||
2088 | bios->offset = offset; | ||
2089 | return parse_bmp_structure(dev, bios, offset); | ||
2090 | } | ||
2091 | |||
2092 | NV_ERROR(drm, "No known BIOS signature found\n"); | ||
2093 | return -ENODEV; | ||
2094 | } | 2076 | } |
2095 | 2077 | ||
2096 | int | 2078 | int |
@@ -2146,10 +2128,6 @@ nouveau_bios_init(struct drm_device *dev) | |||
2146 | if (!NVInitVBIOS(dev)) | 2128 | if (!NVInitVBIOS(dev)) |
2147 | return -ENODEV; | 2129 | return -ENODEV; |
2148 | 2130 | ||
2149 | ret = nouveau_parse_vbios_struct(dev); | ||
2150 | if (ret) | ||
2151 | return ret; | ||
2152 | |||
2153 | ret = parse_dcb_table(dev, bios); | 2131 | ret = parse_dcb_table(dev, bios); |
2154 | if (ret) | 2132 | if (ret) |
2155 | return ret; | 2133 | return ret; |