staging: axis-fifo: Use platform_get_irq() to get the interrupt
platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static allocation of IRQ resources in DT core code, this causes an issue when using hierarchical interrupt domains using "interrupts" property in the node as this bypasses the hierarchical setup and messes up the irq chaining. In preparation for removal of static setup of IRQ resource from DT core code use platform_get_irq(). Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Link: https://lore.kernel.org/r/20211224161334.31123-4-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
683fade1a2
Коммит
790ada0e6e
|
@ -809,7 +809,6 @@ end:
|
|||
|
||||
static int axis_fifo_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct resource *r_irq; /* interrupt resources */
|
||||
struct resource *r_mem; /* IO mem resources */
|
||||
struct device *dev = &pdev->dev; /* OS device (from device tree) */
|
||||
struct axis_fifo *fifo = NULL;
|
||||
|
@ -882,16 +881,12 @@ static int axis_fifo_probe(struct platform_device *pdev)
|
|||
*/
|
||||
|
||||
/* get IRQ resource */
|
||||
r_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (!r_irq) {
|
||||
dev_err(fifo->dt_device, "no IRQ found for 0x%pa\n",
|
||||
&r_mem->start);
|
||||
rc = -EIO;
|
||||
rc = platform_get_irq(pdev, 0);
|
||||
if (rc < 0)
|
||||
goto err_initial;
|
||||
}
|
||||
|
||||
/* request IRQ */
|
||||
fifo->irq = r_irq->start;
|
||||
fifo->irq = rc;
|
||||
rc = devm_request_irq(fifo->dt_device, fifo->irq, &axis_fifo_irq, 0,
|
||||
DRIVER_NAME, fifo);
|
||||
if (rc) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче