diff options
Diffstat (limited to 'drivers/video/matrox/matroxfb_misc.c')
-rw-r--r-- | drivers/video/matrox/matroxfb_misc.c | 210 |
1 files changed, 105 insertions, 105 deletions
diff --git a/drivers/video/matrox/matroxfb_misc.c b/drivers/video/matrox/matroxfb_misc.c index d5b9e789cca6..fe07af8486e4 100644 --- a/drivers/video/matrox/matroxfb_misc.c +++ b/drivers/video/matrox/matroxfb_misc.c | |||
@@ -190,7 +190,7 @@ int matroxfb_vgaHWinit(WPMINFO struct my_timming* m) { | |||
190 | unsigned int wd; | 190 | unsigned int wd; |
191 | unsigned int divider; | 191 | unsigned int divider; |
192 | int i; | 192 | int i; |
193 | struct matrox_hw_state * const hw = &ACCESS_FBINFO(hw); | 193 | struct matrox_hw_state * const hw = &minfo->hw; |
194 | 194 | ||
195 | DBG(__func__) | 195 | DBG(__func__) |
196 | 196 | ||
@@ -240,7 +240,7 @@ int matroxfb_vgaHWinit(WPMINFO struct my_timming* m) { | |||
240 | /* standard timmings are in 8pixels, but for interleaved we cannot */ | 240 | /* standard timmings are in 8pixels, but for interleaved we cannot */ |
241 | /* do it for 4bpp (because of (4bpp >> 1(interleaved))/4 == 0) */ | 241 | /* do it for 4bpp (because of (4bpp >> 1(interleaved))/4 == 0) */ |
242 | /* using 16 or more pixels per unit can save us */ | 242 | /* using 16 or more pixels per unit can save us */ |
243 | divider = ACCESS_FBINFO(curr.final_bppShift); | 243 | divider = minfo->curr.final_bppShift; |
244 | while (divider & 3) { | 244 | while (divider & 3) { |
245 | hd >>= 1; | 245 | hd >>= 1; |
246 | hs >>= 1; | 246 | hs >>= 1; |
@@ -270,7 +270,7 @@ int matroxfb_vgaHWinit(WPMINFO struct my_timming* m) { | |||
270 | if (((ht & 0x07) == 0x06) || ((ht & 0x0F) == 0x04)) | 270 | if (((ht & 0x07) == 0x06) || ((ht & 0x0F) == 0x04)) |
271 | ht++; | 271 | ht++; |
272 | hbe = ht; | 272 | hbe = ht; |
273 | wd = ACCESS_FBINFO(fbcon).var.xres_virtual * ACCESS_FBINFO(curr.final_bppShift) / 64; | 273 | wd = minfo->fbcon.var.xres_virtual * minfo->curr.final_bppShift / 64; |
274 | 274 | ||
275 | hw->CRTCEXT[0] = 0; | 275 | hw->CRTCEXT[0] = 0; |
276 | hw->CRTCEXT[5] = 0; | 276 | hw->CRTCEXT[5] = 0; |
@@ -287,7 +287,7 @@ int matroxfb_vgaHWinit(WPMINFO struct my_timming* m) { | |||
287 | ((hs & 0x100) >> 6) | /* sync start */ | 287 | ((hs & 0x100) >> 6) | /* sync start */ |
288 | (hbe & 0x040); /* end hor. blanking */ | 288 | (hbe & 0x040); /* end hor. blanking */ |
289 | /* FIXME: Enable vidrst only on G400, and only if TV-out is used */ | 289 | /* FIXME: Enable vidrst only on G400, and only if TV-out is used */ |
290 | if (ACCESS_FBINFO(outputs[1]).src == MATROXFB_SRC_CRTC1) | 290 | if (minfo->outputs[1].src == MATROXFB_SRC_CRTC1) |
291 | hw->CRTCEXT[1] |= 0x88; /* enable horizontal and vertical vidrst */ | 291 | hw->CRTCEXT[1] |= 0x88; /* enable horizontal and vertical vidrst */ |
292 | hw->CRTCEXT[2] = ((vt & 0xC00) >> 10) | | 292 | hw->CRTCEXT[2] = ((vt & 0xC00) >> 10) | |
293 | ((vd & 0x400) >> 8) | /* disp end */ | 293 | ((vd & 0x400) >> 8) | /* disp end */ |
@@ -333,7 +333,7 @@ int matroxfb_vgaHWinit(WPMINFO struct my_timming* m) { | |||
333 | 333 | ||
334 | void matroxfb_vgaHWrestore(WPMINFO2) { | 334 | void matroxfb_vgaHWrestore(WPMINFO2) { |
335 | int i; | 335 | int i; |
336 | struct matrox_hw_state * const hw = &ACCESS_FBINFO(hw); | 336 | struct matrox_hw_state * const hw = &minfo->hw; |
337 | CRITFLAGS | 337 | CRITFLAGS |
338 | 338 | ||
339 | DBG(__func__) | 339 | DBG(__func__) |
@@ -533,98 +533,98 @@ static int parse_pins1(WPMINFO const struct matrox_bios* bd) { | |||
533 | if (get_unaligned_le16(bd->pins + 24)) { | 533 | if (get_unaligned_le16(bd->pins + 24)) { |
534 | maxdac = get_unaligned_le16(bd->pins + 24) * 10; | 534 | maxdac = get_unaligned_le16(bd->pins + 24) * 10; |
535 | } | 535 | } |
536 | MINFO->limits.pixel.vcomax = maxdac; | 536 | minfo->limits.pixel.vcomax = maxdac; |
537 | MINFO->values.pll.system = get_unaligned_le16(bd->pins + 28) ? | 537 | minfo->values.pll.system = get_unaligned_le16(bd->pins + 28) ? |
538 | get_unaligned_le16(bd->pins + 28) * 10 : 50000; | 538 | get_unaligned_le16(bd->pins + 28) * 10 : 50000; |
539 | /* ignore 4MB, 8MB, module clocks */ | 539 | /* ignore 4MB, 8MB, module clocks */ |
540 | MINFO->features.pll.ref_freq = 14318; | 540 | minfo->features.pll.ref_freq = 14318; |
541 | MINFO->values.reg.mctlwtst = 0x00030101; | 541 | minfo->values.reg.mctlwtst = 0x00030101; |
542 | return 0; | 542 | return 0; |
543 | } | 543 | } |
544 | 544 | ||
545 | static void default_pins1(WPMINFO2) { | 545 | static void default_pins1(WPMINFO2) { |
546 | /* Millennium */ | 546 | /* Millennium */ |
547 | MINFO->limits.pixel.vcomax = 220000; | 547 | minfo->limits.pixel.vcomax = 220000; |
548 | MINFO->values.pll.system = 50000; | 548 | minfo->values.pll.system = 50000; |
549 | MINFO->features.pll.ref_freq = 14318; | 549 | minfo->features.pll.ref_freq = 14318; |
550 | MINFO->values.reg.mctlwtst = 0x00030101; | 550 | minfo->values.reg.mctlwtst = 0x00030101; |
551 | } | 551 | } |
552 | 552 | ||
553 | static int parse_pins2(WPMINFO const struct matrox_bios* bd) { | 553 | static int parse_pins2(WPMINFO const struct matrox_bios* bd) { |
554 | MINFO->limits.pixel.vcomax = | 554 | minfo->limits.pixel.vcomax = |
555 | MINFO->limits.system.vcomax = (bd->pins[41] == 0xFF) ? 230000 : ((bd->pins[41] + 100) * 1000); | 555 | minfo->limits.system.vcomax = (bd->pins[41] == 0xFF) ? 230000 : ((bd->pins[41] + 100) * 1000); |
556 | MINFO->values.reg.mctlwtst = ((bd->pins[51] & 0x01) ? 0x00000001 : 0) | | 556 | minfo->values.reg.mctlwtst = ((bd->pins[51] & 0x01) ? 0x00000001 : 0) | |
557 | ((bd->pins[51] & 0x02) ? 0x00000100 : 0) | | 557 | ((bd->pins[51] & 0x02) ? 0x00000100 : 0) | |
558 | ((bd->pins[51] & 0x04) ? 0x00010000 : 0) | | 558 | ((bd->pins[51] & 0x04) ? 0x00010000 : 0) | |
559 | ((bd->pins[51] & 0x08) ? 0x00020000 : 0); | 559 | ((bd->pins[51] & 0x08) ? 0x00020000 : 0); |
560 | MINFO->values.pll.system = (bd->pins[43] == 0xFF) ? 50000 : ((bd->pins[43] + 100) * 1000); | 560 | minfo->values.pll.system = (bd->pins[43] == 0xFF) ? 50000 : ((bd->pins[43] + 100) * 1000); |
561 | MINFO->features.pll.ref_freq = 14318; | 561 | minfo->features.pll.ref_freq = 14318; |
562 | return 0; | 562 | return 0; |
563 | } | 563 | } |
564 | 564 | ||
565 | static void default_pins2(WPMINFO2) { | 565 | static void default_pins2(WPMINFO2) { |
566 | /* Millennium II, Mystique */ | 566 | /* Millennium II, Mystique */ |
567 | MINFO->limits.pixel.vcomax = | 567 | minfo->limits.pixel.vcomax = |
568 | MINFO->limits.system.vcomax = 230000; | 568 | minfo->limits.system.vcomax = 230000; |
569 | MINFO->values.reg.mctlwtst = 0x00030101; | 569 | minfo->values.reg.mctlwtst = 0x00030101; |
570 | MINFO->values.pll.system = 50000; | 570 | minfo->values.pll.system = 50000; |
571 | MINFO->features.pll.ref_freq = 14318; | 571 | minfo->features.pll.ref_freq = 14318; |
572 | } | 572 | } |
573 | 573 | ||
574 | static int parse_pins3(WPMINFO const struct matrox_bios* bd) { | 574 | static int parse_pins3(WPMINFO const struct matrox_bios* bd) { |
575 | MINFO->limits.pixel.vcomax = | 575 | minfo->limits.pixel.vcomax = |
576 | MINFO->limits.system.vcomax = (bd->pins[36] == 0xFF) ? 230000 : ((bd->pins[36] + 100) * 1000); | 576 | minfo->limits.system.vcomax = (bd->pins[36] == 0xFF) ? 230000 : ((bd->pins[36] + 100) * 1000); |
577 | MINFO->values.reg.mctlwtst = get_unaligned_le32(bd->pins + 48) == 0xFFFFFFFF ? | 577 | minfo->values.reg.mctlwtst = get_unaligned_le32(bd->pins + 48) == 0xFFFFFFFF ? |
578 | 0x01250A21 : get_unaligned_le32(bd->pins + 48); | 578 | 0x01250A21 : get_unaligned_le32(bd->pins + 48); |
579 | /* memory config */ | 579 | /* memory config */ |
580 | MINFO->values.reg.memrdbk = ((bd->pins[57] << 21) & 0x1E000000) | | 580 | minfo->values.reg.memrdbk = ((bd->pins[57] << 21) & 0x1E000000) | |
581 | ((bd->pins[57] << 22) & 0x00C00000) | | 581 | ((bd->pins[57] << 22) & 0x00C00000) | |
582 | ((bd->pins[56] << 1) & 0x000001E0) | | 582 | ((bd->pins[56] << 1) & 0x000001E0) | |
583 | ( bd->pins[56] & 0x0000000F); | 583 | ( bd->pins[56] & 0x0000000F); |
584 | MINFO->values.reg.opt = (bd->pins[54] & 7) << 10; | 584 | minfo->values.reg.opt = (bd->pins[54] & 7) << 10; |
585 | MINFO->values.reg.opt2 = bd->pins[58] << 12; | 585 | minfo->values.reg.opt2 = bd->pins[58] << 12; |
586 | MINFO->features.pll.ref_freq = (bd->pins[52] & 0x20) ? 14318 : 27000; | 586 | minfo->features.pll.ref_freq = (bd->pins[52] & 0x20) ? 14318 : 27000; |
587 | return 0; | 587 | return 0; |
588 | } | 588 | } |
589 | 589 | ||
590 | static void default_pins3(WPMINFO2) { | 590 | static void default_pins3(WPMINFO2) { |
591 | /* G100, G200 */ | 591 | /* G100, G200 */ |
592 | MINFO->limits.pixel.vcomax = | 592 | minfo->limits.pixel.vcomax = |
593 | MINFO->limits.system.vcomax = 230000; | 593 | minfo->limits.system.vcomax = 230000; |
594 | MINFO->values.reg.mctlwtst = 0x01250A21; | 594 | minfo->values.reg.mctlwtst = 0x01250A21; |
595 | MINFO->values.reg.memrdbk = 0x00000000; | 595 | minfo->values.reg.memrdbk = 0x00000000; |
596 | MINFO->values.reg.opt = 0x00000C00; | 596 | minfo->values.reg.opt = 0x00000C00; |
597 | MINFO->values.reg.opt2 = 0x00000000; | 597 | minfo->values.reg.opt2 = 0x00000000; |
598 | MINFO->features.pll.ref_freq = 27000; | 598 | minfo->features.pll.ref_freq = 27000; |
599 | } | 599 | } |
600 | 600 | ||
601 | static int parse_pins4(WPMINFO const struct matrox_bios* bd) { | 601 | static int parse_pins4(WPMINFO const struct matrox_bios* bd) { |
602 | MINFO->limits.pixel.vcomax = (bd->pins[ 39] == 0xFF) ? 230000 : bd->pins[ 39] * 4000; | 602 | minfo->limits.pixel.vcomax = (bd->pins[ 39] == 0xFF) ? 230000 : bd->pins[ 39] * 4000; |
603 | MINFO->limits.system.vcomax = (bd->pins[ 38] == 0xFF) ? MINFO->limits.pixel.vcomax : bd->pins[ 38] * 4000; | 603 | minfo->limits.system.vcomax = (bd->pins[ 38] == 0xFF) ? minfo->limits.pixel.vcomax : bd->pins[ 38] * 4000; |
604 | MINFO->values.reg.mctlwtst = get_unaligned_le32(bd->pins + 71); | 604 | minfo->values.reg.mctlwtst = get_unaligned_le32(bd->pins + 71); |
605 | MINFO->values.reg.memrdbk = ((bd->pins[87] << 21) & 0x1E000000) | | 605 | minfo->values.reg.memrdbk = ((bd->pins[87] << 21) & 0x1E000000) | |
606 | ((bd->pins[87] << 22) & 0x00C00000) | | 606 | ((bd->pins[87] << 22) & 0x00C00000) | |
607 | ((bd->pins[86] << 1) & 0x000001E0) | | 607 | ((bd->pins[86] << 1) & 0x000001E0) | |
608 | ( bd->pins[86] & 0x0000000F); | 608 | ( bd->pins[86] & 0x0000000F); |
609 | MINFO->values.reg.opt = ((bd->pins[53] << 15) & 0x00400000) | | 609 | minfo->values.reg.opt = ((bd->pins[53] << 15) & 0x00400000) | |
610 | ((bd->pins[53] << 22) & 0x10000000) | | 610 | ((bd->pins[53] << 22) & 0x10000000) | |
611 | ((bd->pins[53] << 7) & 0x00001C00); | 611 | ((bd->pins[53] << 7) & 0x00001C00); |
612 | MINFO->values.reg.opt3 = get_unaligned_le32(bd->pins + 67); | 612 | minfo->values.reg.opt3 = get_unaligned_le32(bd->pins + 67); |
613 | MINFO->values.pll.system = (bd->pins[ 65] == 0xFF) ? 200000 : bd->pins[ 65] * 4000; | 613 | minfo->values.pll.system = (bd->pins[ 65] == 0xFF) ? 200000 : bd->pins[ 65] * 4000; |
614 | MINFO->features.pll.ref_freq = (bd->pins[ 92] & 0x01) ? 14318 : 27000; | 614 | minfo->features.pll.ref_freq = (bd->pins[ 92] & 0x01) ? 14318 : 27000; |
615 | return 0; | 615 | return 0; |
616 | } | 616 | } |
617 | 617 | ||
618 | static void default_pins4(WPMINFO2) { | 618 | static void default_pins4(WPMINFO2) { |
619 | /* G400 */ | 619 | /* G400 */ |
620 | MINFO->limits.pixel.vcomax = | 620 | minfo->limits.pixel.vcomax = |
621 | MINFO->limits.system.vcomax = 252000; | 621 | minfo->limits.system.vcomax = 252000; |
622 | MINFO->values.reg.mctlwtst = 0x04A450A1; | 622 | minfo->values.reg.mctlwtst = 0x04A450A1; |
623 | MINFO->values.reg.memrdbk = 0x000000E7; | 623 | minfo->values.reg.memrdbk = 0x000000E7; |
624 | MINFO->values.reg.opt = 0x10000400; | 624 | minfo->values.reg.opt = 0x10000400; |
625 | MINFO->values.reg.opt3 = 0x0190A419; | 625 | minfo->values.reg.opt3 = 0x0190A419; |
626 | MINFO->values.pll.system = 200000; | 626 | minfo->values.pll.system = 200000; |
627 | MINFO->features.pll.ref_freq = 27000; | 627 | minfo->features.pll.ref_freq = 27000; |
628 | } | 628 | } |
629 | 629 | ||
630 | static int parse_pins5(WPMINFO const struct matrox_bios* bd) { | 630 | static int parse_pins5(WPMINFO const struct matrox_bios* bd) { |
@@ -632,65 +632,65 @@ static int parse_pins5(WPMINFO const struct matrox_bios* bd) { | |||
632 | 632 | ||
633 | mult = bd->pins[4]?8000:6000; | 633 | mult = bd->pins[4]?8000:6000; |
634 | 634 | ||
635 | MINFO->limits.pixel.vcomax = (bd->pins[ 38] == 0xFF) ? 600000 : bd->pins[ 38] * mult; | 635 | minfo->limits.pixel.vcomax = (bd->pins[ 38] == 0xFF) ? 600000 : bd->pins[ 38] * mult; |
636 | MINFO->limits.system.vcomax = (bd->pins[ 36] == 0xFF) ? MINFO->limits.pixel.vcomax : bd->pins[ 36] * mult; | 636 | minfo->limits.system.vcomax = (bd->pins[ 36] == 0xFF) ? minfo->limits.pixel.vcomax : bd->pins[ 36] * mult; |
637 | MINFO->limits.video.vcomax = (bd->pins[ 37] == 0xFF) ? MINFO->limits.system.vcomax : bd->pins[ 37] * mult; | 637 | minfo->limits.video.vcomax = (bd->pins[ 37] == 0xFF) ? minfo->limits.system.vcomax : bd->pins[ 37] * mult; |
638 | MINFO->limits.pixel.vcomin = (bd->pins[123] == 0xFF) ? 256000 : bd->pins[123] * mult; | 638 | minfo->limits.pixel.vcomin = (bd->pins[123] == 0xFF) ? 256000 : bd->pins[123] * mult; |
639 | MINFO->limits.system.vcomin = (bd->pins[121] == 0xFF) ? MINFO->limits.pixel.vcomin : bd->pins[121] * mult; | 639 | minfo->limits.system.vcomin = (bd->pins[121] == 0xFF) ? minfo->limits.pixel.vcomin : bd->pins[121] * mult; |
640 | MINFO->limits.video.vcomin = (bd->pins[122] == 0xFF) ? MINFO->limits.system.vcomin : bd->pins[122] * mult; | 640 | minfo->limits.video.vcomin = (bd->pins[122] == 0xFF) ? minfo->limits.system.vcomin : bd->pins[122] * mult; |
641 | MINFO->values.pll.system = | 641 | minfo->values.pll.system = |
642 | MINFO->values.pll.video = (bd->pins[ 92] == 0xFF) ? 284000 : bd->pins[ 92] * 4000; | 642 | minfo->values.pll.video = (bd->pins[ 92] == 0xFF) ? 284000 : bd->pins[ 92] * 4000; |
643 | MINFO->values.reg.opt = get_unaligned_le32(bd->pins + 48); | 643 | minfo->values.reg.opt = get_unaligned_le32(bd->pins + 48); |
644 | MINFO->values.reg.opt2 = get_unaligned_le32(bd->pins + 52); | 644 | minfo->values.reg.opt2 = get_unaligned_le32(bd->pins + 52); |
645 | MINFO->values.reg.opt3 = get_unaligned_le32(bd->pins + 94); | 645 | minfo->values.reg.opt3 = get_unaligned_le32(bd->pins + 94); |
646 | MINFO->values.reg.mctlwtst = get_unaligned_le32(bd->pins + 98); | 646 | minfo->values.reg.mctlwtst = get_unaligned_le32(bd->pins + 98); |
647 | MINFO->values.reg.memmisc = get_unaligned_le32(bd->pins + 102); | 647 | minfo->values.reg.memmisc = get_unaligned_le32(bd->pins + 102); |
648 | MINFO->values.reg.memrdbk = get_unaligned_le32(bd->pins + 106); | 648 | minfo->values.reg.memrdbk = get_unaligned_le32(bd->pins + 106); |
649 | MINFO->features.pll.ref_freq = (bd->pins[110] & 0x01) ? 14318 : 27000; | 649 | minfo->features.pll.ref_freq = (bd->pins[110] & 0x01) ? 14318 : 27000; |
650 | MINFO->values.memory.ddr = (bd->pins[114] & 0x60) == 0x20; | 650 | minfo->values.memory.ddr = (bd->pins[114] & 0x60) == 0x20; |
651 | MINFO->values.memory.dll = (bd->pins[115] & 0x02) != 0; | 651 | minfo->values.memory.dll = (bd->pins[115] & 0x02) != 0; |
652 | MINFO->values.memory.emrswen = (bd->pins[115] & 0x01) != 0; | 652 | minfo->values.memory.emrswen = (bd->pins[115] & 0x01) != 0; |
653 | MINFO->values.reg.maccess = MINFO->values.memory.emrswen ? 0x00004000 : 0x00000000; | 653 | minfo->values.reg.maccess = minfo->values.memory.emrswen ? 0x00004000 : 0x00000000; |
654 | if (bd->pins[115] & 4) { | 654 | if (bd->pins[115] & 4) { |
655 | MINFO->values.reg.mctlwtst_core = MINFO->values.reg.mctlwtst; | 655 | minfo->values.reg.mctlwtst_core = minfo->values.reg.mctlwtst; |
656 | } else { | 656 | } else { |
657 | u_int32_t wtst_xlat[] = { 0, 1, 5, 6, 7, 5, 2, 3 }; | 657 | u_int32_t wtst_xlat[] = { 0, 1, 5, 6, 7, 5, 2, 3 }; |
658 | MINFO->values.reg.mctlwtst_core = (MINFO->values.reg.mctlwtst & ~7) | | 658 | minfo->values.reg.mctlwtst_core = (minfo->values.reg.mctlwtst & ~7) | |
659 | wtst_xlat[MINFO->values.reg.mctlwtst & 7]; | 659 | wtst_xlat[minfo->values.reg.mctlwtst & 7]; |
660 | } | 660 | } |
661 | MINFO->max_pixel_clock_panellink = bd->pins[47] * 4000; | 661 | minfo->max_pixel_clock_panellink = bd->pins[47] * 4000; |
662 | return 0; | 662 | return 0; |
663 | } | 663 | } |
664 | 664 | ||
665 | static void default_pins5(WPMINFO2) { | 665 | static void default_pins5(WPMINFO2) { |
666 | /* Mine 16MB G450 with SDRAM DDR */ | 666 | /* Mine 16MB G450 with SDRAM DDR */ |
667 | MINFO->limits.pixel.vcomax = | 667 | minfo->limits.pixel.vcomax = |
668 | MINFO->limits.system.vcomax = | 668 | minfo->limits.system.vcomax = |
669 | MINFO->limits.video.vcomax = 600000; | 669 | minfo->limits.video.vcomax = 600000; |
670 | MINFO->limits.pixel.vcomin = | 670 | minfo->limits.pixel.vcomin = |
671 | MINFO->limits.system.vcomin = | 671 | minfo->limits.system.vcomin = |
672 | MINFO->limits.video.vcomin = 256000; | 672 | minfo->limits.video.vcomin = 256000; |
673 | MINFO->values.pll.system = | 673 | minfo->values.pll.system = |
674 | MINFO->values.pll.video = 284000; | 674 | minfo->values.pll.video = 284000; |
675 | MINFO->values.reg.opt = 0x404A1160; | 675 | minfo->values.reg.opt = 0x404A1160; |
676 | MINFO->values.reg.opt2 = 0x0000AC00; | 676 | minfo->values.reg.opt2 = 0x0000AC00; |
677 | MINFO->values.reg.opt3 = 0x0090A409; | 677 | minfo->values.reg.opt3 = 0x0090A409; |
678 | MINFO->values.reg.mctlwtst_core = | 678 | minfo->values.reg.mctlwtst_core = |
679 | MINFO->values.reg.mctlwtst = 0x0C81462B; | 679 | minfo->values.reg.mctlwtst = 0x0C81462B; |
680 | MINFO->values.reg.memmisc = 0x80000004; | 680 | minfo->values.reg.memmisc = 0x80000004; |
681 | MINFO->values.reg.memrdbk = 0x01001103; | 681 | minfo->values.reg.memrdbk = 0x01001103; |
682 | MINFO->features.pll.ref_freq = 27000; | 682 | minfo->features.pll.ref_freq = 27000; |
683 | MINFO->values.memory.ddr = 1; | 683 | minfo->values.memory.ddr = 1; |
684 | MINFO->values.memory.dll = 1; | 684 | minfo->values.memory.dll = 1; |
685 | MINFO->values.memory.emrswen = 1; | 685 | minfo->values.memory.emrswen = 1; |
686 | MINFO->values.reg.maccess = 0x00004000; | 686 | minfo->values.reg.maccess = 0x00004000; |
687 | } | 687 | } |
688 | 688 | ||
689 | static int matroxfb_set_limits(WPMINFO const struct matrox_bios* bd) { | 689 | static int matroxfb_set_limits(WPMINFO const struct matrox_bios* bd) { |
690 | unsigned int pins_version; | 690 | unsigned int pins_version; |
691 | static const unsigned int pinslen[] = { 64, 64, 64, 128, 128 }; | 691 | static const unsigned int pinslen[] = { 64, 64, 64, 128, 128 }; |
692 | 692 | ||
693 | switch (ACCESS_FBINFO(chip)) { | 693 | switch (minfo->chip) { |
694 | case MGA_2064: default_pins1(PMINFO2); break; | 694 | case MGA_2064: default_pins1(PMINFO2); break; |
695 | case MGA_2164: | 695 | case MGA_2164: |
696 | case MGA_1064: | 696 | case MGA_1064: |
@@ -743,19 +743,19 @@ void matroxfb_read_pins(WPMINFO2) { | |||
743 | u32 opt; | 743 | u32 opt; |
744 | u32 biosbase; | 744 | u32 biosbase; |
745 | u32 fbbase; | 745 | u32 fbbase; |
746 | struct pci_dev* pdev = ACCESS_FBINFO(pcidev); | 746 | struct pci_dev *pdev = minfo->pcidev; |
747 | 747 | ||
748 | memset(&ACCESS_FBINFO(bios), 0, sizeof(ACCESS_FBINFO(bios))); | 748 | memset(&minfo->bios, 0, sizeof(minfo->bios)); |
749 | pci_read_config_dword(pdev, PCI_OPTION_REG, &opt); | 749 | pci_read_config_dword(pdev, PCI_OPTION_REG, &opt); |
750 | pci_write_config_dword(pdev, PCI_OPTION_REG, opt | PCI_OPTION_ENABLE_ROM); | 750 | pci_write_config_dword(pdev, PCI_OPTION_REG, opt | PCI_OPTION_ENABLE_ROM); |
751 | pci_read_config_dword(pdev, PCI_ROM_ADDRESS, &biosbase); | 751 | pci_read_config_dword(pdev, PCI_ROM_ADDRESS, &biosbase); |
752 | pci_read_config_dword(pdev, ACCESS_FBINFO(devflags.fbResource), &fbbase); | 752 | pci_read_config_dword(pdev, minfo->devflags.fbResource, &fbbase); |
753 | pci_write_config_dword(pdev, PCI_ROM_ADDRESS, (fbbase & PCI_ROM_ADDRESS_MASK) | PCI_ROM_ADDRESS_ENABLE); | 753 | pci_write_config_dword(pdev, PCI_ROM_ADDRESS, (fbbase & PCI_ROM_ADDRESS_MASK) | PCI_ROM_ADDRESS_ENABLE); |
754 | parse_bios(vaddr_va(ACCESS_FBINFO(video).vbase), &ACCESS_FBINFO(bios)); | 754 | parse_bios(vaddr_va(minfo->video.vbase), &minfo->bios); |
755 | pci_write_config_dword(pdev, PCI_ROM_ADDRESS, biosbase); | 755 | pci_write_config_dword(pdev, PCI_ROM_ADDRESS, biosbase); |
756 | pci_write_config_dword(pdev, PCI_OPTION_REG, opt); | 756 | pci_write_config_dword(pdev, PCI_OPTION_REG, opt); |
757 | #ifdef CONFIG_X86 | 757 | #ifdef CONFIG_X86 |
758 | if (!ACCESS_FBINFO(bios).bios_valid) { | 758 | if (!minfo->bios.bios_valid) { |
759 | unsigned char __iomem* b; | 759 | unsigned char __iomem* b; |
760 | 760 | ||
761 | b = ioremap(0x000C0000, 65536); | 761 | b = ioremap(0x000C0000, 65536); |
@@ -769,15 +769,15 @@ void matroxfb_read_pins(WPMINFO2) { | |||
769 | printk(KERN_INFO "matroxfb: Legacy BIOS is for %04X:%04X, while this device is %04X:%04X\n", | 769 | printk(KERN_INFO "matroxfb: Legacy BIOS is for %04X:%04X, while this device is %04X:%04X\n", |
770 | ven, dev, pdev->vendor, pdev->device); | 770 | ven, dev, pdev->vendor, pdev->device); |
771 | } else { | 771 | } else { |
772 | parse_bios(b, &ACCESS_FBINFO(bios)); | 772 | parse_bios(b, &minfo->bios); |
773 | } | 773 | } |
774 | iounmap(b); | 774 | iounmap(b); |
775 | } | 775 | } |
776 | } | 776 | } |
777 | #endif | 777 | #endif |
778 | matroxfb_set_limits(PMINFO &ACCESS_FBINFO(bios)); | 778 | matroxfb_set_limits(PMINFO &minfo->bios); |
779 | printk(KERN_INFO "PInS memtype = %u\n", | 779 | printk(KERN_INFO "PInS memtype = %u\n", |
780 | (ACCESS_FBINFO(values).reg.opt & 0x1C00) >> 10); | 780 | (minfo->values.reg.opt & 0x1C00) >> 10); |
781 | } | 781 | } |
782 | 782 | ||
783 | EXPORT_SYMBOL(matroxfb_DAC_in); | 783 | EXPORT_SYMBOL(matroxfb_DAC_in); |