Do not disable the ISA compatibility window if it is the same value as

that set for our PCI IO address space.  This can happen on the BT-946.
This commit is contained in:
Justin T. Gibbs 1998-10-30 02:06:44 +00:00
parent 4b3c37b2a8
commit 400ea5dc6a
4 changed files with 35 additions and 18 deletions

View file

@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: bt.c,v 1.6 1998/10/15 23:17:58 gibbs Exp $
* $Id: bt.c,v 1.7 1998/10/15 23:46:28 gibbs Exp $
*/
/*
@ -826,6 +826,12 @@ bt_check_probed_iop(u_int ioport)
return (1);
}
u_int
bt_fetch_isa_iop(isa_compat_io_t port)
{
return (bt_isa_ports[port].addr);
}
void
bt_mark_probed_bio(isa_compat_io_t port)
{

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: bt_pci.c,v 1.1 1998/09/15 07:32:57 gibbs Exp $
*/
#include "pci.h"
@ -110,7 +110,6 @@ bt_pci_probe (pcici_t config_id, pcidi_t type)
bus_space_handle_t bsh;
pci_info_data_t pci_info;
int error;
u_int8_t new_addr;
if (btpcideterminebusspace(config_id, &tag, &bsh) != 0)
break;
@ -122,7 +121,8 @@ bt_pci_probe (pcici_t config_id, pcidi_t type)
/*
* Determine if an ISA compatible I/O port has been
* enabled. If so, record the port so it will not
* be probed by our ISA probe, and disable the port.
* be probed by our ISA probe. If the PCI I/O port
* was not set to the compatibility port, disable it.
*/
error = bt_cmd(bt, BOP_INQUIRE_PCI_INFO,
/*param*/NULL, /*paramlen*/0,
@ -131,12 +131,17 @@ bt_pci_probe (pcici_t config_id, pcidi_t type)
if (error == 0
&& pci_info.io_port < BIO_DISABLED) {
bt_mark_probed_bio(pci_info.io_port);
}
if (bsh != bt_fetch_isa_iop(pci_info.io_port)) {
u_int8_t new_addr;
new_addr = BIO_DISABLED;
bt_cmd(bt, BOP_MODIFY_IO_ADDR, /*param*/&new_addr,
/*paramlen*/1, /*reply_buf*/NULL, /*reply_len*/0,
DEFAULT_CMD_TIMEOUT);
new_addr = BIO_DISABLED;
bt_cmd(bt, BOP_MODIFY_IO_ADDR,
/*param*/&new_addr,
/*paramlen*/1, /*reply_buf*/NULL,
/*reply_len*/0,
DEFAULT_CMD_TIMEOUT);
}
}
bt_free(bt);
return ("Buslogic Multimaster SCSI host adapter");
break;

View file

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: btreg.h,v 1.1 1998/09/15 07:32:49 gibbs Exp $
*/
#ifndef _BTREG_H_
@ -664,6 +664,7 @@ int bt_attach(struct bt_softc *bt);
void bt_intr(void *arg);
char * bt_name(struct bt_softc *bt);
int bt_check_probed_iop(u_int ioport);
u_int bt_fetch_isa_iop(isa_compat_io_t port);
void bt_mark_probed_bio(isa_compat_io_t port);
void bt_mark_probed_iop(u_int ioport);

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: bt_pci.c,v 1.1 1998/09/15 07:32:57 gibbs Exp $
*/
#include "pci.h"
@ -110,7 +110,6 @@ bt_pci_probe (pcici_t config_id, pcidi_t type)
bus_space_handle_t bsh;
pci_info_data_t pci_info;
int error;
u_int8_t new_addr;
if (btpcideterminebusspace(config_id, &tag, &bsh) != 0)
break;
@ -122,7 +121,8 @@ bt_pci_probe (pcici_t config_id, pcidi_t type)
/*
* Determine if an ISA compatible I/O port has been
* enabled. If so, record the port so it will not
* be probed by our ISA probe, and disable the port.
* be probed by our ISA probe. If the PCI I/O port
* was not set to the compatibility port, disable it.
*/
error = bt_cmd(bt, BOP_INQUIRE_PCI_INFO,
/*param*/NULL, /*paramlen*/0,
@ -131,12 +131,17 @@ bt_pci_probe (pcici_t config_id, pcidi_t type)
if (error == 0
&& pci_info.io_port < BIO_DISABLED) {
bt_mark_probed_bio(pci_info.io_port);
}
if (bsh != bt_fetch_isa_iop(pci_info.io_port)) {
u_int8_t new_addr;
new_addr = BIO_DISABLED;
bt_cmd(bt, BOP_MODIFY_IO_ADDR, /*param*/&new_addr,
/*paramlen*/1, /*reply_buf*/NULL, /*reply_len*/0,
DEFAULT_CMD_TIMEOUT);
new_addr = BIO_DISABLED;
bt_cmd(bt, BOP_MODIFY_IO_ADDR,
/*param*/&new_addr,
/*paramlen*/1, /*reply_buf*/NULL,
/*reply_len*/0,
DEFAULT_CMD_TIMEOUT);
}
}
bt_free(bt);
return ("Buslogic Multimaster SCSI host adapter");
break;