}
available=fix.smem_len;
+ m_phys_mem = fix.smem_start;
eDebug("%dk video mem", available/1024);
lfb=(unsigned char*)mmap(0, available, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if (!lfb)
int fbClass::showConsole(int state)
{
- int fd=open("/dev/vc/0", O_RDWR);
+ int fd=open("/dev/tty0", O_RDWR);
if(fd>=0)
{
if(ioctl(fd, KDSETMODE, state?KD_TEXT:KD_GRAPHICS)<0)
{
- eDebug("setting /dev/vc/0 status failed.");
+ eDebug("setting /dev/tty0 status failed.");
}
close(fd);
}
screeninfo.width=0;
screeninfo.xoffset=screeninfo.yoffset=0;
screeninfo.bits_per_pixel=nbpp;
-
+
+ switch (nbpp) {
+ case 16:
+ // ARGB 1555
+ screeninfo.transp.offset = 15;
+ screeninfo.transp.length = 1;
+ screeninfo.red.offset = 10;
+ screeninfo.red.length = 5;
+ screeninfo.green.offset = 5;
+ screeninfo.green.length = 5;
+ screeninfo.blue.offset = 0;
+ screeninfo.blue.length = 5;
+ break;
+ case 32:
+ // ARGB 8888
+ screeninfo.transp.offset = 24;
+ screeninfo.transp.length = 8;
+ screeninfo.red.offset = 16;
+ screeninfo.red.length = 8;
+ screeninfo.green.offset = 8;
+ screeninfo.green.length = 8;
+ screeninfo.blue.offset = 0;
+ screeninfo.blue.length = 8;
+ break;
+ }
+
if (ioctl(fd, FBIOPUT_VSCREENINFO, &screeninfo)<0)
{
// try single buffering