diff options
author | scottl <scottl@FreeBSD.org> | 2003-03-26 17:50:11 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2003-03-26 17:50:11 +0000 |
commit | d1aad9d09f03e87d7de8a4cd8c362fa7a0617007 (patch) | |
tree | 92e990283b189ad46204b84551373713cdfe2f3d /sys/dev/aac/aacvar.h | |
parent | 5fcb866f5f8ec0347da871e9bc413fbf92e9e51c (diff) | |
download | FreeBSD-src-d1aad9d09f03e87d7de8a4cd8c362fa7a0617007.zip FreeBSD-src-d1aad9d09f03e87d7de8a4cd8c362fa7a0617007.tar.gz |
Begin support for 64-bit address support and workarounds for newer cards:
- Add data structuress for doing 64-bit scatter/gather
- Move busdma tag creations around so that only the parent is
created in aac_pci.c.
- Retrieve the capabilities word from the firmware before setting
up command structures and tags. This allows the driver to decide
whether to do 64-bit commands, and if work-arounds are needed for
systems with >2GB of RAM.
- Only enable the SCSI passthrough if it's enabled in the capabilities
word in the firmware.
This should fix problems with the 2120S and 2200S cards in systems with more
than 2GB of RAM. Full 64-bit support is forthcoming.
MFC-After: 1 week
Diffstat (limited to 'sys/dev/aac/aacvar.h')
-rw-r--r-- | sys/dev/aac/aacvar.h | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/sys/dev/aac/aacvar.h b/sys/dev/aac/aacvar.h index 7ee8dc6..1d6ab15 100644 --- a/sys/dev/aac/aacvar.h +++ b/sys/dev/aac/aacvar.h @@ -223,7 +223,7 @@ struct aac_interface void (*aif_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); - int (*aif_get_mailboxstatus)(struct aac_softc *sc); + int (*aif_get_mailbox)(struct aac_softc *sc, int mb); void (*aif_set_interrupts)(struct aac_softc *sc, int enable); }; extern struct aac_interface aac_rx_interface; @@ -238,8 +238,8 @@ extern struct aac_interface aac_fa_interface; #define AAC_SET_MAILBOX(sc, command, arg0, arg1, arg2, arg3) \ ((sc)->aac_if.aif_set_mailbox((sc), (command), (arg0), (arg1), (arg2), \ (arg3))) -#define AAC_GET_MAILBOXSTATUS(sc) ((sc)->aac_if.aif_get_mailboxstatus( \ - (sc))) +#define AAC_GET_MAILBOX(sc, mb) ((sc)->aac_if.aif_get_mailbox((sc), \ + (mb))) #define AAC_MASK_INTERRUPTS(sc) ((sc)->aac_if.aif_set_interrupts((sc), \ 0)) #define AAC_UNMASK_INTERRUPTS(sc) ((sc)->aac_if.aif_set_interrupts((sc), \ @@ -357,12 +357,19 @@ struct aac_softc #define AAC_AIFFLAGS_ALLOCFIBS (1 << 5) #define AAC_AIFFLAGS_PENDING (AAC_AIFFLAGS_AIF | AAC_AIFFLAGS_PRINTF | \ AAC_AIFFLAGS_ALLOCFIBS) - u_int32_t quirks; -#define AAC_QUIRK_PERC2QC (1 << 0) -#define AAC_QUIRK_NOCAM (1 << 1) /* No SCSI passthrough */ -#define AAC_QUIRK_CAM_NORESET (1 << 2) /* Fake SCSI resets */ -#define AAC_QUIRK_CAM_PASSONLY (1 << 3) /* Only create pass devices */ - + u_int32_t flags; +#define AAC_FLAGS_PERC2QC (1 << 0) +#define AAC_FLAGS_ENABLE_CAM (1 << 1) /* No SCSI passthrough */ +#define AAC_FLAGS_CAM_NORESET (1 << 2) /* Fake SCSI resets */ +#define AAC_FLAGS_CAM_PASSONLY (1 << 3) /* Only create pass devices */ +#define AAC_FLAGS_SG_64BIT (1 << 4) /* Use 64-bit S/G addresses */ +#define AAC_FLAGS_4GB_WINDOW (1 << 5) /* Device can access host mem + * 2GB-4GB range */ +#define AAC_FLAGS_NO4GB (1 << 6) /* Can't access host mem >2GB */ +#define AAC_FLAGS_256FIBS (1 << 7) /* Can only do 256 commands */ + + u_int32_t supported_options; + int aac_max_fibs; u_int32_t scsi_method_id; TAILQ_HEAD(,aac_sim) aac_sim_tqh; }; |