/* FIXME:kmalloc these 3 instead */
static struct fb_info fb_info;
-static int pseudo_pal[16];
+static u32 pseudo_pal[16];
static struct fb_var_screeninfo default_var;
static int nativex;
-MODULE_PARM(mode,"s");
-MODULE_PARM(bpp,"i");
-MODULE_PARM(center,"i");
-MODULE_PARM(stretch,"i");
-MODULE_PARM(noaccel,"i");
-MODULE_PARM(memsize,"i");
-MODULE_PARM(memdiff,"i");
-MODULE_PARM(nativex,"i");
-MODULE_PARM(fp,"i");
-MODULE_PARM(crt,"i");
+module_param(mode, charp, 0);
+module_param(bpp, int, 0);
+module_param(center, int, 0);
+module_param(stretch, int, 0);
+module_param(noaccel, int, 0);
+module_param(memsize, int, 0);
+module_param(memdiff, int, 0);
+module_param(nativex, int, 0);
+module_param(fp, int, 0);
+module_param(crt, int, 0);
static int chip3D;
default:
case 8: col = fr->color;
break;
- case 16: col = ((u16 *)(info->pseudo_palette))[fr->color];
+ case 16: col = ((u32 *)(info->pseudo_palette))[fr->color];
break;
case 32: col = ((u32 *)(info->pseudo_palette))[fr->color];
break;
t_outb(val, 0x3C0);
}
-static inline unsigned char readAttr(int reg)
-{
- readb(((struct tridentfb_par *)fb_info.par)->io_virt + CRT + 0x0A); //flip-flop to index
- t_outb(reg, 0x3C0);
- return t_inb(0x3C1);
-}
-
static inline void write3CE(int reg, unsigned char val)
{
t_outb(reg, 0x3CE);
} else
if (bpp == 16) /* RGB 565 */
- ((u16*)info->pseudo_palette)[regno] = (red & 0xF800) |
+ ((u32*)info->pseudo_palette)[regno] = (red & 0xF800) |
((green & 0xFC00) >> 5) | ((blue & 0xF800) >> 11);
else
if (bpp == 32) /* ARGB 8888 */
DPMSCont = read3CE(PowerStatus) & 0xFC;
switch (blank_mode)
{
- case VESA_NO_BLANKING:
+ case FB_BLANK_UNBLANK:
/* Screen: On, HSync: On, VSync: On */
+ case FB_BLANK_NORMAL:
+ /* Screen: Off, HSync: On, VSync: On */
PMCont |= 0x03;
DPMSCont |= 0x00;
break;
- case VESA_HSYNC_SUSPEND:
+ case FB_BLANK_HSYNC_SUSPEND:
/* Screen: Off, HSync: Off, VSync: On */
PMCont |= 0x02;
DPMSCont |= 0x01;
break;
- case VESA_VSYNC_SUSPEND:
+ case FB_BLANK_VSYNC_SUSPEND:
/* Screen: Off, HSync: On, VSync: Off */
PMCont |= 0x02;
DPMSCont |= 0x02;
break;
- case VESA_POWERDOWN:
+ case FB_BLANK_POWERDOWN:
/* Screen: Off, HSync: Off, VSync: Off */
PMCont |= 0x00;
DPMSCont |= 0x03;
t_outb(PMCont,0x83C6);
debug("exit\n");
- return 0;
+
+ /* let fbcon do a softblank for us */
+ return (blank_mode == FB_BLANK_NORMAL) ? 1 : 0;
}
static int __devinit trident_pci_probe(struct pci_dev * dev, const struct pci_device_id * id)
default_var.accel_flags &= ~FB_ACCELF_TEXT;
default_var.activate |= FB_ACTIVATE_NOW;
fb_info.var = default_var;
+ fb_info.device = &dev->dev;
if (register_framebuffer(&fb_info) < 0) {
output("Could not register Trident framebuffer\n");
return -EINVAL;