Subversion Repositories HelenOS-historic

Rev

Rev 1334 | Rev 1376 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1334 Rev 1371
Line 30... Line 30...
30
#include <genarch/fb/fb.h>
30
#include <genarch/fb/fb.h>
31
#include <console/chardev.h>
31
#include <console/chardev.h>
32
#include <console/console.h>
32
#include <console/console.h>
33
#include <sysinfo/sysinfo.h>
33
#include <sysinfo/sysinfo.h>
34
#include <mm/slab.h>
34
#include <mm/slab.h>
-
 
35
#include <mm/as.h>
-
 
36
#include <bitops.h>
-
 
37
#include <align.h>
35
#include <panic.h>
38
#include <panic.h>
36
#include <memstr.h>
39
#include <memstr.h>
37
#include <config.h>
40
#include <config.h>
38
 
41
 
39
#include "helenos.xbm"
42
#include "helenos.xbm"
Line 310... Line 313...
310
};
313
};
311
 
314
 
312
 
315
 
313
/** Initialize framebuffer as a chardev output device
316
/** Initialize framebuffer as a chardev output device
314
 *
317
 *
315
 * @param addr Address of theframebuffer
318
 * @param addr Physical address of the framebuffer
316
 * @param x    Screen width in pixels
319
 * @param x    Screen width in pixels
317
 * @param y    Screen height in pixels
320
 * @param y    Screen height in pixels
318
 * @param bpp  Bits per pixel (8, 16, 24, 32)
321
 * @param bpp  Bits per pixel (8, 16, 24, 32)
319
 * @param scan Bytes per one scanline
322
 * @param scan Bytes per one scanline
320
 *
323
 *
Line 343... Line 346...
343
            pixelbytes = 4;
346
            pixelbytes = 4;
344
            break;
347
            break;
345
        default:
348
        default:
346
            panic("Unsupported bpp");
349
            panic("Unsupported bpp");
347
    }
350
    }
348
       
351
   
-
 
352
    unsigned int fbsize = scan * y;
349
    fbaddress = (unsigned char *) addr;
353
    unsigned int fborder;
-
 
354
   
-
 
355
    if (fbsize <= FRAME_SIZE)
-
 
356
        fborder = 0;
-
 
357
    else
-
 
358
        fborder = (fnzb32(fbsize - 1) + 1) - FRAME_WIDTH;
-
 
359
   
-
 
360
    /* Map the framebuffer */
-
 
361
    fbaddress = (__u8 *) PA2KA(PFN2ADDR(frame_alloc(fborder, FRAME_KA)));
-
 
362
   
-
 
363
    pfn_t i;
-
 
364
    for (i = 0; i < ADDR2PFN(ALIGN_UP(fbsize, PAGE_SIZE)); i++)
-
 
365
        page_mapping_insert(AS_KERNEL, (__address) fbaddress + PFN2ADDR(i), addr + PFN2ADDR(i), PAGE_NOT_CACHEABLE);
-
 
366
   
350
    xres = x;
367
    xres = x;
351
    yres = y;
368
    yres = y;
352
    bitspp = bpp;
369
    bitspp = bpp;
353
    scanline = scan;
370
    scanline = scan;
354
   
371
   
Line 359... Line 376...
359
    draw_logo(xres - helenos_width, 0);
376
    draw_logo(xres - helenos_width, 0);
360
    invert_cursor();
377
    invert_cursor();
361
 
378
 
362
    chardev_initialize("fb", &framebuffer, &fb_ops);
379
    chardev_initialize("fb", &framebuffer, &fb_ops);
363
    stdout = &framebuffer;
380
    stdout = &framebuffer;
364
}
381
   
365
 
-
 
366
 
-
 
367
/** Register framebuffer in sysinfo
-
 
368
 *
-
 
369
 */
-
 
370
void fb_register(void)
-
 
371
{
-
 
372
    sysinfo_set_item_val("fb", NULL, true);
382
    sysinfo_set_item_val("fb", NULL, true);
373
    sysinfo_set_item_val("fb.width", NULL, xres);
383
    sysinfo_set_item_val("fb.width", NULL, x);
374
    sysinfo_set_item_val("fb.height", NULL, yres);
384
    sysinfo_set_item_val("fb.height", NULL, y);
375
    sysinfo_set_item_val("fb.scanline", NULL, scanline);
385
    sysinfo_set_item_val("fb.bpp", NULL, bpp);
376
    sysinfo_set_item_val("fb.bpp", NULL, bitspp);
386
    sysinfo_set_item_val("fb.scanline", NULL, scan);
377
    sysinfo_set_item_val("fb.address.virtual", NULL, (__address) fbaddress);
387
    sysinfo_set_item_val("fb.address.physical", NULL, addr);
378
}
388
}