1/*
2 * ar80xx.h: ar80xx PHY driver
3 *
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 */
15
16#ifndef __AR80XX_H__
17#define __AR80XX_H__
18
19#define AR80XX_PHY_ID_MASK		0xffffffff
20#define AR80XX_PHY_ID_AR8033		0x004dd074
21#define ETH_SGMII_ADDRESS_OFFSET	0x48
22
23#define AR80XX_REG_CHIP_CONFIG		0x1f
24#define AR80XX_BT_BX_REG_SEL		0x8000	/* bit 15, select copper page register */
25#define AR80XX_AUTO_NEGO		0x1000	/* bit 12, enable auto negotiation */
26
27#define ETH_SGMII_GIGE_MSB		24
28#define ETH_SGMII_GIGE_LSB		24
29#define ETH_SGMII_GIGE_MASK		0x01000000
30#define ETH_SGMII_GIGE_GET(x)		(((x) & ETH_SGMII_GIGE_MASK) >> ETH_SGMII_GIGE_LSB)
31#define ETH_SGMII_GIGE_SET(x)		(((x) << ETH_SGMII_GIGE_LSB) & ETH_SGMII_GIGE_MASK)
32
33#define ETH_SGMII_CLK_SEL_MSB		25
34#define ETH_SGMII_CLK_SEL_LSB		25
35#define ETH_SGMII_CLK_SEL_MASK		0x02000000
36#define ETH_SGMII_CLK_SEL_GET(x)	(((x) & ETH_SGMII_CLK_SEL_MASK) >> ETH_SGMII_CLK_SEL_LSB)
37#define ETH_SGMII_CLK_SEL_SET(x)	(((x) << ETH_SGMII_CLK_SEL_LSB) & ETH_SGMII_CLK_SEL_MASK)
38
39#define ETH_SGMII_PHASE0_COUNT_MSB	7
40#define ETH_SGMII_PHASE0_COUNT_LSB	0
41#define ETH_SGMII_PHASE0_COUNT_MASK	0x000000ff
42#define ETH_SGMII_PHASE0_COUNT_GET(x)	(((x) & ETH_SGMII_PHASE0_COUNT_MASK) >> ETH_SGMII_PHASE0_COUNT_LSB)
43#define ETH_SGMII_PHASE0_COUNT_SET(x)	(((x) << ETH_SGMII_PHASE0_COUNT_LSB) & ETH_SGMII_PHASE0_COUNT_MASK)
44
45#define ETH_SGMII_PHASE1_COUNT_MSB	15
46#define ETH_SGMII_PHASE1_COUNT_LSB	8
47#define ETH_SGMII_PHASE1_COUNT_MASK	0x0000ff00
48#define ETH_SGMII_PHASE1_COUNT_GET(x)	(((x) & ETH_SGMII_PHASE1_COUNT_MASK) >> ETH_SGMII_PHASE1_COUNT_LSB)
49#define ETH_SGMII_PHASE1_COUNT_SET(x)	(((x) << ETH_SGMII_PHASE1_COUNT_LSB) & ETH_SGMII_PHASE1_COUNT_MASK)
50#endif
51