Mercurial > mplayer.hg
changeset 24574:f89d135bcae0
add functions for the vga register access patch by Guillaume LECERF <foxcore at gmail.com>
author | faust3 |
---|---|
date | Sun, 23 Sep 2007 12:11:19 +0000 |
parents | 6815406607cf |
children | 150adb2fd0ec |
files | vidix/nvidia_vid.c |
diffstat | 1 files changed, 26 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/vidix/nvidia_vid.c Sat Sep 22 16:14:20 2007 +0000 +++ b/vidix/nvidia_vid.c Sun Sep 23 12:11:19 2007 +0000 @@ -444,6 +444,16 @@ }; typedef struct rivatv_info rivatv_info; +uint8_t nvReadVGA (struct rivatv_chip *chip, int index) { + VID_WR08 (chip->PCIO, 0x3D4, index); + return VID_RD08 (chip->PCIO, 0x3D5); +} + +void nvWriteVGA (struct rivatv_chip *chip, int index, int data) { + VID_WR08 (chip->PCIO, 0x3D4, index); + VID_WR08 (chip->PCIO, 0x3D5, data); +} + //framebuffer size funcs static unsigned long rivatv_fbsize_nv03 (struct rivatv_chip *chip){ if (VID_RD32 (chip->PFB, 0) & 0x00000020) { @@ -506,8 +516,7 @@ static void rivatv_lock_nv04 (struct rivatv_chip *chip, int LockUnlock){ rivatv_lock_nv03 (chip, LockUnlock); - VID_WR08 (chip->PCIO, 0x3D4, 0x1F); - VID_WR08 (chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57); + nvWriteVGA (chip, 0x1F, LockUnlock ? 0x99 : 0x57); } @@ -591,14 +600,10 @@ static uint32_t rivatv_overlay_pan (struct rivatv_info *info){ uint32_t pan; info->chip.lock (&info->chip, 0); - VID_WR08 (info->chip.PCIO, 0x3D4, 0x0D); - pan = VID_RD08 (info->chip.PCIO, 0x3D5); - VID_WR08 (info->chip.PCIO, 0x3D4, 0x0C); - pan |= VID_RD08 (info->chip.PCIO, 0x3D5) << 8; - VID_WR08 (info->chip.PCIO, 0x3D4, 0x19); - pan |= (VID_RD08 (info->chip.PCIO, 0x3D5) & 0x1F) << 16; - VID_WR08 (info->chip.PCIO, 0x3D4, 0x2D); - pan |= (VID_RD08 (info->chip.PCIO, 0x3D5) & 0x60) << 16; + pan = nvReadVGA (&info->chip, 0x0D); + pan |= nvReadVGA (&info->chip, 0x0C) << 8; + pan |= (nvReadVGA (&info->chip, 0x19) & 0x1F) << 16; + pan |= (nvReadVGA (&info->chip, 0x2D) & 0x60) << 16; return pan << 2; } @@ -651,46 +656,36 @@ uint32_t bpp=0,x; info->chip.lock(&info->chip, 0); /*get screen depth*/ - VID_WR08(info->chip.PCIO, 0x03D4,0x28); - bpp = VID_RD08(info->chip.PCIO,0x03D5)&0x3; + bpp = nvReadVGA (&info->chip, 0x28) & 0x3; if((bpp == 2) && (VID_RD32(info->chip.PVIDEO,0x600) & 0x00001000) == 0x0)info->depth=15; else info->depth = 0x04 << bpp; /*get screen width*/ - VID_WR08(info->chip.PCIO, 0x03D4, 0x1); - info->screen_x = VID_RD08(info->chip.PCIO, 0x3D5); + info->screen_x = nvReadVGA (&info->chip, 0x1); /* NV_PCRTC_HORIZ_EXTRA_DISPLAY_END_8 */ - VID_WR08 (info->chip.PCIO, 0x3D4, 0x2D); - info->screen_x |= (VID_RD08 (info->chip.PCIO, 0x3D5) & 0x02) << 7; + info->screen_x |= (nvReadVGA (&info->chip, 0x2D) & 0x02) << 7; info->screen_x = (info->screen_x + 1) << 3; /*get screen height*/ /* get first 8 bits in VT_DISPLAY_END*/ - VID_WR08(info->chip.PCIO, 0x03D4, 0x12); - info->screen_y = VID_RD08(info->chip.PCIO,0x03D5); - VID_WR08(info->chip.PCIO,0x03D4,0x07); + info->screen_y = nvReadVGA (&info->chip, 0x12); /* get 9th bit in CRTC_OVERFLOW*/ - info->screen_y |= (VID_RD08(info->chip.PCIO,0x03D5) &0x02)<<7; + info->screen_y |= (nvReadVGA (&info->chip, 0x07) & 0x02) << 7; /* and the 10th in CRTC_OVERFLOW*/ - info->screen_y |=(VID_RD08(info->chip.PCIO,0x03D5) &0x40)<<3; + info->screen_y |= (nvReadVGA (&info->chip, 0x07) & 0x40) << 3; ++info->screen_y; if(info->chip.arch >= NV_ARCH_10){ /* NV_PCRTC_EXTRA_VERT_DISPLAY_END_10 */ - VID_WR08(info->chip.PCIO,0x03D4,0x25); - info->screen_y |= (VID_RD08(info->chip.PCIO,0x03D5) &0x02)<<9; + info->screen_y |= (nvReadVGA (&info->chip, 0x25) & 0x02) << 9; /* NV_PCRTC_???_VERT_DISPLAY_END_11 */ - VID_WR08(info->chip.PCIO,0x03D4,0x41); - info->screen_y |= (VID_RD08(info->chip.PCIO,0x03D5) &0x04)<<9; + info->screen_y |= (nvReadVGA (&info->chip, 0x41) & 0x04) << 9; } /* NV_PCRTC_OFFSET */ - VID_WR08 (info->chip.PCIO, 0x3D4, 0x13); - x = VID_RD08 (info->chip.PCIO, 0x3D5); + x = nvReadVGA (&info->chip, 0x13); /* NV_PCRTC_REPAINT0_OFFSET_10_8 */ - VID_WR08 (info->chip.PCIO, 0x3D4, 0x19); - x |= (VID_RD08 (info->chip.PCIO, 0x3D5) & 0xE0) << 3; + x |= (nvReadVGA (&info->chip, 0x19) & 0xE0) << 3; /* NV_PCRTC_EXTRA_OFFSET_11 */ - VID_WR08 (info->chip.PCIO, 0x3D4, 0x25); - x |= (VID_RD08 (info->chip.PCIO, 0x3D5) & 0x20) << 6; x <<= 3; + x |= (nvReadVGA (&info->chip, 0x25) & 0x20) << 6; x <<= 3; info->bps = x * bpp; }