summaryrefslogtreecommitdiffstats
path: root/sys/dev/buslogic/bt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/buslogic/bt.c')
-rw-r--r--sys/dev/buslogic/bt.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/dev/buslogic/bt.c b/sys/dev/buslogic/bt.c
index 5eed000..b0df0ce 100644
--- a/sys/dev/buslogic/bt.c
+++ b/sys/dev/buslogic/bt.c
@@ -492,12 +492,18 @@ bt_fetch_adapter_info(device_t dev)
bt->bios_addr = esetup_info.bios_addr << 12;
+ bt->mailbox_addrlimit = BUS_SPACE_MAXADDR;
if (esetup_info.bus_type == 'A'
&& bt->firmware_ver[0] == '2') {
snprintf(bt->model, sizeof(bt->model), "542B");
} else if (esetup_info.bus_type == 'E'
- && (strncmp(bt->firmware_ver, "2.1", 3) == 0
- || strncmp(bt->firmware_ver, "2.20", 4) == 0)) {
+ && bt->firmware_ver[0] == '2') {
+
+ /*
+ * The 742A seems to object if its mailboxes are
+ * allocated above the 16MB mark.
+ */
+ bt->mailbox_addrlimit = BUS_SPACE_MAXADDR_24BIT;
snprintf(bt->model, sizeof(bt->model), "742A");
} else if (esetup_info.bus_type == 'E'
&& bt->firmware_ver[0] == '0') {
@@ -720,7 +726,7 @@ bt_init(device_t dev)
bt->init_level++;
/* DMA tag for our mailboxes */
if (bus_dma_tag_create(bt->parent_dmat, /*alignment*/1, /*boundary*/0,
- /*lowaddr*/BUS_SPACE_MAXADDR,
+ /*lowaddr*/bt->mailbox_addrlimit,
/*highaddr*/BUS_SPACE_MAXADDR,
/*filter*/NULL, /*filterarg*/NULL,
bt->num_boxes * (sizeof(bt_mbox_in_t)
OpenPOWER on IntegriCloud