summaryrefslogtreecommitdiffstats
path: root/sys/dev/mlx
diff options
context:
space:
mode:
authormsmith <msmith@FreeBSD.org>2000-08-04 06:52:00 +0000
committermsmith <msmith@FreeBSD.org>2000-08-04 06:52:00 +0000
commita4b7e979513d3f0f8cf8b2a3cfe1fa280931a1d1 (patch)
treebf6bd7b184766045598781c23cf11026156f4728 /sys/dev/mlx
parent0b697dfdc6e1be4175c9c84fe306374e3fcfc7e1 (diff)
downloadFreeBSD-src-a4b7e979513d3f0f8cf8b2a3cfe1fa280931a1d1.zip
FreeBSD-src-a4b7e979513d3f0f8cf8b2a3cfe1fa280931a1d1.tar.gz
Add support for 2.x/3.x firmware adapters which are too old to have a
memory-mapped register window. This closes the last known issue with 2.x vintage adapters.
Diffstat (limited to 'sys/dev/mlx')
-rw-r--r--sys/dev/mlx/mlx.c2
-rw-r--r--sys/dev/mlx/mlx_pci.c9
2 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/mlx/mlx.c b/sys/dev/mlx/mlx.c
index 9bb87ca..3c69dc5 100644
--- a/sys/dev/mlx/mlx.c
+++ b/sys/dev/mlx/mlx.c
@@ -43,6 +43,8 @@
#include <sys/stat.h>
#include <machine/resource.h>
+#include <machine/bus_memio.h>
+#include <machine/bus_pio.h>
#include <machine/bus.h>
#include <machine/clock.h>
#include <sys/rman.h>
diff --git a/sys/dev/mlx/mlx_pci.c b/sys/dev/mlx/mlx_pci.c
index 118e495..497e0a6 100644
--- a/sys/dev/mlx/mlx_pci.c
+++ b/sys/dev/mlx/mlx_pci.c
@@ -157,18 +157,23 @@ mlx_pci_attach(device_t dev)
* Allocate the PCI register window.
*/
- /* type 2/3 adapters have an I/O region we don't use at base 0 */
+ /* type 2/3 adapters have an I/O region we don't prefer at base 0 */
switch(sc->mlx_iftype) {
case MLX_IFTYPE_2:
case MLX_IFTYPE_3:
rid = MLX_CFG_BASE1;
+ sc->mlx_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~0, 1, RF_ACTIVE);
+ if (sc->mlx_mem == NULL) {
+ rid = MLX_CFG_BASE0;
+ sc->mlx_mem = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, 0, ~0, 1, RF_ACTIVE);
+ }
break;
case MLX_IFTYPE_4:
case MLX_IFTYPE_5:
rid = MLX_CFG_BASE0;
+ sc->mlx_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~0, 1, RF_ACTIVE);
break;
}
- sc->mlx_mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~0, 1, RF_ACTIVE);
if (sc->mlx_mem == NULL) {
device_printf(sc->mlx_dev, "couldn't allocate mailbox window\n");
mlx_free(sc);
OpenPOWER on IntegriCloud