summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@ppcg5.localdomain>2007-12-02 13:41:14 +1100
committerroot <root@ppcg5.localdomain>2007-12-02 13:41:14 +1100
commitb1a91e805837ac5841460c279775eebebdeca92e (patch)
tree1f3e24862b26a72c84ea6b5be5b27759d508651e
parente11891f14961f8cfe5f4aacc03e726252de84e32 (diff)
add register setting
-rw-r--r--radeontool.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/radeontool.c b/radeontool.c
index 55e958e..5bc8cc5 100644
--- a/radeontool.c
+++ b/radeontool.c
@@ -73,7 +73,7 @@ static void radeon_set32(unsigned long offset, const char *name, unsigned int va
printf("internal error\n");
exit(-2);
};
-#ifdef __powerpc__
+#if 0 //def __powerpc__
__asm__ __volatile__ ("stwbrx %1,%2,%3\n\t"
"eieio"
: "=m" (*((volatile unsigned int *)radeon_cntl_mem+offset))
@@ -358,10 +358,19 @@ void radeon_reg_match(const char *pattern)
void radeon_reg_set(const char *name, unsigned value)
{
int i;
+ unsigned long address;
+
+ if (name[0]=='0' && name[1]=='x') {
+ address = strtoul(&(name[2]), NULL, 16);
+ printf("OLD: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name));
+ radeon_set32(address, name, value);
+ printf("NEW: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name));
+ return;
+ }
for (i=0;i<sizeof(reg_list)/sizeof(reg_list[0]);i++) {
if (fnmatch(name, reg_list[i].name, 0) == 0) {
const char *name = reg_list[i].name;
- unsigned address = reg_list[i].address;
+ address = reg_list[i].address;
printf("OLD: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name));
radeon_set32(address, name, value);
printf("NEW: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name));