Mer/Status/SmartQ5/XAA

Image:Mer infobox icon.png
Mer is back : Please visit http://www.merproject.org to learn more about this news.


[edit] 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;

[edit] Driver

fbdev driver with XAA support for S3C6410 is here:

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

This file should replace src/fbdev.c file in xserver-xorg-video-fbdev.

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.

[edit] 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. I really don't know how to debug this problem, so I'll be thankful for any suggestions.
  • 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.