/* FILE NAME: an8855_phy.h | |
* PURPOSE: | |
* It provides AN8855 phy definition. | |
* NOTES: | |
* | |
*/ | |
#ifndef _AN8855_PHY_H_ | |
#define _AN8855_PHY_H_ | |
/* Type Definitions */ | |
#define int8_t char | |
#define uint8_t unsigned char | |
#define int16_t short | |
#define uint16_t unsigned short | |
#define int32_t int | |
#define uint32_t unsigned int | |
/* DATA TYPE DECLARATIONS | |
*/ | |
typedef int BOOL_T; | |
typedef signed char I8_T; | |
typedef unsigned char UI8_T; | |
typedef signed short I16_T; | |
typedef unsigned short UI16_T; | |
typedef signed int I32_T; | |
typedef unsigned int UI32_T; | |
typedef char C8_T; | |
typedef unsigned long long UI64_T; | |
typedef UI8_T AIR_MAC_T[6]; | |
/* Debug flags */ | |
//#define _MDIO_BOOTS_MODE 1 // Boots for preamble | |
#define _DEBUG_PRINT 1 // Debug print for Arduino | |
//#define _DEBUG_PRINT_eFuse 1 | |
#define _write_eFuse 1 | |
#define _DEBUG_SCAN_ALL 0 // Scan all Code for SerDes Calibration | |
#define _WRITE_RG_DIR 1 // Write RG directly for Calibration | |
#define _USER_DEFINE_MODE 0 // Replace to user-defined RG for Calibration | |
#define _DEBUG_MANUAL 1 // dbg_20210604 // manual dbg_20210604 | |
/**************************************************************************/ | |
/* Phy Address */ | |
//#define phyadd_common 0x1d // EN8801 | |
//#define PHY_NUM 1 // EN8801 | |
//#define phyadd_common 0x9 // EN7523 | |
//#define PHY_NUM 4 // EN7523 | |
//#define phyadd_common 0x0 // EN8850 | |
//#define PHY_NUM 5 // EN8850 | |
#define PHY_NUM 4 // EN8851 | |
#define CALIPOLARITY 1 | |
#define TXAMP_offset 0 // for 8851 | |
/* On/Off */ | |
//#define ENABLE 1 | |
//#define DISABLE 0 | |
#define Relay_ENABLE 1 | |
#define Relay_DISABLE 0 | |
/* FT Pattern */ | |
#define _MDIO 0x0 | |
#define _I2C 0x1 | |
#define FT_USB3_T101 0x0 | |
#define FT_PCIE0_T101 0x1 | |
#define FT_PCIE1_T101 0x2 | |
#define FT_PON_T101 0x3 | |
/********* Digital pin definition *************/ | |
#define Relay_Tx_PN 22 // relay 1 | |
#define Relay_R_R50 23 // relay 2 | |
#define Relay_Tx_Vol 24 // relay 3 | |
#define Relay_Rx_Vol 25 // relay 4 | |
#define Relay_DUT_GND 26 // relay 5 | |
#define Relay_I2C 27 // PIN for SCL&SDA , relay 6 | |
//#define Relay_I2C_SCL 27 // PIN for SCL&SDA , relay 6 | |
//#define Relay_I2C_SDA 28 // PIN for SCL&SDA , relay 6 | |
#define pin_MDIO 36 // PIN for MDIO | |
#define pin_MDC 37 // PIN for MDC | |
#define FT_PATTERN_bit0 49 // PIN for FT0 | |
#define FT_PATTERN_bit1 48 // PIN for FT1 | |
#define Relay_MDIO 35 // PIN for MDIO relay, relay 7 | |
/***********************************************/ | |
/* Use for I/O register PORTA control */ | |
#define POR_Relay_Tx_PN D22 // use for PORTA control, relay 1 | |
#define POR_Relay_R_R50 D23 // use for PORTA control, relay 2 | |
#define POR_Relay_Tx_Vol D24 // use for PORTA control, relay 3 | |
#define POR_Relay_Rx_Vol D25 // use for PORTA control, relay 4 | |
#define POR_Relay_DUT_GND D26 // use for PORTA control, relay 5 | |
//#define POR_Relay_I2C D27 // use for PORTA control, relay 6 | |
#define POR_Relay_I2C_SCL D27 // use for PORTA control, relay 6 | |
#define POR_Relay_I2C_SDA D28 // use for PORTA control, relay 7 | |
/* Use for I/O register PORTC control */ | |
#define POR_MDIO D36 // use for PORTC control | |
#define POR_MDC D37 // use for PORTC control | |
#define POR_Relay_MDIO D35 // use for PORTC control, relay 7 | |
/* Use for I/O register PORTL control */ | |
#define POR_FT_PATTERN_bit0 D49 // use for PORTL control | |
#define POR_FT_PATTERN_bit1 D48 // use for PORTL control | |
/* I/O register Port A */ | |
#define D22 0 | |
#define D23 1 | |
#define D24 2 | |
#define D25 3 | |
#define D26 4 | |
#define D27 5 | |
#define D28 6 | |
#define D29 7 | |
/* I/O register Port C */ | |
#define D37 0 | |
#define D36 1 | |
#define D35 2 | |
#define D34 3 | |
#define D33 4 | |
#define D32 5 | |
#define D31 6 | |
#define D30 7 | |
/* I/O register Port L */ | |
#define D49 0 | |
#define D48 1 | |
#define D47 2 | |
#define D46 3 | |
#define D45 4 | |
#define D44 5 | |
#define D43 6 | |
#define D42 7 | |
/* I/O register Port D */ | |
#define D21 0 | |
#define D20 1 | |
#define D19 2 | |
#define D18 3 | |
/*************************************************************************** | |
************************************************************************** | |
* MDC/MDIO | |
*************************************************************************** | |
***************************************************************************/ | |
#define SET_HIGH(data, nbit) ((data)|=(nbit)) | |
#define SET_LOW(data, nbit) ((data)&=~(nbit)) | |
#define MDIO_ONE _BV(POR_MDIO) | |
#define MDIO_ZERO 0x00 | |
#define MDC_ONE _BV(POR_MDC) | |
#define MDC_ZERO 0x00 | |
#define delay_us delayMicroseconds(0) | |
#define ANACAL_INIT 0x01 | |
#define ANACAL_ERROR 0xFD | |
#define ANACAL_SATURATION 0xFE | |
#define ANACAL_FINISH 0xFF | |
#define ANACAL_PAIR_A 0 | |
#define ANACAL_PAIR_B 1 | |
#define ANACAL_PAIR_C 2 | |
#define ANACAL_PAIR_D 3 | |
#define DAC_IN_0V 0x000 | |
#define DAC_IN_2V 0x0f0 // +/-1V | |
#define ZCAL_MIDDLE 0x20 | |
#define TX_OFFSET_0mV_idx 31 | |
#define TX_AMP_MIDDLE 0x20 | |
#define TX_i2mpb_hbt_ofs 0x4 // 8851 fine tune 100M v1 (20220414) | |
#define R50_OFFSET_VALUE 0x5 | |
//============== definition value for GbE ===================// | |
#define BG_VOLTAGE_OUT 0xc0 | |
#define FORCE_MDI 2 | |
#define FORCE_MDIX 3 | |
#define LDO_1p15_VOSEL_1 1 | |
#define RX_CAL_VALUE_9 0x3 | |
#define RX_CAL_HVGA_BW_2 0x2 | |
#define RX_CAL_DCO_Normal 0x0 | |
#define RX_CAL_DCO_BYPASS_TX_RX 0x3 | |
#define RX_CAL_DCO_0xF 0xF | |
#define TANA_MON_DCV_SEL__MASK 0xE0 | |
#define TANA_MON_DCV_SEL__MPX_TANA_A 0x20 | |
#define TANA_MON_DCV_SEL__MPX_TANA_B 0x40 | |
#define TANA_MON_DCV_SEL__MPX_TANA_C 0x60 | |
#define TANA_MON_DCV_SEL__MPX_TANA_D 0x80 | |
#define TANA_MON_DCV_SEL__MONVC__MASK 0x008000C8 | |
#define TANA_MON_DCV__TANA__VBG_MON 0x000000C0 | |
#define TANA_MON_DCV__TANA__MONVC 0x000000C8 | |
#define AN_disable_force_1000M 0x0140 | |
#define BG_voltage_output 0xc000 | |
#define Fix_mdi 0x1010 | |
#define Disable_tx_slew_control 0x0000 | |
#define LDO_control 0x0100 | |
#define Cal_control_BG 0x1110 | |
#define Cal_control_R50 0x1100 | |
#define Cal_control_TX_AMP 0x1100 | |
#define Cal_control_TX_OFST 0x0100 | |
#define Cal_control_R50_pairA_ENABLE 0x1101 | |
#define Disable_all 0x0 | |
#define Zcalen_A_ENABLE 0x0000 | |
#define Zcalen_B_ENABLE 0x1000 | |
#define Zcalen_C_ENABLE 0x0100 | |
#define Zcalen_D_ENABLE 0x0010 | |
#define MASK_MSB_8bit 0xff00 | |
#define MASK_LSB_8bit 0x00ff | |
#define MASK_r50ohm_rsel_tx_a 0x7f00 | |
#define MASK_r50ohm_rsel_tx_b 0x007f | |
#define MASK_r50ohm_rsel_tx_c 0x7f00 | |
#define MASK_r50ohm_rsel_tx_d 0x007f | |
#define Rg_r50ohm_rsel_tx_a_en 0x8000 | |
#define Rg_r50ohm_rsel_tx_b_en 0x0080 | |
#define Rg_r50ohm_rsel_tx_c_en 0x8000 | |
#define Rg_r50ohm_rsel_tx_d_en 0x0080 | |
#define Rg_txvos_calen_ENABLE 0x0001 | |
#define Bypass_tx_offset_cal 0x8000 | |
#define Enable_Tx_VLD 0xf808 | |
#define Rg_txg_calen_a_ENABLE 0x1000 | |
#define Rg_txg_calen_b_ENABLE 0x0100 | |
#define Rg_txg_calen_c_ENABLE 0x0010 | |
#define Rg_txg_calen_d_ENABLE 0x0001 | |
#define Force_dasn_dac_in0_ENABLE 0x8000 | |
#define Force_dasn_dac_in1_ENABLE 0x8000 | |
#define MASK_cr_tx_amp_offset_MSB 0x3f00 | |
#define MASK_cr_tx_amp_offset_LSB 0x003f | |
#define Rg_cal_refsel_ENABLE 0x0010 | |
#define MASK_da_tx_i2mpb_a_gbe 0xfc00 | |
#define MASK_da_tx_i2mpb_b_c_d_gbe 0x3f00 | |
#define LED_basic_control_en_active_low 0x800a | |
#define LED_led0_en_active_high 0xc007 | |
#define LED_led0_force_blinking 0x0200 | |
/*phy calibration use*/ | |
//Type defines | |
typedef unsigned char UINT8; | |
typedef unsigned short UINT16; | |
typedef unsigned long UINT32; | |
typedef struct | |
{ | |
UINT16 DATA_Lo; | |
UINT8 DATA_Hi; | |
}TR_DATA_T; | |
//CL22 Reg Support Page Select// | |
#define RgAddr_Reg1Fh 0x1f | |
#define CL22_Page_Reg 0x0000 | |
#define CL22_Page_ExtReg 0x0001 | |
#define CL22_Page_MiscReg 0x0002 | |
#define CL22_Page_LpiReg 0x0003 | |
#define CL22_Page_tReg 0x02A3 | |
#define CL22_Page_TrReg 0x52B5 | |
//CL45 Reg Support DEVID// | |
#define DEVID_03 0x03 | |
#define DEVID_07 0x07 | |
#define DEVID_1E 0x1E | |
#define DEVID_1F 0x1F | |
//TokenRing Reg Access// | |
#define TrReg_PKT_XMT_STA 0x8000 | |
#define TrReg_WR 0x8000 | |
#define TrReg_RD 0xA000 | |
/* ----------------- gephy_all Bit Field Definitions ------------------- */ | |
//------------------------------------- | |
//0x0000 | |
#define RgAddr_Reg00h 0x00 | |
//0x51e01200 | |
#define RgAddr_dev1Eh_reg120h 0x0120 | |
//0x51e01220 | |
#define RgAddr_dev1Eh_reg122h 0x0122 | |
//0x51e01440 | |
#define RgAddr_dev1Eh_reg144h 0x0144 | |
//0x51e014a0 | |
#define RgAddr_dev1Eh_reg14Ah 0x014a | |
//0x51e019b0 | |
#define RgAddr_dev1Eh_reg19Bh 0x019b | |
//0x51e02340 | |
#define RgAddr_dev1Eh_reg234h 0x0234 | |
//0x51e02380 | |
#define RgAddr_dev1Eh_reg238h 0x0238 | |
//0x51e02390 | |
#define RgAddr_dev1Eh_reg239h 0x0239 | |
//0x51f02680 | |
#define RgAddr_dev1Fh_reg268h 0x0268 | |
//0x51e02d10 | |
#define RgAddr_dev1Eh_reg2D1h 0x02d1 | |
//0x51e03230 | |
#define RgAddr_dev1Eh_reg323h 0x0323 | |
//0x51e03240 | |
#define RgAddr_dev1Eh_reg324h 0x0324 | |
//0x51e03260 | |
#define RgAddr_dev1Eh_reg326h 0x0326 | |
//0x51f01000 | |
#define RgAddr_dev1Fh_reg100h 0x0100 | |
//0x51e01450 | |
#define RgAddr_dev1Eh_reg145h 0x0145 | |
//0x51f00ff0 | |
#define RgAddr_dev1Fh_reg0FFh 0x00ff | |
//0x51e00db0 | |
#define RgAddr_dev1Eh_reg0DBh 0x00db | |
//0x51e00dc0 | |
#define RgAddr_dev1Eh_reg0DCh 0x00dc | |
//0x51e00e00 | |
#define RgAddr_dev1Eh_reg0E0h 0x00e0 | |
//0x51e00e10 | |
#define RgAddr_dev1Eh_reg0E1h 0x00e1 | |
//0x51e00e00 | |
#define RgAddr_dev1Eh_reg0E0h 0x00e0 | |
//0x51e017a0 | |
#define RgAddr_dev1Eh_reg17Ah 0x017a | |
//0x51f01150 | |
#define RgAddr_dev1Fh_reg115h 0x0115 | |
//0x51f01000 | |
#define RgAddr_dev1Fh_reg100h 0x0100 | |
//0x51e01450 | |
#define RgAddr_dev1Eh_reg145h 0x0145 | |
//0x51e01450 | |
#define RgAddr_dev1Eh_reg145h 0x0145 | |
//0x51e01850 | |
#define RgAddr_dev1Eh_reg185h 0x0185 | |
//0x51e00fb0 | |
#define RgAddr_dev1Eh_reg0FBh 0x00fb | |
//0x51e01740 | |
#define RgAddr_dev1Eh_reg174h 0x0174 | |
//0x51e01750 | |
#define RgAddr_dev1Eh_reg175h 0x0175 | |
//0x51e01850 | |
#define RgAddr_dev1Eh_reg185h 0x0185 | |
//0x51e00fb0 | |
#define RgAddr_dev1Eh_reg0FBh 0x00fb | |
//0x51e00960 | |
#define RgAddr_dev1Eh_reg096h 0x0096 | |
//0x51e003e0 | |
#define RgAddr_dev1Eh_reg03Eh 0x003e | |
//0x51e00dd0 | |
#define RgAddr_dev1Eh_reg0DDh 0x00dd | |
//0x51e017d0 | |
#define RgAddr_dev1Eh_reg17Dh 0x017d | |
//0x51e01810 | |
#define RgAddr_dev1Eh_reg181h 0x0181 | |
//0x51e00120 | |
#define RgAddr_dev1Eh_reg012h 0x0012 | |
//0x51e017e0 | |
#define RgAddr_dev1Eh_reg17Eh 0x017e | |
//0x51e01820 | |
#define RgAddr_dev1Eh_reg182h 0x0182 | |
//0x51e00170 | |
#define RgAddr_dev1Eh_reg017h 0x0017 | |
//0x51e01830 | |
#define RgAddr_dev1Eh_reg183h 0x0183 | |
//0x51e00190 | |
#define RgAddr_dev1Eh_reg019h 0x0019 | |
//0x51e01800 | |
#define RgAddr_dev1Eh_reg180h 0x0180 | |
//0x51e01840 | |
#define RgAddr_dev1Eh_reg184h 0x0184 | |
//0x51e00210 | |
#define RgAddr_dev1Eh_reg021h 0x0021 | |
//0x51e01720 | |
#define RgAddr_dev1Eh_reg172h 0x0172 | |
//0x51e01730 | |
#define RgAddr_dev1Eh_reg173h 0x0173 | |
//0x51e017c0 | |
#define RgAddr_dev1Eh_reg17Ch 0x017c | |
//0x51e017f0 | |
#define RgAddr_dev1Eh_reg17Fh 0x017f | |
//0x52b5100 | |
#define RgAddr_TrReg10h 0x10 | |
//0x52b5110 | |
#define RgAddr_TrReg11h 0x11 | |
//0x52b5120 | |
#define RgAddr_TrReg12h 0x12 | |
//0x31c0 | |
#define RgAddr_LpiReg1Ch 0x1c | |
//0x31d0 | |
#define RgAddr_LpiReg1Dh 0x1d | |
uint8_t BG_Calibration(uint8_t phyadd, int8_t calipolarity); | |
uint8_t R50_Calibration(uint8_t phyadd, uint8_t phyadd_common); | |
uint8_t TX_OFS_Calibration(uint8_t phyadd, uint8_t phyadd_common); | |
uint8_t TX_AMP_Calibration(uint8_t phyadd, uint8_t phyadd_common); | |
//void config_gphy_port(UINT8, UINT8); | |
void set_gphy_reg_cl22(uint8_t, uint8_t, uint16_t); | |
uint16_t get_gphy_reg_cl45(uint8_t, uint8_t, uint16_t); | |
void set_gphy_reg_cl45(uint8_t, uint8_t, uint16_t, uint16_t); | |
void anacal_exe(uint8_t); | |
#endif /* _AN8855_PHY_H_ */ | |