> @ mtrr_found @ > expression index, base, size; > @@ > > -index = mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1); > +index = arch_phys_wc_add(base, size); > > @ mtrr_rm depends on mtrr_found @ > expression mtrr_found.index, mtrr_found.base, mtrr_found.size; > @@ > > -mtrr_del(index, base, size); > +arch_phys_wc_del(index); > > @ mtrr_rm_zero_arg depends on mtrr_found @ > expression mtrr_found.index; > @@ > > -mtrr_del(index, 0, 0); > +arch_phys_wc_del(index); > > @ mtrr_rm_fb_info depends on mtrr_found @ > struct fb_info *info; Is this specific to the fb_info type? julia > expression mtrr_found.index; > @@ > > -mtrr_del(index, info->fix.smem_start, info->fix.smem_len); > +arch_phys_wc_del(index); > > @ ioremap_replace_nocache depends on mtrr_found @ > struct fb_info *info; > expression base, size; > @@ > > -info->screen_base = ioremap_nocache(base, size); > +info->screen_base = ioremap_wc(base, size); > > @ ioremap_replace_default depends on mtrr_found @ > struct fb_info *info; > expression base, size; > @@ > > -info->screen_base = ioremap(base, size); > +info->screen_base = ioremap_wc(base, size); > > Generated-by: Coccinelle SmPL > > Cc: Jean-Christophe Plagniol-Villard <plagnioj@xxxxxxxxxxxx> > Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > Cc: Rob Clark <robdclark@xxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> > Cc: Julia Lawall <Julia.Lawall@xxxxxxx> > Cc: Mikulas Patocka <mpatocka@xxxxxxxxxx> > Cc: Suresh Siddha <sbsiddha@xxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Juergen Gross <jgross@xxxxxxxx> > Cc: Andy Lutomirski <luto@xxxxxxxxxxxxxx> > Cc: Dave Airlie <airlied@xxxxxxxxxx> > Cc: Antonino Daplas <adaplas@xxxxxxxxx> > Cc: linux-fbdev@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxx> > --- > drivers/video/fbdev/matrox/matroxfb_base.c | 36 +++++++++++------------------- > drivers/video/fbdev/matrox/matroxfb_base.h | 27 +--------------------- > 2 files changed, 14 insertions(+), 49 deletions(-) > > diff --git a/drivers/video/fbdev/matrox/matroxfb_base.c b/drivers/video/fbdev/matrox/matroxfb_base.c > index 62539ca..2f70365 100644 > --- a/drivers/video/fbdev/matrox/matroxfb_base.c > +++ b/drivers/video/fbdev/matrox/matroxfb_base.c > @@ -370,12 +370,9 @@ static void matroxfb_remove(struct matrox_fb_info *minfo, int dummy) > matroxfb_unregister_device(minfo); > unregister_framebuffer(&minfo->fbcon); > matroxfb_g450_shutdown(minfo); > -#ifdef CONFIG_MTRR > - if (minfo->mtrr.vram_valid) > - mtrr_del(minfo->mtrr.vram, minfo->video.base, minfo->video.len); > -#endif > - mga_iounmap(minfo->mmio.vbase); > - mga_iounmap(minfo->video.vbase); > + arch_phys_wc_del(minfo->wc_cookie); > + iounmap(minfo->mmio.vbase.vaddr); > + iounmap(minfo->video.vbase.vaddr); > release_mem_region(minfo->video.base, minfo->video.len_maximum); > release_mem_region(minfo->mmio.base, 16384); > kfree(minfo); > @@ -1256,9 +1253,7 @@ static int nobios; /* "matroxfb:nobios" */ > static int noinit = 1; /* "matroxfb:init" */ > static int inverse; /* "matroxfb:inverse" */ > static int sgram; /* "matroxfb:sgram" */ > -#ifdef CONFIG_MTRR > static int mtrr = 1; /* "matroxfb:nomtrr" */ > -#endif > static int grayscale; /* "matroxfb:grayscale" */ > static int dev = -1; /* "matroxfb:dev:xxxxx" */ > static unsigned int vesa = ~0; /* "matroxfb:vesa:xxxxx" */ > @@ -1717,14 +1712,17 @@ static int initMatrox2(struct matrox_fb_info *minfo, struct board *b) > if (mem && (mem < memsize)) > memsize = mem; > err = -ENOMEM; > - if (mga_ioremap(ctrlptr_phys, 16384, MGA_IOREMAP_MMIO, &minfo->mmio.vbase)) { > + > + minfo->mmio.vbase.vaddr = ioremap_nocache(ctrlptr_phys, 16384); > + if (!minfo->mmio.vbase.vaddr) { > printk(KERN_ERR "matroxfb: cannot ioremap(%lX, 16384), matroxfb disabled\n", ctrlptr_phys); > goto failVideoMR; > } > minfo->mmio.base = ctrlptr_phys; > minfo->mmio.len = 16384; > minfo->video.base = video_base_phys; > - if (mga_ioremap(video_base_phys, memsize, MGA_IOREMAP_FB, &minfo->video.vbase)) { > + minfo->video.vbase.vaddr = ioremap_wc(video_base_phys, memsize); > + if (!minfo->video.vbase.vaddr) { > printk(KERN_ERR "matroxfb: cannot ioremap(%lX, %d), matroxfb disabled\n", > video_base_phys, memsize); > goto failCtrlIO; > @@ -1772,13 +1770,9 @@ static int initMatrox2(struct matrox_fb_info *minfo, struct board *b) > minfo->video.len_usable = minfo->video.len; > if (minfo->video.len_usable > b->base->maxdisplayable) > minfo->video.len_usable = b->base->maxdisplayable; > -#ifdef CONFIG_MTRR > - if (mtrr) { > - minfo->mtrr.vram = mtrr_add(video_base_phys, minfo->video.len, MTRR_TYPE_WRCOMB, 1); > - minfo->mtrr.vram_valid = 1; > - printk(KERN_INFO "matroxfb: MTRR's turned on\n"); > - } > -#endif /* CONFIG_MTRR */ > + if (mtrr) > + minfo->wc_cookie = arch_phys_wc_add(video_base_phys, > + minfo->video.len); > > if (!minfo->devflags.novga) > request_region(0x3C0, 32, "matrox"); > @@ -1947,9 +1941,9 @@ static int initMatrox2(struct matrox_fb_info *minfo, struct board *b) > return 0; > failVideoIO:; > matroxfb_g450_shutdown(minfo); > - mga_iounmap(minfo->video.vbase); > + iounmap(minfo->video.vbase.vaddr); > failCtrlIO:; > - mga_iounmap(minfo->mmio.vbase); > + iounmap(minfo->mmio.vbase.vaddr); > failVideoMR:; > release_mem_region(video_base_phys, minfo->video.len_maximum); > failCtrlMR:; > @@ -2443,10 +2437,8 @@ static int __init matroxfb_setup(char *options) { > nobios = !value; > else if (!strcmp(this_opt, "init")) > noinit = !value; > -#ifdef CONFIG_MTRR > else if (!strcmp(this_opt, "mtrr")) > mtrr = value; > -#endif > else if (!strcmp(this_opt, "inv24")) > inv24 = value; > else if (!strcmp(this_opt, "cross4MB")) > @@ -2515,10 +2507,8 @@ module_param(noinit, int, 0); > MODULE_PARM_DESC(noinit, "Disables W/SG/SD-RAM and bus interface initialization (0 or 1=do not initialize) (default=0)"); > module_param(memtype, int, 0); > MODULE_PARM_DESC(memtype, "Memory type for G200/G400 (see Documentation/fb/matroxfb.txt for explanation) (default=3 for G200, 0 for G400)"); > -#ifdef CONFIG_MTRR > module_param(mtrr, int, 0); > MODULE_PARM_DESC(mtrr, "This speeds up video memory accesses (0=disabled or 1) (default=1)"); > -#endif > module_param(sgram, int, 0); > MODULE_PARM_DESC(sgram, "Indicates that G100/G200/G400 has SGRAM memory (0=SDRAM, 1=SGRAM) (default=0)"); > module_param(inv24, int, 0); > diff --git a/drivers/video/fbdev/matrox/matroxfb_base.h b/drivers/video/fbdev/matrox/matroxfb_base.h > index 89a8a89a..09b02cd 100644 > --- a/drivers/video/fbdev/matrox/matroxfb_base.h > +++ b/drivers/video/fbdev/matrox/matroxfb_base.h > @@ -44,9 +44,6 @@ > > #include <asm/io.h> > #include <asm/unaligned.h> > -#ifdef CONFIG_MTRR > -#include <asm/mtrr.h> > -#endif > > #if defined(CONFIG_PPC_PMAC) > #include <asm/prom.h> > @@ -187,23 +184,6 @@ static inline void __iomem* vaddr_va(vaddr_t va) { > return va.vaddr; > } > > -#define MGA_IOREMAP_NORMAL 0 > -#define MGA_IOREMAP_NOCACHE 1 > - > -#define MGA_IOREMAP_FB MGA_IOREMAP_NOCACHE > -#define MGA_IOREMAP_MMIO MGA_IOREMAP_NOCACHE > -static inline int mga_ioremap(unsigned long phys, unsigned long size, int flags, vaddr_t* virt) { > - if (flags & MGA_IOREMAP_NOCACHE) > - virt->vaddr = ioremap_nocache(phys, size); > - else > - virt->vaddr = ioremap(phys, size); > - return (virt->vaddr == NULL); /* 0, !0... 0, error_code in future */ > -} > - > -static inline void mga_iounmap(vaddr_t va) { > - iounmap(va.vaddr); > -} > - > struct my_timming { > unsigned int pixclock; > int mnp; > @@ -449,12 +429,7 @@ struct matrox_fb_info { > int plnwt; > int srcorg; > } capable; > -#ifdef CONFIG_MTRR > - struct { > - int vram; > - int vram_valid; > - } mtrr; > -#endif > + int wc_cookie; > struct { > int precise_width; > int mga_24bpp_fix; > -- > 2.3.2.209.gd67f9d5.dirty > > -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html