summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Bennett <stuart@freedesktop.org>2009-04-04 02:13:34 +0100
committerStuart Bennett <stuart@freedesktop.org>2009-04-04 17:24:26 +0100
commit8f6fb577184c6824b22542f555194049d6c67f2b (patch)
treec79b65471b2276cc8d2172c2a65188a5190bab65
parentca384bfe87ef0de6cf9331c07541689c4a7ecddc (diff)
Add crtc unlock method
-rw-r--r--radeontool.c14
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]);