Driver for the Analog Devices AXI CLKGEN.
More...
#include "clk_axi_clkgen.h"
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include "no_os_util.h"
#include "no_os_alloc.h"
#include "no_os_error.h"
#include "no_os_delay.h"
#include "no_os_axi_io.h"
|
| enum | axi_fgpa_technology {
AXI_FPGA_TECH_UNKNOWN = 0
,
AXI_FPGA_TECH_SERIES7
,
AXI_FPGA_TECH_ULTRASCALE
,
AXI_FPGA_TECH_ULTRASCALE_PLUS
} |
| |
| enum | axi_fpga_family {
AXI_FPGA_FAMILY_UNKNOWN = 0
,
AXI_FPGA_FAMILY_ARTIX
,
AXI_FPGA_FAMILY_KINTEX
,
AXI_FPGA_FAMILY_VIRTEX
,
AXI_FPGA_FAMILY_ZYNQ
} |
| |
| enum | axi_fpga_speed_grade {
AXI_FPGA_SPEED_UNKNOWN = 0
,
AXI_FPGA_SPEED_1 = 10
,
AXI_FPGA_SPEED_1L = 11
,
AXI_FPGA_SPEED_1H = 12
,
AXI_FPGA_SPEED_1HV = 13
,
AXI_FPGA_SPEED_1LV = 14
,
AXI_FPGA_SPEED_2 = 20
,
AXI_FPGA_SPEED_2L = 21
,
AXI_FPGA_SPEED_2LV = 22
,
AXI_FPGA_SPEED_3 = 30
} |
| |
|
| int32_t | axi_clkgen_write (struct axi_clkgen *clkgen, uint32_t reg_addr, uint32_t reg_val) |
| | axi_clkgen_write
|
| |
| int32_t | axi_clkgen_read (struct axi_clkgen *clkgen, uint32_t reg_addr, uint32_t *reg_val) |
| | axi_clkgen_read
|
| |
| void | axi_clkgen_mmcm_write (struct axi_clkgen *clkgen, uint32_t reg, uint32_t val, uint32_t mask) |
| | axi_clkgen_mmcm_write
|
| |
| void | axi_clkgen_calc_params (struct axi_clkgen *axi_clkgen, uint32_t fin, uint32_t fout, uint32_t *best_d, uint32_t *best_m, uint32_t *best_dout) |
| | axi_clkgen_calc_params
|
| |
| void | axi_clkgen_calc_clk_params (uint32_t divider, uint32_t *low, uint32_t *high, uint32_t *edge, uint32_t *nocount) |
| | axi_clkgen_calc_clk_params
|
| |
| int32_t | axi_clkgen_set_rate (struct axi_clkgen *clkgen, uint32_t rate) |
| | axi_clkgen_set_rate
|
| |
| int32_t | axi_clkgen_get_rate (struct axi_clkgen *clkgen, uint32_t *rate) |
| | axi_clkgen_get_rate
|
| |
| int32_t | axi_clkgen_init (struct axi_clkgen **clk, const struct axi_clkgen_init *init) |
| | axi_clkgen_init
|
| |
| int32_t | axi_clkgen_remove (struct axi_clkgen *clkgen) |
| | axi_clkgen_remove
|
| |
Driver for the Analog Devices AXI CLKGEN.
- 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
◆ AXI_CLKGEN_DRP_CNTRL_READ
| #define AXI_CLKGEN_DRP_CNTRL_READ NO_OS_BIT(28) |
◆ AXI_CLKGEN_DRP_CNTRL_SEL
| #define AXI_CLKGEN_DRP_CNTRL_SEL NO_OS_BIT(29) |
◆ AXI_CLKGEN_DRP_STATUS_BUSY
| #define AXI_CLKGEN_DRP_STATUS_BUSY NO_OS_BIT(16) |
◆ AXI_CLKGEN_MMCM_RESETN
◆ AXI_CLKGEN_REG_DRP_CNTRL
| #define AXI_CLKGEN_REG_DRP_CNTRL 0x70 |
◆ AXI_CLKGEN_REG_DRP_STATUS
| #define AXI_CLKGEN_REG_DRP_STATUS 0x74 |
◆ AXI_CLKGEN_REG_RESETN
| #define AXI_CLKGEN_REG_RESETN 0x40 |
◆ AXI_CLKGEN_REG_STATUS
| #define AXI_CLKGEN_REG_STATUS 0x5c |
◆ AXI_CLKGEN_RESETN
◆ AXI_CLKGEN_STATUS
◆ AXI_INFO_FPGA_DEV_PACKAGE
| #define AXI_INFO_FPGA_DEV_PACKAGE |
( |
| info | ) |
|
◆ AXI_INFO_FPGA_FAMILY
| #define AXI_INFO_FPGA_FAMILY |
( |
| info | ) |
|
◆ AXI_INFO_FPGA_SPEED_GRADE
| #define AXI_INFO_FPGA_SPEED_GRADE |
( |
| info | ) |
|
◆ AXI_INFO_FPGA_TECH
| #define AXI_INFO_FPGA_TECH |
( |
| info | ) |
|
◆ AXI_INFO_FPGA_VOLTAGE
| #define AXI_INFO_FPGA_VOLTAGE |
( |
| val | ) |
|
◆ AXI_PCORE_VER
| #define AXI_PCORE_VER |
( |
| major, |
|
|
| minor, |
|
|
| letter ) |
Value:((major << 16) | (minor << 8) | letter)
◆ AXI_PCORE_VER_LETTER
| #define AXI_PCORE_VER_LETTER |
( |
| version | ) |
|
◆ AXI_PCORE_VER_MAJOR
| #define AXI_PCORE_VER_MAJOR |
( |
| version | ) |
|
◆ AXI_PCORE_VER_MINOR
| #define AXI_PCORE_VER_MINOR |
( |
| version | ) |
|
◆ AXI_REG_FPGA_INFO
| #define AXI_REG_FPGA_INFO 0x001C |
◆ AXI_REG_FPGA_VOLTAGE
| #define AXI_REG_FPGA_VOLTAGE 0x0140 |
◆ AXI_REG_VERSION
| #define AXI_REG_VERSION 0x0000 |
◆ AXI_VERSION
Value:(((x) & 0xffffffff) << 0)
◆ AXI_VERSION_IS
| #define AXI_VERSION_IS |
( |
| x, |
|
|
| y, |
|
|
| z ) |
Value:((x) << 16 | (y) << 8 | (z))
◆ AXI_VERSION_MAJOR
| #define AXI_VERSION_MAJOR |
( |
| x | ) |
|
◆ MMCM_REG_CLK_DIV
| #define MMCM_REG_CLK_DIV 0x16 |
◆ MMCM_REG_CLK_FB1
| #define MMCM_REG_CLK_FB1 0x14 |
◆ MMCM_REG_CLK_FB2
| #define MMCM_REG_CLK_FB2 0x15 |
◆ MMCM_REG_CLKOUT0_1
| #define MMCM_REG_CLKOUT0_1 0x08 |
◆ MMCM_REG_CLKOUT0_2
| #define MMCM_REG_CLKOUT0_2 0x09 |
◆ MMCM_REG_CLKOUT1_1
| #define MMCM_REG_CLKOUT1_1 0x0A |
◆ MMCM_REG_CLKOUT1_2
| #define MMCM_REG_CLKOUT1_2 0x0B |
◆ MMCM_REG_FILTER1
| #define MMCM_REG_FILTER1 0x4e |
◆ MMCM_REG_FILTER2
| #define MMCM_REG_FILTER2 0x4f |
◆ MMCM_REG_LOCK1
| #define MMCM_REG_LOCK1 0x18 |
◆ MMCM_REG_LOCK2
| #define MMCM_REG_LOCK2 0x19 |
◆ MMCM_REG_LOCK3
| #define MMCM_REG_LOCK3 0x1a |
◆ axi_fgpa_technology
| Enumerator |
|---|
| AXI_FPGA_TECH_UNKNOWN | |
| AXI_FPGA_TECH_SERIES7 | |
| AXI_FPGA_TECH_ULTRASCALE | |
| AXI_FPGA_TECH_ULTRASCALE_PLUS | |
◆ axi_fpga_family
| Enumerator |
|---|
| AXI_FPGA_FAMILY_UNKNOWN | |
| AXI_FPGA_FAMILY_ARTIX | |
| AXI_FPGA_FAMILY_KINTEX | |
| AXI_FPGA_FAMILY_VIRTEX | |
| AXI_FPGA_FAMILY_ZYNQ | |
◆ axi_fpga_speed_grade
| Enumerator |
|---|
| AXI_FPGA_SPEED_UNKNOWN | |
| AXI_FPGA_SPEED_1 | |
| AXI_FPGA_SPEED_1L | |
| AXI_FPGA_SPEED_1H | |
| AXI_FPGA_SPEED_1HV | |
| AXI_FPGA_SPEED_1LV | |
| AXI_FPGA_SPEED_2 | |
| AXI_FPGA_SPEED_2L | |
| AXI_FPGA_SPEED_2LV | |
| AXI_FPGA_SPEED_3 | |
◆ axi_clkgen_calc_clk_params()
| void axi_clkgen_calc_clk_params |
( |
uint32_t | divider, |
|
|
uint32_t * | low, |
|
|
uint32_t * | high, |
|
|
uint32_t * | edge, |
|
|
uint32_t * | nocount ) |
axi_clkgen_calc_clk_params
◆ axi_clkgen_calc_params()
| void axi_clkgen_calc_params |
( |
struct axi_clkgen * | axi_clkgen, |
|
|
uint32_t | fin, |
|
|
uint32_t | fout, |
|
|
uint32_t * | best_d, |
|
|
uint32_t * | best_m, |
|
|
uint32_t * | best_dout ) |
◆ axi_clkgen_get_rate()
| int32_t axi_clkgen_get_rate |
( |
struct axi_clkgen * | clkgen, |
|
|
uint32_t * | rate ) |
◆ axi_clkgen_init()
| int32_t axi_clkgen_init |
( |
struct axi_clkgen ** | clk, |
|
|
const struct axi_clkgen_init * | init ) |
◆ axi_clkgen_mmcm_write()
| void axi_clkgen_mmcm_write |
( |
struct axi_clkgen * | clkgen, |
|
|
uint32_t | reg, |
|
|
uint32_t | val, |
|
|
uint32_t | mask ) |
◆ axi_clkgen_read()
| int32_t axi_clkgen_read |
( |
struct axi_clkgen * | clkgen, |
|
|
uint32_t | reg_addr, |
|
|
uint32_t * | reg_val ) |
◆ axi_clkgen_remove()
| int32_t axi_clkgen_remove |
( |
struct axi_clkgen * | clkgen | ) |
|
◆ axi_clkgen_set_rate()
| int32_t axi_clkgen_set_rate |
( |
struct axi_clkgen * | clkgen, |
|
|
uint32_t | rate ) |
◆ axi_clkgen_write()
| int32_t axi_clkgen_write |
( |
struct axi_clkgen * | clkgen, |
|
|
uint32_t | reg_addr, |
|
|
uint32_t | reg_val ) |