svn commit: r301266 - head/sys/arm/freescale/imx
Svatopluk Kraus
skra at freebsd.org
Fri Jun 3 14:49:57 UTC 2016
I forgot to add to commit message:
Reported by: Ulrich Grey <usenet at ulrich-grey.de>
Tested by: Ulrich Grey <usenet at ulrich-grey.de>
On Fri, Jun 3, 2016 at 1:05 PM, Svatopluk Kraus <skra at freebsd.org> wrote:
> Author: skra
> Date: Fri Jun 3 11:05:55 2016
> New Revision: 301266
> URL: https://svnweb.freebsd.org/changeset/base/301266
>
> Log:
> Postpone allocation of IRQ resource to the time when interrupt
> controller devices are attached. This has already been done for
> bus_setup_intr().
>
> There was no doubt that if someone wants to setup an interrupt,
> corresponding interrupt controller device must already be attached.
> However, the same must be valid for allocation of an interrupt resource
> unless the allocation is done blindly, without any information that
> such interrupt even exists. While it was done this blind way before,
> it won't be possible after next INTRNG change.
>
> Modified:
> head/sys/arm/freescale/imx/imx6_anatop.c
>
> Modified: head/sys/arm/freescale/imx/imx6_anatop.c
> ==============================================================================
> --- head/sys/arm/freescale/imx/imx6_anatop.c Fri Jun 3 10:28:06 2016 (r301265)
> +++ head/sys/arm/freescale/imx/imx6_anatop.c Fri Jun 3 11:05:55 2016 (r301266)
> @@ -78,7 +78,6 @@ __FBSDID("$FreeBSD$");
>
> static struct resource_spec imx6_anatop_spec[] = {
> { SYS_RES_MEMORY, 0, RF_ACTIVE },
> - { SYS_RES_IRQ, 0, RF_ACTIVE },
> { -1, 0 }
> };
> #define MEMRES 0
> @@ -637,11 +636,20 @@ initialize_tempmon(struct imx6_anatop_so
> static void
> intr_setup(void *arg)
> {
> + int rid;
> struct imx6_anatop_softc *sc;
>
> sc = arg;
> - bus_setup_intr(sc->dev, sc->res[IRQRES], INTR_TYPE_MISC | INTR_MPSAFE,
> - tempmon_intr, NULL, sc, &sc->temp_intrhand);
> + rid = 0;
> + sc->res[IRQRES] = bus_alloc_resource_any(sc->dev, SYS_RES_IRQ, &rid,
> + RF_ACTIVE);
> + if (sc->res[IRQRES] != NULL) {
> + bus_setup_intr(sc->dev, sc->res[IRQRES],
> + INTR_TYPE_MISC | INTR_MPSAFE, tempmon_intr, NULL, sc,
> + &sc->temp_intrhand);
> + } else {
> + device_printf(sc->dev, "Cannot allocate IRQ resource\n");
> + }
> config_intrhook_disestablish(&sc->intr_setup_hook);
> }
>
>
More information about the svn-src-head
mailing list