Go to the documentation of this file.
39 #ifndef AXI_ADC_CORE_H_
40 #define AXI_ADC_CORE_H_
51 #define AXI_ADC_REG_RSTN 0x0040
52 #define AXI_ADC_MMCM_RSTN NO_OS_BIT(1)
53 #define AXI_ADC_RSTN NO_OS_BIT(0)
55 #define AXI_ADC_REG_CNTRL 0x0044
56 #define AXI_ADC_R1_MODE NO_OS_BIT(2)
57 #define AXI_ADC_DDR_EDGESEL NO_OS_BIT(1)
58 #define AXI_ADC_PIN_MODE NO_OS_BIT(0)
60 #define AXI_ADC_REG_CNTRL_3 0x004C
61 #define AXI_ADC_CRC_EN NO_OS_BIT(8)
63 #define AXI_ADC_REG_CLK_FREQ 0x0054
64 #define AXI_ADC_CLK_FREQ(x) (((x) & 0xFFFFFFFF) << 0)
65 #define AXI_ADC_TO_CLK_FREQ(x) (((x) >> 0) & 0xFFFFFFFF)
67 #define AXI_ADC_REG_CLK_RATIO 0x0058
68 #define AXI_ADC_CLK_RATIO(x) (((x) & 0xFFFFFFFF) << 0)
69 #define AXI_ADC_TO_CLK_RATIO(x) (((x) >> 0) & 0xFFFFFFFF)
71 #define AXI_ADC_REG_STATUS 0x005C
72 #define AXI_ADC_MUX_PN_ERR NO_OS_BIT(3)
73 #define AXI_ADC_MUX_PN_OOS NO_OS_BIT(2)
74 #define AXI_ADC_MUX_OVER_RANGE NO_OS_BIT(1)
75 #define AXI_ADC_STATUS NO_OS_BIT(0)
77 #define AXI_ADC_REG_DELAY_CNTRL 0x0060
78 #define ADC_DELAY_SEL NO_OS_BIT(17)
79 #define ADC_DELAY_RWN NO_OS_BIT(16)
80 #define ADC_DELAY_ADDRESS(x) (((x) & 0xFF) << 8)
81 #define ADC_TO_DELAY_ADDRESS(x) (((x) >> 8) & 0xFF)
82 #define ADC_DELAY_WDATA(x) (((x) & 0x1F) << 0)
83 #define ADC_TO_DELAY_WDATA(x) (((x) >> 0) & 0x1F)
85 #define AXI_ADC_REG_CHAN_CNTRL(c) (0x0400 + (c) * 0x40)
86 #define AXI_ADC_PN_SEL NO_OS_BIT(10)
87 #define AXI_ADC_IQCOR_ENB NO_OS_BIT(9)
88 #define AXI_ADC_DCFILT_ENB NO_OS_BIT(8)
89 #define AXI_ADC_FORMAT_SIGNEXT NO_OS_BIT(6)
90 #define AXI_ADC_FORMAT_TYPE NO_OS_BIT(5)
91 #define AXI_ADC_FORMAT_ENABLE NO_OS_BIT(4)
92 #define AXI_ADC_PN23_TYPE NO_OS_BIT(1)
93 #define AXI_ADC_ENABLE NO_OS_BIT(0)
95 #define AXI_ADC_REG_CHAN_STATUS(c) (0x0404 + (c) * 0x40)
96 #define AXI_ADC_PN_ERR NO_OS_BIT(2)
97 #define AXI_ADC_PN_OOS NO_OS_BIT(1)
98 #define AXI_ADC_OVER_RANGE NO_OS_BIT(0)
100 #define AXI_ADC_REG_CHAN_CNTRL_1(c) (0x0410 + (c) * 0x40)
101 #define AXI_ADC_DCFILT_OFFSET(x) (((x) & 0xFFFFL) << 16)
102 #define AXI_ADC_TO_DCFILT_OFFSET(x) (((x) >> 16) & 0xFFFF)
103 #define AXI_ADC_DCFILT_COEFF(x) (((x) & 0xFFFF) << 0)
104 #define AXI_ADC_TO_DCFILT_COEFF(x) (((x) >> 0) & 0xFFFF)
106 #define AXI_ADC_REG_CHAN_CNTRL_2(c) (0x0414 + (c) * 0x40)
107 #define AXI_ADC_IQCOR_COEFF_1(x) (((x) & 0xFFFFL) << 16)
108 #define AXI_ADC_TO_IQCOR_COEFF_1(x) (((x) >> 16) & 0xFFFF)
109 #define AXI_ADC_IQCOR_COEFF_2(x) (((x) & 0xFFFF) << 0)
110 #define AXI_ADC_TO_IQCOR_COEFF_2(x) (((x) >> 0) & 0xFFFF)
112 #define AXI_ADC_REG_CHAN_CNTRL_3(c) (0x0418 + (c) * 0x40)
113 #define AXI_ADC_ADC_PN_SEL(x) (((x) & 0xF) << 16)
114 #define AXI_ADC_TO_ADC_PN_SEL(x) (((x) >> 16) & 0xF)
115 #define AXI_ADC_ADC_DATA_SEL(x) (((x) & 0xF) << 0)
116 #define AXI_ADC_TO_ADC_DATA_SEL(x) (((x) >> 0) & 0xF)
118 #define AXI_ADC_REG_DELAY(l) (0x0800 + (l) * 0x4)
214 uint32_t no_of_lanes,
218 uint32_t no_of_lanes,
Driver for the Analog Devices AXI-ADC-CORE module.
int no_os_dma_remove(struct no_os_dma_desc *desc)
Remove resources allocated for the DMA controller.
Definition: no_os_dma.c:149
const struct no_os_eeprom_platform_ops * platform_ops
Definition: no_os_eeprom.h:67
uint32_t irq_priority
Definition: no_os_dma.h:97
int32_t axi_adc_read(struct axi_adc *adc, uint32_t reg_addr, uint32_t *reg_data)
AXI ADC Data read.
Definition: axi_adc_core.c:61
@ AXI_ADC_PN_END
Definition: axi_adc_core.h:172
void * mutex
Definition: no_os_pwm.h:101
int no_os_mdio_init(struct no_os_mdio_desc **desc, struct no_os_mdio_init_param *param)
Initialize the MDIO interface.
Definition: no_os_mdio.c:48
int32_t no_os_pwm_set_duty_cycle(struct no_os_pwm_desc *desc, uint32_t duty_cycle_ns)
Set the PWM duty cycle.
Definition: no_os_pwm.c:175
int32_t axi_adc_delay_calibrate(struct axi_adc *core, uint32_t no_of_lanes, enum axi_adc_pn_sel sel)
Calibrate Delay using specific PN sequence.
Definition: axi_adc_core.c:248
Structure holding I2C bus descriptor.
Definition: no_os_i2c.h:87
uint8_t num_slave_channels
Definition: axi_adc_core.h:138
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:85
const struct no_os_uart_platform_ops * platform_ops
Definition: no_os_uart.h:151
int32_t no_os_spi_transfer(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
Iterate over head list and send all spi messages.
Definition: no_os_spi.c:191
Structure containing the init parameters needed by the PWM generator.
Definition: no_os_pwm.h:72
int32_t no_os_pwm_disable(struct no_os_pwm_desc *desc)
Disable PWM signal generation.
Definition: no_os_pwm.c:121
Parameters for an MDIO slave.
Definition: no_os_mdio.h:66
void * mutex
Definition: no_os_spi.h:156
bool c45
Definition: no_os_mdio.h:71
int32_t no_os_timer_init(struct no_os_timer_desc **desc, const struct no_os_timer_init_param *param)
Initialize hardware timer and the handler structure associated with it.
Definition: no_os_timer.c:63
void(* sg_handler)(void *)
Definition: no_os_dma.h:170
int32_t no_os_pwm_init(struct no_os_pwm_desc **desc, const struct no_os_pwm_init_param *param)
Initialize the PWM peripheral.
Definition: no_os_pwm.c:57
int(* remove)(struct no_os_mdio_desc *)
Definition: no_os_mdio.h:104
int no_os_mdio_write(struct no_os_mdio_desc *desc, uint32_t reg, uint16_t val)
Write a register using MDIO.
Definition: no_os_mdio.c:96
IRQ parameter for the default inter transfer handler.
Definition: no_os_dma.h:65
int no_os_dma_xfer_abort(struct no_os_dma_desc *desc, struct no_os_dma_ch *ch)
Abort the ongoing and any other future transfers scheduled for a channel.
Definition: no_os_dma.c:390
#define SPI_MAX_BUS_NUMBER
Definition: no_os_spi.h:55
void no_os_i2cbus_remove(uint32_t bus_number)
Removes i2c bus instance.
Definition: no_os_i2c.c:137
Structure holding the EEPROM descriptor.
Definition: no_os_eeprom.h:76
void no_os_mutex_init(void **mutex)
Function for no-os mutex initialization and thread safety. This function is implemented based on diff...
Definition: freertos_mutex.c:50
enum no_os_spi_bit_order bit_order
Definition: no_os_spi.h:141
int32_t axi_adc_update_active_channels(struct axi_adc *adc, uint32_t mask)
Update active AXI ADC channels.
Definition: axi_adc_core.c:545
struct no_os_dma_default_handler_data irq_ctx
Definition: no_os_dma.h:125
int32_t no_os_tdm_remove(struct no_os_tdm_desc *desc)
Free the resources allocated by no_os_tdm_init().
Definition: no_os_tdm.c:70
int32_t axi_adc_set_pnsel(struct axi_adc *adc, uint32_t chan, enum axi_adc_pn_sel sel)
Set AXI ADC PN sequence.
Definition: axi_adc_core.c:121
int32_t no_os_uart_read_nonblocking(struct no_os_uart_desc *desc, uint8_t *data, uint32_t bytes_number)
Read data from UART non-blocking.
Definition: no_os_uart.c:176
int32_t axi_adc_set_calib_phase(struct axi_adc *adc, uint32_t chan, int32_t val, int32_t val2)
Calibrate phase for specific AXI ADC channel.
Definition: axi_adc_core.c:439
uint64_t sampling_freq
Definition: headless.c:79
Structure describing a callback to be registered.
Definition: no_os_irq.h:148
int32_t no_os_list_get_size(struct no_os_list_desc *list_desc, uint32_t *out_size)
int32_t no_os_tdm_write(struct no_os_tdm_desc *desc, void *data, uint16_t nb_samples)
Write data using the TDM interface.
Definition: no_os_tdm.c:126
Header file of SPI Interface.
uint16_t id
Definition: no_os_timer.h:91
Initialization parameter for the DMA controller.
Definition: no_os_dma.h:177
uint32_t id
Definition: no_os_dma.h:115
Header file of IRQ interface.
int32_t no_os_irq_register_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
Register a callback to handle the irq events.
Definition: no_os_irq.c:98
int(* read)(struct no_os_mdio_desc *, uint32_t, uint16_t *)
Definition: no_os_mdio.h:102
int32_t no_os_uart_init(struct no_os_uart_desc **desc, struct no_os_uart_init_param *param)
Initialize the UART communication peripheral.
Definition: no_os_uart.c:58
void * mutex
Definition: no_os_uart.h:142
AXI ADC Initialization Parameters structure.
Definition: axi_adc_core.h:149
uint32_t id
Definition: no_os_pwm.h:103
bool no_os_dma_in_progress(struct no_os_dma_desc *desc, struct no_os_dma_ch *ch)
Whether or not there is a transfer in progress on a specific channel.
Definition: no_os_dma.c:440
struct no_os_mdio_ops * ops
Definition: no_os_mdio.h:75
int32_t axi_adc_write(struct axi_adc *adc, uint32_t reg_addr, uint32_t reg_data)
AXI ADC Data Write.
Definition: axi_adc_core.c:77
enum no_os_spi_mode mode
Definition: no_os_spi.h:164
enum no_os_spi_bit_order bit_order
Definition: no_os_spi.h:166
#define AXI_ADC_RSTN
Definition: axi_adc_core.h:53
int no_os_dma_acquire_channel(struct no_os_dma_desc *desc, struct no_os_dma_ch **channel)
Get a free DMA channel.
Definition: no_os_dma.c:190
#define TIMER_MAX_TABLE
Definition: no_os_timer.h:53
const struct no_os_timer_platform_ops * platform_ops
Definition: no_os_timer.h:73
Definition: no_os_spi.h:91
#define NO_OS_IS_ERR_VALUE(x)
Definition: no_os_error.h:56
uint32_t irq_num
Definition: no_os_dma.h:121
Header file of Delay functions.
int32_t no_os_i2c_write(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Write data to slave device.
Definition: no_os_i2c.c:165
int32_t no_os_irq_unregister_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback)
Unregisters a generic IRQ handling function.
Definition: no_os_irq.c:118
@ DEV_TO_MEM
Definition: no_os_dma.h:58
int32_t no_os_i2c_init(struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
Initialize the I2C communication peripheral.
Definition: no_os_i2c.c:58
Header file for EEPROM APIs.
struct no_os_dma_platform_ops * platform_ops
Definition: no_os_dma.h:183
AXI ADC Device Descriptor.
Definition: axi_adc_core.h:128
int no_os_dma_init(struct no_os_dma_desc **desc, struct no_os_dma_init_param *param)
Initialize the DMA controller.
Definition: no_os_dma.c:96
int32_t no_os_list_get_first(struct no_os_list_desc *list_desc, void **data)
enum no_os_spi_mode mode
Definition: no_os_spi.h:139
const struct no_os_tdm_platform_ops * platform_ops
Definition: no_os_tdm.h:89
uint8_t slave_number
Definition: no_os_spi.h:158
int32_t no_os_gpio_get_optional(struct no_os_gpio_desc **desc, const struct no_os_gpio_init_param *param)
Get the value of an optional GPIO.
Definition: no_os_gpio.c:81
int32_t axi_adc_init_begin(struct axi_adc **adc_core, const struct axi_adc_init *init)
Begin AXI ADC Initialization.
Definition: axi_adc_core.c:593
#define AXI_ADC_REG_STATUS
Definition: axi_adc_core.h:71
int32_t no_os_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Enable specific interrupt.
Definition: no_os_irq.c:187
@ AXI_ADC_PN_RAMP_16
Definition: axi_adc_core.h:171
int id
Definition: no_os_mdio.h:68
uint8_t num_slave_channels
Definition: axi_adc_core.h:159
int32_t number
Definition: no_os_gpio.h:89
const char * name
Definition: axi_adc_core.h:130
#define AXI_ADC_ENABLE
Definition: axi_adc_core.h:93
uint32_t id
Definition: no_os_pwm.h:74
#define AXI_ADC_TO_IQCOR_COEFF_1(x)
Definition: axi_adc_core.h:108
uint32_t device_id
Definition: no_os_spi.h:160
Timer control module header.
const struct no_os_spi_platform_ops * platform_ops
Definition: no_os_spi.h:168
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:60
#define NO_OS_ARRAY_SIZE(x)
Definition: no_os_util.h:53
no_os_pwm_polarity
Possible polarities of the PWM signal.
Definition: no_os_pwm.h:61
#define AXI_ADC_REG_CLK_RATIO
Definition: axi_adc_core.h:67
int32_t axi_adc_get_calib_phase_scale(struct axi_adc *adc, uint32_t phase, uint32_t chan, int32_t *val, int32_t *val2)
Get the phase calibration values for AXI ADC channel.
Definition: axi_adc_core.c:391
uint32_t base
Definition: axi_adc_core.h:153
int32_t no_os_spi_transfer_dma_async(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len, void(*callback)(void *), void *ctx)
Transfer a list of messages using DMA. The function will return after the first transfer is started....
Definition: no_os_spi.c:254
int32_t axi_adc_delay_set(struct axi_adc *adc, uint32_t no_of_lanes, uint32_t delay)
Set input/output delay primitive for number of lines.
Definition: axi_adc_core.c:213
uint8_t device_id
Definition: no_os_uart.h:144
const struct no_os_spi_platform_ops * platform_ops
Definition: no_os_spi.h:142
#define AXI_ADC_REG_DELAY(l)
Definition: axi_adc_core.h:118
int no_os_trng_fill_buffer(struct no_os_trng_desc *desc, uint8_t *buff, uint32_t len)
Fill buffer with rng data.
Definition: no_os_trng.c:101
int32_t axi_adc_init(struct axi_adc **adc_core, const struct axi_adc_init *init)
AXI ADC Main Initialization.
Definition: axi_adc_core.c:647
enum no_os_irq_peripheral peripheral
Definition: no_os_irq.h:156
void * extra
Definition: no_os_i2c.h:80
#define AXI_ADC_REG_RSTN
Definition: axi_adc_core.h:51
const struct no_os_gpio_platform_ops * platform_ops
Definition: no_os_gpio.h:93
int32_t no_os_gpio_remove(struct no_os_gpio_desc *desc)
Free the resources allocated by no_os_gpio_get().
Definition: no_os_gpio.c:110
const struct no_os_eeprom_platform_ops * platform_ops
Definition: no_os_eeprom.h:79
int32_t no_os_irq_set_priority(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
Set the priority for an interrupt.
Definition: no_os_irq.c:222
uint32_t num_ch
Definition: no_os_dma.h:181
int32_t axi_adc_set_calib_phase(struct axi_adc *adc, uint32_t chan, int32_t val, int32_t val2)
Calibrate phase for specific AXI ADC channel.
Definition: axi_adc_core.c:439
uint32_t device_id
Definition: no_os_spi.h:133
int32_t no_os_gpio_direction_output(struct no_os_gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
Definition: no_os_gpio.c:153
int no_os_dma_release_channel(struct no_os_dma_desc *desc, struct no_os_dma_ch *channel)
Free DMA channel.
Definition: no_os_dma.c:222
int32_t no_os_timer_count_clk_get(struct no_os_timer_desc *desc, uint32_t *freq_hz)
Get the timer clock frequency.
Definition: no_os_timer.c:179
int32_t no_os_tdm_stop(struct no_os_tdm_desc *desc)
Stop TDM DMA transfer.
Definition: no_os_tdm.c:114
uint32_t max_speed_hz
Definition: no_os_i2c.h:95
uint64_t no_os_do_div(uint64_t *n, uint64_t base)
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
Structure holding TDM descriptor.
Definition: no_os_tdm.h:98
int32_t axi_adc_get_sampling_freq(struct axi_adc *adc, uint32_t chan, uint64_t *sampling_freq)
Get the AXI ADC Sampling Frequency.
Definition: axi_adc_core.c:177
int no_os_dma_chan_unlock(struct no_os_dma_ch *ch)
Unlock a DMA channel, marking it available for acquisition.
Definition: no_os_dma.c:342
int32_t no_os_irq_set_priority(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
Set the priority for an interrupt.
Definition: no_os_irq.c:222
int no_os_dma_config_xfer(struct no_os_dma_desc *desc, struct no_os_dma_xfer_desc *xfer, uint32_t len, struct no_os_dma_ch *ch)
Acquire a channel and configure the list of transfers.
Definition: no_os_dma.c:248
int32_t axi_adc_remove(struct axi_adc *adc)
AXI ADC Resources deallocation.
Definition: axi_adc_core.c:687
uint8_t num_channels
Definition: axi_adc_core.h:136
Stucture holding the UART descriptor.
Definition: no_os_uart.h:140
#define AXI_ADC_IQCOR_COEFF_2(x)
Definition: axi_adc_core.h:109
TRNG Descriptor.
Definition: no_os_trng.h:65
uint32_t ref
Definition: no_os_irq.h:135
Header file of true random number generator.
int32_t axi_adc_write(struct axi_adc *adc, uint32_t reg_addr, uint32_t reg_data)
AXI ADC Data Write.
Definition: axi_adc_core.c:77
const struct no_os_gpio_platform_ops * platform_ops
Definition: no_os_gpio.h:110
void no_os_mutex_unlock(void *mutex)
Function for unlocking mutex.
#define AXI_ADC_IQCOR_COEFF_1(x)
Definition: axi_adc_core.h:107
struct no_os_platform_spi_delays platform_delays
Definition: no_os_spi.h:143
uint32_t max_speed_hz
Definition: no_os_i2c.h:74
struct no_os_dma_ch * channel
Definition: no_os_dma.h:67
int32_t no_os_eeprom_write(struct no_os_eeprom_desc *desc, uint32_t address, uint8_t *data, uint16_t bytes)
Write the EEPROM data.
Definition: no_os_eeprom.c:95
#define AXI_ADC_REG_CHAN_CNTRL_3(c)
Definition: axi_adc_core.h:112
void * mutex
Definition: no_os_dma.h:163
int32_t no_os_i2c_read(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Read data from slave device.
Definition: no_os_i2c.c:196
int32_t axi_adc_get_calib_scale(struct axi_adc *adc, uint32_t chan, int32_t *val, int32_t *val2)
Get the scale calibration values for AXI ADC channel.
Definition: axi_adc_core.c:487
int32_t axi_slave_adc_read(struct axi_adc *adc, uint32_t reg_addr, uint32_t *reg_data)
Slave AXI ADC Data read.
Definition: axi_adc_core.c:93
void axi_adc_idelay_set(struct axi_adc *adc, uint32_t lane, uint32_t val)
Set input/output delay primitive for specific interface line.
Definition: axi_adc_core.c:198
int32_t axi_adc_read(struct axi_adc *adc, uint32_t reg_addr, uint32_t *reg_data)
AXI ADC Data read.
Definition: axi_adc_core.c:61
#define AXI_ADC_TO_DCFILT_OFFSET(x)
Definition: axi_adc_core.h:102
Describes the state of a DMA channel.
Definition: no_os_dma.h:113
#define PWM_MAX_NUMBER
Definition: no_os_pwm.h:52
uint16_t id
Definition: no_os_timer.h:67
int no_os_trng_remove(struct no_os_trng_desc *desc)
Free the resources allocated by no_os_trng_init().
Definition: no_os_trng.c:83
#define AXI_ADC_REG_CHAN_CNTRL_2(c)
Definition: axi_adc_core.h:106
void * ctx
Definition: no_os_irq.h:152
@ MEM_TO_MEM
Definition: no_os_dma.h:56
int32_t axi_adc_get_calib_bias(struct axi_adc *adc, uint32_t chan, int32_t *val, int32_t *val2)
Get the scale calibration values for AXI ADC channel.
Definition: axi_adc_core.c:527
int32_t no_os_timer_remove(struct no_os_timer_desc *desc)
Free the memory allocated by timer_init().
Definition: no_os_timer.c:91
uint32_t slave_base
Definition: axi_adc_core.h:157
int32_t no_os_irq_unregister_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
Unregisters a generic IRQ handling function.
Definition: no_os_irq.c:118
int(* write)(struct no_os_mdio_desc *, uint32_t, uint16_t)
Definition: no_os_mdio.h:100
struct no_os_dma_platform_ops * platform_ops
Definition: no_os_dma.h:150
no_os_irq_trig_level
Definition: no_os_irq.h:82
void no_os_spibus_remove(uint32_t bus_number)
Removes SPI bus instance.
Definition: no_os_spi.c:139
uint8_t num_channels
Definition: axi_adc_core.h:155
#define AXI_ADC_REG_CHAN_STATUS(c)
Definition: axi_adc_core.h:95
const struct no_os_irq_platform_ops * platform_ops
Definition: no_os_irq.h:133
Header file for MDIO interface driver.
int32_t no_os_timer_start(struct no_os_timer_desc *desc)
Start a timer.
Definition: no_os_timer.c:110
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:165
struct no_os_spi_desc * parent
Definition: no_os_spi.h:147
struct no_os_dma_desc * desc
Definition: no_os_dma.h:66
int32_t no_os_gpio_direction_input(struct no_os_gpio_desc *desc)
Enable the input direction of the specified GPIO.
Definition: no_os_gpio.c:130
int no_os_dma_chan_lock(struct no_os_dma_ch *ch)
Lock a DMA channel, so it won't be acquired even if it's free.
Definition: no_os_dma.c:323
Init parameter for TRNG.
Definition: no_os_trng.h:76
const struct no_os_irq_platform_ops * platform_ops
Definition: no_os_irq.h:117
struct no_os_i2cbus_desc * bus
Definition: no_os_i2c.h:109
int(* init)(struct no_os_mdio_desc **, struct no_os_mdio_init_param *)
Definition: no_os_mdio.h:98
int32_t axi_adc_init_finish(struct axi_adc *adc)
Begin AXI ADC Initialization.
Definition: axi_adc_core.c:618
#define AXI_ADC_REG_CHAN_CNTRL(c)
Definition: axi_adc_core.h:85
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
It's used to setup a generic DMA transfer.
Definition: no_os_dma.h:77
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:117
int32_t no_os_axi_io_read(uint32_t base, uint32_t offset, uint32_t *data)
AXI IO Altera specific read function.
Definition: altera_axi_io.c:59
void * xfer_complete_ctx
Definition: no_os_dma.h:95
int32_t no_os_timer_get_elapsed_time_nsec(struct no_os_timer_desc *desc, uint64_t *elapsed_time)
Get the elapsed time in nsec for the timer.
Definition: no_os_timer.c:215
int32_t no_os_pwm_get_phase(struct no_os_pwm_desc *desc, uint32_t *phase_ns)
Get the PWM phase value.
Definition: no_os_pwm.c:229
uint32_t ref
Definition: no_os_dma.h:161
int32_t no_os_irq_register_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback)
Register a callback to handle the irq events.
Definition: no_os_irq.c:98
void(* xfer_complete_cb)(struct no_os_dma_xfer_desc *, struct no_os_dma_xfer_desc *, void *)
Definition: no_os_dma.h:88
#define UART_MAX_NUMBER
Definition: no_os_uart.h:54
const struct no_os_timer_platform_ops * platform_ops
Definition: no_os_timer.h:97
struct no_os_irq_ctrl_desc * irq_ctrl
Definition: no_os_dma.h:157
void * handle
Definition: no_os_irq.h:158
int32_t no_os_gpio_get_value(struct no_os_gpio_desc *desc, uint8_t *value)
Get the value of the specified GPIO.
Definition: no_os_gpio.c:227
int32_t no_os_pwm_get_duty_cycle(struct no_os_pwm_desc *desc, uint32_t *duty_cycle_ns)
Get the PWM duty cycle.
Definition: no_os_pwm.c:193
uint32_t num_ch
Definition: no_os_dma.h:146
int32_t axi_adc_get_calib_phase(struct axi_adc *adc, uint32_t chan, int32_t *val, int32_t *val2)
Get the phase calibration values for AXI ADC channel.
Definition: axi_adc_core.c:455
int32_t no_os_irq_clear_pending(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Clear the pending interrupt.
Definition: no_os_irq.c:241
@ AXI_ADC_PN_CUSTOM
Definition: axi_adc_core.h:169
void(* callback)(void *context)
Definition: no_os_irq.h:150
int32_t no_os_spibus_init(const struct no_os_spi_init_param *param)
Initialize the SPI bus communication peripheral.
Definition: no_os_spi.c:94
int no_os_mdio_read(struct no_os_mdio_desc *desc, uint32_t reg, uint16_t *val)
Read a register using MDIO.
Definition: no_os_mdio.c:116
int32_t no_os_timer_counter_get(struct no_os_timer_desc *desc, uint32_t *counter)
Get the value of the counter register for the timer.
Definition: no_os_timer.c:144
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:102
uint32_t no_os_uart_get_errors(struct no_os_uart_desc *desc)
Check if errors occurred on UART.
Definition: no_os_uart.c:106
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:122
bool free
Definition: no_os_dma.h:117
int32_t no_os_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Initialize the IRQ interrupts.
Definition: no_os_irq.c:51
#define AXI_ADC_FORMAT_ENABLE
Definition: axi_adc_core.h:91
int32_t no_os_list_remove(struct no_os_list_desc *list_desc)
@ NO_OS_EVT_DMA_TX_COMPLETE
Definition: no_os_irq.h:78
int32_t no_os_timer_counter_set(struct no_os_timer_desc *desc, uint32_t new_val)
Set the timer counter register value.
Definition: no_os_timer.c:162
Structure representing an PWM generator device.
Definition: no_os_pwm.h:99
uint32_t max_speed_hz
Definition: no_os_spi.h:162
int32_t no_os_list_read_first(struct no_os_list_desc *list_desc, void **data)
irq_id
Interrupts IDs supported by the irq driver.
Definition: aducm3029_irq.h:68
Structure holding I2C address descriptor.
Definition: no_os_i2c.h:107
#define I2C_MAX_BUS_NUMBER
Definition: no_os_i2c.h:53
int32_t axi_adc_delay_calibrate(struct axi_adc *adc, uint32_t no_of_lanes, enum axi_adc_pn_sel sel)
Calibrate Delay using specific PN sequence.
Definition: axi_adc_core.c:248
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:58
int32_t axi_adc_pn_mon(struct axi_adc *adc, enum axi_adc_pn_sel sel, uint32_t delay_ms)
Monitor the AXI ADC PN Sequence.
Definition: axi_adc_core.c:142
void * extra
Definition: no_os_i2c.h:99
int32_t axi_adc_get_calib_scale(struct axi_adc *adc, uint32_t chan, int32_t *val, int32_t *val2)
Get the scale calibration values for AXI ADC channel.
Definition: axi_adc_core.c:487
enum no_os_irq_event event
Definition: no_os_irq.h:154
uint32_t device_id
Definition: no_os_i2c.h:93
void axi_adc_idelay_set(struct axi_adc *adc, uint32_t lane, uint32_t val)
Set input/output delay primitive for specific interface line.
Definition: axi_adc_core.c:198
int32_t no_os_spi_transfer_dma_sync(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
Transfer a list of messages using DMA and busy wait for the completion.
Definition: no_os_spi.c:230
void * no_os_malloc(size_t size)
Allocate memory and return a pointer to it.
Definition: chibios_alloc.c:49
Structure holding the parameters for timer initialization.
Definition: no_os_timer.h:89
int32_t no_os_uart_write_nonblocking(struct no_os_uart_desc *desc, const uint8_t *data, uint32_t bytes_number)
Write to UART non-blocking.
Definition: no_os_uart.c:202
Header file of I2C Interface.
uint32_t max_speed_hz
Definition: no_os_spi.h:135
int32_t no_os_eeprom_remove(struct no_os_eeprom_desc *desc)
Free the resources allocated by no_os_eeprom_init()
Definition: no_os_eeprom.c:76
int32_t axi_adc_set_calib_bias(struct axi_adc *adc, uint32_t chan, int32_t val, int32_t val2)
Calibrate bias for specific AXI ADC channel.
Definition: axi_adc_core.c:503
Header file of PWM Interface.
@ NO_OS_EVT_DMA_RX_COMPLETE
Definition: no_os_irq.h:76
@ AXI_ADC_PN7
Definition: axi_adc_core.h:165
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:97
int32_t axi_adc_update_active_channels(struct axi_adc *adc, uint32_t mask)
Update active AXI ADC channels.
Definition: axi_adc_core.c:545
int32_t no_os_pwm_set_phase(struct no_os_pwm_desc *desc, uint32_t phase_ns)
Set the PWM phase value.
Definition: no_os_pwm.c:211
int32_t axi_adc_set_calib_scale(struct axi_adc *adc, uint32_t chan, int32_t val, int32_t val2)
Calibrate scale for specific AXI ADC channel.
Definition: axi_adc_core.c:471
#define AXI_ADC_REG_CLK_FREQ
Definition: axi_adc_core.h:63
int32_t axi_adc_set_pnsel(struct axi_adc *adc, uint32_t chan, enum axi_adc_pn_sel sel)
Set AXI ADC PN sequence.
Definition: axi_adc_core.c:121
int32_t axi_adc_get_calib_bias(struct axi_adc *adc, uint32_t chan, int32_t *val, int32_t *val2)
Get the scale calibration values for AXI ADC channel.
Definition: axi_adc_core.c:527
struct no_os_spibus_desc * bus
Definition: no_os_spi.h:179
uint64_t clock_hz
Definition: axi_adc_core.h:140
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:75
MDIO device descriptor created with no_os_mdio_init().
Definition: no_os_mdio.h:84
void no_os_uart_stdio(struct no_os_uart_desc *desc)
Definition: no_os_uart.c:222
void * extra
Definition: no_os_spi.h:170
void * mutex
Definition: no_os_i2c.h:89
@ AXI_ADC_PN23A
Definition: axi_adc_core.h:164
const struct no_os_uart_platform_ops * platform_ops
Definition: no_os_uart.h:131
@ AXI_ADC_PN15
Definition: axi_adc_core.h:166
int32_t axi_adc_init(struct axi_adc **adc_core, const struct axi_adc_init *init)
AXI ADC Main Initialization.
Definition: axi_adc_core.c:647
uint32_t slave_base
Definition: axi_adc_core.h:134
#define AXI_ADC_MMCM_RSTN
Definition: axi_adc_core.h:52
int32_t axi_adc_set_calib_phase_scale(struct axi_adc *adc, uint32_t phase, uint32_t chan, int32_t val, int32_t val2)
Calibrate phase for specific AXI ADC channel.
Definition: axi_adc_core.c:335
#define AXI_ADC_DCFILT_OFFSET(x)
Definition: axi_adc_core.h:101
int32_t no_os_i2c_remove(struct no_os_i2c_desc *desc)
Free the resources allocated by no_os_i2c_init().
Definition: no_os_i2c.c:119
Structure holding the parameters for I2C initialization.
Definition: no_os_i2c.h:70
#define NULL
Definition: wrapper.h:64
const struct no_os_trng_platform_ops * platform_ops
Definition: no_os_trng.h:67
Structure holding the parameters for UART initialization.
Definition: no_os_uart.h:116
@ AXI_ADC_PN31
Definition: axi_adc_core.h:168
int32_t no_os_timer_count_clk_set(struct no_os_timer_desc *desc, uint32_t freq_hz)
Set the timer clock frequency.
Definition: no_os_timer.c:197
int32_t no_os_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc)
Free the resources allocated by no_os_irq_ctrl_init().
Definition: no_os_irq.c:77
int no_os_trng_init(struct no_os_trng_desc **desc, const struct no_os_trng_init_param *param)
Initialize the TRNG.
Definition: no_os_trng.c:58
uint8_t addr
Definition: no_os_mdio.h:73
int32_t axi_adc_init_finish(struct axi_adc *adc)
Begin AXI ADC Initialization.
Definition: axi_adc_core.c:618
int32_t no_os_uart_read(struct no_os_uart_desc *desc, uint8_t *data, uint32_t bytes_number)
Read data from UART.
Definition: no_os_uart.c:124
Structure holding the initial parameters for Interrupt Request.
Definition: no_os_irq.h:113
int32_t no_os_i2cbus_init(const struct no_os_i2c_init_param *param)
Initialize the i2c bus communication peripheral.
Definition: no_os_i2c.c:92
int no_os_dma_xfer_start(struct no_os_dma_desc *desc, struct no_os_dma_ch *ch)
Acquire a channel and configure the list of transfers.
Definition: no_os_dma.c:362
int32_t axi_adc_remove(struct axi_adc *adc)
AXI ADC Resources deallocation.
Definition: axi_adc_core.c:687
uint8_t slave_number
Definition: no_os_i2c.h:91
#define AXI_ADC_REG_CHAN_CNTRL_1(c)
Definition: axi_adc_core.h:100
void no_os_mutex_remove(void *mutex)
Function for removing the initialized mutex. This function is responsible to remove the allocated mut...
Definition: freertos_mutex.c:87
uint8_t device_id
Definition: no_os_uart.h:118
int32_t axi_adc_get_calib_phase(struct axi_adc *adc, uint32_t chan, int32_t *val, int32_t *val2)
Get the phase calibration values for AXI ADC channel.
Definition: axi_adc_core.c:455
Structure holding the parameters for TDM initialization.
Definition: no_os_tdm.h:63
void no_os_mutex_lock(void *mutex)
Function for locking mutex.
Definition: freertos_mutex.c:66
int32_t no_os_axi_io_write(uint32_t base, uint32_t offset, uint32_t data)
AXI IO Altera specific write function.
Definition: altera_axi_io.c:73
int32_t axi_adc_init_begin(struct axi_adc **adc_core, const struct axi_adc_init *init)
Begin AXI ADC Initialization.
Definition: axi_adc_core.c:593
void * mutex
Definition: no_os_timer.h:65
const struct no_os_spi_platform_ops * platform_ops
Definition: no_os_spi.h:190
int32_t no_os_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Enable specific interrupt.
Definition: no_os_irq.c:187
struct no_os_platform_spi_delays platform_delays
Definition: no_os_spi.h:191
@ AXI_ADC_PN_RAMP_NIBBLE
Definition: axi_adc_core.h:170
Header file of GPIO Interface.
@ MEM_TO_DEV
Definition: no_os_dma.h:57
int32_t no_os_irq_global_disable(struct no_os_irq_ctrl_desc *desc)
Disable global interrupts.
Definition: no_os_irq.c:150
int no_os_mdio_remove(struct no_os_mdio_desc *desc)
Free the resources allocated by no_os_mdio_init().
Definition: no_os_mdio.c:76
@ NO_OS_LIST_QUEUE
Definition: no_os_list.h:211
const struct no_os_trng_platform_ops * platform_ops
Definition: no_os_trng.h:82
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:78
int32_t no_os_tdm_pause(struct no_os_tdm_desc *desc)
Pause TDM DMA transfer.
Definition: no_os_tdm.c:94
int32_t no_os_uart_write(struct no_os_uart_desc *desc, const uint8_t *data, uint32_t bytes_number)
Write to UART.
Definition: no_os_uart.c:150
int32_t no_os_tdm_read(struct no_os_tdm_desc *desc, void *data, uint16_t nb_samples)
Read data using the TDM interface.
Definition: no_os_tdm.c:82
uint32_t base
Definition: axi_adc_core.h:132
Header file of UART interface.
int32_t no_os_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Disable specific interrupt.
Definition: no_os_irq.c:204
SPI bus descriptor.
Definition: no_os_spi.h:154
int32_t no_os_gpio_get(struct no_os_gpio_desc **desc, const struct no_os_gpio_init_param *param)
Obtain the GPIO decriptor.
Definition: no_os_gpio.c:55
int32_t axi_adc_pn_mon(struct axi_adc *adc, enum axi_adc_pn_sel sel, uint32_t delay_ms)
Monitor the AXI ADC PN Sequence.
Definition: axi_adc_core.c:142
const struct no_os_pwm_platform_ops * platform_ops
Definition: no_os_pwm.h:90
int32_t no_os_list_add_last(struct no_os_list_desc *list_desc, void *data)
struct no_os_dma_ch * channels
Definition: no_os_dma.h:148
int32_t axi_adc_delay_set(struct axi_adc *adc, uint32_t no_of_lanes, uint32_t delay)
Set input/output delay primitive for number of lines.
Definition: axi_adc_core.c:213
int32_t no_os_list_init(struct no_os_list_desc **list_desc, enum no_os_adapter_type type, f_cmp comparator)
Structure holding timer descriptor.
Definition: no_os_timer.h:63
Header file of utility functions.
int32_t no_os_gpio_get_direction(struct no_os_gpio_desc *desc, uint8_t *direction)
Get the direction of the specified GPIO.
Definition: no_os_gpio.c:178
int32_t axi_adc_set_calib_bias(struct axi_adc *adc, uint32_t chan, int32_t val, int32_t val2)
Calibrate bias for specific AXI ADC channel.
Definition: axi_adc_core.c:503
int32_t no_os_eeprom_read(struct no_os_eeprom_desc *desc, uint32_t address, uint8_t *data, uint16_t bytes)
Read the EEPROM data.
Definition: no_os_eeprom.c:115
Structure holding the parameters for EEPROM initialization.
Definition: no_os_eeprom.h:64
axi_adc_pn_sel
Definition: axi_adc_core.h:162
Header file of TDM Interface.
bool no_os_dma_is_completed(struct no_os_dma_desc *desc, struct no_os_dma_ch *ch)
Get the state of a DMA channel (free or not).
Definition: no_os_dma.c:423
struct no_os_callback_desc cb_desc
Definition: no_os_dma.h:123
void * extra
Definition: no_os_spi.h:145
int32_t no_os_pwm_set_period(struct no_os_pwm_desc *desc, uint32_t period_ns)
Set the PWM period value.
Definition: no_os_pwm.c:139
int32_t axi_adc_set_calib_scale(struct axi_adc *adc, uint32_t chan, int32_t val, int32_t val2)
Calibrate scale for specific AXI ADC channel.
Definition: axi_adc_core.c:471
int32_t no_os_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Disable specific interrupt.
Definition: no_os_irq.c:204
const struct no_os_tdm_platform_ops * platform_ops
Definition: no_os_tdm.h:102
int32_t no_os_pwm_remove(struct no_os_pwm_desc *desc)
Free the resources allocated by no_os_pwm_init().
Definition: no_os_pwm.c:85
void * mutex
Definition: no_os_dma.h:129
int32_t no_os_tdm_resume(struct no_os_tdm_desc *desc)
Resume TDM DMA transfer.
Definition: no_os_tdm.c:104
int32_t no_os_eeprom_init(struct no_os_eeprom_desc **desc, const struct no_os_eeprom_init_param *param)
Initialize the EEPROM.
Definition: no_os_eeprom.c:51
uint32_t mask
Definition: axi_adc_core.h:142
int32_t no_os_uart_remove(struct no_os_uart_desc *desc)
Free the resources allocated by no_os_uart_init().
Definition: no_os_uart.c:87
int32_t axi_slave_adc_write(struct axi_adc *adc, uint32_t reg_addr, uint32_t reg_data)
Slave AXI ADC Data Write.
Definition: axi_adc_core.c:107
Definition: no_os_irq.h:129
#define AXI_ADC_FORMAT_SIGNEXT
Definition: axi_adc_core.h:89
uint32_t device_id
Definition: no_os_i2c.h:72
bool sync_lock
Definition: no_os_dma.h:135
int32_t no_os_tdm_init(struct no_os_tdm_desc **desc, const struct no_os_tdm_init_param *param)
Initialize the TDM communication peripheral.
Definition: no_os_tdm.c:51
#define AXI_ADC_ADC_PN_SEL(x)
Definition: axi_adc_core.h:113
int32_t axi_adc_get_sampling_freq(struct axi_adc *adc, uint32_t chan, uint64_t *sampling_freq)
Get the AXI ADC Sampling Frequency.
Definition: axi_adc_core.c:177
const char * name
Definition: axi_adc_core.h:151
int32_t no_os_irq_trigger_level_set(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level trig)
Set interrupt trigger level.
Definition: no_os_irq.c:168
@ AXI_ADC_PN9
Definition: axi_adc_core.h:163
Error macro definition for ARM Compiler.
int32_t no_os_pwm_set_polarity(struct no_os_pwm_desc *desc, enum no_os_pwm_polarity polarity)
Set the PWM polarity.
Definition: no_os_pwm.c:249
int32_t no_os_pwm_get_period(struct no_os_pwm_desc *desc, uint32_t *period_ns)
Get the PWM period value.
Definition: no_os_pwm.c:157
Platform independent function definitions and data types for the DMA API.
int32_t no_os_timer_stop(struct no_os_timer_desc *desc)
Stop a timer from counting.
Definition: no_os_timer.c:126
int32_t no_os_pwm_enable(struct no_os_pwm_desc *desc)
Enable PWM signal generation.
Definition: no_os_pwm.c:104
struct no_os_mdio_ops * ops
Definition: no_os_mdio.h:88
const struct no_os_pwm_platform_ops * platform_ops
Definition: no_os_pwm.h:121
#define AXI_ADC_TO_IQCOR_COEFF_2(x)
Definition: axi_adc_core.h:110
struct no_os_list_desc * sg_list
Definition: no_os_dma.h:119
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131
int32_t no_os_gpio_set_value(struct no_os_gpio_desc *desc, uint8_t value)
Set the value of the specified GPIO.
Definition: no_os_gpio.c:203
enum no_os_irq_peripheral periph
Definition: no_os_dma.h:103
Describes the state of the DMA controller.
Definition: no_os_dma.h:142
int32_t no_os_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable global interrupts.
Definition: no_os_irq.c:135
int32_t no_os_pwm_get_polarity(struct no_os_pwm_desc *desc, enum no_os_pwm_polarity *polarity)
Get the PWM polarity.
Definition: no_os_pwm.c:269
@ AXI_ADC_PN23
Definition: axi_adc_core.h:167