1*c74b2108SSergey Kubushyn /* 2*c74b2108SSergey Kubushyn * DP83848 ethernet Physical layer 3*c74b2108SSergey Kubushyn * 4*c74b2108SSergey Kubushyn * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> 5*c74b2108SSergey Kubushyn * 6*c74b2108SSergey Kubushyn * 7*c74b2108SSergey Kubushyn * This program is free software; you can redistribute it and/or 8*c74b2108SSergey Kubushyn * modify it under the terms of the GNU General Public License 9*c74b2108SSergey Kubushyn * as published by the Free Software Foundation; either version 10*c74b2108SSergey Kubushyn * 2 of the License, or (at your option) any later version. 11*c74b2108SSergey Kubushyn */ 12*c74b2108SSergey Kubushyn 13*c74b2108SSergey Kubushyn 14*c74b2108SSergey Kubushyn /* National Semiconductor PHYSICAL LAYER TRANSCEIVER DP83848 */ 15*c74b2108SSergey Kubushyn 16*c74b2108SSergey Kubushyn #define DP83848_CTL_REG 0x0 /* Basic Mode Control Reg */ 17*c74b2108SSergey Kubushyn #define DP83848_STAT_REG 0x1 /* Basic Mode Status Reg */ 18*c74b2108SSergey Kubushyn #define DP83848_PHYID1_REG 0x2 /* PHY Idendifier Reg 1 */ 19*c74b2108SSergey Kubushyn #define DP83848_PHYID2_REG 0x3 /* PHY Idendifier Reg 2 */ 20*c74b2108SSergey Kubushyn #define DP83848_ANA_REG 0x4 /* Auto_Neg Advt Reg */ 21*c74b2108SSergey Kubushyn #define DP83848_ANLPA_REG 0x5 /* Auto_neg Link Partner Ability Reg */ 22*c74b2108SSergey Kubushyn #define DP83848_ANE_REG 0x6 /* Auto-neg Expansion Reg */ 23*c74b2108SSergey Kubushyn #define DP83848_PHY_STAT_REG 0x10 /* PHY Status Register */ 24*c74b2108SSergey Kubushyn #define DP83848_PHY_INTR_CTRL_REG 0x11 /* PHY Interrupt Control Register */ 25*c74b2108SSergey Kubushyn #define DP83848_PHY_CTRL_REG 0x19 /* PHY Status Register */ 26*c74b2108SSergey Kubushyn 27*c74b2108SSergey Kubushyn /*--Bit definitions: DP83848_CTL_REG */ 28*c74b2108SSergey Kubushyn #define DP83848_RESET (1 << 15) /* 1= S/W Reset */ 29*c74b2108SSergey Kubushyn #define DP83848_LOOPBACK (1 << 14) /* 1=loopback Enabled */ 30*c74b2108SSergey Kubushyn #define DP83848_SPEED_SELECT (1 << 13) 31*c74b2108SSergey Kubushyn #define DP83848_AUTONEG (1 << 12) 32*c74b2108SSergey Kubushyn #define DP83848_POWER_DOWN (1 << 11) 33*c74b2108SSergey Kubushyn #define DP83848_ISOLATE (1 << 10) 34*c74b2108SSergey Kubushyn #define DP83848_RESTART_AUTONEG (1 << 9) 35*c74b2108SSergey Kubushyn #define DP83848_DUPLEX_MODE (1 << 8) 36*c74b2108SSergey Kubushyn #define DP83848_COLLISION_TEST (1 << 7) 37*c74b2108SSergey Kubushyn 38*c74b2108SSergey Kubushyn /*--Bit definitions: DP83848_STAT_REG */ 39*c74b2108SSergey Kubushyn #define DP83848_100BASE_T4 (1 << 15) 40*c74b2108SSergey Kubushyn #define DP83848_100BASE_TX_FD (1 << 14) 41*c74b2108SSergey Kubushyn #define DP83848_100BASE_TX_HD (1 << 13) 42*c74b2108SSergey Kubushyn #define DP83848_10BASE_T_FD (1 << 12) 43*c74b2108SSergey Kubushyn #define DP83848_10BASE_T_HD (1 << 11) 44*c74b2108SSergey Kubushyn #define DP83848_MF_PREAMB_SUPPR (1 << 6) 45*c74b2108SSergey Kubushyn #define DP83848_AUTONEG_COMP (1 << 5) 46*c74b2108SSergey Kubushyn #define DP83848_RMT_FAULT (1 << 4) 47*c74b2108SSergey Kubushyn #define DP83848_AUTONEG_ABILITY (1 << 3) 48*c74b2108SSergey Kubushyn #define DP83848_LINK_STATUS (1 << 2) 49*c74b2108SSergey Kubushyn #define DP83848_JABBER_DETECT (1 << 1) 50*c74b2108SSergey Kubushyn #define DP83848_EXTEND_CAPAB (1 << 0) 51*c74b2108SSergey Kubushyn 52*c74b2108SSergey Kubushyn /*--definitions: DP83848_PHYID1 */ 53*c74b2108SSergey Kubushyn #define DP83848_PHYID1_OUI 0x2000 54*c74b2108SSergey Kubushyn #define DP83848_PHYID2_OUI 0x5c90 55*c74b2108SSergey Kubushyn 56*c74b2108SSergey Kubushyn /*--Bit definitions: DP83848_ANAR, DP83848_ANLPAR */ 57*c74b2108SSergey Kubushyn #define DP83848_NP (1 << 15) 58*c74b2108SSergey Kubushyn #define DP83848_ACK (1 << 14) 59*c74b2108SSergey Kubushyn #define DP83848_RF (1 << 13) 60*c74b2108SSergey Kubushyn #define DP83848_PAUSE (1 << 10) 61*c74b2108SSergey Kubushyn #define DP83848_T4 (1 << 9) 62*c74b2108SSergey Kubushyn #define DP83848_TX_FDX (1 << 8) 63*c74b2108SSergey Kubushyn #define DP83848_TX_HDX (1 << 7) 64*c74b2108SSergey Kubushyn #define DP83848_10_FDX (1 << 6) 65*c74b2108SSergey Kubushyn #define DP83848_10_HDX (1 << 5) 66*c74b2108SSergey Kubushyn #define DP83848_AN_IEEE_802_3 0x0001 67*c74b2108SSergey Kubushyn 68*c74b2108SSergey Kubushyn /*--Bit definitions: DP83848_ANER */ 69*c74b2108SSergey Kubushyn #define DP83848_PDF (1 << 4) 70*c74b2108SSergey Kubushyn #define DP83848_LP_NP_ABLE (1 << 3) 71*c74b2108SSergey Kubushyn #define DP83848_NP_ABLE (1 << 2) 72*c74b2108SSergey Kubushyn #define DP83848_PAGE_RX (1 << 1) 73*c74b2108SSergey Kubushyn #define DP83848_LP_AN_ABLE (1 << 0) 74*c74b2108SSergey Kubushyn 75*c74b2108SSergey Kubushyn /*--Bit definitions: DP83848_PHY_STAT */ 76*c74b2108SSergey Kubushyn #define DP83848_RX_ERR_LATCH (1 << 13) 77*c74b2108SSergey Kubushyn #define DP83848_POLARITY_STAT (1 << 12) 78*c74b2108SSergey Kubushyn #define DP83848_FALSE_CAR_SENSE (1 << 11) 79*c74b2108SSergey Kubushyn #define DP83848_SIG_DETECT (1 << 10) 80*c74b2108SSergey Kubushyn #define DP83848_DESCRAM_LOCK (1 << 9) 81*c74b2108SSergey Kubushyn #define DP83848_PAGE_RCV (1 << 8) 82*c74b2108SSergey Kubushyn #define DP83848_PHY_RMT_FAULT (1 << 6) 83*c74b2108SSergey Kubushyn #define DP83848_JABBER (1 << 5) 84*c74b2108SSergey Kubushyn #define DP83848_AUTONEG_COMPLETE (1 << 4) 85*c74b2108SSergey Kubushyn #define DP83848_LOOPBACK_STAT (1 << 3) 86*c74b2108SSergey Kubushyn #define DP83848_DUPLEX (1 << 2) 87*c74b2108SSergey Kubushyn #define DP83848_SPEED (1 << 1) 88*c74b2108SSergey Kubushyn #define DP83848_LINK (1 << 0) 89