Sorry, I misread your post. So, each bank is 0x2000 in size, with various registers living at different locations in that 8192 bytes of memory. Each register within that bank as I recall is 32bits( double check that to make sure ). But usually how I'll access a given register is something like this:
#define GPIO0 (0x44E07000)
#define GPIO2 (0x481AC000)
#define GPIO_SIZE (0x2000)
#define GPIO_DATAOUT (0x13C)
#define GPIO_DATAIN (0x138)
. . .
gpio_addr = mmap(0, GPIO_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIO0);
if(gpio_addr == MAP_FAILED){
perror("GPIO0");
exit(1);
}
bank0_out = gpio_addr + GPIO_DATAOUT;
. . .
Then it's just a matter of which bit( pin ) I want to access in this particular register. 0-31. Which is explained in greater detail in the technical reference manual for the AM335x processor.
I posted some code on the groups here yesterday, or the day before for the full code listing of what I'm using an explanation above. Pretty much, a really simple, and to the point line select using 3 GPIO's, and an IO pin multiplexer.