summaryrefslogtreecommitdiff
path: root/sys/dev/ic/adw.h
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2000-06-29 00:04:33 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2000-06-29 00:04:33 +0000
commit18668e4eb3bcc3172992ccebe28df6e9a0ce9766 (patch)
treeb01d82c40a71ea9ba5a0c3dd319570df8f6c559f /sys/dev/ic/adw.h
parentb6672e65decb177eb46472fadc0ab109b79b8e66 (diff)
Sync adw files with (almost) latest NetBSD versions:
adw.c synched with v1.23 (from v1.14) adw.h v1.9 ( v1.5 ) adwlib.c v1.17 ( v1.7 ) adwlib.h v1.13 ( v1.7 ) adwmcode.c v1.5 ( v1.2 ) adwmcode.h v1.5 ( v1.2 ) microcode for cards is updated to latest version, loss of carrier problems are solved in a more robust manner than before, lots of code cleanup. first support for upcoming U3W cards added, as a result of which the driver is now too large for RAMDISK and has been moved to RAMDISKB. Most of the work done by dante@ NetBSD.
Diffstat (limited to 'sys/dev/ic/adw.h')
-rw-r--r--sys/dev/ic/adw.h59
1 files changed, 5 insertions, 54 deletions
diff --git a/sys/dev/ic/adw.h b/sys/dev/ic/adw.h
index 0012ddb0eb6..546fd34dfb6 100644
--- a/sys/dev/ic/adw.h
+++ b/sys/dev/ic/adw.h
@@ -1,5 +1,5 @@
-/* $OpenBSD: adw.h,v 1.4 2000/04/29 20:15:59 krw Exp $ */
-/* $NetBSD: adw.h,v 1.5 2000/02/03 20:29:15 dante Exp $ */
+/* $OpenBSD: adw.h,v 1.5 2000/06/29 00:04:31 krw Exp $ */
+/* $NetBSD: adw.h,v 1.9 2000/05/26 15:13:43 dante Exp $ */
/*
* Generic driver definitions and exported functions for the Advanced
@@ -49,47 +49,6 @@ typedef void (* ADW_ASYNC_CALLBACK) (ADW_SOFTC *, u_int8_t);
/*
- * Every adw_carrier structure _MUST_ always be aligned on a 16 bytes boundary
- */
-struct adw_carrier {
-/* ---------- the microcode wants the field below ---------- */
- u_int32_t unused; /* Carrier Virtual Address -UNUSED- */
- u_int32_t carr_pa; /* Carrier Physical Address */
- u_int32_t areq_vpa; /* ADW_SCSI_REQ_Q Physical Address */
- /*
- * next_vpa [31:4] Carrier Physical Next Pointer
- *
- * next_vpa [3:1] Reserved Bits
- * next_vpa [0] Done Flag set in Response Queue.
- */
- u_int32_t next_vpa;
-/* ---------- ---------- */
- struct adw_carrier *nexthash; /* Carrier Virtual Address */
-
- int id;
- /*
- * This DMA map maps the buffer involved in the carrier transfer.
- */
-// bus_dmamap_t dmamap_xfer;
-};
-
-typedef struct adw_carrier ADW_CARRIER;
-
-#define ADW_CARRIER_SIZE ((((int)((sizeof(ADW_CARRIER)-1)/16))+1)*16)
-
-
-/*
- * Mask used to eliminate low 4 bits of carrier 'next_vpa' field.
- */
-#define ASC_NEXT_VPA_MASK 0xFFFFFFF0
-
-#define ASC_RQ_DONE 0x00000001
-#define ASC_CQ_STOPPER 0x00000000
-
-#define ASC_GET_CARRP(carrp) ((carrp) & ASC_NEXT_VPA_MASK)
-
-
-/*
* per request scatter-gather element limit
* We could have up to 256 SG lists.
*/
@@ -110,8 +69,6 @@ struct adw_ccb {
ADW_SCSI_REQ_Q scsiq;
ADW_SG_BLOCK sg_block[ADW_NUM_SG_BLOCK];
- ADW_CARRIER *carr_list; /* carriers involved */
-
struct scsi_sense_data scsi_sense;
TAILQ_ENTRY(adw_ccb) chain;
@@ -122,6 +79,8 @@ struct adw_ccb {
int flags; /* see below */
int timeout;
+ struct timeout to;
+
/*
* This DMA map maps the buffer involved in the transfer.
*/
@@ -136,21 +95,14 @@ typedef struct adw_ccb ADW_CCB;
#define CCB_ABORTED 0x04
-#define ADW_MAX_CARRIER 20 /* Max. number of host commands (253) */
-#define ADW_MAX_CCB 16 /* Max. number commands per device (63) */
+#define ADW_MAX_CCB 63 /* Max. number commands per device (63) */
struct adw_control {
ADW_CCB ccbs[ADW_MAX_CCB]; /* all our control blocks */
ADW_CARRIER *carriers; /* all our carriers */
- bus_dmamap_t dmamap_xfer;
};
/*
- * Offset of a carrier from the beginning of the carriers DMA mapping.
- */
-#define ADW_CARRIER_ADDR(sc, x) ((sc)->sc_dmamap_carrier->dm_segs[0].ds_addr + \
- (((u_long)x) - ((u_long)(sc)->sc_control->carriers)))
-/*
* Offset of a CCB from the beginning of the control DMA mapping.
*/
#define ADW_CCB_OFF(c) (offsetof(struct adw_control, ccbs[0]) + \
@@ -162,7 +114,6 @@ int adw_init __P((ADW_SOFTC *sc));
void adw_attach __P((ADW_SOFTC *sc));
int adw_intr __P((void *arg));
ADW_CCB *adw_ccb_phys_kv __P((ADW_SOFTC *, u_int32_t));
-ADW_CARRIER *adw_carrier_phys_kv __P((ADW_SOFTC *, u_int32_t));
/******************************************************************************/