xref: /dpdk/drivers/net/axgbe/axgbe_phy.h (revision 47cf4ac19e2aa94ac1f33c3bec7b2e4f04171680)
1562825a0SRavi Kumar /*   SPDX-License-Identifier: BSD-3-Clause
2562825a0SRavi Kumar  *   Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
3562825a0SRavi Kumar  *   Copyright(c) 2018 Synopsys, Inc. All rights reserved.
4562825a0SRavi Kumar  */
5562825a0SRavi Kumar 
6562825a0SRavi Kumar #ifndef __AXGBE_PHY_H__
7562825a0SRavi Kumar #define __AXGBE_PHY_H__
8562825a0SRavi Kumar 
9562825a0SRavi Kumar #define SPEED_10    10
10562825a0SRavi Kumar #define SPEED_100   100
11562825a0SRavi Kumar #define SPEED_1000  1000
12562825a0SRavi Kumar #define SPEED_2500  2500
13562825a0SRavi Kumar #define SPEED_10000 10000
14562825a0SRavi Kumar 
15562825a0SRavi Kumar 
16562825a0SRavi Kumar /* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit
17562825a0SRavi Kumar  * IEEE 802.3ae clause 45 addressing mode used by 10GIGE phy chips.
18562825a0SRavi Kumar  */
19*47cf4ac1SVenkat Kumar Ande #define AXGBE_ADDR_C45  (1 << 30)
20562825a0SRavi Kumar 
21562825a0SRavi Kumar /* Basic mode status register. */
22562825a0SRavi Kumar #define BMSR_LSTATUS            0x0004  /* Link status */
23562825a0SRavi Kumar 
24562825a0SRavi Kumar /* Status register 1. */
25562825a0SRavi Kumar #define MDIO_STAT1_LSTATUS              BMSR_LSTATUS
26562825a0SRavi Kumar 
27562825a0SRavi Kumar /* Generic MII registers. */
28562825a0SRavi Kumar #define MII_BMCR		0x00	/* Basic mode control register */
29562825a0SRavi Kumar #define MII_BMSR		0x01	/* Basic mode status register  */
30562825a0SRavi Kumar #define MII_PHYSID1		0x02	/* PHYS ID 1                   */
31562825a0SRavi Kumar #define MII_PHYSID2		0x03	/* PHYS ID 2                   */
32562825a0SRavi Kumar #define MII_ADVERTISE		0x04	/* Advertisement control reg   */
33562825a0SRavi Kumar #define MII_LPA			0x05	/* Link partner ability reg    */
34562825a0SRavi Kumar #define MII_EXPANSION		0x06	/* Expansion register          */
35562825a0SRavi Kumar #define MII_CTRL1000		0x09	/* 1000BASE-T control          */
36562825a0SRavi Kumar #define MII_STAT1000		0x0a	/* 1000BASE-T status           */
37562825a0SRavi Kumar #define	MII_MMD_CTRL		0x0d	/* MMD Access Control Register */
38562825a0SRavi Kumar #define	MII_MMD_DATA		0x0e	/* MMD Access Data Register */
39562825a0SRavi Kumar #define MII_ESTATUS		0x0f	/* Extended Status             */
40562825a0SRavi Kumar #define MII_DCOUNTER		0x12	/* Disconnect counter          */
41562825a0SRavi Kumar #define MII_FCSCOUNTER		0x13	/* False carrier counter       */
42562825a0SRavi Kumar #define MII_NWAYTEST		0x14	/* N-way auto-neg test reg     */
43562825a0SRavi Kumar #define MII_RERRCOUNTER		0x15	/* Receive error counter       */
44562825a0SRavi Kumar #define MII_SREVISION		0x16	/* Silicon revision            */
45562825a0SRavi Kumar #define MII_RESV1		0x17	/* Reserved...                 */
46562825a0SRavi Kumar #define MII_LBRERROR		0x18	/* Lpback, rx, bypass error    */
47562825a0SRavi Kumar #define MII_PHYADDR		0x19	/* PHY address                 */
48562825a0SRavi Kumar #define MII_RESV2		0x1a	/* Reserved...                 */
49562825a0SRavi Kumar #define MII_TPISTATUS		0x1b	/* TPI status for 10mbps       */
50562825a0SRavi Kumar #define MII_NCONFIG		0x1c	/* Network interface config    */
51562825a0SRavi Kumar 
52562825a0SRavi Kumar /* Basic mode control register. */
53562825a0SRavi Kumar #define BMCR_RESV		0x003f	/* Unused...                   */
54562825a0SRavi Kumar #define BMCR_SPEED1000		0x0040	/* MSB of Speed (1000)         */
55562825a0SRavi Kumar #define BMCR_CTST		0x0080	/* Collision test              */
56562825a0SRavi Kumar #define BMCR_FULLDPLX		0x0100	/* Full duplex                 */
57562825a0SRavi Kumar #define BMCR_ANRESTART		0x0200	/* Auto negotiation restart    */
58562825a0SRavi Kumar #define BMCR_ISOLATE		0x0400	/* Isolate data paths from MII */
59562825a0SRavi Kumar #define BMCR_PDOWN		0x0800	/* Enable low power state      */
60562825a0SRavi Kumar #define BMCR_ANENABLE		0x1000	/* Enable auto negotiation     */
61562825a0SRavi Kumar #define BMCR_SPEED100		0x2000	/* Select 100Mbps              */
62562825a0SRavi Kumar #define BMCR_LOOPBACK		0x4000	/* TXD loopback bits           */
63562825a0SRavi Kumar #define BMCR_RESET		0x8000	/* Reset to default state      */
64562825a0SRavi Kumar #define BMCR_SPEED10		0x0000	/* Select 10Mbps               */
65562825a0SRavi Kumar 
66562825a0SRavi Kumar 
67562825a0SRavi Kumar /* MDIO Manageable Devices (MMDs). */
68562825a0SRavi Kumar #define MDIO_MMD_PMAPMD		1	/* Physical Medium Attachment
69562825a0SRavi Kumar 					 * Physical Medium Dependent
70562825a0SRavi Kumar 					 */
71562825a0SRavi Kumar #define MDIO_MMD_WIS		2	/* WAN Interface Sublayer */
72562825a0SRavi Kumar #define MDIO_MMD_PCS		3	/* Physical Coding Sublayer */
73562825a0SRavi Kumar #define MDIO_MMD_PHYXS		4	/* PHY Extender Sublayer */
74562825a0SRavi Kumar #define MDIO_MMD_DTEXS		5	/* DTE Extender Sublayer */
75562825a0SRavi Kumar #define MDIO_MMD_TC		6	/* Transmission Convergence */
76562825a0SRavi Kumar #define MDIO_MMD_AN		7	/* Auto-Negotiation */
77562825a0SRavi Kumar #define MDIO_MMD_C22EXT		29	/* Clause 22 extension */
78562825a0SRavi Kumar #define MDIO_MMD_VEND1		30	/* Vendor specific 1 */
79562825a0SRavi Kumar #define MDIO_MMD_VEND2		31	/* Vendor specific 2 */
80562825a0SRavi Kumar 
81562825a0SRavi Kumar /* Generic MDIO registers. */
82562825a0SRavi Kumar #define MDIO_CTRL1		MII_BMCR
83562825a0SRavi Kumar #define MDIO_STAT1		MII_BMSR
84562825a0SRavi Kumar #define MDIO_DEVID1		MII_PHYSID1
85562825a0SRavi Kumar #define MDIO_DEVID2		MII_PHYSID2
86562825a0SRavi Kumar #define MDIO_SPEED		4	/* Speed ability */
87562825a0SRavi Kumar #define MDIO_DEVS1		5	/* Devices in package */
88562825a0SRavi Kumar #define MDIO_DEVS2		6
89562825a0SRavi Kumar #define MDIO_CTRL2		7	/* 10G control 2 */
90562825a0SRavi Kumar #define MDIO_STAT2		8	/* 10G status 2 */
91562825a0SRavi Kumar #define MDIO_PMA_TXDIS		9	/* 10G PMA/PMD transmit disable */
92562825a0SRavi Kumar #define MDIO_PMA_RXDET		10	/* 10G PMA/PMD receive signal detect */
93562825a0SRavi Kumar #define MDIO_PMA_EXTABLE	11	/* 10G PMA/PMD extended ability */
94562825a0SRavi Kumar #define MDIO_PKGID1		14	/* Package identifier */
95562825a0SRavi Kumar #define MDIO_PKGID2		15
96562825a0SRavi Kumar #define MDIO_AN_ADVERTISE	16	/* AN advertising (base page) */
97562825a0SRavi Kumar #define MDIO_AN_LPA		19	/* AN LP abilities (base page) */
98562825a0SRavi Kumar #define MDIO_PCS_EEE_ABLE	20	/* EEE Capability register */
99562825a0SRavi Kumar #define MDIO_PCS_EEE_WK_ERR	22	/* EEE wake error counter */
100562825a0SRavi Kumar #define MDIO_PHYXS_LNSTAT	24	/* PHY XGXS lane state */
101562825a0SRavi Kumar #define MDIO_AN_EEE_ADV		60	/* EEE advertisement */
102562825a0SRavi Kumar #define MDIO_AN_EEE_LPABLE	61	/* EEE link partner ability */
103562825a0SRavi Kumar 
104562825a0SRavi Kumar /* Media-dependent registers. */
105562825a0SRavi Kumar #define MDIO_PMA_10GBT_SWAPPOL	130	/* 10GBASE-T pair swap & polarity */
106562825a0SRavi Kumar #define MDIO_PMA_10GBT_TXPWR	131	/* 10GBASE-T TX power control */
107562825a0SRavi Kumar #define MDIO_PMA_10GBT_SNR	133	/* 10GBASE-T SNR margin, lane A.
108562825a0SRavi Kumar 					 * Lanes B-D are numbered 134-136.
109562825a0SRavi Kumar 					 */
110562825a0SRavi Kumar #define MDIO_PMA_10GBR_FECABLE	170	/* 10GBASE-R FEC ability */
111562825a0SRavi Kumar #define MDIO_PCS_10GBX_STAT1	24	/* 10GBASE-X PCS status 1 */
112562825a0SRavi Kumar #define MDIO_PCS_10GBRT_STAT1	32	/* 10GBASE-R/-T PCS status 1 */
113562825a0SRavi Kumar #define MDIO_PCS_10GBRT_STAT2	33	/* 10GBASE-R/-T PCS status 2 */
114562825a0SRavi Kumar #define MDIO_AN_10GBT_CTRL	32	/* 10GBASE-T auto-negotiation control */
115562825a0SRavi Kumar #define MDIO_AN_10GBT_STAT	33	/* 10GBASE-T auto-negotiation status */
116562825a0SRavi Kumar 
117562825a0SRavi Kumar /* Control register 1. */
118562825a0SRavi Kumar /* Enable extended speed selection */
119562825a0SRavi Kumar #define MDIO_CTRL1_SPEEDSELEXT		(BMCR_SPEED1000 | BMCR_SPEED100)
120562825a0SRavi Kumar /* All speed selection bits */
121562825a0SRavi Kumar #define MDIO_CTRL1_SPEEDSEL		(MDIO_CTRL1_SPEEDSELEXT | 0x003c)
122562825a0SRavi Kumar #define MDIO_CTRL1_FULLDPLX		BMCR_FULLDPLX
123562825a0SRavi Kumar #define MDIO_CTRL1_LPOWER		BMCR_PDOWN
124562825a0SRavi Kumar #define MDIO_CTRL1_RESET		BMCR_RESET
125562825a0SRavi Kumar #define MDIO_PMA_CTRL1_LOOPBACK		0x0001
126562825a0SRavi Kumar #define MDIO_PMA_CTRL1_SPEED1000	BMCR_SPEED1000
127562825a0SRavi Kumar #define MDIO_PMA_CTRL1_SPEED100		BMCR_SPEED100
128562825a0SRavi Kumar #define MDIO_PCS_CTRL1_LOOPBACK		BMCR_LOOPBACK
129562825a0SRavi Kumar #define MDIO_PHYXS_CTRL1_LOOPBACK	BMCR_LOOPBACK
130562825a0SRavi Kumar #define MDIO_AN_CTRL1_RESTART		BMCR_ANRESTART
131562825a0SRavi Kumar #define MDIO_AN_CTRL1_ENABLE		BMCR_ANENABLE
132562825a0SRavi Kumar #define MDIO_AN_CTRL1_XNP		0x2000	/* Enable extended next page */
133562825a0SRavi Kumar #define MDIO_PCS_CTRL1_CLKSTOP_EN	0x400	/* Stop the clock during LPI */
134562825a0SRavi Kumar 
135562825a0SRavi Kumar 
136562825a0SRavi Kumar 
137562825a0SRavi Kumar 
138562825a0SRavi Kumar 
139562825a0SRavi Kumar /* PMA 10GBASE-R FEC ability register. */
140562825a0SRavi Kumar #define MDIO_PMA_10GBR_FECABLE_ABLE     0x0001  /* FEC ability */
141562825a0SRavi Kumar #define MDIO_PMA_10GBR_FECABLE_ERRABLE  0x0002  /* FEC error indic. ability */
142562825a0SRavi Kumar 
143562825a0SRavi Kumar 
144562825a0SRavi Kumar /* Autoneg related */
145562825a0SRavi Kumar #define ADVERTISED_Autoneg		(1 << 6)
146562825a0SRavi Kumar #define SUPPORTED_Autoneg		(1 << 6)
147562825a0SRavi Kumar #define AUTONEG_DISABLE			0x00
148562825a0SRavi Kumar #define AUTONEG_ENABLE			0x01
149562825a0SRavi Kumar 
150562825a0SRavi Kumar #define ADVERTISED_Pause		(1 << 13)
151562825a0SRavi Kumar #define ADVERTISED_Asym_Pause		(1 << 14)
152562825a0SRavi Kumar 
153562825a0SRavi Kumar #define SUPPORTED_Pause			(1 << 13)
154562825a0SRavi Kumar #define SUPPORTED_Asym_Pause		(1 << 14)
155562825a0SRavi Kumar 
156562825a0SRavi Kumar #define SUPPORTED_Backplane		(1 << 16)
157562825a0SRavi Kumar #define SUPPORTED_TP                    (1 << 7)
158562825a0SRavi Kumar 
159562825a0SRavi Kumar #define ADVERTISED_10000baseR_FEC       (1 << 20)
160562825a0SRavi Kumar 
161562825a0SRavi Kumar #define SUPPORTED_10000baseR_FEC	(1 << 20)
162562825a0SRavi Kumar 
163562825a0SRavi Kumar #define SUPPORTED_FIBRE                 (1 << 10)
164562825a0SRavi Kumar 
165562825a0SRavi Kumar #define ADVERTISED_10000baseKR_Full	(1 << 19)
166562825a0SRavi Kumar #define ADVERTISED_10000baseT_Full	(1 << 12)
167562825a0SRavi Kumar #define ADVERTISED_2500baseX_Full	(1 << 15)
168562825a0SRavi Kumar #define ADVERTISED_1000baseKX_Full	(1 << 17)
169562825a0SRavi Kumar #define ADVERTISED_1000baseT_Full	(1 << 5)
170562825a0SRavi Kumar #define ADVERTISED_100baseT_Full	(1 << 3)
1711f9d2d3aSVenkat Kumar Ande #define ADVERTISED_10baseT_Full		(1 << 2)
172562825a0SRavi Kumar #define ADVERTISED_TP			(1 << 7)
173562825a0SRavi Kumar #define ADVERTISED_FIBRE		(1 << 10)
174562825a0SRavi Kumar #define ADVERTISED_Backplane            (1 << 16)
175562825a0SRavi Kumar 
176562825a0SRavi Kumar #define SUPPORTED_1000baseKX_Full       (1 << 17)
177562825a0SRavi Kumar #define SUPPORTED_10000baseKR_Full      (1 << 19)
178562825a0SRavi Kumar #define SUPPORTED_2500baseX_Full	(1 << 15)
1791f9d2d3aSVenkat Kumar Ande #define SUPPORTED_10baseT_Full		(1 << 3)
180562825a0SRavi Kumar #define SUPPORTED_100baseT_Full         (1 << 2)
181562825a0SRavi Kumar #define SUPPORTED_1000baseT_Full        (1 << 5)
182562825a0SRavi Kumar #define SUPPORTED_10000baseT_Full       (1 << 12)
183562825a0SRavi Kumar #define SUPPORTED_2500baseX_Full        (1 << 15)
184562825a0SRavi Kumar 
185562825a0SRavi Kumar 
186562825a0SRavi Kumar #define SPEED_UNKNOWN           -1
187562825a0SRavi Kumar 
188562825a0SRavi Kumar /* Duplex, half or full. */
189562825a0SRavi Kumar #define DUPLEX_HALF             0x00
190562825a0SRavi Kumar #define DUPLEX_FULL             0x01
191562825a0SRavi Kumar #define DUPLEX_UNKNOWN          0xff
192562825a0SRavi Kumar 
193562825a0SRavi Kumar #endif
194562825a0SRavi Kumar /* PHY */
195