.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * |
---|
3 | 4 | * Hardware accelerated Matrox Millennium I, II, Mystique, G100, G200 and G400 |
---|
.. | .. |
---|
111 | 112 | #include "matroxfb_g450.h" |
---|
112 | 113 | #include <linux/matroxfb.h> |
---|
113 | 114 | #include <linux/interrupt.h> |
---|
| 115 | +#include <linux/nvram.h> |
---|
114 | 116 | #include <linux/slab.h> |
---|
115 | 117 | #include <linux/uaccess.h> |
---|
116 | 118 | |
---|
117 | 119 | #ifdef CONFIG_PPC_PMAC |
---|
118 | 120 | #include <asm/machdep.h> |
---|
119 | | -unsigned char nvram_read_byte(int); |
---|
120 | 121 | static int default_vmode = VMODE_NVRAM; |
---|
121 | 122 | static int default_cmode = CMODE_NVRAM; |
---|
122 | 123 | #endif |
---|
.. | .. |
---|
1375 | 1376 | .accelID = FB_ACCEL_MATROX_MGAG200, |
---|
1376 | 1377 | .lowlevel = &matrox_G100 |
---|
1377 | 1378 | }; |
---|
| 1379 | +static struct video_board vbG200eW = { |
---|
| 1380 | + .maxvram = 0x1000000, |
---|
| 1381 | + .maxdisplayable = 0x0800000, |
---|
| 1382 | + .accelID = FB_ACCEL_MATROX_MGAG200, |
---|
| 1383 | + .lowlevel = &matrox_G100 |
---|
| 1384 | +}; |
---|
1378 | 1385 | /* from doc it looks like that accelerator can draw only to low 16MB :-( Direct accesses & displaying are OK for |
---|
1379 | 1386 | whole 32MB */ |
---|
1380 | 1387 | static struct video_board vbG400 = { |
---|
.. | .. |
---|
1493 | 1500 | MGA_G200, |
---|
1494 | 1501 | &vbG200, |
---|
1495 | 1502 | "MGA-G200 (PCI)"}, |
---|
| 1503 | + {PCI_VENDOR_ID_MATROX, 0x0532, 0xFF, |
---|
| 1504 | + 0, 0, |
---|
| 1505 | + DEVF_G200, |
---|
| 1506 | + 250000, |
---|
| 1507 | + MGA_G200, |
---|
| 1508 | + &vbG200eW, |
---|
| 1509 | + "MGA-G200eW (PCI)"}, |
---|
1496 | 1510 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF, |
---|
1497 | 1511 | PCI_SS_VENDOR_ID_MATROX, PCI_SS_ID_MATROX_GENERIC, |
---|
1498 | 1512 | DEVF_G200, |
---|
.. | .. |
---|
1709 | 1723 | memsize = mem; |
---|
1710 | 1724 | err = -ENOMEM; |
---|
1711 | 1725 | |
---|
1712 | | - minfo->mmio.vbase.vaddr = ioremap_nocache(ctrlptr_phys, 16384); |
---|
| 1726 | + minfo->mmio.vbase.vaddr = ioremap(ctrlptr_phys, 16384); |
---|
1713 | 1727 | if (!minfo->mmio.vbase.vaddr) { |
---|
1714 | 1728 | printk(KERN_ERR "matroxfb: cannot ioremap(%lX, 16384), matroxfb disabled\n", ctrlptr_phys); |
---|
1715 | 1729 | goto failVideoMR; |
---|
.. | .. |
---|
1872 | 1886 | #ifndef MODULE |
---|
1873 | 1887 | if (machine_is(powermac)) { |
---|
1874 | 1888 | struct fb_var_screeninfo var; |
---|
| 1889 | + |
---|
1875 | 1890 | if (default_vmode <= 0 || default_vmode > VMODE_MAX) |
---|
1876 | 1891 | default_vmode = VMODE_640_480_60; |
---|
1877 | | -#ifdef CONFIG_NVRAM |
---|
1878 | | - if (default_cmode == CMODE_NVRAM) |
---|
| 1892 | +#if defined(CONFIG_PPC32) |
---|
| 1893 | + if (IS_REACHABLE(CONFIG_NVRAM) && default_cmode == CMODE_NVRAM) |
---|
1879 | 1894 | default_cmode = nvram_read_byte(NV_CMODE); |
---|
1880 | 1895 | #endif |
---|
1881 | 1896 | if (default_cmode < CMODE_8 || default_cmode > CMODE_32) |
---|
.. | .. |
---|
2133 | 2148 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G100_AGP, |
---|
2134 | 2149 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
---|
2135 | 2150 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_PCI, |
---|
| 2151 | + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
---|
| 2152 | + {PCI_VENDOR_ID_MATROX, 0x0532, |
---|
2136 | 2153 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
---|
2137 | 2154 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, |
---|
2138 | 2155 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
---|
.. | .. |
---|
2500 | 2517 | module_param(noinit, int, 0); |
---|
2501 | 2518 | MODULE_PARM_DESC(noinit, "Disables W/SG/SD-RAM and bus interface initialization (0 or 1=do not initialize) (default=0)"); |
---|
2502 | 2519 | module_param(memtype, int, 0); |
---|
2503 | | -MODULE_PARM_DESC(memtype, "Memory type for G200/G400 (see Documentation/fb/matroxfb.txt for explanation) (default=3 for G200, 0 for G400)"); |
---|
| 2520 | +MODULE_PARM_DESC(memtype, "Memory type for G200/G400 (see Documentation/fb/matroxfb.rst for explanation) (default=3 for G200, 0 for G400)"); |
---|
2504 | 2521 | module_param(mtrr, int, 0); |
---|
2505 | 2522 | MODULE_PARM_DESC(mtrr, "This speeds up video memory accesses (0=disabled or 1) (default=1)"); |
---|
2506 | 2523 | module_param(sgram, int, 0); |
---|