diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/fbdev/gbefb.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c index 4e54faa06..b63d55f 100644 --- a/drivers/video/fbdev/gbefb.c +++ b/drivers/video/fbdev/gbefb.c @@ -22,9 +22,6 @@ #include <linux/module.h> #include <linux/io.h> -#ifdef CONFIG_X86 -#include <asm/mtrr.h> -#endif #ifdef CONFIG_MIPS #include <asm/addrspace.h> #endif @@ -1176,8 +1173,8 @@ static int gbefb_probe(struct platform_device *p_dev) if (gbe_mem_phys) { /* memory was allocated at boot time */ - gbe_mem = devm_ioremap_nocache(&p_dev->dev, gbe_mem_phys, - gbe_mem_size); + gbe_mem = devm_ioremap_wc(&p_dev->dev, gbe_mem_phys, + gbe_mem_size); if (!gbe_mem) { printk(KERN_ERR "gbefb: couldn't map framebuffer\n"); ret = -ENOMEM; @@ -1188,8 +1185,8 @@ static int gbefb_probe(struct platform_device *p_dev) } else { /* try to allocate memory with the classical allocator * this has high chance to fail on low memory machines */ - gbe_mem = dma_alloc_coherent(NULL, gbe_mem_size, &gbe_dma_addr, - GFP_KERNEL); + gbe_mem = dma_alloc_writecombine(NULL, gbe_mem_size, + &gbe_dma_addr, GFP_KERNEL); if (!gbe_mem) { printk(KERN_ERR "gbefb: couldn't allocate framebuffer memory\n"); ret = -ENOMEM; @@ -1200,10 +1197,7 @@ static int gbefb_probe(struct platform_device *p_dev) } par = info->par; -#ifdef CONFIG_X86 - par->wc_cookie = mtrr_add(gbe_mem_phys, gbe_mem_size, - MTRR_TYPE_WRCOMB, 1); -#endif + par->wc_cookie = arch_phys_wc_add(gbe_mem_phys, gbe_mem_size); /* map framebuffer memory into tiles table */ for (i = 0; i < (gbe_mem_size >> TILE_SHIFT); i++) @@ -1242,12 +1236,9 @@ static int gbefb_probe(struct platform_device *p_dev) return 0; out_gbe_unmap: -#ifdef CONFIG_MTRR - if (par->wc_cookie >= 0) - mtrr_del(par->wc_cookie, 0, 0); -#endif + arch_phys_wc_del(par->wc_cookie); if (gbe_dma_addr) - dma_free_coherent(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys); + dma_free_writecombine(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys); out_tiles_free: dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t), (void *)gbe_tiles.cpu, gbe_tiles.dma); @@ -1266,12 +1257,9 @@ static int gbefb_remove(struct platform_device* p_dev) unregister_framebuffer(info); gbe_turn_off(); -#ifdef CONFIG_MTRR - if (par->wc_cookie >= 0) - mtrr_del(par->wc_cookie, 0, 0); -#endif + arch_phys_wc_del(par->wc_cookie); if (gbe_dma_addr) - dma_free_coherent(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys); + dma_free_writecombine(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys); dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t), (void *)gbe_tiles.cpu, gbe_tiles.dma); release_mem_region(GBE_BASE, sizeof(struct sgi_gbe)); |