1*5c1d0199Sgd78059 /* 2*5c1d0199Sgd78059 * CDDL HEADER START 3*5c1d0199Sgd78059 * 4*5c1d0199Sgd78059 * The contents of this file are subject to the terms of the 5*5c1d0199Sgd78059 * Common Development and Distribution License (the "License"). 6*5c1d0199Sgd78059 * You may not use this file except in compliance with the License. 7*5c1d0199Sgd78059 * 8*5c1d0199Sgd78059 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*5c1d0199Sgd78059 * or http://www.opensolaris.org/os/licensing. 10*5c1d0199Sgd78059 * See the License for the specific language governing permissions 11*5c1d0199Sgd78059 * and limitations under the License. 12*5c1d0199Sgd78059 * 13*5c1d0199Sgd78059 * When distributing Covered Code, include this CDDL HEADER in each 14*5c1d0199Sgd78059 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*5c1d0199Sgd78059 * If applicable, add the following below this CDDL HEADER, with the 16*5c1d0199Sgd78059 * fields enclosed by brackets "[]" replaced with your own identifying 17*5c1d0199Sgd78059 * information: Portions Copyright [yyyy] [name of copyright owner] 18*5c1d0199Sgd78059 * 19*5c1d0199Sgd78059 * CDDL HEADER END 20*5c1d0199Sgd78059 */ 21*5c1d0199Sgd78059 /* 22*5c1d0199Sgd78059 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*5c1d0199Sgd78059 * Use is subject to license terms. 24*5c1d0199Sgd78059 */ 25*5c1d0199Sgd78059 26*5c1d0199Sgd78059 #ifndef _SYS_DMFE_H 27*5c1d0199Sgd78059 #define _SYS_DMFE_H 28*5c1d0199Sgd78059 29*5c1d0199Sgd78059 #pragma ident "%Z%%M% %I% %E% SMI" 30*5c1d0199Sgd78059 31*5c1d0199Sgd78059 #ifdef __cplusplus 32*5c1d0199Sgd78059 extern "C" { 33*5c1d0199Sgd78059 #endif 34*5c1d0199Sgd78059 35*5c1d0199Sgd78059 /* Chip ID */ 36*5c1d0199Sgd78059 #define DAVICOM_VENDOR_ID 0x1282 37*5c1d0199Sgd78059 #define DEVICE_ID_9100 0x9100 38*5c1d0199Sgd78059 #define DEVICE_ID_9132 0x9132 39*5c1d0199Sgd78059 /* The 9102 and 9102A are distinguished by revision ID */ 40*5c1d0199Sgd78059 #define DEVICE_ID_9102 0x9102 41*5c1d0199Sgd78059 #define DEVICE_ID_9102A 0x9102 42*5c1d0199Sgd78059 43*5c1d0199Sgd78059 /* Streams */ 44*5c1d0199Sgd78059 #define DMFEHIWAT 32768 /* driver flow control high water */ 45*5c1d0199Sgd78059 #define DMFELOWAT 4096 /* driver flow control low water */ 46*5c1d0199Sgd78059 #define DMFEIDNUM 0 /* DMFE Id; zero works */ 47*5c1d0199Sgd78059 48*5c1d0199Sgd78059 /* Size/count parameters */ 49*5c1d0199Sgd78059 #define SROM_SIZE 128 50*5c1d0199Sgd78059 #define SETUPBUF_SIZE 192 /* Setup buffer size in bytes */ 51*5c1d0199Sgd78059 #define MCASTBUF_SIZE 512 /* multicast hash table size in bits */ 52*5c1d0199Sgd78059 #define HASH_POLY 0x04C11DB6 53*5c1d0199Sgd78059 #define HASH_CRC 0xFFFFFFFFU 54*5c1d0199Sgd78059 #define SETUPBUF_PHYS 39 /* word offset of station physical */ 55*5c1d0199Sgd78059 /* address within setup buffer */ 56*5c1d0199Sgd78059 57*5c1d0199Sgd78059 58*5c1d0199Sgd78059 /* 59*5c1d0199Sgd78059 * Tx/Rx descriptor ring entry formats 60*5c1d0199Sgd78059 * 61*5c1d0199Sgd78059 * These structures are not actually used; they are just here to show 62*5c1d0199Sgd78059 * the layout of the descriptor entries used by the DMFE chip hardware 63*5c1d0199Sgd78059 * (we do use "sizeof" these structures). The code uses the #defined 64*5c1d0199Sgd78059 * offsets below to access the various members of the descriptors, via 65*5c1d0199Sgd78059 * the DDI access functions (remember the DMFE h/w is little-endian). 66*5c1d0199Sgd78059 */ 67*5c1d0199Sgd78059 68*5c1d0199Sgd78059 struct rx_desc_type { 69*5c1d0199Sgd78059 uint32_t desc0; 70*5c1d0199Sgd78059 uint32_t desc1; 71*5c1d0199Sgd78059 uint32_t buffer1; 72*5c1d0199Sgd78059 uint32_t rd_next; 73*5c1d0199Sgd78059 }; 74*5c1d0199Sgd78059 75*5c1d0199Sgd78059 struct tx_desc_type { 76*5c1d0199Sgd78059 uint32_t desc0; 77*5c1d0199Sgd78059 uint32_t desc1; 78*5c1d0199Sgd78059 uint32_t buffer1; 79*5c1d0199Sgd78059 uint32_t td_next; 80*5c1d0199Sgd78059 }; 81*5c1d0199Sgd78059 82*5c1d0199Sgd78059 /* 83*5c1d0199Sgd78059 * Offsets & sizes for tx/rx descriptors, expressed in (d)words 84*5c1d0199Sgd78059 */ 85*5c1d0199Sgd78059 #define DESC0 0 86*5c1d0199Sgd78059 #define DESC1 1 87*5c1d0199Sgd78059 #define BUFFER1 2 88*5c1d0199Sgd78059 #define RD_NEXT 3 89*5c1d0199Sgd78059 #define TD_NEXT 3 90*5c1d0199Sgd78059 #define DESC_SIZE 4 91*5c1d0199Sgd78059 92*5c1d0199Sgd78059 /* 93*5c1d0199Sgd78059 * Receive descriptor description 94*5c1d0199Sgd78059 */ 95*5c1d0199Sgd78059 /* desc0 bit definitions */ 96*5c1d0199Sgd78059 #define RX_OVERFLOW (1UL<<0) 97*5c1d0199Sgd78059 #define RX_CRC (1UL<<1) 98*5c1d0199Sgd78059 #define RX_DRIBBLING (1UL<<2) 99*5c1d0199Sgd78059 #define RX_MII_ERR (1UL<<3) 100*5c1d0199Sgd78059 #define RX_RCV_WD_TO (1UL<<4) 101*5c1d0199Sgd78059 #define RX_FRAME_TYPE (1UL<<5) 102*5c1d0199Sgd78059 #define RX_COLLISION (1UL<<6) 103*5c1d0199Sgd78059 #define RX_FRAME2LONG (1UL<<7) 104*5c1d0199Sgd78059 #define RX_LAST_DESC (1UL<<8) 105*5c1d0199Sgd78059 #define RX_FIRST_DESC (1UL<<9) 106*5c1d0199Sgd78059 #define RX_MULTI_FRAME (1UL<<10) 107*5c1d0199Sgd78059 #define RX_RUNT_FRAME (1UL<<11) 108*5c1d0199Sgd78059 #define RX_LOOP_MODE (3UL<<12) 109*5c1d0199Sgd78059 #define RX_DESC_ERR (1UL<<14) 110*5c1d0199Sgd78059 #define RX_ERR_SUMMARY (1UL<<15) 111*5c1d0199Sgd78059 #define RX_FRAME_LEN (0x3fffUL<<16) 112*5c1d0199Sgd78059 #define RX_FILTER_FAIL (1UL<<30) 113*5c1d0199Sgd78059 #define RX_OWN (1UL<<31) 114*5c1d0199Sgd78059 115*5c1d0199Sgd78059 /* desc1 bit definitions */ 116*5c1d0199Sgd78059 #define RX_BUFFER_SIZE (0x7ff) 117*5c1d0199Sgd78059 #define RX_CHAINING (1UL<<24) 118*5c1d0199Sgd78059 #define RX_END_OF_RING (1UL<<25) 119*5c1d0199Sgd78059 120*5c1d0199Sgd78059 /* 121*5c1d0199Sgd78059 * Transmit descriptor description 122*5c1d0199Sgd78059 */ 123*5c1d0199Sgd78059 /* desc0 bit definitions */ 124*5c1d0199Sgd78059 #define TX_DEFERRED (1UL<<0) 125*5c1d0199Sgd78059 #define TX_UNDERFLOW (1UL<<1) 126*5c1d0199Sgd78059 #define TX_LINK_FAIL (1UL<<2) 127*5c1d0199Sgd78059 #define TX_COLL_COUNT (0xfUL<<3) 128*5c1d0199Sgd78059 #define TX_HEARTBEAT_FAIL (1UL<<7) 129*5c1d0199Sgd78059 #define TX_EXCESS_COLL (1UL<<8) 130*5c1d0199Sgd78059 #define TX_LATE_COLL (1UL<<9) 131*5c1d0199Sgd78059 #define TX_NO_CARRIER (1UL<<10) 132*5c1d0199Sgd78059 #define TX_CARRIER_LOSS (1UL<<11) 133*5c1d0199Sgd78059 #define TX_JABBER_TO (1UL<<14) 134*5c1d0199Sgd78059 #define TX_ERR_SUMMARY (1UL<<15) 135*5c1d0199Sgd78059 #define TX_SPARE (0x7fffUL<<16) 136*5c1d0199Sgd78059 #define TX_OWN (1UL<<31) 137*5c1d0199Sgd78059 138*5c1d0199Sgd78059 /* desc1 bit definitions */ 139*5c1d0199Sgd78059 #define TX_BUFFER_SIZE1 (0x7ffUL<<0) 140*5c1d0199Sgd78059 #define TX_BUFFER_SIZE2 (0x7ffUL<<11) 141*5c1d0199Sgd78059 #define TX_FILTER_TYPE0 (1UL<<22) 142*5c1d0199Sgd78059 #define TX_DISABLE_PAD (1UL<<23) 143*5c1d0199Sgd78059 #define TX_CHAINING (1UL<<24) 144*5c1d0199Sgd78059 #define TX_END_OF_RING (1UL<<25) 145*5c1d0199Sgd78059 #define TX_CRC_DISABLE (1UL<<26) 146*5c1d0199Sgd78059 #define TX_SETUP_PACKET (1UL<<27) 147*5c1d0199Sgd78059 #define TX_FILTER_TYPE1 (1UL<<28) 148*5c1d0199Sgd78059 #define TX_FIRST_DESC (1UL<<29) 149*5c1d0199Sgd78059 #define TX_LAST_DESC (1UL<<30) 150*5c1d0199Sgd78059 #define TX_INT_ON_COMP (1UL<<31) 151*5c1d0199Sgd78059 152*5c1d0199Sgd78059 153*5c1d0199Sgd78059 /* Device-defined PCI config space registers */ 154*5c1d0199Sgd78059 #define PCI_DMFE_CONF_CFDD 0x40 155*5c1d0199Sgd78059 #define CFDD_SNOOZE (1UL<<30) 156*5c1d0199Sgd78059 #define CFDD_SLEEP (1UL<<31) 157*5c1d0199Sgd78059 158*5c1d0199Sgd78059 159*5c1d0199Sgd78059 /* Operating registers in I/O or MEMORY space */ 160*5c1d0199Sgd78059 #define BUS_MODE_REG 0x00 161*5c1d0199Sgd78059 #define TX_POLL_REG 0x08 162*5c1d0199Sgd78059 #define RX_POLL_REG 0x10 163*5c1d0199Sgd78059 #define RX_BASE_ADDR_REG 0x18 164*5c1d0199Sgd78059 #define TX_BASE_ADDR_REG 0x20 165*5c1d0199Sgd78059 #define STATUS_REG 0x28 166*5c1d0199Sgd78059 #define OPN_MODE_REG 0x30 167*5c1d0199Sgd78059 #define INT_MASK_REG 0x38 168*5c1d0199Sgd78059 #define MISSED_FRAME_REG 0x40 169*5c1d0199Sgd78059 #define ETHER_ROM_REG 0x48 170*5c1d0199Sgd78059 #define BOOT_ROM_REG 0x50 171*5c1d0199Sgd78059 #define GP_TIMER_REG 0x58 172*5c1d0199Sgd78059 #define PHY_STATUS_REG 0x60 173*5c1d0199Sgd78059 #define FRAME_ACCESS_REG 0x68 174*5c1d0199Sgd78059 #define FRAME_DATA_REG 0x70 175*5c1d0199Sgd78059 #define W_J_TIMER_REG 0x78 176*5c1d0199Sgd78059 177*5c1d0199Sgd78059 178*5c1d0199Sgd78059 /* Bit descriptions of CSR registers */ 179*5c1d0199Sgd78059 180*5c1d0199Sgd78059 /* BUS_MODE_REG, CSR0 */ 181*5c1d0199Sgd78059 #define SW_RESET 0x00000001 182*5c1d0199Sgd78059 #define BURST_SIZE 0 /* unlimited burst length */ 183*5c1d0199Sgd78059 #define CACHE_ALIGN (3 << 14) /* 32 Dwords */ 184*5c1d0199Sgd78059 #define TX_POLL_INTVL (1 << 17) /* 200us polling */ 185*5c1d0199Sgd78059 #define READ_MULTIPLE (1 << 21) /* use Memory Read */ 186*5c1d0199Sgd78059 /* Multiple PCI cycles */ 187*5c1d0199Sgd78059 188*5c1d0199Sgd78059 /* STATUS_REG, CSR5 */ 189*5c1d0199Sgd78059 #define TX_PKTDONE_INT 0x00000001UL 190*5c1d0199Sgd78059 #define TX_STOPPED_INT 0x00000002UL 191*5c1d0199Sgd78059 #define TX_ALLDONE_INT 0x00000004UL 192*5c1d0199Sgd78059 #define TX_JABBER_INT 0x00000008UL 193*5c1d0199Sgd78059 #define TX_RESERVED_INT 0x00000010UL 194*5c1d0199Sgd78059 #define TX_UNDERFLOW_INT 0x00000020UL 195*5c1d0199Sgd78059 196*5c1d0199Sgd78059 #define RX_PKTDONE_INT 0x00000040UL 197*5c1d0199Sgd78059 #define RX_UNAVAIL_INT 0x00000080UL 198*5c1d0199Sgd78059 #define RX_STOPPED_INT 0x00000100UL 199*5c1d0199Sgd78059 #define RX_WATCHDOG_INT 0x00000200UL 200*5c1d0199Sgd78059 201*5c1d0199Sgd78059 #define TX_EARLY_INT 0x00000400UL 202*5c1d0199Sgd78059 #define GP_TIMER_INT 0x00000800UL 203*5c1d0199Sgd78059 #define LINK_STATUS_INT 0x00001000UL 204*5c1d0199Sgd78059 #define SYSTEM_ERR_INT 0x00002000UL 205*5c1d0199Sgd78059 #define RX_EARLY_INT 0x00004000UL 206*5c1d0199Sgd78059 207*5c1d0199Sgd78059 #define ABNORMAL_SUMMARY_INT 0x00008000UL 208*5c1d0199Sgd78059 #define NORMAL_SUMMARY_INT 0x00010000UL 209*5c1d0199Sgd78059 #define INT_STATUS_MASK 0x0001ffffUL 210*5c1d0199Sgd78059 211*5c1d0199Sgd78059 #define RX_PROCESS_STOPPED 0x00000000UL 212*5c1d0199Sgd78059 #define RX_PROCESS_FETCH_DESC 0x00020000UL 213*5c1d0199Sgd78059 #define RX_PROCESS_WAIT_PKT 0x00040000UL 214*5c1d0199Sgd78059 #define RX_PROCESS_STORE_DATA 0x00060000UL 215*5c1d0199Sgd78059 #define RX_PROCESS_CLOSE_OWNER 0x00080000UL 216*5c1d0199Sgd78059 #define RX_PROCESS_CLOSE_STATUS 0x000a0000UL 217*5c1d0199Sgd78059 #define RX_PROCESS_SUSPEND 0x000c0000UL 218*5c1d0199Sgd78059 #define RX_PROCESS_PURGE 0x000e0000UL 219*5c1d0199Sgd78059 #define RX_PROCESS_STATE_MASK 0x000e0000UL 220*5c1d0199Sgd78059 #define TX_PROCESS_STOPPED 0x00000000UL 221*5c1d0199Sgd78059 #define TX_PROCESS_FETCH_DESC 0x00100000UL 222*5c1d0199Sgd78059 #define TX_PROCESS_FETCH_SETUP 0x00200000UL 223*5c1d0199Sgd78059 #define TX_PROCESS_FETCH_DATA 0x00300000UL 224*5c1d0199Sgd78059 #define TX_PROCESS_CLOSE_OWNER 0x00400000UL 225*5c1d0199Sgd78059 #define TX_PROCESS_WAIT_END 0x00500000UL 226*5c1d0199Sgd78059 #define TX_PROCESS_CLOSE_STATUS 0x00600000UL 227*5c1d0199Sgd78059 #define TX_PROCESS_SUSPEND 0x00700000UL 228*5c1d0199Sgd78059 #define TX_PROCESS_STATE_MASK 0x00700000UL 229*5c1d0199Sgd78059 #define SYSTEM_ERR_BITS 0x03800000UL 230*5c1d0199Sgd78059 #define SYSTEM_ERR_PARITY 0x00000000UL 231*5c1d0199Sgd78059 #define SYSTEM_ERR_M_ABORT 0x00800000UL 232*5c1d0199Sgd78059 #define SYSTEM_ERR_T_ABORT 0x01000000UL 233*5c1d0199Sgd78059 234*5c1d0199Sgd78059 #define RX_PROCESS_STATE(csr5) (((csr5) & RX_PROCESS_STATE_MASK) >> 17) 235*5c1d0199Sgd78059 #define RX_PROCESS_MAX_STATE 7 236*5c1d0199Sgd78059 #define TX_PROCESS_STATE(csr5) (((csr5) & TX_PROCESS_STATE_MASK) >> 20) 237*5c1d0199Sgd78059 #define TX_PROCESS_MAX_STATE 7 238*5c1d0199Sgd78059 239*5c1d0199Sgd78059 /* OPN_REG , CSR6 */ 240*5c1d0199Sgd78059 #define HASH_FILTERING (1UL<<0) 241*5c1d0199Sgd78059 #define START_RECEIVE (1UL<<1) 242*5c1d0199Sgd78059 #define HASH_ONLY (1UL<<2) 243*5c1d0199Sgd78059 #define PASSBAD (1UL<<3) 244*5c1d0199Sgd78059 #define INV_FILTER (1UL<<4) 245*5c1d0199Sgd78059 #define PROMISC_MODE (1UL<<6) 246*5c1d0199Sgd78059 #define PASS_MULTICAST (1UL<<7) 247*5c1d0199Sgd78059 #define FULL_DUPLEX (1UL<<9) 248*5c1d0199Sgd78059 #define LOOPBACK_OFF (0UL<<10) 249*5c1d0199Sgd78059 #define LOOPBACK_INTERNAL (1UL<<10) 250*5c1d0199Sgd78059 #define LOOPBACK_PHY_D (2UL<<10) 251*5c1d0199Sgd78059 #define LOOPBACK_PHY_A (3UL<<10) 252*5c1d0199Sgd78059 #define LOOPBACK_MODE_MASK (3UL<<10) 253*5c1d0199Sgd78059 #define FORCE_COLLISION (1UL<<12) 254*5c1d0199Sgd78059 #define START_TRANSMIT (1UL<<13) 255*5c1d0199Sgd78059 #define TX_THRESHOLD_LOW (0UL<<14) 256*5c1d0199Sgd78059 #define TX_THRESHOLD_MID (1UL<<14) 257*5c1d0199Sgd78059 #define TX_THRESHOLD_HI (2UL<<14) 258*5c1d0199Sgd78059 #define TX_THRESHOLD_MASK (3UL<<14) 259*5c1d0199Sgd78059 #define ONE_PKT_MODE (1UL<<16) 260*5c1d0199Sgd78059 #define EXT_MII_IF (1UL<<18) 261*5c1d0199Sgd78059 #define START_TX_IMMED (1UL<<20) 262*5c1d0199Sgd78059 #define STORE_AND_FORWARD (1UL<<21) 263*5c1d0199Sgd78059 #define TX_THRESHOLD_MODE (1UL<<22) 264*5c1d0199Sgd78059 #define OPN_25_MB1 (1UL<<25) 265*5c1d0199Sgd78059 #define NO_RX_PURGE (1UL<<29) 266*5c1d0199Sgd78059 #define RECEIVEALL (1UL<<30) 267*5c1d0199Sgd78059 268*5c1d0199Sgd78059 /* INT_MASK_REG , CSR7 */ 269*5c1d0199Sgd78059 /* 270*5c1d0199Sgd78059 * Use the values defined for the INT_STATUS_MASK bits (0..16) 271*5c1d0199Sgd78059 * of CSR5. The remaining bits (17..31) are not used. 272*5c1d0199Sgd78059 */ 273*5c1d0199Sgd78059 274*5c1d0199Sgd78059 /* MISSED_FRAME_REG, CSR8 */ 275*5c1d0199Sgd78059 #define MISSED_FRAME_MASK 0x00000ffffUL 276*5c1d0199Sgd78059 #define MISSED_OVERFLOW 0x000010000UL 277*5c1d0199Sgd78059 #define PURGED_PACKET_MASK 0x07ffe0000UL 278*5c1d0199Sgd78059 #define PURGED_OVERFLOW 0x080000000UL 279*5c1d0199Sgd78059 280*5c1d0199Sgd78059 /* Serial ROM/MII Register CSR9 */ 281*5c1d0199Sgd78059 #define SEL_CHIP 0x00000001UL 282*5c1d0199Sgd78059 #define SEL_CLK 0x00000002UL 283*5c1d0199Sgd78059 #define DATA_IN 0x00000004UL 284*5c1d0199Sgd78059 #define DATA_OUT 0x00000008UL 285*5c1d0199Sgd78059 #define SER_8_MB1 0x00000300UL 286*5c1d0199Sgd78059 #define SEL_XRS 0x00000400UL 287*5c1d0199Sgd78059 #define SEL_EEPROM 0x00000800UL 288*5c1d0199Sgd78059 #define SEL_BOOTROM 0x00001000UL 289*5c1d0199Sgd78059 #define WRITE_OP 0x00002000UL 290*5c1d0199Sgd78059 #define READ_OP 0x00004000UL 291*5c1d0199Sgd78059 #define SER_15_MB1 0x00008000UL 292*5c1d0199Sgd78059 #define READ_EEPROM (READ_OP | SEL_EEPROM) 293*5c1d0199Sgd78059 #define READ_EEPROM_CS (READ_OP | SEL_EEPROM | SEL_CHIP) 294*5c1d0199Sgd78059 295*5c1d0199Sgd78059 #define MII_CLOCK 0x00010000UL 296*5c1d0199Sgd78059 #define MII_DATA_OUT 0x00020000UL 297*5c1d0199Sgd78059 #define MII_DATA_OUT_SHIFT 17 298*5c1d0199Sgd78059 #define MII_READ 0x00040000UL 299*5c1d0199Sgd78059 #define MII_TRISTATE 0x00040000UL 300*5c1d0199Sgd78059 #define MII_WRITE 0x00000000UL 301*5c1d0199Sgd78059 #define MII_DATA_IN 0x00080000UL 302*5c1d0199Sgd78059 #define MII_DATA_IN_SHIFT 19 303*5c1d0199Sgd78059 304*5c1d0199Sgd78059 #define RELOAD_EEPROM 0x00100000UL 305*5c1d0199Sgd78059 #define LOADED_EEPROM 0x00200000UL 306*5c1d0199Sgd78059 307*5c1d0199Sgd78059 /* GPR Timer reg, CSR11 */ 308*5c1d0199Sgd78059 #define GPTIMER_CONT (1UL<<16) 309*5c1d0199Sgd78059 310*5c1d0199Sgd78059 /* PHY Status reg, CSR12 */ 311*5c1d0199Sgd78059 #define GPS_LINK_10 0x00000001UL 312*5c1d0199Sgd78059 #define GPS_LINK_100 0x00000002UL 313*5c1d0199Sgd78059 #define GPS_FULL_DUPLEX 0x00000004UL 314*5c1d0199Sgd78059 #define GPS_LINK_STATUS 0x00000008UL 315*5c1d0199Sgd78059 #define GPS_RX_LOCK 0x00000010UL 316*5c1d0199Sgd78059 #define GPS_SIGNAL_DETECT 0x00000020UL 317*5c1d0199Sgd78059 #define GPS_UTP_SIG 0x00000040UL 318*5c1d0199Sgd78059 #define GPS_PHY_RESET 0x00000080UL 319*5c1d0199Sgd78059 #define GPS_WRITE_ENABLE 0x00000100UL 320*5c1d0199Sgd78059 321*5c1d0199Sgd78059 /* Sample Frame Access reg, CSR13 */ 322*5c1d0199Sgd78059 #define TX_FIFO_ACCESS (0x32<<3) 323*5c1d0199Sgd78059 #define RX_FIFO_ACCESS (0x35<<3) 324*5c1d0199Sgd78059 #define DIAG_RESET (0x38<<3) 325*5c1d0199Sgd78059 326*5c1d0199Sgd78059 /* Sample Frame Data reg, CSR14, when CSR13 is set to DIAG_RESET */ 327*5c1d0199Sgd78059 #define DIAG_TX_FIFO_WRITE_0 0x00000001UL 328*5c1d0199Sgd78059 #define DIAG_TX_FIFO_READ_0 0x00000002UL 329*5c1d0199Sgd78059 #define DIAG_RX_FIFO_WRITE_0 0x00000004UL 330*5c1d0199Sgd78059 #define DIAG_RX_FIFO_READ_0 0x00000008UL 331*5c1d0199Sgd78059 #define DIAG_TX_FIFO_WRITE_100 0x00000020UL 332*5c1d0199Sgd78059 #define DIAG_RX_FIFO_WRITE_100 0x00000040UL 333*5c1d0199Sgd78059 334*5c1d0199Sgd78059 /* CSR15 */ 335*5c1d0199Sgd78059 #define TX_JABBER_DISABLE 0x00000001UL 336*5c1d0199Sgd78059 #define UNJABBER_INTERVAL 0x00000002UL 337*5c1d0199Sgd78059 #define JABBER_CLOCK 0x00000004UL 338*5c1d0199Sgd78059 #define WD_TIMER_DISABLE 0x00000010UL 339*5c1d0199Sgd78059 #define WD_TIMER_RELEASE 0x00000020UL 340*5c1d0199Sgd78059 #define VLAN_ENABLE 0x00000040UL 341*5c1d0199Sgd78059 #define PAUSE_STATUS_1 0x00000080UL 342*5c1d0199Sgd78059 #define PAUSE_STATUS_2 0x00000200UL 343*5c1d0199Sgd78059 #define FLOW_CONTROL 0x00000400UL 344*5c1d0199Sgd78059 #define PAUSE_ENABLE_1 0x00000800UL 345*5c1d0199Sgd78059 #define PAUSE_ENABLE_2 0x00001000UL 346*5c1d0199Sgd78059 #define PAUSE_TX_FFFF 0x00002000UL 347*5c1d0199Sgd78059 #define PAUSE_TX_0000 0x00004000UL 348*5c1d0199Sgd78059 #define PAUSE_CONDITION 0x00008000UL 349*5c1d0199Sgd78059 #define RX_FIFO_THRES_MASK 0x003f0000UL 350*5c1d0199Sgd78059 #define RX_EARLY_THRES_MASK 0x01c00000UL 351*5c1d0199Sgd78059 352*5c1d0199Sgd78059 353*5c1d0199Sgd78059 /* SROM access definitions */ 354*5c1d0199Sgd78059 #define HIGH_ADDRESS_BIT 0x20 /* 6 bits */ 355*5c1d0199Sgd78059 #define HIGH_CMD_BIT 0x4 /* 3 bits */ 356*5c1d0199Sgd78059 #define HIGH_DATA_BIT 0x8000 /* 16 bits */ 357*5c1d0199Sgd78059 #define SROM_DELAY 5 /* 5 microseconds */ 358*5c1d0199Sgd78059 #define EEPROM_READ_CMD 6 359*5c1d0199Sgd78059 #define EEPROM_EN_ADDR 20 360*5c1d0199Sgd78059 361*5c1d0199Sgd78059 /* MII access definitions */ 362*5c1d0199Sgd78059 #define MII_REG_ADDR_SHIFT 18 363*5c1d0199Sgd78059 #define MII_PHY_ADDR_SHIFT 23 364*5c1d0199Sgd78059 #define MII_DELAY 1 /* 1 microsecond */ 365*5c1d0199Sgd78059 #define MII_PREAMBLE 0xffffffffUL 366*5c1d0199Sgd78059 #define MII_READ_FRAME 0x60000000UL 367*5c1d0199Sgd78059 #define MII_WRITE_FRAME 0x50020000UL 368*5c1d0199Sgd78059 369*5c1d0199Sgd78059 370*5c1d0199Sgd78059 /* DMFE IOCTLS */ 371*5c1d0199Sgd78059 #define ND_BASE ('N' << 8) /* base */ 372*5c1d0199Sgd78059 #define ND_GET (ND_BASE + 0) /* Get a value */ 373*5c1d0199Sgd78059 #define ND_SET (ND_BASE + 1) /* Set a value */ 374*5c1d0199Sgd78059 375*5c1d0199Sgd78059 #define DMFE_ND_GET ND_GET 376*5c1d0199Sgd78059 #define DMFE_ND_SET ND_SET 377*5c1d0199Sgd78059 378*5c1d0199Sgd78059 #define DMFEIOC ('G' << 8) 379*5c1d0199Sgd78059 #define DMFE_SET_LOOP_MODE (DMFEIOC|1) 380*5c1d0199Sgd78059 #define DMFE_GET_LOOP_MODE (DMFEIOC|2) 381*5c1d0199Sgd78059 382*5c1d0199Sgd78059 /* argument structure for above */ 383*5c1d0199Sgd78059 typedef struct { 384*5c1d0199Sgd78059 int loopback; 385*5c1d0199Sgd78059 } loopback_t; 386*5c1d0199Sgd78059 387*5c1d0199Sgd78059 #define DMFE_LOOPBACK_OFF 0 388*5c1d0199Sgd78059 #define DMFE_PHY_A_LOOPBACK_ON 1 389*5c1d0199Sgd78059 #define DMFE_PHY_D_LOOPBACK_ON 2 390*5c1d0199Sgd78059 #define DMFE_INT_LOOPBACK_ON 4 391*5c1d0199Sgd78059 #define DMFE_LOOPBACK_MODES 7 /* Bitwise OR of above */ 392*5c1d0199Sgd78059 393*5c1d0199Sgd78059 #ifdef __cplusplus 394*5c1d0199Sgd78059 } 395*5c1d0199Sgd78059 #endif 396*5c1d0199Sgd78059 397*5c1d0199Sgd78059 #endif /* _SYS_DMFE_H */ 398