summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/gem/if_gem_pci.c9
-rw-r--r--sys/dev/hme/if_hme_pci.c10
2 files changed, 12 insertions, 7 deletions
diff --git a/sys/dev/gem/if_gem_pci.c b/sys/dev/gem/if_gem_pci.c
index 03fa1d4f3be2..49f2ddc129f8 100644
--- a/sys/dev/gem/if_gem_pci.c
+++ b/sys/dev/gem/if_gem_pci.c
@@ -158,11 +158,14 @@ gem_pci_attach(dev)
struct gem_pci_softc *gsc = device_get_softc(dev);
struct gem_softc *sc = &gsc->gsc_gem;
+ pci_enable_busmaster(dev);
+
/*
- * Enable bus master and memory access. The firmware does in some
- * cases not do this for us on sparc64 machines.
+ * Some Sun GEMs/ERIs do have their intpin register bogusly set to 0,
+ * although it should be 1. correct that.
*/
- pci_enable_busmaster(dev);
+ if (pci_get_intpin(dev) == 0)
+ pci_set_intpin(dev, 1);
sc->sc_dev = dev;
sc->sc_pci = 1; /* XXX */
diff --git a/sys/dev/hme/if_hme_pci.c b/sys/dev/hme/if_hme_pci.c
index 8a89b6b46bdc..f1139210354f 100644
--- a/sys/dev/hme/if_hme_pci.c
+++ b/sys/dev/hme/if_hme_pci.c
@@ -132,13 +132,15 @@ hme_pci_attach(device_t dev)
struct hme_softc *sc = &hsc->hsc_hme;
int error;
+ pci_enable_busmaster(dev);
/*
- * Enable memory-space and bus master accesses. This is kinda of
- * gross; but the hme comes up with neither enabled.
+ * Some Sun HMEs do have their intpin register bogusly set to 0,
+ * although it should be 1. correct that.
*/
- pci_enable_busmaster(dev);
+ if (pci_get_intpin(dev) == 0)
+ pci_set_intpin(dev, 1);
- sc->sc_pci = 1; /* XXXXX should all be done in bus_dma. */
+ sc->sc_pci = 1;
sc->sc_dev = dev;
/*