Annotation of Gnu-Mach/chips/vs42x_rb.h, revision 1.1.1.1

1.1       root        1: /* 
                      2:  * Mach Operating System
                      3:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
                      4:  * All Rights Reserved.
                      5:  * 
                      6:  * Permission to use, copy, modify and distribute this software and its
                      7:  * documentation is hereby granted, provided that both the copyright
                      8:  * notice and this permission notice appear in all copies of the
                      9:  * software, derivative works or modified versions, and any portions
                     10:  * thereof, and that both notices appear in supporting documentation.
                     11:  * 
                     12:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     13:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
                     14:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     15:  * 
                     16:  * Carnegie Mellon requests users of this software to return to
                     17:  * 
                     18:  *  Software Distribution Coordinator  or  [email protected]
                     19:  *  School of Computer Science
                     20:  *  Carnegie Mellon University
                     21:  *  Pittsburgh PA 15213-3890
                     22:  * 
                     23:  * any improvements or extensions that they make and grant Carnegie Mellon
                     24:  * the rights to redistribute these changes.
                     25:  */
                     26: /*
                     27:  *     File: vs42x_rb.h
                     28:  *     Author: Alessandro Forin, Carnegie Mellon University
                     29:  *     Date:   5/91
                     30:  *
                     31:  *     This file contains definitions for the VS42X-RB Storage
                     32:  *     controller, which includes a Disk controller and a
                     33:  *     SCSI controller.
                     34:  */
                     35: 
                     36: #ifndef        _VS42X_RB_H_
                     37: #define        _VS42X_RB_H_
                     38: 
                     39: /*
                     40:  * Phys addresses for the Vax3100
                     41:  */
                     42: #define VAX3100_STC_BASE       0x200c0000
                     43: #define VAX3100_STC_RAM_COMPAT 0x200d0000
                     44: #define        VAX3100_STC_RAM         0x202d0000
                     45: 
                     46: #define        VAX3100_STC_HDC9224     0x00000000      /* offsets from BASE */
                     47: #define VAX3100_STC_5380_A     0x00000080
                     48: #define VAX3100_STC_5380_B     0x00000180
                     49: #define VAX3100_STC_DMAREG_A   0x000000a0
                     50: #define VAX3100_STC_DMAREG_B   0x000001a0
                     51: #define        VAX3100_STC_RAM_MODE    0x000000e0
                     52: 
                     53: #define        VAX3100_STC_DMAREG_OFF  (0xa0-0x80)     /* offset from 5380 */
                     54: 
                     55: #define        SCI_REG_SIZE            512
                     56: 
                     57: /*
                     58:  * RAM Buffer for this storage system
                     59:  */
                     60: #define        SCI_RAM_SIZE            128*1024
                     61: #define        SCI_RAM_COMPATSIZE      32*1024
                     62: #define SCI_RAM_EXPMODE                0x01            /* char-size mode register */
                     63: 
                     64: /*
                     65:  * DMA controller for the SCSI subsystem
                     66:  * (Defines for the NCR 5380 are elsewhere)
                     67:  */
                     68: 
                     69: typedef struct {
                     70:        unsigned int    sci_dma_adr;    /* +000000a0 */
                     71:        char                            pad0[0xc0-0xa0-4];
                     72:        unsigned int    sci_dma_count;  /* +000000c0 */
                     73:        unsigned int    sci_dma_dir;    /* +000000c4 */
                     74:        char                            pad1[0xe0-0xc4-4];
                     75:        unsigned char   sci_dma_rammode;/* +000000e0 */
                     76: } *sci_dmaregs_t;
                     77: 
                     78: #define SCI_DMADR_PUT(ptr,adr) (ptr)->sci_dma_adr = (unsigned)(adr) & SCI_DMA_COUNT_MASK;
                     79: #define SCI_DMADR_GET(ptr,adr) (adr) = (ptr)->sci_dma_adr;
                     80: 
                     81: #define        SCI_DMA_COUNT_MASK      0x0001ffff
                     82: #define SCI_TC_GET(ptr,cnt)    {\
                     83:                (cnt) = (ptr)->sci_dma_count;\
                     84:                if ((cnt) & 0x00010000) (cnt) |= ~SCI_DMA_COUNT_MASK;\
                     85:                (cnt) = -(cnt);\
                     86:        }
                     87: #define SCI_TC_PUT(ptr,cnt)    (ptr)->sci_dma_count = -(cnt);
                     88: 
                     89: #define        SCI_DMA_DIR_READ        0x00000001
                     90: #define        SCI_DMA_DIR_WRITE       0x00000000
                     91: 
                     92: /*
                     93:  * Disk controller subsytem (ST506/412), uses a
                     94:  * HDC 9224 Universal Disk Controller chip and
                     95:  * addresses up to 4 disks.
                     96:  */
                     97: typedef struct {
                     98:        unsigned char   hdc_rap;                /* rw: reg addres ptr */
                     99:        char                                            pad0[3];
                    100:        unsigned char   hdc_cmd;                /* w:  controller command */
                    101: #define                        hdc_status hdc_cmd      /* r:  interrupt status */
                    102:        char                                            pad1[3];
                    103: } *sci_hdcregs_t;
                    104: 
                    105: /*
                    106:  * Register Address Pointer
                    107:  */
                    108: #define UDC_DMA7       0       /* rw: DMA address bits 7:0 */
                    109: #define UDC_DMA15      1       /* rw: DMA address bits 15:8 */
                    110: #define UDC_DMA23      2       /* rw: DMA address bits 23:16 */
                    111: #define UDC_DSECT      3       /* rw: desired sector */
                    112: #define UDC_DHEAD      4       /* wo: desired head */
                    113: #define UDC_CHEAD      4       /* ro: current head */
                    114: #define UDC_DCYL       5       /* wo: desired cylinder */
                    115: #define UDC_CCYL       5       /* ro: current cylinder */
                    116: #define UDC_SCNT       6       /* wo: sector count */
                    117: #define UDC_RTCNT      7       /* wo: retry count */
                    118: #define UDC_MODE       8       /* wo: operating mode */
                    119: #define UDC_CSTAT      8       /* ro: chip status */
                    120: #define UDC_TERM       9       /* wo: termination conditions */
                    121: #define UDC_DSTAT      9       /* ro: drive status */
                    122: #define UDC_DATA       10      /* rw: data */
                    123: 
                    124: /*
                    125:  * Controller Commands
                    126:  */
                    127: #define HDCC_RESET             0x00
                    128: 
                    129: #define HDCC_SET_REGP          0x40    /* low 4 bits is regnum */
                    130: 
                    131: #define HDCC_DESELECT          0x01
                    132: 
                    133: #define HDCC_SELECT            0x20
                    134: #      define HDCC_SELECT_IDMASK       0x03
                    135: #      define HDCC_SELECT_DR_HD        0x04
                    136: #      define HDCC_SELECT_DR_SD        0x08
                    137: #      define HDCC_SELECT_DR_DD        0x0c
                    138: 
                    139: #define HDCC_RESTORE_HD                0x03
                    140: 
                    141: #define HDCC_RESTORE_RX                0x02
                    142: 
                    143: #define HDCC_STEP              0x04
                    144: #      define HDCC_STEP_OUT            0x02
                    145: #      define HDCC_STEP_SKWAIT         0x01
                    146: 
                    147: #define HDCC_POLL              0x10    /* low 4 bits is drive mask */
                    148: 
                    149: #define HDCC_SEEK              0x50
                    150: #      define HDCC_SEEK_STEP           0x04
                    151: #      define HDCC_SEEK_SKWAIT         0x02
                    152: #      define HDCC_SEEK_VFY            0x01
                    153: 
                    154: #define HDCC_FORMAT            0x60
                    155: #      define HDCC_FORMAT_DDMARK       0x10
                    156: 
                    157: #define HDCC_READ_T            0x5a
                    158: #      define HDCC_READ_XDATA          0x01
                    159: 
                    160: #define HDCC_READ_P            0x58
                    161: 
                    162: #define HDCC_READ_L            0x5c
                    163: #      define HDCC_READ_L_BYPASS       0x02
                    164: 
                    165: #define HDCC_WRITE_P           0x80
                    166: #      define HDCC_WRITE_BYPASS        0x40
                    167: #      define HDCC_WRITE_DDMARK        0x10
                    168: 
                    169: #define HDCC_WRITE_L           0xa0
                    170: 
                    171: /*
                    172:  * Interrupt Status Register
                    173:  */
                    174: #define HDCI_BADSECT   0x01
                    175: #define HDCI_OVRUN     0x02
                    176: #define HDCI_RDYCHNG   0x04
                    177: #define HDCI_TERMCOD   0x18
                    178: #      define HDC_T_SUCCESS    0x00
                    179: #      define HDC_T_EREAD_ID   0x08
                    180: #      define HDC_T_EVFY       0x10
                    181: #      define HDC_T_EXFER      0x18
                    182: #define HDCI_DONE      0x20
                    183: #define HDCI_DMAREQ    0x40
                    184: #define HDCI_INT       0x80            /* interrupt pending */
                    185: 
                    186: /*
                    187:  * Desired/Current Head
                    188:  */
                    189: #define UDC_HEAD_HMASK         0x0f            /* desired head no */
                    190: #define UDC_HEAD_CMASK         0x70            /* desired cyl 10:8 */
                    191: #define UDC_HEAD_BADSEC                0x80
                    192: 
                    193: /*
                    194:  * Sector Count
                    195:  */
                    196: #define HDC_MAXDATA            256*512
                    197: 
                    198: /*
                    199:  * Retry Count
                    200:  */
                    201: #define UDC_RTCNT_MASK         0xf0
                    202: #define UDC_RTCNT_RXDIS                0x08    /* mbz */
                    203: #define UDC_RTCNT_INVRDY       0x04
                    204: #define UDC_RTCNT_MOTOR                0x02
                    205: #define UDC_RTCNT_LOSPEED      0x01
                    206: 
                    207: /*
                    208:  * Mode
                    209:  */
                    210: #define UDC_MODE_HD            0x80    /* hard disk mode mb1 */
                    211: #define UDC_MODE_CHKCOD                0x60    /* error checkin code */
                    212: #      define UDC_MODE_CRC     0x00
                    213: #      define UDC_MODE_EECC    0x20    /* NA */
                    214: #      define UDC_MODE_IECC    0x40    /* hard disks internal 32 ecc */
                    215: #      define UDC_MODE_AECC    0x60    /* NA */
                    216: #define UDC_MODE_DENS          0x10    /* mbz */
                    217: #define UDC_MODE_SRATE         0x07
                    218: #      define UDC_MODE_RATE_HD         0x00    /* hard disk */
                    219: #      define UDC_MODE_RATE_DD         0x01    /* double den rx23 */
                    220: #      define UDC_MODE_RATE_SD         0x02    /* single den rz23 */
                    221: #      define UDC_MODE_RATE_RD         0x06    /* restore drive */
                    222: 
                    223: #define UDC_MODE_RX23_DD       0x81
                    224: #define UDC_MODE_RX23_SD       0x82
                    225: #define UDC_MODE_RDxx          0xc0
                    226: #define UDC_MODE_RD_RESTORE    0xc6
                    227: 
                    228: /*
                    229:  * Status
                    230:  */
                    231: #define UDC_CSTAT_RETRIED      0x80
                    232: #define UDC_CSTAT_ECC          0x40
                    233: #define UDC_CSTAT_ECC_ERR      0x20
                    234: #define UDC_CSTAT_DELDATA      0x10
                    235: #define UDC_CSTAT_SYN_ERR      0x08
                    236: #define UDC_CSTAT_COMP_ERR     0x04
                    237: #define UDC_CSTAT_SELMASK      0x03
                    238: #      define UDC_CSTAT_SELHD0         0x00
                    239: #      define UDC_CSTAT_SELHD1         0x01
                    240: #      define UDC_CSTAT_SELRX          0x02
                    241: #      define UDC_CSTAT_SELHD2         0x03
                    242: 
                    243: /*
                    244:  * Termination
                    245:  */
                    246: #define UDC_TERM_CRCPRE                0x80    /* mb1 */
                    247: #define UDC_TERM_IDONE         0x20
                    248: #define UDC_TERM_DELDAT                0x10
                    249: #define UDC_TERM_STAT3         0x08    /* mbz */
                    250: #define UDC_TERM_WPROT         0x04
                    251: #define UDC_TERM_IRDCHNG       0x02
                    252: #define UDC_TERM_WFLT          0x01
                    253: 
                    254: /*
                    255:  * Drive status
                    256:  */
                    257: #define UDC_DSTAT_SELACK       0x80
                    258: #define UDC_DSTAT_INDEX                0x40
                    259: #define UDC_DSTAT_SKCOM                0x20
                    260: #define UDC_DSTAT_TRK0         0x10
                    261: #define UDC_DSTAT_STAT3                0x08    /* mbz */
                    262: #define UDC_DSTAT_WPROT                0x04
                    263: #define UDC_DSTAT_READY                0x02
                    264: #define UDC_DSTAT_WFLT         0x01
                    265: 
                    266: 
                    267: #endif _VS42X_RB_H_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.