Lines Matching +full:0 +full:x67
51 { 0, {0, 6, 0}, {0, 6, 0}, {0, 6, 0}, {0, 0, 0}, 0,
53 { 4, {0, 4, 0}, {0, 4, 0}, {0, 4, 0}, {0, 0, 0}, 0,
54 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_PSEUDOCOLOR, 8, 16},
55 { 4, {0, 4, 0}, {0, 4, 0}, {0, 4, 0}, {0, 0, 0}, 1,
57 { 8, {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0}, 0,
58 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_PSEUDOCOLOR, 4, 8},
59 {16, {10, 5, 0}, {5, 5, 0}, {0, 5, 0}, {0, 0, 0}, 0,
60 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_TRUECOLOR, 2, 4},
61 {16, {11, 5, 0}, {5, 6, 0}, {0, 5, 0}, {0, 0, 0}, 0,
62 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_TRUECOLOR, 2, 4},
63 {24, {16, 8, 0}, {8, 8, 0}, {0, 8, 0}, {0, 0, 0}, 0,
64 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_TRUECOLOR, 1, 2},
65 {32, {16, 8, 0}, {8, 8, 0}, {0, 8, 0}, {0, 0, 0}, 0,
66 FB_TYPE_PACKED_PIXELS, 0, FB_VISUAL_TRUECOLOR, 1, 2},
71 static const struct svga_pll s3_pll = {3, 129, 3, 33, 0, 3,
73 static const struct svga_pll s3_trio3d_pll = {3, 129, 3, 31, 0, 4,
76 static const int s3_memsizes[] = {4096, 0, 3072, 8192, 2048, 6144, 1024, 512};
86 #define CHIP_UNKNOWN 0x00
87 #define CHIP_732_TRIO32 0x01
88 #define CHIP_764_TRIO64 0x02
89 #define CHIP_765_TRIO64VP 0x03
90 #define CHIP_767_TRIO64UVP 0x04
91 #define CHIP_775_TRIO64V2_DX 0x05
92 #define CHIP_785_TRIO64V2_GX 0x06
93 #define CHIP_551_PLATO_PX 0x07
94 #define CHIP_M65_AURORA64VP 0x08
95 #define CHIP_325_VIRGE 0x09
96 #define CHIP_988_VIRGE_VX 0x0A
97 #define CHIP_375_VIRGE_DX 0x0B
98 #define CHIP_385_VIRGE_GX 0x0C
99 #define CHIP_357_VIRGE_GX2 0x0D
100 #define CHIP_359_VIRGE_GX2P 0x0E
101 #define CHIP_360_TRIO3D_1X 0x10
102 #define CHIP_362_TRIO3D_2X 0x11
103 #define CHIP_368_TRIO3D_2X 0x12
104 #define CHIP_365_TRIO3D 0x13
105 #define CHIP_260_VIRGE_MX 0x14
107 #define CHIP_XXX_TRIO 0x80
108 #define CHIP_XXX_TRIO64V2_DXGX 0x81
109 #define CHIP_XXX_VIRGE_DXGX 0x82
110 #define CHIP_36X_TRIO3D_1X_2X 0x83
112 #define CHIP_UNDECIDED_FLAG 0x80
113 #define CHIP_MASK 0xFF
115 #define MMIO_OFFSET 0x1000000
116 #define MMIO_SIZE 0x10000
120 static const struct vga_regset s3_h_total_regs[] = {{0x00, 0, 7}, {0x5D, 0, 0}, VGA_REGSET_E…
121 static const struct vga_regset s3_h_display_regs[] = {{0x01, 0, 7}, {0x5D, 1, 1}, VGA_REGSET_E…
122 static const struct vga_regset s3_h_blank_start_regs[] = {{0x02, 0, 7}, {0x5D, 2, 2}, VGA_REGSET_E…
123 static const struct vga_regset s3_h_blank_end_regs[] = {{0x03, 0, 4}, {0x05, 7, 7}, VGA_REGSET_E…
124 static const struct vga_regset s3_h_sync_start_regs[] = {{0x04, 0, 7}, {0x5D, 4, 4}, VGA_REGSET_E…
125 static const struct vga_regset s3_h_sync_end_regs[] = {{0x05, 0, 4}, VGA_REGSET_END};
127 …st struct vga_regset s3_v_total_regs[] = {{0x06, 0, 7}, {0x07, 0, 0}, {0x07, 5, 5}, {0x5E, …
128 …c const struct vga_regset s3_v_display_regs[] = {{0x12, 0, 7}, {0x07, 1, 1}, {0x07, 6, 6}, {0…
129 …c const struct vga_regset s3_v_blank_start_regs[] = {{0x15, 0, 7}, {0x07, 3, 3}, {0x09, 5, 5}, {0…
130 static const struct vga_regset s3_v_blank_end_regs[] = {{0x16, 0, 7}, VGA_REGSET_END};
131 …c const struct vga_regset s3_v_sync_start_regs[] = {{0x10, 0, 7}, {0x07, 2, 2}, {0x07, 7, 7}, {0…
132 static const struct vga_regset s3_v_sync_end_regs[] = {{0x11, 0, 3}, VGA_REGSET_END};
134 …c const struct vga_regset s3_line_compare_regs[] = {{0x18, 0, 7}, {0x07, 4, 4}, {0x09, 6, 6}, {0…
135 static const struct vga_regset s3_start_address_regs[] = {{0x0d, 0, 7}, {0x0c, 0, 7}, {0x69, 0, 4}…
136 …ct vga_regset s3_offset_regs[] = {{0x13, 0, 7}, {0x51, 4, 5}, VGA_REGSET_END}; /* set 0x43…
138 static const struct vga_regset s3_dtpc_regs[] = {{0x3B, 0, 7}, {0x5D, 6, 6}, VGA_REGSET_END};
167 MODULE_PARM_DESC(mtrr, "Enable write-combining with MTRR (1=enable, 0=disable, default=1)");
170 MODULE_PARM_DESC(fasttext, "Enable S3 fast text mode (1=enable, 0=disable, default=1)");
177 #define DDC_REG 0xaa /* Trio 3D/1X/2X */
178 #define DDC_MMIO_REG 0xff20 /* all other chips */
179 #define DDC_SCL_OUT (1 << 0)
272 /* vga_wseq(par->state.vgabase, 0x08, 0x06); - not needed, already unlocked */ in s3fb_setup_ddc_bus()
276 svga_wseq_mask(par->state.vgabase, 0x0d, 0x01, 0x03); in s3fb_setup_ddc_bus()
278 svga_wseq_mask(par->state.vgabase, 0x0d, 0x00, 0x03); in s3fb_setup_ddc_bus()
280 svga_wcrt_mask(par->state.vgabase, 0x5c, 0x03, 0x03); in s3fb_setup_ddc_bus()
305 for (i = 0; i < map->height; i++) { in s3fb_settile_fast()
306 for (c = 0; c < map->length; c++) { in s3fb_settile_fast()
344 return ((c & 1) | ((c & 2) << 7) | ((c & 4) << 14) | ((c & 8) << 21)) * 0xFF; in expand_color()
362 for (y = 0; y < image->height; y++) { in s3fb_iplan_imageblit()
365 for (x = 0; x < image->width; x += 8) { in s3fb_iplan_imageblit()
366 val = *(src++) * 0x01010101; in s3fb_iplan_imageblit()
387 for (y = 0; y < rect->height; y++) { in s3fb_iplan_fillrect()
389 for (x = 0; x < rect->width; x += 8) { in s3fb_iplan_fillrect()
401 ((c & 16) << 4) | ((c & 32) << 7) | ((c & 64) >> 6) | ((c & 128) >> 3)) * 0xF; in expand_pixel()
407 u32 fg = image->fg_color * 0x11111111; in s3fb_cfb4_imageblit()
408 u32 bg = image->bg_color * 0x11111111; in s3fb_cfb4_imageblit()
419 for (y = 0; y < image->height; y++) { in s3fb_cfb4_imageblit()
422 for (x = 0; x < image->width; x += 8) { in s3fb_cfb4_imageblit()
435 && ((image->width % 8) == 0) && ((image->dx % 8) == 0)) { in s3fb_imageblit()
447 && ((rect->width % 8) == 0) && ((rect->dx % 8) == 0) in s3fb_fillrect()
468 if (rv < 0) { in s3_set_pixclock()
484 vga_wseq(par->state.vgabase, 0x12, (n - 2) | ((r & 3) << 6)); /* n and two bits of r */ in s3_set_pixclock()
485 vga_wseq(par->state.vgabase, 0x29, r >> 2); /* remaining highest bit of r */ in s3_set_pixclock()
487 vga_wseq(par->state.vgabase, 0x12, (n - 2) | (r << 5)); in s3_set_pixclock()
488 vga_wseq(par->state.vgabase, 0x13, m - 2); in s3_set_pixclock()
492 /* Activate clock - write 0, 1, 0 to seq/15 bit 5 */ in s3_set_pixclock()
493 regval = vga_rseq (par->state.vgabase, 0x15); /* | 0x80; */ in s3_set_pixclock()
494 vga_wseq(par->state.vgabase, 0x15, regval & ~(1<<5)); in s3_set_pixclock()
495 vga_wseq(par->state.vgabase, 0x15, regval | (1<<5)); in s3_set_pixclock()
496 vga_wseq(par->state.vgabase, 0x15, regval & ~(1<<5)); in s3_set_pixclock()
507 if (par->ref_count == 0) { in s3fb_open()
510 memset(&(par->state), 0, sizeof(struct vgastate)); in s3fb_open()
513 par->state.num_crtc = 0x70; in s3fb_open()
514 par->state.num_seq = 0x20; in s3fb_open()
521 return 0; in s3fb_open()
531 if (par->ref_count == 0) { in s3fb_release()
542 return 0; in s3fb_release()
564 if (rv < 0) { in s3fb_check_var()
589 if (rv < 0) { in s3fb_check_var()
596 if (rv < 0) { in s3fb_check_var()
601 return 0; in s3fb_check_var()
613 if (bpp != 0) { in s3fb_set_par()
621 info->pixmap.blit_x = (bpp == 4) ? (1 << (8 - 1)) : (~(u32)0); in s3fb_set_par()
622 info->pixmap.blit_y = ~(u32)0; in s3fb_set_par()
628 info->fix.line_length = 0; in s3fb_set_par()
641 info->var.xoffset = 0; in s3fb_set_par()
642 info->var.yoffset = 0; in s3fb_set_par()
646 vga_wcrt(par->state.vgabase, 0x38, 0x48); in s3fb_set_par()
647 vga_wcrt(par->state.vgabase, 0x39, 0xA5); in s3fb_set_par()
648 vga_wseq(par->state.vgabase, 0x08, 0x06); in s3fb_set_par()
649 svga_wcrt_mask(par->state.vgabase, 0x11, 0x00, 0x80); in s3fb_set_par()
652 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in s3fb_set_par()
653 svga_wcrt_mask(par->state.vgabase, 0x17, 0x00, 0x80); in s3fb_set_par()
660 svga_wcrt_multi(par->state.vgabase, s3_line_compare_regs, 0xFFFFFFFF); in s3fb_set_par()
661 svga_wcrt_multi(par->state.vgabase, s3_start_address_regs, 0); in s3fb_set_par()
664 svga_wcrt_mask(par->state.vgabase, 0x58, 0x10, 0x10); /* enable linear framebuffer */ in s3fb_set_par()
665 …svga_wcrt_mask(par->state.vgabase, 0x31, 0x08, 0x08); /* enable sequencer access to framebuffer ab… in s3fb_set_par()
667 /* svga_wcrt_mask(par->state.vgabase, 0x33, 0x08, 0x08); */ /* DDR ? */ in s3fb_set_par()
668 /* svga_wcrt_mask(par->state.vgabase, 0x43, 0x01, 0x01); */ /* DDR ? */ in s3fb_set_par()
669 svga_wcrt_mask(par->state.vgabase, 0x33, 0x00, 0x08); /* no DDR ? */ in s3fb_set_par()
670 svga_wcrt_mask(par->state.vgabase, 0x43, 0x00, 0x01); /* no DDR ? */ in s3fb_set_par()
672 svga_wcrt_mask(par->state.vgabase, 0x5D, 0x00, 0x28); /* Clear strange HSlen bits */ in s3fb_set_par()
674 /* svga_wcrt_mask(par->state.vgabase, 0x58, 0x03, 0x03); */ in s3fb_set_par()
676 /* svga_wcrt_mask(par->state.vgabase, 0x53, 0x12, 0x13); */ /* enable MMIO */ in s3fb_set_par()
677 /* svga_wcrt_mask(par->state.vgabase, 0x40, 0x08, 0x08); */ /* enable write buffer */ in s3fb_set_par()
690 vga_wcrt(par->state.vgabase, 0x54, 0x18); /* M parameter */ in s3fb_set_par()
691 vga_wcrt(par->state.vgabase, 0x60, 0xff); /* N parameter */ in s3fb_set_par()
692 vga_wcrt(par->state.vgabase, 0x61, 0xff); /* L parameter */ in s3fb_set_par()
693 vga_wcrt(par->state.vgabase, 0x62, 0xff); /* L parameter */ in s3fb_set_par()
696 vga_wcrt(par->state.vgabase, 0x3A, 0x35); in s3fb_set_par()
697 svga_wattr(par->state.vgabase, 0x33, 0x00); in s3fb_set_par()
700 svga_wcrt_mask(par->state.vgabase, 0x09, 0x80, 0x80); in s3fb_set_par()
702 svga_wcrt_mask(par->state.vgabase, 0x09, 0x00, 0x80); in s3fb_set_par()
705 svga_wcrt_mask(par->state.vgabase, 0x42, 0x20, 0x20); in s3fb_set_par()
707 svga_wcrt_mask(par->state.vgabase, 0x42, 0x00, 0x20); in s3fb_set_par()
710 svga_wcrt_mask(par->state.vgabase, 0x45, 0x00, 0x01); in s3fb_set_par()
712 svga_wcrt_mask(par->state.vgabase, 0x67, 0x00, 0x0C); in s3fb_set_par()
718 vga_wcrt(par->state.vgabase, 0x86, 0x80); in s3fb_set_par()
719 vga_wcrt(par->state.vgabase, 0x90, 0x00); in s3fb_set_par()
724 vga_wcrt(par->state.vgabase, 0x50, 0x00); in s3fb_set_par()
725 vga_wcrt(par->state.vgabase, 0x67, 0x50); in s3fb_set_par()
727 vga_wcrt(par->state.vgabase, 0x63, (mode <= 2) ? 0x90 : 0x09); in s3fb_set_par()
728 vga_wcrt(par->state.vgabase, 0x66, 0x90); in s3fb_set_par()
741 vga_wcrt(par->state.vgabase, 0x91, (dbytes + 7) / 8); in s3fb_set_par()
742 vga_wcrt(par->state.vgabase, 0x90, (((dbytes + 7) / 8) >> 8) | 0x80); in s3fb_set_par()
744 vga_wcrt(par->state.vgabase, 0x66, 0x81); in s3fb_set_par()
753 vga_wcrt(par->state.vgabase, 0x34, 0x00); in s3fb_set_par()
755 vga_wcrt(par->state.vgabase, 0x34, 0x10); in s3fb_set_par()
757 svga_wcrt_mask(par->state.vgabase, 0x31, 0x00, 0x40); in s3fb_set_par()
758 multiplex = 0; in s3fb_set_par()
763 case 0: in s3fb_set_par()
768 svga_wcrt_mask(par->state.vgabase, 0x50, 0x00, 0x30); in s3fb_set_par()
769 svga_wcrt_mask(par->state.vgabase, 0x67, 0x00, 0xF0); in s3fb_set_par()
772 svga_wcrt_mask(par->state.vgabase, 0x3A, 0x00, 0x30); in s3fb_set_par()
776 svga_wcrt_mask(par->state.vgabase, 0x31, 0x40, 0x40); in s3fb_set_par()
781 vga_wgfx(par->state.vgabase, VGA_GFX_MODE, 0x40); in s3fb_set_par()
784 svga_wcrt_mask(par->state.vgabase, 0x50, 0x00, 0x30); in s3fb_set_par()
785 svga_wcrt_mask(par->state.vgabase, 0x67, 0x00, 0xF0); in s3fb_set_par()
788 svga_wcrt_mask(par->state.vgabase, 0x3A, 0x00, 0x30); in s3fb_set_par()
794 svga_wcrt_mask(par->state.vgabase, 0x50, 0x00, 0x30); in s3fb_set_par()
795 svga_wcrt_mask(par->state.vgabase, 0x67, 0x00, 0xF0); in s3fb_set_par()
798 svga_wcrt_mask(par->state.vgabase, 0x3A, 0x00, 0x30); in s3fb_set_par()
802 svga_wcrt_mask(par->state.vgabase, 0x50, 0x00, 0x30); in s3fb_set_par()
810 svga_wcrt_mask(par->state.vgabase, 0x67, 0x00, 0xF0); in s3fb_set_par()
812 svga_wcrt_mask(par->state.vgabase, 0x67, 0x10, 0xF0); in s3fb_set_par()
820 svga_wcrt_mask(par->state.vgabase, 0x67, 0x20, 0xF0); in s3fb_set_par()
822 svga_wcrt_mask(par->state.vgabase, 0x67, 0x30, 0xF0); in s3fb_set_par()
824 svga_wcrt_mask(par->state.vgabase, 0x50, 0x10, 0x30); in s3fb_set_par()
826 svga_wcrt_mask(par->state.vgabase, 0x67, 0x30, 0xF0); in s3fb_set_par()
829 svga_wcrt_mask(par->state.vgabase, 0x67, 0x20, 0xF0); in s3fb_set_par()
833 svga_wcrt_mask(par->state.vgabase, 0x50, 0x10, 0x30); in s3fb_set_par()
834 svga_wcrt_mask(par->state.vgabase, 0x67, 0x30, 0xF0); in s3fb_set_par()
848 svga_wcrt_mask(par->state.vgabase, 0x67, 0x40, 0xF0); in s3fb_set_par()
850 svga_wcrt_mask(par->state.vgabase, 0x67, 0x50, 0xF0); in s3fb_set_par()
852 svga_wcrt_mask(par->state.vgabase, 0x50, 0x10, 0x30); in s3fb_set_par()
854 svga_wcrt_mask(par->state.vgabase, 0x67, 0x50, 0xF0); in s3fb_set_par()
857 svga_wcrt_mask(par->state.vgabase, 0x67, 0x40, 0xF0); in s3fb_set_par()
861 svga_wcrt_mask(par->state.vgabase, 0x50, 0x10, 0x30); in s3fb_set_par()
862 svga_wcrt_mask(par->state.vgabase, 0x67, 0x50, 0xF0); in s3fb_set_par()
875 svga_wcrt_mask(par->state.vgabase, 0x67, 0xD0, 0xF0); in s3fb_set_par()
879 svga_wcrt_mask(par->state.vgabase, 0x50, 0x30, 0x30); in s3fb_set_par()
880 svga_wcrt_mask(par->state.vgabase, 0x67, 0xD0, 0xF0); in s3fb_set_par()
888 svga_wseq_mask(par->state.vgabase, 0x15, multiplex ? 0x10 : 0x00, 0x10); in s3fb_set_par()
889 svga_wseq_mask(par->state.vgabase, 0x18, multiplex ? 0x80 : 0x00, 0x80); in s3fb_set_par()
901 vga_wcrt(par->state.vgabase, 0x3C, (htotal + 1) / 2); in s3fb_set_par()
911 memset_io(info->screen_base, 0x00, screen_size); in s3fb_set_par()
913 svga_wcrt_mask(par->state.vgabase, 0x17, 0x80, 0x80); in s3fb_set_par()
914 svga_wseq_mask(par->state.vgabase, 0x01, 0x00, 0x20); in s3fb_set_par()
916 return 0; in s3fb_set_par()
925 case 0: in s3fb_setcolreg()
931 (fb->var.nonstd == 0)) { in s3fb_setcolreg()
932 outb(0xF0, VGA_PEL_MSK); in s3fb_setcolreg()
935 outb(0x0F, VGA_PEL_MSK); in s3fb_setcolreg()
946 outb(0xFF, VGA_PEL_MSK); in s3fb_setcolreg()
954 return 0; in s3fb_setcolreg()
957 ((u32*)fb->pseudo_palette)[regno] = ((red & 0xF800) >> 1) | in s3fb_setcolreg()
958 ((green & 0xF800) >> 6) | ((blue & 0xF800) >> 11); in s3fb_setcolreg()
960 ((u32*)fb->pseudo_palette)[regno] = (red & 0xF800) | in s3fb_setcolreg()
961 ((green & 0xFC00) >> 5) | ((blue & 0xF800) >> 11); in s3fb_setcolreg()
967 return 0; in s3fb_setcolreg()
969 ((u32*)fb->pseudo_palette)[regno] = ((red & 0xFF00) << 8) | in s3fb_setcolreg()
970 (green & 0xFF00) | ((blue & 0xFF00) >> 8); in s3fb_setcolreg()
976 return 0; in s3fb_setcolreg()
989 svga_wcrt_mask(par->state.vgabase, 0x56, 0x00, 0x06); in s3fb_blank()
990 svga_wseq_mask(par->state.vgabase, 0x01, 0x00, 0x20); in s3fb_blank()
994 svga_wcrt_mask(par->state.vgabase, 0x56, 0x00, 0x06); in s3fb_blank()
995 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in s3fb_blank()
999 svga_wcrt_mask(par->state.vgabase, 0x56, 0x02, 0x06); in s3fb_blank()
1000 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in s3fb_blank()
1004 svga_wcrt_mask(par->state.vgabase, 0x56, 0x04, 0x06); in s3fb_blank()
1005 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in s3fb_blank()
1009 svga_wcrt_mask(par->state.vgabase, 0x56, 0x06, 0x06); in s3fb_blank()
1010 svga_wseq_mask(par->state.vgabase, 0x01, 0x20, 0x20); in s3fb_blank()
1014 return 0; in s3fb_blank()
1026 if (info->var.bits_per_pixel == 0) { in s3fb_pan_display()
1039 return 0; in s3fb_pan_display()
1068 u8 cr30 = vga_rcrt(par->state.vgabase, 0x30); in s3_identification()
1069 u8 cr2e = vga_rcrt(par->state.vgabase, 0x2e); in s3_identification()
1070 u8 cr2f = vga_rcrt(par->state.vgabase, 0x2f); in s3_identification()
1072 if ((cr30 == 0xE0) || (cr30 == 0xE1)) { in s3_identification()
1073 if (cr2e == 0x10) in s3_identification()
1075 if (cr2e == 0x11) { in s3_identification()
1076 if (! (cr2f & 0x40)) in s3_identification()
1085 u8 cr6f = vga_rcrt(par->state.vgabase, 0x6f); in s3_identification()
1087 if (! (cr6f & 0x01)) in s3_identification()
1094 u8 cr6f = vga_rcrt(par->state.vgabase, 0x6f); in s3_identification()
1096 if (! (cr6f & 0x01)) in s3_identification()
1103 switch (vga_rcrt(par->state.vgabase, 0x2f)) { in s3_identification()
1104 case 0x00: in s3_identification()
1106 case 0x01: in s3_identification()
1108 case 0x02: in s3_identification()
1152 if (rc < 0) { in s3_pci_probe()
1158 if (rc < 0) { in s3_pci_probe()
1164 info->fix.smem_start = pci_resource_start(dev, 0); in s3_pci_probe()
1165 info->fix.smem_len = pci_resource_len(dev, 0); in s3_pci_probe()
1168 info->screen_base = pci_iomap_wc(dev, 0, 0); in s3_pci_probe()
1175 bus_reg.start = 0; in s3_pci_probe()
1185 cr38 = vga_rcrt(par->state.vgabase, 0x38); in s3_pci_probe()
1186 cr39 = vga_rcrt(par->state.vgabase, 0x39); in s3_pci_probe()
1187 vga_wseq(par->state.vgabase, 0x08, 0x06); in s3_pci_probe()
1188 vga_wcrt(par->state.vgabase, 0x38, 0x48); in s3_pci_probe()
1189 vga_wcrt(par->state.vgabase, 0x39, 0xA5); in s3_pci_probe()
1193 par->rev = vga_rcrt(par->state.vgabase, 0x2f); in s3_pci_probe()
1198 /* 0x36 register is accessible even if other registers are locked */ in s3_pci_probe()
1199 regval = vga_rcrt(par->state.vgabase, 0x36); in s3_pci_probe()
1204 switch ((regval & 0xE0) >> 5) { in s3_pci_probe()
1205 case 0: /* 8MB -- only 4MB usable for display */ in s3_pci_probe()
1218 switch ((regval & 0xC0) >> 6) { in s3_pci_probe()
1227 switch ((regval & 0x60) >> 5) { in s3_pci_probe()
1228 case 0: /* 2MB */ in s3_pci_probe()
1242 regval = vga_rcrt(par->state.vgabase, 0x37); in s3_pci_probe()
1243 switch ((regval & 0x60) >> 5) { in s3_pci_probe()
1256 regval = vga_rseq(par->state.vgabase, 0x10); in s3_pci_probe()
1257 par->mclk_freq = ((vga_rseq(par->state.vgabase, 0x11) + 2) * 14318) / ((regval & 0x1F) + 2); in s3_pci_probe()
1261 vga_wcrt(par->state.vgabase, 0x38, cr38); in s3_pci_probe()
1262 vga_wcrt(par->state.vgabase, 0x39, cr39); in s3_pci_probe()
1265 info->fix.mmio_start = 0; in s3_pci_probe()
1266 info->fix.mmio_len = 0; in s3_pci_probe()
1269 info->fix.ypanstep = 0; in s3_pci_probe()
1279 svga_wcrt_mask(par->state.vgabase, 0x53, 0x08, 0x08); /* enable MMIO */ in s3_pci_probe()
1281 dev_err(info->device, "unable to map MMIO at 0x%lx, disabling DDC", in s3_pci_probe()
1285 if (s3fb_setup_ddc_bus(info) == 0) { in s3_pci_probe()
1303 if (s3fb_check_var(&info->var, info) == 0) in s3_pci_probe()
1339 rc = fb_alloc_cmap(&info->cmap, 256, 0); in s3_pci_probe()
1340 if (rc < 0) { in s3_pci_probe()
1346 if (rc < 0) { in s3_pci_probe()
1357 vga_rcrt(par->state.vgabase, 0x2d), in s3_pci_probe()
1358 vga_rcrt(par->state.vgabase, 0x2e), in s3_pci_probe()
1359 vga_rcrt(par->state.vgabase, 0x2f), in s3_pci_probe()
1360 vga_rcrt(par->state.vgabase, 0x30)); in s3_pci_probe()
1369 return 0; in s3_pci_probe()
1433 if (par->ref_count == 0) { in s3_pci_suspend()
1436 return 0; in s3_pci_suspend()
1444 return 0; in s3_pci_suspend()
1460 if (par->ref_count == 0) { in s3_pci_resume()
1463 return 0; in s3_pci_resume()
1467 fb_set_suspend(info, 0); in s3_pci_resume()
1472 return 0; in s3_pci_resume()
1489 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8810), .driver_data = CHIP_XXX_TRIO},
1490 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8811), .driver_data = CHIP_XXX_TRIO},
1491 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8812), .driver_data = CHIP_M65_AURORA64VP},
1492 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8814), .driver_data = CHIP_767_TRIO64UVP},
1493 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8901), .driver_data = CHIP_XXX_TRIO64V2_DXGX},
1494 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8902), .driver_data = CHIP_551_PLATO_PX},
1496 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x5631), .driver_data = CHIP_325_VIRGE},
1497 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x883D), .driver_data = CHIP_988_VIRGE_VX},
1498 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8A01), .driver_data = CHIP_XXX_VIRGE_DXGX},
1499 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8A10), .driver_data = CHIP_357_VIRGE_GX2},
1500 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8A11), .driver_data = CHIP_359_VIRGE_GX2P},
1501 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8A12), .driver_data = CHIP_359_VIRGE_GX2P},
1502 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8A13), .driver_data = CHIP_36X_TRIO3D_1X_2X},
1503 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8904), .driver_data = CHIP_365_TRIO3D},
1504 {PCI_DEVICE(PCI_VENDOR_ID_S3, 0x8C01), .driver_data = CHIP_260_VIRGE_MX},
1506 {0, 0, 0, 0, 0, 0, 0}
1528 return 0; in s3fb_setup()
1535 mtrr = simple_strtoul(opt + 5, NULL, 0); in s3fb_setup()
1537 fasttext = simple_strtoul(opt + 9, NULL, 0); in s3fb_setup()
1542 return 0; in s3fb_setup()