2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * CDDL HEADER START
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders *
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * The contents of this file are subject to the terms of the
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Common Development and Distribution License (the "License").
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * You may not use this file except in compliance with the License.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders *
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * or http://www.opensolaris.org/os/licensing.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * See the License for the specific language governing permissions
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * and limitations under the License.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders *
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * When distributing Covered Code, include this CDDL HEADER in each
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * If applicable, add the following below this CDDL HEADER, with the
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * fields enclosed by brackets "[]" replaced with your own identifying
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * information: Portions Copyright [yyyy] [name of copyright owner]
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders *
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * CDDL HEADER END
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Use is subject to license terms.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Register definitions for the VIA Rhine ethernet adapters
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#ifndef _VRREG_H
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define _VRREG_H
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#ifdef __cplusplus
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders extern "C" {
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#endif
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MAC address
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ETHERADDR 0x00
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Receive Configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * The thresholds denote the level in the FIFO before transmission
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * to host memory starts.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG 0x06
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_ACCEPTERROR (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_ACCEPTRUNT (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_ACCEPTMULTI (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_ACCEPTBROAD (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_PROMISC (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_0 (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_1 (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_2 (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_BITS (VR_RXCFG_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_RXCFG_FIFO_THRESHOLD_1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_RXCFG_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_64 (0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_32 (VR_RXCFG_FIFO_THRESHOLD_0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_128 (VR_RXCFG_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_256 (VR_RXCFG_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_RXCFG_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_512 (VR_RXCFG_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_768 (VR_RXCFG_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_RXCFG_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_1024 (VR_RXCFG_FIFO_THRESHOLD_2 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_RXCFG_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCFG_FIFO_THRESHOLD_STFW (VR_RXCFG_FIFO_THRESHOLD_BITS)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Transmit Configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * The transmission starts when the data in the FIFO reaches the threshold.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Store and Forward means that a transmission starts when a complete frame
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * is in the FIFO.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG 0x07
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_8021PQ_EN (1 << 0) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_LOOPBACK_0 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_LOOPBACK_1 (2 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_BACKOFF_NATIONAL (1 << 3) /* < VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_0 (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_1 (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_2 (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_BITS (VR_TXCFG_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_TXCFG_FIFO_THRESHOLD_1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_TXCFG_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_128 (0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_256 (VR_TXCFG_FIFO_THRESHOLD_0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_512 (VR_TXCFG_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_1024 (VR_TXCFG_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_TXCFG_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCFG_FIFO_THRESHOLD_STFW (VR_TXCFG_FIFO_THRESHOLD_BITS)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Chip control
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0 0x08
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_RESERVED (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_DMA_ENABLE (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_DMA_STOP (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_RX_DMA_ENABLE (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_TX_DMA_ENABLE (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_TXPOLL (1 << 5) /* < 6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_RXPOLL (1 << 6) /* < 6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL0_DMA_GO (VR_CTRL0_DMA_ENABLE | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_CTRL0_RX_DMA_ENABLE | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_CTRL0_TX_DMA_ENABLE | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_CTRL0_TXPOLL)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1 0x09
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_RESERVED (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_UNICAST_EN (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_MACFULLDUPLEX (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_NOAUTOPOLL (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_RESERVED2 (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_TXPOLL (1 << 5) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_RXPOLL (1 << 6) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CTRL1_RESET (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_T_XQNWAKE 0x0a /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Interrupt Status
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * This register reflects NIC status
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * The host reads it to determine the cause of the interrupt
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * This register must be cleared after power-up
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0 0x0C
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_DONE (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_TX_DONE (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_ERR (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_TX_ERR (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_TX_BUF_UFLOW (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_LINKERR (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_BUSERR (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_STATSMAX (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_EARLY (1 << 8)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_TX_FIFO_UFLOW (1 << 9)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_FIFO_OFLOW (1 << 10)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_DROPPED (1 << 11)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_RX_NOBUF (1 << 12)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_TX_ABORT (1 << 13)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_LINKSTATUS (1 << 14)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR0_GENERAL (1 << 15)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Interrupt Configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * All bits in this register correspond to the bits in the Interrupt Status
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * register Setting individual bits will enable the corresponding interrupt
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * This register defaults to all zeros on power up
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0 0x0E
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_DONE VR_ISR0_RX_DONE
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_TX_DONE VR_ISR0_TX_DONE
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_ERR VR_ISR0_RX_ERR
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_TX_ERR VR_ISR0_TX_ERR
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_TX_BUF_UFLOW VR_ISR0_TX_BUF_UFLOW
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_LINKERR VR_ISR0_RX_LINKERR
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_BUSERR VR_ISR0_BUSERR
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_STATSMAX VR_ISR0_STATSMAX
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_EARLY VR_ISR0_RX_EARLY
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_TX_FIFO_UFLOW VR_ISR0_TX_FIFO_UFLOW
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_FIFO_OFLOW VR_ISR0_RX_FIFO_OFLOW
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_DROPPED VR_ISR0_RX_DROPPED
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_RX_NOBUF VR_ISR0_RX_NOBUF
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_TX_ABORT VR_ISR0_TX_ABORT
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_LINKSTATUS VR_ISR0_LINKSTATUS
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR0_GENERAL VR_ISR0_GENERAL
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Mulicast address registers (MAR), 8 bytes
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MAR0 0x10 /* - 0x13 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MAR1 0x14 /* - 0x17 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * VT6105M has a multicast/vlan filter and the hash bits are also used as
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * CAM data port
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MCAM0 0x10 /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MCAM1 0x11
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MCAM2 0x12
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MCAM3 0x13
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MCAM4 0x14
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MCAM5 0x15
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_VCAM0 0x16
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_VCAM1 0x17
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Start addresses of receive and transmit ring
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXADDR 0x18 /* - 0x1B */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXADDR 0x1C /* - 0x1F */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * VT6105M has 8 TX queues
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX7_ADDR 0x1C
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX6_ADDR 0x20
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX5_ADDR 0x24
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX4_ADDR 0x28
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX3_ADDR 0x2C
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX2_ADDR 0x30
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX1_ADDR 0x34
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TX0_ADDR 0x38
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Current and receive- and transmit descriptors.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * These are listed in the VT6102 manual but not in the VT6105.
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCUR_DES0 0x20 /* - 0x23 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCUR_DES1 0x24 /* - 0x27 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCUR_DES2 0x28 /* - 0x2B */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RXCUR_DES3 0x2C /* - 0x2F */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/* VIA secrets here */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_INTRLINE 0x3c
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_INTRPIN 0x3d
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/* VIA secrets here */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCUR_DES0 0x40 /* - 0x43 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCUR_DES1 0x44 /* - 0x47 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCUR_DES2 0x48 /* - 0x4B */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TXCUR_DES3 0x4C /* - 0x4F */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE0 0x50
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE0_QPKTDS 0x80
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE1 0x51
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FIFOTST 0x51
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * These are not in the datasheet but used in the 'fet' driver
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE2 0x52
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE2_PCEROPT 0x80 /* VT6102 only */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE2_DISABT 0x40
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE2_MRDPL 0x08 /* VT6107A1 and above */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE2_MODE10T 0x02
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3 0x53
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3_XONOPT 0x80
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3_TPACEN 0x40
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3_BACKOPT 0x20
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3_DLTSEL 0x10
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3_MIIDMY 0x08
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MODE3_MIION 0x04
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PCI_DELAY_TIMER 0x54
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FIFOCMD 0x56
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FIFOSTA 0x57
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/* VIA secrets here */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MII Configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR 0x6C
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_ADDR0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_ADDR1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_ADDR2 (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_ADDR3 (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_ADDR4 (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_ADDRBITS (VR_MIIPHYADDR_ADDR0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIPHYADDR_ADDR1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIPHYADDR_ADDR2 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIPHYADDR_ADDR3 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIPHYADDR_ADDR4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_MD_CLOCK_FAST (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_POLLBITS ((1 << 7) | (1 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_POLL1024 ((0 << 7) | (0 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_POLL512 ((0 << 7) | (1 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_POLL128 ((1 << 7) | (0 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIPHYADDR_POLL64 ((1 << 7) | (1 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MII status
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR 0x6D
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_SPEED (1 << 0) /* VT6102 and VT6105 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_LINKFAIL (1 << 1) /* VT6102 and VT6105 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_DUPLEX (1 << 2) /* VT6105 only */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_PHYERR (1 << 3) /* VT6102 and VT6105 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_PHYOPT (1 << 4) /* VT6102 only */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_NWAYLINKOK (1 << 4) /* VT6105 only */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_NWAYPAUSE (1 << 5) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_NWAYASMPAUSE (1 << 6) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIISR_PHYRST (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Bus control
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0 0x6E /* receive */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA2 (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMABITS (VR_BCR0_DMA0|VR_BCR0_DMA1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR0_DMA2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA32 (0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA64 (VR_BCR0_DMA0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA128 (VR_BCR0_DMA1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA256 (VR_BCR0_DMA0|VR_BCR0_DMA1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA512 (VR_BCR0_DMA2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMA1024 (VR_BCR0_DMA0|VR_BCR0_DMA2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_DMASTFW (VR_BCR0_DMABITS)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_0 (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_1 (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_2 (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_BITS (VR_BCR0_RX_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR0_RX_FIFO_THRESHOLD_1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR0_RX_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_64 (0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_32 (VR_BCR0_RX_FIFO_THRESHOLD_0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_128 (VR_BCR0_RX_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_256 (VR_BCR0_RX_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR0_RX_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_512 (VR_BCR0_RX_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_768 (VR_BCR0_RX_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR0_RX_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_1024 (VR_BCR0_RX_FIFO_THRESHOLD_1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR0_RX_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_RX_FIFO_THRESHOLD_STFW (VR_BCR0_RX_FIFO_THRESHOLD_BITS)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_LEDCR (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR0_MSEL (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1 0x6F /* transmit */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_POLLT_0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_POLLT_1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_POLLT_2 (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_0 (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_1 (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_2 (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_BITS (VR_BCR1_TX_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR1_TX_FIFO_THRESHOLD_1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR1_TX_FIFO_THRESHOLD_2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_128 (0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_256 (VR_BCR1_TX_FIFO_THRESHOLD_0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_512 (VR_BCR1_TX_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_1024 (VR_BCR1_TX_FIFO_THRESHOLD_0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_BCR1_FIFO_THRESHOLD_1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TX_FIFO_THRESHOLD_STFW (VR_BCR1_FIFO_THRESHOLD_BITS)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_TXQPRIO (1 << 6) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_BCR1_VLANFILTER (1 << 7) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MII Configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD 0x70
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_CLOCK (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_CLOCK_READ (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_CLOCK_WRITE (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_OUT (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_MODE_AUTO (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_WRITE (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_READ (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIICMD_MD_AUTO (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR 0x71
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MAD0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MAD1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MAD2 (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MAD3 (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MAD4 (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_BITS (VR_MIIADDR_MAD0 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIADDR_MAD1 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIADDR_MAD2 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIADDR_MAD3 | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_MIIADDR_MAD4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MDONE (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MAUTO (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIADDR_MIDLE (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIDATA 0x72
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIDATA_1 0x72
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIIDATA_2 0x73
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * EEPROM Config / Status
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL 0x74
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_DATAOUT (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_DATAIN (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_CLOCK (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_CHIPSELECT (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_DIRPROG (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_RELOAD (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_PROGRAM (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PROMCTL_PRGSTATUS (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Chip Configuration A
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGA 0x78
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGA_PRE_ACPI_WAKEUP (1 << 0) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGA_WAKEUP_PANIC (1 << 1) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGA_VLANTAG_INCRC (1 << 5) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGA_MIIOPT (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGA_EELOAD (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Chip Configuration B
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB 0x79
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_LATENCYTIMER (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_WWAIT (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_RWAIT (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_RXARBIT (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_TXARBIT (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_MRLDIS (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_PERRDIS (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGB_QPKTDIS (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Chip Configuration C
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC 0x7A
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_BPS0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_BPS1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_BPS2 (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_BTSEL (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_DLYEN (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_BROPT (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGC_MED3 (1 << 7) /* VT6102 */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Chip Configuration D
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD 0x7B
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_BAKOPT (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_MBA (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_CAP (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_CRADOM (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_PMCDIG (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_MRLEN (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_TAG_ON_SNAP (1 << 5) /* VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_DIAG (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CFGD_MMIOEN (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Tally counters
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TALLY_MPA 0x7c /* 16 bits */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TALLY_CRC 0x7e /* 16 bits */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Misceleneous register 0
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0 0x80
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0_TIMER0_EN (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0_TIMER0_SUSP (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0_HDXFEN (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0_FDXRFEN (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0_FDXTFEN (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC0_TIMER0_USEC_EN (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Misceleneous register 1
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC1 0x81
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC1_TIMER1_EN (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC1_VAXJMP (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MISC1_RESET (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Power management
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWR 0x83
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWR_DS0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWR_DS1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWR_WOLEN (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWR_WOLSR (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWR_LGWOL (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Second interrupt register status
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1 0x84
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_TIMER0 (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_TIMER1 (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_PHYEVENT (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_TDERR (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_SSRCI (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_UINTR_SET (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_UINTR_CLR (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ISR1_PWEI (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Second interrupt register configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1 0x86
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_TIMER0 VR_ISR1_TIMER0
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_TIMER1 VR_ISR1_TIMER1
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_PHYEVENT VR_ISR1_PHYEVENT
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_TDERR VR_ISR1_TDERR
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_SSRCI VR_ISR1_SSRCI
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_UINTR_SET VR_ISR1_UINTR_SET
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_UINTR_CLR VR_ISR1_UINTR_CLR
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_ICR1_PWEI VR_ISR1_PWEI
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Content Addressable Memory (CAM) stuff for the VT6105M
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_MASK 0x88
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL 0x92
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_RD (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_WR (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_SELECT_VLAN (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_ENABLE (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_WRITE (VR_CAM_CTRL_ENABLE | VR_CAM_CTRL_WR)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_READ (VR_CAM_CTRL_ENABLE | VR_CAM_CTRL_RD)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_RW (VR_CAM_CTRL_ENABLE | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders VR_CAM_CTRL_RD | VR_CAM_CTRL_WR)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_CTRL_DONE (0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CAM_ADDR 0x93
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MIB Control register
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_CTRL 0x94
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_CTRL_ENABLE (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_CTRL_HDUPLEX (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_CTRL_INCR (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_CTRL_RTN (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MIB port
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_PORT 0x96
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * MIB data
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_MIB_DATA 0x97
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Power configuration
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWRCFG 0xA1 /* VT6105LOM */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWRCFG_WOLEN (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWRCFG_WOLSR (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_PWRCFG_PHYPOWERDOWN (7 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Flow control, VT6105 and above
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR0 0x98
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR0_RXBUFCOUNT VR_FCR0
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1 0x99
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_HD_EN (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_FD_RX_EN (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_FD_TX_EN (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_XONXOFF_EN (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEOFFBITS ((1 << 5) | (1 << 4))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEOFF_24 ((0 << 5) | (0 << 4))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEOFF_32 ((0 << 5) | (1 << 4))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEOFF_48 ((1 << 5) | (0 << 4))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEOFF_64 ((1 << 5) | (1 << 4))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEONBITS ((1 << 7) | (1 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEON_04 ((0 << 7) | (0 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEON_08 ((0 << 7) | (1 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEON_16 ((1 << 7) | (0 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR1_PAUSEON_24 ((1 << 7) | (1 << 6))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR2 0x9a
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_FCR2_PAUSE (VR_FCR2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TIMER0 0x9c
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TIMER0_TIMEOUT VR_TIMER0 /* 16 bits */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TIMER1 0x9e
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TIMER1_TIMEOUT VR_TIMER1 /* 16 bits */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CRC_PATTERN0 0xb0 /* 32 bits, VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CRC_PATTERN1 0xb4 /* 32 bits, VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CRC_PATTERN2 0xb8 /* 32 bits, VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_CRC_PATTERN3 0xbC /* 32 bits, VT6105M */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Receive desctriptor
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_RXERR (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_CRCERR (1 << 1)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_FAE (1 << 2)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_FOV (1 << 3)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_LONG (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_RUNT (1 << 5)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_SERR (1 << 6)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_BUFF (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_EDP (1 << 8)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_STP (1 << 9)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_CHN (1 << 10)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_PHY (1 << 11)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_BAR (1 << 12)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_MAR (1 << 13)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_VIDHIT (1 << 14) /* VT6105M or reserved */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_RXOK (1 << 15)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_ABN ((1 << 27) | (1 << 28) | (1 << 29) | (1 << 30))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_RDES0_OWN (1U << 31)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/*
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders * Transmit descriptor
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_NCR ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_COL (1 << 4)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_CDH (1 << 7)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_ABT (1 << 8)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_OWC (1 << 9)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_CRS (1 << 10)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_UDF (1 << 11)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_TERR (1 << 15)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders/* VLAN stuff is for VT6105M only */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_VLANID ((1 << 27) | (1 << 26) | (1 << 25) | (1 << 24) \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders (1 << 23) | (1 << 22) | (1 << 21) | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders (1 << 20) | (1 << 19) | (1 << 18) | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders (1 << 17) | (1 << 16))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_VLANPRI ((1 << 30) | (1 << 29) | (1 << 28))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES0_OWN (1U << 31)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES1_LEN ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders (1 << 4) | (1 << 5) | (1 << 6) | \
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10))
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES1_CHN (1 << 15)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES1_CRC (1 << 16)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES1_STP (1 << 21) /* EDP/STP are flipped in DS6105! */
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES1_EDP (1 << 22)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES1_INTR (1 << 23)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#define VR_TDES3_SUPPRESS_INTR (1 << 0)
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders
2ca5b6595b95478e6568b0e77c6c83c8a870867aJoost Mulders#endif /* _VRREG_H */