Home | History | Annotate | Line # | Download | only in mace
if_mecreg.h revision 1.1
      1  1.1  sekiya /*	$NetBSD: if_mecreg.h,v 1.1 2004/01/18 04:06:43 sekiya Exp $	*/
      2  1.1  sekiya 
      3  1.1  sekiya /*
      4  1.1  sekiya  * Copyright (c) 2001 Christopher Sekiya
      5  1.1  sekiya  * Copyright (c) 2000 Soren S. Jorvang
      6  1.1  sekiya  * All rights reserved.
      7  1.1  sekiya  *
      8  1.1  sekiya  * Redistribution and use in source and binary forms, with or without
      9  1.1  sekiya  * modification, are permitted provided that the following conditions
     10  1.1  sekiya  * are met:
     11  1.1  sekiya  * 1. Redistributions of source code must retain the above copyright
     12  1.1  sekiya  *    notice, this list of conditions and the following disclaimer.
     13  1.1  sekiya  * 2. Redistributions in binary form must reproduce the above copyright
     14  1.1  sekiya  *    notice, this list of conditions and the following disclaimer in the
     15  1.1  sekiya  *    documentation and/or other materials provided with the distribution.
     16  1.1  sekiya  * 3. All advertising materials mentioning features or use of this software
     17  1.1  sekiya  *    must display the following acknowledgement:
     18  1.1  sekiya  *          This product includes software developed for the
     19  1.1  sekiya  *          NetBSD Project.  See http://www.NetBSD.org/ for
     20  1.1  sekiya  *          information about NetBSD.
     21  1.1  sekiya  * 4. The name of the author may not be used to endorse or promote products
     22  1.1  sekiya  *    derived from this software without specific prior written permission.
     23  1.1  sekiya  *
     24  1.1  sekiya  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     25  1.1  sekiya  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     26  1.1  sekiya  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     27  1.1  sekiya  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     28  1.1  sekiya  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     29  1.1  sekiya  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     30  1.1  sekiya  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     31  1.1  sekiya  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     32  1.1  sekiya  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     33  1.1  sekiya  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     34  1.1  sekiya  */
     35  1.1  sekiya 
     36  1.1  sekiya /*
     37  1.1  sekiya  * MACE MAC110 ethernet register definitions
     38  1.1  sekiya  */
     39  1.1  sekiya 
     40  1.1  sekiya #define MEC_MAC_CONTROL			0
     41  1.1  sekiya 
     42  1.1  sekiya #define MEC_MAC_CORE_RESET		0x0000000000000001
     43  1.1  sekiya #define MEC_MAC_FULL_DUPLEX		0x0000000000000002 /* 1 to enable */
     44  1.1  sekiya #define MEC_MAC_INT_LOOPBACK		0x0000000000000004 /* 0 = normal oper */
     45  1.1  sekiya #define MEC_MAC_SPEED_SELECT		0x0000000000000008 /* 0/1 10/100 */
     46  1.1  sekiya #define MEC_MAC_MII_SELECT		0x0000000000000010
     47  1.1  sekiya #define MEC_MAC_FILTER_STATION		0x0000000000000000
     48  1.1  sekiya #define MEC_MAC_FILTER_MATCHMULTI	0x0000000000000020
     49  1.1  sekiya #define MEC_MAC_FILTER_ALLMULTI		0x0000000000000040
     50  1.1  sekiya #define MEC_MAC_FILTER_PROMISC		0x0000000000000060
     51  1.1  sekiya #define MEC_MAC_LINK_FAILURE		0x0000000000000080
     52  1.1  sekiya #define MEC_MAC_IPGT			0x0000000000007f00
     53  1.1  sekiya #define MEC_MAC_IPGT_SHIFT		8
     54  1.1  sekiya #define MEC_MAC_IPGR1			0x00000000003f8000
     55  1.1  sekiya #define MEC_MAC_IPGR1_SHIFT		15
     56  1.1  sekiya #define MEC_MAC_IPGR2			0x000000001fc00000
     57  1.1  sekiya #define MEC_MAC_IPGR2_SHIFT		22
     58  1.1  sekiya #define MEC_MAC_REVISION		0x00000000e0000000
     59  1.1  sekiya #define MEC_MAC_REVISION_SHIFT		29
     60  1.1  sekiya 
     61  1.1  sekiya #define MEC_INT_STATUS                  0x08
     62  1.1  sekiya #define MEC_INT_TX_EMPTY                0x00000001
     63  1.1  sekiya #define MEC_INT_TX_PACKET_SENT          0x00000002
     64  1.1  sekiya #define MEC_INT_TX_LINK_FAIL            0x00000004
     65  1.1  sekiya #define MEC_INT_TX_MEM_ERROR            0x00000008
     66  1.1  sekiya #define MEC_INT_TX_ABORT                0x00000010
     67  1.1  sekiya #define MEC_INT_RX_THRESHOLD            0x00000020
     68  1.1  sekiya #define MEC_INT_RX_FIFO_UNDERFLOW       0x00000040
     69  1.1  sekiya #define MEC_INT_RX_DMA_UNDERFLOW        0x00000080
     70  1.1  sekiya #define MEC_INT_RX_MCL_FIFO_ALIAS       0x00001f00
     71  1.1  sekiya #define MEC_INT_TX_RING_BUFFER_ALIAS    0x01ff0000
     72  1.1  sekiya #define MEC_INT_RX_SEQUENCE_NUMBER      0x3e000000
     73  1.1  sekiya #define MEC_INT_MCAST_HASH_OUTPUT       0x40000000
     74  1.1  sekiya 
     75  1.1  sekiya #define MEC_DMA_CONTROL                 0x10
     76  1.1  sekiya #define MEC_DMA_TX_INT_ENABLE           0x00000001
     77  1.1  sekiya #define MEC_DMA_TX_DMA_ENABLE           0x00000002
     78  1.1  sekiya #define MEC_DMA_TX_RING_SIZE_MASK       0x0000000c
     79  1.1  sekiya #define MEC_DMA_RX_INT_THRESHOLD        0x000001f0
     80  1.1  sekiya #define MEC_DMA_RX_INT_ENABLE           0x00000200
     81  1.1  sekiya #define MEC_DMA_RX_RUNT                 0x00000400
     82  1.1  sekiya #define MEC_DMA_RX_PACKET_GATHER        0x00000800
     83  1.1  sekiya #define MEC_DMA_RX_DMA_OFFSET           0x00007000
     84  1.1  sekiya #define MEC_DMA_RX_DMA_ENABLE           0x00008000
     85  1.1  sekiya 
     86  1.1  sekiya #define MEC_TIMER                       0x18
     87  1.1  sekiya #define MEC_TX_ALIAS                    0x20
     88  1.1  sekiya #define MEC_TX_ALIAS_INT_ENABLE         0x01
     89  1.1  sekiya 
     90  1.1  sekiya #define MEC_RX_ALIAS                    0x28
     91  1.1  sekiya #define MEC_RX_ALIAS_INT_ENABLE         0x200
     92  1.1  sekiya #define MEC_RX_ALIAS_INT_THRESHOLD      0x1f0
     93  1.1  sekiya 
     94  1.1  sekiya #define MEC_TX_RING_PTR                 0x30
     95  1.1  sekiya #define MEC_TX_RING_WRITE_PTR           0x000001ff
     96  1.1  sekiya #define MEC_TX_RING_READ_PTR            0x01ff0000
     97  1.1  sekiya #define MEC_TX_RING_PTR_ALIAS           0x38
     98  1.1  sekiya 
     99  1.1  sekiya #define MEC_RX_FIFO                     0x40
    100  1.1  sekiya #define MEC_RX_FIFO_ELEMENT_COUNT       0x0000001f
    101  1.1  sekiya #define MEC_RX_FIFO_READ_PTR            0x00000f00
    102  1.1  sekiya #define MEC_RX_FIFO_GEN_NUMBER          0x00001000
    103  1.1  sekiya #define MEC_RX_FIFO_WRITE_PTR           0x000f0000
    104  1.1  sekiya #define MEC_RX_FIFO_GEN_NUMBER_2        0x00100000
    105  1.1  sekiya 
    106  1.1  sekiya #define MEC_RX_FIFO_ALIAS1              0x48
    107  1.1  sekiya #define MEC_RX_FIFO_ALIAS2              0x50
    108  1.1  sekiya #define MEC_TX_VECTOR                   0x58
    109  1.1  sekiya #define MEC_IRQ_VECTOR                  0x58
    110  1.1  sekiya 
    111  1.1  sekiya #define MEC_PHY_DATA		12 << 3
    112  1.1  sekiya #define MEC_PHY_DATA_BUSY	0x8000
    113  1.1  sekiya #define MEC_PHY_DATA_VALUE	0x7fff
    114  1.1  sekiya 
    115  1.1  sekiya #define MEC_PHY_ADDRESS		13 << 3
    116  1.1  sekiya #define MEC_PHY_ADDR_REGISTER	0x000000000000001f
    117  1.1  sekiya #define MEC_PHY_ADDR_DEVICE	0x00000000000003e0
    118  1.1  sekiya #define MEC_PHY_ADDR_DEVSHIFT	5
    119  1.1  sekiya 
    120  1.1  sekiya #define MEC_PHY_READ_INITIATE	14 << 3
    121  1.1  sekiya 
    122  1.1  sekiya #define MEC_PHY_BACKOFF		15 << 3
    123  1.1  sekiya 
    124  1.1  sekiya #define MEC_STATION		0xa0
    125  1.1  sekiya #define MEC_STATION_ALT		0xa8
    126  1.1  sekiya #define MEC_STATION_MASK	0x0000ffffffffffff
    127  1.1  sekiya 
    128  1.1  sekiya #define MEC_MULTICAST                   0xb0
    129  1.1  sekiya #define MEC_TX_RING_BASE                0xb8
    130  1.1  sekiya #define MEC_TX_PKT1_CMD_1               0xc0
    131  1.1  sekiya #define MEC_TX_PKT1_BUFFER_1            0xc8
    132  1.1  sekiya #define MEC_TX_PKT1_BUFFER_2            0xd0
    133  1.1  sekiya #define MEC_TX_PKT1_BUFFER_3            0xd8
    134  1.1  sekiya #define MEC_TX_PKT2_CMD_1               0xe0
    135  1.1  sekiya #define MEC_TX_PKT2_BUFFER_1            0xe8
    136  1.1  sekiya #define MEC_TX_PKT2_BUFFER_2            0xf0
    137  1.1  sekiya #define MEC_TX_PKT2_BUFFER_3            0xf8
    138  1.1  sekiya #define MEC_MCL_RX_FIFO                 0x100
    139  1.1  sekiya 
    140  1.1  sekiya /* these structs should be moved to if_mecvar.h */
    141  1.1  sekiya 
    142  1.1  sekiya /* the first eight bytes of the tx vector are status.  it can be a command
    143  1.1  sekiya    header, a transmit concatenation pointer, or a status vector. */
    144  1.1  sekiya 
    145  1.1  sekiya #define MEC_TX_COMMAND_HDR_LENGTH       0x0000ffff      /* length, bytes-1 */
    146  1.1  sekiya #define MEC_TX_COMMAND_HDR_START_OFFSET 0x007f0000      /* minimum 8 bytes */
    147  1.1  sekiya #define MEC_TX_COMMAND_HDR_TX_IRQ       0x00800000 /* raise TX DMA on abort */
    148  1.1  sekiya #define MEC_TX_COMMAND_CONCAT_1         0x01000000
    149  1.1  sekiya #define MEC_TX_COMMAND_CONCAT_2         0x02000000
    150  1.1  sekiya #define MEC_TX_COMMAND_CONCAT_3         0x04000000
    151  1.1  sekiya 
    152  1.1  sekiya #define MEC_TX_CONCAT_PTR_ADDRESS       0x00000000fffffff8
    153  1.1  sekiya #define MEC_TX_CONCAT_PTR_LENGTH        0x0000ffff00000000
    154  1.1  sekiya 
    155  1.1  sekiya #define MEC_TX_STATUS_VECTOR_LENGTH             0x000000000000ffff
    156  1.1  sekiya #define MEC_TX_STATUS_VECTOR_COL_RETRY          0x00000000000f0000
    157  1.1  sekiya #define MEC_TX_STATUS_VECTOR_LATE_COLLISION     0x0000000000100000
    158  1.1  sekiya #define MEC_TX_STATUS_VECTOR_CRC_ERROR          0x0000000000200000
    159  1.1  sekiya #define MEC_TX_STATUS_VECTOR_DEFERRED           0x0000000000400000
    160  1.1  sekiya #define MEC_TX_STATUS_VECTOR_TX_SUCCESS         0x0000000000800000
    161  1.1  sekiya #define MEC_TX_STATUS_VECTOR_TOOBIG             0x0000000001000000
    162  1.1  sekiya #define MEC_TX_STATUS_VECTOR_UNDERRUN           0x0000000002000000
    163  1.1  sekiya #define MEC_TX_STATUS_VECTOR_COLLISIONS         0x0000000004000000
    164  1.1  sekiya #define MEC_TX_STATUS_VECTOR_EX_DEFERRAL        0x0000000008000000
    165  1.1  sekiya #define MEC_TX_STATUS_VECTOR_COLLIDED           0x0000000010000000
    166  1.1  sekiya #define MEC_TX_STATUS_VECTOR_VALID              0x8000000000000000
    167  1.1  sekiya 
    168  1.1  sekiya struct tx_fifo {
    169  1.1  sekiya         u_int64_t control;
    170  1.1  sekiya         u_int8_t data[120];
    171  1.1  sekiya };
    172  1.1  sekiya 
    173  1.1  sekiya struct rx_fifo {
    174  1.1  sekiya         u_int64_t control;
    175  1.1  sekiya         u_int8_t data[120];
    176  1.1  sekiya };
    177