diff options
Diffstat (limited to 'drivers/video/gbefb.c')
| -rw-r--r-- | drivers/video/gbefb.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/video/gbefb.c b/drivers/video/gbefb.c index d3c1922cb1..485604cd44 100644 --- a/drivers/video/gbefb.c +++ b/drivers/video/gbefb.c | |||
| @@ -1126,7 +1126,7 @@ static int __init gbefb_probe(struct device *dev) | |||
| 1126 | gbefb_setup(options); | 1126 | gbefb_setup(options); |
| 1127 | #endif | 1127 | #endif |
| 1128 | 1128 | ||
| 1129 | if (!request_mem_region(GBE_BASE, sizeof(struct sgi_gbe), "GBE")) { | 1129 | if (!request_region(GBE_BASE, sizeof(struct sgi_gbe), "GBE")) { |
| 1130 | printk(KERN_ERR "gbefb: couldn't reserve mmio region\n"); | 1130 | printk(KERN_ERR "gbefb: couldn't reserve mmio region\n"); |
| 1131 | ret = -EBUSY; | 1131 | ret = -EBUSY; |
| 1132 | goto out_release_framebuffer; | 1132 | goto out_release_framebuffer; |
| @@ -1152,12 +1152,24 @@ static int __init gbefb_probe(struct device *dev) | |||
| 1152 | if (gbe_mem_phys) { | 1152 | if (gbe_mem_phys) { |
| 1153 | /* memory was allocated at boot time */ | 1153 | /* memory was allocated at boot time */ |
| 1154 | gbe_mem = ioremap_nocache(gbe_mem_phys, gbe_mem_size); | 1154 | gbe_mem = ioremap_nocache(gbe_mem_phys, gbe_mem_size); |
| 1155 | if (!gbe_mem) { | ||
| 1156 | printk(KERN_ERR "gbefb: couldn't map framebuffer\n"); | ||
| 1157 | ret = -ENOMEM; | ||
| 1158 | goto out_tiles_free; | ||
| 1159 | } | ||
| 1160 | |||
| 1155 | gbe_dma_addr = 0; | 1161 | gbe_dma_addr = 0; |
| 1156 | } else { | 1162 | } else { |
| 1157 | /* try to allocate memory with the classical allocator | 1163 | /* try to allocate memory with the classical allocator |
| 1158 | * this has high chance to fail on low memory machines */ | 1164 | * this has high chance to fail on low memory machines */ |
| 1159 | gbe_mem = dma_alloc_coherent(NULL, gbe_mem_size, &gbe_dma_addr, | 1165 | gbe_mem = dma_alloc_coherent(NULL, gbe_mem_size, &gbe_dma_addr, |
| 1160 | GFP_KERNEL); | 1166 | GFP_KERNEL); |
| 1167 | if (!gbe_mem) { | ||
| 1168 | printk(KERN_ERR "gbefb: couldn't allocate framebuffer memory\n"); | ||
| 1169 | ret = -ENOMEM; | ||
| 1170 | goto out_tiles_free; | ||
| 1171 | } | ||
| 1172 | |||
| 1161 | gbe_mem_phys = (unsigned long) gbe_dma_addr; | 1173 | gbe_mem_phys = (unsigned long) gbe_dma_addr; |
| 1162 | } | 1174 | } |
| 1163 | 1175 | ||
| @@ -1165,12 +1177,6 @@ static int __init gbefb_probe(struct device *dev) | |||
| 1165 | mtrr_add(gbe_mem_phys, gbe_mem_size, MTRR_TYPE_WRCOMB, 1); | 1177 | mtrr_add(gbe_mem_phys, gbe_mem_size, MTRR_TYPE_WRCOMB, 1); |
| 1166 | #endif | 1178 | #endif |
| 1167 | 1179 | ||
| 1168 | if (!gbe_mem) { | ||
| 1169 | printk(KERN_ERR "gbefb: couldn't map framebuffer\n"); | ||
| 1170 | ret = -ENXIO; | ||
| 1171 | goto out_tiles_free; | ||
| 1172 | } | ||
| 1173 | |||
| 1174 | /* map framebuffer memory into tiles table */ | 1180 | /* map framebuffer memory into tiles table */ |
| 1175 | for (i = 0; i < (gbe_mem_size >> TILE_SHIFT); i++) | 1181 | for (i = 0; i < (gbe_mem_size >> TILE_SHIFT); i++) |
| 1176 | gbe_tiles.cpu[i] = (gbe_mem_phys >> TILE_SHIFT) + i; | 1182 | gbe_tiles.cpu[i] = (gbe_mem_phys >> TILE_SHIFT) + i; |
