diff options
author | Stuart Bennett <stuart@freedesktop.org> | 2009-04-04 02:13:34 +0100 |
---|---|---|
committer | Stuart Bennett <stuart@freedesktop.org> | 2009-04-04 17:24:26 +0100 |
commit | 8f6fb577184c6824b22542f555194049d6c67f2b (patch) | |
tree | c79b65471b2276cc8d2172c2a65188a5190bab65 | |
parent | ca384bfe87ef0de6cf9331c07541689c4a7ecddc (diff) |
Add crtc unlock method
-rw-r--r-- | radeontool.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/radeontool.c b/radeontool.c index d6151d2..b7bf515 100644 --- a/radeontool.c +++ b/radeontool.c @@ -130,6 +130,7 @@ static void usage(void) printf(" regset <pattern> <value> - set registers matching wildcard pattern\n"); printf("\n"); printf(" owner <value> - set cr44 to some value (0 (head a), 3 (head b), or 4 (both) suggested)\n"); + printf(" unlock - unlock vga crtcs for r/w access\n"); exit(-1); } @@ -226,6 +227,15 @@ void set_crtc_owner(int owner) } } +void lock_vga_crtc(int lock) +{ + int lockval = lock ? 0x99 : 0x57; + + set_vga_crtc_reg(0, NV_CIO_SR_LOCK_INDEX, lockval); + if (arch == 0x11 && !(radeon_get32(NV_PBUS_DEBUG_1, "NV_PBUS_DEBUG_1") & (1 << 28))) + set_vga_crtc_reg(1, NV_CIO_SR_LOCK_INDEX, lockval); +} + void dump_vga_regs(int crtc) { int i; @@ -576,6 +586,10 @@ int main(int argc,char *argv[]) radeon_cmd_regs(); return 0; }; + if(strcmp(argv[1],"unlock") == 0) { + lock_vga_crtc(0); + return 0; + }; } else if(argc == 3) { if(strcmp(argv[1],"regmatch") == 0) { radeon_reg_match(argv[2]); |