aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2010-03-29 00:30:44 +0000
committerEd Maste <emaste@FreeBSD.org>2010-03-29 00:30:44 +0000
commit171dfe111d0a03a13c4a1dfefd1b37c628162e5b (patch)
tree13a888fabbb034c3c8f3e1db24c8a32bb8788565 /sys/dev
parent436405f5222234e1494d87108954d7f0b026a3eb (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/aac/aac.c129
-rw-r--r--sys/dev/aac/aac_cam.c18
-rw-r--r--sys/dev/aac/aac_pci.c4
-rw-r--r--sys/dev/aac/aacreg.h22
-rw-r--r--sys/dev/aac/aacvar.h11
5 files changed, 35 insertions, 149 deletions
diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c
index 9d7ed6ba568e..3d9ae7223d03 100644
--- a/sys/dev/aac/aac.c
+++ b/sys/dev/aac/aac.c
@@ -33,7 +33,6 @@ __FBSDID("$FreeBSD$");
/*
* Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
*/
-#define AAC_DRIVER_VERSION 0x02000000
#define AAC_DRIVERNAME "aac"
#include "opt_aac.h"
@@ -107,28 +106,6 @@ static int aac_dequeue_fib(struct aac_softc *sc, int queue,
static int aac_enqueue_response(struct aac_softc *sc, int queue,
struct aac_fib *fib);
-/* Falcon/PPC interface */
-static int aac_fa_get_fwstatus(struct aac_softc *sc);
-static void aac_fa_qnotify(struct aac_softc *sc, int qbit);
-static int aac_fa_get_istatus(struct aac_softc *sc);
-static void aac_fa_clear_istatus(struct aac_softc *sc, int mask);
-static void aac_fa_set_mailbox(struct aac_softc *sc, u_int32_t command,
- u_int32_t arg0, u_int32_t arg1,
- u_int32_t arg2, u_int32_t arg3);
-static int aac_fa_get_mailbox(struct aac_softc *sc, int mb);
-static void aac_fa_set_interrupts(struct aac_softc *sc, int enable);
-
-struct aac_interface aac_fa_interface = {
- aac_fa_get_fwstatus,
- aac_fa_qnotify,
- aac_fa_get_istatus,
- aac_fa_clear_istatus,
- aac_fa_set_mailbox,
- aac_fa_get_mailbox,
- aac_fa_set_interrupts,
- NULL, NULL, NULL
-};
-
/* StrongARM interface */
static int aac_sa_get_fwstatus(struct aac_softc *sc);
static void aac_sa_qnotify(struct aac_softc *sc, int qbit);
@@ -2374,8 +2351,9 @@ aac_timeout(struct aac_softc *sc)
/* && !(cm->cm_flags & AAC_CMD_TIMEDOUT) */) {
cm->cm_flags |= AAC_CMD_TIMEDOUT;
device_printf(sc->aac_dev,
- "COMMAND %p TIMEOUT AFTER %d SECONDS\n",
- cm, (int)(time_uptime-cm->cm_timestamp));
+ "COMMAND %p (TYPE %d) TIMEOUT AFTER %d SECONDS\n",
+ cm, cm->cm_fib->Header.Command,
+ (int)(time_uptime-cm->cm_timestamp));
AAC_PRINT_FIB(sc, cm->cm_fib);
timedout++;
}
@@ -2416,17 +2394,6 @@ aac_rx_get_fwstatus(struct aac_softc *sc)
}
static int
-aac_fa_get_fwstatus(struct aac_softc *sc)
-{
- int val;
-
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
-
- val = AAC_MEM0_GETREG4(sc, AAC_FA_FWSTATUS);
- return (val);
-}
-
-static int
aac_rkt_get_fwstatus(struct aac_softc *sc)
{
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
@@ -2456,15 +2423,6 @@ aac_rx_qnotify(struct aac_softc *sc, int qbit)
}
static void
-aac_fa_qnotify(struct aac_softc *sc, int qbit)
-{
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
-
- AAC_MEM0_SETREG2(sc, AAC_FA_DOORBELL1, qbit);
- AAC_FA_HACK(sc);
-}
-
-static void
aac_rkt_qnotify(struct aac_softc *sc, int qbit)
{
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
@@ -2492,17 +2450,6 @@ aac_rx_get_istatus(struct aac_softc *sc)
}
static int
-aac_fa_get_istatus(struct aac_softc *sc)
-{
- int val;
-
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
-
- val = AAC_MEM0_GETREG2(sc, AAC_FA_DOORBELL0);
- return (val);
-}
-
-static int
aac_rkt_get_istatus(struct aac_softc *sc)
{
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
@@ -2530,15 +2477,6 @@ aac_rx_clear_istatus(struct aac_softc *sc, int mask)
}
static void
-aac_fa_clear_istatus(struct aac_softc *sc, int mask)
-{
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
-
- AAC_MEM0_SETREG2(sc, AAC_FA_DOORBELL0_CLEAR, mask);
- AAC_FA_HACK(sc);
-}
-
-static void
aac_rkt_clear_istatus(struct aac_softc *sc, int mask)
{
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
@@ -2576,24 +2514,6 @@ aac_rx_set_mailbox(struct aac_softc *sc, u_int32_t command,
}
static void
-aac_fa_set_mailbox(struct aac_softc *sc, u_int32_t command,
- u_int32_t arg0, u_int32_t arg1, u_int32_t arg2, u_int32_t arg3)
-{
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
-
- AAC_MEM1_SETREG4(sc, AAC_FA_MAILBOX, command);
- AAC_FA_HACK(sc);
- AAC_MEM1_SETREG4(sc, AAC_FA_MAILBOX + 4, arg0);
- AAC_FA_HACK(sc);
- AAC_MEM1_SETREG4(sc, AAC_FA_MAILBOX + 8, arg1);
- AAC_FA_HACK(sc);
- AAC_MEM1_SETREG4(sc, AAC_FA_MAILBOX + 12, arg2);
- AAC_FA_HACK(sc);
- AAC_MEM1_SETREG4(sc, AAC_FA_MAILBOX + 16, arg3);
- AAC_FA_HACK(sc);
-}
-
-static void
aac_rkt_set_mailbox(struct aac_softc *sc, u_int32_t command, u_int32_t arg0,
u_int32_t arg1, u_int32_t arg2, u_int32_t arg3)
{
@@ -2626,17 +2546,6 @@ aac_rx_get_mailbox(struct aac_softc *sc, int mb)
}
static int
-aac_fa_get_mailbox(struct aac_softc *sc, int mb)
-{
- int val;
-
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
-
- val = AAC_MEM1_GETREG4(sc, AAC_FA_MAILBOX + (mb * 4));
- return (val);
-}
-
-static int
aac_rkt_get_mailbox(struct aac_softc *sc, int mb)
{
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
@@ -2675,20 +2584,6 @@ aac_rx_set_interrupts(struct aac_softc *sc, int enable)
}
static void
-aac_fa_set_interrupts(struct aac_softc *sc, int enable)
-{
- fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "%sable interrupts", enable ? "en" : "dis");
-
- if (enable) {
- AAC_MEM0_SETREG2((sc), AAC_FA_MASK0_CLEAR, AAC_DB_INTERRUPTS);
- AAC_FA_HACK(sc);
- } else {
- AAC_MEM0_SETREG2((sc), AAC_FA_MASK0, ~0);
- AAC_FA_HACK(sc);
- }
-}
-
-static void
aac_rkt_set_interrupts(struct aac_softc *sc, int enable)
{
fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "%sable interrupts", enable ? "en" : "dis");
@@ -2871,10 +2766,8 @@ aac_describe_controller(struct aac_softc *sc)
}
device_printf(sc->aac_dev, "%s, aac driver %d.%d.%d-%d\n",
adapter_type,
- AAC_DRIVER_VERSION >> 24,
- (AAC_DRIVER_VERSION >> 16) & 0xFF,
- AAC_DRIVER_VERSION & 0xFF,
- AAC_DRIVER_BUILD);
+ AAC_DRIVER_MAJOR_VERSION, AAC_DRIVER_MINOR_VERSION,
+ AAC_DRIVER_BUGFIX_LEVEL, AAC_DRIVER_BUILD);
aac_release_sync_fib(sc);
mtx_unlock(&sc->aac_io_lock);
@@ -3359,10 +3252,16 @@ aac_rev_check(struct aac_softc *sc, caddr_t udata)
* Doctor up the response struct.
*/
rev_check_resp.possiblyCompatible = 1;
- rev_check_resp.adapterSWRevision.external.ul =
- sc->aac_revision.external.ul;
+ rev_check_resp.adapterSWRevision.external.comp.major =
+ AAC_DRIVER_MAJOR_VERSION;
+ rev_check_resp.adapterSWRevision.external.comp.minor =
+ AAC_DRIVER_MINOR_VERSION;
+ rev_check_resp.adapterSWRevision.external.comp.type =
+ AAC_DRIVER_TYPE;
+ rev_check_resp.adapterSWRevision.external.comp.dash =
+ AAC_DRIVER_BUGFIX_LEVEL;
rev_check_resp.adapterSWRevision.buildNumber =
- sc->aac_revision.buildNumber;
+ AAC_DRIVER_BUILD;
return(copyout((caddr_t)&rev_check_resp, udata,
sizeof(struct aac_rev_check_resp)));
diff --git a/sys/dev/aac/aac_cam.c b/sys/dev/aac/aac_cam.c
index 827ce8e51c51..c1164aa2d3f9 100644
--- a/sys/dev/aac/aac_cam.c
+++ b/sys/dev/aac/aac_cam.c
@@ -211,7 +211,7 @@ aac_cam_action(struct cam_sim *sim, union ccb *ccb)
{
struct aac_cam *camsc;
struct aac_softc *sc;
- struct aac_srb32 *srb;
+ struct aac_srb *srb;
struct aac_fib *fib;
struct aac_command *cm;
@@ -354,7 +354,7 @@ aac_cam_action(struct cam_sim *sim, union ccb *ccb)
}
fib = cm->cm_fib;
- srb = (struct aac_srb32 *)&fib->data[0];
+ srb = (struct aac_srb *)&fib->data[0];
cm->cm_datalen = 0;
switch (ccb->ccb_h.flags & CAM_DIR_MASK) {
@@ -405,10 +405,10 @@ aac_cam_action(struct cam_sim *sim, union ccb *ccb)
if (ccb->ccb_h.flags & CAM_DATA_PHYS) {
/* Send a 32bit command */
fib->Header.Command = ScsiPortCommand;
- srb->sg_map32.SgCount = 1;
- srb->sg_map32.SgEntry[0].SgAddress =
+ srb->sg_map.SgCount = 1;
+ srb->sg_map.SgEntry[0].SgAddress =
(uint32_t)(uintptr_t)csio->data_ptr;
- srb->sg_map32.SgEntry[0].SgByteCount =
+ srb->sg_map.SgEntry[0].SgByteCount =
csio->dxfer_len;
} else {
/*
@@ -417,15 +417,15 @@ aac_cam_action(struct cam_sim *sim, union ccb *ccb)
*/
cm->cm_data = (void *)csio->data_ptr;
cm->cm_datalen = csio->dxfer_len;
- cm->cm_sgtable = &srb->sg_map32;
+ cm->cm_sgtable = &srb->sg_map;
}
} else {
/* XXX Need to handle multiple s/g elements */
panic("aac_cam: multiple s/g elements");
}
} else {
- srb->sg_map32.SgCount = 0;
- srb->sg_map32.SgEntry[0].SgByteCount = 0;
+ srb->sg_map.SgCount = 0;
+ srb->sg_map.SgEntry[0].SgByteCount = 0;
srb->data_len = 0;
}
@@ -461,7 +461,7 @@ aac_cam_action(struct cam_sim *sim, union ccb *ccb)
AAC_FIBSTATE_REXPECTED |
AAC_FIBSTATE_NORM;
fib->Header.Size = sizeof(struct aac_fib_header) +
- sizeof(struct aac_srb32);
+ sizeof(struct aac_srb);
aac_enqueue_ready(cm);
aac_startio(cm->cm_sc);
diff --git a/sys/dev/aac/aac_pci.c b/sys/dev/aac/aac_pci.c
index 17731a8032c2..bc993791f8ba 100644
--- a/sys/dev/aac/aac_pci.c
+++ b/sys/dev/aac/aac_pci.c
@@ -435,10 +435,6 @@ aac_pci_attach(device_t dev)
fwprintf(sc, HBA_FLAGS_DBG_INIT_B, "set hardware up for StrongARM");
sc->aac_if = aac_sa_interface;
break;
- case AAC_HWIF_FALCON:
- fwprintf(sc, HBA_FLAGS_DBG_INIT_B, "set hardware up for Falcon/PPC");
- sc->aac_if = aac_fa_interface;
- break;
case AAC_HWIF_RKT:
fwprintf(sc, HBA_FLAGS_DBG_INIT_B, "set hardware up for Rocket/MIPS");
sc->aac_if = aac_rkt_interface;
diff --git a/sys/dev/aac/aacreg.h b/sys/dev/aac/aacreg.h
index db96ff206d94..5c849664a476 100644
--- a/sys/dev/aac/aacreg.h
+++ b/sys/dev/aac/aacreg.h
@@ -1363,7 +1363,7 @@ struct aac_close_command {
/*
* SCSI Passthrough structures
*/
-struct aac_srb32 {
+struct aac_srb {
u_int32_t function;
u_int32_t bus;
u_int32_t target;
@@ -1374,7 +1374,7 @@ struct aac_srb32 {
u_int32_t retry_limit;
u_int32_t cdb_len;
u_int8_t cdb[16];
- struct aac_sg_table sg_map32;
+ struct aac_sg_table sg_map;
};
enum {
@@ -1453,24 +1453,6 @@ enum {
};
/*
- * Register set for adapters based on the Falcon bridge and PPC core
- */
-
-#define AAC_FA_DOORBELL0_CLEAR 0x00
-#define AAC_FA_DOORBELL1_CLEAR 0x02
-#define AAC_FA_DOORBELL0 0x04
-#define AAC_FA_DOORBELL1 0x06
-#define AAC_FA_MASK0_CLEAR 0x08
-#define AAC_FA_MASK1_CLEAR 0x0a
-#define AAC_FA_MASK0 0x0c
-#define AAC_FA_MASK1 0x0e
-#define AAC_FA_MAILBOX 0x10
-#define AAC_FA_FWSTATUS 0x2c /* Mailbox 7 */
-#define AAC_FA_INTSRC 0x900
-
-#define AAC_FA_HACK(sc) (void)AAC_MEM0_GETREG4(sc, AAC_FA_INTSRC)
-
-/*
* Register definitions for the Adaptec AAC-364 'Jalapeno I/II' adapters, based
* on the SA110 'StrongArm'.
*/
diff --git a/sys/dev/aac/aacvar.h b/sys/dev/aac/aacvar.h
index 3f9714d07c68..3ecb262ca7eb 100644
--- a/sys/dev/aac/aacvar.h
+++ b/sys/dev/aac/aacvar.h
@@ -37,6 +37,16 @@
#include <sys/selinfo.h>
#include <geom/geom_disk.h>
+#define AAC_TYPE_DEVO 1
+#define AAC_TYPE_ALPHA 2
+#define AAC_TYPE_BETA 3
+#define AAC_TYPE_RELEASE 4
+
+#define AAC_DRIVER_MAJOR_VERSION 2
+#define AAC_DRIVER_MINOR_VERSION 1
+#define AAC_DRIVER_BUGFIX_LEVEL 9
+#define AAC_DRIVER_TYPE AAC_TYPE_RELEASE
+
#ifndef AAC_DRIVER_BUILD
# define AAC_DRIVER_BUILD 1
#endif
@@ -319,7 +329,6 @@ struct aac_softc
int aac_hwif;
#define AAC_HWIF_I960RX 0
#define AAC_HWIF_STRONGARM 1
-#define AAC_HWIF_FALCON 2
#define AAC_HWIF_RKT 3
#define AAC_HWIF_NARK 4
#define AAC_HWIF_UNKNOWN -1