Panda ES board hang when using GPIO as interrupt
Franky Lin
frankyl at broadcom.com
Thu Jun 28 20:59:04 EDT 2012
On 06/28/2012 04:54 PM, Jon Hunter wrote:
> I am wondering if this could be the bug ... on start-up I see that we do
> a context restore on bank1 during the probe which is before we have done
> the first suspend! In other words, we could restore a bad/uninitialised
> context for bank1. In the case of bank1, the loss count starts at 1 and
> not 0 and so we falsely think we need to perform a restore :-(
>
> [ 0.176269] omap_gpio_runtime_resume: bank @ 0xfc310000
> [ 0.177276] omap_gpio_runtime_resume: count 0, now 1
> [ 0.177276] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
> [ 0.177642] omap_gpio_runtime_suspend: bank @ 0xfc310000
>
> Can you try ...
>
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index c4ed172..9623408 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -1086,6 +1086,9 @@ static int __devinit omap_gpio_probe(struct
> platform_device *pdev)
> #ifdef CONFIG_OF_GPIO
> bank->chip.of_node = of_node_get(node);
> #endif
> + if (bank->get_context_loss_count)
> + bank->context_loss_count =
> + bank->get_context_loss_count(bank->dev);
>
> bank->irq_base = irq_alloc_descs(-1, 0, bank->width, 0);
> if (bank->irq_base < 0) {
>
Looks like you found the culprit. :) It does fix the problem.
Franky
More information about the linux-arm-kernel
mailing list