svn commit: r269625 - projects/arm64/sys/dev/ofw

Andrew Turner andrew at FreeBSD.org
Wed Aug 6 14:19:57 UTC 2014


Author: andrew
Date: Wed Aug  6 14:19:57 2014
New Revision: 269625
URL: http://svnweb.freebsd.org/changeset/base/269625

Log:
  Set the rid correctly when there are multiple ranges and interrupts.
  If the memory ranges or interrupts have multiple values per entry
  the rid will depend on the size of these.

Modified:
  projects/arm64/sys/dev/ofw/ofwbus.c

Modified: projects/arm64/sys/dev/ofw/ofwbus.c
==============================================================================
--- projects/arm64/sys/dev/ofw/ofwbus.c	Wed Aug  6 10:38:06 2014	(r269624)
+++ projects/arm64/sys/dev/ofw/ofwbus.c	Wed Aug  6 14:19:57 2014	(r269625)
@@ -437,7 +437,7 @@ ofwbus_setup_dinfo(device_t dev, phandle
 	uint32_t *reg, *intr, icells;
 	uint64_t phys, size;
 	phandle_t iparent;
-	int i, j;
+	int i, j, rid;
 	int nintr;
 	int nreg;
 
@@ -466,7 +466,7 @@ ofwbus_setup_dinfo(device_t dev, phandle
 		nreg = 0;
 	}
 
-	for (i = 0; i < nreg; i += sc->acells + sc->scells) {
+	for (i = 0, rid = 0; i < nreg; i += sc->acells + sc->scells, rid++) {
 		phys = size = 0;
 		for (j = 0; j < sc->acells; j++) {
 			phys <<= 32;
@@ -478,7 +478,7 @@ ofwbus_setup_dinfo(device_t dev, phandle
 		}
 		/* Skip the dummy reg property of glue devices like ssm(4). */
 		if (size != 0)
-			resource_list_add(&ndi->ndi_rl, SYS_RES_MEMORY, i,
+			resource_list_add(&ndi->ndi_rl, SYS_RES_MEMORY, rid,
 			    phys, phys + size - 1, size);
 	}
 	free(reg, M_OFWPROP);
@@ -491,10 +491,10 @@ ofwbus_setup_dinfo(device_t dev, phandle
 		    sizeof(iparent));
 		OF_searchencprop(OF_xref_phandle(iparent), "#interrupt-cells",
 		    &icells, sizeof(icells));
-		for (i = 0; i < nintr; i+= icells) {
+		for (i = 0, rid = 0; i < nintr; i+= icells, rid++) {
 			intr[i] = ofw_bus_map_intr(dev, iparent, icells,
 			    &intr[i]);
-			resource_list_add(&ndi->ndi_rl, SYS_RES_IRQ, i, intr[i],
+			resource_list_add(&ndi->ndi_rl, SYS_RES_IRQ, rid, intr[i],
 			    intr[i], 1);
 		}
 		free(intr, M_OFWPROP);


More information about the svn-src-projects mailing list