Driver for the Analog Devices AXI-JESD204-RX peripheral. More...
#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
#include "no_os_clk.h"
#include "no_os_error.h"
#include "no_os_delay.h"
#include "no_os_util.h"
#include "no_os_alloc.h"
#include "axi_jesd204_rx.h"
#include "no_os_axi_io.h"
#include "no_os_print_log.h"
Classes | |
struct | axi_jesd204_rx_jesd204_priv |
Enumerations | |
enum | { JESD204_EMB_STATE_INIT = 1 , JESD204_EMB_STATE_HUNT , JESD204_EMB_STATE_LOCK = 4 } |
Functions | |
int32_t | axi_jesd204_rx_write (struct axi_jesd204_rx *jesd, uint32_t reg_addr, uint32_t reg_val) |
JESD204 RX AXI Data Write. | |
int32_t | axi_jesd204_rx_read (struct axi_jesd204_rx *jesd, uint32_t reg_addr, uint32_t *reg_val) |
JESD204 RX AXI Data Read. | |
int32_t | axi_jesd204_rx_lane_clk_enable (struct axi_jesd204_rx *jesd) |
JESD204 RX Lane Clock Enable. | |
int32_t | axi_jesd204_rx_lane_clk_disable (struct axi_jesd204_rx *jesd) |
JESD204 RX Lane Clock Disable. | |
uint32_t | axi_jesd204_rx_status_read (struct axi_jesd204_rx *jesd) |
Read status of the JESD204 Receive Peripherial. | |
int32_t | axi_jesd204_rx_get_lane_errors (struct axi_jesd204_rx *jesd, uint32_t lane, uint32_t *errors) |
Read the JESD204 RX Lane Errors. | |
int32_t | axi_jesd204_rx_laneinfo_read (struct axi_jesd204_rx *jesd, uint32_t lane) |
Read JESD204 RX Lane Info. | |
bool | axi_jesd204_rx_check_lane_status (struct axi_jesd204_rx *jesd, uint32_t lane) |
Check JESD204 RX Lane Status. | |
int32_t | axi_jesd204_rx_watchdog (struct axi_jesd204_rx *jesd) |
JESD204 RX Watchdog. | |
int32_t | axi_jesd204_rx_apply_config_legacy (struct axi_jesd204_rx *jesd, struct jesd204_rx_config *config) |
Apply the JESD204 RX configuration. | |
int32_t | axi_jesd204_rx_init_legacy (struct axi_jesd204_rx **jesd204, const struct jesd204_rx_init *init) |
Device initialization. | |
int32_t | axi_jesd204_rx_init (struct axi_jesd204_rx **jesd204, const struct jesd204_rx_init *init) |
Device initialization, JESD FSM ON. | |
int32_t | axi_jesd204_rx_remove (struct axi_jesd204_rx *jesd) |
Free resoulces allocated for JESD204 RX peripheral. | |
Variables | |
const char * | axi_jesd204_rx_link_status_label [] |
const char * | axi_jesd204_rx_lane_status_label [] |
const char * | axi_jesd204_rx_link_status_64b66b_l [] |
const char * | axi_jesd204_rx_emb_state_label [] |
Driver for the Analog Devices AXI-JESD204-RX peripheral.
Copyright 2018(c) Analog Devices, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define ADI_AXI_PCORE_VER | ( | major, | |
minor, | |||
patch ) |
#define JESD204_EMB_STATE_GET | ( | x | ) |
#define JESD204_EMB_STATE_MASK NO_OS_GENMASK(10, 8) |
#define JESD204_LINK_STATUS_DATA 3 |
#define JESD204_RX_ENCODER_GET | ( | x | ) |
#define JESD204_RX_ENCODER_MASK NO_OS_GENMASK(9, 8) |
#define JESD204_RX_LINK_CONF2_BUFFER_EARLY_RELEASE NO_OS_BIT(16) |
#define JESD204_RX_MAGIC (('2' << 24) | ('0' << 16) | ('4' << 8) | ('R')) |
#define JESD204_RX_REG_ILAS | ( | x, | |
y ) |
#define JESD204_RX_REG_LANE_ERRORS | ( | x | ) |
#define JESD204_RX_REG_LANE_LATENCY | ( | x | ) |
#define JESD204_RX_REG_LANE_STATUS | ( | x | ) |
#define JESD204_RX_REG_LINK_CLK_RATIO 0xc8 |
#define JESD204_RX_REG_LINK_CONF0 0x210 |
#define JESD204_RX_REG_LINK_CONF2 0x240 |
#define JESD204_RX_REG_LINK_CONF4 0x21C |
#define JESD204_RX_REG_LINK_DISABLE 0xc0 |
#define JESD204_RX_REG_LINK_STATE 0xc4 |
#define JESD204_RX_REG_LINK_STATUS 0x280 |
#define JESD204_RX_REG_MAGIC 0x0c |
#define JESD204_RX_REG_SYNTH_DATA_PATH_WIDTH 0x14 |
#define JESD204_RX_REG_SYNTH_NUM_LANES 0x10 |
#define JESD204_RX_REG_SYNTH_REG_1 0x18 |
#define JESD204_RX_REG_SYSREF_CONF 0x100 |
#define JESD204_RX_REG_SYSREF_CONF_SYSREF_DISABLE NO_OS_BIT(0) |
#define JESD204_RX_REG_SYSREF_LMFC_OFFSET 0x104 |
#define JESD204_RX_REG_SYSREF_STATUS 0x108 |
#define JESD204_RX_REG_VERSION 0x00 |
#define JESD204_SYNTH_DATA_PATH_WIDTH_GET | ( | x | ) |
#define JESD204_SYNTH_DATA_PATH_WIDTH_MASK NO_OS_GENMASK(7, 0) |
#define JESD204_TPL_DATA_PATH_WIDTH_GET | ( | x | ) |
#define JESD204_TPL_DATA_PATH_WIDTH_MASK NO_OS_GENMASK(15, 8) |
#define JESD204_TX_REG_ILAS | ( | x, | |
y ) |
#define PCORE_VERSION_MAJOR | ( | x | ) |
#define PCORE_VERSION_MINOR | ( | x | ) |
#define PCORE_VERSION_PATCH | ( | x | ) |
int32_t axi_jesd204_rx_apply_config_legacy | ( | struct axi_jesd204_rx * | jesd, |
struct jesd204_rx_config * | config ) |
Apply the JESD204 RX configuration.
jesd | - The device structure. |
config | - The JESD RX configuration. |
bool axi_jesd204_rx_check_lane_status | ( | struct axi_jesd204_rx * | jesd, |
uint32_t | lane ) |
Check JESD204 RX Lane Status.
jesd | - The device structure. |
lane | - Lane ID. |
int32_t axi_jesd204_rx_get_lane_errors | ( | struct axi_jesd204_rx * | jesd, |
uint32_t | lane, | ||
uint32_t * | errors ) |
Read the JESD204 RX Lane Errors.
jesd | - The JESD204 RX Device Structure. |
lane | - The lane ID. |
errors | - The errors read from the device. |
int32_t axi_jesd204_rx_init | ( | struct axi_jesd204_rx ** | jesd204, |
const struct jesd204_rx_init * | init ) |
Device initialization, JESD FSM ON.
jesd204 | - The device structure. |
init | - The structure containing the device initial parameters. |
int32_t axi_jesd204_rx_init_legacy | ( | struct axi_jesd204_rx ** | jesd204, |
const struct jesd204_rx_init * | init ) |
Device initialization.
jesd204 | - The device structure. |
init | - The structure containing the device initial parameters. |
int32_t axi_jesd204_rx_lane_clk_disable | ( | struct axi_jesd204_rx * | jesd | ) |
JESD204 RX Lane Clock Disable.
jesd | - The device structure. |
int32_t axi_jesd204_rx_lane_clk_enable | ( | struct axi_jesd204_rx * | jesd | ) |
JESD204 RX Lane Clock Enable.
jesd | - The device structure. |
int32_t axi_jesd204_rx_laneinfo_read | ( | struct axi_jesd204_rx * | jesd, |
uint32_t | lane ) |
Read JESD204 RX Lane Info.
jesd | - The device structure. |
lane | - Lane ID. |
int32_t axi_jesd204_rx_read | ( | struct axi_jesd204_rx * | jesd, |
uint32_t | reg_addr, | ||
uint32_t * | reg_val ) |
JESD204 RX AXI Data Read.
jesd | - The device structure. |
reg_addr | - The register address. |
reg_val | - Data read from the device. |
int32_t axi_jesd204_rx_remove | ( | struct axi_jesd204_rx * | jesd | ) |
Free resoulces allocated for JESD204 RX peripheral.
jesd | - The device structure. |
uint32_t axi_jesd204_rx_status_read | ( | struct axi_jesd204_rx * | jesd | ) |
Read status of the JESD204 Receive Peripherial.
jesd | - The device structure. |
int32_t axi_jesd204_rx_watchdog | ( | struct axi_jesd204_rx * | jesd | ) |
JESD204 RX Watchdog.
jesd | - The device structure. |
int32_t axi_jesd204_rx_write | ( | struct axi_jesd204_rx * | jesd, |
uint32_t | reg_addr, | ||
uint32_t | reg_val ) |
JESD204 RX AXI Data Write.
jesd | - The device structure. |
reg_addr | - The register address. |
reg_val | - Data value to write. |
const char* axi_jesd204_rx_emb_state_label[] |
const char* axi_jesd204_rx_lane_status_label[] |
const char* axi_jesd204_rx_link_status_64b66b_l[] |
const char* axi_jesd204_rx_link_status_label[] |