Module Name: src
Committed By: skrll
Date: Wed Dec 25 10:49:29 UTC 2019
Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c
Log Message:
Use PIC_IRQBASE_ALLOC and allow conditional attachment of interrupt
handlers (for RPI4)
To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/broadcom/bcm2835_intr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/arm/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.27 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.28
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.27 Fri Nov 29 17:44:27 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c Wed Dec 25 10:49:29 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_intr.c,v 1.27 2019/11/29 17:44:27 thorpej Exp $ */
+/* $NetBSD: bcm2835_intr.c,v 1.28 2019/12/25 10:49:29 skrll Exp $ */
/*-
* Copyright (c) 2012, 2015, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.27 2019/11/29 17:44:27 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.28 2019/12/25 10:49:29 skrll Exp $");
#define _INTR_PRIVATE
@@ -98,6 +98,9 @@ static bool bcm2836mp_icu_fdt_intrstr(de
static int bcm2835_icu_match(device_t, cfdata_t, void *);
static void bcm2835_icu_attach(device_t, device_t, void *);
+static int bcm2835_int_base;
+static int bcm2836mp_int_base;
+
static void
bcm2835_set_priority(struct pic_softc *pic, int ipl)
{
@@ -314,7 +317,7 @@ bcm2835_icu_attach(device_t parent, devi
bcmicu_sc = sc;
sc->sc_ioh = ioh;
sc->sc_phandle = phandle;
- pic_add(&bcm2835_pic, BCM2835_INT_BASE);
+ bcm2835_int_base = pic_add(&bcm2835_pic, PIC_IRQBASE_ALLOC);
ifuncs = &bcm2835icu_fdt_funcs;
}
@@ -827,7 +830,11 @@ bcm2836mp_intr_init(void *priv, struct c
snprintf(suffix, sizeof(suffix), "#%lu", cpuid);
strlcat(pic->pic_name, suffix, sizeof(pic->pic_name));
#endif
- pic_add(pic, BCM2836_INT_BASECPUN(cpuid));
+ if (cpuid == 0) {
+ bcm2836mp_int_base = pic_add(pic, PIC_IRQBASE_ALLOC);
+ } else {
+ pic_add(pic, BCM2836_INT_BASECPUN(cpuid));
+ }
#if defined(MULTIPROCESSOR)
intr_establish(BCM2836_INT_MAILBOX0_CPUN(cpuid), IPL_HIGH,