20 Jun 2011 21:38
[microblaze-linux] [PATCH] uio_pdrv_genirq: extensive interrupt search
In some circumstances, especially in a complex OF environment, the interrupt will not present as second resource entry (hard coded as &pdev->resource[1]). We need a more precise lookup algorithm to find the first valid interrupt entry. Signed-off-by: Stephan Linz <linz@...> --- drivers/uio/uio_pdrv_genirq.c | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c index dd94385..715a68d 100644 --- a/drivers/uio/uio_pdrv_genirq.c +++ b/drivers/uio/uio_pdrv_genirq.c <at> <at> -112,13 +112,22 <at> <at> static int uio_pdrv_genirq_probe(struct platform_device *pdev) uioinfo->name = pdev->dev.of_node->name; uioinfo->version = uioinfo->name; /* FIXME */ - /* Multiple IRQs are not supported */ - if (pdev->num_resources > 1) { - struct resource *r = &pdev->resource[1]; + /* Looking for IRQ */ + uioinfo->irq = UIO_IRQ_NONE; + for (i = 0; i < pdev->num_resources; ++i) { + struct resource *r = &pdev->resource[i]; + + if (r->flags != IORESOURCE_IRQ) + continue; + uioinfo->irq = r->start;(Continue reading)
RSS Feed