static int chipsfb_set_par(struct fb_info *info) { if (info->var.bits_per_pixel == 16) { write_cr(0x13, 200); // Set line length (doublewords) write_xr(0x81, 0x14); // 15 bit (555) color mode write_xr(0x82, 0x00); // Disable palettes write_xr(0x20, 0x10); // 16 bit blitter mode info->fix.line_length = 800*2; info->fix.visual = FB_VISUAL_TRUECOLOR; info->var.red.offset = 10; info->var.green.offset = 5; info->var.blue.offset = 0; info->var.red.length = info->var.green.length = info->var.blue.length = 5; } else { /* p->var.bits_per_pixel == 8 */ write_cr(0x13, 100); // Set line length (doublewords) write_xr(0x81, 0x12); // 8 bit color mode write_xr(0x82, 0x08); // Graphics gamma enable write_xr(0x20, 0x00); // 8 bit blitter mode info->fix.line_length = 800; info->fix.visual = FB_VISUAL_PSEUDOCOLOR; info->var.red.offset = info->var.green.offset = info->var.blue.offset = 0; info->var.red.length = info->var.green.length = info->var.blue.length = 8; } return 0; }
static int chipsfb_set_par(struct fb_info *info) { if (info->var.bits_per_pixel == 16) { write_cr(0x13, 200); write_xr(0x81, 0x14); write_xr(0x82, 0x00); write_xr(0x20, 0x10); info->fix.line_length = 800*2; info->fix.visual = FB_VISUAL_TRUECOLOR; info->var.red.offset = 10; info->var.green.offset = 5; info->var.blue.offset = 0; info->var.red.length = info->var.green.length = info->var.blue.length = 5; } else { write_cr(0x13, 100); write_xr(0x81, 0x12); write_xr(0x82, 0x08); write_xr(0x20, 0x00); info->fix.line_length = 800; info->fix.visual = FB_VISUAL_PSEUDOCOLOR; info->var.red.offset = info->var.green.offset = info->var.blue.offset = 0; info->var.red.length = info->var.green.length = info->var.blue.length = 8; } return 0; }
static void __init chips_hw_init(void) { int i; for (i = 0; i < ARRAY_SIZE(chips_init_xr); ++i) write_xr(chips_init_xr[i].addr, chips_init_xr[i].data); outb(0x29, 0x3c2); /* set misc output reg */ for (i = 0; i < ARRAY_SIZE(chips_init_sr); ++i) write_sr(chips_init_sr[i].addr, chips_init_sr[i].data); for (i = 0; i < ARRAY_SIZE(chips_init_gr); ++i) write_gr(chips_init_gr[i].addr, chips_init_gr[i].data); for (i = 0; i < ARRAY_SIZE(chips_init_ar); ++i) write_ar(chips_init_ar[i].addr, chips_init_ar[i].data); for (i = 0; i < ARRAY_SIZE(chips_init_cr); ++i) write_cr(chips_init_cr[i].addr, chips_init_cr[i].data); for (i = 0; i < ARRAY_SIZE(chips_init_fr); ++i) write_fr(chips_init_fr[i].addr, chips_init_fr[i].data); }