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