linux/include/video
Luis R. Rodriguez 9e517ac88b drivers/video/fbdev/kyrofb: Use arch_phys_wc_add() and pci_ioremap_wc_bar()
Convert the driver from using the x86-specific MTRR code to the
architecture-agnostic arch_phys_wc_add(). It will avoid MTRR if
write-combining is available, in order to take advantage of that
also ensure the ioremapped area is requested as write-combining.

There are a few motivations for this:

a) Take advantage of PAT when available

b) Help bury MTRR code away, MTRR is architecture-specific and on
   x86 it is being replaced by PAT.

c) Help with the goal of eventually using _PAGE_CACHE_UC over
   _PAGE_CACHE_UC_MINUS on x86 on ioremap_nocache() (see commit
   de33c442e titled "x86 PAT: fix performance drop for glx,
   use UC minus for ioremap(), ioremap_nocache() and
   pci_mmap_page_range()")

The conversion done is expressed by the following Coccinelle
SmPL patch, it additionally required manual intervention to
address all the ifdeffery and removal of redundant things which
arch_phys_wc_add() already addresses such as verbose message
about when MTRR fails and doing nothing when we didn't get an
MTRR.

@ 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;
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);

Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Antonino Daplas <adaplas@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Jingoo Han <jg1.han@samsung.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suresh Siddha <sbsiddha@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: airlied@linux.ie
Cc: benh@kernel.crashing.org
Cc: bhelgaas@google.com
Cc: dan.j.williams@intel.com
Cc: konrad.wilk@oracle.com
Cc: linux-fbdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Cc: mst@redhat.com
Cc: toshi.kani@hp.com
Cc: vinod.koul@intel.com
Cc: xen-devel@lists.xensource.com
Link: http://lkml.kernel.org/r/1440443613-13696-4-git-send-email-mcgrof@do-not-panic.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-08-25 09:59:44 +02:00
..
Kbuild UAPI: (Scripted) Disintegrate include/video 2012-12-20 17:14:26 +00:00
atmel_lcdc.h video: atmel_lcdfb: pass the pdata as params 2013-09-27 09:26:20 +03:00
aty128.h atyfb: fix header file trailing whitespace 2009-04-01 08:59:26 -07:00
auo_k190xfb.h AUO-K190x: Add resolutions for portrait displays 2013-04-04 13:08:07 +03:00
broadsheetfb.h broadsheetfb: support storing waveform 2010-03-12 15:52:34 -08:00
cirrus.h cirrusfb: Laguna chipset 8bpp fix 2009-04-01 08:59:27 -07:00
cvisionppc.h
da8xx-fb.h video: da8xx-fb: improve readability of code 2013-08-09 14:02:42 +03:00
display_timing.h video: display_timing: add doubleclk flag 2013-06-03 18:42:32 +10:00
edid.h UAPI: (Scripted) Disintegrate include/video 2012-12-20 17:14:26 +00:00
exynos7_decon.h drm/exynos: Add DECON driver 2015-02-11 20:27:08 +09:00
exynos5433_decon.h drm/exynos: add Exynos5433 decon driver 2015-06-22 19:56:44 +09:00
exynos_mipi_dsim.h video: exynos_mipi_dsim: Use the generic PHY driver 2013-10-16 13:48:08 -07:00
gbe.h
hecubafb.h fbdev: platforming hecubafb and n411 2008-04-28 08:58:41 -07:00
iga.h
ili9320.h fb: add support for the ILI9320 video display controller 2008-07-24 10:47:40 -07:00
imx-ipu-v3.h drm/imx: consolidate bus format variable names 2015-03-31 11:59:34 +02:00
kyro.h drivers/video/fbdev/kyrofb: Use arch_phys_wc_add() and pci_ioremap_wc_bar() 2015-08-25 09:59:44 +02:00
mach64.h atyfb: fix CONFIG_ namespace violations 2009-02-05 12:56:48 -08:00
maxinefb.h
mbxfb.h
metronomefb.h [ARM] 5209/1: metronomefb: changes to use platform framebuffer 2008-08-26 17:01:12 +01:00
mipi_display.h fbdev: add a MIPI DSI header 2010-05-24 08:47:38 +09:00
mmp_disp.h video: mmp: add pitch info in mmp_win structure 2013-09-20 12:52:33 +03:00
neomagic.h video: fbdev: neofb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:49 +03:00
newport.h Merge branch 'master' into for-next 2011-04-26 10:22:59 +02:00
of_display_timing.h videomode: provide dummy inline functions for !CONFIG_OF 2014-10-07 09:31:45 +03:00
of_videomode.h video: add of helper for display timings/videomode 2013-01-24 09:03:48 +01:00
omap-panel-data.h omapdss: Add new panel driver for Topolly td028ttec1 LCD. 2013-10-31 12:30:36 +02:00
omapdss.h fbdev changes for v4.1 2015-04-20 15:16:25 -07:00
omapvrfb.h OMAPDSS: VRFB: add omap_vrfb_supported() 2012-10-17 12:17:18 +03:00
permedia2.h
platform_lcd.h drivers/video/backlight/platform_lcd.c: introduce probe callback 2013-04-29 18:28:18 -07:00
pm3fb.h
pmag-ba-fb.h
pmagb-b-fb.h
pxa168fb.h video: pxa168fb: Cleanup pxa168fb.h file 2014-01-17 10:57:43 +02:00
radeon.h atyfb: fix header file trailing whitespace 2009-04-01 08:59:26 -07:00
s1d13xxxfb.h s1d13xxxfb: drop unused code 2010-12-21 01:05:43 +09:00
sa1100fb.h FB: sa1100: remove global sa1100fb_.*_power function pointers 2012-02-21 11:56:19 +00:00
samsung_fimd.h drm/exynos: Enable DP clock to fix display on Exynos5250 and other 2015-04-13 11:39:42 +09:00
sh_mipi_dsi.h fbdev: sh_mipi_dsi: Remove the unused sh_mipi_dsi_info lcd_chan field 2012-11-21 15:50:01 +01:00
sh_mobile_hdmi.h fbdev: sh_mobile_hdmi: add HDMI Control Register support 2012-05-13 13:07:59 +00:00
sh_mobile_lcdc.h fbdev: sh_mobile_lcdc: Remove unused get_brightness pdata callback 2012-11-21 15:50:02 +01:00
sh_mobile_meram.h sh_mobile_meram: Add direct MERAM allocation API 2012-07-19 02:05:22 +02:00
sisfb.h UAPI: (Scripted) Disintegrate include/video 2012-12-20 17:14:26 +00:00
sstfb.h Fix common misspellings 2011-03-31 11:26:23 -03:00
tdfx.h video: fbdev: tdfxfb: use arch_phys_wc_add() and ioremap_wc() 2015-06-03 12:41:52 +03:00
tgafb.h
trident.h tridentfb: add imageblit acceleration for Blade3D family 2008-07-24 10:47:36 -07:00
udlfb.h udlfb: fix hcd_buffer_free panic on unplug/replug 2012-03-01 17:46:27 -08:00
uvesafb.h uvesafb: Clean up MTRR code 2013-05-31 13:37:36 +10:00
vga.h m68k/video: Create <asm/vga.h> 2012-04-22 20:16:50 +02:00
videomode.h videomode: videomode_from_timing work 2013-03-21 14:34:33 +02:00
w100fb.h