Fix SVGA decode mask for Trident TGUI9440.
This commit is contained in:
parent
32f794adc4
commit
c88fb61aab
1 changed files with 3 additions and 0 deletions
|
|
@ -311,6 +311,7 @@ void tgui_out(uint16_t addr, uint8_t val, void *p)
|
||||||
{
|
{
|
||||||
tgui->linear_base = ((val & 0xf) | ((val >> 2) & 0x30)) << 20;
|
tgui->linear_base = ((val & 0xf) | ((val >> 2) & 0x30)) << 20;
|
||||||
tgui->linear_size = (val & 0x10) ? 0x200000 : 0x100000;
|
tgui->linear_size = (val & 0x10) ? 0x200000 : 0x100000;
|
||||||
|
tgui->svga.decode_mask = (val & 0x10) ? 0x1fffff : 0xfffff;
|
||||||
}
|
}
|
||||||
tgui_recalcmapping(tgui);
|
tgui_recalcmapping(tgui);
|
||||||
}
|
}
|
||||||
|
|
@ -710,12 +711,14 @@ void tgui_pci_write(int func, int addr, uint8_t val, void *p)
|
||||||
case 0x12:
|
case 0x12:
|
||||||
tgui->linear_base = (tgui->linear_base & 0xff000000) | ((val & 0xe0) << 16);
|
tgui->linear_base = (tgui->linear_base & 0xff000000) | ((val & 0xe0) << 16);
|
||||||
tgui->linear_size = 2 << 20;
|
tgui->linear_size = 2 << 20;
|
||||||
|
tgui->svga.decode_mask = 0x1fffff;
|
||||||
svga->crtc[0x21] = (svga->crtc[0x21] & ~0xf) | (val >> 4);
|
svga->crtc[0x21] = (svga->crtc[0x21] & ~0xf) | (val >> 4);
|
||||||
tgui_recalcmapping(tgui);
|
tgui_recalcmapping(tgui);
|
||||||
break;
|
break;
|
||||||
case 0x13:
|
case 0x13:
|
||||||
tgui->linear_base = (tgui->linear_base & 0xe00000) | (val << 24);
|
tgui->linear_base = (tgui->linear_base & 0xe00000) | (val << 24);
|
||||||
tgui->linear_size = 2 << 20;
|
tgui->linear_size = 2 << 20;
|
||||||
|
tgui->svga.decode_mask = 0x1fffff;
|
||||||
svga->crtc[0x21] = (svga->crtc[0x21] & ~0xc0) | (val >> 6);
|
svga->crtc[0x21] = (svga->crtc[0x21] & ~0xc0) | (val >> 6);
|
||||||
tgui_recalcmapping(tgui);
|
tgui_recalcmapping(tgui);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue