linux-kernel-test/drivers/video
Daniel Mack 364dbdf3b6 video: add driver for PXA3xx 2D graphics accelerator
This adds a driver for the the 2D graphics accelerator found on PXA3xx
processors. Only resource mapping, interrupt handling and a simple ioctl
handler is done by the kernel part, the rest of the logic is implemented
in DirectFB userspace.

Graphic applications greatly benefit for line drawing, blend, and
rectangle and triangle filling operations.

Benchmarks done on a PXA303 using the df_dok benchmarking tool follow,
where the value in square brackets show the CPU usage during that test.

Without accelerator (benchmarking 256x252 on 480x262 RGB16 (16bit)):

  Anti-aliased Text                              3.016 secs (   65.649 KChars/sec) [ 99.6%]
  Fill Rectangle                                 3.021 secs (  175.107 MPixel/sec) [ 98.0%]
  Fill Rectangle (blend)                         3.582 secs (    3.602 MPixel/sec) [ 99.7%]
  Fill Rectangles [10]                           3.177 secs (  182.753 MPixel/sec) [ 98.1%]
  Fill Rectangles [10] (blend)                  18.020 secs (    3.580 MPixel/sec) [ 98.7%]
  Fill Spans                                     3.019 secs (  145.306 MPixel/sec) [ 98.0%]
  Fill Spans (blend)                             3.616 secs (    3.568 MPixel/sec) [ 99.4%]
  Blit                                           3.074 secs (   39.874 MPixel/sec) [ 98.0%]
  Blit 180                                       3.020 secs (   32.042 MPixel/sec) [ 98.0%]
  Blit with format conversion                    3.005 secs (   19.321 MPixel/sec) [ 99.6%]
  Blit from 32bit (blend)                        4.792 secs (    2.692 MPixel/sec) [ 98.7%]

With accelerator:

  Anti-aliased Text                              3.056 secs (*  36.518 KChars/sec) [ 21.3%]
  Fill Rectangle                                 3.015 secs (* 115.543 MPixel/sec) [  8.9%]
  Fill Rectangle (blend)                         3.180 secs (*  20.286 MPixel/sec) [  1.8%]
  Fill Rectangles [10]                           3.251 secs (* 119.062 MPixel/sec) [  1.2%]
  Fill Rectangles [10] (blend)                   6.293 secs (*  20.502 MPixel/sec) [  0.3%]
  Fill Spans                                     3.051 secs (*  97.264 MPixel/sec) [ 35.7%]
  Fill Spans (blend)                             3.377 secs (*  15.282 MPixel/sec) [ 17.8%]
  Blit                                           3.046 secs (*  27.533 MPixel/sec) [  2.6%]
  Blit 180                                       3.098 secs (*  27.070 MPixel/sec) [  2.2%]
  Blit with format conversion                    3.131 secs (*  39.148 MPixel/sec) [  2.8%]
  Blit from 32bit (blend)                        3.346 secs (*  11.568 MPixel/sec) [  0.8%]

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Tested-by: Sven Neumann <s.neumann@raumfeld.com>
Cc: Eric Miao <eric.y.miao@gmail.com>
Cc: Denis Oliver Kropp <dok@directfb.org>
Cc: Sven Neumann <s.neumann@raumfeld.com>
Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
2010-12-16 14:31:18 +08:00
..
aty Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-10-25 08:19:14 -07:00
backlight backlight: grab ops_lock before testing bd->ops 2010-11-25 06:50:47 +09:00
console BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
display include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
geode lxfb: Maintain video processor palette through suspend/resume 2010-12-01 18:18:56 +09:00
i810 i2c: Remove unneeded inclusions of <linux/i2c-id.h> 2010-10-24 18:16:58 +02:00
intelfb i2c: Remove unneeded inclusions of <linux/i2c-id.h> 2010-10-24 18:16:58 +02:00
kyro
logo fbdev: move logo externs to header file 2009-06-16 19:47:57 -07:00
matrox drivers/video/matrox/matroxfb_maven.c: fix unsigned return type 2010-10-27 18:03:08 -07:00
mb862xx of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
mbx llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
msm drivers/video/msm/mddi.c: Remove multiple KERN_<level> uses 2010-10-27 13:43:21 -07:00
nvidia include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
omap drivers/video/omap/blizzard.c: suspected typo in assignment 2010-10-27 18:03:08 -07:00
omap2 OMAP: VRAM: Fix boot-time memory allocation 2010-11-10 20:51:13 +09:00
pnx4008 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
riva i2c: Delete unused adapter IDs 2010-11-15 22:40:38 +01:00
savage savagefb: fix DDC for Savage 4 2010-10-27 18:03:08 -07:00
sis sisfb: delete osdef.h 2010-11-24 16:03:22 +09:00
vermilion include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
via Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2010-10-28 09:35:11 -07:00
68328fb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
acornfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
acornfb.h
amba-clcd.c VIDEO: amba clcd: don't disable an already disabled clock 2010-08-17 22:15:09 +01:00
amifb.c m68k: amiga - Frame buffer platform device conversion 2010-05-17 21:37:43 +02:00
arcfb.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
arkfb.c
asiliantfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atafb.c fbdev: atafb - Remove undead ifdef ATAFB_FALCON 2010-10-22 09:43:25 +02:00
atafb.h
atmel_lcdfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
au1100fb.c VIDEO: Au1100fb: Fix section mismatch 2010-07-26 19:08:15 +01:00
au1100fb.h
au1200fb.c replace nested max/min macros with {max,min}3 macro 2010-10-26 16:52:12 -07:00
au1200fb.h
bf54x-lq043fb.c fix printk typo 'faild' 2010-08-09 11:25:17 +02:00
bfin-lq035q1-fb.c fbdev: bfin-lq035q1-fb: respect new PPI mode platform field 2010-05-25 08:07:08 -07:00
bfin-t350mcqb-fb.c fix printk typo 'faild' 2010-08-09 11:25:17 +02:00
broadsheetfb.c broadsheetfb: support storing waveform 2010-03-12 15:52:34 -08:00
bt431.h
bt455.h
bw2.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
c2p_core.h
c2p_iplan2.c
c2p_planar.c
c2p.h
carminefb_regs.h
carminefb.c fix typos concerning "initiali[zs]e" 2010-06-16 18:05:05 +02:00
carminefb.h
cfbcopyarea.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cfbfillrect.c fbdev: fix fillrect for 24bpp modes 2009-05-06 16:36:10 -07:00
cfbimgblt.c
cg3.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
cg6.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
cg14.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
chipsfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cirrusfb.c m68k: amiga - Zorro bus modalias support 2010-05-17 21:37:41 +02:00
clps711xfb.c clps711xfb: convert to proc_fops 2009-12-16 07:20:04 -08:00
cobalt_lcdfb.c cocbalt_lcdfb: correct sections 2010-05-03 15:42:58 +02:00
controlfb.c of/address: Clean up function declarations 2010-08-01 01:42:42 -06:00
controlfb.h
cyber2000fb.c cyber2000fb: fix console in truecolor modes 2010-07-30 23:29:33 +01:00
cyber2000fb.h
da8xx-fb.c video: da8xx: Register IRQ as last thing in driver probing. 2010-12-01 18:18:52 +09:00
dnfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
edid.h
efifb.c efifb: support the EFI framebuffer on more Apple hardware 2010-09-22 17:22:39 -07:00
ep93xx-fb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
epson1355fb.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
fb_ddc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
fb_defio.c fb_defio: redo fix for non-dirty ptes 2010-06-04 15:21:45 -07:00
fb_draw.h fbdev: fix fillrect for 24bpp modes 2009-05-06 16:36:10 -07:00
fb_notify.c
fb_sys_fops.c
fbcmap.c framebuffer: fix fbcmap.c kernel-doc warning 2010-11-26 15:05:08 +09:00
fbcvt.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
fbmem.c fbmem: fix fb_read, fb_write unaligned accesses 2010-10-27 18:03:08 -07:00
fbmon.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
fbsysfs.c fbdev: allow passing more than one aperture for handoff 2010-05-18 16:19:27 +10:00
ffb.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
fm2fb.c m68k: amiga - Zorro bus modalias support 2010-05-17 21:37:41 +02:00
fsl-diu-fb.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
g364fb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
gbefb.c drivers/video/gbefb.c: eliminate memory leak 2010-10-27 18:03:08 -07:00
gxt4500.c
hecubafb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
hgafb.c fbdev: section cleanup in hgafb 2010-05-25 08:07:08 -07:00
hitfb.c hitfb: fix sections 2010-05-25 08:07:09 -07:00
hpfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
igafb.c drivers/video/igafb.c: make igafb_setup() and igafb_init() static 2010-08-11 08:59:12 -07:00
imsttfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
imxfb.c ARM: 6281/1: video/imxfb.c: allow usage without BACKLIGHT_CLASS_DEVICE 2010-08-10 22:10:51 +01:00
jz4740_fb.c FBDEV: JZ4740: Add framebuffer driver 2010-08-05 13:26:17 +01:00
Kconfig video: add driver for PXA3xx 2D graphics accelerator 2010-12-16 14:31:18 +08:00
leo.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
macfb.c macfb: fix 24-bit visual and stuff 2010-02-27 18:31:16 +01:00
macmodes.c fbdev: add some missing mac modes 2010-02-27 18:31:14 +01:00
macmodes.h
Makefile video: add driver for PXA3xx 2D graphics accelerator 2010-12-16 14:31:18 +08:00
maxinefb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
metronomefb.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
modedb.c fbdev: Fix fb_find_nearest_mode refresh comparison 2010-12-14 18:03:49 +09:00
mx3fb.c ARM mx3fb: check for DMA engine type 2010-11-15 09:25:01 +01:00
n411.c
neofb.c
nuc900fb.c drivers/video/nuc900fb.c: fix lcd build error 2010-06-29 15:29:32 -07:00
nuc900fb.h NUC900 LCD Controller Driver 2010-03-12 15:52:34 -08:00
offb.c of/address: Clean up function declarations 2010-08-01 01:42:42 -06:00
output.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
p9100.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
platinumfb.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
platinumfb.h
pm2fb.c tree-wide: s/widht/width/g typo in comments 2010-02-05 12:22:42 +01:00
pm3fb.c
pmag-aa-fb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
pmag-ba-fb.c VIDEO: PMAG-BA: Fix section mismatch 2010-07-26 19:08:14 +01:00
pmagb-b-fb.c VIDEO: PMAGB-B: Fix section mismatch 2010-07-26 19:08:15 +01:00
ps3fb.c powerpc/cell: Move CBE_IOPTE_* to <asm/cell-regs.h> 2009-08-20 10:29:26 +10:00
pvr2fb.c sh: Fix up more 64-bit pgprot truncation on SH-X2 TLB. 2010-02-17 13:23:00 +09:00
pxa3xx-gcu.c video: add driver for PXA3xx 2D graphics accelerator 2010-12-16 14:31:18 +08:00
pxa3xx-gcu.h video: add driver for PXA3xx 2D graphics accelerator 2010-12-16 14:31:18 +08:00
pxa168fb.c ARM: pxa168fb: add .remove function 2010-10-09 17:07:23 +08:00
pxa168fb.h fb: add support of LCD display controller on pxa168/910 (base layer) 2009-06-13 00:09:09 +08:00
pxafb.c [ARM] pxafb: fix building issue of incorrect reference 2009-12-29 14:11:27 +08:00
pxafb.h
q40fb.c fbdev/m68k: Fix section mismatches in q40fb.c 2010-10-22 09:43:25 +02:00
s1d13xxxfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
s3c2410fb.c s3c2410fb: fix sections 2010-05-25 08:07:09 -07:00
s3c2410fb.h s3c-fb: CPUFREQ frequency scaling support 2009-06-16 19:47:59 -07:00
s3c-fb.c s3c-fb: automatically calculate pixel clock when none is given 2010-08-11 08:59:12 -07:00
s3fb.c add support for S3 Trio3D/1X/2X 2010-05-27 09:12:42 -07:00
sa1100fb.c platform-drivers: move probe to .devinit.text in drivers/video 2010-03-07 17:04:50 -08:00
sa1100fb.h sa1100fb: fix color component length for pseudocolor modes 2009-04-13 15:04:29 -07:00
sbuslib.c
sbuslib.h
sgivwfb.c sgivwfb: fix sections 2010-05-25 08:07:09 -07:00
sh7760fb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sh_mipi_dsi.c fbdev: sh_mobile_lcdcfb: Support multiple video modes in platform data 2010-09-14 17:22:38 +09:00
sh_mobile_hdmi.c fbdev: sh_mobile_hdmi: properly clean up modedb on monitor unplug 2010-11-10 16:53:12 +09:00
sh_mobile_lcdcfb.c fbdev: sh_mobile_lcdcfb: fix bug in reconfig() 2010-11-16 10:11:28 +09:00
sh_mobile_lcdcfb.h fbdev: sh_mobile_lcdc: reconfigure the framebuffer, when free 2010-09-16 16:36:17 +09:00
skeletonfb.c fbdev: fix color component field length documentation 2009-04-13 15:04:29 -07:00
sm501fb.c tree-wide: Assorted spelling fixes 2010-02-09 11:13:56 +01:00
sstfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sticore.h
stifb.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
sunxvr500.c Merge branch 'master' into export-slabh 2010-04-05 11:37:28 +09:00
sunxvr1000.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
sunxvr2500.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
svgalib.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
syscopyarea.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sysfillrect.c fbdev: fix fillrect for 24bpp modes 2009-05-06 16:36:10 -07:00
sysimgblt.c
tcx.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
tdfxfb.c VIDEO: Correct use of request_region/request_mem_region 2010-08-05 13:25:38 +01:00
tgafb.c fix typos concerning "initiali[zs]e" 2010-06-16 18:05:05 +02:00
tmiofb.c drivers/video/tmiofb.c: fix uninitialised return value 2009-09-23 07:39:57 -07:00
tridentfb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
uvesafb.c param: use ops in struct kernel_param, rather than get and set fns directly 2010-08-11 23:04:13 +09:30
valkyriefb.c valkyriefb: various fixes 2010-02-27 18:31:13 +01:00
valkyriefb.h valkyriefb: various fixes 2010-02-27 18:31:13 +01:00
vesafb.c vesafb: fix comment a typo 2010-08-16 15:14:03 +02:00
vfb.c fbdev: section cleanup in vfb 2010-05-25 08:07:08 -07:00
vga16fb.c fbdev: section cleanup in vga16fb 2010-05-25 08:07:08 -07:00
vgastate.c
vt8623fb.c param: simple locking for sysfs-writable charp parameters 2010-08-11 23:04:31 +09:30
w100fb.c drivers/video/w100fb.c: ignore void return value / fix build failure 2010-08-09 20:44:53 -07:00
w100fb.h
xen-fbfront.c xenbus: prevent warnings on unhandled enumeration values 2010-10-18 10:49:36 -04:00
xilinxfb.c fbdev/xilinxfb: Microblaze driver support 2010-10-21 16:04:51 +10:00