Writing Pin-muxing registers in an am3359.

Bob Stewart robjsstewart at ...196...
Thu Oct 24 14:57:08 CEST 2013

On a TI am3359 processor (Beaglebone Black) I'm attempting to attempting 
to control the GPIO pin-muxing through the Control subsystem registers 
which start at 0x4e100000. I can read and write to the GPIO0 through 
GPIO3 registers correctly through MMIO after attaching the device 
memory, but when I try to write to any of the pin mux registers nothing 
is written and no errors are output.

The code I've written to set up pin muxing resides in a gpio driver 
which is a modified version of an am 33xx gpio driver I pulled from the 
ksyslabs.org repository.

With verbosity turned on, I see the that the pin mux registers are 
attached to local memory:
Genode::Io_mem_session_component::_prepare_io_mem(const char*, 
Genode::Range_allocator*): I/O mem [44e10000,44e11000)//
//[init -> gpio_drv] GPIO_control base is 0x44e10000 local is 0x4000/

I write a value of 5 to the register offset 0x800 into the Control 
/[init -> gpio_drv] mmio write 0x4800: 0x00000005//
//[init -> gpio_drv] void Omap_driver::set_pin_controls(int, int, int): 
B=1, P=0, Mode=5, Input=0, Offset=0/

In jdb I see that the value at 0x4800 has not changed after apparently 
writing 5 to it.

I believe I've set up the IO memory mapping correctly, the values read 
from the pin muxing registers look correct, and the GPIO subsystem 
appears to be set up correctly as I can turn on and off some LEDs.

Is there something I need to do to enable writing to the memory region 
containing the Control registers?

Thanks for any help.

     Bob Stewart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20131024/907e60e2/attachment.html>

More information about the users mailing list