diff --git a/drivers/video/fbdev/i810/i810.h b/drivers/video/fbdev/i810/i810.h index 1414b73ac55b..7b1c002bfb08 100644 --- a/drivers/video/fbdev/i810/i810.h +++ b/drivers/video/fbdev/i810/i810.h @@ -199,7 +199,6 @@ #define HAS_FONTCACHE 8 /* driver flags */ -#define HAS_MTRR 1 #define HAS_ACCELERATION 2 #define ALWAYS_SYNC 4 #define LOCKUP 8 @@ -281,7 +280,7 @@ struct i810fb_par { u32 ovract; u32 cur_state; u32 ddc_num; - int mtrr_reg; + int wc_cookie; u16 bltcntl; u8 interlace; }; diff --git a/drivers/video/fbdev/i810/i810_main.c b/drivers/video/fbdev/i810/i810_main.c index bb674e431741..025b882a4826 100644 --- a/drivers/video/fbdev/i810/i810_main.c +++ b/drivers/video/fbdev/i810/i810_main.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include @@ -1816,7 +1817,9 @@ static void i810_init_device(struct i810fb_par *par) u8 reg; u8 __iomem *mmio = par->mmio_start_virtual; - if (mtrr) set_mtrr(par); + if (mtrr) + par->wc_cookie= arch_phys_wc_add((u32) par->aperture.physical, + par->aperture.size); i810_init_cursor(par); @@ -1865,8 +1868,8 @@ static int i810_allocate_pci_resource(struct i810fb_par *par, } par->res_flags |= FRAMEBUFFER_REQ; - par->aperture.virtual = ioremap_nocache(par->aperture.physical, - par->aperture.size); + par->aperture.virtual = ioremap_wc(par->aperture.physical, + par->aperture.size); if (!par->aperture.virtual) { printk("i810fb_init: cannot remap framebuffer region\n"); return -ENODEV; @@ -2096,7 +2099,7 @@ static void i810fb_release_resource(struct fb_info *info, struct i810fb_par *par) { struct gtt_data *gtt = &par->i810_gtt; - unset_mtrr(par); + arch_phys_wc_del(par->wc_cookie); i810_delete_i2c_busses(par); diff --git a/drivers/video/fbdev/i810/i810_main.h b/drivers/video/fbdev/i810/i810_main.h index a25afaa534ba..7bfaaad1d0fa 100644 --- a/drivers/video/fbdev/i810/i810_main.h +++ b/drivers/video/fbdev/i810/i810_main.h @@ -60,32 +60,6 @@ static inline void flush_cache(void) #define flush_cache() do { } while(0) #endif -#ifdef CONFIG_MTRR - -#include - -static inline void set_mtrr(struct i810fb_par *par) -{ - par->mtrr_reg = mtrr_add((u32) par->aperture.physical, - par->aperture.size, MTRR_TYPE_WRCOMB, 1); - if (par->mtrr_reg < 0) { - printk(KERN_ERR "set_mtrr: unable to set MTRR\n"); - return; - } - par->dev_flags |= HAS_MTRR; -} -static inline void unset_mtrr(struct i810fb_par *par) -{ - if (par->dev_flags & HAS_MTRR) - mtrr_del(par->mtrr_reg, (u32) par->aperture.physical, - par->aperture.size); -} -#else -#define set_mtrr(x) printk("set_mtrr: MTRR is disabled in the kernel\n") - -#define unset_mtrr(x) do { } while (0) -#endif /* CONFIG_MTRR */ - #ifdef CONFIG_FB_I810_GTF #define IS_DVT (0) #else