1
2
3
xf86-video-s3c64xx-0.0.2 11/05/2009 
4
5
S3C6410 based Xwindows fbdevhw with
6
   o  XAA accelerated fills, lines, expands, blits, offscreen pixmaps/stipples
7
   o  Alpha-blended HWCursor 
8
   o  XVideo Support (using the Samsung Post-Processor colorspace driver)
9
   o  Work-in-progress for crtc/output support for LCD aand HDMI.  This 
10
      enable X extension for resize and rotation: RandR.
11
12
Acknowledgements:
13
14
The most excellent XAA base code was done by 
15
   Matan Ziv-Av <matan at svgalib dot org>
16
17
The original XVideo code was done by 
18
   Jetta Tang <jetta.tang at hhcn dot com>
19
20
The g2d and pp drivers upon which this code is based were provided by
21
   Samsung Semiconductor.  Thanks.
22
23
Time and Materials and Hosting 
24
   Chronolytics Inc.  Real-Time Embedded Software  http://chronolytics.com
25
26
------------------------------------------------------------------------------
27
28
Kernel patches are in the gitorious mer-smartq-kernel.
29
30
------------------------------------------------------------------------------
31
32
xorg.conf and this driver have been tested on the SmartQ7 running V5.51
33
34
------------------------------------------------------------------------------
35
36
XWindow RandR (Rotate and Resize) is a work in progress.  It is disabled in this compile.
37
It does not work for rotations of 90/270, but is it how real rotation will work on these 
38
devices.  Enable it if you want to help/play.
39
40
------------------------------------------------------------------------------
41
42
XAA needs off screen video ram for color expansion, cursor storage and 
43
pixmap/stipple cache. In order to get this, the kernel needs to be changed:
44
45
Kernel 2.6.24.6 (SmartQ5/7)
46
---------------------------
47
1. Enable config option: CONFIG_FB_S3C_VIRTUAL_SCREEN
48
49
2. Use the current gitorious mer-smartq-kernel
50
51
Others kernels/devices:
52
-------
53
Modern kernels use device platform data in the arch/arm/smdk-foo.c file.
54
This structure is:
55
struct s3c_fb_pd_win {
56
   struct fb_videomode  win_mode;
57
58
   unsigned short    default_bpp;
59
   unsigned short    max_bpp;
60
   unsigned short    virtual_x;
61
   unsigned short    virtual_y;
62
};
63
64
The offscreen memory is added by increasing virtual_y.  virtual_x may be set 
65
to "real" xres.  The virtual_y should be 2x-3x the physical yres to properly
66
use the offscreen stipple and pixmap cache in XAA.
67
68
------------------------------------------------------------------------------
69
70
NOTE: This driver *requires* a "/dev/s3c-pp".  Otherwise, XVideo will fail 
71
to startup.  This driver is compatible with the smplayer/mplayer supplied with
72
the SmartQ5/7.
73
74
------------------------------------------------------------------------------
75
76
NOTE:  The widely accepted way that an XWindows fbdev driver obtains access to
77
the graphics card register space is the silly offset trick in mmap.  
78
The XWindows fbdevHWMapMMIO() uses this trick to "canonically" map registers 
79
into the XWindows server space.  Unfortunately, current versions of the s3c 
80
tree (next-s3c) do not support the MMIO idiom.  This forces this driver to 
81
mmap using /dev/mem.  The above patch for 2.6.24.6 adds this idiom in addition 
82
to allocating offscreen memory.
83
84
------------------------------------------------------------------------------
85
86
This XWindows driver uses the Samsung G2D driver for mmap and 
87
suspend/resume ONLY.  It does not use any device-specific APIs.
88
89
NOTE: The existing Samsung driver for the 2D graphics, /dev/s3c-g2d, fails to 
90
suspend/resume correctly.  A patch fixing the problem has been sent to Samsung.
91
It is highly recommended to get a "good" copy of this driver.  A patch for the
92
version in the samsung-ap-2.6 git tree is included.  If the g2d driver 
93
is missing, then XWindows will use /dev/mem to mmap the register space.
94
Using /dev/mem, there is 0.0% chance that suspend/resume will work.
95
96
------------------------------------------------------------------------------
97
98
BUG:  The next-s3c kernels have a means to allocate multiple screens using
99
the platform data.  The requirements for a Screen4 32x32 28bit cursor is ~2KB.  
100
Currently this memory is "stolen" from Screen0.  This should be fixed in a 
101
later release.  
102
103
NOTE: This driver is untested with DBE (double buffer extensions).
104
105
-------------------------------------------------------------------------------
106
107
BUG:  If there is no offscreen memory configured, the driver will use sw cursor.
108
XAA blits currently "trash" the swCursor.  
109
110
Workaround: get offscreen memory.  :-)
111
112
-------------------------------------------------------------------------------
113
114
115
David F. Carlson    Chronolytics, Inc.  Rochester, NY
116
mailto:dave@chronolytics.com            http://www.chronolytics.com
117
118
"The faster I go, the behinder I get." --Lewis Carroll