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