Annotation of Examples/DriverKit/SMC16/SMC16_reloc.tproj/wd83C690.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1992 NeXT Computer, Inc.
        !             3:  *
        !             4:  * WD83C690 Network Interface Chip.
        !             5:  *
        !             6:  * HISTORY
        !             7:  *
        !             8:  * 25 July 1992 
        !             9:  *     Created.
        !            10:  */
        !            11:  
        !            12: #import "SMC16Hdw.h"
        !            13: 
        !            14: #define NIC_PAGE_SIZE  256
        !            15: 
        !            16: /*
        !            17:  * NIC access inlines
        !            18:  */
        !            19: 
        !            20: static __inline__
        !            21: vm_offset_t
        !            22: nic_page_addr(SMC16_off_t page, vm_offset_t base)
        !            23: {
        !            24:     return (vm_offset_t)(base + (page * NIC_PAGE_SIZE));
        !            25: }
        !            26: 
        !            27: static __inline__
        !            28: vm_offset_t
        !            29: nic_page_round(SMC16_off_t addr)
        !            30: {
        !            31:     return  (vm_offset_t)(((vm_offset_t)(addr) + NIC_PAGE_SIZE - 1) & 
        !            32:        ~(NIC_PAGE_SIZE - 1));
        !            33: }
        !            34: 
        !            35: 
        !            36: 
        !            37: /*
        !            38:  * Register definitions
        !            39:  */
        !            40: 
        !            41: /*
        !            42:  * Command register.
        !            43:  */
        !            44: 
        !            45: #define NIC_CMD_REG_OFF                0x00
        !            46: 
        !            47: typedef struct {
        !            48:     unsigned char      stp     :1,     /* stop device */
        !            49:                        sta     :1,     /* start device */
        !            50:                        txp     :1,     /* begin packet xmt */
        !            51:                                :3,
        !            52:                        psel    :2;     /* register page select */
        !            53: } nic_cmd_reg_t;
        !            54: 
        !            55: /*
        !            56:  * Interrupt status register.
        !            57:  */
        !            58: 
        !            59: #define NIC_ISTAT_REG_OFF      0x07
        !            60: #define NIC_ISTAT_REG_R_PG     0x00    
        !            61: #define NIC_ISTAT_REG_W_PG     0x00    
        !            62: 
        !            63: typedef struct {
        !            64:     unsigned char      prx     :1,     /* packet recvd */
        !            65:                        ptx     :1,     /* packet xmtd */
        !            66:                        rxe     :1,     /* packet recvd w/error */
        !            67:                        txe     :1,     /* packet xmt error */
        !            68:                        ovw     :1,     /* recv ring overwrite warning */
        !            69:                        cnt     :1,     /* counter overflow warning */
        !            70:                                :1,
        !            71:                        rst     :1;     /* device stopped */
        !            72: } nic_istat_reg_t;
        !            73: 
        !            74: /*
        !            75:  * Interrupt mask register.
        !            76:  */
        !            77: 
        !            78: #define NIC_IMASK_REG_OFF      0x0f
        !            79: #define NIC_IMASK_REG_R_PG     0x02
        !            80: #define NIC_IMASK_REG_W_PG     0x00
        !            81: 
        !            82: typedef struct {
        !            83:     unsigned char      prxe    :1,     /* packet recvd enable */
        !            84:                        ptxe    :1,     /* packet xmtd enable */
        !            85:                        rxee    :1,     /* packet recvd w/error enable */
        !            86:                        txee    :1,     /* packet xmt error enable */
        !            87:                        ovwe    :1,     /* recv ring overwrite warning enb */
        !            88:                        cnte    :1,     /* counter overflow waring enable */
        !            89:                                :2;
        !            90: } nic_imask_reg_t;
        !            91: 
        !            92: /*
        !            93:  * Receive status register.
        !            94:  */
        !            95: 
        !            96: #define NIC_RSTAT_REG_OFF      0x0C
        !            97: #define NIC_RSTAT_REG_R_PG     0x00
        !            98: 
        !            99: typedef struct {
        !           100:     unsigned char      prx     :1,     /* packet recvd w/o error */
        !           101:                        crc     :1,     /* packet recvd w/crc error */
        !           102:                        fae     :1,     /* packet recvd w/framing error */
        !           103:                        over    :1,     /* recv fifo overflow */
        !           104:                        mpa     :1,     /* missed packet occurred */
        !           105:                        group   :1,     /* packet recvd is bcast or mcast */
        !           106:                        dis     :1,     /* receiver is in mon mode */
        !           107:                        dfr     :1;     /* jabber condition on wire */
        !           108: } nic_rstat_reg_t;
        !           109: 
        !           110: /*
        !           111:  * Transmit status register.
        !           112:  */
        !           113: 
        !           114: #define NIC_TSTAT_REG_OFF      0x04
        !           115: #define NIC_TSTAT_REG_R_PG     0x00
        !           116: 
        !           117: typedef struct {
        !           118:     unsigned char      ptx     :1,     /* packet xmtd on wire */
        !           119:                        ndt     :1,     /* packet xmtd w/o initial deferment */
        !           120:                        twc     :1,     /* xmtd with collisions */
        !           121:                        abort   :1,     /* not xmtd due to excess. coll. */
        !           122:                        crl     :1,     /* packet xmtd but carrier was lost */
        !           123:                        under   :1,     /* xmt fifo underrun */
        !           124:                        cdh     :1,     /* heartbeat detected */
        !           125:                        owc     :1;     /* out of win. collision occurred */
        !           126: } nic_tstat_reg_t;
        !           127: 
        !           128: /*
        !           129:  * 83690 features register
        !           130:  */
        !           131: 
        !           132: #define NIC_ENH_REG_OFF                0x27
        !           133: #define NIC_ENH_REG_R_PG       0x02
        !           134: #define NIC_ENH_REG_W_PG       0x02
        !           135: 
        !           136: typedef struct {
        !           137:     unsigned char              :3,     
        !           138:                        slot    :2,     /* slot time */
        !           139: #define NIC_SLOT_512_BIT       0
        !           140: #define NIC_SLOT_256_BIT       2
        !           141: #define NIC_SLOT_1024_BIT      3
        !           142:                                :1,     
        !           143:                        wait    :2;     /* wait states inserted into DMA */
        !           144: } nic_enh_reg_t;
        !           145: 
        !           146: 
        !           147: /*
        !           148:  * Memory block register
        !           149:  */
        !           150: 
        !           151: #define NIC_BLOCK_REG_OFF      0x06
        !           152: #define NIC_BLOCK_REG_R_PG     0x02
        !           153: #define NIC_BLOCK_REG_W_PG     0x02
        !           154:  
        !           155: /*
        !           156:  * Receive boundary page register.
        !           157:  */
        !           158: 
        !           159: #define NIC_BOUND_REG_OFF      0x03
        !           160: #define NIC_BOUND_REG_R_PG     0x00
        !           161: #define NIC_BOUND_REG_W_PG     0x00
        !           162: 
        !           163: /*
        !           164:  * Receive current page register.
        !           165:  */
        !           166: 
        !           167: #define NIC_CURR_REG_OFF       0x07
        !           168: #define NIC_CURR_REG_R_PG      0x01
        !           169: #define NIC_CURR_REG_W_PG      0x01
        !           170: 
        !           171: /*
        !           172:  * Receive ring start page register.
        !           173:  */
        !           174: 
        !           175: #define NIC_RSTART_REG_OFF     0x01
        !           176: #define NIC_RSTART_REG_R_PG    0x02
        !           177: #define NIC_RSTART_REG_W_PG    0x00
        !           178: 
        !           179: /*
        !           180:  * Receive ring stop page register.
        !           181:  */
        !           182: 
        !           183: #define NIC_RSTOP_REG_OFF      0x02
        !           184: #define NIC_RSTOP_REG_R_PG     0x02
        !           185: #define NIC_RSTOP_REG_W_PG     0x00
        !           186: 
        !           187: /*
        !           188:  * Transmit start page register.
        !           189:  */
        !           190: 
        !           191: #define NIC_TSTART_REG_OFF     0x04
        !           192: #define NIC_TSTART_REG_R_PG    0x02
        !           193: #define NIC_TSTART_REG_W_PG    0x00
        !           194: 
        !           195: /*
        !           196:  * Transmit count registers.
        !           197:  */
        !           198: 
        !           199: #define NIC_TCNTL_REG_OFF      0x05
        !           200: #define NIC_TCNTH_REG_OFF      0x06
        !           201: #define NIC_TCNT_REG_W_PG      0x00
        !           202: 
        !           203: /*
        !           204:  * Station address registers.
        !           205:  */
        !           206: 
        !           207: #define NIC_STA_REG_OFF                0x01
        !           208: #define NIC_STA_REG_R_PG       0x01
        !           209: #define NIC_STA_REG_W_PG       0x01
        !           210: 
        !           211: /*
        !           212:  * Receive configuration register.
        !           213:  */
        !           214: 
        !           215: #define NIC_RCON_REG_OFF       0x0c
        !           216: #define NIC_RCON_REG_R_PG      0x02
        !           217: #define NIC_RCON_REG_W_PG      0x00
        !           218: 
        !           219: typedef struct {
        !           220:     unsigned char      sep     :1,     /* save error packets */
        !           221:                        runts   :1,     /* save runt packets */
        !           222:                        broad   :1,     /* receive broadcast packets */
        !           223:                        group   :1,     /* receive *all* multicast packets */
        !           224:                        prom    :1,     /* receive all packets */
        !           225:                        mon     :1,     /* monitor network */
        !           226:                                :2;
        !           227: } nic_rcon_reg_t;
        !           228: 
        !           229: /*
        !           230:  * Transmit configuration register.
        !           231:  */
        !           232: 
        !           233: #define NIC_TCON_REG_OFF       0x0d
        !           234: #define NIC_TCON_REG_R_PG      0x02
        !           235: #define NIC_TCON_REG_W_PG      0x00
        !           236: 
        !           237: typedef struct {
        !           238:     unsigned char      crcn    :1,     /* no CRC generation */
        !           239:                        lb      :2,     /* loopback mode */
        !           240: #define NIC_XMT_LOOPB_NONE     0
        !           241: #define NIC_XMT_LOOPB_INTER    1
        !           242: #define NIC_XMT_LOOPB_EXTER_HI 2
        !           243: #define NIC_XMT_LOOPB_EXTER_LO 3
        !           244:                                :5;
        !           245: } nic_tcon_reg_t;
        !           246: 
        !           247: /*
        !           248:  * Data configuration register.
        !           249:  */
        !           250: 
        !           251: #define NIC_DCON_REG_OFF       0x0e
        !           252: #define NIC_DCON_REG_R_PG      0x02
        !           253: #define NIC_DCON_REG_W_PG      0x00
        !           254: 
        !           255: typedef struct {
        !           256:     unsigned char      bus16   :1,     /* 16 bit DMA transfers */
        !           257:                                :4,
        !           258:                        bsize   :2,     /* DMA burst length */
        !           259: #define NIC_DMA_BURST_2b       0
        !           260: #define NIC_DMA_BURST_4b       1
        !           261: #define NIC_DMA_BURST_8b       2
        !           262: #define NIC_DMA_BURST_12b      3
        !           263:                                :1;
        !           264: } nic_dcon_reg_t;
        !           265: 
        !           266: /*
        !           267:  * Counter registers.
        !           268:  */
        !           269: 
        !           270: /* Receive alignment errors */
        !           271: #define NIC_ALICNT_REG_OFF     0x0d
        !           272: #define NIC_ALICNT_REG_R_PG    0x00
        !           273: 
        !           274: /* Transmit collisions (last transmit) */
        !           275: #define NIC_COLCNT_REG_OFF     0x05
        !           276: #define NIC_COLCNT_REG_R_PG    0x00
        !           277: 
        !           278: /* Receive CRC errors */
        !           279: #define NIC_CRCCNT_REG_OFF     0x0e
        !           280: #define NIC_CRCCNT_REG_R_PG    0x00
        !           281: 
        !           282: /* Missed receive packets */
        !           283: #define NIC_MPCNT_REG_OFF      0x0f
        !           284: #define NIC_MPCNT_REG_R_PG     0x00
        !           285: 
        !           286: /*
        !           287:  * Receive packet buffer header.
        !           288:  */
        !           289: 
        !           290: typedef struct {
        !           291:     nic_rstat_reg_t    rstat;
        !           292:     unsigned char      next;
        !           293:     unsigned short     len;
        !           294:     unsigned char      data[0];
        !           295: } nic_recv_hdr_t;

unix.superglobalmegacorp.com

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