16 int devopen(const char *path)
20 dev = open(path, O_RDWR|O_SYNC);
23 printf("open(\"%s\") failed with %i\n", path, errno);
31 volatile void *xmmap(int dev, int addr, int size)
34 ret = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, dev, addr);
35 //printf("memregs are @ %p\n", memregs);
36 if (ret == MAP_FAILED)
38 perror("mmap(memregs) failed");
44 static unsigned int get_us(void)
48 gettimeofday(&tv, NULL);
49 return tv.tv_sec * 1000000 + tv.tv_usec;
54 int main(int argc, char *argv[])
56 volatile unsigned int *memregs;
57 unsigned int val1 = 0, us, prev_us;
61 unsigned int val_old, val, time, rcount;
66 if (argv[1] == NULL) {
67 fprintf(stderr, "usage:\n%s <gpio_bank_base>\n", argv[0]);
71 memdev = devopen("/dev/mem");
73 memregs = xmmap(memdev, strtoul(argv[1], NULL, 0), 0x1000);
75 //memregs[0x5403c] = 0;
76 //memregs[0x54090] = 0xffffffff;
78 printf("SYSCONFIG: %08x\n", memregs[0x010>>2]);
79 printf("OE: %08x\n", memregs[0x034>>2]);
80 // printf("LEVELDET0: %08x\n", memregs[0x040>>2]);
81 // printf("LEVELDET1: %08x\n", memregs[0x044>>2]);
82 printf("DEBOUNCEN: %08x\n", memregs[0x050>>2]);
84 // memregs[0x54040>>2] = 0xff00;
85 // memregs[0x54044>>2] = 0xff00;
86 //memregs[0x54010>>2] = 0x0c; // no idle, wakeup enable
87 //while (val == memregs[0x54038>>2]);
93 unsigned int v1 = memregs[0x038>>2];
98 log[lp].val_old = val1;
100 log[lp].time = us - prev_us;
101 log[lp].rcount = reads;
108 for (i = 0; i < LOG_BUF; i++)
109 printf("%08x -> %08x [%7u %d]\n",
110 log[i].val_old, log[i].val,
111 log[i].time, log[i].rcount);