Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Jan 2011 20:25:20 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r218073 - in head/sys: arm/include dev/fdt powerpc/include
Message-ID:  <201101292025.p0TKPK35044174@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Sat Jan 29 20:25:20 2011
New Revision: 218073
URL: http://svn.freebsd.org/changeset/base/218073

Log:
  Introduce macro FDT_MAP_IRQ to map from an interrupt controller and
  interrupt pin pair to a global IRQ number. When multiple PICs exist
  on a board, the interrupt pin alone is not unique.

Modified:
  head/sys/arm/include/fdt.h
  head/sys/dev/fdt/fdt_common.c
  head/sys/powerpc/include/fdt.h

Modified: head/sys/arm/include/fdt.h
==============================================================================
--- head/sys/arm/include/fdt.h	Sat Jan 29 19:55:29 2011	(r218072)
+++ head/sys/arm/include/fdt.h	Sat Jan 29 20:25:20 2011	(r218073)
@@ -44,6 +44,9 @@
 /* Max interrupt number */
 #define FDT_INTR_MAX	NIRQ
 
+/* Map phandle/intpin pair to global IRQ number */ 
+#define	FDT_MAP_IRQ(node, pin)	(pin)
+
 /*
  * Bus space tag. XXX endianess info needs to be derived from the blob.
  */

Modified: head/sys/dev/fdt/fdt_common.c
==============================================================================
--- head/sys/dev/fdt/fdt_common.c	Sat Jan 29 19:55:29 2011	(r218072)
+++ head/sys/dev/fdt/fdt_common.c	Sat Jan 29 20:25:20 2011	(r218073)
@@ -480,7 +480,7 @@ fdt_intr_to_rl(phandle_t node, struct re
 	pcell_t *intr;
 	pcell_t intr_cells;
 	int interrupt, trig, pol;
-	int i, intr_num, rv;
+	int i, intr_num, irq, rv;
 
 	if (OF_getproplen(node, "interrupts") <= 0)
 		/* Node does not have 'interrupts' property. */
@@ -532,7 +532,8 @@ fdt_intr_to_rl(phandle_t node, struct re
 		intr_sl[i].trig = trig;
 		intr_sl[i].pol = pol;
 
-		resource_list_add(rl, SYS_RES_IRQ, i, interrupt, interrupt, 1);
+		irq = FDT_MAP_IRQ(intr_par, interrupt);
+		resource_list_add(rl, SYS_RES_IRQ, i, irq, irq, 1);
 	}
 
 out:

Modified: head/sys/powerpc/include/fdt.h
==============================================================================
--- head/sys/powerpc/include/fdt.h	Sat Jan 29 19:55:29 2011	(r218072)
+++ head/sys/powerpc/include/fdt.h	Sat Jan 29 20:25:20 2011	(r218073)
@@ -38,6 +38,9 @@
 /* Max interrupt number */
 #define FDT_INTR_MAX	INTR_VECTORS
 
+/* Map phandle/intpin pair to global IRQ number */
+#define	FDT_MAP_IRQ(node, pin)	powerpc_get_irq(node, pin)
+
 /*
  * Bus space tag. XXX endianess info needs to be derived from the blob.
  */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101292025.p0TKPK35044174>