xref: /rk3399_rockchip-uboot/include/miiphy.h (revision 63ff004c4fcad9f690bf44dbd15d568bb47aac2d)
1214ec6bbSwdenk /*----------------------------------------------------------------------------+
2214ec6bbSwdenk |
3214ec6bbSwdenk |	This source code has been made available to you by IBM on an AS-IS
4214ec6bbSwdenk |	basis.	Anyone receiving this source is licensed under IBM
5214ec6bbSwdenk |	copyrights to use it in any way he or she deems fit, including
6214ec6bbSwdenk |	copying it, modifying it, compiling it, and redistributing it either
7214ec6bbSwdenk |	with or without modifications.	No license under IBM patents or
8214ec6bbSwdenk |	patent applications is to be implied by the copyright license.
9214ec6bbSwdenk |
10214ec6bbSwdenk |	Any user of this software should understand that IBM cannot provide
11214ec6bbSwdenk |	technical support for this software and will not be responsible for
12214ec6bbSwdenk |	any consequences resulting from the use of this software.
13214ec6bbSwdenk |
14214ec6bbSwdenk |	Any person who transfers this source code or any derivative work
15214ec6bbSwdenk |	must include the IBM copyright notice, this paragraph, and the
16214ec6bbSwdenk |	preceding two paragraphs in the transferred software.
17214ec6bbSwdenk |
18214ec6bbSwdenk |	COPYRIGHT   I B M   CORPORATION 1999
19214ec6bbSwdenk |	LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
20214ec6bbSwdenk +----------------------------------------------------------------------------*/
21214ec6bbSwdenk /*----------------------------------------------------------------------------+
22214ec6bbSwdenk |
23214ec6bbSwdenk |  File Name:	miiphy.h
24214ec6bbSwdenk |
25214ec6bbSwdenk |  Function:	Include file defining PHY registers.
26214ec6bbSwdenk |
27214ec6bbSwdenk |  Author:	Mark Wisner
28214ec6bbSwdenk |
29214ec6bbSwdenk |  Change Activity-
30214ec6bbSwdenk |
31214ec6bbSwdenk |  Date	       Description of Change					BY
32214ec6bbSwdenk |  ---------   ---------------------					---
33214ec6bbSwdenk |  04-May-99   Created							MKW
34214ec6bbSwdenk |  07-Jul-99   Added full duplex support				MKW
35214ec6bbSwdenk |  08-Sep-01   Tweaks							gvb
36214ec6bbSwdenk |
37214ec6bbSwdenk +----------------------------------------------------------------------------*/
38214ec6bbSwdenk #ifndef _miiphy_h_
39214ec6bbSwdenk #define _miiphy_h_
40214ec6bbSwdenk 
41*63ff004cSMarian Balakowicz #include <net.h>
42214ec6bbSwdenk 
43*63ff004cSMarian Balakowicz int  miiphy_read(char *devname, unsigned char addr, unsigned char reg,
44*63ff004cSMarian Balakowicz 		unsigned short *value);
45*63ff004cSMarian Balakowicz int  miiphy_write(char *devname, unsigned char addr, unsigned char reg,
46*63ff004cSMarian Balakowicz 		unsigned short value);
47*63ff004cSMarian Balakowicz int  miiphy_info(char *devname, unsigned char addr, unsigned int  *oui,
48*63ff004cSMarian Balakowicz 		unsigned char *model, unsigned char *rev);
49*63ff004cSMarian Balakowicz int  miiphy_reset(char *devname, unsigned char addr);
50*63ff004cSMarian Balakowicz int  miiphy_speed(char *devname, unsigned char addr);
51*63ff004cSMarian Balakowicz int  miiphy_duplex(char *devname, unsigned char addr);
52fc3e2165Swdenk #ifdef CFG_FAULT_ECHO_LINK_DOWN
53*63ff004cSMarian Balakowicz int  miiphy_link(char *devname, unsigned char addr);
54fc3e2165Swdenk #endif
55214ec6bbSwdenk 
56*63ff004cSMarian Balakowicz void miiphy_register(char *devname,
57*63ff004cSMarian Balakowicz 	int (* read)(char *devname, unsigned char addr,
58*63ff004cSMarian Balakowicz 		unsigned char reg, unsigned short *value),
59*63ff004cSMarian Balakowicz 	int (* write)(char *devname, unsigned char addr,
60*63ff004cSMarian Balakowicz 		unsigned char reg, unsigned short value));
61*63ff004cSMarian Balakowicz 
62*63ff004cSMarian Balakowicz int miiphy_set_current_dev(char *devname);
63*63ff004cSMarian Balakowicz char *miiphy_get_current_dev(void);
64*63ff004cSMarian Balakowicz 
65*63ff004cSMarian Balakowicz void miiphy_listdev(void);
66*63ff004cSMarian Balakowicz 
67*63ff004cSMarian Balakowicz #define BB_MII_DEVNAME	"bbmii"
68*63ff004cSMarian Balakowicz 
69*63ff004cSMarian Balakowicz int bb_miiphy_read (char *devname, unsigned char addr,
70*63ff004cSMarian Balakowicz 		unsigned char reg, unsigned short *value);
71*63ff004cSMarian Balakowicz int bb_miiphy_write (char *devname, unsigned char addr,
72*63ff004cSMarian Balakowicz 		unsigned char reg, unsigned short value);
73214ec6bbSwdenk 
74214ec6bbSwdenk /* phy seed setup */
75214ec6bbSwdenk #define AUTO			99
76855a496fSwdenk #define _1000BASET              1000
77214ec6bbSwdenk #define _100BASET		100
78214ec6bbSwdenk #define _10BASET		10
79214ec6bbSwdenk #define HALF			22
80214ec6bbSwdenk #define FULL			44
81214ec6bbSwdenk 
82214ec6bbSwdenk /* phy register offsets */
83214ec6bbSwdenk #define PHY_BMCR		0x00
84214ec6bbSwdenk #define PHY_BMSR		0x01
85214ec6bbSwdenk #define PHY_PHYIDR1		0x02
86214ec6bbSwdenk #define PHY_PHYIDR2		0x03
87214ec6bbSwdenk #define PHY_ANAR		0x04
88214ec6bbSwdenk #define PHY_ANLPAR		0x05
89214ec6bbSwdenk #define PHY_ANER		0x06
90214ec6bbSwdenk #define PHY_ANNPTR		0x07
91855a496fSwdenk #define PHY_ANLPNP              0x08
92855a496fSwdenk #define PHY_1000BTCR            0x09
93855a496fSwdenk #define PHY_1000BTSR            0x0A
94214ec6bbSwdenk #define PHY_PHYSTS		0x10
95214ec6bbSwdenk #define PHY_MIPSCR		0x11
96214ec6bbSwdenk #define PHY_MIPGSR		0x12
97214ec6bbSwdenk #define PHY_DCR			0x13
98214ec6bbSwdenk #define PHY_FCSCR		0x14
99214ec6bbSwdenk #define PHY_RECR		0x15
100214ec6bbSwdenk #define PHY_PCSR		0x16
101214ec6bbSwdenk #define PHY_LBR			0x17
102214ec6bbSwdenk #define PHY_10BTSCR		0x18
103214ec6bbSwdenk #define PHY_PHYCTRL		0x19
104214ec6bbSwdenk 
105214ec6bbSwdenk /* PHY BMCR */
106214ec6bbSwdenk #define PHY_BMCR_RESET		0x8000
107214ec6bbSwdenk #define PHY_BMCR_LOOP		0x4000
108214ec6bbSwdenk #define PHY_BMCR_100MB		0x2000
109214ec6bbSwdenk #define PHY_BMCR_AUTON		0x1000
110214ec6bbSwdenk #define PHY_BMCR_POWD		0x0800
111214ec6bbSwdenk #define PHY_BMCR_ISO		0x0400
112214ec6bbSwdenk #define PHY_BMCR_RST_NEG	0x0200
113214ec6bbSwdenk #define PHY_BMCR_DPLX		0x0100
114214ec6bbSwdenk #define PHY_BMCR_COL_TST	0x0080
115214ec6bbSwdenk 
116b9711de1Swdenk #define PHY_BMCR_SPEED_MASK     0x2040
117b9711de1Swdenk #define PHY_BMCR_1000_MBPS      0x0040
118b9711de1Swdenk #define PHY_BMCR_100_MBPS       0x2000
119b9711de1Swdenk #define PHY_BMCR_10_MBPS        0x0000
120b9711de1Swdenk 
121214ec6bbSwdenk /* phy BMSR */
122214ec6bbSwdenk #define PHY_BMSR_100T4		0x8000
123214ec6bbSwdenk #define PHY_BMSR_100TXF		0x4000
124214ec6bbSwdenk #define PHY_BMSR_100TXH		0x2000
125214ec6bbSwdenk #define PHY_BMSR_10TF		0x1000
126214ec6bbSwdenk #define PHY_BMSR_10TH		0x0800
127214ec6bbSwdenk #define PHY_BMSR_PRE_SUP	0x0040
128214ec6bbSwdenk #define PHY_BMSR_AUTN_COMP	0x0020
129214ec6bbSwdenk #define PHY_BMSR_RF		0x0010
130214ec6bbSwdenk #define PHY_BMSR_AUTN_ABLE	0x0008
131214ec6bbSwdenk #define PHY_BMSR_LS		0x0004
132214ec6bbSwdenk #define PHY_BMSR_JD		0x0002
133214ec6bbSwdenk #define PHY_BMSR_EXT		0x0001
134214ec6bbSwdenk 
135214ec6bbSwdenk /*phy ANLPAR */
136214ec6bbSwdenk #define PHY_ANLPAR_NP		0x8000
137214ec6bbSwdenk #define PHY_ANLPAR_ACK		0x4000
138214ec6bbSwdenk #define PHY_ANLPAR_RF		0x2000
139214ec6bbSwdenk #define PHY_ANLPAR_T4		0x0200
140214ec6bbSwdenk #define PHY_ANLPAR_TXFD		0x0100
141214ec6bbSwdenk #define PHY_ANLPAR_TX		0x0080
142214ec6bbSwdenk #define PHY_ANLPAR_10FD		0x0040
143214ec6bbSwdenk #define PHY_ANLPAR_10		0x0020
144214ec6bbSwdenk #define PHY_ANLPAR_100		0x0380	    /* we can run at 100 */
145855a496fSwdenk 
146b9711de1Swdenk #define PHY_ANLPAR_PSB_MASK     0x001f
147b9711de1Swdenk #define PHY_ANLPAR_PSB_802_3    0x0001
148b9711de1Swdenk #define PHY_ANLPAR_PSB_802_9    0x0002
149b9711de1Swdenk 
150855a496fSwdenk /* PHY_1000BTSR */
151855a496fSwdenk #define PHY_1000BTSR_MSCF       0x8000
152855a496fSwdenk #define PHY_1000BTSR_MSCR       0x4000
153855a496fSwdenk #define PHY_1000BTSR_LRS        0x2000
154855a496fSwdenk #define PHY_1000BTSR_RRS        0x1000
155855a496fSwdenk #define PHY_1000BTSR_1000FD     0x0800
156855a496fSwdenk #define PHY_1000BTSR_1000HD     0x0400
157855a496fSwdenk 
158214ec6bbSwdenk #endif
159