Re: GPIO commands on OMAP4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxx
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

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox


[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux