diff options
author | ian <ian@FreeBSD.org> | 2014-05-13 16:59:50 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-05-13 16:59:50 +0000 |
commit | 3d20d204d8598105e6dd4fb0d595e33d2461a02b (patch) | |
tree | a0ed8fb1178d7a67da2987bec28b68a4a0cbc9c2 /sys/dev | |
parent | 788d947f59320093c08b42453a93721d4d0d5a5c (diff) | |
download | FreeBSD-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.c | 11 |
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 */ + |