1*6716431bSRobert Mustacchi /* 2*6716431bSRobert Mustacchi * gem_mii.h: mii header for gem 3*6716431bSRobert Mustacchi * 4*6716431bSRobert Mustacchi * Copyright (c) 2002-2007 Masayuki Murayama. All rights reserved. 5*6716431bSRobert Mustacchi * 6*6716431bSRobert Mustacchi * Redistribution and use in source and binary forms, with or without 7*6716431bSRobert Mustacchi * modification, are permitted provided that the following conditions are met: 8*6716431bSRobert Mustacchi * 9*6716431bSRobert Mustacchi * 1. Redistributions of source code must retain the above copyright notice, 10*6716431bSRobert Mustacchi * this list of conditions and the following disclaimer. 11*6716431bSRobert Mustacchi * 12*6716431bSRobert Mustacchi * 2. Redistributions in binary form must reproduce the above copyright notice, 13*6716431bSRobert Mustacchi * this list of conditions and the following disclaimer in the documentation 14*6716431bSRobert Mustacchi * and/or other materials provided with the distribution. 15*6716431bSRobert Mustacchi * 16*6716431bSRobert Mustacchi * 3. Neither the name of the author nor the names of its contributors may be 17*6716431bSRobert Mustacchi * used to endorse or promote products derived from this software without 18*6716431bSRobert Mustacchi * specific prior written permission. 19*6716431bSRobert Mustacchi * 20*6716431bSRobert Mustacchi * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21*6716431bSRobert Mustacchi * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22*6716431bSRobert Mustacchi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23*6716431bSRobert Mustacchi * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 24*6716431bSRobert Mustacchi * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25*6716431bSRobert Mustacchi * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 26*6716431bSRobert Mustacchi * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 27*6716431bSRobert Mustacchi * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28*6716431bSRobert Mustacchi * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29*6716431bSRobert Mustacchi * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 30*6716431bSRobert Mustacchi * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 31*6716431bSRobert Mustacchi * DAMAGE. 32*6716431bSRobert Mustacchi */ 33*6716431bSRobert Mustacchi 34*6716431bSRobert Mustacchi /* 35*6716431bSRobert Mustacchi * gem_mii.h : MII registers 36*6716431bSRobert Mustacchi */ 37*6716431bSRobert Mustacchi #ifndef _GEM_MII_H_ 38*6716431bSRobert Mustacchi #define _GEM_MII_H_ 39*6716431bSRobert Mustacchi 40*6716431bSRobert Mustacchi #ifdef GEM_CONFIG_GLDv3 41*6716431bSRobert Mustacchi #include <sys/miiregs.h> 42*6716431bSRobert Mustacchi #else 43*6716431bSRobert Mustacchi #define MII_CONTROL 0 44*6716431bSRobert Mustacchi #define MII_STATUS 1 45*6716431bSRobert Mustacchi #define MII_PHYIDH 2 46*6716431bSRobert Mustacchi #define MII_PHYIDL 3 47*6716431bSRobert Mustacchi #define MII_AN_ADVERT 4 48*6716431bSRobert Mustacchi #define MII_AN_LPABLE 5 49*6716431bSRobert Mustacchi #define MII_AN_EXPANSION 6 50*6716431bSRobert Mustacchi #define MII_AN_NXTPGXMIT 7 51*6716431bSRobert Mustacchi #endif /* GEM_CONFIG_GLDv3 */ 52*6716431bSRobert Mustacchi 53*6716431bSRobert Mustacchi #define MII_AN_LPANXT 8 54*6716431bSRobert Mustacchi #define MII_MS_CONTROL 9 55*6716431bSRobert Mustacchi #define MII_MS_STATUS 10 56*6716431bSRobert Mustacchi #define MII_XSTATUS 15 57*6716431bSRobert Mustacchi 58*6716431bSRobert Mustacchi /* for 1000BaseT support */ 59*6716431bSRobert Mustacchi #define MII_1000TC MII_MS_CONTROL 60*6716431bSRobert Mustacchi #define MII_1000TS MII_MS_STATUS 61*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3 62*6716431bSRobert Mustacchi #define MII_CONTROL_RESET 0x8000 63*6716431bSRobert Mustacchi #define MII_CONTROL_LOOPBACK 0x4000 64*6716431bSRobert Mustacchi #define MII_CONTROL_100MB 0x2000 65*6716431bSRobert Mustacchi #define MII_CONTROL_ANE 0x1000 66*6716431bSRobert Mustacchi #define MII_CONTROL_PWRDN 0x0800 67*6716431bSRobert Mustacchi #define MII_CONTROL_ISOLATE 0x0400 68*6716431bSRobert Mustacchi #define MII_CONTROL_RSAN 0x0200 69*6716431bSRobert Mustacchi #define MII_CONTROL_FDUPLEX 0x0100 70*6716431bSRobert Mustacchi #define MII_CONTROL_COLTST 0x0080 71*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */ 72*6716431bSRobert Mustacchi #define MII_CONTROL_SPEED 0x2040 73*6716431bSRobert Mustacchi 74*6716431bSRobert Mustacchi #define MII_CONTROL_10MB 0x0000 75*6716431bSRobert Mustacchi #define MII_CONTROL_1000MB 0x0040 76*6716431bSRobert Mustacchi 77*6716431bSRobert Mustacchi #define MII_CONTROL_BITS \ 78*6716431bSRobert Mustacchi "\020" \ 79*6716431bSRobert Mustacchi "\020RESET" \ 80*6716431bSRobert Mustacchi "\017LOOPBACK" \ 81*6716431bSRobert Mustacchi "\016100MB" \ 82*6716431bSRobert Mustacchi "\015ANE" \ 83*6716431bSRobert Mustacchi "\014PWRDN" \ 84*6716431bSRobert Mustacchi "\013ISOLATE" \ 85*6716431bSRobert Mustacchi "\012RSAN" \ 86*6716431bSRobert Mustacchi "\011FDUPLEX" \ 87*6716431bSRobert Mustacchi "\010COLTST" \ 88*6716431bSRobert Mustacchi "\0071000M" 89*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3 90*6716431bSRobert Mustacchi #define MII_STATUS_100_BASE_T4 0x8000 91*6716431bSRobert Mustacchi #define MII_STATUS_100_BASEX_FD 0x4000 92*6716431bSRobert Mustacchi #define MII_STATUS_100_BASEX 0x2000 93*6716431bSRobert Mustacchi #define MII_STATUS_10_FD 0x1000 94*6716431bSRobert Mustacchi #define MII_STATUS_10 0x0800 95*6716431bSRobert Mustacchi #define MII_STATUS_MFPRMBLSUPR 0x0040 96*6716431bSRobert Mustacchi #define MII_STATUS_ANDONE 0x0020 97*6716431bSRobert Mustacchi #define MII_STATUS_REMFAULT 0x0010 98*6716431bSRobert Mustacchi #define MII_STATUS_CANAUTONEG 0x0008 99*6716431bSRobert Mustacchi #define MII_STATUS_LINKUP 0x0004 100*6716431bSRobert Mustacchi #define MII_STATUS_JABBERING 0x0002 101*6716431bSRobert Mustacchi #define MII_STATUS_EXTENDED 0x0001 102*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */ 103*6716431bSRobert Mustacchi #define MII_STATUS_XSTATUS 0x0100 104*6716431bSRobert Mustacchi #define MII_STATUS_100_BASE_T2_FD 0x0400 105*6716431bSRobert Mustacchi #define MII_STATUS_100_BASE_T2 0x0200 106*6716431bSRobert Mustacchi 107*6716431bSRobert Mustacchi #define MII_STATUS_ABILITY_TECH \ 108*6716431bSRobert Mustacchi (MII_STATUS_100_BASE_T4 | \ 109*6716431bSRobert Mustacchi MII_STATUS_100_BASEX_FD | \ 110*6716431bSRobert Mustacchi MII_STATUS_100_BASEX | \ 111*6716431bSRobert Mustacchi MII_STATUS_10 | \ 112*6716431bSRobert Mustacchi MII_STATUS_10_FD) 113*6716431bSRobert Mustacchi 114*6716431bSRobert Mustacchi 115*6716431bSRobert Mustacchi #define MII_STATUS_BITS \ 116*6716431bSRobert Mustacchi "\020" \ 117*6716431bSRobert Mustacchi "\020100_BASE_T4" \ 118*6716431bSRobert Mustacchi "\017100_BASEX_FD" \ 119*6716431bSRobert Mustacchi "\016100_BASEX" \ 120*6716431bSRobert Mustacchi "\01510_BASE_FD" \ 121*6716431bSRobert Mustacchi "\01410_BASE" \ 122*6716431bSRobert Mustacchi "\013100_BASE_T2_FD" \ 123*6716431bSRobert Mustacchi "\012100_BASE_T2" \ 124*6716431bSRobert Mustacchi "\011XSTATUS" \ 125*6716431bSRobert Mustacchi "\007MFPRMBLSUPR" \ 126*6716431bSRobert Mustacchi "\006ANDONE" \ 127*6716431bSRobert Mustacchi "\005REMFAULT" \ 128*6716431bSRobert Mustacchi "\004CANAUTONEG" \ 129*6716431bSRobert Mustacchi "\003LINKUP" \ 130*6716431bSRobert Mustacchi "\002JABBERING" \ 131*6716431bSRobert Mustacchi "\001EXTENDED" 132*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3 133*6716431bSRobert Mustacchi #define MII_AN_ADVERT_NP 0x8000 134*6716431bSRobert Mustacchi #define MII_AN_ADVERT_REMFAULT 0x2000 135*6716431bSRobert Mustacchi #define MII_AN_ADVERT_SELECTOR 0x001f 136*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */ 137*6716431bSRobert Mustacchi 138*6716431bSRobert Mustacchi #define MII_ABILITY_ASM_DIR 0x0800 /* for annex 28B */ 139*6716431bSRobert Mustacchi #ifndef MII_ABILITY_PAUSE 140*6716431bSRobert Mustacchi #define MII_ABILITY_PAUSE 0x0400 /* for IEEE 802.3x */ 141*6716431bSRobert Mustacchi #endif 142*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3 143*6716431bSRobert Mustacchi #define MII_ABILITY_100BASE_T4 0x0200 144*6716431bSRobert Mustacchi #define MII_ABILITY_100BASE_TX_FD 0x0100 145*6716431bSRobert Mustacchi #define MII_ABILITY_100BASE_TX 0x0080 146*6716431bSRobert Mustacchi #define MII_ABILITY_10BASE_T_FD 0x0040 147*6716431bSRobert Mustacchi #define MII_ABILITY_10BASE_T 0x0020 148*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */ 149*6716431bSRobert Mustacchi 150*6716431bSRobert Mustacchi #define MII_AN_LPABLE_NP 0x8000 151*6716431bSRobert Mustacchi 152*6716431bSRobert Mustacchi #define MII_ABILITY_TECH \ 153*6716431bSRobert Mustacchi (MII_ABILITY_100BASE_T4 | \ 154*6716431bSRobert Mustacchi MII_ABILITY_100BASE_TX_FD | \ 155*6716431bSRobert Mustacchi MII_ABILITY_100BASE_TX | \ 156*6716431bSRobert Mustacchi MII_ABILITY_10BASE_T | \ 157*6716431bSRobert Mustacchi MII_ABILITY_10BASE_T_FD) 158*6716431bSRobert Mustacchi 159*6716431bSRobert Mustacchi #define MII_ABILITY_ALL \ 160*6716431bSRobert Mustacchi (MII_AN_ADVERT_REMFAULT | \ 161*6716431bSRobert Mustacchi MII_ABILITY_ASM_DIR | \ 162*6716431bSRobert Mustacchi MII_ABILITY_PAUSE | \ 163*6716431bSRobert Mustacchi MII_ABILITY_TECH) 164*6716431bSRobert Mustacchi 165*6716431bSRobert Mustacchi 166*6716431bSRobert Mustacchi #define MII_ABILITY_BITS \ 167*6716431bSRobert Mustacchi "\020" \ 168*6716431bSRobert Mustacchi "\016REMFAULT" \ 169*6716431bSRobert Mustacchi "\014ASM_DIR" \ 170*6716431bSRobert Mustacchi "\013PAUSE" \ 171*6716431bSRobert Mustacchi "\012100BASE_T4" \ 172*6716431bSRobert Mustacchi "\011100BASE_TX_FD" \ 173*6716431bSRobert Mustacchi "\010100BASE_TX" \ 174*6716431bSRobert Mustacchi "\00710BASE_T_FD" \ 175*6716431bSRobert Mustacchi "\00610BASE_T" 176*6716431bSRobert Mustacchi #ifndef GEM_CONFIG_GLDv3 177*6716431bSRobert Mustacchi #define MII_AN_EXP_PARFAULT 0x0010 178*6716431bSRobert Mustacchi #define MII_AN_EXP_LPCANNXTP 0x0008 179*6716431bSRobert Mustacchi #define MII_AN_EXP_CANNXTPP 0x0004 180*6716431bSRobert Mustacchi #define MII_AN_EXP_PAGERCVD 0x0002 181*6716431bSRobert Mustacchi #define MII_AN_EXP_LPCANAN 0x0001 182*6716431bSRobert Mustacchi #endif /* !GEM_CONFIG_GLDv3 */ 183*6716431bSRobert Mustacchi 184*6716431bSRobert Mustacchi #define MII_AN_EXP_BITS \ 185*6716431bSRobert Mustacchi "\020" \ 186*6716431bSRobert Mustacchi "\005PARFAULT" \ 187*6716431bSRobert Mustacchi "\004LPCANNXTP" \ 188*6716431bSRobert Mustacchi "\003CANNXTPP" \ 189*6716431bSRobert Mustacchi "\002PAGERCVD" \ 190*6716431bSRobert Mustacchi "\001LPCANAN" 191*6716431bSRobert Mustacchi 192*6716431bSRobert Mustacchi #define MII_1000TC_TESTMODE 0xe000 193*6716431bSRobert Mustacchi #define MII_1000TC_CFG_EN 0x1000 194*6716431bSRobert Mustacchi #define MII_1000TC_CFG_VAL 0x0800 195*6716431bSRobert Mustacchi #define MII_1000TC_PORTTYPE 0x0400 196*6716431bSRobert Mustacchi #define MII_1000TC_ADV_FULL 0x0200 197*6716431bSRobert Mustacchi #define MII_1000TC_ADV_HALF 0x0100 198*6716431bSRobert Mustacchi 199*6716431bSRobert Mustacchi #define MII_1000TC_BITS \ 200*6716431bSRobert Mustacchi "\020" \ 201*6716431bSRobert Mustacchi "\015CFG_EN" \ 202*6716431bSRobert Mustacchi "\014CFG_VAL" \ 203*6716431bSRobert Mustacchi "\013PORTTYPE" \ 204*6716431bSRobert Mustacchi "\012FULL" \ 205*6716431bSRobert Mustacchi "\011HALF" 206*6716431bSRobert Mustacchi 207*6716431bSRobert Mustacchi #define MII_1000TS_CFG_FAULT 0x8000 208*6716431bSRobert Mustacchi #define MII_1000TS_CFG_MASTER 0x4000 209*6716431bSRobert Mustacchi #define MII_1000TS_LOCALRXOK 0x2000 210*6716431bSRobert Mustacchi #define MII_1000TS_REMOTERXOK 0x1000 211*6716431bSRobert Mustacchi #define MII_1000TS_LP_FULL 0x0800 212*6716431bSRobert Mustacchi #define MII_1000TS_LP_HALF 0x0400 213*6716431bSRobert Mustacchi 214*6716431bSRobert Mustacchi #define MII_1000TS_BITS \ 215*6716431bSRobert Mustacchi "\020" \ 216*6716431bSRobert Mustacchi "\020CFG_FAULT" \ 217*6716431bSRobert Mustacchi "\017CFG_MASTER" \ 218*6716431bSRobert Mustacchi "\014CFG_LOCALRXOK" \ 219*6716431bSRobert Mustacchi "\013CFG_REMOTERXOK" \ 220*6716431bSRobert Mustacchi "\012LP_FULL" \ 221*6716431bSRobert Mustacchi "\011LP_HALF" 222*6716431bSRobert Mustacchi 223*6716431bSRobert Mustacchi #define MII_XSTATUS_1000BASEX_FD 0x8000 224*6716431bSRobert Mustacchi #define MII_XSTATUS_1000BASEX 0x4000 225*6716431bSRobert Mustacchi #define MII_XSTATUS_1000BASET_FD 0x2000 226*6716431bSRobert Mustacchi #define MII_XSTATUS_1000BASET 0x1000 227*6716431bSRobert Mustacchi 228*6716431bSRobert Mustacchi #define MII_XSTATUS_BITS \ 229*6716431bSRobert Mustacchi "\020" \ 230*6716431bSRobert Mustacchi "\0201000BASEX_FD" \ 231*6716431bSRobert Mustacchi "\0171000BASEX" \ 232*6716431bSRobert Mustacchi "\0161000BASET_FD" \ 233*6716431bSRobert Mustacchi "\0151000BASET" 234*6716431bSRobert Mustacchi 235*6716431bSRobert Mustacchi #define MII_READ_CMD(p, r) \ 236*6716431bSRobert Mustacchi ((6<<(18+5+5)) | ((p)<<(18+5)) | ((r)<<18)) 237*6716431bSRobert Mustacchi 238*6716431bSRobert Mustacchi #define MII_WRITE_CMD(p, r, v) \ 239*6716431bSRobert Mustacchi ((5<<(18+5+5)) | ((p)<<(18+5)) | ((r)<<18) | (2 << 16) | (v)) 240*6716431bSRobert Mustacchi 241*6716431bSRobert Mustacchi #endif /* _GEM_MII_H_ */ 242