no-OS
xilinx_transceiver.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef XILINX_TRANSCEIVER_H_
41 #define XILINX_TRANSCEIVER_H_
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 #include <stdint.h>
47 #include <stdbool.h>
48 
49 /******************************************************************************/
50 /************************ Macros and Types Declarations ***********************/
51 /******************************************************************************/
52 #define AXI_PCORE_VER(major, minor, letter) ((major << 16) | (minor << 8) | letter)
53 #define AXI_PCORE_VER_MAJOR(version) (((version) >> 16) & 0xff)
54 #define AXI_PCORE_VER_MINOR(version) ((version >> 8) & 0xff)
55 #define AXI_PCORE_VER_LETTER(version) (version & 0xff)
56 
57 #define AXI_REG_VERSION 0x0000
58 #define AXI_VERSION(x) (((x) & 0xffffffff) << 0)
59 #define AXI_VERSION_IS(x, y, z) ((x) << 16 | (y) << 8 | (z))
60 #define AXI_VERSION_MAJOR(x) ((x) >> 16)
61 
62 #define AXI_REG_FPGA_INFO 0x001C
63 #define AXI_REG_FPGA_VOLTAGE 0x0140
64 
65 #define AXI_INFO_FPGA_TECH(info) ((info) >> 24)
66 #define AXI_INFO_FPGA_FAMILY(info) (((info) >> 16) & 0xff)
67 #define AXI_INFO_FPGA_SPEED_GRADE(info) (((info) >> 8) & 0xff)
68 #define AXI_INFO_FPGA_DEV_PACKAGE(info) ((info) & 0xff)
69 #define AXI_INFO_FPGA_VOLTAGE(val) ((val) & 0xffff)
70 
80 };
81 
91 };
92 
101 };
102 
112 };
113 
124 };
125 
141 };
142 
166 };
167 
172 struct xilinx_xcvr {
175  uint32_t encoding;
176  struct adxcvr *ad_xcvr;
177  uint32_t version;
182  uint32_t voltage;
183 
184  // CPLL / QPLL nominal operating ranges
185  uint32_t vco0_min; // kHz
186  uint32_t vco0_max; // kHz
187  uint32_t vco1_min; // kHz
188  uint32_t vco1_max; // kHz
189 };
190 
192  int (*write)(struct adxcvr *xcvr, unsigned int drp_port,
193  unsigned int reg, unsigned int val);
194  int (*read)(struct adxcvr *xcvr, unsigned int drp_port,
195  unsigned int reg, unsigned int *val);
196 };
197 
238 struct clk_ops {
239  int (*enable)(struct adxcvr *xcvr);
240  int (*disable)(struct adxcvr *xcvr);
241  unsigned long (*recalc_rate)(struct adxcvr *xcvr,
242  unsigned long parent_rate);
243  long (*round_rate)(struct adxcvr *xcvr,
244  unsigned long rate,
245  unsigned long parent_rate);
246  int (*set_rate)(struct adxcvr *xcvr,
247  unsigned long rate,
248  unsigned long parent_rate);
249 };
250 
256  uint32_t refclk_div;
257  uint32_t fb_div_N1;
258  uint32_t fb_div_N2;
259 };
260 
266  uint32_t refclk_div;
267  uint32_t fb_div;
268  uint32_t band;
269  uint32_t qty4_full_rate;
270 };
271 
272 /* Encoding */
273 #define ENC_8B10B 810
274 #define ENC_66B64B 6664
275 
276 /******************************************************************************/
277 /************************ Functions Declarations ******************************/
278 /******************************************************************************/
279 
281 int xilinx_xcvr_configure_cdr(struct xilinx_xcvr *xcvr,
282  uint32_t drp_port, uint32_t lane_rate, uint32_t out_div,
283  bool lpm_enable);
286  uint32_t drp_port, bool lpm);
287 
288 
291  uint32_t refclk_khz, uint32_t lane_rate_khz,
292  struct xilinx_xcvr_cpll_config *conf, uint32_t *out_div);
295  uint32_t drp_port, struct xilinx_xcvr_cpll_config *conf);
298  uint32_t drp_port, const struct xilinx_xcvr_cpll_config *conf);
301  uint32_t refclk_hz, const struct xilinx_xcvr_cpll_config *conf,
302  uint32_t out_div);
303 
305 int xilinx_xcvr_calc_qpll_config(struct xilinx_xcvr *xcvr, uint32_t sys_clk_sel,
306  uint32_t refclk_khz, uint32_t lane_rate_khz,
307  struct xilinx_xcvr_qpll_config *conf, uint32_t *out_div);
310  uint32_t drp_port, uint32_t sys_clk_sel, struct xilinx_xcvr_qpll_config *conf);
313  uint32_t sys_clk_sel, uint32_t drp_port,
314  const struct xilinx_xcvr_qpll_config *conf);
317  uint32_t refclk_hz, const struct xilinx_xcvr_qpll_config *conf,
318  uint32_t out_div);
319 
321 int xilinx_xcvr_read_out_div(struct xilinx_xcvr *xcvr, uint32_t drp_port,
322  uint32_t *rx_out_div, uint32_t *tx_out_div);
324 int xilinx_xcvr_write_out_div(struct xilinx_xcvr *xcvr, uint32_t drp_port,
325  int32_t rx_out_div, int32_t tx_out_div);
326 
329  uint32_t drp_port, uint32_t div);
332  uint32_t drp_port, uint32_t div);
333 
335 int xilinx_xcvr_prbsel_enc_get(struct xilinx_xcvr *xcvr,
336  uint32_t prbs, bool reverse_lu);
337 
340  uint32_t drp_port, uint32_t *cnt);
341 
344  uint32_t drp_port, int32_t rx_rate, int32_t tx_rate);
345 
347 int xilinx_xcvr_write_prog_div(struct xilinx_xcvr *xcvr,
348  uint32_t drp_port, int32_t rx_prog_div, int32_t tx_prog_div);
349 
352  uint32_t drp_port, bool en);
353 
354 #endif
QPLL_CFG0_LOWBAND_MASK
#define QPLL_CFG0_LOWBAND_MASK
Definition: xilinx_transceiver.c:79
AXI_FPGA_DEV_CL
@ AXI_FPGA_DEV_CL
Definition: xilinx_transceiver.h:162
xilinx_xcvr::speed_grade
enum axi_fpga_speed_grade speed_grade
Definition: xilinx_transceiver.h:180
xilinx_xcvr_write_async_gearbox_en
int xilinx_xcvr_write_async_gearbox_en(struct xilinx_xcvr *xcvr, uint32_t drp_port, bool en)
Definition: xilinx_transceiver.c:1991
xilinx_xcvr::vco1_max
uint32_t vco1_max
Definition: xilinx_transceiver.h:188
GTY4_QPLL_CLKOUT_RATE
#define GTY4_QPLL_CLKOUT_RATE(xcvr, x)
Definition: xilinx_transceiver.c:120
CPLL_REFCLK_DIV_M_ADDR
#define CPLL_REFCLK_DIV_M_ADDR
Definition: xilinx_transceiver.c:98
AXI_FPGA_SPEED_2L
@ AXI_FPGA_SPEED_2L
Definition: xilinx_transceiver.h:138
xilinx_xcvr_gtx2_cpll_read_config
int xilinx_xcvr_gtx2_cpll_read_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, struct xilinx_xcvr_cpll_config *conf)
Definition: xilinx_transceiver.c:870
QPLL_REFCLK_DIV_M
#define QPLL_REFCLK_DIV_M(x)
Definition: xilinx_transceiver.c:84
AXI_PCORE_VER_MAJOR
#define AXI_PCORE_VER_MAJOR(version)
Definition: axi_sysid.h:65
xilinx_transceiver.h
Driver for the Xilinx High-speed transceiver dynamic reconfiguration.
AXI_FPGA_DEV_FH
@ AXI_FPGA_DEV_FH
Definition: xilinx_transceiver.h:154
xilinx_xcvr_calc_qpll_config
int xilinx_xcvr_calc_qpll_config(struct xilinx_xcvr *xcvr, uint32_t sys_clk_sel, uint32_t refclk_khz, uint32_t lane_rate_khz, struct xilinx_xcvr_qpll_config *conf, uint32_t *out_div)
Definition: xilinx_transceiver.c:674
AXI_FPGA_DEV_FT
@ AXI_FPGA_DEV_FT
Definition: xilinx_transceiver.h:157
clk_ops::round_rate
long(* round_rate)(struct adxcvr *xcvr, unsigned long rate, unsigned long parent_rate)
Definition: xilinx_transceiver.h:243
AXI_FPGA_DEV_HC
@ AXI_FPGA_DEV_HC
Definition: xilinx_transceiver.h:153
GTH4_RX_PRBS_ERR_CNT
#define GTH4_RX_PRBS_ERR_CNT
Definition: xilinx_transceiver.c:114
AXI_FPGA_SPEED_3
@ AXI_FPGA_SPEED_3
Definition: xilinx_transceiver.h:140
xilinx_xcvr_drp_ops::write
int(* write)(struct adxcvr *xcvr, unsigned int drp_port, unsigned int reg, unsigned int val)
Definition: xilinx_transceiver.h:192
xilinx_xcvr_cpll_config::fb_div_N1
uint32_t fb_div_N1
Definition: xilinx_transceiver.h:257
xilinx_xcvr::family
enum axi_fpga_family family
Definition: xilinx_transceiver.h:179
TX_CLK25_DIV
#define TX_CLK25_DIV
Definition: xilinx_transceiver.c:107
adxcvr
ADI JESD204B/C AXI_ADXCVR Highspeed Transceiver Device structure.
Definition: altera_adxcvr.h:95
xilinx_xcvr_cpll_config::refclk_div
uint32_t refclk_div
Definition: xilinx_transceiver.h:256
QPLL_CFG0_ADDR
#define QPLL_CFG0_ADDR
Definition: xilinx_transceiver.c:78
PM_1250
@ PM_1250
Definition: xilinx_transceiver.h:100
AXI_FPGA_FAMILY_KINTEX
@ AXI_FPGA_FAMILY_KINTEX
Definition: clk_axi_clkgen.c:140
pr_err
#define pr_err(fmt, args...)
Definition: no_os_print_log.h:94
AXI_FPGA_DEV_BA
@ AXI_FPGA_DEV_BA
Definition: xilinx_transceiver.h:164
RXCDR_CFG1_ADDR
#define RXCDR_CFG1_ADDR
Definition: xilinx_transceiver.c:63
GTH34_QPLL_REFCLK_DIV
#define GTH34_QPLL_REFCLK_DIV(xcvr, x)
Definition: xilinx_transceiver.c:118
XILINX_XCVR_LEGACY_TYPE_S7_GTX2
@ XILINX_XCVR_LEGACY_TYPE_S7_GTX2
Definition: xilinx_transceiver.h:87
xilinx_xcvr_read_out_div
int xilinx_xcvr_read_out_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t *rx_out_div, uint32_t *tx_out_div)
Definition: xilinx_transceiver.c:1566
NO_OS_DIV_ROUND_CLOSEST_ULL
#define NO_OS_DIV_ROUND_CLOSEST_ULL(x, y)
Definition: no_os_util.h:60
xilinx_xcvr::type
enum xilinx_xcvr_type type
Definition: xilinx_transceiver.h:173
xilinx_xcvr_configure_cdr
int xilinx_xcvr_configure_cdr(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t lane_rate, uint32_t out_div, bool lpm_enable)
Definition: xilinx_transceiver.c:363
axi_fgpa_technology
axi_fgpa_technology
Enum for technology/generation of the FPGA device.
Definition: clk_axi_clkgen.c:130
xilinx_xcvr::ad_xcvr
struct adxcvr * ad_xcvr
Definition: xilinx_transceiver.h:176
CPLL_REFCLK_DIV_M_MASK
#define CPLL_REFCLK_DIV_M_MASK
Definition: xilinx_transceiver.c:99
AXI_FPGA_DEV_CP
@ AXI_FPGA_DEV_CP
Definition: xilinx_transceiver.h:156
AXI_FPGA_SPEED_1
@ AXI_FPGA_SPEED_1
Definition: xilinx_transceiver.h:132
xilinx_xcvr_qpll_config::qty4_full_rate
uint32_t qty4_full_rate
Definition: xilinx_transceiver.h:269
XILINX_XCVR_TYPE_US_GTY4
@ XILINX_XCVR_TYPE_US_GTY4
Definition: xilinx_transceiver.h:79
no_os_print_log.h
Print messages helpers.
xilinx_xcvr_calc_cpll_config
int xilinx_xcvr_calc_cpll_config(struct xilinx_xcvr *xcvr, uint32_t refclk_khz, uint32_t lane_rate_khz, struct xilinx_xcvr_cpll_config *conf, uint32_t *out_div)
Definition: xilinx_transceiver.c:545
xilinx_xcvr_qpll_read_config
int xilinx_xcvr_qpll_read_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t sys_clk_sel, struct xilinx_xcvr_qpll_config *conf)
Definition: xilinx_transceiver.c:1266
PM_200
@ PM_200
Definition: xilinx_transceiver.h:98
QPLL_FBDIV_RATIO_ADDR
#define QPLL_FBDIV_RATIO_ADDR
Definition: xilinx_transceiver.c:89
OUT_DIV_TX_OFFSET
#define OUT_DIV_TX_OFFSET
Definition: xilinx_transceiver.c:57
xilinx_xcvr::version
uint32_t version
Definition: xilinx_transceiver.h:177
xilinx_xcvr::vco1_min
uint32_t vco1_min
Definition: xilinx_transceiver.h:187
RXCDR_CFG4_ADDR
#define RXCDR_CFG4_ADDR
Definition: xilinx_transceiver.c:72
xilinx_xcvr_configure_cdr
int xilinx_xcvr_configure_cdr(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t lane_rate, uint32_t out_div, bool lpm_enable)
Definition: xilinx_transceiver.c:363
xilinx_xcvr_type
xilinx_xcvr_type
Enum for GT type.
Definition: xilinx_transceiver.h:75
RXCDR_CFG4_MASK
#define RXCDR_CFG4_MASK
Definition: xilinx_transceiver.c:73
NO_OS_ARRAY_SIZE
#define NO_OS_ARRAY_SIZE(x)
Definition: no_os_util.h:53
xilinx_xcvr_write_prog_div
int xilinx_xcvr_write_prog_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, int32_t rx_prog_div, int32_t tx_prog_div)
Definition: xilinx_transceiver.c:1869
axi_fpga_dev_pack
axi_fpga_dev_pack
Enum for device package.
Definition: xilinx_transceiver.h:147
RX_CLK25_DIV_MASK
#define RX_CLK25_DIV_MASK
Definition: xilinx_transceiver.c:105
QPLL_CFG1_ADDR
#define QPLL_CFG1_ADDR
Definition: xilinx_transceiver.c:81
AXI_FPGA_SPEED_1LV
@ AXI_FPGA_SPEED_1LV
Definition: xilinx_transceiver.h:136
xilinx_xcvr_qpll_calc_lane_rate
int xilinx_xcvr_qpll_calc_lane_rate(struct xilinx_xcvr *xcvr, uint32_t refclk_hz, const struct xilinx_xcvr_qpll_config *conf, uint32_t out_div)
Definition: xilinx_transceiver.c:1476
xilinx_xcvr_drp_ops
Definition: xilinx_transceiver.h:191
clk_ops::enable
int(* enable)(struct adxcvr *xcvr)
Definition: xilinx_transceiver.h:239
AXI_FPGA_DEV_UNKNOWN
@ AXI_FPGA_DEV_UNKNOWN
Definition: xilinx_transceiver.h:148
xilinx_xcvr_legacy_type
xilinx_xcvr_legacy_type
Enum for legacy GT type.
Definition: xilinx_transceiver.h:86
QPLL_FBDIV_RATIO_MASK
#define QPLL_FBDIV_RATIO_MASK
Definition: xilinx_transceiver.c:90
xilinx_xcvr::refclk_ppm
enum xilinx_xcvr_refclk_ppm refclk_ppm
Definition: xilinx_transceiver.h:174
RX_CLK25_DIV_OFFSET
#define RX_CLK25_DIV_OFFSET
Definition: xilinx_transceiver.c:104
xilinx_xcvr_prbsel_enc_get
int xilinx_xcvr_prbsel_enc_get(struct xilinx_xcvr *xcvr, uint32_t prbs, bool reverse_lu)
Definition: xilinx_transceiver.c:2100
xilinx_xcvr::tech
enum axi_fgpa_technology tech
Definition: xilinx_transceiver.h:178
OUT_DIV_RX_OFFSET
#define OUT_DIV_RX_OFFSET
Definition: xilinx_transceiver.c:58
axi_adxcvr.h
Driver for the ADI AXI-ADXCVR Module.
xilinx_xcvr_qpll_calc_lane_rate
int xilinx_xcvr_qpll_calc_lane_rate(struct xilinx_xcvr *xcvr, uint32_t refclk_hz, const struct xilinx_xcvr_qpll_config *conf, uint32_t out_div)
Definition: xilinx_transceiver.c:1476
PM_700
@ PM_700
Definition: xilinx_transceiver.h:99
AXI_FPGA_DEV_CS
@ AXI_FPGA_DEV_CS
Definition: xilinx_transceiver.h:155
xilinx_xcvr_cpll_write_config
int xilinx_xcvr_cpll_write_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, const struct xilinx_xcvr_cpll_config *conf)
Definition: xilinx_transceiver.c:1076
no_os_error.h
Error codes definition.
pr_debug
#define pr_debug(fmt, args...)
Definition: no_os_print_log.h:135
AXI_FPGA_SPEED_2LV
@ AXI_FPGA_SPEED_2LV
Definition: xilinx_transceiver.h:139
QPLL_REFCLK_DIV_M_OFFSET
#define QPLL_REFCLK_DIV_M_OFFSET
Definition: xilinx_transceiver.c:83
RXCDR_CFG0_ADDR
#define RXCDR_CFG0_ADDR
Definition: xilinx_transceiver.c:60
xilinx_xcvr::vco0_max
uint32_t vco0_max
Definition: xilinx_transceiver.h:186
xilinx_xcvr_read_out_div
int xilinx_xcvr_read_out_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t *rx_out_div, uint32_t *tx_out_div)
Definition: xilinx_transceiver.c:1566
XILINX_XCVR_LEGACY_TYPE_US_GTH3
@ XILINX_XCVR_LEGACY_TYPE_US_GTH3
Definition: xilinx_transceiver.h:88
GTH3_RX_PRBS_ERR_CNT
#define GTH3_RX_PRBS_ERR_CNT
Definition: xilinx_transceiver.c:113
xilinx_xcvr_write_rx_clk25_div
int xilinx_xcvr_write_rx_clk25_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t div)
Definition: xilinx_transceiver.c:2019
N
#define N(x)
Definition: ad9144.h:1275
xilinx_xcvr_drp_update
int xilinx_xcvr_drp_update(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t reg, uint32_t mask, uint32_t val)
Definition: xilinx_transceiver.c:204
xilinx_xcvr_prbs_err_cnt_get
int xilinx_xcvr_prbs_err_cnt_get(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t *cnt)
Definition: xilinx_transceiver.c:2144
xilinx_xcvr_calc_qpll_config
int xilinx_xcvr_calc_qpll_config(struct xilinx_xcvr *xcvr, uint32_t sys_clk_sel, uint32_t refclk_khz, uint32_t lane_rate_khz, struct xilinx_xcvr_qpll_config *conf, uint32_t *out_div)
Definition: xilinx_transceiver.c:674
xilinx_xcvr_calc_cpll_config
int xilinx_xcvr_calc_cpll_config(struct xilinx_xcvr *xcvr, uint32_t refclk_khz, uint32_t lane_rate_khz, struct xilinx_xcvr_cpll_config *conf, uint32_t *out_div)
Definition: xilinx_transceiver.c:545
TX_CLK25_DIV_MASK
#define TX_CLK25_DIV_MASK
Definition: xilinx_transceiver.c:108
GTX_RX_PRBS_ERR_CNT
#define GTX_RX_PRBS_ERR_CNT
Definition: xilinx_transceiver.c:112
AXI_FPGA_SPEED_1H
@ AXI_FPGA_SPEED_1H
Definition: xilinx_transceiver.h:134
xilinx_xcvr_qpll_write_config
int xilinx_xcvr_qpll_write_config(struct xilinx_xcvr *xcvr, uint32_t sys_clk_sel, uint32_t drp_port, const struct xilinx_xcvr_qpll_config *conf)
Definition: xilinx_transceiver.c:1448
AXI_FPGA_FAMILY_ARTIX
@ AXI_FPGA_FAMILY_ARTIX
Definition: xilinx_transceiver.h:120
xilinx_xcvr_prbs_err_cnt_get
int xilinx_xcvr_prbs_err_cnt_get(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t *cnt)
Definition: xilinx_transceiver.c:2144
xilinx_xcvr_write_prog_div
int xilinx_xcvr_write_prog_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, int32_t rx_prog_div, int32_t tx_prog_div)
Definition: xilinx_transceiver.c:1869
AXI_FPGA_DEV_SF
@ AXI_FPGA_DEV_SF
Definition: xilinx_transceiver.h:163
xilinx_xcvr::dev_package
enum axi_fpga_dev_pack dev_package
Definition: xilinx_transceiver.h:181
AXI_FPGA_FAMILY_KINTEX
@ AXI_FPGA_FAMILY_KINTEX
Definition: xilinx_transceiver.h:121
xilinx_xcvr_qpll_write_config
int xilinx_xcvr_qpll_write_config(struct xilinx_xcvr *xcvr, uint32_t sys_clk_sel, uint32_t drp_port, const struct xilinx_xcvr_qpll_config *conf)
Definition: xilinx_transceiver.c:1448
AXI_FPGA_TECH_ULTRASCALE_PLUS
@ AXI_FPGA_TECH_ULTRASCALE_PLUS
Definition: xilinx_transceiver.h:111
RXCDR_CFG3_ADDR
#define RXCDR_CFG3_ADDR
Definition: xilinx_transceiver.c:69
AXI_FPGA_DEV_FF
@ AXI_FPGA_DEV_FF
Definition: xilinx_transceiver.h:151
AXI_FPGA_DEV_SB
@ AXI_FPGA_DEV_SB
Definition: xilinx_transceiver.h:159
AXI_FPGA_DEV_FB
@ AXI_FPGA_DEV_FB
Definition: xilinx_transceiver.h:152
CPLL_FBDIV_N2_MASK
#define CPLL_FBDIV_N2_MASK
Definition: xilinx_transceiver.c:101
xilinx_xcvr_write_prog_div_rate
int xilinx_xcvr_write_prog_div_rate(struct xilinx_xcvr *xcvr, uint32_t drp_port, int32_t rx_rate, int32_t tx_rate)
Definition: xilinx_transceiver.c:1948
AXI_FPGA_DEV_RF
@ AXI_FPGA_DEV_RF
Definition: xilinx_transceiver.h:149
xilinx_xcvr::encoding
uint32_t encoding
Definition: xilinx_transceiver.h:175
xilinx_xcvr_drp_ops::read
int(* read)(struct adxcvr *xcvr, unsigned int drp_port, unsigned int reg, unsigned int *val)
Definition: xilinx_transceiver.h:194
xilinx_xcvr_refclk_ppm
xilinx_xcvr_refclk_ppm
Enum for reference clock ppm.
Definition: xilinx_transceiver.h:97
XILINX_XCVR_TYPE_US_GTH3
@ XILINX_XCVR_TYPE_US_GTH3
Definition: xilinx_transceiver.h:77
xilinx_xcvr_qpll_read_config
int xilinx_xcvr_qpll_read_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t sys_clk_sel, struct xilinx_xcvr_qpll_config *conf)
Definition: xilinx_transceiver.c:1266
xilinx_xcvr_cpll_config
Structure holding CPLL configuration.
Definition: xilinx_transceiver.h:255
GTH34_SYSCLK_QPLL1
#define GTH34_SYSCLK_QPLL1
Definition: xilinx_transceiver.c:110
xilinx_xcvr_write_rx_clk25_div
int xilinx_xcvr_write_rx_clk25_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t div)
Definition: xilinx_transceiver.c:2019
AXI_FPGA_DEV_FG
@ AXI_FPGA_DEV_FG
Definition: xilinx_transceiver.h:158
AXI_FPGA_TECH_SERIES7
@ AXI_FPGA_TECH_SERIES7
Definition: xilinx_transceiver.h:109
xilinx_xcvr_write_out_div
int xilinx_xcvr_write_out_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, int32_t rx_out_div, int32_t tx_out_div)
Definition: xilinx_transceiver.c:1679
NO_OS_BIT
#define NO_OS_BIT(x)
Definition: no_os_util.h:51
xilinx_xcvr_write_tx_clk25_div
int xilinx_xcvr_write_tx_clk25_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t div)
Definition: xilinx_transceiver.c:2061
AXI_FPGA_DEV_RB
@ AXI_FPGA_DEV_RB
Definition: xilinx_transceiver.h:160
AXI_FPGA_DEV_FL
@ AXI_FPGA_DEV_FL
Definition: xilinx_transceiver.h:150
xilinx_xcvr::voltage
uint32_t voltage
Definition: xilinx_transceiver.h:182
AXI_FPGA_SPEED_2
@ AXI_FPGA_SPEED_2
Definition: xilinx_transceiver.h:137
xilinx_xcvr_cpll_config::fb_div_N2
uint32_t fb_div_N2
Definition: xilinx_transceiver.h:258
xilinx_xcvr_cpll_calc_lane_rate
int xilinx_xcvr_cpll_calc_lane_rate(struct xilinx_xcvr *xcvr, uint32_t refclk_hz, const struct xilinx_xcvr_cpll_config *conf, uint32_t out_div)
Definition: xilinx_transceiver.c:1102
xilinx_xcvr_write_out_div
int xilinx_xcvr_write_out_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, int32_t rx_out_div, int32_t tx_out_div)
Definition: xilinx_transceiver.c:1679
xilinx_xcvr_write_prog_div_rate
int xilinx_xcvr_write_prog_div_rate(struct xilinx_xcvr *xcvr, uint32_t drp_port, int32_t rx_rate, int32_t tx_rate)
Definition: xilinx_transceiver.c:1948
adxcvr_drp_read
int adxcvr_drp_read(struct adxcvr *xcvr, unsigned int drp_port, unsigned int reg, unsigned int *val)
AXI ADXCVR DPR Port Read.
Definition: axi_adxcvr.c:170
AXI_FPGA_FAMILY_ZYNQ
@ AXI_FPGA_FAMILY_ZYNQ
Definition: xilinx_transceiver.h:123
xilinx_xcvr_cpll_calc_lane_rate
int xilinx_xcvr_cpll_calc_lane_rate(struct xilinx_xcvr *xcvr, uint32_t refclk_hz, const struct xilinx_xcvr_cpll_config *conf, uint32_t out_div)
Definition: xilinx_transceiver.c:1102
xilinx_xcvr_prbsel_enc_get
int xilinx_xcvr_prbsel_enc_get(struct xilinx_xcvr *xcvr, uint32_t prbs, bool reverse_lu)
Definition: xilinx_transceiver.c:2100
xilinx_xcvr
xilinx_xcvr parameters structure.
Definition: xilinx_transceiver.h:172
clk_ops::disable
int(* disable)(struct adxcvr *xcvr)
Definition: xilinx_transceiver.h:240
QPLL_REFCLK_DIV_M_MASK
#define QPLL_REFCLK_DIV_M_MASK
Definition: xilinx_transceiver.c:82
xilinx_xcvr_configure_lpm_dfe_mode
int xilinx_xcvr_configure_lpm_dfe_mode(struct xilinx_xcvr *xcvr, uint32_t drp_port, bool lpm)
Definition: xilinx_transceiver.c:390
xilinx_xcvr::vco0_min
uint32_t vco0_min
Definition: xilinx_transceiver.h:185
QPLL_FBDIV_N_ADDR
#define QPLL_FBDIV_N_ADDR
Definition: xilinx_transceiver.c:86
CPLL_FB_DIV_45_N1_MASK
#define CPLL_FB_DIV_45_N1_MASK
Definition: xilinx_transceiver.c:100
xilinx_xcvr_qpll_config
Structure holding QPLL configuration.
Definition: xilinx_transceiver.h:265
axi_fpga_speed_grade
axi_fpga_speed_grade
Enum for FPGA's speed-grade.
Definition: clk_axi_clkgen.c:145
xilinx_xcvr_qpll_config::fb_div
uint32_t fb_div
Definition: xilinx_transceiver.h:267
clk_ops::recalc_rate
unsigned long(* recalc_rate)(struct adxcvr *xcvr, unsigned long parent_rate)
Definition: xilinx_transceiver.h:241
AXI_FPGA_DEV_RS
@ AXI_FPGA_DEV_RS
Definition: xilinx_transceiver.h:161
clk_ops
Definition: xilinx_transceiver.h:238
xilinx_xcvr_qpll_config::refclk_div
uint32_t refclk_div
Definition: xilinx_transceiver.h:266
RX_CLK25_DIV
#define RX_CLK25_DIV
Definition: xilinx_transceiver.c:103
QPLL_FBDIV_N_MASK
#define QPLL_FBDIV_N_MASK
Definition: xilinx_transceiver.c:87
AXI_FPGA_SPEED_1HV
@ AXI_FPGA_SPEED_1HV
Definition: xilinx_transceiver.h:135
no_os_util.h
Header file of utility functions.
XILINX_XCVR_LEGACY_TYPE_US_GTY4
@ XILINX_XCVR_LEGACY_TYPE_US_GTY4
Definition: xilinx_transceiver.h:90
clk_ops::set_rate
int(* set_rate)(struct adxcvr *xcvr, unsigned long rate, unsigned long parent_rate)
Definition: xilinx_transceiver.h:246
RXCDR_CFG2_ADDR
#define RXCDR_CFG2_ADDR
Definition: xilinx_transceiver.c:66
XILINX_XCVR_TYPE_US_GTH4
@ XILINX_XCVR_TYPE_US_GTH4
Definition: xilinx_transceiver.h:78
XILINX_XCVR_LEGACY_TYPE_US_GTH4
@ XILINX_XCVR_LEGACY_TYPE_US_GTH4
Definition: xilinx_transceiver.h:89
AXI_FPGA_TECH_ULTRASCALE
@ AXI_FPGA_TECH_ULTRASCALE
Definition: xilinx_transceiver.h:110
xilinx_xcvr_write_tx_clk25_div
int xilinx_xcvr_write_tx_clk25_div(struct xilinx_xcvr *xcvr, uint32_t drp_port, uint32_t div)
Definition: xilinx_transceiver.c:2061
axi_fpga_family
axi_fpga_family
Enum for family variant of the FPGA device.
Definition: clk_axi_clkgen.c:137
adxcvr_drp_write
int adxcvr_drp_write(struct adxcvr *xcvr, unsigned int drp_port, unsigned int reg, unsigned int val)
AXI ADXCVR DPR Port Write.
Definition: axi_adxcvr.c:205
ENC_8B10B
#define ENC_8B10B
Definition: xilinx_transceiver.h:273
xilinx_xcvr_cpll_read_config
int xilinx_xcvr_cpll_read_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, struct xilinx_xcvr_cpll_config *conf)
Definition: xilinx_transceiver.c:921
xilinx_xcvr_configure_lpm_dfe_mode
int xilinx_xcvr_configure_lpm_dfe_mode(struct xilinx_xcvr *xcvr, uint32_t drp_port, bool lpm)
Definition: xilinx_transceiver.c:390
AXI_FPGA_SPEED_UNKNOWN
@ AXI_FPGA_SPEED_UNKNOWN
Definition: xilinx_transceiver.h:131
AXI_FPGA_SPEED_1L
@ AXI_FPGA_SPEED_1L
Definition: xilinx_transceiver.h:133
xilinx_xcvr_cpll_write_config
int xilinx_xcvr_cpll_write_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, const struct xilinx_xcvr_cpll_config *conf)
Definition: xilinx_transceiver.c:1076
xilinx_xcvr_write_async_gearbox_en
int xilinx_xcvr_write_async_gearbox_en(struct xilinx_xcvr *xcvr, uint32_t drp_port, bool en)
Definition: xilinx_transceiver.c:1991
GTH34_QPLL_FBDIV
#define GTH34_QPLL_FBDIV(xcvr, x)
Definition: xilinx_transceiver.c:116
xilinx_xcvr_qpll_config::band
uint32_t band
Definition: xilinx_transceiver.h:268
OUT_DIV_ADDR
#define OUT_DIV_ADDR
Definition: xilinx_transceiver.c:56
xilinx_xcvr_cpll_read_config
int xilinx_xcvr_cpll_read_config(struct xilinx_xcvr *xcvr, uint32_t drp_port, struct xilinx_xcvr_cpll_config *conf)
Definition: xilinx_transceiver.c:921
AXI_FPGA_FAMILY_UNKNOWN
@ AXI_FPGA_FAMILY_UNKNOWN
Definition: xilinx_transceiver.h:119
AXI_FPGA_TECH_UNKNOWN
@ AXI_FPGA_TECH_UNKNOWN
Definition: xilinx_transceiver.h:108
AXI_FPGA_DEV_FA
@ AXI_FPGA_DEV_FA
Definition: xilinx_transceiver.h:165
AXI_FPGA_FAMILY_VIRTEX
@ AXI_FPGA_FAMILY_VIRTEX
Definition: xilinx_transceiver.h:122
XILINX_XCVR_TYPE_S7_GTX2
@ XILINX_XCVR_TYPE_S7_GTX2
Definition: xilinx_transceiver.h:76