Go to the documentation of this file.
39 #ifndef ALTERA_ADXCVR_H_
40 #define ALTERA_ADXCVR_H_
54 #define XCVR_REG_ARBITRATION 0x000
55 #define XCVR_ARBITRATION_MASK 0xFF
56 #define XCVR_ARBITRATION_GET_AVMM 0x02
57 #define XCVR_ARBITRATION_RELEASE_AVMM_CALIB 0x01
58 #define XCVR_ARBITRATION_RELEASE_AVMM 0x03
60 #define XCVR_REG_CALIB_ATX_PLL_EN 0x100
61 #define XCVR_CALIB_ATX_PLL_EN_MASK 0x01
62 #define XCVR_CALIB_ATX_PLL_EN 0x01
64 #define XCVR_REG_CAPAB_ATX_PLL_STAT 0x280
65 #define XCVR_CAPAB_ATX_PLL_CAL_BSY_MASK 0x02
66 #define XCVR_CAPAB_ATX_PLL_CAL_DONE 0x00
69 #define XCVR_REG_CALIB_PMA_EN 0x100
70 #define XCVR_CALIB_TX_TERM_VOD_MASK 0x20
71 #define XCVR_CALIB_TX_TERM_VOD_EN 0x20
72 #define XCVR_CALIB_CMU_CDR_PLL_EN_MASK 0x02
73 #define XCVR_CALIB_CMU_CDR_PLL_EN 0x02
75 #define XCVR_REG_CAPAB_PMA 0x281
76 #define XCVR_CAPAB_RX_CAL_BUSY_EN_MASK 0x20
77 #define XCVR_CAPAB_RX_CAL_BUSY_EN 0x20
78 #define XCVR_CAPAB_RX_CAL_BUSY_DIS 0x00
79 #define XCVR_CAPAB_RX_CAL_BUSY_MASK 0x02
80 #define XCVR_CAPAB_RX_CAL_DONE 0x00
81 #define XCVR_CAPAB_TX_CAL_BUSY_EN_MASK 0x10
82 #define XCVR_CAPAB_TX_CAL_BUSY_EN 0x10
83 #define XCVR_CAPAB_TX_CAL_BUSY_DIS 0x00
84 #define XCVR_CAPAB_TX_CAL_BUSY_MASK 0x01
85 #define XCVR_CAPAB_TX_CAL_DONE 0x00
87 #define XCVR_REG_RATE_SWITCH_FLAG 0x166
88 #define XCVR_RATE_SWITCH_FLAG_MASK 0x80
89 #define XCVR_RATE_SWITCH_FLAG_RATE_SWITCH 0x00
90 #define XCVR_RATE_SWITCH_FLAG_NO_RATE_SWITCH 0x80
124 unsigned int lane_rate_khz);
132 unsigned int lane_rate);
140 uint32_t mask, uint32_t val);
147 uint32_t lane,
bool calibrate);
151 uint32_t reg, uint32_t *val);
153 uint32_t reg, uint32_t mask, uint32_t val);
Driver for the Altera CDR/CMU PLL dynamic reconfiguration.
int32_t xcvr_calib_tx(struct adxcvr *xcvr)
xcvr_calib_tx
Definition: altera_adxcvr.c:317
uint32_t timeout
Definition: ad413x.c:54
int32_t atx_pll_calibration_check(struct adxcvr *xcvr)
atx_pll_calibration_check
Definition: altera_adxcvr.c:253
uint32_t lane_rate_khz
Definition: altera_adxcvr.h:103
int32_t adxcfg_write(struct adxcvr *xcvr, uint32_t lane, uint32_t reg, uint32_t val)
adxcfg_write
Definition: altera_adxcvr.c:198
uint32_t parent_rate_khz
Definition: altera_adxcvr.h:104
#define XCVR_CAPAB_TX_CAL_BUSY_MASK
Definition: altera_adxcvr.h:84
const char * name
Definition: altera_adxcvr.h:96
int32_t atx_pll_read(struct adxcvr *xcvr, uint32_t reg, uint32_t *val)
atx_pll_read
Definition: altera_adxcvr.c:156
void adxcvr_post_lane_rate_change(struct adxcvr *xcvr, unsigned int lane_rate_khz)
adxcvr_post_lane_rate_change
Definition: altera_adxcvr.c:398
int32_t xcvr_calib_tx(struct adxcvr *xcvr)
xcvr_calib_tx
Definition: altera_adxcvr.c:317
void adxcvr_release_arbitration(uint32_t addr, bool calibrate)
adxcvr_release_arbitration
Definition: altera_adxcvr.c:132
void adxcfg_update(struct adxcvr *xcvr, uint32_t lane, uint32_t reg, uint32_t mask, uint32_t val)
adxcfg_update
Definition: altera_adxcvr.c:220
#define ADXCVR_REG_SYNTH_CONF
Definition: altera_adxcvr.c:78
#define ADXCVR_RESETN
Definition: altera_adxcvr.c:70
void adxcfg_release_arbitration(struct adxcvr *xcvr, uint32_t lane, bool calibrate)
adxcfg_release_arbitration
Definition: altera_adxcvr.c:244
#define XCVR_CALIB_TX_TERM_VOD_EN
Definition: altera_adxcvr.h:71
ADI JESD204B/C AXI_ADXCVR Highspeed Transceiver Device structure.
Definition: altera_adxcvr.h:95
void adxcfg_release_arbitration(struct adxcvr *xcvr, uint32_t lane, bool calibrate)
adxcfg_release_arbitration
Definition: altera_adxcvr.c:244
bool is_transmit
Definition: altera_adxcvr.h:98
int32_t altera_a10_cdr_pll_set_rate(struct adxcvr *xcvr, uint32_t rate_khz)
altera_a10_cdr_pll_set_rate
Definition: altera_a10_cdr_pll.c:363
bool initial_recalc
Definition: altera_adxcvr.h:105
int32_t adxcvr_set_rate(struct adxcvr *xcvr, uint32_t rate_khz)
adxcvr_init
Definition: altera_adxcvr.c:420
int32_t atx_pll_read(struct adxcvr *xcvr, uint32_t reg, uint32_t *val)
atx_pll_read
Definition: altera_adxcvr.c:156
long altera_a10_cdr_pll_round_rate(struct adxcvr *xcvr, uint32_t rate_khz)
altera_a10_cdr_pll_round_rate
Definition: altera_a10_cdr_pll.c:341
uint32_t atx_pll_base
Definition: altera_adxcvr.h:101
int32_t atx_pll_write(struct adxcvr *xcvr, uint32_t reg, uint32_t val)
atx_pll_write
Definition: altera_adxcvr.c:146
uint32_t base
Definition: altera_adxcvr.h:97
int32_t adxcvr_init(struct adxcvr **ad_xcvr, const struct adxcvr_init *init)
adxcvr_init
Definition: altera_adxcvr.c:443
int32_t adxcfg_read(struct adxcvr *xcvr, uint32_t lane, uint32_t reg, uint32_t *val)
adxcfg_read
Definition: altera_adxcvr.c:209
int32_t adxcvr_set_rate(struct adxcvr *xcvr, uint32_t rate_khz)
adxcvr_init
Definition: altera_adxcvr.c:420
void atx_pll_release_arbitration(struct adxcvr *xcvr, bool calibrate)
atx_pll_release_arbitration
Definition: altera_adxcvr.c:189
#define XCVR_ARBITRATION_GET_AVMM
Definition: altera_adxcvr.h:56
#define XCVR_CAPAB_RX_CAL_BUSY_MASK
Definition: altera_adxcvr.h:79
bool
Definition: common.h:54
#define XCVR_REG_CAPAB_ATX_PLL_STAT
Definition: altera_adxcvr.h:64
void adxcfg_acquire_arbitration(struct adxcvr *xcvr, uint32_t lane)
adxcfg_acquire_arbitration
Definition: altera_adxcvr.c:234
#define ADXCVR_REG_STATUS2
Definition: altera_adxcvr.c:75
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
void adxcfg_acquire_arbitration(struct adxcvr *xcvr, uint32_t lane)
adxcfg_acquire_arbitration
Definition: altera_adxcvr.c:234
#define XCVR_REG_CAPAB_PMA
Definition: altera_adxcvr.h:75
#define ADXCVR_REG_STATUS
Definition: altera_adxcvr.c:72
int32_t adxcvr_round_rate(struct adxcvr *xcvr, uint32_t rate_khz)
adxcvr_round_rate
Definition: altera_adxcvr.c:409
int32_t adxcvr_remove(struct adxcvr *xcvr)
adxcvr_remove
Definition: altera_adxcvr.c:494
Driver for the Altera ADXCVR Configuration.
int32_t atx_pll_calibration_check(struct adxcvr *xcvr)
atx_pll_calibration_check
Definition: altera_adxcvr.c:253
uint32_t adxcfg_base[4]
Definition: altera_adxcvr.h:111
#define XCVR_CAPAB_RX_CAL_BUSY_EN_MASK
Definition: altera_adxcvr.h:76
uint32_t altera_a10_atx_pll_recalc_rate(struct adxcvr *xcvr)
altera_a10_atx_pll_recalc_rate
Definition: altera_a10_atx_pll.c:289
void atx_pll_release_arbitration(struct adxcvr *xcvr, bool calibrate)
atx_pll_release_arbitration
Definition: altera_adxcvr.c:189
int32_t adxcvr_write(struct adxcvr *xcvr, uint32_t reg_addr, uint32_t reg_val)
adxcvr_write
Definition: altera_adxcvr.c:87
#define ADXCVR_STATUS2_XCVR(x)
Definition: altera_adxcvr.c:76
Definition: altera_adxcvr.h:108
#define XCVR_CAPAB_ATX_PLL_CAL_BSY_MASK
Definition: altera_adxcvr.h:65
#define XCVR_CAPAB_ATX_PLL_CAL_DONE
Definition: altera_adxcvr.h:66
int32_t adxcvr_read(struct adxcvr *xcvr, uint32_t reg_addr, uint32_t *reg_val)
adxcvr_read
Definition: altera_adxcvr.c:99
const char * name
Definition: altera_adxcvr.h:109
uint32_t base
Definition: altera_adxcvr.h:110
void atx_pll_update(struct adxcvr *xcvr, uint32_t reg, uint32_t mask, uint32_t val)
atx_pll_update
Definition: altera_adxcvr.c:166
uint32_t adxcfg_base[4]
Definition: altera_adxcvr.h:100
#define XCVR_CAPAB_RX_CAL_BUSY_DIS
Definition: altera_adxcvr.h:78
#define XCVR_ARBITRATION_RELEASE_AVMM_CALIB
Definition: altera_adxcvr.h:57
int32_t altera_a10_atx_pll_round_rate(struct adxcvr *xcvr, uint32_t rate_khz)
altera_a10_atx_pll_round_rate
Definition: altera_a10_atx_pll.c:191
int32_t adxcfg_calibration_check(struct adxcvr *xcvr, uint32_t lane, bool tx)
adxcfg_calibration_check
Definition: altera_adxcvr.c:280
int32_t adxcfg_read(struct adxcvr *xcvr, uint32_t lane, uint32_t reg, uint32_t *val)
adxcfg_read
Definition: altera_adxcvr.c:209
uint32_t altera_a10_cdr_pll_recalc_rate(struct adxcvr *xcvr)
altera_a10_cdr_pll_recalc_rate
Definition: altera_a10_cdr_pll.c:485
void atx_pll_update(struct adxcvr *xcvr, uint32_t reg, uint32_t mask, uint32_t val)
atx_pll_update
Definition: altera_adxcvr.c:166
#define ADXCVR_STATUS
Definition: altera_adxcvr.c:73
int32_t adxcfg_calibration_check(struct adxcvr *xcvr, uint32_t lane, bool tx)
adxcfg_calibration_check
Definition: altera_adxcvr.c:280
uint32_t atx_pll_base
Definition: altera_adxcvr.h:112
uint32_t lane_rate_khz
Definition: altera_adxcvr.h:113
void adxcvr_pre_lane_rate_change(struct adxcvr *xcvr)
adxcvr_pre_lane_rate_change
Definition: altera_adxcvr.c:350
#define NO_OS_BIT(x)
Definition: no_os_util.h:51
uint32_t adxcvr_recalc_rate(struct adxcvr *xcvr)
adxcvr_recalc_rate
Definition: altera_adxcvr.c:432
#define XCVR_ARBITRATION_RELEASE_AVMM
Definition: altera_adxcvr.h:58
void adxcvr_pre_lane_rate_change(struct adxcvr *xcvr)
adxcvr_pre_lane_rate_change
Definition: altera_adxcvr.c:350
void no_os_udelay(uint32_t usecs)
Wait until usecs microseconds passed.
Definition: aducm3029_delay.c:120
void adxcvr_acquire_arbitration(struct adxcvr *xcvr, uint32_t addr, uint32_t status_reg)
adxcvr_acquire_arbitration
Definition: altera_adxcvr.c:111
int32_t altera_a10_atx_pll_set_rate(struct adxcvr *xcvr, uint32_t rate_khz)
altera_a10_atx_pll_set_rate
Definition: altera_a10_atx_pll.c:212
void atx_pll_acquire_arbitration(struct adxcvr *xcvr)
atx_pll_acquire_arbitration
Definition: altera_adxcvr.c:180
uint32_t reset_counter
Definition: altera_adxcvr.h:102
int32_t adxcvr_round_rate(struct adxcvr *xcvr, uint32_t rate_khz)
adxcvr_round_rate
Definition: altera_adxcvr.c:409
#define XCVR_CAPAB_TX_CAL_BUSY_EN_MASK
Definition: altera_adxcvr.h:81
int32_t adxcvr_remove(struct adxcvr *xcvr)
adxcvr_remove
Definition: altera_adxcvr.c:494
#define XCVR_CALIB_TX_TERM_VOD_MASK
Definition: altera_adxcvr.h:70
void adxcfg_update(struct adxcvr *xcvr, uint32_t lane, uint32_t reg, uint32_t mask, uint32_t val)
adxcfg_update
Definition: altera_adxcvr.c:220
#define ADXCVR_REG_RESETN
Definition: altera_adxcvr.c:69
void adxcvr_finalize_lane_rate_change(struct adxcvr *xcvr)
adxcvr_finalize_lane_rate_change
Definition: altera_adxcvr.c:364
uint32_t lanes_per_link
Definition: altera_adxcvr.h:99
Header file of utility functions.
void atx_pll_acquire_arbitration(struct adxcvr *xcvr)
atx_pll_acquire_arbitration
Definition: altera_adxcvr.c:180
uint32_t adxcvr_recalc_rate(struct adxcvr *xcvr)
adxcvr_recalc_rate
Definition: altera_adxcvr.c:432
void adxcvr_post_lane_rate_change(struct adxcvr *xcvr, unsigned int lane_rate_khz)
adxcvr_post_lane_rate_change
Definition: altera_adxcvr.c:398
#define XCVR_REG_CALIB_PMA_EN
Definition: altera_adxcvr.h:69
uint32_t parent_rate_khz
Definition: altera_adxcvr.h:114
int32_t atx_pll_write(struct adxcvr *xcvr, uint32_t reg, uint32_t val)
atx_pll_write
Definition: altera_adxcvr.c:146
int32_t adxcvr_init(struct adxcvr **ad_xcvr, const struct adxcvr_init *init)
adxcvr_init
Definition: altera_adxcvr.c:443
int32_t adxcfg_write(struct adxcvr *xcvr, uint32_t lane, uint32_t reg, uint32_t val)
adxcfg_write
Definition: altera_adxcvr.c:198
#define XCVR_CAPAB_TX_CAL_BUSY_EN
Definition: altera_adxcvr.h:82