Mer/Status/SmartQ5/XAA

Kernel changes required:

XAA needs off screen video ram for some operations. In order to get this, the kernel needs to be changed:

Enable config option: CONFIG_FB_S3C_VIRTUAL_SCREEN

Replace line 764 of drivers/video/s3c/s3cfb.c:

finfo->fb.fix.smem_len = finfo->fb.var.xres_virtual * finfo->fb.var.yres_virtual * s3c_fimd.bytes_per_pixel;

by something like:

finfo->fb.fix.smem_len = 800 * 1200 * 2;

Driver

fbdev driver with XAA support for S3C6410 is here:

Source: http://my.arava.co.il/~matan/770/fbdev.c

Binary: http://my.arava.co.il/~matan/770/fbdev_drv.so

The binary goes in /usr/lib/modules/drivers. It works in Mer, and probably in original firmware as well.

Known issues
 * Some conflict with hildon-desktop causes X and hildon-desktop to consume 100% CPU time when XAA is used. This happens even if the driver initializes XAA without implementing any function, so I do not believe it is a problem in the driver code, but in X or in hildon-desktop. There is no problem when using LXDE.


 * Not all functions are tested.


 * Not all functions are implemented.


 * There are still problems in ScreenToScreenCopy - apparent when dragging a window. It appears as a symptom of a cache coherency issue, but I am calling __clear_cache in what should be the correct places, and I modified the kernel to allocate FB with _coherent, instead of _writecombine, and it does not appear to help.