mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-17 15:27:36 +00:00
Move unmask IRQ function call up to nexus device level.
FDT-enabled targets were broken after r238043 that relies on device up the hierarchy to properly setup interrupt. nexus device for ARM platforms did job only partially: setting handler but not unmasking interrupt. Unmasking was performed by platform code. Reviewed by: andrew@
This commit is contained in:
parent
da1ab8a4a0
commit
86bce74937
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=238545
@ -117,12 +117,16 @@ static int
|
||||
nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags,
|
||||
driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep)
|
||||
{
|
||||
int irq;
|
||||
|
||||
if ((rman_get_flags(res) & RF_SHAREABLE) == 0)
|
||||
flags |= INTR_EXCL;
|
||||
|
||||
arm_setup_irqhandler(device_get_nameunit(child),
|
||||
filt, intr, arg, rman_get_start(res), flags, cookiep);
|
||||
for (irq = rman_get_start(res); irq <= rman_get_end(res); irq++) {
|
||||
arm_setup_irqhandler(device_get_nameunit(child),
|
||||
filt, intr, arg, irq, flags, cookiep);
|
||||
arm_unmask_irq(irq);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -397,7 +397,6 @@ at91_setup_intr(device_t dev, device_t child,
|
||||
struct resource *ires, int flags, driver_filter_t *filt,
|
||||
driver_intr_t *intr, void *arg, void **cookiep)
|
||||
{
|
||||
struct at91_softc *sc = device_get_softc(dev);
|
||||
int error;
|
||||
|
||||
if (rman_get_start(ires) == AT91_IRQ_SYSTEM && filt == NULL)
|
||||
@ -407,8 +406,6 @@ at91_setup_intr(device_t dev, device_t child,
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
bus_space_write_4(sc->sc_st, sc->sc_aic_sh, IC_IECR,
|
||||
1 << rman_get_start(ires));
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -602,8 +602,6 @@ econa_setup_intr(device_t dev, device_t child,
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
arm_unmask_irq(rman_get_start(ires));
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -220,7 +220,6 @@ s3c24x0_setup_intr(device_t dev, device_t child,
|
||||
/* Enable the external interrupt pin */
|
||||
s3c24x0_enable_ext_intr(irq - S3C24X0_EXTIRQ_MIN);
|
||||
}
|
||||
arm_unmask_irq(irq);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
@ -435,7 +435,6 @@ i81342_setup_intr(device_t dev, device_t child, struct resource *ires,
|
||||
filt, intr, arg, cookiep);
|
||||
if (error)
|
||||
return (error);
|
||||
arm_unmask_irq(rman_get_start(ires));
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -181,7 +181,6 @@ pxa_setup_intr(device_t dev, device_t child, struct resource *irq, int flags,
|
||||
filter, ithread, arg, cookiep);
|
||||
if (error)
|
||||
return (error);
|
||||
arm_unmask_irq(rman_get_start(irq));
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user