diff options
author | msmith <msmith@FreeBSD.org> | 2000-08-04 06:52:00 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 2000-08-04 06:52:00 +0000 |
commit | a4b7e979513d3f0f8cf8b2a3cfe1fa280931a1d1 (patch) | |
tree | bf6bd7b184766045598781c23cf11026156f4728 /sys | |
parent | 0b697dfdc6e1be4175c9c84fe306374e3fcfc7e1 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/dev/mlx/mlx.c | 2 | ||||
-rw-r--r-- | sys/dev/mlx/mlx_pci.c | 9 |
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); |