aboutsummaryrefslogtreecommitdiff
path: root/sys/sparc64
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2009-03-19 20:48:47 +0000
committerMarius Strobl <marius@FreeBSD.org>2009-03-19 20:48:47 +0000
commitd7ae285095d16ff24b50b57905b34bfad5e6bde1 (patch)
tree5e700c24924b0f1b1617792398a5b0b272486b2f /sys/sparc64
parent707085fef95f934822c9860904a21e1db95e5488 (diff)
downloadsrc-d7ae285095d16ff24b50b57905b34bfad5e6bde1.tar.gz
src-d7ae285095d16ff24b50b57905b34bfad5e6bde1.zip
- Take advantage of KOBJMETHOD_END.
- Hook up the streaming buffer (not used by iommu(4) by default, yet) if available and usable. [1] - Move the message regarding belated registration as interrupt control under bootverbose as this isn't something the user should worry about. Tested by: Michael Moll [1]
Notes
Notes: svn path=/head/; revision=190108
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/pci/schizo.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/sys/sparc64/pci/schizo.c b/sys/sparc64/pci/schizo.c
index 242529420829..70851718863c 100644
--- a/sys/sparc64/pci/schizo.c
+++ b/sys/sparc64/pci/schizo.c
@@ -148,7 +148,7 @@ static device_method_t schizo_methods[] = {
/* ofw_bus interface */
DEVMETHOD(ofw_bus_get_node, schizo_get_node),
- { 0, 0 }
+ KOBJMETHOD_END
};
static devclass_t schizo_devclass;
@@ -449,14 +449,17 @@ schizo_attach(device_t dev)
tc_init(tc);
}
- /* Set up the IOMMU. Both Schizo and Tomatillo have one per PBM. */
+ /*
+ * Set up the IOMMU. Schizo, Tomatillo and XMITS all have
+ * one per PBM. Schizo and XMITS additionally have a streaming
+ * buffer, in Schizo version < 5 (i.e. revision < 2.3) it's
+ * affected by several errata and basically unusable though.
+ */
sc->sc_is.is_pmaxaddr = IOMMU_MAXADDR(STX_IOMMU_BITS);
- sc->sc_is.is_sb[0] = 0;
- sc->sc_is.is_sb[1] = 0;
-#ifdef notyet
- if (OF_getproplen(node, "no-streaming-cache") < 0)
+ sc->sc_is.is_sb[0] = sc->sc_is.is_sb[1] = 0;
+ if (OF_getproplen(node, "no-streaming-cache") < 0 &&
+ !(sc->sc_mode == SCHIZO_MODE_SCZ && sc->sc_ver < 5))
sc->sc_is.is_sb[0] = STX_PCI_STRBUF;
-#endif
#define TSBCASE(x) \
case (IOTSB_BASESZ << (x)) << (IO_PAGE_SHIFT - IOTTE_SHIFT): \
@@ -1154,8 +1157,9 @@ schizo_setup_intr(device_t dev, device_t child, struct resource *ires,
"controller for vector 0x%lx (%d)\n", vec, error);
return (error);
}
- device_printf(dev, "belatedly registered as interrupt "
- "controller for vector 0x%lx\n", vec);
+ if (bootverbose)
+ device_printf(dev, "belatedly registered as "
+ "interrupt controller for vector 0x%lx\n", vec);
} else {
device_printf(dev,
"invalid interrupt controller for vector 0x%lx\n", vec);