Hi,

I have white beagleboard running 3.2 Linux (Ubuntu). I would like to access 
PADCONF registers from userspace by mmpa()ing address 0x44E10000LU and do 
normal read/write through pointer to setup GPIO as output/input.
I can get the mmap()ed address. Reading from offset 0x800 
(AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET) 
yields correct value as seen by the '/sys/kernel/debug/omap_mux/gpmc_ad0'.
Writing to that address has no effect. I'm not sure what I'm missing here.

Here is a small C program I use for test and the corresponding output.


#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE - 1)


int main(int argc, char **argv) {


 DBG("enter\n");


 int memfd = open("/dev/mem", O_RDWR);
 if (memfd == -1) {
 ERR("open(): /dev/mem %s\n", strerror(errno));
 DBG("leave -1\n");
 return -1;
 }


 void *mapped = mmap(0,
 MAP_SIZE,
 PROT_READ | PROT_WRITE,
 MAP_SHARED, memfd, AM33XX_CONTROL_PADCONF_MUX_PBASE & ~MAP_MASK);
 if (mapped == MAP_FAILED) {
 ERR("mmap(): %s\n", strerror(errno));
 DBG("leave -1\n");
 return -1;
 }
 DBG("mapped to %p\n", mapped);


 unsigned int val;
 val = *((volatile unsigned int *) (mapped + 
AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET));
 DBG("1 val for AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET = 0x%08X\n", val);


 *((volatile unsigned int *) (mapped + 
AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET)) = 7;


 val = *((volatile unsigned int *) (mapped + 
AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET));
 DBG("2 val for AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET = 0x%08X\n", val);


 munmap(mapped, MAP_SIZE);
 close(memfd);


 DBG("leave 0\n");
 return 0;
}



$ sudo ./Debug/omapmem 
DBG src/omapmem.c:57:main(): enter
DBG src/omapmem.c:75:main(): mapped to 0x4018c000
DBG src/omapmem.c:79:main(): 1 val for 
AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET = 0x00000030
DBG src/omapmem.c:84:main(): 2 val for 
AM33XX_CONTROL_PADCONF_GPMC_AD0_OFFSET = 0x00000030
DBG src/omapmem.c:89:main(): leave 0

Thanks!

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to