Commit 1cc650c69f3079ce3c616c998a741bcf6ddf4f4d

Authored by Antonino A. Daplas
Committed by Linus Torvalds
1 parent 1013d26663

[PATCH] savagefb: Convert from VGA IO access to MMIO access

Use MMIO registers instead of banging the VGA IO registers.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

Showing 2 changed files with 537 additions and 487 deletions Side-by-side Diff

drivers/video/savage/savagefb.h
... ... @@ -169,6 +169,7 @@
169 169 struct savagefb_i2c_chan chan;
170 170 unsigned char *edid;
171 171 u32 pseudo_palette[16];
  172 + int paletteEnabled;
172 173 int pm_state;
173 174 int display_type;
174 175 int dvi;
175 176  
176 177  
177 178  
178 179  
179 180  
180 181  
181 182  
182 183  
183 184  
184 185  
185 186  
186 187  
187 188  
188 189  
189 190  
190 191  
191 192  
192 193  
193 194  
... ... @@ -244,105 +245,150 @@
244 245  
245 246  
246 247 /* IO functions */
  248 +static inline u8 savage_in8(u32 addr, struct savagefb_par *par)
  249 +{
  250 + return readb(par->mmio.vbase + addr);
  251 +}
247 252  
248   -#define vga_in8(addr) (inb (addr))
249   -#define vga_in16(addr) (inw (addr))
250   -#define vga_in32(addr) (inl (addr))
  253 +static inline u16 savage_in16(u32 addr, struct savagefb_par *par)
  254 +{
  255 + return readw(par->mmio.vbase + addr);
  256 +}
251 257  
252   -#define vga_out8(addr,val) (outb ((val), (addr)))
253   -#define vga_out16(addr,val) (outw ((val), (addr)))
254   -#define vga_out32(addr,val) (outl ((val), (addr)))
  258 +static inline u32 savage_in32(u32 addr, struct savagefb_par *par)
  259 +{
  260 + return readl(par->mmio.vbase + addr);
  261 +}
255 262  
256   -#define savage_in16(addr) readw(par->mmio.vbase + (addr))
257   -#define savage_in32(addr) readl(par->mmio.vbase + (addr))
  263 +static inline void savage_out8(u32 addr, u8 val, struct savagefb_par *par)
  264 +{
  265 + writeb(val, par->mmio.vbase + addr);
  266 +}
258 267  
259   -#define savage_out16(addr,val) writew((val), par->mmio.vbase + (addr))
260   -#define savage_out32(addr,val) writel((val), par->mmio.vbase + (addr))
  268 +static inline void savage_out16(u32 addr, u16 val, struct savagefb_par *par)
  269 +{
  270 + writew(val, par->mmio.vbase + addr);
  271 +}
261 272  
262   -static inline u8 VGArCR (u8 index)
  273 +static inline void savage_out32(u32 addr, u32 val, struct savagefb_par *par)
263 274 {
264   - outb (index, 0x3d4);
265   - return inb (0x3d5);
  275 + writel(val, par->mmio.vbase + addr);
266 276 }
267 277  
268   -static inline u8 VGArGR (u8 index)
  278 +static inline u8 vga_in8(int addr, struct savagefb_par *par)
269 279 {
270   - outb (index, 0x3ce);
271   - return inb (0x3cf);
  280 + return savage_in8(0x8000 + addr, par);
272 281 }
273 282  
274   -static inline u8 VGArSEQ (u8 index)
  283 +static inline u16 vga_in16(int addr, struct savagefb_par *par)
275 284 {
276   - outb (index, 0x3c4);
277   - return inb (0x3c5);
  285 + return savage_in16(0x8000 + addr, par);
278 286 }
279 287  
280   -#define VGAwCR(index, val) \
281   -do { \
282   - vga_out8 (0x3d4, index); \
283   - vga_out8 (0x3d5, val); \
284   -} while (0)
  288 +static inline u8 vga_in32(int addr, struct savagefb_par *par)
  289 +{
  290 + return savage_in32(0x8000 + addr, par);
  291 +}
285 292  
286   -#define VGAwGR(index, val) \
287   -do { \
288   - vga_out8 (0x3ce, index); \
289   - vga_out8 (0x3cf, val); \
290   -} while (0)
  293 +static inline void vga_out8(int addr, u8 val, struct savagefb_par *par)
  294 +{
  295 + savage_out8(0x8000 + addr, val, par);
  296 +}
291 297  
292   -#define VGAwSEQ(index, val) \
293   -do { \
294   - vga_out8 (0x3c4, index); \
295   - vga_out8 (0x3c5, val); \
296   -} while (0)
  298 +static inline void vga_out16(int addr, u16 val, struct savagefb_par *par)
  299 +{
  300 + savage_out16(0x8000 + addr, val, par);
  301 +}
297 302  
298   -#define VGAenablePalette() \
299   -do { \
300   - u8 tmp; \
301   - \
302   - tmp = vga_in8 (0x3da); \
303   - vga_out8 (0x3c0, 0x00); \
304   - paletteEnabled = 1; \
305   -} while (0)
  303 +static inline void vga_out32(int addr, u32 val, struct savagefb_par *par)
  304 +{
  305 + savage_out32(0x8000 + addr, val, par);
  306 +}
306 307  
307   -#define VGAdisablePalette() \
308   -do { \
309   - u8 tmp; \
310   - \
311   - tmp = vga_in8 (0x3da); \
312   - vga_out8 (0x3c0, 0x20); \
313   - paletteEnabled = 0; \
314   -} while (0)
  308 +static inline u8 VGArCR (u8 index, struct savagefb_par *par)
  309 +{
  310 + vga_out8(0x3d4, index, par);
  311 + return vga_in8(0x3d5, par);
  312 +}
315 313  
316   -#define VGAwATTR(index, value) \
317   -do { \
318   - u8 tmp; \
319   - \
320   - if (paletteEnabled) \
321   - index &= ~0x20; \
322   - else \
323   - index |= 0x20; \
324   - \
325   - tmp = vga_in8 (0x3da); \
326   - vga_out8 (0x3c0, index); \
327   - vga_out8 (0x3c0, value); \
328   -} while (0)
  314 +static inline u8 VGArGR (u8 index, struct savagefb_par *par)
  315 +{
  316 + vga_out8(0x3ce, index, par);
  317 + return vga_in8(0x3cf, par);
  318 +}
329 319  
330   -#define VGAwMISC(value) \
331   -do { \
332   - vga_out8 (0x3c2, value); \
333   -} while (0)
  320 +static inline u8 VGArSEQ (u8 index, struct savagefb_par *par)
  321 +{
  322 + vga_out8(0x3c4, index, par);
  323 + return vga_in8(0x3c5, par);
  324 +}
334 325  
  326 +static inline void VGAwCR(u8 index, u8 val, struct savagefb_par *par)
  327 +{
  328 + vga_out8(0x3d4, index, par);
  329 + vga_out8(0x3d5, val, par);
  330 +}
  331 +
  332 +static inline void VGAwGR(u8 index, u8 val, struct savagefb_par *par)
  333 +{
  334 + vga_out8(0x3ce, index, par);
  335 + vga_out8(0x3cf, val, par);
  336 +}
  337 +
  338 +static inline void VGAwSEQ(u8 index, u8 val, struct savagefb_par *par)
  339 +{
  340 + vga_out8(0x3c4, index, par);
  341 + vga_out8 (0x3c5, val, par);
  342 +}
  343 +
  344 +static inline void VGAenablePalette(struct savagefb_par *par)
  345 +{
  346 + u8 tmp;
  347 +
  348 + tmp = vga_in8(0x3da, par);
  349 + vga_out8(0x3c0, 0x00, par);
  350 + par->paletteEnabled = 1;
  351 +}
  352 +
  353 +static inline void VGAdisablePalette(struct savagefb_par *par)
  354 +{
  355 + u8 tmp;
  356 +
  357 + tmp = vga_in8(0x3da, par);
  358 + vga_out8(0x3c0, 0x20, par);
  359 + par->paletteEnabled = 0;
  360 +}
  361 +
  362 +static inline void VGAwATTR(u8 index, u8 value, struct savagefb_par *par)
  363 +{
  364 + u8 tmp;
  365 +
  366 + if (par->paletteEnabled)
  367 + index &= ~0x20;
  368 + else
  369 + index |= 0x20;
  370 +
  371 + tmp = vga_in8(0x3da, par);
  372 + vga_out8(0x3c0, index, par);
  373 + vga_out8 (0x3c0, value, par);
  374 +}
  375 +
  376 +static inline void VGAwMISC(u8 value, struct savagefb_par *par)
  377 +{
  378 + vga_out8(0x3c2, value, par);
  379 +}
  380 +
335 381 #ifndef CONFIG_FB_SAVAGE_ACCEL
336 382 #define savagefb_set_clip(x)
337 383 #endif
338 384  
339   -#define VerticalRetraceWait() \
340   -{ \
341   - vga_out8 (0x3d4, 0x17); \
342   - if (vga_in8 (0x3d5) & 0x80) { \
343   - while ((vga_in8(0x3da) & 0x08) == 0x08) ; \
344   - while ((vga_in8(0x3da) & 0x08) == 0x00) ; \
345   - } \
  385 +static inline void VerticalRetraceWait(struct savagefb_par *par)
  386 +{
  387 + vga_out8(0x3d4, 0x17, par);
  388 + if (vga_in8(0x3d5, par) & 0x80) {
  389 + while ((vga_in8(0x3da, par) & 0x08) == 0x08);
  390 + while ((vga_in8(0x3da, par) & 0x08) == 0x00);
  391 + }
346 392 }
347 393  
348 394 extern int savagefb_probe_i2c_connector(struct fb_info *info,
drivers/video/savage/savagefb_driver.c
Changes suppressed. Click to show
... ... @@ -74,7 +74,6 @@
74 74  
75 75  
76 76 static char *mode_option __initdata = NULL;
77   -static int paletteEnabled = 0;
78 77  
79 78 #ifdef MODULE
80 79  
81 80  
... ... @@ -90,9 +89,9 @@
90 89 static void vgaHWSeqReset (struct savagefb_par *par, int start)
91 90 {
92 91 if (start)
93   - VGAwSEQ (0x00, 0x01); /* Synchronous Reset */
  92 + VGAwSEQ (0x00, 0x01, par); /* Synchronous Reset */
94 93 else
95   - VGAwSEQ (0x00, 0x03); /* End Reset */
  94 + VGAwSEQ (0x00, 0x03, par); /* End Reset */
96 95 }
97 96  
98 97 static void vgaHWProtect (struct savagefb_par *par, int on)
99 98  
100 99  
101 100  
102 101  
103 102  
... ... @@ -103,23 +102,23 @@
103 102 /*
104 103 * Turn off screen and disable sequencer.
105 104 */
106   - tmp = VGArSEQ (0x01);
  105 + tmp = VGArSEQ (0x01, par);
107 106  
108 107 vgaHWSeqReset (par, 1); /* start synchronous reset */
109   - VGAwSEQ (0x01, tmp | 0x20); /* disable the display */
  108 + VGAwSEQ (0x01, tmp | 0x20, par);/* disable the display */
110 109  
111   - VGAenablePalette();
  110 + VGAenablePalette(par);
112 111 } else {
113 112 /*
114 113 * Reenable sequencer, then turn on screen.
115 114 */
116 115  
117   - tmp = VGArSEQ (0x01);
  116 + tmp = VGArSEQ (0x01, par);
118 117  
119   - VGAwSEQ (0x01, tmp & ~0x20); /* reenable display */
  118 + VGAwSEQ (0x01, tmp & ~0x20, par);/* reenable display */
120 119 vgaHWSeqReset (par, 0); /* clear synchronous reset */
121 120  
122   - VGAdisablePalette();
  121 + VGAdisablePalette(par);
123 122 }
124 123 }
125 124  
126 125  
127 126  
128 127  
129 128  
130 129  
131 130  
132 131  
... ... @@ -127,27 +126,27 @@
127 126 {
128 127 int i;
129 128  
130   - VGAwMISC (par->MiscOutReg);
  129 + VGAwMISC (par->MiscOutReg, par);
131 130  
132 131 for (i = 1; i < 5; i++)
133   - VGAwSEQ (i, par->Sequencer[i]);
  132 + VGAwSEQ (i, par->Sequencer[i], par);
134 133  
135 134 /* Ensure CRTC registers 0-7 are unlocked by clearing bit 7 or
136 135 CRTC[17] */
137   - VGAwCR (17, par->CRTC[17] & ~0x80);
  136 + VGAwCR (17, par->CRTC[17] & ~0x80, par);
138 137  
139 138 for (i = 0; i < 25; i++)
140   - VGAwCR (i, par->CRTC[i]);
  139 + VGAwCR (i, par->CRTC[i], par);
141 140  
142 141 for (i = 0; i < 9; i++)
143   - VGAwGR (i, par->Graphics[i]);
  142 + VGAwGR (i, par->Graphics[i], par);
144 143  
145   - VGAenablePalette();
  144 + VGAenablePalette(par);
146 145  
147 146 for (i = 0; i < 21; i++)
148   - VGAwATTR (i, par->Attribute[i]);
  147 + VGAwATTR (i, par->Attribute[i], par);
149 148  
150   - VGAdisablePalette();
  149 + VGAdisablePalette(par);
151 150 }
152 151  
153 152 static void vgaHWInit (struct fb_var_screeninfo *var,
... ... @@ -267,7 +266,7 @@
267 266 {
268 267 int slots = MAXFIFO - space;
269 268  
270   - while ((savage_in32(0x48C00) & 0x0000ffff) > slots);
  269 + while ((savage_in32(0x48C00, par) & 0x0000ffff) > slots);
271 270 }
272 271  
273 272 static void
... ... @@ -275,7 +274,7 @@
275 274 {
276 275 int slots = MAXFIFO - space;
277 276  
278   - while ((savage_in32(0x48C60) & 0x001fffff) > slots);
  277 + while ((savage_in32(0x48C60, par) & 0x001fffff) > slots);
279 278 }
280 279  
281 280 static void
282 281  
283 282  
284 283  
... ... @@ -283,26 +282,26 @@
283 282 {
284 283 int slots = MAXFIFO - space;
285 284  
286   - while ((savage_in32(0x48C60) & 0x0000ffff) > slots);
  285 + while ((savage_in32(0x48C60, par) & 0x0000ffff) > slots);
287 286 }
288 287  
289 288 /* Wait for idle accelerator */
290 289 static void
291 290 savage3D_waitidle(struct savagefb_par *par)
292 291 {
293   - while ((savage_in32(0x48C00) & 0x0008ffff) != 0x80000);
  292 + while ((savage_in32(0x48C00, par) & 0x0008ffff) != 0x80000);
294 293 }
295 294  
296 295 static void
297 296 savage4_waitidle(struct savagefb_par *par)
298 297 {
299   - while ((savage_in32(0x48C60) & 0x00a00000) != 0x00a00000);
  298 + while ((savage_in32(0x48C60, par) & 0x00a00000) != 0x00a00000);
300 299 }
301 300  
302 301 static void
303 302 savage2000_waitidle(struct savagefb_par *par)
304 303 {
305   - while ((savage_in32(0x48C60) & 0x009fffff));
  304 + while ((savage_in32(0x48C60, par) & 0x009fffff));
306 305 }
307 306  
308 307  
309 308  
310 309  
311 310  
312 311  
313 312  
314 313  
315 314  
316 315  
317 316  
318 317  
319 318  
320 319  
321 320  
322 321  
323 322  
... ... @@ -319,59 +318,64 @@
319 318 case S3_SAVAGE3D:
320 319 case S3_SAVAGE_MX:
321 320 /* Disable BCI */
322   - savage_out32(0x48C18, savage_in32(0x48C18) & 0x3FF0);
  321 + savage_out32(0x48C18, savage_in32(0x48C18, par) & 0x3FF0, par);
323 322 /* Setup BCI command overflow buffer */
324   - savage_out32(0x48C14, (par->cob_offset >> 11) | (par->cob_index << 29));
  323 + savage_out32(0x48C14,
  324 + (par->cob_offset >> 11) | (par->cob_index << 29),
  325 + par);
325 326 /* Program shadow status update. */
326   - savage_out32(0x48C10, 0x78207220);
327   - savage_out32(0x48C0C, 0);
  327 + savage_out32(0x48C10, 0x78207220, par);
  328 + savage_out32(0x48C0C, 0, par);
328 329 /* Enable BCI and command overflow buffer */
329   - savage_out32(0x48C18, savage_in32(0x48C18) | 0x0C);
  330 + savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x0C, par);
330 331 break;
331 332 case S3_SAVAGE4:
332 333 case S3_PROSAVAGE:
333 334 case S3_SUPERSAVAGE:
334 335 /* Disable BCI */
335   - savage_out32(0x48C18, savage_in32(0x48C18) & 0x3FF0);
  336 + savage_out32(0x48C18, savage_in32(0x48C18, par) & 0x3FF0, par);
336 337 /* Program shadow status update */
337   - savage_out32(0x48C10, 0x00700040);
338   - savage_out32(0x48C0C, 0);
  338 + savage_out32(0x48C10, 0x00700040, par);
  339 + savage_out32(0x48C0C, 0, par);
339 340 /* Enable BCI without the COB */
340   - savage_out32(0x48C18, savage_in32(0x48C18) | 0x08);
  341 + savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x08, par);
341 342 break;
342 343 case S3_SAVAGE2000:
343 344 /* Disable BCI */
344   - savage_out32(0x48C18, 0);
  345 + savage_out32(0x48C18, 0, par);
345 346 /* Setup BCI command overflow buffer */
346   - savage_out32(0x48C18, (par->cob_offset >> 7) | (par->cob_index));
  347 + savage_out32(0x48C18,
  348 + (par->cob_offset >> 7) | (par->cob_index),
  349 + par);
347 350 /* Disable shadow status update */
348   - savage_out32(0x48A30, 0);
  351 + savage_out32(0x48A30, 0, par);
349 352 /* Enable BCI and command overflow buffer */
350   - savage_out32(0x48C18, savage_in32(0x48C18) | 0x00280000 );
  353 + savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x00280000,
  354 + par);
351 355 break;
352 356 default:
353 357 break;
354 358 }
355 359 /* Turn on 16-bit register access. */
356   - vga_out8(0x3d4, 0x31);
357   - vga_out8(0x3d5, 0x0c);
  360 + vga_out8(0x3d4, 0x31, par);
  361 + vga_out8(0x3d5, 0x0c, par);
358 362  
359 363 /* Set stride to use GBD. */
360   - vga_out8 (0x3d4, 0x50);
361   - vga_out8 (0x3d5, vga_in8 (0x3d5 ) | 0xC1);
  364 + vga_out8 (0x3d4, 0x50, par);
  365 + vga_out8 (0x3d5, vga_in8(0x3d5, par) | 0xC1, par);
362 366  
363 367 /* Enable 2D engine. */
364   - vga_out8 (0x3d4, 0x40 );
365   - vga_out8 (0x3d5, 0x01 );
  368 + vga_out8 (0x3d4, 0x40, par);
  369 + vga_out8 (0x3d5, 0x01, par);
366 370  
367   - savage_out32 (MONO_PAT_0, ~0);
368   - savage_out32 (MONO_PAT_1, ~0);
  371 + savage_out32 (MONO_PAT_0, ~0, par);
  372 + savage_out32 (MONO_PAT_1, ~0, par);
369 373  
370 374 /* Setup plane masks */
371   - savage_out32 (0x8128, ~0 ); /* enable all write planes */
372   - savage_out32 (0x812C, ~0 ); /* enable all read planes */
373   - savage_out16 (0x8134, 0x27 );
374   - savage_out16 (0x8136, 0x07 );
  375 + savage_out32 (0x8128, ~0, par); /* enable all write planes */
  376 + savage_out32 (0x812C, ~0, par); /* enable all read planes */
  377 + savage_out16 (0x8134, 0x27, par);
  378 + savage_out16 (0x8136, 0x07, par);
375 379  
376 380 /* Now set the GBD */
377 381 par->bci_ptr = 0;
... ... @@ -489,8 +493,8 @@
489 493 for( i = 0; i < 0x70; i++ ) {
490 494 if( !(i % 16) )
491 495 printk(KERN_DEBUG "\nSR%xx ", i >> 4 );
492   - vga_out8( 0x3c4, i );
493   - printk(KERN_DEBUG " %02x", vga_in8(0x3c5) );
  496 + vga_out8( 0x3c4, i, par);
  497 + printk(KERN_DEBUG " %02x", vga_in8(0x3c5, par) );
494 498 }
495 499  
496 500 printk(KERN_DEBUG "\n\nCR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC "
... ... @@ -499,8 +503,8 @@
499 503 for( i = 0; i < 0xB7; i++ ) {
500 504 if( !(i % 16) )
501 505 printk(KERN_DEBUG "\nCR%xx ", i >> 4 );
502   - vga_out8( vgaCRIndex, i );
503   - printk(KERN_DEBUG " %02x", vga_in8(vgaCRReg) );
  506 + vga_out8( vgaCRIndex, i, par);
  507 + printk(KERN_DEBUG " %02x", vga_in8(vgaCRReg, par) );
504 508 }
505 509  
506 510 printk(KERN_DEBUG "\n\n");
507 511  
508 512  
509 513  
510 514  
511 515  
512 516  
513 517  
514 518  
515 519  
516 520  
517 521  
518 522  
519 523  
... ... @@ -513,152 +517,152 @@
513 517 {
514 518 unsigned char cr3a, cr53, cr66;
515 519  
516   - vga_out16 (0x3d4, 0x4838);
517   - vga_out16 (0x3d4, 0xa039);
518   - vga_out16 (0x3c4, 0x0608);
  520 + vga_out16 (0x3d4, 0x4838, par);
  521 + vga_out16 (0x3d4, 0xa039, par);
  522 + vga_out16 (0x3c4, 0x0608, par);
519 523  
520   - vga_out8 (0x3d4, 0x66);
521   - cr66 = vga_in8 (0x3d5);
522   - vga_out8 (0x3d5, cr66 | 0x80);
523   - vga_out8 (0x3d4, 0x3a);
524   - cr3a = vga_in8 (0x3d5);
525   - vga_out8 (0x3d5, cr3a | 0x80);
526   - vga_out8 (0x3d4, 0x53);
527   - cr53 = vga_in8 (0x3d5);
528   - vga_out8 (0x3d5, cr53 & 0x7f);
  524 + vga_out8 (0x3d4, 0x66, par);
  525 + cr66 = vga_in8 (0x3d5, par);
  526 + vga_out8 (0x3d5, cr66 | 0x80, par);
  527 + vga_out8 (0x3d4, 0x3a, par);
  528 + cr3a = vga_in8 (0x3d5, par);
  529 + vga_out8 (0x3d5, cr3a | 0x80, par);
  530 + vga_out8 (0x3d4, 0x53, par);
  531 + cr53 = vga_in8 (0x3d5, par);
  532 + vga_out8 (0x3d5, cr53 & 0x7f, par);
529 533  
530   - vga_out8 (0x3d4, 0x66);
531   - vga_out8 (0x3d5, cr66);
532   - vga_out8 (0x3d4, 0x3a);
533   - vga_out8 (0x3d5, cr3a);
  534 + vga_out8 (0x3d4, 0x66, par);
  535 + vga_out8 (0x3d5, cr66, par);
  536 + vga_out8 (0x3d4, 0x3a, par);
  537 + vga_out8 (0x3d5, cr3a, par);
534 538  
535   - vga_out8 (0x3d4, 0x66);
536   - vga_out8 (0x3d5, cr66);
537   - vga_out8 (0x3d4, 0x3a);
538   - vga_out8 (0x3d5, cr3a);
  539 + vga_out8 (0x3d4, 0x66, par);
  540 + vga_out8 (0x3d5, cr66, par);
  541 + vga_out8 (0x3d4, 0x3a, par);
  542 + vga_out8 (0x3d5, cr3a, par);
539 543  
540 544 /* unlock extended seq regs */
541   - vga_out8 (0x3c4, 0x08);
542   - par->SR08 = vga_in8 (0x3c5);
543   - vga_out8 (0x3c5, 0x06);
  545 + vga_out8 (0x3c4, 0x08, par);
  546 + par->SR08 = vga_in8 (0x3c5, par);
  547 + vga_out8 (0x3c5, 0x06, par);
544 548  
545 549 /* now save all the extended regs we need */
546   - vga_out8 (0x3d4, 0x31);
547   - par->CR31 = vga_in8 (0x3d5);
548   - vga_out8 (0x3d4, 0x32);
549   - par->CR32 = vga_in8 (0x3d5);
550   - vga_out8 (0x3d4, 0x34);
551   - par->CR34 = vga_in8 (0x3d5);
552   - vga_out8 (0x3d4, 0x36);
553   - par->CR36 = vga_in8 (0x3d5);
554   - vga_out8 (0x3d4, 0x3a);
555   - par->CR3A = vga_in8 (0x3d5);
556   - vga_out8 (0x3d4, 0x40);
557   - par->CR40 = vga_in8 (0x3d5);
558   - vga_out8 (0x3d4, 0x42);
559   - par->CR42 = vga_in8 (0x3d5);
560   - vga_out8 (0x3d4, 0x45);
561   - par->CR45 = vga_in8 (0x3d5);
562   - vga_out8 (0x3d4, 0x50);
563   - par->CR50 = vga_in8 (0x3d5);
564   - vga_out8 (0x3d4, 0x51);
565   - par->CR51 = vga_in8 (0x3d5);
566   - vga_out8 (0x3d4, 0x53);
567   - par->CR53 = vga_in8 (0x3d5);
568   - vga_out8 (0x3d4, 0x58);
569   - par->CR58 = vga_in8 (0x3d5);
570   - vga_out8 (0x3d4, 0x60);
571   - par->CR60 = vga_in8 (0x3d5);
572   - vga_out8 (0x3d4, 0x66);
573   - par->CR66 = vga_in8 (0x3d5);
574   - vga_out8 (0x3d4, 0x67);
575   - par->CR67 = vga_in8 (0x3d5);
576   - vga_out8 (0x3d4, 0x68);
577   - par->CR68 = vga_in8 (0x3d5);
578   - vga_out8 (0x3d4, 0x69);
579   - par->CR69 = vga_in8 (0x3d5);
580   - vga_out8 (0x3d4, 0x6f);
581   - par->CR6F = vga_in8 (0x3d5);
  550 + vga_out8 (0x3d4, 0x31, par);
  551 + par->CR31 = vga_in8 (0x3d5, par);
  552 + vga_out8 (0x3d4, 0x32, par);
  553 + par->CR32 = vga_in8 (0x3d5, par);
  554 + vga_out8 (0x3d4, 0x34, par);
  555 + par->CR34 = vga_in8 (0x3d5, par);
  556 + vga_out8 (0x3d4, 0x36, par);
  557 + par->CR36 = vga_in8 (0x3d5, par);
  558 + vga_out8 (0x3d4, 0x3a, par);
  559 + par->CR3A = vga_in8 (0x3d5, par);
  560 + vga_out8 (0x3d4, 0x40, par);
  561 + par->CR40 = vga_in8 (0x3d5, par);
  562 + vga_out8 (0x3d4, 0x42, par);
  563 + par->CR42 = vga_in8 (0x3d5, par);
  564 + vga_out8 (0x3d4, 0x45, par);
  565 + par->CR45 = vga_in8 (0x3d5, par);
  566 + vga_out8 (0x3d4, 0x50, par);
  567 + par->CR50 = vga_in8 (0x3d5, par);
  568 + vga_out8 (0x3d4, 0x51, par);
  569 + par->CR51 = vga_in8 (0x3d5, par);
  570 + vga_out8 (0x3d4, 0x53, par);
  571 + par->CR53 = vga_in8 (0x3d5, par);
  572 + vga_out8 (0x3d4, 0x58, par);
  573 + par->CR58 = vga_in8 (0x3d5, par);
  574 + vga_out8 (0x3d4, 0x60, par);
  575 + par->CR60 = vga_in8 (0x3d5, par);
  576 + vga_out8 (0x3d4, 0x66, par);
  577 + par->CR66 = vga_in8 (0x3d5, par);
  578 + vga_out8 (0x3d4, 0x67, par);
  579 + par->CR67 = vga_in8 (0x3d5, par);
  580 + vga_out8 (0x3d4, 0x68, par);
  581 + par->CR68 = vga_in8 (0x3d5, par);
  582 + vga_out8 (0x3d4, 0x69, par);
  583 + par->CR69 = vga_in8 (0x3d5, par);
  584 + vga_out8 (0x3d4, 0x6f, par);
  585 + par->CR6F = vga_in8 (0x3d5, par);
582 586  
583   - vga_out8 (0x3d4, 0x33);
584   - par->CR33 = vga_in8 (0x3d5);
585   - vga_out8 (0x3d4, 0x86);
586   - par->CR86 = vga_in8 (0x3d5);
587   - vga_out8 (0x3d4, 0x88);
588   - par->CR88 = vga_in8 (0x3d5);
589   - vga_out8 (0x3d4, 0x90);
590   - par->CR90 = vga_in8 (0x3d5);
591   - vga_out8 (0x3d4, 0x91);
592   - par->CR91 = vga_in8 (0x3d5);
593   - vga_out8 (0x3d4, 0xb0);
594   - par->CRB0 = vga_in8 (0x3d5) | 0x80;
  587 + vga_out8 (0x3d4, 0x33, par);
  588 + par->CR33 = vga_in8 (0x3d5, par);
  589 + vga_out8 (0x3d4, 0x86, par);
  590 + par->CR86 = vga_in8 (0x3d5, par);
  591 + vga_out8 (0x3d4, 0x88, par);
  592 + par->CR88 = vga_in8 (0x3d5, par);
  593 + vga_out8 (0x3d4, 0x90, par);
  594 + par->CR90 = vga_in8 (0x3d5, par);
  595 + vga_out8 (0x3d4, 0x91, par);
  596 + par->CR91 = vga_in8 (0x3d5, par);
  597 + vga_out8 (0x3d4, 0xb0, par);
  598 + par->CRB0 = vga_in8 (0x3d5, par) | 0x80;
595 599  
596 600 /* extended mode timing regs */
597   - vga_out8 (0x3d4, 0x3b);
598   - par->CR3B = vga_in8 (0x3d5);
599   - vga_out8 (0x3d4, 0x3c);
600   - par->CR3C = vga_in8 (0x3d5);
601   - vga_out8 (0x3d4, 0x43);
602   - par->CR43 = vga_in8 (0x3d5);
603   - vga_out8 (0x3d4, 0x5d);
604   - par->CR5D = vga_in8 (0x3d5);
605   - vga_out8 (0x3d4, 0x5e);
606   - par->CR5E = vga_in8 (0x3d5);
607   - vga_out8 (0x3d4, 0x65);
608   - par->CR65 = vga_in8 (0x3d5);
  601 + vga_out8 (0x3d4, 0x3b, par);
  602 + par->CR3B = vga_in8 (0x3d5, par);
  603 + vga_out8 (0x3d4, 0x3c, par);
  604 + par->CR3C = vga_in8 (0x3d5, par);
  605 + vga_out8 (0x3d4, 0x43, par);
  606 + par->CR43 = vga_in8 (0x3d5, par);
  607 + vga_out8 (0x3d4, 0x5d, par);
  608 + par->CR5D = vga_in8 (0x3d5, par);
  609 + vga_out8 (0x3d4, 0x5e, par);
  610 + par->CR5E = vga_in8 (0x3d5, par);
  611 + vga_out8 (0x3d4, 0x65, par);
  612 + par->CR65 = vga_in8 (0x3d5, par);
609 613  
610 614 /* save seq extended regs for DCLK PLL programming */
611   - vga_out8 (0x3c4, 0x0e);
612   - par->SR0E = vga_in8 (0x3c5);
613   - vga_out8 (0x3c4, 0x0f);
614   - par->SR0F = vga_in8 (0x3c5);
615   - vga_out8 (0x3c4, 0x10);
616   - par->SR10 = vga_in8 (0x3c5);
617   - vga_out8 (0x3c4, 0x11);
618   - par->SR11 = vga_in8 (0x3c5);
619   - vga_out8 (0x3c4, 0x12);
620   - par->SR12 = vga_in8 (0x3c5);
621   - vga_out8 (0x3c4, 0x13);
622   - par->SR13 = vga_in8 (0x3c5);
623   - vga_out8 (0x3c4, 0x29);
624   - par->SR29 = vga_in8 (0x3c5);
  615 + vga_out8 (0x3c4, 0x0e, par);
  616 + par->SR0E = vga_in8 (0x3c5, par);
  617 + vga_out8 (0x3c4, 0x0f, par);
  618 + par->SR0F = vga_in8 (0x3c5, par);
  619 + vga_out8 (0x3c4, 0x10, par);
  620 + par->SR10 = vga_in8 (0x3c5, par);
  621 + vga_out8 (0x3c4, 0x11, par);
  622 + par->SR11 = vga_in8 (0x3c5, par);
  623 + vga_out8 (0x3c4, 0x12, par);
  624 + par->SR12 = vga_in8 (0x3c5, par);
  625 + vga_out8 (0x3c4, 0x13, par);
  626 + par->SR13 = vga_in8 (0x3c5, par);
  627 + vga_out8 (0x3c4, 0x29, par);
  628 + par->SR29 = vga_in8 (0x3c5, par);
625 629  
626   - vga_out8 (0x3c4, 0x15);
627   - par->SR15 = vga_in8 (0x3c5);
628   - vga_out8 (0x3c4, 0x30);
629   - par->SR30 = vga_in8 (0x3c5);
630   - vga_out8 (0x3c4, 0x18);
631   - par->SR18 = vga_in8 (0x3c5);
  630 + vga_out8 (0x3c4, 0x15, par);
  631 + par->SR15 = vga_in8 (0x3c5, par);
  632 + vga_out8 (0x3c4, 0x30, par);
  633 + par->SR30 = vga_in8 (0x3c5, par);
  634 + vga_out8 (0x3c4, 0x18, par);
  635 + par->SR18 = vga_in8 (0x3c5, par);
632 636  
633 637 /* Save flat panel expansion regsters. */
634 638 if (par->chip == S3_SAVAGE_MX) {
635 639 int i;
636 640  
637 641 for (i = 0; i < 8; i++) {
638   - vga_out8 (0x3c4, 0x54+i);
639   - par->SR54[i] = vga_in8 (0x3c5);
  642 + vga_out8 (0x3c4, 0x54+i, par);
  643 + par->SR54[i] = vga_in8 (0x3c5, par);
640 644 }
641 645 }
642 646  
643   - vga_out8 (0x3d4, 0x66);
644   - cr66 = vga_in8 (0x3d5);
645   - vga_out8 (0x3d5, cr66 | 0x80);
646   - vga_out8 (0x3d4, 0x3a);
647   - cr3a = vga_in8 (0x3d5);
648   - vga_out8 (0x3d5, cr3a | 0x80);
  647 + vga_out8 (0x3d4, 0x66, par);
  648 + cr66 = vga_in8 (0x3d5, par);
  649 + vga_out8 (0x3d5, cr66 | 0x80, par);
  650 + vga_out8 (0x3d4, 0x3a, par);
  651 + cr3a = vga_in8 (0x3d5, par);
  652 + vga_out8 (0x3d5, cr3a | 0x80, par);
649 653  
650 654 /* now save MIU regs */
651 655 if (par->chip != S3_SAVAGE_MX) {
652   - par->MMPR0 = savage_in32(FIFO_CONTROL_REG);
653   - par->MMPR1 = savage_in32(MIU_CONTROL_REG);
654   - par->MMPR2 = savage_in32(STREAMS_TIMEOUT_REG);
655   - par->MMPR3 = savage_in32(MISC_TIMEOUT_REG);
  656 + par->MMPR0 = savage_in32(FIFO_CONTROL_REG, par);
  657 + par->MMPR1 = savage_in32(MIU_CONTROL_REG, par);
  658 + par->MMPR2 = savage_in32(STREAMS_TIMEOUT_REG, par);
  659 + par->MMPR3 = savage_in32(MISC_TIMEOUT_REG, par);
656 660 }
657 661  
658   - vga_out8 (0x3d4, 0x3a);
659   - vga_out8 (0x3d5, cr3a);
660   - vga_out8 (0x3d4, 0x66);
661   - vga_out8 (0x3d5, cr66);
  662 + vga_out8 (0x3d4, 0x3a, par);
  663 + vga_out8 (0x3d5, cr3a, par);
  664 + vga_out8 (0x3d4, 0x66, par);
  665 + vga_out8 (0x3d5, cr66, par);
662 666 }
663 667  
664 668 static void savage_update_var(struct fb_var_screeninfo *var, struct fb_videomode *modedb)
... ... @@ -868,8 +872,8 @@
868 872 * match. Fall back to traditional register-crunching.
869 873 */
870 874  
871   - vga_out8 (0x3d4, 0x3a);
872   - tmp = vga_in8 (0x3d5);
  875 + vga_out8 (0x3d4, 0x3a, par);
  876 + tmp = vga_in8 (0x3d5, par);
873 877 if (1 /*FIXME:psav->pci_burst*/)
874 878 par->CR3A = (tmp & 0x7f) | 0x15;
875 879 else
876 880  
... ... @@ -879,16 +883,16 @@
879 883 par->CR31 = 0x8c;
880 884 par->CR66 = 0x89;
881 885  
882   - vga_out8 (0x3d4, 0x58);
883   - par->CR58 = vga_in8 (0x3d5) & 0x80;
  886 + vga_out8 (0x3d4, 0x58, par);
  887 + par->CR58 = vga_in8 (0x3d5, par) & 0x80;
884 888 par->CR58 |= 0x13;
885 889  
886 890 par->SR15 = 0x03 | 0x80;
887 891 par->SR18 = 0x00;
888 892 par->CR43 = par->CR45 = par->CR65 = 0x00;
889 893  
890   - vga_out8 (0x3d4, 0x40);
891   - par->CR40 = vga_in8 (0x3d5) & ~0x01;
  894 + vga_out8 (0x3d4, 0x40, par);
  895 + par->CR40 = vga_in8 (0x3d5, par) & ~0x01;
892 896  
893 897 par->MMPR0 = 0x010400;
894 898 par->MMPR1 = 0x00;
895 899  
... ... @@ -992,19 +996,19 @@
992 996  
993 997 par->CR67 |= 1;
994 998  
995   - vga_out8(0x3d4, 0x36);
996   - par->CR36 = vga_in8 (0x3d5);
997   - vga_out8 (0x3d4, 0x68);
998   - par->CR68 = vga_in8 (0x3d5);
  999 + vga_out8(0x3d4, 0x36, par);
  1000 + par->CR36 = vga_in8 (0x3d5, par);
  1001 + vga_out8 (0x3d4, 0x68, par);
  1002 + par->CR68 = vga_in8 (0x3d5, par);
999 1003 par->CR69 = 0;
1000   - vga_out8 (0x3d4, 0x6f);
1001   - par->CR6F = vga_in8 (0x3d5);
1002   - vga_out8 (0x3d4, 0x86);
1003   - par->CR86 = vga_in8 (0x3d5);
1004   - vga_out8 (0x3d4, 0x88);
1005   - par->CR88 = vga_in8 (0x3d5) | 0x08;
1006   - vga_out8 (0x3d4, 0xb0);
1007   - par->CRB0 = vga_in8 (0x3d5) | 0x80;
  1004 + vga_out8 (0x3d4, 0x6f, par);
  1005 + par->CR6F = vga_in8 (0x3d5, par);
  1006 + vga_out8 (0x3d4, 0x86, par);
  1007 + par->CR86 = vga_in8 (0x3d5, par);
  1008 + vga_out8 (0x3d4, 0x88, par);
  1009 + par->CR88 = vga_in8 (0x3d5, par) | 0x08;
  1010 + vga_out8 (0x3d4, 0xb0, par);
  1011 + par->CRB0 = vga_in8 (0x3d5, par) | 0x80;
1008 1012  
1009 1013 return 0;
1010 1014 }
1011 1015  
... ... @@ -1033,11 +1037,11 @@
1033 1037  
1034 1038 switch (info->var.bits_per_pixel) {
1035 1039 case 8:
1036   - vga_out8 (0x3c8, regno);
  1040 + vga_out8 (0x3c8, regno, par);
1037 1041  
1038   - vga_out8 (0x3c9, red >> 10);
1039   - vga_out8 (0x3c9, green >> 10);
1040   - vga_out8 (0x3c9, blue >> 10);
  1042 + vga_out8 (0x3c9, red >> 10, par);
  1043 + vga_out8 (0x3c9, green >> 10, par);
  1044 + vga_out8 (0x3c9, blue >> 10, par);
1041 1045 break;
1042 1046  
1043 1047 case 16:
1044 1048  
... ... @@ -1079,11 +1083,11 @@
1079 1083  
1080 1084 par->SavageWaitIdle (par);
1081 1085  
1082   - vga_out8 (0x3c2, 0x23);
  1086 + vga_out8 (0x3c2, 0x23, par);
1083 1087  
1084   - vga_out16 (0x3d4, 0x4838);
1085   - vga_out16 (0x3d4, 0xa539);
1086   - vga_out16 (0x3c4, 0x0608);
  1088 + vga_out16 (0x3d4, 0x4838, par);
  1089 + vga_out16 (0x3d4, 0xa539, par);
  1090 + vga_out16 (0x3c4, 0x0608, par);
1087 1091  
1088 1092 vgaHWProtect (par, 1);
1089 1093  
1090 1094  
1091 1095  
1092 1096  
1093 1097  
1094 1098  
1095 1099  
1096 1100  
1097 1101  
1098 1102  
1099 1103  
1100 1104  
1101 1105  
1102 1106  
1103 1107  
1104 1108  
1105 1109  
1106 1110  
1107 1111  
1108 1112  
1109 1113  
1110 1114  
1111 1115  
1112 1116  
1113 1117  
1114 1118  
1115 1119  
1116 1120  
1117 1121  
1118 1122  
... ... @@ -1094,197 +1098,197 @@
1094 1098 * switch to mode 3 here seems to eliminate the issue.
1095 1099 */
1096 1100  
1097   - VerticalRetraceWait();
1098   - vga_out8 (0x3d4, 0x67);
1099   - cr67 = vga_in8 (0x3d5);
1100   - vga_out8 (0x3d5, cr67/*par->CR67*/ & ~0x0c); /* no STREAMS yet */
  1101 + VerticalRetraceWait(par);
  1102 + vga_out8 (0x3d4, 0x67, par);
  1103 + cr67 = vga_in8 (0x3d5, par);
  1104 + vga_out8 (0x3d5, cr67/*par->CR67*/ & ~0x0c, par); /* no STREAMS yet */
1101 1105  
1102   - vga_out8 (0x3d4, 0x23);
1103   - vga_out8 (0x3d5, 0x00);
1104   - vga_out8 (0x3d4, 0x26);
1105   - vga_out8 (0x3d5, 0x00);
  1106 + vga_out8 (0x3d4, 0x23, par);
  1107 + vga_out8 (0x3d5, 0x00, par);
  1108 + vga_out8 (0x3d4, 0x26, par);
  1109 + vga_out8 (0x3d5, 0x00, par);
1106 1110  
1107 1111 /* restore extended regs */
1108   - vga_out8 (0x3d4, 0x66);
1109   - vga_out8 (0x3d5, par->CR66);
1110   - vga_out8 (0x3d4, 0x3a);
1111   - vga_out8 (0x3d5, par->CR3A);
1112   - vga_out8 (0x3d4, 0x31);
1113   - vga_out8 (0x3d5, par->CR31);
1114   - vga_out8 (0x3d4, 0x32);
1115   - vga_out8 (0x3d5, par->CR32);
1116   - vga_out8 (0x3d4, 0x58);
1117   - vga_out8 (0x3d5, par->CR58);
1118   - vga_out8 (0x3d4, 0x53);
1119   - vga_out8 (0x3d5, par->CR53 & 0x7f);
  1112 + vga_out8 (0x3d4, 0x66, par);
  1113 + vga_out8 (0x3d5, par->CR66, par);
  1114 + vga_out8 (0x3d4, 0x3a, par);
  1115 + vga_out8 (0x3d5, par->CR3A, par);
  1116 + vga_out8 (0x3d4, 0x31, par);
  1117 + vga_out8 (0x3d5, par->CR31, par);
  1118 + vga_out8 (0x3d4, 0x32, par);
  1119 + vga_out8 (0x3d5, par->CR32, par);
  1120 + vga_out8 (0x3d4, 0x58, par);
  1121 + vga_out8 (0x3d5, par->CR58, par);
  1122 + vga_out8 (0x3d4, 0x53, par);
  1123 + vga_out8 (0x3d5, par->CR53 & 0x7f, par);
1120 1124  
1121   - vga_out16 (0x3c4, 0x0608);
  1125 + vga_out16 (0x3c4, 0x0608, par);
1122 1126  
1123 1127 /* Restore DCLK registers. */
1124 1128  
1125   - vga_out8 (0x3c4, 0x0e);
1126   - vga_out8 (0x3c5, par->SR0E);
1127   - vga_out8 (0x3c4, 0x0f);
1128   - vga_out8 (0x3c5, par->SR0F);
1129   - vga_out8 (0x3c4, 0x29);
1130   - vga_out8 (0x3c5, par->SR29);
1131   - vga_out8 (0x3c4, 0x15);
1132   - vga_out8 (0x3c5, par->SR15);
  1129 + vga_out8 (0x3c4, 0x0e, par);
  1130 + vga_out8 (0x3c5, par->SR0E, par);
  1131 + vga_out8 (0x3c4, 0x0f, par);
  1132 + vga_out8 (0x3c5, par->SR0F, par);
  1133 + vga_out8 (0x3c4, 0x29, par);
  1134 + vga_out8 (0x3c5, par->SR29, par);
  1135 + vga_out8 (0x3c4, 0x15, par);
  1136 + vga_out8 (0x3c5, par->SR15, par);
1133 1137  
1134 1138 /* Restore flat panel expansion regsters. */
1135 1139 if( par->chip == S3_SAVAGE_MX ) {
1136 1140 int i;
1137 1141  
1138 1142 for( i = 0; i < 8; i++ ) {
1139   - vga_out8 (0x3c4, 0x54+i);
1140   - vga_out8 (0x3c5, par->SR54[i]);
  1143 + vga_out8 (0x3c4, 0x54+i, par);
  1144 + vga_out8 (0x3c5, par->SR54[i], par);
1141 1145 }
1142 1146 }
1143 1147  
1144 1148 vgaHWRestore (par);
1145 1149  
1146 1150 /* extended mode timing registers */
1147   - vga_out8 (0x3d4, 0x53);
1148   - vga_out8 (0x3d5, par->CR53);
1149   - vga_out8 (0x3d4, 0x5d);
1150   - vga_out8 (0x3d5, par->CR5D);
1151   - vga_out8 (0x3d4, 0x5e);
1152   - vga_out8 (0x3d5, par->CR5E);
1153   - vga_out8 (0x3d4, 0x3b);
1154   - vga_out8 (0x3d5, par->CR3B);
1155   - vga_out8 (0x3d4, 0x3c);
1156   - vga_out8 (0x3d5, par->CR3C);
1157   - vga_out8 (0x3d4, 0x43);
1158   - vga_out8 (0x3d5, par->CR43);
1159   - vga_out8 (0x3d4, 0x65);
1160   - vga_out8 (0x3d5, par->CR65);
  1151 + vga_out8 (0x3d4, 0x53, par);
  1152 + vga_out8 (0x3d5, par->CR53, par);
  1153 + vga_out8 (0x3d4, 0x5d, par);
  1154 + vga_out8 (0x3d5, par->CR5D, par);
  1155 + vga_out8 (0x3d4, 0x5e, par);
  1156 + vga_out8 (0x3d5, par->CR5E, par);
  1157 + vga_out8 (0x3d4, 0x3b, par);
  1158 + vga_out8 (0x3d5, par->CR3B, par);
  1159 + vga_out8 (0x3d4, 0x3c, par);
  1160 + vga_out8 (0x3d5, par->CR3C, par);
  1161 + vga_out8 (0x3d4, 0x43, par);
  1162 + vga_out8 (0x3d5, par->CR43, par);
  1163 + vga_out8 (0x3d4, 0x65, par);
  1164 + vga_out8 (0x3d5, par->CR65, par);
1161 1165  
1162 1166 /* restore the desired video mode with cr67 */
1163   - vga_out8 (0x3d4, 0x67);
  1167 + vga_out8 (0x3d4, 0x67, par);
1164 1168 /* following part not present in X11 driver */
1165   - cr67 = vga_in8 (0x3d5) & 0xf;
1166   - vga_out8 (0x3d5, 0x50 | cr67);
  1169 + cr67 = vga_in8 (0x3d5, par) & 0xf;
  1170 + vga_out8 (0x3d5, 0x50 | cr67, par);
1167 1171 udelay (10000);
1168   - vga_out8 (0x3d4, 0x67);
  1172 + vga_out8 (0x3d4, 0x67, par);
1169 1173 /* end of part */
1170   - vga_out8 (0x3d5, par->CR67 & ~0x0c);
  1174 + vga_out8 (0x3d5, par->CR67 & ~0x0c, par);
1171 1175  
1172 1176 /* other mode timing and extended regs */
1173   - vga_out8 (0x3d4, 0x34);
1174   - vga_out8 (0x3d5, par->CR34);
1175   - vga_out8 (0x3d4, 0x40);
1176   - vga_out8 (0x3d5, par->CR40);
1177   - vga_out8 (0x3d4, 0x42);
1178   - vga_out8 (0x3d5, par->CR42);
1179   - vga_out8 (0x3d4, 0x45);
1180   - vga_out8 (0x3d5, par->CR45);
1181   - vga_out8 (0x3d4, 0x50);
1182   - vga_out8 (0x3d5, par->CR50);
1183   - vga_out8 (0x3d4, 0x51);
1184   - vga_out8 (0x3d5, par->CR51);
  1177 + vga_out8 (0x3d4, 0x34, par);
  1178 + vga_out8 (0x3d5, par->CR34, par);
  1179 + vga_out8 (0x3d4, 0x40, par);
  1180 + vga_out8 (0x3d5, par->CR40, par);
  1181 + vga_out8 (0x3d4, 0x42, par);
  1182 + vga_out8 (0x3d5, par->CR42, par);
  1183 + vga_out8 (0x3d4, 0x45, par);
  1184 + vga_out8 (0x3d5, par->CR45, par);
  1185 + vga_out8 (0x3d4, 0x50, par);
  1186 + vga_out8 (0x3d5, par->CR50, par);
  1187 + vga_out8 (0x3d4, 0x51, par);
  1188 + vga_out8 (0x3d5, par->CR51, par);
1185 1189  
1186 1190 /* memory timings */
1187   - vga_out8 (0x3d4, 0x36);
1188   - vga_out8 (0x3d5, par->CR36);
1189   - vga_out8 (0x3d4, 0x60);
1190   - vga_out8 (0x3d5, par->CR60);
1191   - vga_out8 (0x3d4, 0x68);
1192   - vga_out8 (0x3d5, par->CR68);
1193   - vga_out8 (0x3d4, 0x69);
1194   - vga_out8 (0x3d5, par->CR69);
1195   - vga_out8 (0x3d4, 0x6f);
1196   - vga_out8 (0x3d5, par->CR6F);
  1191 + vga_out8 (0x3d4, 0x36, par);
  1192 + vga_out8 (0x3d5, par->CR36, par);
  1193 + vga_out8 (0x3d4, 0x60, par);
  1194 + vga_out8 (0x3d5, par->CR60, par);
  1195 + vga_out8 (0x3d4, 0x68, par);
  1196 + vga_out8 (0x3d5, par->CR68, par);
  1197 + vga_out8 (0x3d4, 0x69, par);
  1198 + vga_out8 (0x3d5, par->CR69, par);
  1199 + vga_out8 (0x3d4, 0x6f, par);
  1200 + vga_out8 (0x3d5, par->CR6F, par);
1197 1201  
1198   - vga_out8 (0x3d4, 0x33);
1199   - vga_out8 (0x3d5, par->CR33);
1200   - vga_out8 (0x3d4, 0x86);
1201   - vga_out8 (0x3d5, par->CR86);
1202   - vga_out8 (0x3d4, 0x88);
1203   - vga_out8 (0x3d5, par->CR88);
1204   - vga_out8 (0x3d4, 0x90);
1205   - vga_out8 (0x3d5, par->CR90);
1206   - vga_out8 (0x3d4, 0x91);
1207   - vga_out8 (0x3d5, par->CR91);
  1202 + vga_out8 (0x3d4, 0x33, par);
  1203 + vga_out8 (0x3d5, par->CR33, par);
  1204 + vga_out8 (0x3d4, 0x86, par);
  1205 + vga_out8 (0x3d5, par->CR86, par);
  1206 + vga_out8 (0x3d4, 0x88, par);
  1207 + vga_out8 (0x3d5, par->CR88, par);
  1208 + vga_out8 (0x3d4, 0x90, par);
  1209 + vga_out8 (0x3d5, par->CR90, par);
  1210 + vga_out8 (0x3d4, 0x91, par);
  1211 + vga_out8 (0x3d5, par->CR91, par);
1208 1212  
1209 1213 if (par->chip == S3_SAVAGE4) {
1210   - vga_out8 (0x3d4, 0xb0);
1211   - vga_out8 (0x3d5, par->CRB0);
  1214 + vga_out8 (0x3d4, 0xb0, par);
  1215 + vga_out8 (0x3d5, par->CRB0, par);
1212 1216 }
1213 1217  
1214   - vga_out8 (0x3d4, 0x32);
1215   - vga_out8 (0x3d5, par->CR32);
  1218 + vga_out8 (0x3d4, 0x32, par);
  1219 + vga_out8 (0x3d5, par->CR32, par);
1216 1220  
1217 1221 /* unlock extended seq regs */
1218   - vga_out8 (0x3c4, 0x08);
1219   - vga_out8 (0x3c5, 0x06);
  1222 + vga_out8 (0x3c4, 0x08, par);
  1223 + vga_out8 (0x3c5, 0x06, par);
1220 1224  
1221 1225 /* Restore extended sequencer regs for MCLK. SR10 == 255 indicates
1222 1226 * that we should leave the default SR10 and SR11 values there.
1223 1227 */
1224 1228 if (par->SR10 != 255) {
1225   - vga_out8 (0x3c4, 0x10);
1226   - vga_out8 (0x3c5, par->SR10);
1227   - vga_out8 (0x3c4, 0x11);
1228   - vga_out8 (0x3c5, par->SR11);
  1229 + vga_out8 (0x3c4, 0x10, par);
  1230 + vga_out8 (0x3c5, par->SR10, par);
  1231 + vga_out8 (0x3c4, 0x11, par);
  1232 + vga_out8 (0x3c5, par->SR11, par);
1229 1233 }
1230 1234  
1231 1235 /* restore extended seq regs for dclk */
1232   - vga_out8 (0x3c4, 0x0e);
1233   - vga_out8 (0x3c5, par->SR0E);
1234   - vga_out8 (0x3c4, 0x0f);
1235   - vga_out8 (0x3c5, par->SR0F);
1236   - vga_out8 (0x3c4, 0x12);
1237   - vga_out8 (0x3c5, par->SR12);
1238   - vga_out8 (0x3c4, 0x13);
1239   - vga_out8 (0x3c5, par->SR13);
1240   - vga_out8 (0x3c4, 0x29);
1241   - vga_out8 (0x3c5, par->SR29);
  1236 + vga_out8 (0x3c4, 0x0e, par);
  1237 + vga_out8 (0x3c5, par->SR0E, par);
  1238 + vga_out8 (0x3c4, 0x0f, par);
  1239 + vga_out8 (0x3c5, par->SR0F, par);
  1240 + vga_out8 (0x3c4, 0x12, par);
  1241 + vga_out8 (0x3c5, par->SR12, par);
  1242 + vga_out8 (0x3c4, 0x13, par);
  1243 + vga_out8 (0x3c5, par->SR13, par);
  1244 + vga_out8 (0x3c4, 0x29, par);
  1245 + vga_out8 (0x3c5, par->SR29, par);
1242 1246  
1243   - vga_out8 (0x3c4, 0x18);
1244   - vga_out8 (0x3c5, par->SR18);
  1247 + vga_out8 (0x3c4, 0x18, par);
  1248 + vga_out8 (0x3c5, par->SR18, par);
1245 1249  
1246 1250 /* load new m, n pll values for dclk & mclk */
1247   - vga_out8 (0x3c4, 0x15);
1248   - tmp = vga_in8 (0x3c5) & ~0x21;
  1251 + vga_out8 (0x3c4, 0x15, par);
  1252 + tmp = vga_in8 (0x3c5, par) & ~0x21;
1249 1253  
1250   - vga_out8 (0x3c5, tmp | 0x03);
1251   - vga_out8 (0x3c5, tmp | 0x23);
1252   - vga_out8 (0x3c5, tmp | 0x03);
1253   - vga_out8 (0x3c5, par->SR15);
  1254 + vga_out8 (0x3c5, tmp | 0x03, par);
  1255 + vga_out8 (0x3c5, tmp | 0x23, par);
  1256 + vga_out8 (0x3c5, tmp | 0x03, par);
  1257 + vga_out8 (0x3c5, par->SR15, par);
1254 1258 udelay (100);
1255 1259  
1256   - vga_out8 (0x3c4, 0x30);
1257   - vga_out8 (0x3c5, par->SR30);
1258   - vga_out8 (0x3c4, 0x08);
1259   - vga_out8 (0x3c5, par->SR08);
  1260 + vga_out8 (0x3c4, 0x30, par);
  1261 + vga_out8 (0x3c5, par->SR30, par);
  1262 + vga_out8 (0x3c4, 0x08, par);
  1263 + vga_out8 (0x3c5, par->SR08, par);
1260 1264  
1261 1265 /* now write out cr67 in full, possibly starting STREAMS */
1262   - VerticalRetraceWait();
1263   - vga_out8 (0x3d4, 0x67);
1264   - vga_out8 (0x3d5, par->CR67);
  1266 + VerticalRetraceWait(par);
  1267 + vga_out8 (0x3d4, 0x67, par);
  1268 + vga_out8 (0x3d5, par->CR67, par);
1265 1269  
1266   - vga_out8 (0x3d4, 0x66);
1267   - cr66 = vga_in8 (0x3d5);
1268   - vga_out8 (0x3d5, cr66 | 0x80);
1269   - vga_out8 (0x3d4, 0x3a);
1270   - cr3a = vga_in8 (0x3d5);
1271   - vga_out8 (0x3d5, cr3a | 0x80);
  1270 + vga_out8 (0x3d4, 0x66, par);
  1271 + cr66 = vga_in8 (0x3d5, par);
  1272 + vga_out8 (0x3d5, cr66 | 0x80, par);
  1273 + vga_out8 (0x3d4, 0x3a, par);
  1274 + cr3a = vga_in8 (0x3d5, par);
  1275 + vga_out8 (0x3d5, cr3a | 0x80, par);
1272 1276  
1273 1277 if (par->chip != S3_SAVAGE_MX) {
1274   - VerticalRetraceWait();
1275   - savage_out32 (FIFO_CONTROL_REG, par->MMPR0);
  1278 + VerticalRetraceWait(par);
  1279 + savage_out32 (FIFO_CONTROL_REG, par->MMPR0, par);
1276 1280 par->SavageWaitIdle (par);
1277   - savage_out32 (MIU_CONTROL_REG, par->MMPR1);
  1281 + savage_out32 (MIU_CONTROL_REG, par->MMPR1, par);
1278 1282 par->SavageWaitIdle (par);
1279   - savage_out32 (STREAMS_TIMEOUT_REG, par->MMPR2);
  1283 + savage_out32 (STREAMS_TIMEOUT_REG, par->MMPR2, par);
1280 1284 par->SavageWaitIdle (par);
1281   - savage_out32 (MISC_TIMEOUT_REG, par->MMPR3);
  1285 + savage_out32 (MISC_TIMEOUT_REG, par->MMPR3, par);
1282 1286 }
1283 1287  
1284   - vga_out8 (0x3d4, 0x66);
1285   - vga_out8 (0x3d5, cr66);
1286   - vga_out8 (0x3d4, 0x3a);
1287   - vga_out8 (0x3d5, cr3a);
  1288 + vga_out8 (0x3d4, 0x66, par);
  1289 + vga_out8 (0x3d5, cr66, par);
  1290 + vga_out8 (0x3d4, 0x3a, par);
  1291 + vga_out8 (0x3d5, cr3a, par);
1288 1292  
1289 1293 SavageSetup2DEngine (par);
1290 1294 vgaHWProtect (par, 0);
... ... @@ -1299,10 +1303,10 @@
1299 1303 * ((var->bits_per_pixel+7) / 8)) >> 2;
1300 1304  
1301 1305 /* now program the start address registers */
1302   - vga_out16(0x3d4, (base & 0x00ff00) | 0x0c);
1303   - vga_out16(0x3d4, ((base & 0x00ff) << 8) | 0x0d);
1304   - vga_out8 (0x3d4, 0x69);
1305   - vga_out8 (0x3d5, (base & 0x7f0000) >> 16);
  1306 + vga_out16(0x3d4, (base & 0x00ff00) | 0x0c, par);
  1307 + vga_out16(0x3d4, ((base & 0x00ff) << 8) | 0x0d, par);
  1308 + vga_out8 (0x3d4, 0x69, par);
  1309 + vga_out8 (0x3d5, (base & 0x7f0000) >> 16, par);
1306 1310 }
1307 1311  
1308 1312  
1309 1313  
... ... @@ -1406,12 +1410,12 @@
1406 1410 u8 sr8 = 0, srd = 0;
1407 1411  
1408 1412 if (par->display_type == DISP_CRT) {
1409   - vga_out8(0x3c4, 0x08);
1410   - sr8 = vga_in8(0x3c5);
  1413 + vga_out8(0x3c4, 0x08, par);
  1414 + sr8 = vga_in8(0x3c5, par);
1411 1415 sr8 |= 0x06;
1412   - vga_out8(0x3c5, sr8);
1413   - vga_out8(0x3c4, 0x0d);
1414   - srd = vga_in8(0x3c5);
  1416 + vga_out8(0x3c5, sr8, par);
  1417 + vga_out8(0x3c4, 0x0d, par);
  1418 + srd = vga_in8(0x3c5, par);
1415 1419 srd &= 0x03;
1416 1420  
1417 1421 switch (blank) {
... ... @@ -1429,8 +1433,8 @@
1429 1433 break;
1430 1434 }
1431 1435  
1432   - vga_out8(0x3c4, 0x0d);
1433   - vga_out8(0x3c5, srd);
  1436 + vga_out8(0x3c4, 0x0d, par);
  1437 + vga_out8(0x3c5, srd, par);
1434 1438 }
1435 1439  
1436 1440 if (par->display_type == DISP_LCD ||
1437 1441  
... ... @@ -1438,14 +1442,14 @@
1438 1442 switch(blank) {
1439 1443 case FB_BLANK_UNBLANK:
1440 1444 case FB_BLANK_NORMAL:
1441   - vga_out8(0x3c4, 0x31); /* SR31 bit 4 - FP enable */
1442   - vga_out8(0x3c5, vga_in8(0x3c5) | 0x10);
  1445 + vga_out8(0x3c4, 0x31, par); /* SR31 bit 4 - FP enable */
  1446 + vga_out8(0x3c5, vga_in8(0x3c5, par) | 0x10, par);
1443 1447 break;
1444 1448 case FB_BLANK_VSYNC_SUSPEND:
1445 1449 case FB_BLANK_HSYNC_SUSPEND:
1446 1450 case FB_BLANK_POWERDOWN:
1447   - vga_out8(0x3c4, 0x31); /* SR31 bit 4 - FP enable */
1448   - vga_out8(0x3c5, vga_in8(0x3c5) & ~0x10);
  1451 + vga_out8(0x3c4, 0x31, par); /* SR31 bit 4 - FP enable */
  1452 + vga_out8(0x3c5, vga_in8(0x3c5, par) & ~0x10, par);
1449 1453 break;
1450 1454 }
1451 1455 }
1452 1456  
... ... @@ -1498,15 +1502,15 @@
1498 1502  
1499 1503 DBG ("savage_enable_mmio\n");
1500 1504  
1501   - val = vga_in8 (0x3c3);
1502   - vga_out8 (0x3c3, val | 0x01);
1503   - val = vga_in8 (0x3cc);
1504   - vga_out8 (0x3c2, val | 0x01);
  1505 + val = vga_in8 (0x3c3, par);
  1506 + vga_out8 (0x3c3, val | 0x01, par);
  1507 + val = vga_in8 (0x3cc, par);
  1508 + vga_out8 (0x3c2, val | 0x01, par);
1505 1509  
1506 1510 if (par->chip >= S3_SAVAGE4) {
1507   - vga_out8 (0x3d4, 0x40);
1508   - val = vga_in8 (0x3d5);
1509   - vga_out8 (0x3d5, val | 1);
  1511 + vga_out8 (0x3d4, 0x40, par);
  1512 + val = vga_in8 (0x3d5, par);
  1513 + vga_out8 (0x3d5, val | 1, par);
1510 1514 }
1511 1515 }
1512 1516  
... ... @@ -1518,9 +1522,9 @@
1518 1522 DBG ("savage_disable_mmio\n");
1519 1523  
1520 1524 if(par->chip >= S3_SAVAGE4 ) {
1521   - vga_out8 (0x3d4, 0x40);
1522   - val = vga_in8 (0x3d5);
1523   - vga_out8 (0x3d5, val | 1);
  1525 + vga_out8 (0x3d4, 0x40, par);
  1526 + val = vga_in8 (0x3d5, par);
  1527 + vga_out8 (0x3d5, val | 1, par);
1524 1528 }
1525 1529 }
1526 1530  
1527 1531  
1528 1532  
1529 1533  
1530 1534  
1531 1535  
... ... @@ -1640,30 +1644,30 @@
1640 1644 DBG("savage_init_hw");
1641 1645  
1642 1646 /* unprotect CRTC[0-7] */
1643   - vga_out8(0x3d4, 0x11);
1644   - tmp = vga_in8(0x3d5);
1645   - vga_out8(0x3d5, tmp & 0x7f);
  1647 + vga_out8(0x3d4, 0x11, par);
  1648 + tmp = vga_in8(0x3d5, par);
  1649 + vga_out8(0x3d5, tmp & 0x7f, par);
1646 1650  
1647 1651 /* unlock extended regs */
1648   - vga_out16(0x3d4, 0x4838);
1649   - vga_out16(0x3d4, 0xa039);
1650   - vga_out16(0x3c4, 0x0608);
  1652 + vga_out16(0x3d4, 0x4838, par);
  1653 + vga_out16(0x3d4, 0xa039, par);
  1654 + vga_out16(0x3c4, 0x0608, par);
1651 1655  
1652   - vga_out8(0x3d4, 0x40);
1653   - tmp = vga_in8(0x3d5);
1654   - vga_out8(0x3d5, tmp & ~0x01);
  1656 + vga_out8(0x3d4, 0x40, par);
  1657 + tmp = vga_in8(0x3d5, par);
  1658 + vga_out8(0x3d5, tmp & ~0x01, par);
1655 1659  
1656 1660 /* unlock sys regs */
1657   - vga_out8(0x3d4, 0x38);
1658   - vga_out8(0x3d5, 0x48);
  1661 + vga_out8(0x3d4, 0x38, par);
  1662 + vga_out8(0x3d5, 0x48, par);
1659 1663  
1660 1664 /* Unlock system registers. */
1661   - vga_out16(0x3d4, 0x4838);
  1665 + vga_out16(0x3d4, 0x4838, par);
1662 1666  
1663 1667 /* Next go on to detect amount of installed ram */
1664 1668  
1665   - vga_out8(0x3d4, 0x36); /* for register CR36 (CONFG_REG1), */
1666   - config1 = vga_in8(0x3d5); /* get amount of vram installed */
  1669 + vga_out8(0x3d4, 0x36, par); /* for register CR36 (CONFG_REG1), */
  1670 + config1 = vga_in8(0x3d5, par); /* get amount of vram installed */
1667 1671  
1668 1672 /* Compute the amount of video memory and offscreen memory. */
1669 1673  
... ... @@ -1679,8 +1683,8 @@
1679 1683 * when it really means 8MB. Why do it the same when you
1680 1684 * can do it different...
1681 1685 */
1682   - vga_out8(0x3d4, 0x68); /* memory control 1 */
1683   - if( (vga_in8(0x3d5) & 0xC0) == (0x01 << 6) )
  1686 + vga_out8(0x3d4, 0x68, par); /* memory control 1 */
  1687 + if( (vga_in8(0x3d5, par) & 0xC0) == (0x01 << 6) )
1684 1688 RamSavage4[1] = 8;
1685 1689  
1686 1690 /*FALLTHROUGH*/
1687 1691  
... ... @@ -1709,13 +1713,13 @@
1709 1713 printk (KERN_INFO "savagefb: probed videoram: %dk\n", videoRam);
1710 1714  
1711 1715 /* reset graphics engine to avoid memory corruption */
1712   - vga_out8 (0x3d4, 0x66);
1713   - cr66 = vga_in8 (0x3d5);
1714   - vga_out8 (0x3d5, cr66 | 0x02);
  1716 + vga_out8 (0x3d4, 0x66, par);
  1717 + cr66 = vga_in8 (0x3d5, par);
  1718 + vga_out8 (0x3d5, cr66 | 0x02, par);
1715 1719 udelay (10000);
1716 1720  
1717   - vga_out8 (0x3d4, 0x66);
1718   - vga_out8 (0x3d5, cr66 & ~0x02); /* clear reset flag */
  1721 + vga_out8 (0x3d4, 0x66, par);
  1722 + vga_out8 (0x3d5, cr66 & ~0x02, par); /* clear reset flag */
1719 1723 udelay (10000);
1720 1724  
1721 1725  
1722 1726  
... ... @@ -1723,13 +1727,13 @@
1723 1727 * reset memory interface, 3D engine, AGP master, PCI master,
1724 1728 * master engine unit, motion compensation/LPB
1725 1729 */
1726   - vga_out8 (0x3d4, 0x3f);
1727   - cr3f = vga_in8 (0x3d5);
1728   - vga_out8 (0x3d5, cr3f | 0x08);
  1730 + vga_out8 (0x3d4, 0x3f, par);
  1731 + cr3f = vga_in8 (0x3d5, par);
  1732 + vga_out8 (0x3d5, cr3f | 0x08, par);
1729 1733 udelay (10000);
1730 1734  
1731   - vga_out8 (0x3d4, 0x3f);
1732   - vga_out8 (0x3d5, cr3f & ~0x08); /* clear reset flags */
  1735 + vga_out8 (0x3d4, 0x3f, par);
  1736 + vga_out8 (0x3d5, cr3f & ~0x08, par); /* clear reset flags */
1733 1737 udelay (10000);
1734 1738  
1735 1739 /* Savage ramdac speeds */
... ... @@ -1740,15 +1744,15 @@
1740 1744 par->clock[3] = 220000;
1741 1745  
1742 1746 /* detect current mclk */
1743   - vga_out8(0x3c4, 0x08);
1744   - sr8 = vga_in8(0x3c5);
1745   - vga_out8(0x3c5, 0x06);
1746   - vga_out8(0x3c4, 0x10);
1747   - n = vga_in8(0x3c5);
1748   - vga_out8(0x3c4, 0x11);
1749   - m = vga_in8(0x3c5);
1750   - vga_out8(0x3c4, 0x08);
1751   - vga_out8(0x3c5, sr8);
  1747 + vga_out8(0x3c4, 0x08, par);
  1748 + sr8 = vga_in8(0x3c5, par);
  1749 + vga_out8(0x3c5, 0x06, par);
  1750 + vga_out8(0x3c4, 0x10, par);
  1751 + n = vga_in8(0x3c5, par);
  1752 + vga_out8(0x3c4, 0x11, par);
  1753 + m = vga_in8(0x3c5, par);
  1754 + vga_out8(0x3c4, 0x08, par);
  1755 + vga_out8(0x3c5, sr8, par);
1752 1756 m &= 0x7f;
1753 1757 n1 = n & 0x1f;
1754 1758 n2 = (n >> 5) & 0x03;
1755 1759  
... ... @@ -1762,10 +1766,10 @@
1762 1766 if (par->chip == S3_SAVAGE4) {
1763 1767 unsigned char sr30 = 0x00;
1764 1768  
1765   - vga_out8(0x3c4, 0x30);
  1769 + vga_out8(0x3c4, 0x30, par);
1766 1770 /* clear bit 1 */
1767   - vga_out8(0x3c5, vga_in8(0x3c5) & ~0x02);
1768   - sr30 = vga_in8(0x3c5);
  1771 + vga_out8(0x3c5, vga_in8(0x3c5, par) & ~0x02, par);
  1772 + sr30 = vga_in8(0x3c5, par);
1769 1773 if (sr30 & 0x02 /*0x04 */) {
1770 1774 dvi = 1;
1771 1775 printk("savagefb: Digital Flat Panel Detected\n");
1772 1776  
... ... @@ -1782,12 +1786,12 @@
1782 1786 /* Check LCD panel parrmation */
1783 1787  
1784 1788 if (par->display_type == DISP_LCD) {
1785   - unsigned char cr6b = VGArCR( 0x6b );
  1789 + unsigned char cr6b = VGArCR( 0x6b, par);
1786 1790  
1787   - int panelX = (VGArSEQ (0x61) +
1788   - ((VGArSEQ (0x66) & 0x02) << 7) + 1) * 8;
1789   - int panelY = (VGArSEQ (0x69) +
1790   - ((VGArSEQ (0x6e) & 0x70) << 4) + 1);
  1791 + int panelX = (VGArSEQ (0x61, par) +
  1792 + ((VGArSEQ (0x66, par) & 0x02) << 7) + 1) * 8;
  1793 + int panelY = (VGArSEQ (0x69, par) +
  1794 + ((VGArSEQ (0x6e, par) & 0x70) << 4) + 1);
1791 1795  
1792 1796 char * sTechnology = "Unknown";
1793 1797  
1794 1798  
... ... @@ -1809,9 +1813,9 @@
1809 1813 ActiveDUO = 0x80
1810 1814 };
1811 1815  
1812   - if ((VGArSEQ (0x39) & 0x03) == 0) {
  1816 + if ((VGArSEQ (0x39, par) & 0x03) == 0) {
1813 1817 sTechnology = "TFT";
1814   - } else if ((VGArSEQ (0x30) & 0x01) == 0) {
  1818 + } else if ((VGArSEQ (0x30, par) & 0x01) == 0) {
1815 1819 sTechnology = "DSTN";
1816 1820 } else {
1817 1821 sTechnology = "STN";