On 01:08-20140423, Javier Martinez Canillas wrote:
[...]
> > on AM335x-sk:
> >> So this makes only am335x-sk to fail with the gpiolib irpchip
> >> conversion as reported by Peter and you.
> >>
> >> Do you know what special use of GPIO have this board to behave
> >> differently than the other boards? I've looked at the DTS but didn't
> >> find anything evident.
> >
> > I could not find anything interesting yet. Peter did mention that
> > reverting d04b76626e94 helped make the platform boot fine. I am trying
> > to add a few prints and see which specific line does things go bad..
> > and if so why.. unfortunately, I am using the board remotely as well..
> > Will try to track this down in the next few hours and post back.
> >
> 
> Great, thanks a lot for your help and sorry for the inconvenience!

Yep - If I am correct, and as we all suspected, GPIO0_7 which controls
the VTT regulator for DDR is getting configured as input, instead of
output.
http://slexy.org/raw/s2gReMRZI6 (with diff:
http://slexy.org/view/s20nueCE8H - ignore many of the prints as I was
trying to truncate and isolate - had to switch to non-relaxed versions
of writes to force sequencing with barriers to trace it down..)


Anyways, the key log is [0]:
gpiochip_irq_map -> calls
                irq_set_irq_type(irq, chip->irq_default_type);
        which inturn triggers: gpio-omap.c's gpio_irq_type
        in this, logic:
        if (!LINE_USED(bank->mod_usage, offset)) is invoked prior to
        setting the input type for the GPIO 0_7 (you can see the logic
walks through setting every GPIO to input!).

The original usage as far as I could discern was that this function was
only called after probe got completed as the gpio requests were
triggered.

There are probably many hacks possible, but a cleaner solution might
involve gpio_irqchip knowing when to set the type and knowing which gpios
not to mess with.

Example hack:
Since we call gpiochip_irqchip_add with IRQ_TYPE_NONE,
  in gpio-omap's   gpio_irq_type could do:
       if (type == IRQ_TYPE_NONE) 
                return 0;
 boots, http://slexy.org/raw/s24M8lHqZX - but ofcourse, there'd be other
 side effects I have'nt thought through..

[0]:
[   25.504976] DONE gpio_irq_type: 533 bank 0xf9e07000, offset 7
[   25.511052] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 
3.15.0-rc2-next-20140422-00003-gd9fc91f-dirty #12
[   25.520811] [<c0014cf0>] (unwind_backtrace) from [<c0011984>] 
(show_stack+0x10/0x14)
[   25.528870] [<c0011984>] (show_stack) from [<c05421b8>] 
(dump_stack+0x78/0x94)
[   25.536390] [<c05421b8>] (dump_stack) from [<c03016c8>] 
(gpio_irq_type+0x1b4/0x218)
[   25.544359] [<c03016c8>] (gpio_irq_type) from [<c008f0d4>] 
(__irq_set_trigger+0x5c/0xfc)
[   25.552774] [<c008f0d4>] (__irq_set_trigger) from [<c0090888>] 
(irq_set_irq_type+0x38/0x58)
[   25.561455] [<c0090888>] (irq_set_irq_type) from [<c02fbf4c>] 
(gpiochip_irq_map+0x60/0x68)
[   25.570047] [<c02fbf4c>] (gpiochip_irq_map) from [<c0092908>] 
(irq_domain_associate+0x70/0x1b8)
[   25.579087] [<c0092908>] (irq_domain_associate) from [<c0092abc>] 
(irq_create_mapping+0x6c/0xfc)
[   25.588216] [<c0092abc>] (irq_create_mapping) from [<c02fbe4c>] 
(gpiochip_irqchip_add+0xa8/0xf0)
[   25.597346] [<c02fbe4c>] (gpiochip_irqchip_add) from [<c0300bb8>] 
(omap_gpio_probe+0x2bc/0x8a4)
[   25.606386] [<c0300bb8>] (omap_gpio_probe) from [<c0354ee4>] 
(platform_drv_probe+0x18/0x48)
[   25.615068] [<c0354ee4>] (platform_drv_probe) from [<c03535d0>] 
(driver_probe_device+0x110/0x224)
[   25.624286] [<c03535d0>] (driver_probe_device) from [<c0351e64>] 
(bus_for_each_drv+0x5c/0x88)
[   25.633146] [<c0351e64>] (bus_for_each_drv) from [<c035348c>] 
(device_attach+0x74/0x8c)
[   25.641471] [<c035348c>] (device_attach) from [<c0352b68>] 
(bus_probe_device+0x88/0xb0)
[   25.649793] [<c0352b68>] (bus_probe_device) from [<c035114c>] 
(device_add+0x3a8/0x4dc)
[   25.658029] [<c035114c>] (device_add) from [<c045ccb8>] 
(of_platform_device_create_pdata+0x70/0x94)
[   25.667428] [<c045ccb8>] (of_platform_device_create_pdata) from [<c045cdb8>] 
(of_platform_bus_create+0xdc/0x184)
[   25.677990] [<c045cdb8>] (of_platform_bus_create) from [<c045ce1c>] 
(of_platform_bus_create+0x140/0x184)
[   25.687835] [<c045ce1c>] (of_platform_bus_create) from [<c045cec0>] 
(of_platform_populate+0x60/0x98)
[   25.697323] [<c045cec0>] (of_platform_populate) from [<c07ad190>] 
(pdata_quirks_init+0x34/0x44)
[   25.706364] [<c07ad190>] (pdata_quirks_init) from [<c07ace64>] 
(omap_generic_init+0x10/0x1c)
[   25.715136] [<c07ace64>] (omap_generic_init) from [<c079e50c>] 
(customize_machine+0x1c/0x40)
[   25.723906] [<c079e50c>] (customize_machine) from [<c0008a64>] 
(do_one_initcall+0x80/0x1c8)
[   25.732591] [<c0008a64>] (do_one_initcall) from [<c079bc94>] 
(kernel_init_freeable+0xfc/0x1cc)
[   25.741544] [<c079bc94>] (kernel_init_freeable) from [<c053cb1c>] 
(kernel_init+0x8/0xe4)
[   25.749958] [<c053cb1c>] (kernel_init) from [<c000e708>] 
(ret_from_fork+0x14/0x2c)
-- 
Regards,
Nishanth Menon
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to