667 lines
18 KiB
C
667 lines
18 KiB
C
/*
|
|
* @(#)ipdev.h 1.1 94/10/31 Copyright (c) 1988 by Sun Microsystems, Inc.
|
|
*
|
|
*/
|
|
#ifndef _IPIPKT
|
|
#define _IPIPKT_
|
|
|
|
#define IPI3PKTLEN 64
|
|
/*
|
|
* Define all the IPI-3 commands and parameters
|
|
* (EVERYTHING HARDWARE SPECIFIC COMES HERE)
|
|
*/
|
|
|
|
/*****************************************
|
|
* I P I - 3 P A C K E T I N F O
|
|
*****************************************/
|
|
|
|
|
|
/************************
|
|
* P A R A M E T E R S
|
|
************************/
|
|
|
|
/*
|
|
* NOTE:
|
|
* Substatus parameters can have one of two parameter IDs, depending
|
|
* on whether a controller or a facility is being referred to. The form
|
|
* for the ID is 'xN' where x is 1 if the status refers to a controller,
|
|
* 2 if it refers to a facility. For example, the intervention required
|
|
* parameter ID is 0x12 if a command couldn't be completed because
|
|
* the controller needs help, or 0x22 if the facility was at fault.
|
|
*/
|
|
|
|
/*
|
|
* Diagnostic Exception (0x12 or 0x22). An error has occured during
|
|
* on-board diagnostics. Bit defs below.
|
|
*/
|
|
struct diag_excep_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char status[2];
|
|
u_char reservd[2];
|
|
};
|
|
|
|
/*
|
|
* Intervention Required (0x14 or 0x24). The controller is unable to
|
|
* respond and intervention is required before it will be able to.
|
|
*/
|
|
struct interv_rqd_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char status;
|
|
u_char reservd[3];
|
|
};
|
|
|
|
/*
|
|
* Alternate Port Exception (0x15 or 0x25). The slave or facility
|
|
* has detected an event from an alternate port.
|
|
*/
|
|
struct altport_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char status;
|
|
u_char reservd[2];
|
|
};
|
|
|
|
/*
|
|
* Machine Exception (0x16 or 0x26). An unusual hardware condition
|
|
* has been detected on a controller or facility.
|
|
*/
|
|
struct machexcp_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char status[4];
|
|
u_char ext_status;
|
|
u_char reservd;
|
|
};
|
|
|
|
/*
|
|
* Command Exception (0x17 or 0x27). Exceptions relating to command
|
|
* processing.
|
|
*/
|
|
struct cmdexcep_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char status[4];
|
|
u_char ext_status;
|
|
u_char reservd;
|
|
};
|
|
|
|
/*
|
|
* Conditional Success (0x17 or 0x27). The command succeeded, but
|
|
* additional information is available (e.g. retries were done).
|
|
*/
|
|
struct condsucc_parm {
|
|
short pad;
|
|
u_char len;
|
|
u_char id;
|
|
u_char status[4];
|
|
u_char ext_status;
|
|
u_char reservd;
|
|
};
|
|
|
|
/*
|
|
* Transfer Notification Parm (0x30). Holds the read/write
|
|
* buffer address in DVMA space.
|
|
*/
|
|
struct xnote_parm {
|
|
short pad;
|
|
u_char len;
|
|
u_char id;
|
|
caddr_t bufadr; /* DVMA buffer address */
|
|
};
|
|
|
|
/*
|
|
* Command Extent Parm (0x31). Defines the tranfer count and start address
|
|
* (expressed as a logical block offset from the start of the disk)
|
|
* for the transfer.
|
|
*/
|
|
struct cmdx_parm {
|
|
short pad;
|
|
u_char len;
|
|
u_char id;
|
|
u_long blk_cnt; /* # of Blocks (sectors) to read */
|
|
daddr_t lbn; /* start address for transfer */
|
|
};
|
|
|
|
/*
|
|
* Transfer Parm (0x3c). Options for data transfer commands.
|
|
* Currently used only by WRITE to do a "write with verify".
|
|
*/
|
|
struct xfer_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char xferopt; /* see bits below */
|
|
};
|
|
|
|
/*
|
|
* Disk Modes parameter (0x51). Allows the host to change the operating
|
|
* characteristics of the slave or facility. Bit defs for mode field are
|
|
* described below.
|
|
*/
|
|
struct dkmode_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_short modes;
|
|
};
|
|
|
|
/*
|
|
* Vendor ID parameter (0x50). Supply vendor specific info.
|
|
* Extra fields are supplied for future expansion. This parameter
|
|
* is read-only.
|
|
*/
|
|
struct vendor_parm {
|
|
u_char len;
|
|
u_char id;
|
|
char manuf[0x10]; /* Manufacturer's ID (SUNMICRO) */
|
|
char model[8]; /* Model # (PANTHER) */
|
|
u_char hdwr_rev; /* Hardware Revision Level */
|
|
u_char artw_rev; /* Artwork Revision Level */
|
|
u_char firm_rev; /* Firmware Revision Level */
|
|
u_char resrvd; /* Reserved */
|
|
char uniq_id[8]; /* Unique ID */
|
|
u_char switset[4]; /* Switch Settings */
|
|
u_char extra[8]; /* extra space */
|
|
};
|
|
/*
|
|
* Size of DataBlocks parameter (0x51). Default is 512.
|
|
*/
|
|
struct datbsize_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int dblksize;
|
|
};
|
|
|
|
/*
|
|
* Size of Physical Blocks parameter (0x52). Always the same as DataBlocks.
|
|
*/
|
|
struct physbsize_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int pblksize;
|
|
};
|
|
|
|
/*
|
|
* Total Number of Disk Data Blocks parameter (0x53).
|
|
* The starting address field is always zero.
|
|
*/
|
|
struct numdatblks_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int bperpart; /* Blocks per Partition */
|
|
int bpercyl; /* Blocks per Cylinder */
|
|
int bpertrk; /* Blocks per Track */
|
|
int strtadr; /* Starting Address */
|
|
};
|
|
|
|
/*
|
|
* Total Number of Disk Physical Blocks parameter (0x54).
|
|
* The starting address field is always zero.
|
|
*/
|
|
struct numphyblks_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int bperpart; /* Blocks per Partition */
|
|
int bpercyl; /* Blocks per Cylinder */
|
|
int bpertrk; /* Blocks per Track */
|
|
int strtadr; /* Starting Address */
|
|
};
|
|
|
|
/*
|
|
* Data Block Sizes Supported parameter (0x55). Define the
|
|
* size (in bytes) of a data block. Default is 512.
|
|
*/
|
|
struct datbss_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int mindatbs; /* Min data block size. Default = 512 */
|
|
int maxdatbs; /* Max data block size. Default = 2048 */
|
|
int incsize; /* Increment size. Default = 512 */
|
|
};
|
|
|
|
/*
|
|
* Physical Block Sizes Supported parameter (0x56). Define the
|
|
* size (in bytes) of a physical block. Default is 512.
|
|
*/
|
|
struct phybss_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int mindatbs; /* Min data block size. Default = 512 */
|
|
int maxdatbs; /* Max data block size. Default = 2048 */
|
|
int incsize; /* Increment size. Default = 512 */
|
|
};
|
|
|
|
/*
|
|
* Pad with Fill Characters parameter (0x5a). The slave uses the value
|
|
* in this field when it needs to pad data. The default is 0xfb87.
|
|
*/
|
|
struct pad_parm {
|
|
u_char len;
|
|
u_char id;
|
|
char filler[4]; /* Fill characters */
|
|
};
|
|
|
|
/*
|
|
* Physical Disk Configuration parameter (0x5f).
|
|
*/
|
|
struct physdk_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int ncyls; /* Number of Cylinders */
|
|
int nheads; /* Number of Heads */
|
|
int nsects; /* Sectors per Track */
|
|
int nbytes; /* Bytes per Track */
|
|
int sinseek; /* Single Cylinder Seek Time (usec) */
|
|
int avgseek; /* Average Cylinder Seek Time (usec) */
|
|
int maxseek; /* Maximum Cylinder Seek Time (usec) */
|
|
int hdswit; /* Head Switch Time (usec) */
|
|
int rotper; /* Rotational period (usec) */
|
|
char modno[4]; /* ASCII Model Number */
|
|
};
|
|
/*
|
|
* Addressee Configuration parameter (0x65). Define the operating
|
|
* characteristics of the addressee (controller).
|
|
*/
|
|
struct addrconf_parm {
|
|
u_char len;
|
|
u_char id;
|
|
int bufrsize; /* size of slave buffer (256K default) */
|
|
int cmdbufsize; /* Command buffer size (4352 default)!? */
|
|
short maxbcmdpkt; /* Max len of cmd packet (64 bytes default) */
|
|
short maxbrsppkt; /* Max len of response packet (64 bytes default) */
|
|
u_char resrvd; /* Reserved */
|
|
u_char minqued; /* Min # of cmds we can queue (8 default) */
|
|
u_char maxqued; /* Max # of cmds we can queue (64 default) */
|
|
u_char stksiz; /* Min # of cmds we can stack (68 default) */
|
|
};
|
|
/*
|
|
* Slave Configuration (bit significant) parameter (0x66). Define the
|
|
* operating characteristics of the slave (facility) using bit fields.
|
|
*/
|
|
struct slavconf_bs_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char slavebits[4]; /* slave config bit fields (defines below) */
|
|
};
|
|
/*
|
|
* Slave Configuration (Fields) parameter (0x67). Define the
|
|
* operating characteristics of the slave (facility) using fields.
|
|
*/
|
|
struct slavconf_fld_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char spare1[3];
|
|
u_char nparts; /* number of data partitions per facility (1) */
|
|
u_char spare2[4];
|
|
u_char maxextent; /* max number of extents */
|
|
u_char spare3[5];
|
|
char fattched[8]; /* number of facitilies attached */
|
|
};
|
|
/*
|
|
* Facilities Attached to Slave parameter (0x68). Identify the facilities
|
|
* (disks) attached to the slave. Leave room for the maximum possible.
|
|
*/
|
|
struct fatt_parm { /* no, not fat farm... */
|
|
u_char len;
|
|
u_char id;
|
|
struct facil {
|
|
u_char fadr; /* Facility Address */
|
|
u_char fclass; /* Facility Class */
|
|
u_char ftype; /* Facility Type */
|
|
} facil[8]; /* declare max possible */
|
|
};
|
|
|
|
/*
|
|
* Request Parm parameter (0x6c). This parameter is used two ways: first,
|
|
* the response parameter is passed back as data (i.e. DMA'ed like a
|
|
* normal data operation). We need to specify the length in such a case
|
|
* because the data comes back with no header. We always set the length
|
|
* (via the Parm Length parameter) to be 8k to be sure that we never
|
|
* have a buffer overrun. The ID of the requested parameter is also needed
|
|
* this case because a parameter sent back as data has no identifier fields.
|
|
* The other method for obtaining a response is to ask for the response to
|
|
* be sent back as an IPI-3 response packet. In this case, we actually get
|
|
* the packet from Panther's shared memory area. The parameter ID is used
|
|
* to tell Panther which parameter we want.
|
|
*/
|
|
|
|
struct reqparm_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char howto; /* specify how to respond - see bitdefs below */
|
|
u_char whichparm; /* ID of requested parameter */
|
|
};
|
|
|
|
/*
|
|
* Parm Length parameter (0x6d). This is used with the Request Parm
|
|
* parameter to specify how long a response transferred as data will
|
|
* be. This is always set to 8k - probably overkill, but it doesn't hurt.
|
|
*/
|
|
struct parmlen_parm {
|
|
u_short pad;
|
|
u_char len;
|
|
u_char id;
|
|
u_long parmlen; /* Length of parameter in bytes */
|
|
};
|
|
|
|
/*
|
|
* Slave Reconfiguration parameter - Bit Significant (0x6e). Define the
|
|
* reconfigurable attributes of the slave. Bit fields are described below.
|
|
*/
|
|
struct reconf_bs_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char conf1;
|
|
u_char conf2;
|
|
u_char conf3;
|
|
u_char resrvd;
|
|
};
|
|
|
|
/*
|
|
* Slave Reconfiguration parameter - Fields (0x6f). Define the
|
|
* reconfigurable attributes of the slave.
|
|
*/
|
|
struct reconf_fld_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char resrv1[8]; /* Reserved */
|
|
short maxbincmd; /* Maximum bytes in command packet */
|
|
short maxbinrsp; /* Maximum bytes in response packet */
|
|
u_char resrv2[8];
|
|
int burstsize; /* DMA burst length in bytes (128) */
|
|
u_char resrv3[8];
|
|
};
|
|
|
|
/*
|
|
* Panther Reconfiguration parameter (0xD0). Put vendor unique stuff here.
|
|
*/
|
|
|
|
struct panreconf_parm {
|
|
u_char len;
|
|
u_char id;
|
|
u_char rahead; /* Read-Ahead enabled flag */
|
|
u_char burstlate; /* Inter-Burst latency */
|
|
short breqlevl; /* VME Bus Request level */
|
|
short vecnum; /* Interrupt Vector Number */
|
|
short shmemoff; /* Offset from base I/O addr for shared mem */
|
|
char resrv1[14]; /* Reserved */
|
|
};
|
|
|
|
/*
|
|
* Common header for all IPI-3 packets. The reference number
|
|
* is the unique ID for a command.
|
|
*/
|
|
|
|
typedef long Align;
|
|
|
|
union ipi3header {
|
|
struct {
|
|
short hdr_pktlen; /* cmd packet length */
|
|
u_short hdr_refno; /* cmd reference number */
|
|
u_char hdr_opcode; /* cmd Op Code */
|
|
u_char hdr_mods; /* Common and OpCode modifiers */
|
|
u_char hdr_ctlr; /* slave address (ctlr number) */
|
|
u_char hdr_unit; /* facility address (unit number) */
|
|
} hdr;
|
|
Align x;
|
|
};
|
|
|
|
/*
|
|
* Command Packet. The structure is a generic preamble followed by
|
|
* the parameters for this command. The parameters are broken out
|
|
* and reused by many different commands. The padding in many of the
|
|
* commands is to ensure correct longword alignment on SPARC machines.
|
|
*/
|
|
|
|
struct ipi3pkt {
|
|
|
|
union ipi3header pkt_hdr;
|
|
union ipi_parms {
|
|
/*
|
|
*******************
|
|
* CONTROL COMMANDS
|
|
*******************
|
|
*/
|
|
struct attributes {
|
|
/*
|
|
* This is a union because we only report or load
|
|
* parameters one at a time.
|
|
*/
|
|
union {
|
|
struct vendor_parm vendor;
|
|
struct datbsize_parm datbs;
|
|
struct physbsize_parm phybs;
|
|
struct numdatblks_parm ndblks;
|
|
struct numphyblks_parm npblks;
|
|
struct datbss_parm dbss;
|
|
struct phybss_parm pbss;
|
|
struct pad_parm pad;
|
|
struct addrconf_parm addrconf;
|
|
struct physdk_parm physdk;
|
|
struct slavconf_bs_parm slavconf_bit;
|
|
struct slavconf_fld_parm slavconf_fld;
|
|
struct fatt_parm fatt;
|
|
struct reqparm_parm reqparm;
|
|
struct parmlen_parm parmlen;
|
|
struct reconf_bs_parm reconbit;
|
|
struct reconf_fld_parm reconfld;
|
|
struct panreconf_parm panther;
|
|
} parm;
|
|
} attrib;
|
|
|
|
struct nop {
|
|
char foo[IPI3PKTLEN - (sizeof (union ipi3header))];
|
|
} nop;
|
|
|
|
struct operating_mode {
|
|
struct dkmode_parm dkmode;
|
|
} opermode;
|
|
|
|
struct report_addressee_status {
|
|
struct dkmode_parm dkstat;
|
|
} status;
|
|
|
|
/*
|
|
*******************
|
|
* POSITION COMMANDS
|
|
*******************
|
|
*/
|
|
struct position_control {
|
|
struct cmdx_parm cxp;
|
|
} posctl;
|
|
|
|
struct report_position {
|
|
struct cmdx_parm cxp;
|
|
} rptpos;
|
|
/*
|
|
*********************
|
|
* TRANSFER COMMANDS
|
|
*********************
|
|
*/
|
|
struct format {
|
|
struct cmdx_parm cxp;
|
|
} format;
|
|
|
|
struct read_write {
|
|
struct xnote_parm xnp;
|
|
struct cmdx_parm cxp;
|
|
} rdwr;
|
|
|
|
/*
|
|
***********************
|
|
* COMBINATION COMMANDS
|
|
***********************
|
|
*/
|
|
struct allocate_restore {
|
|
struct cmdx_parm cxp;
|
|
} allocrest;
|
|
|
|
struct reallocate {
|
|
struct cmdx_parm cxp;
|
|
} realloc;
|
|
/*
|
|
**********************
|
|
* DIAGNOSTIC COMMANDS
|
|
**********************
|
|
*/
|
|
|
|
/* XXX - these are still undefined */
|
|
|
|
/*
|
|
struct ctlr_diag {
|
|
} cdiag;
|
|
|
|
struct facil_diag {
|
|
} fdiag;
|
|
*/
|
|
|
|
/*
|
|
* The following is for the READ DEFECT LIST and
|
|
* READ ERROR LOG commands.
|
|
*/
|
|
struct spec_read {
|
|
struct xnote_parm xnp;
|
|
struct reqparm_parm reqparm;
|
|
struct parmlen_parm plenparm;
|
|
} rdspec;
|
|
|
|
} p_cmd;
|
|
|
|
};
|
|
|
|
/*
|
|
* IPI-3 response/error packet. Each controller is assigned one
|
|
* statically, since Panther posts only one response packet at a time.
|
|
*/
|
|
struct ipi3rsp {
|
|
union ipi3header res_hdr;
|
|
u_short r_stat;
|
|
union {
|
|
/*
|
|
* Substatus.
|
|
*/
|
|
struct diag_excep_parm diag_excep;
|
|
struct interv_rqd_parm interv_rqd;
|
|
struct altport_parm altport;
|
|
struct machexcp_parm mach_excep;
|
|
struct cmdexcep_parm cmd_excep;
|
|
struct condsucc_parm cond_succ;
|
|
/*
|
|
* Response parameters. The commands that currently send these
|
|
* are Report Addressee Status, Report Position, and Report
|
|
* Attributes.
|
|
*/
|
|
union ipi_parms r_resp;
|
|
} r_parm;
|
|
};
|
|
|
|
|
|
#define XFER_NOTIFY 0x30 /* transfer notification (VME addr) */
|
|
#define CMD_EXTENT 0x31 /* command extent (count + block addr ) */
|
|
|
|
|
|
|
|
/* Bitdefs for Opcode Modifier in ATTRIBUTES header */
|
|
|
|
#define REPT_ATTRIB 0 /* Report (read) an Attribute */
|
|
#define INIT_ATTRIB 1 /* Initialize Attributes */
|
|
#define LOAD_ATTRIB 9 /* Load (write) an Attribute */
|
|
#define SAVE_ATTRIB 0xa /* Save the attribute in EEPROM */
|
|
|
|
/* ATTRIBUTES Parameters */
|
|
|
|
#define ATTR_VENDOR 0x50 /* vendor specific information */
|
|
#define LOG_BLK_SIZ 0x51 /* logical data block size */
|
|
#define PHYS_BLK_SIZ 0x52 /* physical data block size */
|
|
#define LOG_BLK_LAYOUT 0x53 /* layout of blocks on disk */
|
|
#define PHYS_BLK_LAYOUT 0x54 /* layout of blocks on disk */
|
|
#define LOG_BLOCK_SUP 0x55 /* logical block sizes supported */
|
|
#define PHYS_BLOCK_SUP 0x56 /* physical block sizes supported */
|
|
#define ATTR_FILL_PAT 0x5a
|
|
#define ATTR_PHYSDK 0x5f
|
|
#define ATTR_CTLR_CONF 0x65
|
|
#define ATTR_FAC_ATTACH 0x68
|
|
#define ATTR_REQPARM 0x6c
|
|
#define ATTR_PARMLEN 0x6d
|
|
#define ATTR_SLVCNF_BIT 0x6e
|
|
#define ATTR_SLVCNF_FLD 0x6f
|
|
#define ATTR_PANTHER 0xd0
|
|
|
|
/* Bitdefs for REQUEST PARM parameter */
|
|
|
|
#define RESP_AS_PKT 0x10 /* Send back as a response packet */
|
|
#define RESP_AS_DATA 0x30 /* Send back as data */
|
|
|
|
/*
|
|
* defs for response type in major status.
|
|
*/
|
|
|
|
#define RTYP_NRML 0x01 /* normal cmd completion */
|
|
#define RTYP_COMBO 0x03 /* combination cmd completion */
|
|
#define RTYP_ASYNC 0x04 /* asychronous response */
|
|
|
|
/*
|
|
* Bitdefs for the rp_spec field in the Request Parm parameter
|
|
*/
|
|
|
|
#define RP_PASD 0x8 /* Naked Parm as Data (yow) */
|
|
#define RP_LEN 0x10 /* Len of data returned (used w RP_PASD) */
|
|
#define RP_PINR 0x20 /* Send back parameter in response pkt */
|
|
|
|
/*
|
|
* Bitdefs for the Disk Mode parameter
|
|
*/
|
|
|
|
#define IREZERO 0x0 /* Set Heads to initial position */
|
|
#define LOCKCRG 0x1 /* Lock Carriage */
|
|
#define UNLDHEADS 0x2 /* Unload read/write Heads */
|
|
#define LDHEADS 0x4 /* Load read/write Heads */
|
|
#define ULOCKCART 0x8 /* Unlock Cartridge */
|
|
#define LOCKCART 0x10 /* Lock Cartridge */
|
|
#define SPINDOWN 0x20 /* Spin Down the disk */
|
|
#define SPINUP 0x40 /* Spin Up the disk */
|
|
|
|
|
|
struct ipidevice {
|
|
u_long dev_bir; /* Board id. reg */
|
|
u_long dev_csr; /* rw - CSR */
|
|
u_long dev_cmdreg; /* w - command register */
|
|
u_long dev_resp; /* r - response register */
|
|
u_long dev_vector; /* VME interrupt vector */
|
|
u_long dev_aux[3]; /* Aux. registers */
|
|
struct ipi3pkt dev_cmd_pkt; /* IPI-3 command packet */
|
|
struct ipi3rsp dev_resp_pkt; /* IPI-3 response packet */
|
|
};
|
|
|
|
/* CSR Bit Definitions */
|
|
|
|
#define CSR_RESET (u_long)0x01 /* reset */
|
|
#define CSR_EICRNB (u_long)0x02 /* enable int on cmd register not busy */
|
|
#define CSR_EIRRV (u_long)0x04 /* enable int on response register valid */
|
|
#define CSR_CRBUSY (u_long)0x08 /* Command Register Busy */
|
|
#define CSR_RRVLID (u_long)0x10 /* Response Register Valid */
|
|
#define CSR_RESERVE1 (u_long)0x20 /* Spare bit 1 */
|
|
#define CSR_RESERVE2 (u_long)0x40 /* Spare bit 1 */
|
|
#define CSR_RESERVE3 (u_long)0x80 /* Spare bit 1 */
|
|
#define CSR_ERROR (u_long)0x100 /* Response Register Valid */
|
|
#define CSR_MRINFO (u_long)0x200 /* Response Register Valid */
|
|
#define CSR_LED0 (u_long)0x01000000 /* LED 0 */
|
|
#define CSR_LED1 (u_long)0x02000000
|
|
#define CSR_LED2 (u_long)0x04000000
|
|
#define CSR_LED3 (u_long)0x08000000
|
|
#define CSR_LED4 (u_long)0x10000000
|
|
#define CSR_LED5 (u_long)0x20000000
|
|
#define CSR_LED6 (u_long)0x40000000
|
|
#define CSR_LED7 (u_long)0x80000000 /* LED 7 */
|
|
|
|
#define BOARDD(x) x->c_io->dev_bir
|
|
#define STATUS(x) x->c_io->dev_csr
|
|
#define CMDREG(x) x->c_io->dev_cmdreg
|
|
#define RSPREG(x) x->c_io->dev_resp
|
|
#define INTVEC(x) x->c_io->dev_vector
|
|
|
|
#define IP_NOTOPER 0x40000000
|
|
#define IP_NOTREADY 0x10000000
|
|
|
|
#endif _IPIPKT_
|