Lines Matching +full:0 +full:x0200000
137 0,0, /* virtual -> visible no offset */
139 0, /* greyscale ? */
140 {0,0,0}, /* R */
141 {0,0,0}, /* G */
142 {0,0,0}, /* B */
143 {0,0,0}, /* transparency */
144 0, /* standard pixel format */
149 96L,2L,~0, /* No sync info */
170 mga_outl(0x3C2C, pos); in update_crtc2()
171 mga_outl(0x3C28, pos + minfo->fbcon.var.xres_virtual * minfo->fbcon.var.bits_per_pixel / 8); in update_crtc2()
173 mga_outl(0x3C28, pos); in update_crtc2()
182 if (minfo->crtc1.panpos >= 0) { in matroxfb_crtc1_panpos()
188 if (panpos >= 0) { in matroxfb_crtc1_panpos()
193 mga_setr(M_EXTVGA_INDEX, 0x00, panpos); in matroxfb_crtc1_panpos()
194 if (extvga_reg != 0x00) { in matroxfb_crtc1_panpos()
205 int handled = 0; in matrox_irq()
210 if (status & 0x20) { in matrox_irq()
211 mga_outl(M_ICLEAR, 0x20); in matrox_irq()
217 if (status & 0x200) { in matrox_irq()
218 mga_outl(M_ICLEAR, 0x200); in matrox_irq()
231 bm = 0x220; in matroxfb_enable_irq()
233 bm = 0x020; in matroxfb_enable_irq()
235 if (!test_and_set_bit(0, &minfo->irq_flags)) { in matroxfb_enable_irq()
238 clear_bit(0, &minfo->irq_flags); in matroxfb_enable_irq()
253 return 0; in matroxfb_enable_irq()
258 if (test_and_clear_bit(0, &minfo->irq_flags)) { in matroxfb_disable_irq()
262 mga_outl(M_IEN, mga_inl(M_IEN) & ~0x220); in matroxfb_disable_irq()
264 mga_outl(M_IEN, mga_inl(M_IEN) & ~0x20); in matroxfb_disable_irq()
276 case 0: in matroxfb_wait_for_sync()
288 ret = matroxfb_enable_irq(minfo, 0); in matroxfb_wait_for_sync()
295 if (ret < 0) { in matroxfb_wait_for_sync()
298 if (ret == 0) { in matroxfb_wait_for_sync()
302 return 0; in matroxfb_wait_for_sync()
327 p0 = minfo->hw.CRTC[0x0D] = pos & 0xFF; in matrox_pan_var()
328 p1 = minfo->hw.CRTC[0x0C] = (pos & 0xFF00) >> 8; in matrox_pan_var()
329 …p2 = minfo->hw.CRTCEXT[0] = (minfo->hw.CRTCEXT[0] & 0xB0) | ((pos >> 16) & 0x0F) | ((pos >> 14) & … in matrox_pan_var()
333 vbl = (var->activate & FB_ACTIVATE_VBL) && (matroxfb_enable_irq(minfo, 0) == 0); in matrox_pan_var()
338 mga_setr(M_CRTC_INDEX, 0x0D, p0); in matrox_pan_var()
339 mga_setr(M_CRTC_INDEX, 0x0C, p1); in matrox_pan_var()
341 mga_setr(M_EXTVGA_INDEX, 0x08, p3); in matrox_pan_var()
347 mga_setr(M_EXTVGA_INDEX, 0x00, p2); in matrox_pan_var()
399 return(0); in matroxfb_open()
409 if (0 == --minfo->userusecount) { in matroxfb_release()
414 matroxfb_remove(minfo, 0); in matroxfb_release()
416 return(0); in matroxfb_release()
426 return 0; in matroxfb_pan_display()
456 case 0: return xres; in matroxfb_test_and_set_rounding()
544 { 8,{ 0,8},{0,8},{0,8},{ 0,0},MX_VISUAL_PSEUDOCOLOR}, in matroxfb_decode_var()
545 {15,{10,5},{5,5},{0,5},{15,1},MX_VISUAL_DIRECTCOLOR}, in matroxfb_decode_var()
546 {16,{11,5},{5,6},{0,5},{ 0,0},MX_VISUAL_DIRECTCOLOR}, in matroxfb_decode_var()
547 {24,{16,8},{8,8},{0,8},{ 0,0},MX_VISUAL_DIRECTCOLOR}, in matroxfb_decode_var()
548 {32,{16,8},{8,8},{0,8},{24,8},MX_VISUAL_DIRECTCOLOR} in matroxfb_decode_var()
566 *ydstorg = 0; in matroxfb_decode_var()
582 if (!minfo->capable.cross4MB && (memlen > 0x400000)) { in matroxfb_decode_var()
596 *ydstorg = m2 = 0x400000 % m2; in matroxfb_decode_var()
640 return 0; in matroxfb_decode_var()
655 * != 0 for invalid regno. in matroxfb_setcolreg()
702 return 0; in matroxfb_setcolreg()
714 fix->ywrapstep = 0; in matroxfb_init_fix()
742 if ((err = matroxfb_decode_var(minfo, var, &visual, &cmap_len, &ydstorg)) != 0) in matroxfb_check_var()
744 return 0; in matroxfb_check_var()
763 if ((err = matroxfb_decode_var(minfo, var, &visual, &cmap_len, &ydstorg)) != 0) in matroxfb_set_par()
769 minfo->fbcon.fix.type_aux = 0; in matroxfb_set_par()
791 case 0: mt.delay = 31 + 0; break; in matroxfb_set_par()
801 for (out = 0; out < MATROXFB_MAX_OUTPUTS; out++) { in matroxfb_set_par()
814 hw->CRTC[0x0D] = pos & 0xFF; in matroxfb_set_par()
815 hw->CRTC[0x0C] = (pos & 0xFF00) >> 8; in matroxfb_set_par()
816 hw->CRTCEXT[0] = (hw->CRTCEXT[0] & 0xF0) | ((pos >> 16) & 0x0F) | ((pos >> 14) & 0x40); in matroxfb_set_par()
821 for (out = 0; out < MATROXFB_MAX_OUTPUTS; out++) { in matroxfb_set_par()
827 for (out = 0; out < MATROXFB_MAX_OUTPUTS; out++) { in matroxfb_set_par()
838 return 0; in matroxfb_set_par()
846 matroxfb_enable_irq(minfo, 0); in matroxfb_get_vblank()
847 memset(vblank, 0, sizeof(*vblank)); in matroxfb_get_vblank()
861 if (test_bit(0, &minfo->irq_flags)) { in matroxfb_get_vblank()
867 return 0; in matroxfb_get_vblank()
897 return 0; in matroxfb_ioctl()
924 val = 0; in matroxfb_ioctl()
956 return 0; in matroxfb_ioctl()
974 val = 0; in matroxfb_ioctl()
981 return 0; in matroxfb_ioctl()
991 for (i = 0; i < 32; i++) { in matroxfb_ioctl()
1010 for (i = 0; i < MATROXFB_MAX_OUTPUTS; i++) { in matroxfb_ioctl()
1017 changes = 0; in matroxfb_ioctl()
1018 for (i = 0; i < MATROXFB_MAX_OUTPUTS; i++) { in matroxfb_ioctl()
1030 return 0; in matroxfb_ioctl()
1032 return 0; in matroxfb_ioctl()
1036 u_int32_t conn = 0; in matroxfb_ioctl()
1039 for (i = 0; i < MATROXFB_MAX_OUTPUTS; i++) { in matroxfb_ioctl()
1046 return 0; in matroxfb_ioctl()
1050 u_int32_t conn = 0; in matroxfb_ioctl()
1053 for (i = 0; i < MATROXFB_MAX_OUTPUTS; i++) { in matroxfb_ioctl()
1071 return 0; in matroxfb_ioctl()
1075 u_int32_t conn = 0; in matroxfb_ioctl()
1078 for (i = 0; i < MATROXFB_MAX_OUTPUTS; i++) { in matroxfb_ioctl()
1085 return 0; in matroxfb_ioctl()
1091 memset(&r, 0, sizeof(r)); in matroxfb_ioctl()
1095 r.version = KERNEL_VERSION(1,0,0); in matroxfb_ioctl()
1099 return 0; in matroxfb_ioctl()
1119 if (err >= 0 && in matroxfb_ioctl()
1141 if (err >= 0 && in matroxfb_ioctl()
1169 /* 0 unblank, 1 blank, 2 no vsync, 3 no hsync, 4 off */
1184 case FB_BLANK_NORMAL: seq = 0x20; crtc = 0x00; break; /* works ??? */ in matroxfb_blank()
1185 case FB_BLANK_VSYNC_SUSPEND: seq = 0x20; crtc = 0x10; break; in matroxfb_blank()
1186 case FB_BLANK_HSYNC_SUSPEND: seq = 0x20; crtc = 0x20; break; in matroxfb_blank()
1187 case FB_BLANK_POWERDOWN: seq = 0x20; crtc = 0x30; break; in matroxfb_blank()
1188 default: seq = 0x00; crtc = 0x00; break; in matroxfb_blank()
1194 mga_outb(M_SEQ_DATA, (mga_inb(M_SEQ_DATA) & ~0x20) | seq); in matroxfb_blank()
1196 mga_outb(M_EXTVGA_DATA, (mga_inb(M_EXTVGA_DATA) & ~0x30) | crtc); in matroxfb_blank()
1199 return 0; in matroxfb_blank()
1218 #define RSDepth(X) (((X) >> 8) & 0x0F)
1219 #define RS8bpp 0x1
1220 #define RS15bpp 0x2
1221 #define RS16bpp 0x3
1222 #define RS32bpp 0x4
1223 #define RS4bpp 0x5
1224 #define RS24bpp 0x6
1225 #define RSText 0x7
1226 #define RSText8 0x8
1229 { { 0, 8, 0}, { 0, 8, 0}, { 0, 8, 0}, { 0, 0, 0}, 8 },
1230 { { 10, 5, 0}, { 5, 5, 0}, { 0, 5, 0}, { 15, 1, 0}, 16 },
1231 { { 11, 5, 0}, { 5, 6, 0}, { 0, 5, 0}, { 0, 0, 0}, 16 },
1232 { { 16, 8, 0}, { 8, 8, 0}, { 0, 8, 0}, { 24, 8, 0}, 32 },
1233 { { 0, 8, 0}, { 0, 8, 0}, { 0, 8, 0}, { 0, 0, 0}, 4 },
1234 { { 16, 8, 0}, { 8, 8, 0}, { 0, 8, 0}, { 0, 0, 0}, 24 },
1235 { { 0, 6, 0}, { 0, 6, 0}, { 0, 6, 0}, { 0, 0, 0}, 0 }, /* textmode with (default) VGA8x16 */
1236 { { 0, 6, 0}, { 0, 6, 0}, { 0, 6, 0}, { 0, 0, 0}, 0 }, /* textmode hardwired to VGA8x8 */
1241 static int option_precise_width = 1; /* cannot be changed, option_precise_width==0 must imply noacc…
1256 static unsigned int vesa = ~0; /* "matroxfb:vesa:xxxxx" */
1260 static unsigned int upper = ~0; /* "matroxfb:upper:xxxxx" */
1261 static unsigned int lower = ~0; /* "matroxfb:lower:xxxxx" */
1263 static unsigned int left = ~0; /* "matroxfb:left:xxxxx" */
1264 static unsigned int right = ~0; /* "matroxfb:right:xxxxx" */
1293 maxSize &= ~0x1FFFFF; /* must be X*2MB (really it must be 2 or X*4MB) */ in matroxfb_getmemory()
1295 if (maxSize < 0x0200000) return 0; in matroxfb_getmemory()
1296 if (maxSize > 0x2000000) maxSize = 0x2000000; in matroxfb_getmemory()
1298 mga_outb(M_EXTVGA_INDEX, 0x03); in matroxfb_getmemory()
1300 mga_outb(M_EXTVGA_DATA, orig | 0x80); in matroxfb_getmemory()
1303 for (offs = 0x100000; offs < maxSize; offs += 0x200000) in matroxfb_getmemory()
1305 for (offs = 0x100000; offs < maxSize; offs += 0x200000) in matroxfb_getmemory()
1306 mga_writeb(vm, offs, 0x02); in matroxfb_getmemory()
1307 mga_outb(M_CACHEFLUSH, 0x00); in matroxfb_getmemory()
1308 for (offs = 0x100000; offs < maxSize; offs += 0x200000) { in matroxfb_getmemory()
1309 if (mga_readb(vm, offs) != 0x02) in matroxfb_getmemory()
1311 mga_writeb(vm, offs, mga_readb(vm, offs) - 0x02); in matroxfb_getmemory()
1316 for (offs2 = 0x100000; offs2 < maxSize; offs2 += 0x200000) in matroxfb_getmemory()
1319 mga_outb(M_EXTVGA_INDEX, 0x03); in matroxfb_getmemory()
1322 *realSize = offs - 0x100000; in matroxfb_getmemory()
1324 minfo->interleave = !(!isMillenium(minfo) || ((offs - 0x100000) & 0x3FFFFF)); in matroxfb_getmemory()
1337 .maxvram = 0x0800000,
1338 .maxdisplayable = 0x0800000,
1344 .maxvram = 0x1000000,
1345 .maxdisplayable = 0x0800000,
1351 .maxvram = 0x1000000,
1352 .maxdisplayable = 0x0800000,
1359 .maxvram = 0x0800000,
1360 .maxdisplayable = 0x0800000,
1367 .maxvram = 0x0800000,
1368 .maxdisplayable = 0x0800000,
1374 .maxvram = 0x1000000,
1375 .maxdisplayable = 0x1000000,
1380 .maxvram = 0x100000,
1381 .maxdisplayable = 0x800000,
1388 .maxvram = 0x2000000,
1389 .maxdisplayable = 0x1000000,
1395 #define DEVF_VIDEO64BIT 0x0001
1396 #define DEVF_SWAPS 0x0002
1397 #define DEVF_SRCORG 0x0004
1398 #define DEVF_DUALHEAD 0x0008
1399 #define DEVF_CROSS4MB 0x0010
1400 #define DEVF_TEXT4B 0x0020
1401 /* #define DEVF_recycled 0x0040 */
1402 /* #define DEVF_recycled 0x0080 */
1403 #define DEVF_SUPPORT32MB 0x0100
1404 #define DEVF_ANY_VXRES 0x0200
1405 #define DEVF_TEXT16B 0x0400
1406 #define DEVF_CRTC2 0x0800
1407 #define DEVF_MAVEN_CAPABLE 0x1000
1408 #define DEVF_PANELLINK_CAPABLE 0x2000
1409 #define DEVF_G450DAC 0x4000
1429 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MIL, 0xFF,
1430 0, 0,
1436 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MIL_2, 0xFF,
1437 0, 0,
1443 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MIL_2_AGP, 0xFF,
1444 0, 0,
1452 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MYS, 0x02,
1453 0, 0,
1459 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MYS, 0xFF,
1460 0, 0,
1466 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MYS_AGP, 0x02,
1467 0, 0,
1473 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MYS_AGP, 0xFF,
1474 0, 0,
1482 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G100_MM, 0xFF,
1483 0, 0,
1489 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G100_AGP, 0xFF,
1490 0, 0,
1496 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_PCI, 0xFF,
1497 0, 0,
1503 {PCI_VENDOR_ID_MATROX, 0x0532, 0xFF,
1504 0, 0,
1510 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
1517 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
1524 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
1531 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
1538 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
1545 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
1546 0, 0,
1552 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G400, 0x80,
1559 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G400, 0x80,
1560 0, 0,
1566 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G400, 0xFF,
1567 0, 0,
1573 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G550, 0xFF,
1574 0, 0,
1581 {0, 0, 0xFF,
1582 0, 0,
1583 0,
1584 0,
1585 0,
1593 0, FB_VMODE_NONINTERLACED
1596 static int hotplug = 0;
1604 minfo->outputs[0].default_src = MATROXFB_SRC_CRTC1; in setDefaultOutputs()
1612 for (i = 0; i < MATROXFB_MAX_OUTPUTS; i++) { in setDefaultOutputs()
1615 if (c == 0) { in setDefaultOutputs()
1618 if (c == '0') { in setDefaultOutputs()
1630 outputs[0] = 0; in setDefaultOutputs()
1635 unsigned long ctrlptr_phys = 0; in initMatrox2()
1636 unsigned long video_base_phys = 0; in initMatrox2()
1672 minfo->devflags.support32MB = (b->flags & DEVF_SUPPORT32MB) != 0; in initMatrox2()
1674 minfo->devflags.crtc2 = (b->flags & DEVF_CRTC2) != 0; in initMatrox2()
1675 minfo->devflags.maven_capable = (b->flags & DEVF_MAVEN_CAPABLE) != 0; in initMatrox2()
1676 minfo->devflags.dualhead = (b->flags & DEVF_DUALHEAD) != 0; in initMatrox2()
1678 minfo->devflags.g450dac = (b->flags & DEVF_G450DAC) != 0; in initMatrox2()
1690 if (minfo->capable.cross4MB < 0) in initMatrox2()
1694 video_base_phys = pci_resource_start(minfo->pcidev, 0); in initMatrox2()
1697 ctrlptr_phys = pci_resource_start(minfo->pcidev, 0); in initMatrox2()
1720 if (mem < 0x00100000) mem *= 1024; in initMatrox2()
1746 mga_option &= 0x7FFFFFFF; /* clear BIG_ENDIAN */ in initMatrox2()
1751 if (!(mga_option & 0x20000000) && !minfo->devflags.nopciretry) { in initMatrox2()
1754 mga_option |= 0x20000000; in initMatrox2()
1763 pci_write_config_dword(minfo->pcidev, PCI_MGA_INDEX, 0x00003C00); in initMatrox2()
1777 minfo->devflags.ydstorg = 0; in initMatrox2()
1788 request_region(0x3C0, 32, "matrox"); in initMatrox2()
1792 minfo->fbcon.monspecs.hfmin = 0; in initMatrox2()
1794 minfo->fbcon.monspecs.vfmin = 0; in initMatrox2()
1796 minfo->fbcon.monspecs.dpms = 0; /* TBD */ in initMatrox2()
1804 vesafb_defined.vmode = 0; in initMatrox2()
1824 fb_find_mode(&vesafb_defined, &minfo->fbcon, videomode[0] ? videomode : NULL, in initMatrox2()
1825 NULL, 0, &defaultmode, vesafb_defined.bits_per_pixel); in initMatrox2()
1834 if (left != ~0) in initMatrox2()
1836 if (right != ~0) in initMatrox2()
1838 if (upper != ~0) in initMatrox2()
1840 if (lower != ~0) in initMatrox2()
1848 else if (vesafb_defined.sync == ~0) { in initMatrox2()
1849 vesafb_defined.sync = 0; in initMatrox2()
1863 if ((tmp < fh) || (fh == 0)) fh = tmp; in initMatrox2()
1868 if ((tmp < maxclk) || (maxclk == 0)) maxclk = tmp; in initMatrox2()
1890 if (default_vmode <= 0 || default_vmode > VMODE_MAX) in initMatrox2()
1900 var.xoffset = var.yoffset = 0; in initMatrox2()
1928 printk(KERN_INFO "matroxfb: framebuffer at 0x%lX, mapped to 0x%p, size %d\n", in initMatrox2()
1931 /* We do not have to set currcon to 0... register_framebuffer do it for us on first console in initMatrox2()
1932 * and we do not want currcon == 0 for subsequent framebuffers */ in initMatrox2()
1935 if (register_framebuffer(&minfo->fbcon) < 0) { in initMatrox2()
1950 return 0; in initMatrox2()
1986 return 0; in matroxfb_register_driver()
1998 for (i = 0; i < minfo->drivers_count; ) { in matroxfb_unregister_driver()
2012 int i = 0; in matroxfb_register_device()
2034 for (i = 0; i < minfo->drivers_count; i++) { in matroxfb_unregister_device()
2062 if (dev > 0) { in matroxfb_probe()
2077 minfo->dead = 0; in matroxfb_probe()
2078 minfo->usecount = 0; in matroxfb_probe()
2079 minfo->userusecount = 0; in matroxfb_probe()
2085 noinit = 0; in matroxfb_probe()
2093 noinit = 0; in matroxfb_probe()
2097 minfo->devflags.noinit = 0; in matroxfb_probe()
2111 minfo->irq_flags = 0; in matroxfb_probe()
2119 return 0; in matroxfb_probe()
2135 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2137 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2139 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2143 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2147 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2149 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2151 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2152 {PCI_VENDOR_ID_MATROX, 0x0532,
2153 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2155 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2157 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2159 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2161 {0, 0,
2162 0, 0, 0, 0, 0}
2177 #define RSResolution(X) ((X) & 0x0F)
2209 { 0, 0, ~0, ~0, ~0, ~0, 0, 0, 0 }
2215 { ~0, RSCreate(RSNoxNo, RS8bpp ) },
2216 { 0x101, RSCreate(RS640x480, RS8bpp ) },
2217 { 0x100, RSCreate(RS640x400, RS8bpp ) },
2218 { 0x180, RSCreate(RS768x576, RS8bpp ) },
2219 { 0x103, RSCreate(RS800x600, RS8bpp ) },
2220 { 0x188, RSCreate(RS960x720, RS8bpp ) },
2221 { 0x105, RSCreate(RS1024x768, RS8bpp ) },
2222 { 0x190, RSCreate(RS1152x864, RS8bpp ) },
2223 { 0x107, RSCreate(RS1280x1024, RS8bpp ) },
2224 { 0x198, RSCreate(RS1408x1056, RS8bpp ) },
2225 { 0x11C, RSCreate(RS1600x1200, RS8bpp ) },
2226 { 0x110, RSCreate(RS640x480, RS15bpp) },
2227 { 0x181, RSCreate(RS768x576, RS15bpp) },
2228 { 0x113, RSCreate(RS800x600, RS15bpp) },
2229 { 0x189, RSCreate(RS960x720, RS15bpp) },
2230 { 0x116, RSCreate(RS1024x768, RS15bpp) },
2231 { 0x191, RSCreate(RS1152x864, RS15bpp) },
2232 { 0x119, RSCreate(RS1280x1024, RS15bpp) },
2233 { 0x199, RSCreate(RS1408x1056, RS15bpp) },
2234 { 0x11D, RSCreate(RS1600x1200, RS15bpp) },
2235 { 0x111, RSCreate(RS640x480, RS16bpp) },
2236 { 0x182, RSCreate(RS768x576, RS16bpp) },
2237 { 0x114, RSCreate(RS800x600, RS16bpp) },
2238 { 0x18A, RSCreate(RS960x720, RS16bpp) },
2239 { 0x117, RSCreate(RS1024x768, RS16bpp) },
2240 { 0x192, RSCreate(RS1152x864, RS16bpp) },
2241 { 0x11A, RSCreate(RS1280x1024, RS16bpp) },
2242 { 0x19A, RSCreate(RS1408x1056, RS16bpp) },
2243 { 0x11E, RSCreate(RS1600x1200, RS16bpp) },
2244 { 0x1B2, RSCreate(RS640x480, RS24bpp) },
2245 { 0x184, RSCreate(RS768x576, RS24bpp) },
2246 { 0x1B5, RSCreate(RS800x600, RS24bpp) },
2247 { 0x18C, RSCreate(RS960x720, RS24bpp) },
2248 { 0x1B8, RSCreate(RS1024x768, RS24bpp) },
2249 { 0x194, RSCreate(RS1152x864, RS24bpp) },
2250 { 0x1BB, RSCreate(RS1280x1024, RS24bpp) },
2251 { 0x19C, RSCreate(RS1408x1056, RS24bpp) },
2252 { 0x1BF, RSCreate(RS1600x1200, RS24bpp) },
2253 { 0x112, RSCreate(RS640x480, RS32bpp) },
2254 { 0x183, RSCreate(RS768x576, RS32bpp) },
2255 { 0x115, RSCreate(RS800x600, RS32bpp) },
2256 { 0x18B, RSCreate(RS960x720, RS32bpp) },
2257 { 0x118, RSCreate(RS1024x768, RS32bpp) },
2258 { 0x193, RSCreate(RS1152x864, RS32bpp) },
2259 { 0x11B, RSCreate(RS1280x1024, RS32bpp) },
2260 { 0x19B, RSCreate(RS1408x1056, RS32bpp) },
2261 { 0x11F, RSCreate(RS1600x1200, RS32bpp) },
2262 { 0x010, RSCreate(RS640x350, RS4bpp ) },
2263 { 0x012, RSCreate(RS640x480, RS4bpp ) },
2264 { 0x102, RSCreate(RS800x600, RS4bpp ) },
2265 { 0x104, RSCreate(RS1024x768, RS4bpp ) },
2266 { 0x106, RSCreate(RS1280x1024, RS4bpp ) },
2267 { 0, 0 }};
2277 if (vesa != ~0) in matroxfb_init_params()
2278 vesa &= 0x1DFF; /* mask out clearscreen, acceleration and so on */ in matroxfb_init_params()
2285 printk(KERN_ERR "Invalid vesa mode 0x%04X\n", vesa); in matroxfb_init_params()
2290 if (left == ~0) in matroxfb_init_params()
2294 if (right == ~0) in matroxfb_init_params()
2298 if (upper == ~0) in matroxfb_init_params()
2302 if (lower == ~0) in matroxfb_init_params()
2338 return 0; in matroxfb_setup()
2346 dev = simple_strtoul(this_opt+4, NULL, 0); in matroxfb_setup()
2348 switch (simple_strtoul(this_opt+6, NULL, 0)) { in matroxfb_setup()
2349 case 0: depth = RSText; break; in matroxfb_setup()
2360 xres = simple_strtoul(this_opt+5, NULL, 0); in matroxfb_setup()
2362 yres = simple_strtoul(this_opt+5, NULL, 0); in matroxfb_setup()
2364 vslen = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2366 hslen = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2368 left = simple_strtoul(this_opt+5, NULL, 0); in matroxfb_setup()
2370 right = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2372 upper = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2374 lower = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2376 pixclock = simple_strtoul(this_opt+9, NULL, 0); in matroxfb_setup()
2378 sync = simple_strtoul(this_opt+5, NULL, 0); in matroxfb_setup()
2380 vesa = simple_strtoul(this_opt+5, NULL, 0); in matroxfb_setup()
2382 maxclk = simple_strtoul(this_opt+7, NULL, 0); in matroxfb_setup()
2384 fh = simple_strtoul(this_opt+3, NULL, 0); in matroxfb_setup()
2386 fv = simple_strtoul(this_opt+3, NULL, 0); in matroxfb_setup()
2388 mem = simple_strtoul(this_opt+4, NULL, 0); in matroxfb_setup()
2394 dfp_type = simple_strtoul(this_opt+4, NULL, 0); in matroxfb_setup()
2399 unsigned int vmode = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2400 if (vmode > 0 && vmode <= VMODE_MAX) in matroxfb_setup()
2403 unsigned int cmode = simple_strtoul(this_opt+6, NULL, 0); in matroxfb_setup()
2405 case 0: in matroxfb_setup()
2423 disabled = 0; in matroxfb_setup()
2427 sgram = 0; in matroxfb_setup()
2429 memtype = simple_strtoul(this_opt+8, NULL, 0); in matroxfb_setup()
2434 value = 0; in matroxfb_setup()
2466 return 0; in matroxfb_setup()
2469 static int __initdata initialized = 0;
2474 int err = 0; in matroxfb_init()
2503 module_param(mem, int, 0);
2505 module_param(disabled, int, 0);
2506 MODULE_PARM_DESC(disabled, "Disabled (0 or 1=disabled) (default=0)");
2507 module_param(noaccel, int, 0);
2508 MODULE_PARM_DESC(noaccel, "Do not use accelerating engine (0 or 1=disabled) (default=0)");
2509 module_param(nopan, int, 0);
2510 MODULE_PARM_DESC(nopan, "Disable pan on startup (0 or 1=disabled) (default=0)");
2511 module_param(no_pci_retry, int, 0);
2512 MODULE_PARM_DESC(no_pci_retry, "PCI retries enabled (0 or 1=disabled) (default=0)");
2513 module_param(novga, int, 0);
2514 MODULE_PARM_DESC(novga, "VGA I/O (0x3C0-0x3DF) disabled (0 or 1=disabled) (default=0)");
2515 module_param(nobios, int, 0);
2516 MODULE_PARM_DESC(nobios, "Disables ROM BIOS (0 or 1=disabled) (default=do not change BIOS state)");
2517 module_param(noinit, int, 0);
2518 …t, "Disables W/SG/SD-RAM and bus interface initialization (0 or 1=do not initialize) (default=0)");
2519 module_param(memtype, int, 0);
2520 …r G200/G400 (see Documentation/fb/matroxfb.rst for explanation) (default=3 for G200, 0 for G400)");
2521 module_param(mtrr, int, 0);
2522 MODULE_PARM_DESC(mtrr, "This speeds up video memory accesses (0=disabled or 1) (default=1)");
2523 module_param(sgram, int, 0);
2524 …_PARM_DESC(sgram, "Indicates that G100/G200/G400 has SGRAM memory (0=SDRAM, 1=SGRAM) (default=0)");
2525 module_param(inv24, int, 0);
2527 module_param(inverse, int, 0);
2528 MODULE_PARM_DESC(inverse, "Inverse (0 or 1) (default=0)");
2529 module_param(dev, int, 0);
2530 MODULE_PARM_DESC(dev, "Multihead support, attach to device ID (0..N) (default=all working)");
2531 module_param(vesa, int, 0);
2532 MODULE_PARM_DESC(vesa, "Startup videomode (0x000-0x1FF) (default=0x101)");
2533 module_param(xres, int, 0);
2535 module_param(yres, int, 0);
2537 module_param(upper, int, 0);
2539 module_param(lower, int, 0);
2541 module_param(vslen, int, 0);
2543 module_param(left, int, 0);
2545 module_param(right, int, 0);
2547 module_param(hslen, int, 0);
2549 module_param(pixclock, int, 0);
2551 module_param(sync, int, 0);
2553 module_param(depth, int, 0);
2554 MODULE_PARM_DESC(depth, "Color depth (0=text,8,15,16,24,32) (default=vesa)");
2555 module_param(maxclk, int, 0);
2556 MODULE_PARM_DESC(maxclk, "Startup maximal clock, 0-999MHz, 1000-999999kHz, 1000000-INF Hz");
2557 module_param(fh, int, 0);
2558 MODULE_PARM_DESC(fh, "Startup horizontal frequency, 0-999kHz, 1000-INF Hz");
2559 module_param(fv, int, 0);
2560 MODULE_PARM_DESC(fv, "Startup vertical frequency, 0-INF Hz\n"
2562 module_param(grayscale, int, 0);
2564 module_param(cross4MB, int, 0);
2566 module_param(dfp, int, 0);
2567 …SC(dfp, "Specifies whether to use digital flat panel interface of G200/G400 (0 or 1) (default=0)");
2568 module_param(dfp_type, int, 0);
2569 MODULE_PARM_DESC(dfp_type, "Specifies DFP interface type (0 to 255) (default=read from hardware)");
2570 module_param_string(outputs, outputs, sizeof(outputs), 0);
2571 …RTC is mapped to which output (string of up to three letters, consisting of 0 (disabled), 1 (CRTC1…
2573 module_param_named(vmode, default_vmode, int, 0);
2575 module_param_named(cmode, default_cmode, int, 0);
2586 if (depth == 0) in init_module()
2606 return 0; in init_module()