Home | History | Annotate | Line # | Download | only in ic
lan9118reg.h revision 1.2.2.1
      1  1.2.2.1  uebayasi /*	$NetBSD: lan9118reg.h,v 1.2.2.1 2010/10/22 07:21:57 uebayasi Exp $	*/
      2      1.1  kiyohara /*
      3      1.1  kiyohara  * Copyright (c) 2008 KIYOHARA Takashi
      4      1.1  kiyohara  * All rights reserved.
      5      1.1  kiyohara  *
      6      1.1  kiyohara  * Redistribution and use in source and binary forms, with or without
      7      1.1  kiyohara  * modification, are permitted provided that the following conditions
      8      1.1  kiyohara  * are met:
      9      1.1  kiyohara  * 1. Redistributions of source code must retain the above copyright
     10      1.1  kiyohara  *    notice, this list of conditions and the following disclaimer.
     11      1.1  kiyohara  * 2. Redistributions in binary form must reproduce the above copyright
     12      1.1  kiyohara  *    notice, this list of conditions and the following disclaimer in the
     13      1.1  kiyohara  *    documentation and/or other materials provided with the distribution.
     14      1.1  kiyohara  *
     15      1.1  kiyohara  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     16      1.1  kiyohara  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17      1.1  kiyohara  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18      1.1  kiyohara  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     19      1.1  kiyohara  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20      1.1  kiyohara  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     21      1.1  kiyohara  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     22      1.1  kiyohara  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     23      1.1  kiyohara  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     24      1.1  kiyohara  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25      1.1  kiyohara  * POSSIBILITY OF SUCH DAMAGE.
     26      1.1  kiyohara  */
     27      1.1  kiyohara 
     28      1.1  kiyohara #ifndef _LAN9118REG_H_
     29      1.1  kiyohara #define _LAN9118REG_H_
     30      1.1  kiyohara 
     31      1.1  kiyohara #define LAN9118_IOSIZE	0x100
     32      1.1  kiyohara 
     33      1.2  kiyohara #define LAN9118_ID_9115	0x0115
     34      1.2  kiyohara #define LAN9118_ID_9116	0x0116
     35      1.2  kiyohara #define LAN9118_ID_9117	0x0117
     36      1.2  kiyohara #define LAN9118_ID_9118	0x0118
     37      1.2  kiyohara #define LAN9218_ID_9215	0x115a
     38      1.2  kiyohara #define LAN9218_ID_9217	0x117a
     39      1.2  kiyohara #define LAN9218_ID_9218	0x118a
     40      1.2  kiyohara 
     41  1.2.2.1  uebayasi #define LAN9210_ID_9210	0x9210
     42  1.2.2.1  uebayasi #define LAN9210_ID_9211	0x9211
     43  1.2.2.1  uebayasi #define LAN9220_ID_9220	0x9220
     44  1.2.2.1  uebayasi #define LAN9220_ID_9221	0x9221
     45  1.2.2.1  uebayasi 
     46      1.2  kiyohara #define IS_LAN9118(id)	((id) >= LAN9118_ID_9115 && (id) <= LAN9118_ID_9118)
     47      1.2  kiyohara #define IS_LAN9218(id)	((id) >= LAN9218_ID_9215 && (id) <= LAN9218_ID_9218)
     48      1.1  kiyohara 
     49      1.1  kiyohara #define LAN9118_IPHY_ADDR	0x01	/* Internal PHY Address */
     50      1.1  kiyohara 
     51      1.1  kiyohara 
     52      1.1  kiyohara #define LAN9118_RXDFIFOP	0x00	/* RX Data FIFO Port */
     53      1.1  kiyohara #define LAN9118_RXDFIFOAP	0x04	/* RX Data FIFO Alias Ports */
     54      1.1  kiyohara #define LAN9118_TXDFIFOP	0x20	/* TX Data FIFO Port */
     55      1.1  kiyohara #define LAN9118_TXDFIFOAP	0x24	/* TX Data FIFO Alias Ports */
     56      1.1  kiyohara #define LAN9118_RXSFIFOP	0x40	/* RX Status FIFO Port */
     57      1.1  kiyohara #define LAN9118_RXSFIFOPEEK	0x44	/* RX Status FIFO PEEK */
     58      1.1  kiyohara #define LAN9118_TXSFIFOP	0x48	/* TX Status FIFO Port */
     59      1.1  kiyohara #define LAN9118_TXSFIFOPEEK	0x4c	/* TX Status FIFO PEEK */
     60      1.1  kiyohara 
     61      1.1  kiyohara /* System Control and Status Registers */
     62      1.1  kiyohara #define LAN9118_ID_REV		0x50	/* Chip ID and Revision */
     63      1.1  kiyohara #define LAN9118_ID_REV_ID(x)		(((x) >> 16) & 0xffff)
     64      1.1  kiyohara #define LAN9118_ID_REV_REV(x)		((x) & 0xffff)
     65      1.1  kiyohara #define LAN9118_IRQ_CFG		0x54	/* Main Interrupt Configuration */
     66      1.1  kiyohara #define LAN9118_IRQ_CFG_INT_DEAS(t)	((t) << 24) /* Intr Deassert Interval */
     67      1.1  kiyohara #define LAN9118_IRQ_CFG_INT_DEAS_CLR	(1 << 14)   /* Intr Deass Intrval clr */
     68      1.1  kiyohara #define LAN9118_IRQ_CFG_INT_DEAS_STS	(1 << 13)   /* Intr Deassert Status */
     69      1.1  kiyohara #define LAN9118_IRQ_CFG_IRQ_INT		(1 << 12)   /* Master Interrupt */
     70      1.1  kiyohara #define LAN9118_IRQ_CFG_IRQ_EN		(1 << 8)    /* IRQ Enable */
     71      1.1  kiyohara #define LAN9118_IRQ_CFG_IRQ_POL		(1 << 4)    /* IRQ Polarity */
     72      1.1  kiyohara #define LAN9118_IRQ_CFG_IRQ_TYPE	(1 << 0)    /* IRQ Buffer Type */
     73      1.1  kiyohara #define LAN9118_INT_STS		0x58	/* Interrupt Status */
     74      1.1  kiyohara #define LAN9118_INT_EN		0x5c	/* Interrupt Enable Register */
     75      1.1  kiyohara #define LAN9118_INT_SW_INT		(1 << 31) /* Software Interrupt */
     76      1.1  kiyohara #define LAN9118_INT_TXSTOP_INT		(1 << 25) /* TX Stopped */
     77      1.1  kiyohara #define LAN9118_INT_RXSTOP_INT		(1 << 24) /* RX Stopped */
     78      1.1  kiyohara #define LAN9118_INT_RXDFH_INT		(1 << 23) /* RX Drppd Frm Cnt Halfway */
     79      1.1  kiyohara #define LAN9118_INT_TX_IOC		(1 << 21) /* TX IOC Interrupt */
     80      1.1  kiyohara #define LAN9118_INT_RXD_INT		(1 << 20) /* RX DMA Interrupt */
     81      1.1  kiyohara #define LAN9118_INT_GPT_INT		(1 << 19) /* GP Timer */
     82      1.1  kiyohara #define LAN9118_INT_PHY_INT		(1 << 18) /* PHY */
     83      1.1  kiyohara #define LAN9118_INT_PME_INT		(1 << 17) /* Power Management Event */
     84      1.1  kiyohara #define LAN9118_INT_TXSO		(1 << 16) /* TX Status FIFO Overflow */
     85      1.1  kiyohara #define LAN9118_INT_RWT			(1 << 15) /* Rcv Watchdog Time-out */
     86      1.1  kiyohara #define LAN9118_INT_RXE			(1 << 14) /* Receive Error */
     87      1.1  kiyohara #define LAN9118_INT_TXE			(1 << 13) /* Transmitter Error */
     88      1.1  kiyohara #define LAN9118_INT_TDFO		(1 << 10) /* TX Data FIFO Overrun */
     89      1.1  kiyohara #define LAN9118_INT_TDFA		(1 << 9)  /* TX Data FIFO Available */
     90      1.1  kiyohara #define LAN9118_INT_TSFF		(1 << 8)  /* TX Status FIFO Full */
     91      1.1  kiyohara #define LAN9118_INT_TSFL		(1 << 7)  /* TX Status FIFO Level */
     92      1.1  kiyohara #define LAN9118_INT_RXDF_INT		(1 << 6)  /* RX Dropped Frame Intr */
     93      1.1  kiyohara #define LAN9118_INT_RSFF		(1 << 4)  /* RX Status FIFO Full */
     94      1.1  kiyohara #define LAN9118_INT_RSFL		(1 << 3)  /* RX Status FIFO Level */
     95      1.1  kiyohara #define LAN9118_INT_GPIOX_INT(x)	(1 << (x)) /* GPIO[2:0] */
     96      1.1  kiyohara /*				0x60	   Reserved for future use */
     97      1.1  kiyohara #define LAN9118_BYTE_TEST	0x64	/* Read-only byte order testing reg */
     98      1.1  kiyohara #define LAN9118_BYTE_TEST_VALUE		0x87654321
     99      1.1  kiyohara #define LAN9118_FIFO_INT	0x68	/* FIFO Level Interrupt */
    100      1.1  kiyohara #define LAN9118_FIFO_INT_TXDAL(x)	((x) << 24) /* TX Data Available Lvl */
    101      1.1  kiyohara #define LAN9118_FIFO_INT_TXSL(x)	((x) << 16) /* TX Status Level */
    102      1.1  kiyohara #define LAN9118_FIFO_INT_RXSL(x)	((x) << 0)  /* RX Status Level */
    103      1.1  kiyohara #define LAN9118_RX_CFG		0x6c	/* Receive Configuration */
    104      1.1  kiyohara #define LAN9118_RX_CFG_RXEA_4B		(0 << 30) /* RX End Alignment: 4 Byte */
    105      1.1  kiyohara #define LAN9118_RX_CFG_RXEA_16B		(1 << 30) /*                  16 Byte */
    106      1.1  kiyohara #define LAN9118_RX_CFG_RXEA_32B		(2 << 30) /*                  32 Byte */
    107      1.1  kiyohara #define LAN9118_RX_CFG_RX_DMA_CNT(x)	((x) << 16) /* RX DMA Count */
    108      1.1  kiyohara #define LAN9118_RX_CFG_RX_DUMP		(1 << 15)   /* Force RX Discard */
    109      1.1  kiyohara #define LAN9118_RX_CFG_RXDOFF(x)	((x) << 8)  /* RX Data Offset */
    110      1.1  kiyohara #define LAN9118_TX_CFG		0x70	/* Transmit Configuration */
    111      1.1  kiyohara #define LAN9118_TX_CFG_TXS_DUMP		(1 << 15) /* Force TX Status Discard */
    112      1.1  kiyohara #define LAN9118_TX_CFG_TXD_DUMP		(1 << 14) /* Force TX Data Discard */
    113      1.1  kiyohara #define LAN9118_TX_CFG_TXSAO		(1 << 2)  /* TX Status Allow Overrun */
    114      1.1  kiyohara #define LAN9118_TX_CFG_TX_ON		(1 << 1)  /* Transmitter Enable */
    115      1.1  kiyohara #define LAN9118_TX_CFG_STOP_TX		(1 << 0)  /* Stop Transmitter */
    116      1.1  kiyohara #define LAN9118_HW_CFG		0x74	/* Hardware Configuration */
    117      1.1  kiyohara #define LAN9118_HW_CFG_MBO		(1 << 20)/* Must Be One */
    118      1.1  kiyohara #define LAN9118_HW_CFG_TX_FIF_MASK	(0xf << 16)	/* TX FIFO Size */
    119      1.1  kiyohara #define LAN9118_HW_CFG_TX_FIF_SZ(sz)	((sz) << 16)
    120      1.1  kiyohara #define LAN9118_HW_CFG_PHY_CLK_SEL_MASK	(3 << 5) /* PHY Clock Select */
    121      1.1  kiyohara #define LAN9118_HW_CFG_PHY_CLK_SEL_IPHY	(0 << 5) /*   Internal PHY */
    122      1.1  kiyohara #define LAN9118_HW_CFG_PHY_CLK_SEL_EMII	(1 << 5) /*   External MII Port */
    123      1.1  kiyohara #define LAN9118_HW_CFG_PHY_CLK_SEL_CD	(2 << 5) /*   Clock Disabled */
    124      1.1  kiyohara #define LAN9118_HW_CFG_SMI_SEL		(1 << 4) /* Serial Mgmt Interface Sel */
    125      1.1  kiyohara #define LAN9118_HW_CFG_EXT_PHY_DET	(1 << 3) /* External PHY Detect */
    126      1.1  kiyohara #define LAN9118_HW_CFG_EXT_PHY_EN	(1 << 2) /* External PHY Enable */
    127      1.1  kiyohara #define LAN9118_HW_CFG_SRST_TO		(1 << 1) /* Soft Reset Timeout */
    128      1.1  kiyohara #define LAN9118_HW_CFG_SRST		(1 << 0) /* Soft Reset */
    129      1.1  kiyohara #define LAN9118_RX_DP_CTL	0x78	/* RX Datapath Control */
    130      1.1  kiyohara #define LAN9118_RX_DP_CTL_RX_FFWD	(1 << 31)/* RX Data FIFO Fast Forward */
    131      1.1  kiyohara #define LAN9118_RX_FIFO_INF	0x7c	/* Receive FIFO Information */
    132      1.1  kiyohara #define LAN9118_RX_FIFO_INF_RXSUSED(x)	(((x) >> 16) & 0xff) /*Sts Used Space*/
    133      1.1  kiyohara #define LAN9118_RX_FIFO_INF_RXDUSED(x)	((x) & 0xffff)	/*Data FIFO Used Space*/
    134      1.1  kiyohara #define LAN9118_TX_FIFO_INF	0x80	/* Transmit FIFO Information */
    135      1.1  kiyohara #define LAN9118_TX_FIFO_INF_TXSUSED(x)	(((x) >> 16) & 0xff) /*Sts Used Space*/
    136      1.1  kiyohara #define LAN9118_TX_FIFO_INF_TDFREE(x)	((x) & 0xffff) /*Data FIFO Free Space*/
    137      1.1  kiyohara #define LAN9118_PMT_CTRL	0x84	/* Power Management Control */
    138      1.1  kiyohara #define LAN9118_PMT_CTRL_PM_MODE_MASK	(3 << 12)
    139      1.1  kiyohara #define LAN9118_PMT_CTRL_PM_MODE_D0	(0 << 12)
    140      1.1  kiyohara #define LAN9118_PMT_CTRL_PM_MODE_D1	(1 << 12)
    141      1.1  kiyohara #define LAN9118_PMT_CTRL_PM_MODE_D2	(2 << 12)
    142      1.1  kiyohara #define LAN9118_PMT_CTRL_PHY_RST	(1 << 10) /* PHY Reset */
    143      1.1  kiyohara #define LAN9118_PMT_CTRL_WOL_EN		(1 << 9)  /* Wake-On-LAN Enable */
    144      1.1  kiyohara #define LAN9118_PMT_CTRL_ED_EN		(1 << 8)  /* Energy-Detect Enable */
    145      1.1  kiyohara #define LAN9118_PMT_CTRL_PME_TYPE	(1 << 6)  /* PME Buffer Type */
    146      1.1  kiyohara #define LAN9118_PMT_CTRL_WUPS_NWUED	(0 << 4) /* WAKE-UP Status: No Event */
    147      1.1  kiyohara #define LAN9118_PMT_CTRL_WUPS_ED	(1 << 4) /* WAKE-UP Status: Energy */
    148      1.1  kiyohara #define LAN9118_PMT_CTRL_WUPS_WUD	(2 << 4) /* WAKE-UP Status: Wake-up */
    149      1.1  kiyohara #define LAN9118_PMT_CTRL_PME_IND	(1 << 3)  /* PME indication */
    150      1.1  kiyohara #define LAN9118_PMT_CTRL_PME_POL	(1 << 2)  /* PME Polarity */
    151      1.1  kiyohara #define LAN9118_PMT_CTRL_PME_EN		(1 << 1)  /* PME Enable */
    152      1.1  kiyohara #define LAN9118_PMT_CTRL_READY		(1 << 0)  /* Device Ready */
    153      1.1  kiyohara #define LAN9118_GPIO_CFG	0x88	/* General Purpose IO Configuration */
    154      1.1  kiyohara #define LAN9118_GPIO_CFG_LEDX_EN(x)	(1 << ((x) + 28))  /* LED[3:1] enable */
    155      1.1  kiyohara #define LAN9118_GPIO_CFG_GPIO_INT_POL(p) (1 << ((p) + 24)) /* Intr Polarity */
    156      1.1  kiyohara #define LAN9118_GPIO_CFG_EEPR_EN	(7 << 20)          /* EEPROM Enable */
    157      1.1  kiyohara #define LAN9118_GPIO_CFG_GPIOBUFN(n)	(1 << ((n) + 16))  /* Buffer Type */
    158      1.1  kiyohara #define LAN9118_GPIO_CFG_GPDIRN(n)	(1 << ((n) + 8))   /* Direction */
    159      1.1  kiyohara #define LAN9118_GPIO_CFG_GPODN(n)	(1 << (n)) /* GPIO Data (3,4 is WO) */
    160      1.1  kiyohara #define LAN9118_GPT_CFG		0x8c	/* General Purpose Timer Config */
    161      1.1  kiyohara #define LAN9118_GPT_CNT		0x90	/* General Purpose Timer Count */
    162      1.1  kiyohara /*				0x94	   Reserved for future use */
    163      1.1  kiyohara #define LAN9118_WORD_SWAP	0x98	/* WORD SWAP Register */
    164      1.1  kiyohara #define LAN9118_FREE_RUN	0x9c	/* Free Run Counter */
    165      1.1  kiyohara #define LAN9118_RX_DROP		0xa0	/* RX Drop Frame Counter */
    166      1.1  kiyohara #define LAN9118_MAC_CSR_CMD	0xa4	/* MAC CSR Synchronizer Command */
    167      1.1  kiyohara #define LAN9118_MAC_CSR_CMD_BUSY	(1 << 31)
    168      1.1  kiyohara #define LAN9118_MAC_CSR_CMD_W		(0 << 30)
    169      1.1  kiyohara #define LAN9118_MAC_CSR_CMD_R		(1 << 30)
    170      1.1  kiyohara #define LAN9118_MAC_CSR_CMD_ADDRESS(a)	((a) & 0xff)
    171      1.1  kiyohara #define LAN9118_MAC_CSR_DATA	0xa8	/* MAC CSR Synchronizer Data */
    172      1.1  kiyohara #define LAN9118_AFC_CFG		0xac	/* Automatic Flow Control Config */
    173      1.1  kiyohara #define LAN9118_AFC_CFG_AFC_HI(x)	((x) << 16)
    174      1.1  kiyohara #define LAN9118_AFC_CFG_AFC_LO(x)	((x) << 8)
    175      1.1  kiyohara #define LAN9118_AFC_CFG_BACK_DUR(x)	((x) << 4)
    176      1.1  kiyohara #define LAN9118_AFC_CFG_FCMULT		(1 << 3) /* Flow Control on Multicast */
    177      1.1  kiyohara #define LAN9118_AFC_CFG_FCBRD		(1 << 2) /* Flow Control on Broadcast */
    178      1.1  kiyohara #define LAN9118_AFC_CFG_FCADD		(1 << 1) /* Flow Control on Addr Dec */
    179      1.1  kiyohara #define LAN9118_AFC_CFG_FCANY		(1 << 0) /* Flow Control on Any Frame */
    180      1.1  kiyohara #define LAN9118_E2P_CMD		0xb0	/* EEPROM command */
    181      1.1  kiyohara #define LAN9118_E2P_CMD_EPCB		(1 << 31) /* EPC Busy */
    182      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_READ	(0 << 28) /* EPC Command: READ */
    183      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_EWDS	(1 << 28) /*              EWDS */
    184      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_EWEN	(2 << 28) /*              EWEN */
    185      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_WRITE	(3 << 28) /*              WRITE */
    186      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_WRAL	(4 << 28) /*              WRAL */
    187      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_ERASE	(5 << 28) /*              ERASE */
    188      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_ERAL	(6 << 28) /*              ERAL */
    189      1.1  kiyohara #define LAN9118_E2P_CMD_EPCC_RELOAD	(7 << 28) /*              Reload */
    190      1.1  kiyohara #define LAN9118_E2P_CMD_EPCTO		(1 << 9)  /* EPC Time-out */
    191      1.1  kiyohara #define LAN9118_E2P_CMD_MACAL		(1 << 8)  /* MAC Address Loaded */
    192      1.1  kiyohara #define LAN9118_E2P_CMD_EPCA(a)		((a) & 0xff) /* EPC Address */
    193      1.1  kiyohara #define LAN9118_E2P_DATA	0xb4	/* EEPROM Data */
    194      1.1  kiyohara /*				0xb8 - 0xfc Reserved for future use */
    195      1.1  kiyohara 
    196      1.1  kiyohara /* MAC Control and Status Registers */
    197      1.1  kiyohara #define LAN9118_MAC_CR		0x1	/* MAC Control Register */
    198      1.1  kiyohara #define LAN9118_MAC_CR_RXALL		(1 << 31) /* Receive All Mode */
    199      1.1  kiyohara #define LAN9118_MAC_CR_RCVOWN		(1 << 23) /* Disable Receive Own */
    200      1.1  kiyohara #define LAN9118_MAC_CR_LOOPBK		(1 << 21) /* Loopback operation Mode */
    201      1.1  kiyohara #define LAN9118_MAC_CR_FDPX		(1 << 20) /* Full Duplex Mode */
    202      1.1  kiyohara #define LAN9118_MAC_CR_MCPAS		(1 << 19) /* Pass All Multicast */
    203      1.1  kiyohara #define LAN9118_MAC_CR_PRMS		(1 << 18) /* Promiscuous Mode */
    204      1.1  kiyohara #define LAN9118_MAC_CR_INVFILT		(1 << 17) /* Inverse filtering */
    205      1.1  kiyohara #define LAN9118_MAC_CR_PASSBAD		(1 << 16) /* Pass Bad Frames */
    206      1.1  kiyohara #define LAN9118_MAC_CR_HO		(1 << 15) /* Hash Only Filtering mode */
    207      1.1  kiyohara #define LAN9118_MAC_CR_HPFILT		(1 << 13) /* Hash/Perfect Flt Mode */
    208      1.1  kiyohara #define LAN9118_MAC_CR_LCOLL		(1 << 12) /* Late Collision Control */
    209      1.1  kiyohara #define LAN9118_MAC_CR_BCAST		(1 << 11) /* Disable Broardcast Frms */
    210      1.1  kiyohara #define LAN9118_MAC_CR_DISRTY		(1 << 10) /* Disable Retry */
    211      1.1  kiyohara #define LAN9118_MAC_CR_PADSTR		(1 << 8)  /* Automatic Pad String */
    212      1.1  kiyohara #define LAN9118_MAC_CR_BOLMT		(1 << 7)  /* BackOff Limit */
    213      1.1  kiyohara #define LAN9118_MAC_CR_DFCHK		(1 << 5)  /* Deferral Check */
    214      1.1  kiyohara #define LAN9118_MAC_CR_TXEN		(1 << 3)  /* Transmitter enable */
    215      1.1  kiyohara #define LAN9118_MAC_CR_RXEN		(1 << 2)  /* Receiver enable */
    216      1.1  kiyohara #define LAN9118_ADDRH		0x2	/* MAC Address High */
    217      1.1  kiyohara #define LAN9118_ADDRL		0x3	/* MAC Address Low */
    218      1.1  kiyohara #define LAN9118_HASHH		0x4	/* Multicast Hash Table High */
    219      1.1  kiyohara #define LAN9118_HASHL		0x5	/* Multicast Hash Table Low */
    220      1.1  kiyohara #define LAN9118_MII_ACC		0x6	/* MII Access */
    221      1.1  kiyohara #define LAN9118_MII_ACC_PHYA(a)		((a) << 11)	/* PHY Address */
    222      1.1  kiyohara #define LAN9118_MII_ACC_MIIRINDA(i)	((i) << 6)	/* MII Register Index */
    223      1.1  kiyohara #define LAN9118_MII_ACC_MIIWNR		(1 << 1)	/* MII Write */
    224      1.1  kiyohara #define LAN9118_MII_ACC_MIIBZY		(1 << 0)	/* MII Busy */
    225      1.1  kiyohara #define LAN9118_MII_DATA	0x7	/* MII Data */
    226      1.1  kiyohara #define LAN9118_FLOW		0x8	/* Flow Control */
    227      1.1  kiyohara #define LAN9118_FLOW_FCPT(t)		((t) << 16) /* Pause Time */
    228      1.1  kiyohara #define LAN9118_FLOW_FCPASS		(1 << 2)    /* Pass Control Frame */
    229      1.1  kiyohara #define LAN9118_FLOW_FCEN		(1 << 1)    /* Flow Control Enable */
    230      1.1  kiyohara #define LAN9118_FLOW_FCBUSY		(1 << 0)    /* Flow Control Busy */
    231      1.1  kiyohara #define LAN9118_VLAN1		0x9	/* VLAN1 Tag */
    232      1.1  kiyohara #define LAN9118_VLAN2		0xa	/* VLAN2 Tag */
    233      1.1  kiyohara #define LAN9118_WUFF		0xb	/* Wake-up Frame Filter */
    234      1.1  kiyohara #define LAN9118_WUCSR		0xc	/* Wake-up Control and Status */
    235      1.1  kiyohara 
    236      1.1  kiyohara /* PHY Registers */
    237      1.1  kiyohara #define LAN9118_MCSR		0x11	/* Mode Control/Status Register */
    238      1.1  kiyohara #define LAN9118_MCSR_EDPWRDOWN		(1 << 13) /* Energy Detect Power Down */
    239      1.1  kiyohara #define LAN9118_MCSR_ENERGYON		(1 << 1)
    240      1.1  kiyohara #define LAN9118_SMR		0x12	/* Special Modes Register */
    241      1.1  kiyohara #define LAN9118_SMR_PHYAD		(0x01)
    242      1.1  kiyohara #define LAN9118_SCSI		0x1b	/* Special Control/Status Indications */
    243      1.1  kiyohara #define LAN9118_SCSI_VCOOFF_LP		(1 << 10)
    244      1.1  kiyohara #define LAN9118_SCSI_XPOL		(1 << 4)  /* Polarity state */
    245      1.1  kiyohara #define LAN9118_ISR		0x1d	/* Interrupt Source Register */
    246      1.1  kiyohara #define LAN9118_IMR		0x1e	/* Interrupt Mask Register */
    247      1.1  kiyohara #define LAN9118_I_ENERGYON		(1 << 7)
    248      1.1  kiyohara #define LAN9118_I_AUTONEGOCOMPL		(1 << 6)
    249      1.1  kiyohara #define LAN9118_I_REMOTEFAULT		(1 << 5)
    250      1.1  kiyohara #define LAN9118_I_LINKDOWN		(1 << 4)
    251      1.1  kiyohara #define LAN9118_I_AUTONEGOLPACK		(1 << 3) /* AutoNego LP Acknowledge */
    252      1.1  kiyohara #define LAN9118_I_PDF			(1 << 2) /* Parallel Detection Fault */
    253      1.1  kiyohara #define LAN9118_I_AUTONEGOPR		(1 << 1) /* AutoNego Page Received */
    254      1.1  kiyohara #define LAN9118_PHYSCSR		0x1f	/* PHY Special Control/Status Reg */
    255      1.1  kiyohara #define LAN9118_PHYSCSR_AUTODONE	(1 << 12) /* AutoNego done indication */
    256      1.1  kiyohara #define LAN9118_PHYSCSR_SI_10		(1 << 2)  /* Speed Indication */
    257      1.1  kiyohara #define LAN9118_PHYSCSR_SI_100		(2 << 2)
    258      1.1  kiyohara #define LAN9118_PHYSCSR_SI_FDX		(4 << 2)
    259      1.1  kiyohara 
    260      1.1  kiyohara 
    261      1.1  kiyohara /* TX Command 'A' Format */
    262      1.1  kiyohara #define LAN9118_TXC_A_IC		(1 << 31) /* Interrupt on Completion */
    263      1.1  kiyohara #define LAN9118_TXC_A_BEA_4B		(0 << 24) /* Buffer End Alignment: 4B */
    264      1.1  kiyohara #define LAN9118_TXC_A_BEA_16B		(1 << 24) /*                      16B */
    265      1.1  kiyohara #define LAN9118_TXC_A_BEA_32B		(2 << 24) /*                      32B */
    266      1.1  kiyohara #define LAN9118_TXC_A_DSO(x)		((x) << 16) /*Data Start Offset: bytes*/
    267      1.1  kiyohara #define LAN9118_TXC_A_FS		(1 << 13) /* First Segment */
    268      1.1  kiyohara #define LAN9118_TXC_A_LS		(1 << 12) /* Last Segment */
    269      1.1  kiyohara #define LAN9118_TXC_A_BS(x)		((x) << 0) /* Buffer Size */
    270      1.1  kiyohara 
    271      1.1  kiyohara /* TX Command 'B' Format */
    272      1.1  kiyohara #define LAN9118_TXC_B_PT(x)		((x) << 16) /* Packet Tag */
    273      1.1  kiyohara #define LAN9118_TXC_B_ACRCD		(1 << 13)  /* Add CRC Disable */
    274      1.1  kiyohara #define LAN9118_TXC_B_DEFP		(1 << 12)  /* Dis Ether Frame Padding */
    275      1.1  kiyohara #define LAN9118_TXC_B_PL(x)		((x) << 0) /* Packet Length */
    276      1.1  kiyohara 
    277      1.1  kiyohara /* TX Status Format */
    278      1.1  kiyohara #define LAN9118_TXS_PKTTAG(x)		(((x) >> 16) & 0xff) /* Packet Tag */
    279      1.1  kiyohara #define LAN9118_TXS_ES			(1 << 15)	/* Error Status */
    280      1.1  kiyohara #define LAN9118_TXS_LOC			(1 << 11)	/* Loss Of Carrier */
    281      1.1  kiyohara #define LAN9118_TXS_NC			(1 << 10)	/* No Carrier */
    282      1.1  kiyohara #define LAN9118_TXS_LCOL		(1 << 9)	/* Late Collision */
    283      1.1  kiyohara #define LAN9118_TXS_ECOL		(1 << 8)	/* Excessive Collision*/
    284      1.1  kiyohara #define LAN9118_TXS_COLCNT(x)		(((x) >> 3) & 0xf) /* Collision Count */
    285      1.1  kiyohara #define LAN9118_TXS_ED			(1 << 2)	/* Excessive Deferral */
    286      1.1  kiyohara #define LAN9118_TXS_DEFERRED		(1 << 0)	/* Deferred */
    287      1.1  kiyohara 
    288      1.1  kiyohara /* RX Status Format */
    289      1.1  kiyohara #define LAN9118_RXS_FILTFAIL		(1 << 30) /* Filtering Fail */
    290      1.1  kiyohara #define LAN9118_RXS_PKTLEN(x)		(((x) >> 16) & 0x3fff) /* Packet Len */
    291      1.1  kiyohara #define LAN9118_RXS_ES			(1 << 15) /* Error Status */
    292      1.1  kiyohara #define LAN9118_RXS_BCF			(1 << 13) /* Broadcast Frame */
    293      1.1  kiyohara #define LAN9118_RXS_LENERR		(1 << 12) /* Length Error */
    294      1.1  kiyohara #define LAN9118_RXS_RUNTF		(1 << 11) /* Runt Frame */
    295      1.1  kiyohara #define LAN9118_RXS_MCF			(1 << 10) /* Multicast Frame */
    296      1.1  kiyohara #define LAN9118_RXS_FTL			(1 << 7)  /* Frame Too Long */
    297      1.1  kiyohara #define LAN9118_RXS_COLS		(1 << 6)  /* Collision Seen */
    298      1.1  kiyohara #define LAN9118_RXS_FT			(1 << 5)  /* Frame Type */
    299      1.1  kiyohara #define LAN9118_RXS_RWTO		(1 << 4)  /* Rcv Watchdog time-out */
    300      1.1  kiyohara #define LAN9118_RXS_MIIERR		(1 << 3)  /* MII Error */
    301      1.1  kiyohara #define LAN9118_RXS_DBIT		(1 << 2)  /* Drabbling Bit */
    302      1.1  kiyohara #define LAN9118_RXS_CRCERR		(1 << 1)  /* CRC Error */
    303      1.1  kiyohara 
    304      1.1  kiyohara #endif	/* _LAN9118REG_H_ */
    305