summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-05-13 16:59:50 +0000
committerian <ian@FreeBSD.org>2014-05-13 16:59:50 +0000
commit3d20d204d8598105e6dd4fb0d595e33d2461a02b (patch)
treea0ed8fb1178d7a67da2987bec28b68a4a0cbc9c2 /sys/dev
parent788d947f59320093c08b42453a93721d4d0d5a5c (diff)
downloadFreeBSD-src-3d20d204d8598105e6dd4fb0d595e33d2461a02b.zip
FreeBSD-src-3d20d204d8598105e6dd4fb0d595e33d2461a02b.tar.gz
MFC r256814, r256816, r256818, r256846, r256855, r256864 (by nwhitehorn):
- Handle 2GB of ram - Allow the OFW interrupt mapping code to work with PCI devices not enumerated by Open Firmware, as in the case of FDT. - Provide an interface for PCI bus drivers that need some of ofw_pci's metadata during attach. - Use standard ofw_bus helpers instead of reinventing the wheel. - Make hard-wired TLB allocations be at minimum one page.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ofw/ofw_bus_subr.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/dev/ofw/ofw_bus_subr.c b/sys/dev/ofw/ofw_bus_subr.c
index 86426ca..890e378 100644
--- a/sys/dev/ofw/ofw_bus_subr.c
+++ b/sys/dev/ofw/ofw_bus_subr.c
@@ -223,7 +223,6 @@ ofw_bus_has_prop(device_t dev, const char *propname)
return (OF_hasprop(node, propname));
}
-#ifndef FDT
void
ofw_bus_setup_iinfo(phandle_t node, struct ofw_bus_iinfo *ii, int intrsz)
{
@@ -261,9 +260,11 @@ ofw_bus_lookup_imap(phandle_t node, struct ofw_bus_iinfo *ii, void *reg,
KASSERT(regsz >= ii->opi_addrc,
("ofw_bus_lookup_imap: register size too small: %d < %d",
regsz, ii->opi_addrc));
- rv = OF_getprop(node, "reg", reg, regsz);
- if (rv < regsz)
- panic("ofw_bus_lookup_imap: could not get reg property");
+ if (node != -1) {
+ rv = OF_getprop(node, "reg", reg, regsz);
+ if (rv < regsz)
+ panic("ofw_bus_lookup_imap: cannot get reg property");
+ }
return (ofw_bus_search_intrmap(pintr, pintrsz, reg, ii->opi_addrc,
ii->opi_imap, ii->opi_imapsz, ii->opi_imapmsk, maskbuf, mintr,
mintrsz, iparent));
@@ -343,4 +344,4 @@ ofw_bus_search_intrmap(void *intr, int intrsz, void *regs, int physsz,
}
return (0);
}
-#endif /* !FDT */
+
OpenPOWER on IntegriCloud