Driver for the ADI AXI-ADXCVR Module.
More...
#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
#include "no_os_axi_io.h"
#include "no_os_util.h"
#include "no_os_alloc.h"
#include "no_os_error.h"
#include "no_os_delay.h"
#include "xilinx_transceiver.h"
#include "axi_adxcvr.h"
#include "no_os_print_log.h"
#include "no_os_clk.h"
|
| int32_t | adxcvr_write (struct adxcvr *xcvr, uint32_t reg_addr, uint32_t reg_val) |
| | AXI ADXCVR Write.
|
| |
| int32_t | adxcvr_read (struct adxcvr *xcvr, uint32_t reg_addr, uint32_t *reg_val) |
| | AXI ADXCVR Read.
|
| |
| int32_t | adxcvr_drp_wait_idle (struct adxcvr *xcvr, uint32_t drp_addr) |
| | Read AXI ADXCVR DRP status.
|
| |
| int | adxcvr_drp_read (struct adxcvr *xcvr, unsigned int drp_port, unsigned int reg, unsigned int *val) |
| | AXI ADXCVR DPR Port Read.
|
| |
| int | adxcvr_drp_write (struct adxcvr *xcvr, unsigned int drp_port, unsigned int reg, unsigned int val) |
| | AXI ADXCVR DPR Port Write.
|
| |
| int | adxcvr_clk_set_rate (struct adxcvr *xcvr, unsigned long rate, unsigned long parent_rate) |
| | AXI ADXCVR Clock Set Rate.
|
| |
| int32_t | adxcvr_status_error (struct adxcvr *xcvr) |
| | AXI ADXCVR Status Read.
|
| |
| int | adxcvr_clk_enable (struct adxcvr *xcvr) |
| | AXI ADXCVR Clock Enable.
|
| |
| int | adxcvr_clk_disable (struct adxcvr *xcvr) |
| | AXI ADXCVR Clock Disable.
|
| |
| int32_t | adxcvr_init (struct adxcvr **ad_xcvr, const struct adxcvr_init *init) |
| | AXI ADXCVR Device Initialization.
|
| |
| int32_t | adxcvr_remove (struct adxcvr *xcvr) |
| | Free resoulces allocated for AXI_ADXCVR.
|
| |
| int32_t | adxcvr_no_os_clk_enable (struct no_os_clk_desc *desc) |
| |
| int32_t | adxcvr_no_os_clk_disable (struct no_os_clk_desc *desc) |
| |
| int32_t | adxcvr_no_os_clk_recalc_rate (struct no_os_clk_desc *desc, uint64_t *rate) |
| |
| int32_t | adxcvr_no_os_clk_round_rate (struct no_os_clk_desc *desc, uint64_t rate, uint64_t *rounded_rate) |
| |
| int32_t | adxcvr_no_os_clk_set_rate (struct no_os_clk_desc *desc, uint64_t rate) |
| |
Driver for the ADI AXI-ADXCVR Module.
- Author
- DBogdan (drago.nosp@m.s.bo.nosp@m.gdan@.nosp@m.anal.nosp@m.og.co.nosp@m.m)
Copyright 2018(c) Analog Devices, Inc.
SPDX-License-Identifier: BSD-3-Clause
◆ ADI_AXI_PCORE_VER
| #define ADI_AXI_PCORE_VER |
( |
| major, |
|
|
| minor, |
|
|
| patch ) |
Value: (((major) << 16) | ((minor) << 8) | (patch))
◆ ADXCVR_204B
◆ ADXCVR_204C
◆ ADXCVR_BROADCAST
| #define ADXCVR_BROADCAST 0xff |
◆ ADXCVR_BUFSTATUS_OVERFLOW
| #define ADXCVR_BUFSTATUS_OVERFLOW NO_OS_BIT(6) |
◆ ADXCVR_BUFSTATUS_RST
◆ ADXCVR_BUFSTATUS_UNDERFLOW
| #define ADXCVR_BUFSTATUS_UNDERFLOW NO_OS_BIT(5) |
◆ ADXCVR_DRP_CTRL_ADDR
| #define ADXCVR_DRP_CTRL_ADDR |
( |
| x | ) |
|
◆ ADXCVR_DRP_CTRL_WDATA
| #define ADXCVR_DRP_CTRL_WDATA |
( |
| x | ) |
|
◆ ADXCVR_DRP_CTRL_WR
| #define ADXCVR_DRP_CTRL_WR (1 << 28) |
◆ ADXCVR_DRP_PORT_ADDR_CHANNEL
| #define ADXCVR_DRP_PORT_ADDR_CHANNEL 0x20 |
◆ ADXCVR_DRP_PORT_ADDR_COMMON
| #define ADXCVR_DRP_PORT_ADDR_COMMON 0x00 |
◆ ADXCVR_DRP_PORT_CHANNEL
| #define ADXCVR_DRP_PORT_CHANNEL |
( |
| x | ) |
|
◆ ADXCVR_DRP_PORT_COMMON
| #define ADXCVR_DRP_PORT_COMMON |
( |
| x | ) |
|
◆ ADXCVR_DRP_STATUS_BUSY
| #define ADXCVR_DRP_STATUS_BUSY (1 << 16) |
◆ ADXCVR_DRP_STATUS_RDATA
| #define ADXCVR_DRP_STATUS_RDATA |
( |
| x | ) |
|
◆ ADXCVR_LINK_MODE
| #define ADXCVR_LINK_MODE |
( |
| x | ) |
|
Value:
#define NO_OS_GENMASK(h, l)
Definition no_os_util.h:60
◆ ADXCVR_LPM_DFE_N
| #define ADXCVR_LPM_DFE_N (1 << 12) |
◆ ADXCVR_OUTCLK_SEL
| #define ADXCVR_OUTCLK_SEL |
( |
| x | ) |
|
◆ ADXCVR_RATE
◆ ADXCVR_REG_CONTROL
| #define ADXCVR_REG_CONTROL 0x0020 |
◆ ADXCVR_REG_DRP_CTRL
| #define ADXCVR_REG_DRP_CTRL |
( |
| x | ) |
|
◆ ADXCVR_REG_DRP_SEL
| #define ADXCVR_REG_DRP_SEL |
( |
| x | ) |
|
◆ ADXCVR_REG_DRP_STATUS
| #define ADXCVR_REG_DRP_STATUS |
( |
| x | ) |
|
◆ ADXCVR_REG_RESETN
| #define ADXCVR_REG_RESETN 0x0010 |
◆ ADXCVR_REG_STATUS
| #define ADXCVR_REG_STATUS 0x0014 |
◆ ADXCVR_REG_SYNTH
| #define ADXCVR_REG_SYNTH 0x24 |
◆ ADXCVR_RESETN
| #define ADXCVR_RESETN (1 << 0) |
◆ ADXCVR_STATUS
| #define ADXCVR_STATUS (1 << 0) |
◆ ADXCVR_SYSCLK_SEL
| #define ADXCVR_SYSCLK_SEL |
( |
| x | ) |
|
◆ adxcvr_clk_disable()
| int adxcvr_clk_disable |
( |
struct adxcvr * | xcvr | ) |
|
AXI ADXCVR Clock Disable.
- Parameters
-
| xcvr | - The device structure. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_clk_enable()
| int adxcvr_clk_enable |
( |
struct adxcvr * | xcvr | ) |
|
AXI ADXCVR Clock Enable.
- Parameters
-
| xcvr | - The device structure. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_clk_set_rate()
| int adxcvr_clk_set_rate |
( |
struct adxcvr * | xcvr, |
|
|
unsigned long | rate, |
|
|
unsigned long | parent_rate ) |
AXI ADXCVR Clock Set Rate.
- Parameters
-
| xcvr | - The device structure. |
| rate | - The output rate (kHz). |
| parent_rate | - The parent rate (kHz). |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ 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.
- Parameters
-
| xcvr | - The device structure. |
| drp_port | - The DRP Port. |
| reg | - DRP Register address. |
| val | - Data read. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_drp_wait_idle()
| int32_t adxcvr_drp_wait_idle |
( |
struct adxcvr * | xcvr, |
|
|
uint32_t | drp_addr ) |
Read AXI ADXCVR DRP status.
- Parameters
-
| xcvr | - Device Structure. |
| drp_addr | - DRP Port address. |
- Returns
- Returns status in case of success or negative error code otherwise.
◆ 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.
- Parameters
-
| xcvr | - The device structure. |
| drp_port | - The DRP Port. |
| reg | - DRP Register address. |
| val | - Data to be written. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_init()
| int32_t adxcvr_init |
( |
struct adxcvr ** | ad_xcvr, |
|
|
const struct adxcvr_init * | init ) |
AXI ADXCVR Device Initialization.
adxcvr_init
- Parameters
-
| ad_xcvr | - The device structure. |
| init | - The structure containing the device initial parameters. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_no_os_clk_disable()
◆ adxcvr_no_os_clk_enable()
◆ adxcvr_no_os_clk_recalc_rate()
| int32_t adxcvr_no_os_clk_recalc_rate |
( |
struct no_os_clk_desc * | desc, |
|
|
uint64_t * | rate ) |
◆ adxcvr_no_os_clk_round_rate()
| int32_t adxcvr_no_os_clk_round_rate |
( |
struct no_os_clk_desc * | desc, |
|
|
uint64_t | rate, |
|
|
uint64_t * | rounded_rate ) |
◆ adxcvr_no_os_clk_set_rate()
| int32_t adxcvr_no_os_clk_set_rate |
( |
struct no_os_clk_desc * | desc, |
|
|
uint64_t | rate ) |
◆ adxcvr_read()
| int32_t adxcvr_read |
( |
struct adxcvr * | xcvr, |
|
|
uint32_t | reg_addr, |
|
|
uint32_t * | reg_val ) |
AXI ADXCVR Read.
adxcvr_read
- Parameters
-
| xcvr | - Device Structure. |
| reg_addr | - The register address. |
| reg_val | - Data read from the device. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_remove()
| int32_t adxcvr_remove |
( |
struct adxcvr * | xcvr | ) |
|
Free resoulces allocated for AXI_ADXCVR.
adxcvr_remove
- Parameters
-
| xcvr | - The device structure. |
- Returns
- Returns 0 in case of success or negative error code.
◆ adxcvr_status_error()
| int32_t adxcvr_status_error |
( |
struct adxcvr * | xcvr | ) |
|
AXI ADXCVR Status Read.
- Parameters
-
| xcvr | - The device structure. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_write()
| int32_t adxcvr_write |
( |
struct adxcvr * | xcvr, |
|
|
uint32_t | reg_addr, |
|
|
uint32_t | reg_val ) |
AXI ADXCVR Write.
adxcvr_write
- Parameters
-
| xcvr | - Device Structure. |
| reg_addr | - The register address. |
| reg_val | - Data value to write. |
- Returns
- Returns 0 in case of success or negative error code otherwise.
◆ adxcvr_clk_ops
Initial value:= {
}
int32_t adxcvr_no_os_clk_set_rate(struct no_os_clk_desc *desc, uint64_t rate)
Definition axi_adxcvr.c:714
int32_t adxcvr_no_os_clk_enable(struct no_os_clk_desc *desc)
Definition axi_adxcvr.c:667
int32_t adxcvr_no_os_clk_round_rate(struct no_os_clk_desc *desc, uint64_t rate, uint64_t *rounded_rate)
Definition axi_adxcvr.c:700
int32_t adxcvr_no_os_clk_disable(struct no_os_clk_desc *desc)
Definition axi_adxcvr.c:677
int32_t adxcvr_no_os_clk_recalc_rate(struct no_os_clk_desc *desc, uint64_t *rate)
Definition axi_adxcvr.c:687
adxcvr clock ops