hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/video/fbdev/matrox/matroxfb_base.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 *
34 * Hardware accelerated Matrox Millennium I, II, Mystique, G100, G200 and G400
....@@ -111,12 +112,12 @@
111112 #include "matroxfb_g450.h"
112113 #include <linux/matroxfb.h>
113114 #include <linux/interrupt.h>
115
+#include <linux/nvram.h>
114116 #include <linux/slab.h>
115117 #include <linux/uaccess.h>
116118
117119 #ifdef CONFIG_PPC_PMAC
118120 #include <asm/machdep.h>
119
-unsigned char nvram_read_byte(int);
120121 static int default_vmode = VMODE_NVRAM;
121122 static int default_cmode = CMODE_NVRAM;
122123 #endif
....@@ -1375,6 +1376,12 @@
13751376 .accelID = FB_ACCEL_MATROX_MGAG200,
13761377 .lowlevel = &matrox_G100
13771378 };
1379
+static struct video_board vbG200eW = {
1380
+ .maxvram = 0x1000000,
1381
+ .maxdisplayable = 0x0800000,
1382
+ .accelID = FB_ACCEL_MATROX_MGAG200,
1383
+ .lowlevel = &matrox_G100
1384
+};
13781385 /* from doc it looks like that accelerator can draw only to low 16MB :-( Direct accesses & displaying are OK for
13791386 whole 32MB */
13801387 static struct video_board vbG400 = {
....@@ -1493,6 +1500,13 @@
14931500 MGA_G200,
14941501 &vbG200,
14951502 "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)"},
14961510 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP, 0xFF,
14971511 PCI_SS_VENDOR_ID_MATROX, PCI_SS_ID_MATROX_GENERIC,
14981512 DEVF_G200,
....@@ -1709,7 +1723,7 @@
17091723 memsize = mem;
17101724 err = -ENOMEM;
17111725
1712
- minfo->mmio.vbase.vaddr = ioremap_nocache(ctrlptr_phys, 16384);
1726
+ minfo->mmio.vbase.vaddr = ioremap(ctrlptr_phys, 16384);
17131727 if (!minfo->mmio.vbase.vaddr) {
17141728 printk(KERN_ERR "matroxfb: cannot ioremap(%lX, 16384), matroxfb disabled\n", ctrlptr_phys);
17151729 goto failVideoMR;
....@@ -1872,10 +1886,11 @@
18721886 #ifndef MODULE
18731887 if (machine_is(powermac)) {
18741888 struct fb_var_screeninfo var;
1889
+
18751890 if (default_vmode <= 0 || default_vmode > VMODE_MAX)
18761891 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)
18791894 default_cmode = nvram_read_byte(NV_CMODE);
18801895 #endif
18811896 if (default_cmode < CMODE_8 || default_cmode > CMODE_32)
....@@ -2133,6 +2148,8 @@
21332148 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G100_AGP,
21342149 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
21352150 {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,
21362153 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
21372154 {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G200_AGP,
21382155 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
....@@ -2500,7 +2517,7 @@
25002517 module_param(noinit, int, 0);
25012518 MODULE_PARM_DESC(noinit, "Disables W/SG/SD-RAM and bus interface initialization (0 or 1=do not initialize) (default=0)");
25022519 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)");
25042521 module_param(mtrr, int, 0);
25052522 MODULE_PARM_DESC(mtrr, "This speeds up video memory accesses (0=disabled or 1) (default=1)");
25062523 module_param(sgram, int, 0);