|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * Copyright (c) 1998-1999 by Apple Computer, Inc., All rights reserved. ! 24: * ! 25: * MII protocol and PHY register definitions. ! 26: * ! 27: * HISTORY ! 28: * ! 29: */ ! 30: ! 31: #ifndef _BMACENETMII_H ! 32: #define _BMACENETMII_H ! 33: ! 34: /* ! 35: * MII command frame (32-bits) as documented in IEEE 802.3u ! 36: */ ! 37: ! 38: // _BIG_ENDIAN is already defined for PPC ! 39: // ! 40: #if 0 ! 41: #ifdef __PPC__ ! 42: #define _BIG_ENDIAN ! 43: #endif ! 44: #endif /* 0 */ ! 45: ! 46: typedef union { ! 47: unsigned int data; ! 48: #ifdef _BIG_ENDIAN ! 49: struct { ! 50: unsigned int ! 51: st:2, // start of frame ! 52: #define MII_ST 0x01 ! 53: op:2, // operation code ! 54: #define MII_OP_READ 0x02 ! 55: #define MII_OP_WRITE 0x01 ! 56: phyad:5, // PHY address ! 57: regad:5, // register address ! 58: ta:2, // turnaround ! 59: data:16; // 16-bit data field ! 60: } bit; ! 61: #else _BIG_ENDIAN ! 62: struct { ! 63: unsigned int ! 64: data:16, // 16-bit data field ! 65: ta:2, // turnaround ! 66: regad:5, // register address ! 67: phyad:5, // PHY address ! 68: op:2, // operation code ! 69: st:2; // start of frame ! 70: } bit; ! 71: #endif _BIG_ENDIAN ! 72: } miiFrameUnion; ! 73: ! 74: #define MII_FRAME_PREAMBLE 0xFFFFFFFF ! 75: #define MII_FRAME_SIZE 32 ! 76: #define MII_FRAME_READ 0x60000000 ! 77: #define MII_FRAME_WRITE 0x50020000 ! 78: ! 79: #define MII_MAX_PHY 32 ! 80: ! 81: /* MII Registers */ ! 82: #define MII_CONTROL 0 ! 83: #define MII_STATUS 1 ! 84: #define MII_ID0 2 ! 85: #define MII_ID1 3 ! 86: #define MII_ADVERTISEMENT 4 ! 87: #define MII_LINKPARTNER 5 ! 88: #define MII_EXPANSION 6 ! 89: #define MII_NEXTPAGE 7 ! 90: ! 91: /* MII Control register bits */ ! 92: #define MII_CONTROL_RESET 0x8000 ! 93: #define MII_CONTROL_LOOPBACK 0x4000 ! 94: #define MII_CONTROL_SPEED_SELECTION 0x2000 ! 95: #define MII_CONTROL_AUTONEGOTIATION 0x1000 ! 96: #define MII_CONTROL_POWERDOWN 0x800 ! 97: #define MII_CONTROL_ISOLATE 0x400 ! 98: #define MII_CONTROL_RESTART_NEGOTIATION 0x200 ! 99: #define MII_CONTROL_FULLDUPLEX 0x100 ! 100: #define MII_CONTROL_COLLISION_TEST 0x80 ! 101: ! 102: /* MII Status register bits */ ! 103: #define MII_STATUS_100BASET4 0x8000 ! 104: #define MII_STATUS_100BASETX_FD 0x4000 ! 105: #define MII_STATUS_100BASETX 0x2000 ! 106: #define MII_STATUS_10BASET_FD 0x1000 ! 107: #define MII_STATUS_10BASET 0x800 ! 108: #define MII_STATUS_NEGOTIATION_COMPLETE 0x20 ! 109: #define MII_STATUS_REMOTE_FAULT 0x10 ! 110: #define MII_STATUS_NEGOTIATION_ABILITY 0x8 ! 111: #define MII_STATUS_LINK_STATUS 0x4 ! 112: #define MII_STATUS_JABBER_DETECT 0x2 ! 113: #define MII_STATUS_EXTENDED_CAPABILITY 0x1 ! 114: ! 115: /* MII ANAR register bits */ ! 116: #define MII_ANAR_100BASET4 0x200 ! 117: #define MII_ANAR_100BASETX_FD 0x100 ! 118: #define MII_ANAR_100BASETX 0x80 ! 119: #define MII_ANAR_10BASET_FD 0x40 ! 120: #define MII_ANAR_10BASET 0x20 ! 121: ! 122: /* MII ST10040 Specific */ ! 123: ! 124: /* MII ST10040 ID */ ! 125: #define MII_ST10040_OUI 0x1e0400 ! 126: #define MII_ST10040_MODEL 0x00 ! 127: #define MII_ST10040_REV 0x01 ! 128: #define MII_ST10040_ID ((MII_ST10040_OUI << 10) | \ ! 129: (MII_ST10040_MODEL << 4)) ! 130: #define MII_ST10040_MASK 0xfffffff0 ! 131: ! 132: #define MII_ST10040_DELAY 1 ! 133: ! 134: /* MII ST10040 Regs */ ! 135: #define MII_ST10040_CHIPST 0x14 ! 136: ! 137: /* MII ST10040 CHIPST register bits */ ! 138: #define MII_ST10040_CHIPST_LINK 0x2000 ! 139: #define MII_ST10040_CHIPST_DUPLEX 0x1000 ! 140: #define MII_ST10040_CHIPST_SPEED 0x0800 ! 141: #define MII_ST10040_CHIPST_NEGOTIATION 0x0020 ! 142: ! 143: /* MII DP83843 Specific */ ! 144: ! 145: /* MII DP83843 ID */ ! 146: #define MII_DP83843_OUI 0x080017 ! 147: #define MII_DP83843_MODEL 0x01 ! 148: #define MII_DP83843_REV 0x00 ! 149: #define MII_DP83843_ID ((MII_DP83843_OUI << 10) | \ ! 150: (MII_DP83843_MODEL << 4)) ! 151: #define MII_DP83843_MASK 0xfffffff0 ! 152: ! 153: #define MII_DP83843_DELAY 20 ! 154: ! 155: /* MII DP83843 PHYSTS register bits */ ! 156: #define MII_DP83843_PHYSTS 0x10 ! 157: #define MII_DP83843_PHYSTS_LINK 0x0001 ! 158: #define MII_DP83843_PHYSTS_SPEED10 0x0002 ! 159: #define MII_DP83843_PHYSTS_DUPLEX 0x0004 ! 160: #define MII_DP83843_PHYSTS_NEGOTIATION 0x0020 ! 161: ! 162: ! 163: /* MII timeout */ ! 164: #define MII_DEFAULT_DELAY 20 ! 165: #define MII_RESET_TIMEOUT 100 ! 166: #define MII_RESET_DELAY 10 ! 167: ! 168: #define MII_LINK_TIMEOUT 5000 ! 169: #define MII_LINK_DELAY 20 ! 170: ! 171: #endif /* _BMACENETMII_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.