[U-Boot] Data abort in omap_gpio

Tom Rini
2014-04-09T15:37:12Z

On Wed, Apr 09, 2014 at 05:22:57PM +0200, Andreas Bie?mann wrote:

> Hi all,
>
> I've encountered a data abort in omap_gpio when using
> gpio_direction_output(). Anyone aware of that?
>
> Here is the trace:
>
> ---8<---
> gpio_direction_output (gpio=<value optimized out>, value=0) at
> /home/abiessmann/src/u-boot/drivers/gpio/omap_gpio.c:197
> 197 _set_gpio_dataout(bank, get_gpio_index(gpio), value);
> (gdb) s
> _set_gpio_dataout (gpio=<value optimized out>, value=0) at
> /home/abiessmann/src/u-boot/drivers/gpio/omap_gpio.c:102
> 102 void *reg = bank->base;
> (gdb) s
> 105 switch (bank->method) {
> (gdb) s
> 107 if (enable)
> (gdb) list
> 102 void *reg = bank->base;
> 103 u32 l = 0;
> 104
> 105 switch (bank->method) {
> 106 case METHOD_GPIO_24XX:
> 107 if (enable)
> 108 reg += OMAP_GPIO_SETDATAOUT;
> 109 else
> 110 reg += OMAP_GPIO_CLEARDATAOUT;
> 111 l = 1 << gpio;
> (gdb) s
> 111 l = 1 << gpio;
> (gdb) s
> 108 reg += OMAP_GPIO_SETDATAOUT;
> (gdb) s
> 110 reg += OMAP_GPIO_CLEARDATAOUT;
> (gdb) s
> 111 l = 1 << gpio;
> (gdb) s
> 118 __raw_writel(l, reg);
> (gdb) print/s l
> $17 = 2048
> (gdb) print/x l
> $18 = 0x800
> (gdb) print/x reg
> $19 = 0x49050090
> (gdb) s
> ^C
> Program received signal SIGSTOP, Stopped (signal).
> _start () at /home/abiessmann/src/u-boot/arch/arm/cpu/armv7/start.S:27
> 27 ldr pc, _data_abort
> (gdb)
> --->8---
>
> (Encounterd with tricorder board current ToT)
>
> I'll dive into that tomorrow. If anyone has some pointeres, please speak
> out loud ;)

You need to add the relevant CONFIG_OMAP3_GPIO_n define to enable
clocks/etc for the gpios being used.

--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140409/0a263121/attachment.pgp>