MODULE_AUTHOR("(c) 2001-2002 Denis Oliver Kropp <dok@convergence.de>");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("FBDev driver for NeoMagic PCI Chips");
-module_param(internal, bool, 0);
+MODULE_PARM(internal, "i");
MODULE_PARM_DESC(internal, "Enable output on internal LCD Display.");
-module_param(external, bool, 0);
+MODULE_PARM(external, "i");
MODULE_PARM_DESC(external, "Enable output on external CRT.");
-module_param(libretto, bool, 0);
+MODULE_PARM(libretto, "i");
MODULE_PARM_DESC(libretto, "Force Libretto 100/110 800x480 LCD.");
-module_param(nostretch, bool, 0);
+MODULE_PARM(nostretch, "i");
MODULE_PARM_DESC(nostretch,
"Disable stretching of modes smaller than LCD.");
-module_param(nopciburst, bool, 0);
+MODULE_PARM(nopciburst, "i");
MODULE_PARM_DESC(nopciburst, "Disable PCI burst mode.");
-module_param(mode_option, charp, 0);
+MODULE_PARM(mode_option, "s");
MODULE_PARM_DESC(mode_option, "Preferred video mode ('640x480-8@60', etc)");
#endif
struct neofb_par *par = (struct neofb_par *) info->par;
int waitcycles;
- while (readl(&par->neo2200->bltStat) & 1)
+ while (par->neo2200->bltStat & 1)
waitcycles++;
return 0;
}
struct fb_var_screeninfo *var)
{
struct neofb_par *par = (struct neofb_par *) info->par;
- Neo2200 __iomem *neo2200 = par->neo2200;
+ Neo2200 *neo2200 = par->neo2200;
u32 bltMod, pitch;
neo2200_sync(info);
return;
}
- writel(bltMod << 16, &neo2200->bltStat);
- writel((pitch << 16) | pitch, &neo2200->pitch);
+ neo2200->bltStat = bltMod << 16;
+ neo2200->pitch = (pitch << 16) | pitch;
}
/* --------------------------------------------------------------------- */
int seqflags, lcdflags, dpmsflags, reg;
switch (blank_mode) {
- case FB_BLANK_POWERDOWN: /* powerdown - both sync lines down */
+ case 4: /* powerdown - both sync lines down */
seqflags = VGA_SR01_SCREEN_OFF; /* Disable sequencer */
lcdflags = 0; /* LCD off */
dpmsflags = NEO_GR01_SUPPRESS_HSYNC |
}
#endif
break;
- case FB_BLANK_HSYNC_SUSPEND: /* hsync off */
+ case 3: /* hsync off */
seqflags = VGA_SR01_SCREEN_OFF; /* Disable sequencer */
lcdflags = 0; /* LCD off */
dpmsflags = NEO_GR01_SUPPRESS_HSYNC;
break;
- case FB_BLANK_VSYNC_SUSPEND: /* vsync off */
+ case 2: /* vsync off */
seqflags = VGA_SR01_SCREEN_OFF; /* Disable sequencer */
lcdflags = 0; /* LCD off */
dpmsflags = NEO_GR01_SUPPRESS_VSYNC;
break;
- case FB_BLANK_NORMAL: /* just blank screen (backlight stays on) */
+ case 1: /* just blank screen (backlight stays on) */
seqflags = VGA_SR01_SCREEN_OFF; /* Disable sequencer */
lcdflags = par->PanelDispCntlReg1 & 0x02; /* LCD normal */
dpmsflags = 0; /* no hsync/vsync suppression */
break;
- case FB_BLANK_UNBLANK: /* unblank */
+ case 0: /* unblank */
seqflags = 0; /* Enable sequencer */
lcdflags = par->PanelDispCntlReg1 & 0x02; /* LCD normal */
dpmsflags = 0x00; /* no hsync/vsync suppression */
neo2200_wait_fifo(info, 4);
/* set blt control */
- writel(NEO_BC3_FIFO_EN |
- NEO_BC0_SRC_IS_FG | NEO_BC3_SKIP_MAPPING |
- // NEO_BC3_DST_XY_ADDR |
- // NEO_BC3_SRC_XY_ADDR |
- rop, &par->neo2200->bltCntl);
+ par->neo2200->bltCntl = NEO_BC3_FIFO_EN |
+ NEO_BC0_SRC_IS_FG | NEO_BC3_SKIP_MAPPING |
+ // NEO_BC3_DST_XY_ADDR |
+ // NEO_BC3_SRC_XY_ADDR |
+ rop;
switch (info->var.bits_per_pixel) {
case 8:
- writel(rect->color, &par->neo2200->fgColor);
+ par->neo2200->fgColor = rect->color;
break;
case 16:
case 24:
- writel(((u32 *) (info->pseudo_palette))[rect->color],
- &par->neo2200->fgColor);
+ par->neo2200->fgColor =
+ ((u32 *) (info->pseudo_palette))[rect->color];
break;
}
- writel(dst * ((info->var.bits_per_pixel + 7) >> 3),
- &par->neo2200->dstStart);
- writel((rect->height << 16) | (rect->width & 0xffff),
- &par->neo2200->xyExt);
+ par->neo2200->dstStart =
+ dst * ((info->var.bits_per_pixel + 7) >> 3);
+ par->neo2200->xyExt =
+ (rect->height << 16) | (rect->width & 0xffff);
}
static void
neo2200_wait_fifo(info, 4);
/* set blt control */
- writel(bltCntl, &par->neo2200->bltCntl);
+ par->neo2200->bltCntl = bltCntl;
- writel(src, &par->neo2200->srcStart);
- writel(dst, &par->neo2200->dstStart);
- writel((area->height << 16) | (area->width & 0xffff),
- &par->neo2200->xyExt);
+ par->neo2200->srcStart = src;
+ par->neo2200->dstStart = dst;
+ par->neo2200->xyExt =
+ (area->height << 16) | (area->width & 0xffff);
}
static void
switch (info->var.bits_per_pixel) {
case 8:
- writel(image->fg_color, &par->neo2200->fgColor);
- writel(image->bg_color, &par->neo2200->bgColor);
+ par->neo2200->fgColor = image->fg_color;
+ par->neo2200->bgColor = image->bg_color;
break;
case 16:
case 24:
- writel(((u32 *) (info->pseudo_palette))[image->fg_color],
- &par->neo2200->fgColor);
- writel(((u32 *) (info->pseudo_palette))[image->bg_color],
- &par->neo2200->bgColor);
+ par->neo2200->fgColor =
+ ((u32 *) (info->pseudo_palette))[image->fg_color];
+ par->neo2200->bgColor =
+ ((u32 *) (info->pseudo_palette))[image->bg_color];
break;
}
- writel(NEO_BC0_SYS_TO_VID |
+ par->neo2200->bltCntl = NEO_BC0_SYS_TO_VID |
NEO_BC3_SKIP_MAPPING | bltCntl_flags |
// NEO_BC3_DST_XY_ADDR |
- 0x0c0000, &par->neo2200->bltCntl);
+ 0x0c0000;
- writel(0, &par->neo2200->srcStart);
+ par->neo2200->srcStart = 0;
// par->neo2200->dstStart = (image->dy << 16) | (image->dx & 0xffff);
- writel(((image->dx & 0xffff) * (info->var.bits_per_pixel >> 3) +
- image->dy * info->fix.line_length), &par->neo2200->dstStart);
- writel((image->height << 16) | (image->width & 0xffff),
- &par->neo2200->xyExt);
+ par->neo2200->dstStart =
+ ((image->dx & 0xffff) * (info->var.bits_per_pixel >> 3) +
+ image->dy * info->fix.line_length);
+ par->neo2200->xyExt =
+ (image->height << 16) | (image->width & 0xffff);
- memcpy_toio(par->mmio_vbase + 0x100000, image->data, data_len);
+ memcpy(par->mmio_vbase + 0x100000, image->data, data_len);
}
static void
#endif
/* Clear framebuffer, it's all white in memory after boot */
- memset_io(info->screen_base, 0, info->fix.smem_len);
+ memset(info->screen_base, 0, info->fix.smem_len);
/* Allocate Cursor drawing pad.
info->fix.smem_len -= PAGE_SIZE;
maxWidth = 1280;
maxHeight = 1024; /* ???? */
- par->neo2200 = (Neo2200 __iomem *) par->mmio_vbase;
+ par->neo2200 = (Neo2200 *) par->mmio_vbase;
break;
case FB_ACCEL_NEOMAGIC_NM2230:
videoRam = 3008;
maxWidth = 1280;
maxHeight = 1024; /* ???? */
- par->neo2200 = (Neo2200 __iomem *) par->mmio_vbase;
+ par->neo2200 = (Neo2200 *) par->mmio_vbase;
break;
case FB_ACCEL_NEOMAGIC_NM2360:
videoRam = 4096;
maxWidth = 1280;
maxHeight = 1024; /* ???? */
- par->neo2200 = (Neo2200 __iomem *) par->mmio_vbase;
+ par->neo2200 = (Neo2200 *) par->mmio_vbase;
break;
case FB_ACCEL_NEOMAGIC_NM2380:
videoRam = 6144;
maxWidth = 1280;
maxHeight = 1024; /* ???? */
- par->neo2200 = (Neo2200 __iomem *) par->mmio_vbase;
+ par->neo2200 = (Neo2200 *) par->mmio_vbase;
break;
}
/*