Commit 6c12f305 authored by Ville Syrjälä's avatar Ville Syrjälä Committed by Linus Torvalds

[PATCH] matroxfb: Use CACHEFLUSH on all chips

Use the CACHEFLUSH register on all chip types.  The register is listed in all
other specs except 2064W.  However I have verified that the register does work
on a 2064W despite being marked reserved in the specs.  There were no
noticeable side effects after writing to the register.
Signed-off-by: default avatarVille Syrjälä <syrjala@sci.fi>
Signed-off-by: default avatarPetr Vandrovec <petr@vandrovec.name>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 63921fbf
...@@ -657,7 +657,6 @@ static int MGA1064_preinit(WPMINFO2) { ...@@ -657,7 +657,6 @@ static int MGA1064_preinit(WPMINFO2) {
/* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */ /* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */
ACCESS_FBINFO(capable.text) = 1; ACCESS_FBINFO(capable.text) = 1;
ACCESS_FBINFO(capable.vxres) = vxres_mystique; ACCESS_FBINFO(capable.vxres) = vxres_mystique;
ACCESS_FBINFO(features.accel.has_cacheflush) = 1;
ACCESS_FBINFO(outputs[0]).output = &m1064; ACCESS_FBINFO(outputs[0]).output = &m1064;
ACCESS_FBINFO(outputs[0]).src = ACCESS_FBINFO(outputs[0]).default_src; ACCESS_FBINFO(outputs[0]).src = ACCESS_FBINFO(outputs[0]).default_src;
...@@ -842,7 +841,6 @@ static int MGAG100_preinit(WPMINFO2) { ...@@ -842,7 +841,6 @@ static int MGAG100_preinit(WPMINFO2) {
/* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */ /* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */
ACCESS_FBINFO(capable.text) = 1; ACCESS_FBINFO(capable.text) = 1;
ACCESS_FBINFO(capable.vxres) = vxres_g100; ACCESS_FBINFO(capable.vxres) = vxres_g100;
ACCESS_FBINFO(features.accel.has_cacheflush) = 1;
ACCESS_FBINFO(capable.plnwt) = ACCESS_FBINFO(devflags.accelerator) == FB_ACCEL_MATROX_MGAG100 ACCESS_FBINFO(capable.plnwt) = ACCESS_FBINFO(devflags.accelerator) == FB_ACCEL_MATROX_MGAG100
? ACCESS_FBINFO(devflags.sgram) : 1; ? ACCESS_FBINFO(devflags.sgram) : 1;
......
...@@ -1283,7 +1283,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi ...@@ -1283,7 +1283,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, orig; unsigned char orig;
unsigned char bytes[32]; unsigned char bytes[32];
unsigned char* tmp; unsigned char* tmp;
...@@ -1299,16 +1299,12 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi ...@@ -1299,16 +1299,12 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
orig = mga_inb(M_EXTVGA_DATA); orig = mga_inb(M_EXTVGA_DATA);
mga_outb(M_EXTVGA_DATA, orig | 0x80); mga_outb(M_EXTVGA_DATA, orig | 0x80);
store = mga_readb(vm, 0x1234);
tmp = bytes; tmp = bytes;
for (offs = 0x100000; offs < maxSize; offs += 0x200000) for (offs = 0x100000; offs < maxSize; offs += 0x200000)
*tmp++ = mga_readb(vm, offs); *tmp++ = mga_readb(vm, offs);
for (offs = 0x100000; offs < maxSize; offs += 0x200000) for (offs = 0x100000; offs < maxSize; offs += 0x200000)
mga_writeb(vm, offs, 0x02); mga_writeb(vm, offs, 0x02);
if (ACCESS_FBINFO(features.accel.has_cacheflush)) mga_outb(M_CACHEFLUSH, 0x00);
mga_outb(M_CACHEFLUSH, 0x00);
else
mga_writeb(vm, 0x1234, 0x99);
for (offs = 0x100000; offs < maxSize; offs += 0x200000) { for (offs = 0x100000; offs < maxSize; offs += 0x200000) {
if (mga_readb(vm, offs) != 0x02) if (mga_readb(vm, offs) != 0x02)
break; break;
...@@ -1319,7 +1315,6 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi ...@@ -1319,7 +1315,6 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
tmp = bytes; tmp = bytes;
for (offs2 = 0x100000; offs2 < maxSize; offs2 += 0x200000) for (offs2 = 0x100000; offs2 < maxSize; offs2 += 0x200000)
mga_writeb(vm, offs2, *tmp++); mga_writeb(vm, offs2, *tmp++);
mga_writeb(vm, 0x1234, store);
mga_outb(M_EXTVGA_INDEX, 0x03); mga_outb(M_EXTVGA_INDEX, 0x03);
mga_outb(M_EXTVGA_DATA, orig); mga_outb(M_EXTVGA_DATA, orig);
......
...@@ -272,10 +272,6 @@ struct matrox_DAC1064_features { ...@@ -272,10 +272,6 @@ struct matrox_DAC1064_features {
u_int8_t xmiscctrl; u_int8_t xmiscctrl;
}; };
struct matrox_accel_features {
int has_cacheflush;
};
/* current hardware status */ /* current hardware status */
struct mavenregs { struct mavenregs {
u_int8_t regs[256]; u_int8_t regs[256];
...@@ -440,7 +436,6 @@ struct matrox_fb_info { ...@@ -440,7 +436,6 @@ struct matrox_fb_info {
struct { struct {
struct matrox_pll_features pll; struct matrox_pll_features pll;
struct matrox_DAC1064_features DAC1064; struct matrox_DAC1064_features DAC1064;
struct matrox_accel_features accel;
} features; } features;
struct { struct {
spinlock_t DAC; spinlock_t DAC;
......
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