diff options
author | mdodd <mdodd@FreeBSD.org> | 2000-11-28 06:17:32 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2000-11-28 06:17:32 +0000 |
commit | 67b4379f04a36c31ca81b79bacd6649857bbb563 (patch) | |
tree | 2efe53028a9cf8d4d861067fcd389493d9866598 /sys/dev/mlx | |
parent | 51f405ec6ea3c70e9e867604bf429307817cb25c (diff) | |
download | FreeBSD-src-67b4379f04a36c31ca81b79bacd6649857bbb563.zip FreeBSD-src-67b4379f04a36c31ca81b79bacd6649857bbb563.tar.gz |
Avoid hardcoding the 'rid' and 'type' of the MEM/IOPORT resource.
Store the 'rid' and 'type' in the softc and use them in mlx.c:mlx_free().
EISA and MCA front ends will require this.
Approved by: msmith
Diffstat (limited to 'sys/dev/mlx')
-rw-r--r-- | sys/dev/mlx/mlx.c | 3 | ||||
-rw-r--r-- | sys/dev/mlx/mlx_pci.c | 17 | ||||
-rw-r--r-- | sys/dev/mlx/mlxvar.h | 2 |
3 files changed, 13 insertions, 9 deletions
diff --git a/sys/dev/mlx/mlx.c b/sys/dev/mlx/mlx.c index e5271c9..2a952eb 100644 --- a/sys/dev/mlx/mlx.c +++ b/sys/dev/mlx/mlx.c @@ -199,8 +199,7 @@ mlx_free(struct mlx_softc *sc) /* release the register window mapping */ if (sc->mlx_mem != NULL) - bus_release_resource(sc->mlx_dev, SYS_RES_MEMORY, - (sc->mlx_iftype == MLX_IFTYPE_3) ? MLX_CFG_BASE1 : MLX_CFG_BASE0, sc->mlx_mem); + bus_release_resource(sc->mlx_dev, sc->mlx_mem_type, sc->mlx_mem_rid, sc->mlx_mem); /* free controller enquiry data */ if (sc->mlx_enq2 != NULL) diff --git a/sys/dev/mlx/mlx_pci.c b/sys/dev/mlx/mlx_pci.c index 2a27048..84b07e7 100644 --- a/sys/dev/mlx/mlx_pci.c +++ b/sys/dev/mlx/mlx_pci.c @@ -114,7 +114,7 @@ static int mlx_pci_attach(device_t dev) { struct mlx_softc *sc; - int i, rid, error; + int i, error; u_int32_t command; debug_called(1); @@ -161,17 +161,20 @@ mlx_pci_attach(device_t dev) 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); + sc->mlx_mem_type = SYS_RES_MEMORY; + sc->mlx_mem_rid = MLX_CFG_BASE1; + sc->mlx_mem = bus_alloc_resource(dev, sc->mlx_mem_type, &sc->mlx_mem_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); + sc->mlx_mem_type = SYS_RES_IOPORT; + sc->mlx_mem_rid = MLX_CFG_BASE0; + sc->mlx_mem = bus_alloc_resource(dev, sc->mlx_mem_type, &sc->mlx_mem_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); + sc->mlx_mem_type = SYS_RES_MEMORY; + sc->mlx_mem_rid = MLX_CFG_BASE0; + sc->mlx_mem = bus_alloc_resource(dev, sc->mlx_mem_type, &sc->mlx_mem_rid, 0, ~0, 1, RF_ACTIVE); break; } if (sc->mlx_mem == NULL) { diff --git a/sys/dev/mlx/mlxvar.h b/sys/dev/mlx/mlxvar.h index edb1a85..06b0ffa 100644 --- a/sys/dev/mlx/mlxvar.h +++ b/sys/dev/mlx/mlxvar.h @@ -109,6 +109,8 @@ struct mlx_softc device_t mlx_dev; dev_t mlx_dev_t; struct resource *mlx_mem; /* mailbox interface window */ + int mlx_mem_rid; + int mlx_mem_type; bus_space_handle_t mlx_bhandle; /* bus space handle */ bus_space_tag_t mlx_btag; /* bus space tag */ bus_dma_tag_t mlx_parent_dmat;/* parent DMA tag */ |