[BACK]Return to if_myxreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/if_myxreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: if_myxreg.h,v 1.2 2007/06/01 18:07:08 reyk Exp $      */
                      2:
                      3: /*
                      4:  * Copyright (c) 2007 Reyk Floeter <reyk@openbsd.org>
                      5:  *
                      6:  * Permission to use, copy, modify, and distribute this software for any
                      7:  * purpose with or without fee is hereby granted, provided that the above
                      8:  * copyright notice and this permission notice appear in all copies.
                      9:  *
                     10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     17:  */
                     18:
                     19: /*
                     20:  * Register definitions for the Myricom Myri-10G Lanai-Z8E Ethernet chipsets.
                     21:  */
                     22:
                     23: #ifndef _MYX_REG_H
                     24: #define _MYX_REG_H
                     25:
                     26: /*
                     27:  * Common definitions
                     28:  */
                     29:
                     30: #define MYXBAR0                        PCI_MAPREG_START
                     31:
                     32: #define MYX_NRXDESC            256
                     33: #define MYX_NTXDESC_MIN                2
                     34: #define MYX_IRQCOALDELAY       30
                     35: #define MYX_IRQDEASSERTWAIT    1
                     36: #define MYX_MAX_MTU_SMALL      (ETHERMTU + ETHER_HDR_LEN + 4)
                     37: #define MYX_MAX_MTU_BIG                PAGE_SIZE
                     38:
                     39: #define MYXALIGN_CMD           64
                     40: #define MYXALIGN_DATA          PAGE_SIZE
                     41:
                     42: #define MYX_ADDRHIGH(_v)       ((_v >> 32) & 0xffffffff)
                     43: #define MYX_ADDRLOW(_v)                (_v & 0xffffffff)
                     44:
                     45: /*
                     46:  * PCI memory/register layout
                     47:  */
                     48:
                     49: #define MYX_SRAM               0x00000000      /* SRAM offset */
                     50: #define MYX_SRAM_SIZE          0x001dff00      /* SRAM size */
                     51: #define  MYX_HEADER_POS                0x0000003c      /* Header position offset */
                     52: #define  MYX_HEADER_POS_SIZE   0x00000004      /* Header position size */
                     53: #define  MYX_FW                        0x00100000      /* Firmware offset */
                     54: #define   MYX_FW_BOOT          0x00100008      /* Firmware boot offset */
                     55: #define  MYX_EEPROM            0x001dfe00      /* EEPROM offset */
                     56: #define  MYX_EEPROM_SIZE       0x00000100      /* EEPROM size */
                     57: #define MYX_BOOT               0x00fc0000      /* Boot handoff */
                     58: #define MYX_RDMA               0x00fc01c0      /* Dummy RDMA */
                     59: #define MYX_CMD                        0x00f80000      /* Command offset */
                     60:
                     61: /*
                     62:  * Firmware definitions
                     63:  */
                     64:
                     65: #define MYXFW_ALIGNED          "myx-eth_z8e"
                     66: #define MYXFW_UNALIGNED                "myx-ethp_z8e"
                     67: #define MYXFW_TYPE_ETH         0x45544820
                     68: #define MYXFW_VER              "1.4."          /* stored as a string... */
                     69:
                     70: #define MYXFW_MIN_LEN          (MYX_HEADER_POS + MYX_HEADER_POS_SIZE)
                     71:
                     72: struct myx_firmware_hdr {
                     73:        u_int32_t       fw_hdrlength;
                     74:        u_int32_t       fw_type;
                     75:        u_int8_t        fw_version[128];
                     76:        u_int32_t       fw_sram_size;
                     77:        u_int32_t       fw_specs;
                     78:        u_int32_t       fw_specs_len;
                     79: } __packed;
                     80:
                     81:
                     82: /*
                     83:  * Commands, descriptors, and DMA structures
                     84:  */
                     85:
                     86: struct myx_cmd {
                     87:        u_int32_t       mc_cmd;
                     88:        u_int32_t       mc_data0;
                     89:        u_int32_t       mc_data1;
                     90:        u_int32_t       mc_data2;
                     91:        u_int32_t       mc_addr_high;
                     92:        u_int32_t       mc_addr_low;
                     93:        u_int8_t        mc_pad[40];             /* pad up to 64 bytes */
                     94: } __packed;
                     95:
                     96: struct myx_response {
                     97:        u_int32_t       mr_data;
                     98:        u_int32_t       mr_result;
                     99: } __packed;
                    100:
                    101: struct myx_bootcmd {
                    102:        u_int32_t       bc_addr_high;
                    103:        u_int32_t       bc_addr_low;
                    104:        u_int32_t       bc_result;
                    105:        u_int32_t       bc_offset;
                    106:        u_int32_t       bc_length;
                    107:        u_int32_t       bc_copyto;
                    108:        u_int32_t       bc_jumpto;
                    109:        u_int8_t        bc_pad[36];             /* pad up to 64 bytes */
                    110: } __packed;
                    111:
                    112: struct myx_rdmacmd {
                    113:        u_int32_t       rc_addr_high;
                    114:        u_int32_t       rc_addr_low;
                    115:        u_int32_t       rc_result;
                    116:        u_int32_t       rc_rdma_high;
                    117:        u_int32_t       rc_rdma_low;
                    118:        u_int32_t       rc_enable;
                    119: #define  MYXRDMA_ON    1
                    120: #define  MYXRDMA_OFF   0
                    121:        u_int8_t        rc_pad[40];             /* pad up to 64 bytes */
                    122: } __packed;
                    123:
                    124: struct myx_status {
                    125:        u_int32_t       ms_reserved;
                    126:        u_int32_t       ms_dropped_pause;
                    127:        u_int32_t       ms_dropped_unicast;
                    128:        u_int32_t       ms_dropped_crc32err;
                    129:        u_int32_t       ms_dropped_phyerr;
                    130:        u_int32_t       ms_dropped_mcast;
                    131:        u_int32_t       ms_txdonecnt;
                    132:        u_int32_t       ms_linkstate;
                    133: #define  MYXSTS_LINKDOWN       0
                    134: #define  MYXSTS_LINKUP         1
                    135: #define  MYXSTS_LINKMYRINET    2
                    136: #define  MYXSTS_LINKUNKNOWN    3
                    137:        u_int32_t       ms_dropped_linkoverflow;
                    138:        u_int32_t       ms_dropped_linkerror;
                    139:        u_int32_t       ms_dropped_runt;
                    140:        u_int32_t       ms_dropped_overrun;
                    141:        u_int32_t       ms_dropped_smallbufunderrun;
                    142:        u_int32_t       ms_dropped_bigbufunderrun;
                    143:        u_int32_t       ms_rdmatags_available;
                    144: #define  MYXSTS_RDMAON 1
                    145: #define  MYXSTS_RDMAOFF        0
                    146:        u_int8_t        ms_txstopped;
                    147:        u_int8_t        ms_linkdowncnt;
                    148:        u_int8_t        ms_statusupdated;
                    149:        u_int8_t        ms_isvalid;
                    150: } __packed;
                    151:
                    152: struct myx_rxdesc {
                    153:        u_int16_t       rx_csum;
                    154:        u_int16_t       rx_length;
                    155: } __packed;
                    156:
                    157: struct myx_rxbufdesc {
                    158:        u_int32_t       rb_addr_high;
                    159:        u_int32_t       rb_addr_low;
                    160: } __packed;
                    161:
                    162: struct myx_txdesc {
                    163:        u_int32_t       tx_addr_high;
                    164:        u_int32_t       tx_addr_low;
                    165:        u_int16_t       tx_hdr_offset;
                    166:        u_int16_t       tx_length;
                    167:        u_int8_t        tx_pad;
                    168:        u_int8_t        tx_nsegs;
                    169:        u_int8_t        tx_cksum_offset;
                    170:        u_int8_t        tx_flags;
                    171: #define  MYXTXD_FLAGS_SMALL    (1<<0)
                    172: #define  MYXTXD_FLAGS_FIRST    (1<<1)
                    173: #define  MYXTXD_FLAGS_ALIGN_ODD        (1<<2)
                    174: #define  MYXTXD_FLAGS_CKSUM    (1<<3)
                    175: #define  MYXTXD_FLAGS_NO_TSO   (1<<4)
                    176:
                    177: #define  MYXTXD_FLAGS_TSO_HDR  (1<<0)
                    178: #define  MYXTXD_FLAGS_TSO_LAST (1<<3)
                    179: #define  MYXTXD_FLAGS_TSO_CHOP (1<<4)
                    180: #define  MYXTXD_FLAGS_TSO_PLD  (1<<5)
                    181: } __packed;
                    182:
                    183: enum {
                    184:        MYXCMD_NONE                     = 0,
                    185:        MYXCMD_RESET                    = 1,
                    186:        MYXCMD_GET_VERSION              = 2,
                    187:        MYXCMD_SET_INTRQDMA             = 3,
                    188:        MYXCMD_SET_BIGBUFSZ             = 4,
                    189:        MYXCMD_SET_SMALLBUFSZ           = 5,
                    190:        MYXCMD_GET_TXRINGOFF            = 6,
                    191:        MYXCMD_GET_RXSMALLRINGOFF       = 7,
                    192:        MYXCMD_GET_RXBIGRINGOFF         = 8,
                    193:        MYXCMD_GET_INTRACKOFF           = 9,
                    194:        MYXCMD_GET_INTRDEASSERTOFF      = 10,
                    195:        MYXCMD_GET_TXRINGSZ             = 11,
                    196:        MYXCMD_GET_RXRINGSZ             = 12,
                    197:        MYXCMD_SET_INTRQSZ              = 13,
                    198:        MYXCMD_SET_IFUP                 = 14,
                    199:        MYXCMD_SET_IFDOWN               = 15,
                    200:        MYXCMD_SET_MTU                  = 16,
                    201:        MYXCMD_GET_INTRCOALDELAYOFF     = 17,
                    202:        MYXCMD_SET_STATSINTVL           = 18,
                    203:        MYXCMD_SET_STATSDMA_OLD         = 19,
                    204:        MYXCMD_SET_PROMISC              = 20,
                    205:        MYXCMD_UNSET_PROMISC            = 21,
                    206:        MYXCMD_SET_LLADDR               = 22,
                    207:        MYXCMD_SET_FC                   = 23,
                    208:        MYXCMD_UNSET_FC                 = 24,
                    209: #define  MYXCMD_FC_DEFAULT             MYXCMD_SET_FC   /* set flow control */
                    210:        MYXCMD_DMA_TEST                 = 25,
                    211:        MYXCMD_SET_ALLMULTI             = 26,
                    212:        MYXCMD_UNSET_ALLMULTI           = 27,
                    213:        MYXCMD_SET_MCASTGROUP           = 28,
                    214:        MYXCMD_UNSET_MCASTGROUP         = 29,
                    215:        MYXCMD_UNSET_MCAST              = 30,
                    216:        MYXCMD_SET_STATSDMA             = 31,
                    217:        MYXCMD_UNALIGNED_DMA_TEST       = 32,
                    218:        MYXCMD_GET_UNALIGNED_STATUS     = 33,
                    219:        MYXCMD_MAX                      = 34
                    220: };
                    221:
                    222: enum {
                    223:        MYXCMD_OK                       = 0,
                    224:        MYXCMD_UNKNOWN                  = 1,
                    225:        MYXCMD_ERR_RANGE                = 2,
                    226:        MYXCMD_ERR_BUSY                 = 3,
                    227:        MYXCMD_ERR_EMPTY                = 4,
                    228:        MYXCMD_ERR_CLOSED               = 5,
                    229:        MYXCMD_ERR_HASH                 = 6,
                    230:        MYXCMD_ERR_BADPORT              = 7,
                    231:        MYXCMD_ERR_RES                  = 8,
                    232:        MYXCMD_ERR_MULTICAST            = 9,
                    233:        MYXCMD_ERR_UNALIGNED            = 10
                    234: };
                    235:
                    236: #endif /* _MYX_REG_H */

CVSweb