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

Annotation of sys/dev/ic/mtd8xxreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: mtd8xxreg.h,v 1.2 2003/10/21 18:58:49 jmc Exp $       */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2003 Oleg Safiullin <form@pdp11.org.ru>
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice unmodified, this list of conditions, and the following
        !            12:  *    disclaimer.
        !            13:  * 2. Redistributions in binary form must reproduce the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer in the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  *
        !            17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
        !            18:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            19:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            20:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
        !            21:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            22:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            23:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            24:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            25:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            26:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            27:  * SUCH DAMAGE.
        !            28:  *
        !            29:  */
        !            30:
        !            31: #ifndef __DEV_IC_MTD8XXREG_H__
        !            32: #define __DEV_IC_MTD8XXREG_H__
        !            33:
        !            34: #define MTD_PCI_LOIO   0x10            /* PCI I/O base address register */
        !            35: #define MTD_PCI_LOMEM  0x14            /* PCI memory base address register */
        !            36:
        !            37: #define MTD_TIMEOUT    1000            /* Software reset timeout */
        !            38:
        !            39: #define MII_OPCODE_RD  0x6000
        !            40: #define MII_OPCODE_WR  0x5002
        !            41:
        !            42: /*
        !            43:  * MTD8xx command and status register.
        !            44:  */
        !            45: #define MTD_PAR0       0x00            /* Physical address register 0*/
        !            46: #define MTD_PAR4       0x04            /* Physical address register 4 */
        !            47: #define MTD_MAR0       0x08            /* Multicast address register 0 */
        !            48: #define MTD_MAR4       0x0C            /* Multicast address register 4 */
        !            49: #define MTD_TCRRCR     0x18            /* Transmit/receive config */
        !            50: #define MTD_BCR                0x1C            /* Bus configuration register */
        !            51: #define MTD_TXPDR      0x20            /* Transmit poll demand */
        !            52: #define MTD_RXPDR      0x24            /* Receive poll demand */
        !            53: #define MTD_RXCWP      0x28            /* Receive current word pointer */
        !            54: #define MTD_TXLBA      0x2C            /* Transmit list base address */
        !            55: #define MTD_RXLBA      0x30            /* Receive list base address */
        !            56: #define MTD_ISR                0x34            /* Interrupt status register */
        !            57: #define MTD_IMR                0x38            /* Interrupt mask register */
        !            58: #define MTD_TSR                0x48            /* Tally counter register */
        !            59: #define MTD_MIIMGT     0x40            /* MII management register */
        !            60: #define MTD_PHYCSR     0x4C            /* PHY control status register */
        !            61:
        !            62:
        !            63: /*
        !            64:  * Receive configuration register.
        !            65:  */
        !            66: #define RCR_RXS                0x00008000U     /* Receive process is running */
        !            67: #define RCR_EIEN       0x00004000U     /* Early interrupt enabled */
        !            68: #define RCR_RFCEN      0x00002000U     /* Receive flow control enabled */
        !            69: #define RCR_NDFA       0x00001000U     /* Not defined flow control address */
        !            70: #define RCR_RBLEN      0x00000800U     /* Receive burst length enable */
        !            71: #define RCR_RPBL1      0x00000000U     /*   1 word */
        !            72: #define RCR_RPBL4      0x00000100U     /*   4 words */
        !            73: #define RCR_RPBL8      0x00000200U     /*   8 words */
        !            74: #define RCR_RPBL16     0x00000300U     /*  16 words */
        !            75: #define RCR_RPBL32     0x00000400U     /*  32 words */
        !            76: #define RCR_RPBL64     0x00000500U     /*  64 words */
        !            77: #define RCR_RPBL128    0x00000600U     /* 128 words */
        !            78: #define RCR_RPBL512    0x00000700U     /* 512 words */
        !            79: #define RCR_PROM       0x00000080U     /* Promiscuous mode */
        !            80: #define RCR_AB         0x00000040U     /* Accept broadcast addresses */
        !            81: #define RCR_AM         0x00000020U     /* Accept multicast addresses */
        !            82: #define RCR_ARP                0x00000008U     /* Accept runt packets */
        !            83: #define RCR_ALP                0x00000004U     /* Accept long packets */
        !            84: #define RCR_SEP                0x00000002U     /* Accept packets w/ receive errors */
        !            85: #define RCR_RE         0x00000001U     /* Receive enable */
        !            86:
        !            87:
        !            88: /*
        !            89:  * Transmit configuration register.
        !            90:  */
        !            91: #define TCR_TXS                0x80000000U     /* Tx process is running */
        !            92: #define TCR_BACKOPT    0x10000000U     /* Optional back-off */
        !            93: #define TCR_FBACK      0x08000000U     /* Fast back-off */
        !            94: #define TCR_ENHANCED   0x02000000U     /* Enhanced transmit mode */
        !            95: #define TCR_TFCEN      0x01000000U     /* Ttansmit flow control enable */
        !            96: #define TCR_TFT64      0x00000000U     /*   64 bytes */
        !            97: #define TCR_TFT32      0x00200000U     /*   32 bytes */
        !            98: #define TCR_TFT128     0x00400000U     /*  128 bytes */
        !            99: #define TCR_TFT256     0x00600000U     /*  256 bytes */
        !           100: #define TCR_TFT512     0x00800000U     /*  512 bytes */
        !           101: #define TCR_TFT768     0x00A00000U     /*  768 bytes */
        !           102: #define TCR_TFT1024    0x00C00000U     /* 1024 bytes */
        !           103: #define TCR_TFTSF      0x00E00000U     /* Transmit store and forward */
        !           104: #define TCR_FD         0x00100000U     /* Full-duplex mode */
        !           105: #define TCR_PS         0x00080000U     /* Port speed is 10Mbit/s */
        !           106: #define TCR_TE         0x00040000U     /* Transmit enable */
        !           107: #define TCR_LB         0x00020000U     /* MII loopback on */
        !           108:
        !           109:
        !           110: /*
        !           111:  * Bus configuration register.
        !           112:  */
        !           113: #define BCR_PROG       0x00000200U     /* Programming */
        !           114: #define BCR_RLE                0x00000100U     /* Read line cmd enable */
        !           115: #define BCR_RME                0x00000080U     /* Read multiple cmd enable */
        !           116: #define BCR_WIE                0x00000040U     /* Write and invalidate cmd enable */
        !           117:                                        /* Programmable burst length */
        !           118: #define BCR_PBL1       0x00000000U     /*   1 dword */
        !           119: #define BCR_PBL4       0x00000008U     /*   4 dwords */
        !           120: #define BCR_PBL8       0x00000010U     /*   8 dwords */
        !           121: #define BCR_PBL16      0x00000018U     /*  16 dwords */
        !           122: #define BCR_PBL32      0x00000020U     /*  32 dwords */
        !           123: #define BCR_PBL64      0x00000028U     /*  64 dwords */
        !           124: #define BCR_PBL128     0x00000030U     /* 128 dwords */
        !           125: #define BCR_PBL512     0x00000038U     /* 512 dwords */
        !           126: #define BCR_SWR                0x00000001U     /* Software reset */
        !           127:
        !           128:
        !           129: /*
        !           130:  * Interrupt status register.
        !           131:  */
        !           132: #define ISR_PDF                0x00040000U     /* Parallel detection fault */
        !           133: #define ISR_RFCON      0x00020000U     /* Receive flow control XON */
        !           134: #define ISR_RFCOFF     0x00010000U     /* Receive flow control XOFF */
        !           135: #define ISR_LSC                0x00008000U     /* Link status change */
        !           136: #define ISR_ANC                0x00004000U     /* Auto-negotiation completed */
        !           137: #define ISR_FBE                0x00002000U     /* Fatal bus error */
        !           138: #define ISR_ETMASK     0x00001800U     /* Error type mask */
        !           139: #define ISR_ET(x)      ((x) & ISR_ETMASK)
        !           140: #define ISR_ETPARITY   0x00000000U     /* Parity error */
        !           141: #define ISR_ETMASTER   0x00000800U     /* Master abort */
        !           142: #define ISR_ETTARGET   0x00001000U     /* Target abort */
        !           143: #define ISR_TUNF       0x00000400U     /* Transmit underflow */
        !           144: #define ISR_ROVF       0x00000200U     /* Receive overflow */
        !           145: #define ISR_ETI                0x00000100U     /* Early transfer interrupt */
        !           146: #define ISR_ERI                0x00000080U     /* Early receive interrupt */
        !           147: #define ISR_CNTOVF     0x00000040U     /* CRC or MPA tally ounter overflow */
        !           148: #define ISR_RBU                0x00000020U     /* Receive buffer unavailable */
        !           149: #define ISR_TBU                0x00000010U     /* Transmit buffer unavailable */
        !           150: #define ISR_TI         0x00000008U     /* Transmit interrupt */
        !           151: #define ISR_RI         0x00000004U     /* Receive interrupt */
        !           152: #define ISR_RXERI      0x00000002U     /* Receive error interrupt */
        !           153:
        !           154: #define ISR_INTRS      (ISR_RBU | ISR_TBU | ISR_TI | ISR_RI | ISR_ETI)
        !           155:
        !           156:
        !           157: /*
        !           158:  * Interrupt mask register.
        !           159:  */
        !           160: #define IMR_MPDF       0x00040000U     /* Parallel detection fault */
        !           161: #define IMR_MRFCON     0x00020000U     /* Receive flow control XON */
        !           162: #define IMR_MRFCOFF    0x00010000U     /* Receive flow control XOFF */
        !           163: #define IMR_MLSC       0x00008000U     /* Link status change */
        !           164: #define IMR_MANC       0x00004000U     /* Auto-negotiation completed */
        !           165: #define IMR_MFBE       0x00002000U     /* Fatal bus error */
        !           166: #define IMR_MTUNF      0x00000400U     /* Transmit underflow */
        !           167: #define IMR_MROVF      0x00000200U     /* Receive overflow */
        !           168: #define IMR_METI       0x00000100U     /* Early transfer interrupt */
        !           169: #define IMR_MERI       0x00000080U     /* Early receive interrupt */
        !           170: #define IMR_MCNTOVF    0x00000040U     /* CRC or MPA tally ounter overflow */
        !           171: #define IMR_MRBU       0x00000020U     /* Receive buffer unavailable */
        !           172: #define IMR_MTBU       0x00000010U     /* Transmit buffer unavailable */
        !           173: #define IMR_MTI                0x00000008U     /* Transmit interrupt */
        !           174: #define IMR_MRI                0x00000004U     /* Receive interrupt */
        !           175: #define IMR_MRXERI     0x00000002U     /* Receive error interrupt */
        !           176:
        !           177: #define IMR_INTRS      (IMR_MRBU | IMR_MTBU | IMR_MTI | IMR_MRI | IMR_METI)
        !           178:
        !           179: /*
        !           180:  * Transmit status register.
        !           181:  */
        !           182: #define TSR_NCR_MASK   0x0000FFFFU
        !           183: #define TSR_NCR_SHIFT  0
        !           184: #define TSR_NCR_GET(x) (((x) & TSR_NCR_MASK) >> TSR_NCR_SHIFT)
        !           185:                                        /* Retry collisions count */
        !           186:
        !           187: /*
        !           188:  * MII management register.
        !           189:  */
        !           190: #define MIIMGT_READ    0x00000000U
        !           191: #define MIIMGT_WRITE   0x00000008U
        !           192: #define MIIMGT_MDO     0x00000004U
        !           193: #define MIIMGT_MDI     0x00000002U
        !           194: #define MIIMGT_MDC     0x00000001U
        !           195: #define MIIMGT_MASK    0x0000000FU
        !           196:
        !           197: /*
        !           198:  * Command and status register space access macros.
        !           199:  */
        !           200: #define CSR_READ_1(reg)        bus_space_read_1(sc->sc_bust, sc->sc_bush, reg)
        !           201: #define CSR_WRITE_1(reg, val) \
        !           202:     bus_space_write_1(sc->sc_bust, sc->sc_bush, reg, val)
        !           203:
        !           204: #define CSR_READ_2(reg)        bus_space_read_2(sc->sc_bust, sc->sc_bush, reg)
        !           205: #define CSR_WRITE_2(reg, vat) \
        !           206:     bus_space_write_2(sc->sc_bust, sc->sc_bush, reg, val)
        !           207:
        !           208: #define CSR_READ_4(reg)        bus_space_read_4(sc->sc_bust, sc->sc_bush, reg)
        !           209: #define CSR_WRITE_4(reg, val) \
        !           210:     bus_space_write_4(sc->sc_bust, sc->sc_bush, reg, val)
        !           211:
        !           212: #define CSR_SETBIT(reg, val) CSR_WRITE_4(reg, CSR_READ_4(reg) | (val))
        !           213: #define CSR_CLRBIT(reg, val) CSR_WRITE_4(reg, CSR_READ_4(reg) & ~(val))
        !           214:
        !           215: #endif /* __DEV_IC_MTD8XXREG_H__ */

CVSweb