Commit 438e5c5e authored by Jan Beulich's avatar Jan Beulich Committed by Linus Torvalds

[PATCH] matroxfb adjustments

Some adjustments to the matroxfb code, for one part preventing the display
to be disabled for longer than necessary, and for the other part to make
information about the frame buffer position available so that a kernel
debugger might obtain that before the initial mode change.

Finally, some return code corrections to fit the generic fb code.
Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
Acked-by: default avatarPetr Vandrovec <vandrove@vc.cvut.cz>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2f4516db
...@@ -1285,7 +1285,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi ...@@ -1285,7 +1285,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
vaddr_t vm; vaddr_t vm;
unsigned int offs; unsigned int offs;
unsigned int offs2; unsigned int offs2;
unsigned char store; unsigned char store, orig;
unsigned char bytes[32]; unsigned char bytes[32];
unsigned char* tmp; unsigned char* tmp;
...@@ -1298,7 +1298,8 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi ...@@ -1298,7 +1298,8 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
if (maxSize > 0x2000000) maxSize = 0x2000000; if (maxSize > 0x2000000) maxSize = 0x2000000;
mga_outb(M_EXTVGA_INDEX, 0x03); mga_outb(M_EXTVGA_INDEX, 0x03);
mga_outb(M_EXTVGA_DATA, mga_inb(M_EXTVGA_DATA) | 0x80); orig = mga_inb(M_EXTVGA_DATA);
mga_outb(M_EXTVGA_DATA, orig | 0x80);
store = mga_readb(vm, 0x1234); store = mga_readb(vm, 0x1234);
tmp = bytes; tmp = bytes;
...@@ -1323,7 +1324,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi ...@@ -1323,7 +1324,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
mga_writeb(vm, 0x1234, store); mga_writeb(vm, 0x1234, store);
mga_outb(M_EXTVGA_INDEX, 0x03); mga_outb(M_EXTVGA_INDEX, 0x03);
mga_outb(M_EXTVGA_DATA, mga_inb(M_EXTVGA_DATA) & ~0x80); mga_outb(M_EXTVGA_DATA, orig);
*realSize = offs - 0x100000; *realSize = offs - 0x100000;
#ifdef CONFIG_FB_MATROX_MILLENIUM #ifdef CONFIG_FB_MATROX_MILLENIUM
...@@ -1858,6 +1859,8 @@ static int initMatrox2(WPMINFO struct board* b){ ...@@ -1858,6 +1859,8 @@ static int initMatrox2(WPMINFO struct board* b){
to yres_virtual * xres_virtual < 2^32 */ to yres_virtual * xres_virtual < 2^32 */
} }
matroxfb_init_fix(PMINFO2); matroxfb_init_fix(PMINFO2);
ACCESS_FBINFO(fbcon.screen_base) = vaddr_va(ACCESS_FBINFO(video.vbase));
matroxfb_update_fix(PMINFO2);
/* Normalize values (namely yres_virtual) */ /* Normalize values (namely yres_virtual) */
matroxfb_check_var(&vesafb_defined, &ACCESS_FBINFO(fbcon)); matroxfb_check_var(&vesafb_defined, &ACCESS_FBINFO(fbcon));
/* And put it into "current" var. Do NOT program hardware yet, or we'll not take over /* And put it into "current" var. Do NOT program hardware yet, or we'll not take over
...@@ -2010,11 +2013,11 @@ static int matroxfb_probe(struct pci_dev* pdev, const struct pci_device_id* dumm ...@@ -2010,11 +2013,11 @@ static int matroxfb_probe(struct pci_dev* pdev, const struct pci_device_id* dumm
} }
/* not match... */ /* not match... */
if (!b->vendor) if (!b->vendor)
return -1; return -ENODEV;
if (dev > 0) { if (dev > 0) {
/* not requested one... */ /* not requested one... */
dev--; dev--;
return -1; return -ENODEV;
} }
pci_read_config_dword(pdev, PCI_COMMAND, &cmd); pci_read_config_dword(pdev, PCI_COMMAND, &cmd);
if (pci_enable_device(pdev)) { if (pci_enable_device(pdev)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment