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
This commit is contained in:
Matthew N. Dodd 2000-11-28 06:17:32 +00:00
parent c669d6a002
commit 9b11c7ba44
3 changed files with 13 additions and 9 deletions

View File

@ -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)

View File

@ -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) {

View File

@ -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 */