Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Aug 2012 23:21:16 +0000 (UTC)
From:      Jakub Wojciech Klama <jceel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r239115 - in user/jceel/soc2012_armv6/sys: arm/lpc arm/ti dev/fdt
Message-ID:  <201208062321.q76NLGWm094506@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jceel
Date: Mon Aug  6 23:21:15 2012
New Revision: 239115
URL: http://svn.freebsd.org/changeset/base/239115

Log:
  Get FDT interrupt decoding back to work.

Modified:
  user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c
  user/jceel/soc2012_armv6/sys/arm/ti/common.c
  user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c

Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c	Mon Aug  6 23:15:46 2012	(r239114)
+++ user/jceel/soc2012_armv6/sys/arm/lpc/lpc_intc.c	Mon Aug  6 23:21:15 2012	(r239115)
@@ -214,11 +214,8 @@ static int
 fdt_pic_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
     int *pol)
 {
-#if 0
-	// XXX
 	if (!fdt_is_compatible(node, "lpc,pic"))
 		return (ENXIO);
-#endif
 
 	*interrupt = fdt32_to_cpu(intr[0]);
 	*trig = INTR_TRIGGER_CONFORM;

Modified: user/jceel/soc2012_armv6/sys/arm/ti/common.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/ti/common.c	Mon Aug  6 23:15:46 2012	(r239114)
+++ user/jceel/soc2012_armv6/sys/arm/ti/common.c	Mon Aug  6 23:21:15 2012	(r239115)
@@ -58,10 +58,9 @@ static int
 fdt_gic_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
     int *pol)
 {
-#if 0
 	if (!fdt_is_compatible(node, "arm,gic"))
 		return (ENXIO);
-#endif
+	
 	*interrupt = fdt32_to_cpu(intr[0]);
 	*trig = INTR_TRIGGER_CONFORM;
 	*pol = INTR_POLARITY_CONFORM;
@@ -75,7 +74,6 @@ static int
 fdt_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
     int *pol)
 {
-
 	if (!fdt_is_compatible(node, "ti,aintc"))
 		return (ENXIO);
 

Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c	Mon Aug  6 23:15:46 2012	(r239114)
+++ user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c	Mon Aug  6 23:21:15 2012	(r239115)
@@ -585,7 +585,7 @@ fdt_intr_to_rl(phandle_t node, struct re
 	 */
 	if (OF_getprop(node, "interrupt-parent", &iph, sizeof(iph)) <= 0) {
 		debugf("no intr-parent phandle\n");
-		intr_par = 0xffffffff;
+		intr_par = 0xffffffff; /* XXX should be #defined */
 	} else {
 		iph = fdt32_to_cpu(iph);
 		intr_par = OF_instance_to_package(iph);
@@ -609,10 +609,16 @@ fdt_intr_to_rl(phandle_t node, struct re
 		interrupt = -1;
 		trig = pol = 0;
 
-		if (fdt_intr_decode(intr_par, &intr[i * intr_cells],
-		    &interrupt, &trig, &pol) != 0) {
-			rv = ENXIO;
-			goto out;
+		if (intr_par != 0xffffffff) {
+			if (fdt_intr_decode(intr_par, &intr[i * intr_cells],
+			    &interrupt, &trig, &pol) != 0) {
+				rv = ENXIO;
+				goto out;
+			}
+		} else {
+			interrupt = fdt32_to_cpu(intr[i * intr_cells]);
+			trig = INTR_TRIGGER_CONFORM;
+			pol = INTR_POLARITY_CONFORM;
 		}
 
 		if (interrupt < 0) {



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