Add DPMS support to S3 chips
This commit is contained in:
@@ -2172,6 +2172,16 @@ s3_out(uint16_t addr, uint8_t val, void *p)
|
|||||||
} else if (svga->seqaddr == 0xa) {
|
} else if (svga->seqaddr == 0xa) {
|
||||||
svga->seqregs[svga->seqaddr] = val & 0x80;
|
svga->seqregs[svga->seqaddr] = val & 0x80;
|
||||||
return;
|
return;
|
||||||
|
} else if (s3->chip >= S3_VISION964) {
|
||||||
|
if (svga->seqaddr == 0x08) {
|
||||||
|
svga->seqregs[svga->seqaddr] = val & 0x0f;
|
||||||
|
return;
|
||||||
|
} else if ((svga->seqaddr == 0x0d) && (svga->seqregs[0x08] == 0x06)) {
|
||||||
|
svga->seqregs[svga->seqaddr] = val;
|
||||||
|
svga->dpms = ((s3->chip >= S3_VISION964) && (svga->seqregs[0x0d] & 0xf0)) || (svga->crtc[0x56] & ((s3->chip >= S3_TRIO32) ? 0x06 : 0x20));
|
||||||
|
svga_recalctimings(svga);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2376,6 +2386,11 @@ s3_out(uint16_t addr, uint8_t val, void *p)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x56:
|
||||||
|
svga->dpms = ((s3->chip >= S3_VISION964) && (svga->seqregs[0x0d] & 0xf0)) || (svga->crtc[0x56] & ((s3->chip >= S3_TRIO32) ? 0x06 : 0x20));
|
||||||
|
old = ~val; /* force recalc */
|
||||||
|
break;
|
||||||
|
|
||||||
case 0x67:
|
case 0x67:
|
||||||
if (s3->chip >= S3_TRIO32) {
|
if (s3->chip >= S3_TRIO32) {
|
||||||
switch (val >> 4)
|
switch (val >> 4)
|
||||||
|
|||||||
@@ -428,6 +428,14 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p)
|
|||||||
svga->write_bank = svga->read_bank = virge->bank << 16;
|
svga->write_bank = svga->read_bank = virge->bank << 16;
|
||||||
else
|
else
|
||||||
svga->write_bank = svga->read_bank = virge->bank << 14;
|
svga->write_bank = svga->read_bank = virge->bank << 14;
|
||||||
|
} else if (svga->seqaddr == 0x08) {
|
||||||
|
svga->seqregs[svga->seqaddr] = val & 0x0f;
|
||||||
|
return;
|
||||||
|
} else if ((svga->seqaddr == 0x0d) && (svga->seqregs[0x08] == 0x06)) {
|
||||||
|
svga->seqregs[svga->seqaddr] = val;
|
||||||
|
svga->dpms = (svga->seqregs[0x0d] & 0xf0) || (svga->crtc[0x56] & 0x06);
|
||||||
|
svga_recalctimings(svga);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -543,6 +551,11 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p)
|
|||||||
case 0x58: case 0x59: case 0x5a:
|
case 0x58: case 0x59: case 0x5a:
|
||||||
s3_virge_updatemapping(virge);
|
s3_virge_updatemapping(virge);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x56:
|
||||||
|
svga->dpms = (svga->seqregs[0x0d] & 0xf0) || (svga->crtc[0x56] & 0x06);
|
||||||
|
old = ~val; /* force recalc */
|
||||||
|
break;
|
||||||
|
|
||||||
case 0x67:
|
case 0x67:
|
||||||
switch (val >> 4)
|
switch (val >> 4)
|
||||||
|
|||||||
Reference in New Issue
Block a user