Subversion Repositories HelenOS-historic

Rev

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

Rev 1500 Rev 1501
Line 357... Line 357...
357
 * @param y    Screen height in pixels
357
 * @param y    Screen height in pixels
358
 * @param bpp  Bits per pixel (8, 16, 24, 32)
358
 * @param bpp  Bits per pixel (8, 16, 24, 32)
359
 * @param scan Bytes per one scanline
359
 * @param scan Bytes per one scanline
360
 *
360
 *
361
 */
361
 */
362
static void screen_init(__address addr, unsigned int xres, unsigned int yres, unsigned int bpp, unsigned int scan)
362
static void screen_init(void *addr, unsigned int xres, unsigned int yres, unsigned int bpp, unsigned int scan)
363
{
363
{
364
    switch (bpp) {
364
    switch (bpp) {
365
        case 8:
365
        case 8:
366
            screen.putpixel = putpixel_1byte;
366
            screen.putpixel = putpixel_1byte;
367
            screen.getpixel = getpixel_1byte;
367
            screen.getpixel = getpixel_1byte;
Line 595... Line 595...
595
}
595
}
596
 
596
 
597
/** Initialization of framebuffer */
597
/** Initialization of framebuffer */
598
int fb_init(void)
598
int fb_init(void)
599
{
599
{
600
    __address fb_ph_addr;
600
    void *fb_ph_addr;
601
    unsigned int fb_width;
601
    unsigned int fb_width;
602
    unsigned int fb_height;
602
    unsigned int fb_height;
603
    unsigned int fb_bpp;
603
    unsigned int fb_bpp;
604
    unsigned int fb_scanline;
604
    unsigned int fb_scanline;
605
    __address fb_addr;
605
    void *fb_addr;
-
 
606
    size_t asz;
606
 
607
 
607
    async_set_client_connection(fb_client_connection);
608
    async_set_client_connection(fb_client_connection);
608
 
609
 
609
    fb_ph_addr=sysinfo_value("fb.address.physical");
610
    fb_ph_addr=(void *)sysinfo_value("fb.address.physical");
610
    fb_width=sysinfo_value("fb.width");
611
    fb_width=sysinfo_value("fb.width");
611
    fb_height=sysinfo_value("fb.height");
612
    fb_height=sysinfo_value("fb.height");
612
    fb_bpp=sysinfo_value("fb.bpp");
613
    fb_bpp=sysinfo_value("fb.bpp");
613
    fb_scanline=sysinfo_value("fb.scanline");
614
    fb_scanline=sysinfo_value("fb.scanline");
614
 
615
 
-
 
616
    asz = fb_scanline*fb_height;
615
    fb_addr=ALIGN_UP(((__address)set_maxheapsize(USER_ADDRESS_SPACE_SIZE_ARCH>>1)),PAGE_SIZE);
617
    fb_addr = as_get_mappable_page(asz);
616
   
618
   
617
    map_physmem((void *)((__address)fb_ph_addr),(void *)fb_addr,
-
 
618
            (fb_scanline*fb_height+PAGE_SIZE-1)>>PAGE_WIDTH,
619
    map_physmem(fb_ph_addr, fb_addr, ALIGN_UP(asz,PAGE_SIZE) >>PAGE_WIDTH,
619
            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
620
            AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
620
   
621
   
621
    screen_init(fb_addr, fb_width, fb_height, fb_bpp, fb_scanline);
622
    screen_init(fb_addr, fb_width, fb_height, fb_bpp, fb_scanline);
622
 
623
 
623
    return 0;
624
    return 0;