summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/powermac/grackle.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/powerpc/powermac/grackle.c')
-rw-r--r--sys/powerpc/powermac/grackle.c36
1 files changed, 24 insertions, 12 deletions
diff --git a/sys/powerpc/powermac/grackle.c b/sys/powerpc/powermac/grackle.c
index b40b77e..08e14ac 100644
--- a/sys/powerpc/powermac/grackle.c
+++ b/sys/powerpc/powermac/grackle.c
@@ -36,19 +36,18 @@
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_pci.h>
+#include <dev/ofw/ofw_bus.h>
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
#include <machine/bus.h>
#include <machine/md_var.h>
-#include <machine/nexusvar.h>
#include <machine/pio.h>
#include <machine/resource.h>
#include <sys/rman.h>
-#include <powerpc/ofw/ofw_pci.h>
#include <powerpc/powermac/gracklevar.h>
#include <vm/vm.h>
@@ -92,6 +91,11 @@ static void grackle_write_config(device_t, u_int, u_int, u_int,
static int grackle_route_interrupt(device_t, device_t, int);
/*
+ * ofw_bus interface
+ */
+static phandle_t grackle_get_node(device_t bus, device_t dev);
+
+/*
* Local routines.
*/
static int grackle_enable_config(struct grackle_softc *, u_int,
@@ -122,6 +126,9 @@ static device_method_t grackle_methods[] = {
DEVMETHOD(pcib_write_config, grackle_write_config),
DEVMETHOD(pcib_route_interrupt, grackle_route_interrupt),
+ /* ofw_bus interface */
+ DEVMETHOD(ofw_bus_get_node, grackle_get_node),
+
{ 0, 0 }
};
@@ -138,10 +145,10 @@ DRIVER_MODULE(grackle, nexus, grackle_driver, grackle_devclass, 0, 0);
static int
grackle_probe(device_t dev)
{
- char *type, *compatible;
+ const char *type, *compatible;
- type = nexus_get_device_type(dev);
- compatible = nexus_get_compatible(dev);
+ type = ofw_bus_get_type(dev);
+ compatible = ofw_bus_get_compat(dev);
if (type == NULL || compatible == NULL)
return (ENXIO);
@@ -162,7 +169,7 @@ grackle_attach(device_t dev)
struct grackle_range *rp, *io, *mem[2];
int nmem, i, error;
- node = nexus_get_node(dev);
+ node = ofw_bus_get_node(dev);
sc = device_get_softc(dev);
if (OF_getprop(node, "bus-range", busrange, sizeof(busrange)) != 8)
@@ -244,12 +251,6 @@ grackle_attach(device_t dev)
}
}
- /*
- * Write out the correct PIC interrupt values to config space
- * of all devices on the bus.
- */
- ofw_pci_fixup(dev, sc->sc_bus, sc->sc_node);
-
device_add_child(dev, "pci", device_get_unit(dev));
return (bus_generic_attach(dev));
}
@@ -511,6 +512,17 @@ grackle_disable_config(struct grackle_softc *sc)
out32rb(sc->sc_addr, 0);
}
+static phandle_t
+grackle_get_node(device_t bus, device_t dev)
+{
+ struct grackle_softc *sc;
+
+ sc = device_get_softc(bus);
+ /* We only have one child, the PCI bus, which needs our own node. */
+
+ return sc->sc_node;
+}
+
/*
* Driver to swallow Grackle host bridges from the PCI bus side.
*/
OpenPOWER on IntegriCloud