TVP3026: Correctly apply the RAMDAC multiplex mode.
This commit is contained in:
@@ -517,6 +517,65 @@ tvp3026_recalctimings(void *priv, svga_t *svga)
|
||||
svga->interlace = (ramdac->ccr & 0x40);
|
||||
/* TODO: Figure out gamma correction for 15/16 bpp color. */
|
||||
svga->lut_map = !!(svga->bpp >= 15 && (ramdac->true_color & 0xf0) != 0x00);
|
||||
|
||||
switch (ramdac->mcr) {
|
||||
case 0x41:
|
||||
case 0x4a:
|
||||
case 0x61:
|
||||
svga->hdisp <<= 1;
|
||||
svga->dots_per_clock <<= 1;
|
||||
break;
|
||||
case 0x42:
|
||||
case 0x4b:
|
||||
case 0x62:
|
||||
svga->hdisp <<= 2;
|
||||
svga->dots_per_clock <<= 2;
|
||||
break;
|
||||
case 0x43:
|
||||
case 0x4c:
|
||||
case 0x63:
|
||||
svga->hdisp <<= 3;
|
||||
svga->dots_per_clock <<= 3;
|
||||
break;
|
||||
case 0x44:
|
||||
case 0x64:
|
||||
svga->hdisp <<= 4;
|
||||
svga->dots_per_clock <<= 4;
|
||||
break;
|
||||
case 0x5b:
|
||||
switch (ramdac->true_color) {
|
||||
case 0x16:
|
||||
case 0x17:
|
||||
svga->hdisp = (svga->hdisp << 2) / 3;
|
||||
svga->dots_per_clock = (svga->dots_per_clock << 2) / 3;
|
||||
break;
|
||||
case 0x1e:
|
||||
case 0x1f:
|
||||
svga->hdisp = (svga->hdisp * 5) >> 2;
|
||||
svga->dots_per_clock = (svga->dots_per_clock * 5) >> 2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x5c:
|
||||
switch (ramdac->true_color) {
|
||||
case 0x06:
|
||||
case 0x07:
|
||||
svga->hdisp <<= 1;
|
||||
svga->dots_per_clock <<= 1;
|
||||
break;
|
||||
case 0x16:
|
||||
case 0x17:
|
||||
svga->hdisp = (svga->hdisp << 3) / 3;
|
||||
svga->dots_per_clock = (svga->dots_per_clock << 3) / 3;
|
||||
break;
|
||||
case 0x1e:
|
||||
case 0x1f:
|
||||
svga->hdisp = (svga->hdisp * 5) >> 1;
|
||||
svga->dots_per_clock = (svga->dots_per_clock * 5) >> 1;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t
|
||||
|
Reference in New Issue
Block a user