ahareg.h revision 122359
139225Sgibbs/* 2122359Simp * Generic register and struct definitions for the Adaptech 1540, 1542, 3122359Simp * 1640, 1642 SCSI host adapters. Product specific probe and attach 4122359Simp * routines can be found in: 5122359Simp * aha_isa.c, aha_mca.c 639225Sgibbs * 739225Sgibbs * Derived from bt.c written by: 839225Sgibbs * 939225Sgibbs * Copyright (c) 1998 Justin T. Gibbs. 1039225Sgibbs * All rights reserved. 1139225Sgibbs * 1239225Sgibbs * Redistribution and use in source and binary forms, with or without 1339225Sgibbs * modification, are permitted provided that the following conditions 1439225Sgibbs * are met: 1539225Sgibbs * 1. Redistributions of source code must retain the above copyright 1639225Sgibbs * notice, this list of conditions, and the following disclaimer, 1739225Sgibbs * without modification, immediately at the beginning of the file. 1839225Sgibbs * 2. The name of the author may not be used to endorse or promote products 1939225Sgibbs * derived from this software without specific prior written permission. 2039225Sgibbs * 2139225Sgibbs * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2239225Sgibbs * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2339225Sgibbs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2439225Sgibbs * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 2539225Sgibbs * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2639225Sgibbs * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2739225Sgibbs * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2839225Sgibbs * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2939225Sgibbs * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3039225Sgibbs * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3139225Sgibbs * SUCH DAMAGE. 3239225Sgibbs * 3350477Speter * $FreeBSD: head/sys/dev/aha/ahareg.h 122359 2003-11-09 17:05:55Z imp $ 3439225Sgibbs */ 3539225Sgibbs 3639225Sgibbs#ifndef _AHAREG_H_ 3739225Sgibbs#define _AHAREG_H_ 3839225Sgibbs 3939225Sgibbs#include <sys/queue.h> 4039225Sgibbs#include <cam/scsi/scsi_all.h> 4139225Sgibbs 4239225Sgibbs#define AHA_MAXTRANSFER_SIZE 0xffffff /* limited by 24bit counter */ 4339225Sgibbs#define AHA_NSEG 17 /* The number of dma segments 4439225Sgibbs * supported. */ 4539225Sgibbs#define ALL_TARGETS (~0) 4639225Sgibbs 4739225Sgibbs/* 4839225Sgibbs * Control Register pp. 1-8, 1-9 (Write Only) 4939225Sgibbs */ 5039225Sgibbs#define CONTROL_REG 0x00 5139225Sgibbs#define HARD_RESET 0x80 /* Hard Reset - return to POST state */ 5239225Sgibbs#define SOFT_RESET 0x40 /* Soft Reset - Clears Adapter state */ 5339225Sgibbs#define RESET_INTR 0x20 /* Reset/Ack Interrupt */ 5439225Sgibbs#define RESET_SBUS 0x10 /* Drive SCSI bus reset signal */ 5539225Sgibbs 5639225Sgibbs/* 5739225Sgibbs * Status Register pp. 1-9, 1-10 (Read Only) 5839225Sgibbs */ 5939225Sgibbs#define STATUS_REG 0x00 6039225Sgibbs#define DIAG_ACTIVE 0x80 /* Performing Internal Diags */ 6139225Sgibbs#define DIAG_FAIL 0x40 /* Internal Diags failed */ 6239225Sgibbs#define INIT_REQUIRED 0x20 /* MBOXes need initialization */ 6339225Sgibbs#define HA_READY 0x10 /* HA ready for new commands */ 6439225Sgibbs#define CMD_REG_BUSY 0x08 /* HA busy with last cmd byte */ 6539225Sgibbs#define DATAIN_REG_READY 0x04 /* Data-in Byte available */ 6639225Sgibbs#define STATUS_REG_RSVD 0x02 6739225Sgibbs#define CMD_INVALID 0x01 /* Invalid Command detected */ 6839225Sgibbs 6939225Sgibbs/* 7039225Sgibbs * Command/Parameter Register pp. 1-10, 1-11 (Write Only) 7139225Sgibbs */ 7239225Sgibbs#define COMMAND_REG 0x01 7339225Sgibbs 7439225Sgibbs/* 7539225Sgibbs * Data in Register p. 1-11 (Read Only) 7639225Sgibbs */ 7739225Sgibbs#define DATAIN_REG 0x01 7839225Sgibbs 7939225Sgibbs/* 8039225Sgibbs * Interrupt Status Register pp. 1-12 -> 1-14 (Read Only) 8139225Sgibbs */ 8239225Sgibbs#define INTSTAT_REG 0x02 8339225Sgibbs#define INTR_PENDING 0x80 /* There is a pending INTR */ 8439225Sgibbs#define INTSTAT_REG_RSVD 0x70 8539225Sgibbs#define SCSI_BUS_RESET 0x08 /* Bus Reset detected */ 8639225Sgibbs#define CMD_COMPLETE 0x04 8739225Sgibbs#define OMB_READY 0x02 /* Outgoin Mailbox Ready */ 8839225Sgibbs#define IMB_LOADED 0x01 /* Incoming Mailbox loaded */ 8939225Sgibbs 9039225Sgibbs/* 9139881Simp * Definitions for the "undocumented" geometry register, we just need 9239881Simp * its location. 9339225Sgibbs */ 9439225Sgibbs#define GEOMETRY_REG 0x03 9539225Sgibbs 9639225Sgibbs#define AHA_NREGS (4) 9739225Sgibbs 9839225Sgibbs/* 9939225Sgibbs * Opcodes for Adapter commands. 10039225Sgibbs */ 10139225Sgibbstypedef enum { 10241047Sgibbs AOP_NOP = 0x00, 10341047Sgibbs AOP_INITIALIZE_MBOX = 0x01, 10441047Sgibbs AOP_START_MBOX = 0x02, 10541047Sgibbs AOP_EXECUTE_BIOS_CMD = 0x03, 10641047Sgibbs AOP_INQUIRE_BOARD_ID = 0x04, 10741047Sgibbs AOP_ENABLE_OMBR_INT = 0x05, 10841047Sgibbs AOP_SET_SEL_TIMOUT = 0x06, 10941047Sgibbs AOP_SET_TIME_ON_BUS = 0x07, 11041047Sgibbs AOP_SET_TIME_OFF_BUS = 0x08, 11141047Sgibbs AOP_SET_BUS_TRANS_RATE = 0x09, 11241047Sgibbs AOP_INQUIRE_INST_LDEVS = 0x0A, 11341047Sgibbs AOP_INQUIRE_CONFIG = 0x0B, 11441047Sgibbs AOP_ENABLE_TARGET_MODE = 0x0C, 11541047Sgibbs AOP_INQUIRE_SETUP_INFO = 0x0D, 11641047Sgibbs AOP_WRITE_LRAM = 0x1A, 11741047Sgibbs AOP_READ_LRAM = 0x1B, 11841047Sgibbs AOP_WRITE_CHIP_FIFO = 0x1C, 11941047Sgibbs AOP_READ_CHIP_FIFO = 0x1D, 12041047Sgibbs AOP_ECHO_DATA_BYTE = 0x1F, 12141047Sgibbs AOP_ADAPTER_DIAGNOSTICS = 0x20, 12241047Sgibbs AOP_SET_ADAPTER_OPTIONS = 0x21, 12341047Sgibbs AOP_SET_EEPROM = 0x22, 12441047Sgibbs AOP_RETURN_EEPROM = 0x23, 12541047Sgibbs AOP_ENABLE_SHADOW_RAM = 0x24, 12641047Sgibbs AOP_INIT_BIOS_MBOX = 0x25, 12741047Sgibbs AOP_SET_BIOS_BANK_1 = 0x26, 12841047Sgibbs AOP_SET_BIOS_BANK_2 = 0x27, 12941047Sgibbs AOP_RETURN_EXT_BIOS_INFO= 0x28, 13041047Sgibbs AOP_MBOX_IF_ENABLE = 0x29, 13141047Sgibbs AOP_SCSI_TERM_STATUS = 0x2C, 13241047Sgibbs AOP_INQUIRE_SCAM_DEV = 0x2D, 13341047Sgibbs AOP_SCSI_DEV_TABLE = 0x2E, 13441047Sgibbs AOP_SCAM_OP = 0x2F, 13541047Sgibbs AOP_START_BIOS_CMD = 0x82, 13641047Sgibbs AOP_INQUIRE_ESETUP_INFO = 0x8D 13739225Sgibbs} aha_op_t; 13839225Sgibbs 13939225Sgibbs/************** Definitions of Multi-byte commands and responses ************/ 14039225Sgibbs 14139225Sgibbsstruct aha_extbios 14239225Sgibbs{ 143122340Simp uint8_t flags; /* Bit 3 == 1 extended bios enabled */ 144122340Simp uint8_t mailboxlock; /* mail box lock code to unlock it */ 14539225Sgibbs}; 14639225Sgibbs 14739225Sgibbstypedef struct { 148122340Simp uint8_t num_mboxes; 149122340Simp uint8_t base_addr[3]; 15039225Sgibbs} init_24b_mbox_params_t; 15139225Sgibbs 15239225Sgibbstypedef struct { 153122340Simp uint8_t board_type; 15439225Sgibbs/* These values are mostly from the aha-1540CP technical reference, but */ 15539881Simp/* with other values from the old aha1542.c driver. The values from the */ 15639881Simp/* aha-1540CP technical manual are used where conflicts arise */ 15739225Sgibbs#define BOARD_1540_16HEAD_BIOS 0x00 15839225Sgibbs#define BOARD_1540_64HEAD_BIOS 0x30 15939225Sgibbs#define BOARD_1542 0x41 /* aha-1540/1542 w/64-h bios */ 16039225Sgibbs#define BOARD_1640 0x42 /* aha-1640 */ 16139225Sgibbs#define BOARD_1740 0x43 /* aha-1740A/1742A/1744 */ 16239225Sgibbs#define BOARD_1542C 0x44 /* aha-1542C */ 16339225Sgibbs#define BOARD_1542CF 0x45 /* aha-1542CF */ 16439225Sgibbs#define BOARD_1542CP 0x46 /* aha-1542CP, plug and play */ 165122340Simp uint8_t cust_features; 16639225Sgibbs#define FEATURES_STANDARD 0x30 167122340Simp uint8_t firmware_rev_major; 168122340Simp uint8_t firmware_rev_minor; 16939225Sgibbs} board_id_data_t; 17039225Sgibbs 17139225Sgibbstypedef struct { 172122340Simp uint8_t dma_chan; 17339225Sgibbs#define DMA_CHAN_5 0x20 17439225Sgibbs#define DMA_CHAN_6 0x40 17539225Sgibbs#define DMA_CHAN_7 0x80 176122340Simp uint8_t irq; 17739225Sgibbs#define IRQ_9 0x01 17839225Sgibbs#define IRQ_10 0x02 17939225Sgibbs#define IRQ_11 0x04 18039225Sgibbs#define IRQ_12 0x08 18139225Sgibbs#define IRQ_14 0x20 18239225Sgibbs#define IRQ_15 0x40 183122340Simp uint8_t scsi_id; 18439225Sgibbs} config_data_t; 18539225Sgibbs 18639225Sgibbstypedef struct { 187122340Simp uint8_t enable; 18839225Sgibbs} target_mode_params_t; 18939225Sgibbs 19039225Sgibbstypedef struct { 191122340Simp uint8_t offset : 4, 19239225Sgibbs period : 3, 19339225Sgibbs sync : 1; 19439225Sgibbs} targ_syncinfo_t; 19539225Sgibbs 19639225Sgibbstypedef struct { 197122340Simp uint8_t initiate_sync : 1, 19839225Sgibbs parity_enable : 1, 19939225Sgibbs : 6; 20039225Sgibbs 201122340Simp uint8_t bus_transfer_rate; 202122340Simp uint8_t time_on_bus; 203122340Simp uint8_t time_off_bus; 204122340Simp uint8_t num_mboxes; 205122340Simp uint8_t mbox_base_addr[3]; 20639225Sgibbs targ_syncinfo_t syncinfo[8]; 207122340Simp uint8_t discinfo; 208122340Simp uint8_t customer_sig[20]; 209122340Simp uint8_t auto_retry; 210122340Simp uint8_t board_switches; 211122340Simp uint8_t firmware_cksum[2]; 212122340Simp uint8_t bios_mbox_addr[3]; 21339225Sgibbs} setup_data_t; 21439225Sgibbs 21539225Sgibbsstruct aha_isa_port { 216122340Simp uint16_t addr; 217122340Simp uint8_t bio; /* board IO offset */ 21839225Sgibbs}; 21939225Sgibbs 22039225Sgibbs#define AHA_NUM_ISAPORTS 6 22139225Sgibbs 22239225Sgibbstypedef enum { 22339225Sgibbs BIO_330 = 0, 22439225Sgibbs BIO_334 = 1, 22539225Sgibbs BIO_230 = 2, 22639225Sgibbs BIO_234 = 3, 22739225Sgibbs BIO_130 = 4, 22839225Sgibbs BIO_134 = 5, 22939225Sgibbs BIO_DISABLED = 6, 23039225Sgibbs BIO_DISABLED2 = 7 23139225Sgibbs} isa_compat_io_t; 23239225Sgibbs 23339225Sgibbstypedef struct { 234122340Simp uint8_t sync_rate[16]; /* Sync in 10ns units */ 23539225Sgibbs} target_sync_info_data_t; 23639225Sgibbs 23739225Sgibbstypedef struct { 238122340Simp uint8_t len[3]; 239122340Simp uint8_t addr[3]; 24039225Sgibbs} aha_sg_t; 24139225Sgibbs 24239225Sgibbs/********************** Mail Box definitions *******************************/ 24339225Sgibbs 24439225Sgibbstypedef enum { 24541047Sgibbs AMBO_FREE = 0x0, /* MBO intry is free */ 24641047Sgibbs AMBO_START = 0x1, /* MBO activate entry */ 24741047Sgibbs AMBO_ABORT = 0x2 /* MBO abort entry */ 24839225Sgibbs} aha_mbo_action_code_t; 24939225Sgibbs 25039225Sgibbstypedef struct aha_mbox_out { 251122340Simp uint8_t action_code; 252122340Simp uint8_t ccb_addr[3]; 25339225Sgibbs} aha_mbox_out_t; 25439225Sgibbs 25539225Sgibbstypedef enum { 25641047Sgibbs AMBI_FREE = 0x0, /* MBI entry is free */ 25741047Sgibbs AMBI_OK = 0x1, /* completed without error */ 25841047Sgibbs AMBI_ABORT = 0x2, /* aborted ccb */ 25941047Sgibbs AMBI_NOT_FOUND = 0x3, /* Tried to abort invalid CCB */ 26041047Sgibbs AMBI_ERROR = 0x4 /* Completed with error */ 26139225Sgibbs} aha_mbi_comp_code_t; 26239225Sgibbs 26339225Sgibbstypedef struct aha_mbox_in { 264122340Simp uint8_t comp_code; 265122340Simp uint8_t ccb_addr[3]; 26639225Sgibbs} aha_mbox_in_t; 26739225Sgibbs 26839225Sgibbs/****************** Hardware CCB definition *********************************/ 26939225Sgibbstypedef enum { 27039225Sgibbs INITIATOR_CCB = 0x00, 27139225Sgibbs INITIATOR_SG_CCB = 0x02, 27239225Sgibbs INITIATOR_CCB_WRESID = 0x03, 27339225Sgibbs INITIATOR_SG_CCB_WRESID = 0x04, 27439225Sgibbs INITIATOR_BUS_DEV_RESET = 0x81 27539225Sgibbs} aha_ccb_opcode_t; 27639225Sgibbs 27739225Sgibbstypedef enum { 27839225Sgibbs AHASTAT_NOERROR = 0x00, 27939225Sgibbs AHASTAT_SELTIMEOUT = 0x11, 28039225Sgibbs AHASTAT_DATARUN_ERROR = 0x12, 28139225Sgibbs AHASTAT_UNEXPECTED_BUSFREE = 0x13, 28239225Sgibbs AHASTAT_INVALID_PHASE = 0x14, 28339225Sgibbs AHASTAT_INVALID_ACTION_CODE = 0x15, 28439225Sgibbs AHASTAT_INVALID_OPCODE = 0x16, 28539225Sgibbs AHASTAT_LINKED_CCB_LUN_MISMATCH = 0x17, 28639225Sgibbs AHASTAT_INVALID_CCB_OR_SG_PARAM = 0x1A, 28739225Sgibbs AHASTAT_HA_SCSI_BUS_RESET = 0x22, /* stolen from bt */ 28839225Sgibbs AHASTAT_HA_BDR = 0x25 /* Stolen from bt */ 28939225Sgibbs} ahastat_t; 29039225Sgibbs 29139225Sgibbsstruct aha_hccb { 292122340Simp uint8_t opcode; /* 0 */ 293122340Simp uint8_t lun : 3, /* 1 */ 29439225Sgibbs datain : 1, 29539225Sgibbs dataout : 1, 29639225Sgibbs target : 3; 297122340Simp uint8_t cmd_len; /* 2 */ 298122340Simp uint8_t sense_len; /* 3 */ 299122340Simp uint8_t data_len[3]; /* 4 */ 300122340Simp uint8_t data_addr[3]; /* 7 */ 301122340Simp uint8_t link_ptr[3]; /* 10 */ 302122340Simp uint8_t link_id; /* 13 */ 303122340Simp uint8_t ahastat; /* 14 */ 304122340Simp uint8_t sdstat; /* 15 */ 305122340Simp uint8_t reserved1; /* 16 */ 306122340Simp uint8_t reserved2; /* 17 */ 307122340Simp uint8_t scsi_cdb[16]; /* 18 */ 308122340Simp uint8_t sense_data[SSD_FULL_SIZE]; 30939225Sgibbs}; 31039225Sgibbs 31139225Sgibbstypedef enum { 31241047Sgibbs ACCB_FREE = 0x0, 31341047Sgibbs ACCB_ACTIVE = 0x1, 31441047Sgibbs ACCB_DEVICE_RESET = 0x2, 31541047Sgibbs ACCB_RELEASE_SIMQ = 0x4 31641047Sgibbs} accb_flags_t; 31739225Sgibbs 31839225Sgibbsstruct aha_ccb { 31939225Sgibbs struct aha_hccb hccb; /* hccb assumed to be at 0 */ 32060938Sjake SLIST_ENTRY(aha_ccb) links; 321122340Simp uint32_t flags; 32239225Sgibbs union ccb *ccb; 32339225Sgibbs bus_dmamap_t dmamap; 32439225Sgibbs aha_sg_t *sg_list; 325122340Simp uint32_t sg_list_phys; 32639225Sgibbs}; 32739225Sgibbs 32839225Sgibbsstruct sg_map_node { 32939225Sgibbs bus_dmamap_t sg_dmamap; 33039225Sgibbs bus_addr_t sg_physaddr; 33139225Sgibbs aha_sg_t* sg_vaddr; 33260938Sjake SLIST_ENTRY(sg_map_node) links; 33339225Sgibbs}; 33439225Sgibbs 33539225Sgibbsstruct aha_softc { 33639225Sgibbs bus_space_tag_t tag; 33739225Sgibbs bus_space_handle_t bsh; 33839225Sgibbs struct cam_sim *sim; 33939225Sgibbs struct cam_path *path; 34039225Sgibbs aha_mbox_out_t *cur_outbox; 34139225Sgibbs aha_mbox_in_t *cur_inbox; 34239225Sgibbs aha_mbox_out_t *last_outbox; 34339225Sgibbs aha_mbox_in_t *last_inbox; 34439225Sgibbs struct aha_ccb *aha_ccb_array; 34560938Sjake SLIST_HEAD(,aha_ccb) free_aha_ccbs; 34660938Sjake LIST_HEAD(,ccb_hdr) pending_ccbs; 34741047Sgibbs u_int active_ccbs; 348122340Simp uint32_t aha_ccb_physbase; 34942887Simp aha_ccb_opcode_t ccb_sg_opcode; 35042887Simp aha_ccb_opcode_t ccb_ccb_opcode; 35139225Sgibbs aha_mbox_in_t *in_boxes; 35239225Sgibbs aha_mbox_out_t *out_boxes; 35339225Sgibbs struct scsi_sense_data *sense_buffers; 354122340Simp uint32_t sense_buffers_physbase; 35541047Sgibbs struct aha_ccb *recovery_accb; 35639225Sgibbs u_int num_boxes; 35739225Sgibbs bus_dma_tag_t parent_dmat; /* 35839225Sgibbs * All dmat's derive from 35939225Sgibbs * the dmat defined by our 36039225Sgibbs * bus. 36139225Sgibbs */ 36239225Sgibbs bus_dma_tag_t buffer_dmat; /* dmat for buffer I/O */ 36339225Sgibbs bus_dma_tag_t mailbox_dmat; /* dmat for our mailboxes */ 36439225Sgibbs bus_dmamap_t mailbox_dmamap; 36539225Sgibbs bus_dma_tag_t ccb_dmat; /* dmat for our ccb array */ 36639225Sgibbs bus_dmamap_t ccb_dmamap; 36739225Sgibbs bus_dma_tag_t sg_dmat; /* dmat for our sg maps */ 36860938Sjake SLIST_HEAD(, sg_map_node) sg_maps; 36939225Sgibbs bus_addr_t mailbox_physbase; 37039225Sgibbs u_int num_ccbs; /* Number of CCBs malloc'd */ 37139225Sgibbs u_int max_ccbs; /* Maximum allocatable CCBs */ 37239225Sgibbs u_int max_sg; 37339225Sgibbs u_int unit; 37439225Sgibbs u_int scsi_id; 375122340Simp uint32_t extended_trans :1, 37639225Sgibbs diff_bus :1, 37739225Sgibbs extended_lun :1, 37839225Sgibbs strict_rr :1, 37939225Sgibbs tag_capable :1, 38039225Sgibbs resource_shortage:1, 38139852Simp :26; 382122340Simp uint16_t disc_permitted; 383122340Simp uint16_t sync_permitted; 384122340Simp uint8_t init_level; 385122340Simp volatile uint8_t command_cmp; 386122340Simp volatile uint8_t latched_status; 387122340Simp uint32_t bios_addr; 388122340Simp uint8_t fw_major; 389122340Simp uint8_t fw_minor; 39039225Sgibbs char model[32]; 391122340Simp uint8_t boardid; 39256504Simp struct resource *irq; 39356504Simp int irqrid; 39456504Simp struct resource *port; 39556504Simp int portrid; 39656504Simp struct resource *drq; 39756504Simp int drqrid; 39856504Simp void **ih; 39939225Sgibbs}; 40039225Sgibbs 40139225Sgibbsextern struct aha_softc *aha_softcs[]; /* XXX Config should handle this */ 40239225Sgibbsextern u_long aha_unit; 40339225Sgibbs 40439225Sgibbs#define AHA_TEMP_UNIT 0xFF /* Unit for probes */ 40556504Simpstruct aha_softc* aha_alloc(int, bus_space_tag_t, bus_space_handle_t); 40656504Simpint aha_attach(struct aha_softc *); 407122340Simpint aha_cmd(struct aha_softc *, aha_op_t, uint8_t *, 408122340Simp u_int, uint8_t *, u_int, u_int); 40956504Simpint aha_detach(struct aha_softc *); 41056504Simpint aha_fetch_adapter_info(struct aha_softc *); 41156504Simpvoid aha_find_probe_range(int, int *, int *); 41256504Simpvoid aha_free(struct aha_softc *); 41356504Simpint aha_init(struct aha_softc *); 41456504Simpvoid aha_intr(void *); 41556504Simpint aha_iop_from_bio(isa_compat_io_t); 41656504Simpchar * aha_name(struct aha_softc *); 41756504Simpint aha_probe(struct aha_softc *); 41839225Sgibbs 41939225Sgibbs#define DEFAULT_CMD_TIMEOUT 10000 /* 1 sec */ 42039225Sgibbs 42139225Sgibbs#define aha_inb(aha, port) \ 42239225Sgibbs bus_space_read_1((aha)->tag, (aha)->bsh, port) 42339225Sgibbs 42439225Sgibbs#define aha_outb(aha, port, value) \ 42539225Sgibbs bus_space_write_1((aha)->tag, (aha)->bsh, port, value) 42639225Sgibbs 42758544Simp#define ADP0100_PNP 0x00019004 /* ADP0100 */ 42858544Simp#define AHA1540_PNP 0x40159004 /* ADP1540 */ 42942887Simp#define AHA1542_PNP 0x42159004 /* ADP1542 */ 43042887Simp#define AHA1542_PNPCOMPAT 0xA000D040 /* PNP00A0 */ 43158544Simp#define ICU0091_PNP 0X91005AA4 /* ICU0091 */ 43242887Simp 43339225Sgibbs#endif /* _AHA_H_ */ 434