GPIO commands on OMAP4

Patrick kpa_info at yahoo.fr
Thu Apr 5 10:58:37 EDT 2012


On 04/05/2012 04:38 PM, Patrick wrote:
> On 04/05/2012 03:49 PM, Sascha Hauer wrote:
>> On Thu, Apr 05, 2012 at 11:40:49AM +0200, Patrick wrote:
>>> Dear mailing-list,
>>>
>>> I am using a pcm049 phyCORE omap4430 module from Phytec with BareBox
>>> 2011.09.0 patched with BSP from Phytec.
>>>
>>> I would like to use the GPIO command to read a switch at startup.
>>> This chip is connected on ABE_MCBSP1_DX (gpio_116). I have edited
>>> the boards/pcm049/mux.c files to change the configuration of this
>>> GPIO as follow: {ABE_MCBSP1_DX, (DIS | IEN | M3)} instead of
>>> {ABE_MCBSP1_DX, (SAFE_MODE)}.
>>>
>>> I then use the "gpio_get_value 116" command followed by "echo $?" to
>>> read the value. I always read a 0. On Linux I could read the right
>>> value depending of the position of the switch, so it's not an
>>> hardware problems.
>>>
>>> I have tried with one of the two LEDs on the module (gpio_152) and I
>>> could change the LED state and read it back with gpio_get_value.
>>>
>>> I do not understand what I am doing wrong. Any help will be appreciated.
>>
>> What you tried should work. The only thing I can imagine is that you
>> need a gpio_direction_input before reading the value.
>>
>> Sascha
>>
> I have found the the problem come from the mux configuration.
>
> I have added a call to set_muxconf_regs() from the gpio_get_value()
> (this is only to try) and then it works. I have checked my configuration
> and the lowlevel init is enabled:
>
> CONFIG_MACH_HAS_LOWLEVEL_INIT=y
> CONFIG_MACH_DO_LOWLEVEL_INIT=y
>
> I am runnig my development version of barebox from the stable barebox
> flashed on NAND. I do the following:
>
> tftp barebox.bin /dev/ram0
> go /dev/ram0
>
> Could this be a problem ?
>
> Thanks for your help
>
> Patrick
>
>
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox

Ok things start to become clearer; As I say before I start my dev 
version of BareBox from a stable flashed version.

My dev version is then executed from adress 0x80000000. On the 
board_init_lowlevel() function there is the following test:

if (get_pc() > 0x80000000)
		return;

As my version is started from 0x80000000 this test is true and then the 
set_muxconf_regs(); is never called !

Now the question is why there is this test ?
Is the right place to call  set_muxconf_regs(); from this location ?

Thanks for your help

Patrick



More information about the barebox mailing list