static int __init init_one(int slot) { unsigned long base_addr = CKSEG1ADDR(get_tc_base_addr(slot)); struct aafb_info *ip = &my_fb_info[slot]; memset(ip, 0, sizeof(struct aafb_info)); /* * Framebuffer display memory base address and friends. */ ip->bt455 = (struct bt455_regs *) (base_addr + PMAG_AA_BT455_OFFSET); ip->bt431 = (struct bt431_regs *) (base_addr + PMAG_AA_BT431_OFFSET); ip->fb_start = base_addr + PMAG_AA_ONBOARD_FBMEM_OFFSET; ip->fb_size = 2048 * 1024; /* fb_fix_screeninfo.smem_length seems to be physical */ ip->fb_line_length = 2048; /* * Let there be consoles.. */ strcpy(ip->info.modename, "PMAG-AA"); ip->info.node = -1; ip->info.flags = FBINFO_FLAG_DEFAULT; ip->info.fbops = &aafb_ops; ip->info.disp = &ip->disp; ip->info.changevar = NULL; ip->info.switch_con = &aafb_switch; ip->info.updatevar = &aafb_update_var; ip->info.blank = &aafb_blank; aafb_set_disp(&ip->disp, currcon, ip); /* * Configure the RAM DACs. */ bt455_erase_cursor(ip->bt455); /* Init colormap. */ bt455_write_cmap_entry(ip->bt455, 0, 0x00, 0x00, 0x00); bt455_write_cmap_entry(ip->bt455, 1, 0x0f, 0x0f, 0x0f); /* Init hardware cursor. */ bt431_init_cursor(ip->bt431); aafb_cursor_init(ip); /* Clear the screen. */ memset ((void *)ip->fb_start, 0, ip->fb_size); if (register_framebuffer(&ip->info) < 0) return -EINVAL; printk(KERN_INFO "fb%d: %s frame buffer in TC slot %d\n", GET_FB_IDX(ip->info.node), ip->info.modename, slot); return 0; }
static int __init init_one(int slot) { unsigned long base_addr = CKSEG1ADDR(get_tc_base_addr(slot)); struct aafb_info *ip = &my_fb_info[slot]; memset(ip, 0, sizeof(struct aafb_info)); ip->bt455 = (struct bt455_regs *) (base_addr + PMAG_AA_BT455_OFFSET); ip->bt431 = (struct bt431_regs *) (base_addr + PMAG_AA_BT431_OFFSET); ip->fb_start = base_addr + PMAG_AA_ONBOARD_FBMEM_OFFSET; ip->fb_size = 2048 * 1024; ip->fb_line_length = 2048; strcpy(ip->info.modename, "PMAG-AA"); ip->info.node = -1; ip->info.flags = FBINFO_FLAG_DEFAULT; ip->info.fbops = &aafb_ops; ip->info.disp = &ip->disp; ip->info.changevar = NULL; ip->info.switch_con = &aafb_switch; ip->info.updatevar = &aafb_update_var; ip->info.blank = &aafb_blank; aafb_set_disp(&ip->disp, currcon, ip); bt455_erase_cursor(ip->bt455); bt455_write_cmap_entry(ip->bt455, 0, 0x00, 0x00, 0x00); bt455_write_cmap_entry(ip->bt455, 1, 0x0f, 0x0f, 0x0f); bt431_init_cursor(ip->bt431); aafb_cursor_init(ip); memset ((void *)ip->fb_start, 0, ip->fb_size); if (register_framebuffer(&ip->info) < 0) return -EINVAL; printk(KERN_INFO "fb%d: %s frame buffer in TC slot %d\n", GET_FB_IDX(ip->info.node), ip->info.modename, slot); return 0; }