mirror of https://gitee.com/openkylin/linux.git
[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: Ville Syrjl <syrjala@sci.fi> Signed-off-by: Petr Vandrovec <petr@vandrovec.name> Cc: "Antonino A. Daplas" <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
63921fbfbd
commit
6c12f30554
|
@ -657,7 +657,6 @@ static int MGA1064_preinit(WPMINFO2) {
|
|||
/* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */
|
||||
ACCESS_FBINFO(capable.text) = 1;
|
||||
ACCESS_FBINFO(capable.vxres) = vxres_mystique;
|
||||
ACCESS_FBINFO(features.accel.has_cacheflush) = 1;
|
||||
|
||||
ACCESS_FBINFO(outputs[0]).output = &m1064;
|
||||
ACCESS_FBINFO(outputs[0]).src = ACCESS_FBINFO(outputs[0]).default_src;
|
||||
|
@ -842,7 +841,6 @@ static int MGAG100_preinit(WPMINFO2) {
|
|||
/* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */
|
||||
ACCESS_FBINFO(capable.text) = 1;
|
||||
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(devflags.sgram) : 1;
|
||||
|
||||
|
|
|
@ -1283,7 +1283,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
|
|||
vaddr_t vm;
|
||||
unsigned int offs;
|
||||
unsigned int offs2;
|
||||
unsigned char store, orig;
|
||||
unsigned char orig;
|
||||
unsigned char bytes[32];
|
||||
unsigned char* tmp;
|
||||
|
||||
|
@ -1299,16 +1299,12 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
|
|||
orig = mga_inb(M_EXTVGA_DATA);
|
||||
mga_outb(M_EXTVGA_DATA, orig | 0x80);
|
||||
|
||||
store = mga_readb(vm, 0x1234);
|
||||
tmp = bytes;
|
||||
for (offs = 0x100000; offs < maxSize; offs += 0x200000)
|
||||
*tmp++ = mga_readb(vm, offs);
|
||||
for (offs = 0x100000; offs < maxSize; offs += 0x200000)
|
||||
mga_writeb(vm, offs, 0x02);
|
||||
if (ACCESS_FBINFO(features.accel.has_cacheflush))
|
||||
mga_outb(M_CACHEFLUSH, 0x00);
|
||||
else
|
||||
mga_writeb(vm, 0x1234, 0x99);
|
||||
mga_outb(M_CACHEFLUSH, 0x00);
|
||||
for (offs = 0x100000; offs < maxSize; offs += 0x200000) {
|
||||
if (mga_readb(vm, offs) != 0x02)
|
||||
break;
|
||||
|
@ -1319,7 +1315,6 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi
|
|||
tmp = bytes;
|
||||
for (offs2 = 0x100000; offs2 < maxSize; offs2 += 0x200000)
|
||||
mga_writeb(vm, offs2, *tmp++);
|
||||
mga_writeb(vm, 0x1234, store);
|
||||
|
||||
mga_outb(M_EXTVGA_INDEX, 0x03);
|
||||
mga_outb(M_EXTVGA_DATA, orig);
|
||||
|
|
|
@ -272,10 +272,6 @@ struct matrox_DAC1064_features {
|
|||
u_int8_t xmiscctrl;
|
||||
};
|
||||
|
||||
struct matrox_accel_features {
|
||||
int has_cacheflush;
|
||||
};
|
||||
|
||||
/* current hardware status */
|
||||
struct mavenregs {
|
||||
u_int8_t regs[256];
|
||||
|
@ -440,7 +436,6 @@ struct matrox_fb_info {
|
|||
struct {
|
||||
struct matrox_pll_features pll;
|
||||
struct matrox_DAC1064_features DAC1064;
|
||||
struct matrox_accel_features accel;
|
||||
} features;
|
||||
struct {
|
||||
spinlock_t DAC;
|
||||
|
|
Loading…
Reference in New Issue