xref: /rk3399_rockchip-uboot/include/miiphy.h (revision 298035df4948b113d29ac0e694717d34b95bc5dc)
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 +----------------------------------------------------------------------------*/
30214ec6bbSwdenk #ifndef _miiphy_h_
31214ec6bbSwdenk #define _miiphy_h_
32214ec6bbSwdenk 
3363ff004cSMarian Balakowicz #include <net.h>
34214ec6bbSwdenk 
3563ff004cSMarian Balakowicz int miiphy_read (char *devname, unsigned char addr, unsigned char reg,
3663ff004cSMarian Balakowicz 		 unsigned short *value);
3763ff004cSMarian Balakowicz int miiphy_write (char *devname, unsigned char addr, unsigned char reg,
3863ff004cSMarian Balakowicz 		  unsigned short value);
3963ff004cSMarian Balakowicz int miiphy_info (char *devname, unsigned char addr, unsigned int *oui,
4063ff004cSMarian Balakowicz 		 unsigned char *model, unsigned char *rev);
4163ff004cSMarian Balakowicz int miiphy_reset (char *devname, unsigned char addr);
4263ff004cSMarian Balakowicz int miiphy_speed (char *devname, unsigned char addr);
4363ff004cSMarian Balakowicz int miiphy_duplex (char *devname, unsigned char addr);
44fc3e2165Swdenk #ifdef CFG_FAULT_ECHO_LINK_DOWN
4563ff004cSMarian Balakowicz int miiphy_link (char *devname, unsigned char addr);
46fc3e2165Swdenk #endif
47214ec6bbSwdenk 
48d9785c14SMarian Balakowicz void miiphy_init (void);
49d9785c14SMarian Balakowicz 
5063ff004cSMarian Balakowicz void miiphy_register (char *devname,
5163ff004cSMarian Balakowicz 		      int (*read) (char *devname, unsigned char addr,
5263ff004cSMarian Balakowicz 				   unsigned char reg, unsigned short *value),
5363ff004cSMarian Balakowicz 		      int (*write) (char *devname, unsigned char addr,
5463ff004cSMarian Balakowicz 				    unsigned char reg, unsigned short value));
5563ff004cSMarian Balakowicz 
5663ff004cSMarian Balakowicz int miiphy_set_current_dev (char *devname);
5763ff004cSMarian Balakowicz char *miiphy_get_current_dev (void);
5863ff004cSMarian Balakowicz 
5963ff004cSMarian Balakowicz void miiphy_listdev (void);
6063ff004cSMarian Balakowicz 
6163ff004cSMarian Balakowicz #define BB_MII_DEVNAME	"bbmii"
6263ff004cSMarian Balakowicz 
6363ff004cSMarian Balakowicz int bb_miiphy_read (char *devname, unsigned char addr,
6463ff004cSMarian Balakowicz 		    unsigned char reg, unsigned short *value);
6563ff004cSMarian Balakowicz int bb_miiphy_write (char *devname, unsigned char addr,
6663ff004cSMarian Balakowicz 		     unsigned char reg, unsigned short value);
67214ec6bbSwdenk 
68214ec6bbSwdenk /* phy seed setup */
69214ec6bbSwdenk #define AUTO			99
70855a496fSwdenk #define _1000BASET		1000
71214ec6bbSwdenk #define _100BASET		100
72214ec6bbSwdenk #define _10BASET		10
73214ec6bbSwdenk #define HALF			22
74214ec6bbSwdenk #define FULL			44
75214ec6bbSwdenk 
76214ec6bbSwdenk /* phy register offsets */
77214ec6bbSwdenk #define PHY_BMCR		0x00
78214ec6bbSwdenk #define PHY_BMSR		0x01
79214ec6bbSwdenk #define PHY_PHYIDR1		0x02
80214ec6bbSwdenk #define PHY_PHYIDR2		0x03
81214ec6bbSwdenk #define PHY_ANAR		0x04
82214ec6bbSwdenk #define PHY_ANLPAR		0x05
83214ec6bbSwdenk #define PHY_ANER		0x06
84214ec6bbSwdenk #define PHY_ANNPTR		0x07
85855a496fSwdenk #define PHY_ANLPNP		0x08
86855a496fSwdenk #define PHY_1000BTCR		0x09
87855a496fSwdenk #define PHY_1000BTSR		0x0A
88214ec6bbSwdenk #define PHY_PHYSTS		0x10
89214ec6bbSwdenk #define PHY_MIPSCR		0x11
90214ec6bbSwdenk #define PHY_MIPGSR		0x12
91214ec6bbSwdenk #define PHY_DCR			0x13
92214ec6bbSwdenk #define PHY_FCSCR		0x14
93214ec6bbSwdenk #define PHY_RECR		0x15
94214ec6bbSwdenk #define PHY_PCSR		0x16
95214ec6bbSwdenk #define PHY_LBR			0x17
96214ec6bbSwdenk #define PHY_10BTSCR		0x18
97214ec6bbSwdenk #define PHY_PHYCTRL		0x19
98214ec6bbSwdenk 
99214ec6bbSwdenk /* PHY BMCR */
100214ec6bbSwdenk #define PHY_BMCR_RESET		0x8000
101214ec6bbSwdenk #define PHY_BMCR_LOOP		0x4000
102214ec6bbSwdenk #define PHY_BMCR_100MB		0x2000
103214ec6bbSwdenk #define PHY_BMCR_AUTON		0x1000
104214ec6bbSwdenk #define PHY_BMCR_POWD		0x0800
105214ec6bbSwdenk #define PHY_BMCR_ISO		0x0400
106214ec6bbSwdenk #define PHY_BMCR_RST_NEG	0x0200
107214ec6bbSwdenk #define PHY_BMCR_DPLX		0x0100
108214ec6bbSwdenk #define PHY_BMCR_COL_TST	0x0080
109214ec6bbSwdenk 
110b9711de1Swdenk #define PHY_BMCR_SPEED_MASK	0x2040
111b9711de1Swdenk #define PHY_BMCR_1000_MBPS	0x0040
112b9711de1Swdenk #define PHY_BMCR_100_MBPS	0x2000
113b9711de1Swdenk #define PHY_BMCR_10_MBPS	0x0000
114b9711de1Swdenk 
115214ec6bbSwdenk /* phy BMSR */
116214ec6bbSwdenk #define PHY_BMSR_100T4		0x8000
117214ec6bbSwdenk #define PHY_BMSR_100TXF		0x4000
118214ec6bbSwdenk #define PHY_BMSR_100TXH		0x2000
119214ec6bbSwdenk #define PHY_BMSR_10TF		0x1000
120214ec6bbSwdenk #define PHY_BMSR_10TH		0x0800
121214ec6bbSwdenk #define PHY_BMSR_PRE_SUP	0x0040
122214ec6bbSwdenk #define PHY_BMSR_AUTN_COMP	0x0020
123214ec6bbSwdenk #define PHY_BMSR_RF		0x0010
124214ec6bbSwdenk #define PHY_BMSR_AUTN_ABLE	0x0008
125214ec6bbSwdenk #define PHY_BMSR_LS		0x0004
126214ec6bbSwdenk #define PHY_BMSR_JD		0x0002
127214ec6bbSwdenk #define PHY_BMSR_EXT		0x0001
128214ec6bbSwdenk 
129214ec6bbSwdenk /*phy ANLPAR */
130214ec6bbSwdenk #define PHY_ANLPAR_NP		0x8000
131214ec6bbSwdenk #define PHY_ANLPAR_ACK		0x4000
132214ec6bbSwdenk #define PHY_ANLPAR_RF		0x2000
133214ec6bbSwdenk #define PHY_ANLPAR_T4		0x0200
134214ec6bbSwdenk #define PHY_ANLPAR_TXFD		0x0100
135214ec6bbSwdenk #define PHY_ANLPAR_TX		0x0080
136214ec6bbSwdenk #define PHY_ANLPAR_10FD		0x0040
137214ec6bbSwdenk #define PHY_ANLPAR_10		0x0020
138214ec6bbSwdenk #define PHY_ANLPAR_100		0x0380	/* we can run at 100 */
139855a496fSwdenk 
140b9711de1Swdenk #define PHY_ANLPAR_PSB_MASK	0x001f
141b9711de1Swdenk #define PHY_ANLPAR_PSB_802_3	0x0001
142b9711de1Swdenk #define PHY_ANLPAR_PSB_802_9	0x0002
143b9711de1Swdenk 
144*298035dfSLarry Johnson /* phy 1000BTSR */
145855a496fSwdenk #define PHY_1000BTSR_MSCF	0x8000
146855a496fSwdenk #define PHY_1000BTSR_MSCR	0x4000
147855a496fSwdenk #define PHY_1000BTSR_LRS	0x2000
148855a496fSwdenk #define PHY_1000BTSR_RRS	0x1000
149855a496fSwdenk #define PHY_1000BTSR_1000FD	0x0800
150855a496fSwdenk #define PHY_1000BTSR_1000HD	0x0400
151855a496fSwdenk 
152214ec6bbSwdenk #endif
153