svga: Make svga_set_default_crt_regs() take an iomem regbase pointer.
[deliverable/linux.git] / drivers / video / svgalib.c
index fdb45674e2f628b906e3997cf22eebe7c38f6711..b0464977ed9ba794b3c901fa6568e236cea70714 100644 (file)
 
 
 /* Write a CRT register value spread across multiple registers */
-void svga_wcrt_multi(const struct vga_regset *regset, u32 value) {
-
+void svga_wcrt_multi(void __iomem *regbase, const struct vga_regset *regset, u32 value)
+{
        u8 regval, bitval, bitnum;
 
        while (regset->regnum != VGA_REGSET_END_VAL) {
-               regval = vga_rcrt(NULL, regset->regnum);
+               regval = vga_rcrt(regbase, regset->regnum);
                bitnum = regset->lowbit;
                while (bitnum <= regset->highbit) {
                        bitval = 1 << bitnum;
@@ -34,18 +34,18 @@ void svga_wcrt_multi(const struct vga_regset *regset, u32 value) {
                        bitnum ++;
                        value = value >> 1;
                }
-               vga_wcrt(NULL, regset->regnum, regval);
+               vga_wcrt(regbase, regset->regnum, regval);
                regset ++;
        }
 }
 
 /* Write a sequencer register value spread across multiple registers */
-void svga_wseq_multi(const struct vga_regset *regset, u32 value) {
-
+void svga_wseq_multi(void __iomem *regbase, const struct vga_regset *regset, u32 value)
+{
        u8 regval, bitval, bitnum;
 
        while (regset->regnum != VGA_REGSET_END_VAL) {
-               regval = vga_rseq(NULL, regset->regnum);
+               regval = vga_rseq(regbase, regset->regnum);
                bitnum = regset->lowbit;
                while (bitnum <= regset->highbit) {
                        bitval = 1 << bitnum;
@@ -54,7 +54,7 @@ void svga_wseq_multi(const struct vga_regset *regset, u32 value) {
                        bitnum ++;
                        value = value >> 1;
                }
-               vga_wseq(NULL, regset->regnum, regval);
+               vga_wseq(regbase, regset->regnum, regval);
                regset ++;
        }
 }
@@ -75,77 +75,77 @@ static unsigned int svga_regset_size(const struct vga_regset *regset)
 
 
 /* Set graphics controller registers to sane values */
-void svga_set_default_gfx_regs(void)
+void svga_set_default_gfx_regs(void __iomem *regbase)
 {
        /* All standard GFX registers (GR00 - GR08) */
-       vga_wgfx(NULL, VGA_GFX_SR_VALUE, 0x00);
-       vga_wgfx(NULL, VGA_GFX_SR_ENABLE, 0x00);
-       vga_wgfx(NULL, VGA_GFX_COMPARE_VALUE, 0x00);
-       vga_wgfx(NULL, VGA_GFX_DATA_ROTATE, 0x00);
-       vga_wgfx(NULL, VGA_GFX_PLANE_READ, 0x00);
-       vga_wgfx(NULL, VGA_GFX_MODE, 0x00);
-/*     vga_wgfx(NULL, VGA_GFX_MODE, 0x20); */
-/*     vga_wgfx(NULL, VGA_GFX_MODE, 0x40); */
-       vga_wgfx(NULL, VGA_GFX_MISC, 0x05);
-/*     vga_wgfx(NULL, VGA_GFX_MISC, 0x01); */
-       vga_wgfx(NULL, VGA_GFX_COMPARE_MASK, 0x0F);
-       vga_wgfx(NULL, VGA_GFX_BIT_MASK, 0xFF);
+       vga_wgfx(regbase, VGA_GFX_SR_VALUE, 0x00);
+       vga_wgfx(regbase, VGA_GFX_SR_ENABLE, 0x00);
+       vga_wgfx(regbase, VGA_GFX_COMPARE_VALUE, 0x00);
+       vga_wgfx(regbase, VGA_GFX_DATA_ROTATE, 0x00);
+       vga_wgfx(regbase, VGA_GFX_PLANE_READ, 0x00);
+       vga_wgfx(regbase, VGA_GFX_MODE, 0x00);
+/*     vga_wgfx(regbase, VGA_GFX_MODE, 0x20); */
+/*     vga_wgfx(regbase, VGA_GFX_MODE, 0x40); */
+       vga_wgfx(regbase, VGA_GFX_MISC, 0x05);
+/*     vga_wgfx(regbase, VGA_GFX_MISC, 0x01); */
+       vga_wgfx(regbase, VGA_GFX_COMPARE_MASK, 0x0F);
+       vga_wgfx(regbase, VGA_GFX_BIT_MASK, 0xFF);
 }
 
 /* Set attribute controller registers to sane values */
-void svga_set_default_atc_regs(void)
+void svga_set_default_atc_regs(void __iomem *regbase)
 {
        u8 count;
 
-       vga_r(NULL, 0x3DA);
-       vga_w(NULL, VGA_ATT_W, 0x00);
+       vga_r(regbase, 0x3DA);
+       vga_w(regbase, VGA_ATT_W, 0x00);
 
        /* All standard ATC registers (AR00 - AR14) */
        for (count = 0; count <= 0xF; count ++)
-               svga_wattr(count, count);
+               svga_wattr(regbase, count, count);
 
-       svga_wattr(VGA_ATC_MODE, 0x01);
-/*     svga_wattr(VGA_ATC_MODE, 0x41); */
-       svga_wattr(VGA_ATC_OVERSCAN, 0x00);
-       svga_wattr(VGA_ATC_PLANE_ENABLE, 0x0F);
-       svga_wattr(VGA_ATC_PEL, 0x00);
-       svga_wattr(VGA_ATC_COLOR_PAGE, 0x00);
+       svga_wattr(regbase, VGA_ATC_MODE, 0x01);
+/*     svga_wattr(regbase, VGA_ATC_MODE, 0x41); */
+       svga_wattr(regbase, VGA_ATC_OVERSCAN, 0x00);
+       svga_wattr(regbase, VGA_ATC_PLANE_ENABLE, 0x0F);
+       svga_wattr(regbase, VGA_ATC_PEL, 0x00);
+       svga_wattr(regbase, VGA_ATC_COLOR_PAGE, 0x00);
 
-       vga_r(NULL, 0x3DA);
-       vga_w(NULL, VGA_ATT_W, 0x20);
+       vga_r(regbase, 0x3DA);
+       vga_w(regbase, VGA_ATT_W, 0x20);
 }
 
 /* Set sequencer registers to sane values */
-void svga_set_default_seq_regs(void)
+void svga_set_default_seq_regs(void __iomem *regbase)
 {
        /* Standard sequencer registers (SR01 - SR04), SR00 is not set */
-       vga_wseq(NULL, VGA_SEQ_CLOCK_MODE, VGA_SR01_CHAR_CLK_8DOTS);
-       vga_wseq(NULL, VGA_SEQ_PLANE_WRITE, VGA_SR02_ALL_PLANES);
-       vga_wseq(NULL, VGA_SEQ_CHARACTER_MAP, 0x00);
-/*     vga_wseq(NULL, VGA_SEQ_MEMORY_MODE, VGA_SR04_EXT_MEM | VGA_SR04_SEQ_MODE | VGA_SR04_CHN_4M); */
-       vga_wseq(NULL, VGA_SEQ_MEMORY_MODE, VGA_SR04_EXT_MEM | VGA_SR04_SEQ_MODE);
+       vga_wseq(regbase, VGA_SEQ_CLOCK_MODE, VGA_SR01_CHAR_CLK_8DOTS);
+       vga_wseq(regbase, VGA_SEQ_PLANE_WRITE, VGA_SR02_ALL_PLANES);
+       vga_wseq(regbase, VGA_SEQ_CHARACTER_MAP, 0x00);
+/*     vga_wseq(regbase, VGA_SEQ_MEMORY_MODE, VGA_SR04_EXT_MEM | VGA_SR04_SEQ_MODE | VGA_SR04_CHN_4M); */
+       vga_wseq(regbase, VGA_SEQ_MEMORY_MODE, VGA_SR04_EXT_MEM | VGA_SR04_SEQ_MODE);
 }
 
 /* Set CRTC registers to sane values */
-void svga_set_default_crt_regs(void)
+void svga_set_default_crt_regs(void __iomem *regbase)
 {
        /* Standard CRT registers CR03 CR08 CR09 CR14 CR17 */
-       svga_wcrt_mask(0x03, 0x80, 0x80);       /* Enable vertical retrace EVRA */
-       vga_wcrt(NULL, VGA_CRTC_PRESET_ROW, 0);
-       svga_wcrt_mask(VGA_CRTC_MAX_SCAN, 0, 0x1F);
-       vga_wcrt(NULL, VGA_CRTC_UNDERLINE, 0);
-       vga_wcrt(NULL, VGA_CRTC_MODE, 0xE3);
+       svga_wcrt_mask(regbase, 0x03, 0x80, 0x80);      /* Enable vertical retrace EVRA */
+       vga_wcrt(regbase, VGA_CRTC_PRESET_ROW, 0);
+       svga_wcrt_mask(regbase, VGA_CRTC_MAX_SCAN, 0, 0x1F);
+       vga_wcrt(regbase, VGA_CRTC_UNDERLINE, 0);
+       vga_wcrt(regbase, VGA_CRTC_MODE, 0xE3);
 }
 
 void svga_set_textmode_vga_regs(void)
 {
-       /* svga_wseq_mask(0x1, 0x00, 0x01); */   /* Switch 8/9 pixel per char */
+       /* svga_wseq_mask(NULL, 0x1, 0x00, 0x01); */   /* Switch 8/9 pixel per char */
        vga_wseq(NULL, VGA_SEQ_MEMORY_MODE,     VGA_SR04_EXT_MEM);
        vga_wseq(NULL, VGA_SEQ_PLANE_WRITE,     0x03);
 
        vga_wcrt(NULL, VGA_CRTC_MAX_SCAN,       0x0f); /* 0x4f */
        vga_wcrt(NULL, VGA_CRTC_UNDERLINE,      0x1f);
-       svga_wcrt_mask(VGA_CRTC_MODE,           0x23, 0x7f);
+       svga_wcrt_mask(NULL, VGA_CRTC_MODE, 0x23, 0x7f);
 
        vga_wcrt(NULL, VGA_CRTC_CURSOR_START,   0x0d);
        vga_wcrt(NULL, VGA_CRTC_CURSOR_END,     0x0e);
@@ -159,8 +159,8 @@ void svga_set_textmode_vga_regs(void)
        vga_r(NULL, 0x3DA);
        vga_w(NULL, VGA_ATT_W, 0x00);
 
-       svga_wattr(0x10, 0x0C);                 /* Attribute Mode Control Register - text mode, blinking and line graphics */
-       svga_wattr(0x13, 0x08);                 /* Horizontal Pixel Panning Register  */
+       svga_wattr(NULL, 0x10, 0x0C);                   /* Attribute Mode Control Register - text mode, blinking and line graphics */
+       svga_wattr(NULL, 0x13, 0x08);                   /* Horizontal Pixel Panning Register  */
 
        vga_r(NULL, 0x3DA);
        vga_w(NULL, VGA_ATT_W, 0x20);
@@ -310,7 +310,7 @@ void svga_tilecursor(struct fb_info *info, struct fb_tilecursor *cursor)
        if (! cursor -> mode)
                return;
 
-       svga_wcrt_mask(0x0A, 0x20, 0x20); /* disable cursor */
+       svga_wcrt_mask(NULL, 0x0A, 0x20, 0x20); /* disable cursor */
 
        if (cursor -> shape == FB_TILE_CURSOR_NONE)
                return;
@@ -516,62 +516,62 @@ void svga_set_timings(const struct svga_timing_regs *tm, struct fb_var_screeninf
        value = var->xres + var->left_margin + var->right_margin + var->hsync_len;
        value = (value * hmul) / hdiv;
        pr_debug("fb%d: horizontal total      : %d\n", node, value);
-       svga_wcrt_multi(tm->h_total_regs, (value / 8) - 5);
+       svga_wcrt_multi(NULL, tm->h_total_regs, (value / 8) - 5);
 
        value = var->xres;
        value = (value * hmul) / hdiv;
        pr_debug("fb%d: horizontal display    : %d\n", node, value);
-       svga_wcrt_multi(tm->h_display_regs, (value / 8) - 1);
+       svga_wcrt_multi(NULL, tm->h_display_regs, (value / 8) - 1);
 
        value = var->xres;
        value = (value * hmul) / hdiv;
        pr_debug("fb%d: horizontal blank start: %d\n", node, value);
-       svga_wcrt_multi(tm->h_blank_start_regs, (value / 8) - 1 + hborder);
+       svga_wcrt_multi(NULL, tm->h_blank_start_regs, (value / 8) - 1 + hborder);
 
        value = var->xres + var->left_margin + var->right_margin + var->hsync_len;
        value = (value * hmul) / hdiv;
        pr_debug("fb%d: horizontal blank end  : %d\n", node, value);
-       svga_wcrt_multi(tm->h_blank_end_regs, (value / 8) - 1 - hborder);
+       svga_wcrt_multi(NULL, tm->h_blank_end_regs, (value / 8) - 1 - hborder);
 
        value = var->xres + var->right_margin;
        value = (value * hmul) / hdiv;
        pr_debug("fb%d: horizontal sync start : %d\n", node, value);
-       svga_wcrt_multi(tm->h_sync_start_regs, (value / 8));
+       svga_wcrt_multi(NULL, tm->h_sync_start_regs, (value / 8));
 
        value = var->xres + var->right_margin + var->hsync_len;
        value = (value * hmul) / hdiv;
        pr_debug("fb%d: horizontal sync end   : %d\n", node, value);
-       svga_wcrt_multi(tm->h_sync_end_regs, (value / 8));
+       svga_wcrt_multi(NULL, tm->h_sync_end_regs, (value / 8));
 
        value = var->yres + var->upper_margin + var->lower_margin + var->vsync_len;
        value = (value * vmul) / vdiv;
        pr_debug("fb%d: vertical total        : %d\n", node, value);
-       svga_wcrt_multi(tm->v_total_regs, value - 2);
+       svga_wcrt_multi(NULL, tm->v_total_regs, value - 2);
 
        value = var->yres;
        value = (value * vmul) / vdiv;
        pr_debug("fb%d: vertical display      : %d\n", node, value);
-       svga_wcrt_multi(tm->v_display_regs, value - 1);
+       svga_wcrt_multi(NULL, tm->v_display_regs, value - 1);
 
        value = var->yres;
        value = (value * vmul) / vdiv;
        pr_debug("fb%d: vertical blank start  : %d\n", node, value);
-       svga_wcrt_multi(tm->v_blank_start_regs, value);
+       svga_wcrt_multi(NULL, tm->v_blank_start_regs, value);
 
        value = var->yres + var->upper_margin + var->lower_margin + var->vsync_len;
        value = (value * vmul) / vdiv;
        pr_debug("fb%d: vertical blank end    : %d\n", node, value);
-       svga_wcrt_multi(tm->v_blank_end_regs, value - 2);
+       svga_wcrt_multi(NULL, tm->v_blank_end_regs, value - 2);
 
        value = var->yres + var->lower_margin;
        value = (value * vmul) / vdiv;
        pr_debug("fb%d: vertical sync start   : %d\n", node, value);
-       svga_wcrt_multi(tm->v_sync_start_regs, value);
+       svga_wcrt_multi(NULL, tm->v_sync_start_regs, value);
 
        value = var->yres + var->lower_margin + var->vsync_len;
        value = (value * vmul) / vdiv;
        pr_debug("fb%d: vertical sync end     : %d\n", node, value);
-       svga_wcrt_multi(tm->v_sync_end_regs, value);
+       svga_wcrt_multi(NULL, tm->v_sync_end_regs, value);
 
        /* Set horizontal and vertical sync pulse polarity in misc register */
 
This page took 0.032338 seconds and 5 git commands to generate.