| 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 |