gpio irqs broken on imx27 with dt
Dong Aisheng
aisheng.dong at freescale.com
Fri Apr 27 09:18:53 EDT 2012
On Fri, Apr 27, 2012 at 02:50:48PM +0200, Uwe Kleine-König wrote:
> Hello,
>
> I experience problems on using gpio irqs on an imx27 based machine
> booting with dt.
>
> I think one problem is:
>
> if (mxc_gpio_hwtype == IMX21_GPIO) {
> /* setup one handler for all GPIO interrupts */
> if (pdev->id == 0)
> irq_set_chained_handler(port->irq,
> mx2_gpio_irq_handler);
> } ...
>
> because the inner if doesn't trigger as dt-created gpio devices have all
> pdev->id == -1.
>
> I havn't looked deeper into it yet, but I think another problem is that
> gpios don't start at 0 and so the usual
>
Yes, for dt, gpio base is allocated dynamically.
See gpiochip_find_base.
> #define OTG_PHY_CS_GPIO (GPIO_PORTB + 23)
>
> doesn't work either (which might be expected, but doesn't necessarily
> needs to fail?!). (You could argue I shouldn't hardcode gpio numbers any
> more, but as not all device drivers are oftree aware yet I need to get
> of the ground somehow.)
>
I guess dt user never know a pin's gpio number since they're allocated
dynamically. User should only parse it from device tree then it can be safe
to use.
Regards
Dong Aisheng
More information about the linux-arm-kernel
mailing list