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,

Reply via email to