Go to the documentation of this file.
33 #ifndef AXI_ADC_CORE_H_
34 #define AXI_ADC_CORE_H_
45 #define AXI_ADC_REG_RSTN 0x0040
46 #define AXI_ADC_MMCM_RSTN NO_OS_BIT(1)
47 #define AXI_ADC_RSTN NO_OS_BIT(0)
49 #define AXI_ADC_REG_CNTRL 0x0044
50 #define AXI_ADC_R1_MODE NO_OS_BIT(2)
51 #define AXI_ADC_DDR_EDGESEL NO_OS_BIT(1)
52 #define AXI_ADC_PIN_MODE NO_OS_BIT(0)
54 #define AXI_ADC_REG_CNTRL_3 0x004C
55 #define AXI_ADC_CRC_EN NO_OS_BIT(8)
57 #define AXI_ADC_REG_CLK_FREQ 0x0054
58 #define AXI_ADC_CLK_FREQ(x) (((x) & 0xFFFFFFFF) << 0)
59 #define AXI_ADC_TO_CLK_FREQ(x) (((x) >> 0) & 0xFFFFFFFF)
61 #define AXI_ADC_REG_CLK_RATIO 0x0058
62 #define AXI_ADC_CLK_RATIO(x) (((x) & 0xFFFFFFFF) << 0)
63 #define AXI_ADC_TO_CLK_RATIO(x) (((x) >> 0) & 0xFFFFFFFF)
65 #define AXI_ADC_REG_STATUS 0x005C
66 #define AXI_ADC_MUX_PN_ERR NO_OS_BIT(3)
67 #define AXI_ADC_MUX_PN_OOS NO_OS_BIT(2)
68 #define AXI_ADC_MUX_OVER_RANGE NO_OS_BIT(1)
69 #define AXI_ADC_STATUS NO_OS_BIT(0)
71 #define AXI_ADC_REG_DELAY_CNTRL 0x0060
72 #define ADC_DELAY_SEL NO_OS_BIT(17)
73 #define ADC_DELAY_RWN NO_OS_BIT(16)
74 #define ADC_DELAY_ADDRESS(x) (((x) & 0xFF) << 8)
75 #define ADC_TO_DELAY_ADDRESS(x) (((x) >> 8) & 0xFF)
76 #define ADC_DELAY_WDATA(x) (((x) & 0x1F) << 0)
77 #define ADC_TO_DELAY_WDATA(x) (((x) >> 0) & 0x1F)
79 #define AXI_ADC_REG_CHAN_CNTRL(c) (0x0400 + (c) * 0x40)
80 #define AXI_ADC_PN_SEL NO_OS_BIT(10)
81 #define AXI_ADC_IQCOR_ENB NO_OS_BIT(9)
82 #define AXI_ADC_DCFILT_ENB NO_OS_BIT(8)
83 #define AXI_ADC_FORMAT_SIGNEXT NO_OS_BIT(6)
84 #define AXI_ADC_FORMAT_TYPE NO_OS_BIT(5)
85 #define AXI_ADC_FORMAT_ENABLE NO_OS_BIT(4)
86 #define AXI_ADC_PN23_TYPE NO_OS_BIT(1)
87 #define AXI_ADC_ENABLE NO_OS_BIT(0)
89 #define AXI_ADC_REG_CHAN_STATUS(c) (0x0404 + (c) * 0x40)
90 #define AXI_ADC_PN_ERR NO_OS_BIT(2)
91 #define AXI_ADC_PN_OOS NO_OS_BIT(1)
92 #define AXI_ADC_OVER_RANGE NO_OS_BIT(0)
94 #define AXI_ADC_REG_CHAN_CNTRL_1(c) (0x0410 + (c) * 0x40)
95 #define AXI_ADC_DCFILT_OFFSET(x) (((x) & 0xFFFFL) << 16)
96 #define AXI_ADC_TO_DCFILT_OFFSET(x) (((x) >> 16) & 0xFFFF)
97 #define AXI_ADC_DCFILT_COEFF(x) (((x) & 0xFFFF) << 0)
98 #define AXI_ADC_TO_DCFILT_COEFF(x) (((x) >> 0) & 0xFFFF)
100 #define AXI_ADC_REG_CHAN_CNTRL_2(c) (0x0414 + (c) * 0x40)
101 #define AXI_ADC_IQCOR_COEFF_1(x) (((x) & 0xFFFFL) << 16)
102 #define AXI_ADC_TO_IQCOR_COEFF_1(x) (((x) >> 16) & 0xFFFF)
103 #define AXI_ADC_IQCOR_COEFF_2(x) (((x) & 0xFFFF) << 0)
104 #define AXI_ADC_TO_IQCOR_COEFF_2(x) (((x) >> 0) & 0xFFFF)
106 #define AXI_ADC_REG_CHAN_CNTRL_3(c) (0x0418 + (c) * 0x40)
107 #define AXI_ADC_ADC_PN_SEL(x) (((x) & 0xF) << 16)
108 #define AXI_ADC_TO_ADC_PN_SEL(x) (((x) >> 16) & 0xF)
109 #define AXI_ADC_ADC_DATA_SEL(x) (((x) & 0xF) << 0)
110 #define AXI_ADC_TO_ADC_DATA_SEL(x) (((x) >> 0) & 0xF)
112 #define AXI_ADC_REG_DELAY(l) (0x0800 + (l) * 0x4)
208 uint32_t no_of_lanes,
212 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:143
const struct no_os_eeprom_platform_ops * platform_ops
Definition: no_os_eeprom.h:61
uint32_t irq_priority
Definition: no_os_dma.h:91
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:55
@ AXI_ADC_PN_END
Definition: axi_adc_core.h:166
void * mutex
Definition: no_os_pwm.h:95
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:42
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:169
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:242
Structure holding I2C bus descriptor.
Definition: no_os_i2c.h:81
uint8_t num_slave_channels
Definition: axi_adc_core.h:132
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:79
const struct no_os_uart_platform_ops * platform_ops
Definition: no_os_uart.h:145
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:185
Structure containing the init parameters needed by the PWM generator.
Definition: no_os_pwm.h:66
int32_t no_os_pwm_disable(struct no_os_pwm_desc *desc)
Disable PWM signal generation.
Definition: no_os_pwm.c:115
Parameters for an MDIO slave.
Definition: no_os_mdio.h:60
void * mutex
Definition: no_os_spi.h:169
bool c45
Definition: no_os_mdio.h:65
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:57
void(* sg_handler)(void *)
Definition: no_os_dma.h:164
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:51
int(* remove)(struct no_os_mdio_desc *)
Definition: no_os_mdio.h:98
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:90
IRQ parameter for the default inter transfer handler.
Definition: no_os_dma.h:59
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:384
#define SPI_MAX_BUS_NUMBER
Definition: no_os_spi.h:49
void no_os_i2cbus_remove(uint32_t bus_number)
Removes i2c bus instance.
Definition: no_os_i2c.c:131
Structure holding the EEPROM descriptor.
Definition: no_os_eeprom.h:70
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:44
enum no_os_spi_bit_order bit_order
Definition: no_os_spi.h:150
int32_t axi_adc_update_active_channels(struct axi_adc *adc, uint32_t mask)
Update active AXI ADC channels.
Definition: axi_adc_core.c:539
struct no_os_dma_default_handler_data irq_ctx
Definition: no_os_dma.h:119
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:64
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:115
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:170
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:433
uint64_t sampling_freq
Definition: headless.c:73
Structure describing a callback to be registered.
Definition: no_os_irq.h:142
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:120
Header file of SPI Interface.
uint16_t id
Definition: no_os_timer.h:85
Initialization parameter for the DMA controller.
Definition: no_os_dma.h:171
uint32_t id
Definition: no_os_dma.h:109
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:92
int(* read)(struct no_os_mdio_desc *, uint32_t, uint16_t *)
Definition: no_os_mdio.h:96
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:52
void * mutex
Definition: no_os_uart.h:136
AXI ADC Initialization Parameters structure.
Definition: axi_adc_core.h:143
uint32_t id
Definition: no_os_pwm.h:97
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:434
struct no_os_mdio_ops * ops
Definition: no_os_mdio.h:69
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:71
enum no_os_spi_mode mode
Definition: no_os_spi.h:177
enum no_os_spi_bit_order bit_order
Definition: no_os_spi.h:179
#define AXI_ADC_RSTN
Definition: axi_adc_core.h:47
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:184
#define TIMER_MAX_TABLE
Definition: no_os_timer.h:47
const struct no_os_timer_platform_ops * platform_ops
Definition: no_os_timer.h:67
Definition: no_os_spi.h:100
#define NO_OS_IS_ERR_VALUE(x)
Definition: no_os_error.h:50
uint32_t irq_num
Definition: no_os_dma.h:115
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:159
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:112
@ DEV_TO_MEM
Definition: no_os_dma.h:52
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:52
Header file for EEPROM APIs.
struct no_os_dma_platform_ops * platform_ops
Definition: no_os_dma.h:177
AXI ADC Device Descriptor.
Definition: axi_adc_core.h:122
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:90
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:148
const struct no_os_tdm_platform_ops * platform_ops
Definition: no_os_tdm.h:83
uint8_t slave_number
Definition: no_os_spi.h:171
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:75
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:587
#define AXI_ADC_REG_STATUS
Definition: axi_adc_core.h:65
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:181
@ AXI_ADC_PN_RAMP_16
Definition: axi_adc_core.h:165
int id
Definition: no_os_mdio.h:62
uint8_t num_slave_channels
Definition: axi_adc_core.h:153
int32_t number
Definition: no_os_gpio.h:83
const char * name
Definition: axi_adc_core.h:124
#define AXI_ADC_ENABLE
Definition: axi_adc_core.h:87
uint32_t id
Definition: no_os_pwm.h:68
#define AXI_ADC_TO_IQCOR_COEFF_1(x)
Definition: axi_adc_core.h:102
uint32_t device_id
Definition: no_os_spi.h:173
Timer control module header.
const struct no_os_spi_platform_ops * platform_ops
Definition: no_os_spi.h:183
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:54
#define NO_OS_ARRAY_SIZE(x)
Definition: no_os_util.h:49
no_os_pwm_polarity
Possible polarities of the PWM signal.
Definition: no_os_pwm.h:55
#define AXI_ADC_REG_CLK_RATIO
Definition: axi_adc_core.h:61
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:385
uint32_t base
Definition: axi_adc_core.h:147
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:248
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:207
uint8_t device_id
Definition: no_os_uart.h:138
const struct no_os_spi_platform_ops * platform_ops
Definition: no_os_spi.h:154
#define AXI_ADC_REG_DELAY(l)
Definition: axi_adc_core.h:112
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:95
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:641
enum no_os_irq_peripheral peripheral
Definition: no_os_irq.h:150
void * extra
Definition: no_os_i2c.h:74
#define AXI_ADC_REG_RSTN
Definition: axi_adc_core.h:45
const struct no_os_gpio_platform_ops * platform_ops
Definition: no_os_gpio.h:87
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:104
const struct no_os_eeprom_platform_ops * platform_ops
Definition: no_os_eeprom.h:73
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:216
uint32_t num_ch
Definition: no_os_dma.h:175
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:433
uint32_t device_id
Definition: no_os_spi.h:142
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:147
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:216
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:173
int32_t no_os_tdm_stop(struct no_os_tdm_desc *desc)
Stop TDM DMA transfer.
Definition: no_os_tdm.c:108
uint32_t max_speed_hz
Definition: no_os_i2c.h:89
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:126
Structure holding TDM descriptor.
Definition: no_os_tdm.h:92
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:171
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:336
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:216
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:242
int32_t axi_adc_remove(struct axi_adc *adc)
AXI ADC Resources deallocation.
Definition: axi_adc_core.c:681
uint8_t num_channels
Definition: axi_adc_core.h:130
Stucture holding the UART descriptor.
Definition: no_os_uart.h:134
#define AXI_ADC_IQCOR_COEFF_2(x)
Definition: axi_adc_core.h:103
TRNG Descriptor.
Definition: no_os_trng.h:59
uint32_t ref
Definition: no_os_irq.h:129
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:71
const struct no_os_gpio_platform_ops * platform_ops
Definition: no_os_gpio.h:104
void no_os_mutex_unlock(void *mutex)
Function for unlocking mutex.
#define AXI_ADC_IQCOR_COEFF_1(x)
Definition: axi_adc_core.h:101
struct no_os_platform_spi_delays platform_delays
Definition: no_os_spi.h:156
uint32_t max_speed_hz
Definition: no_os_i2c.h:68
struct no_os_dma_ch * channel
Definition: no_os_dma.h:61
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:89
#define AXI_ADC_REG_CHAN_CNTRL_3(c)
Definition: axi_adc_core.h:106
void * mutex
Definition: no_os_dma.h:157
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:190
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:481
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:87
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:192
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:55
#define AXI_ADC_TO_DCFILT_OFFSET(x)
Definition: axi_adc_core.h:96
Describes the state of a DMA channel.
Definition: no_os_dma.h:107
#define PWM_MAX_NUMBER
Definition: no_os_pwm.h:46
uint16_t id
Definition: no_os_timer.h:61
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:77
#define AXI_ADC_REG_CHAN_CNTRL_2(c)
Definition: axi_adc_core.h:100
void * ctx
Definition: no_os_irq.h:146
@ MEM_TO_MEM
Definition: no_os_dma.h:50
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:521
int32_t no_os_timer_remove(struct no_os_timer_desc *desc)
Free the memory allocated by timer_init().
Definition: no_os_timer.c:85
uint32_t slave_base
Definition: axi_adc_core.h:151
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:112
int(* write)(struct no_os_mdio_desc *, uint32_t, uint16_t)
Definition: no_os_mdio.h:94
struct no_os_dma_platform_ops * platform_ops
Definition: no_os_dma.h:144
no_os_irq_trig_level
Definition: no_os_irq.h:76
void no_os_spibus_remove(uint32_t bus_number)
Removes SPI bus instance.
Definition: no_os_spi.c:133
uint8_t num_channels
Definition: axi_adc_core.h:149
#define AXI_ADC_REG_CHAN_STATUS(c)
Definition: axi_adc_core.h:89
const struct no_os_irq_platform_ops * platform_ops
Definition: no_os_irq.h:127
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:104
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:159
struct no_os_spi_desc * parent
Definition: no_os_spi.h:160
struct no_os_dma_desc * desc
Definition: no_os_dma.h:60
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:124
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:317
Init parameter for TRNG.
Definition: no_os_trng.h:70
const struct no_os_irq_platform_ops * platform_ops
Definition: no_os_irq.h:111
struct no_os_i2cbus_desc * bus
Definition: no_os_i2c.h:103
int(* init)(struct no_os_mdio_desc **, struct no_os_mdio_init_param *)
Definition: no_os_mdio.h:92
int32_t axi_adc_init_finish(struct axi_adc *adc)
Begin AXI ADC Initialization.
Definition: axi_adc_core.c:612
#define AXI_ADC_REG_CHAN_CNTRL(c)
Definition: axi_adc_core.h:79
Structure holding SPI descriptor.
Definition: no_os_spi.h:192
It's used to setup a generic DMA transfer.
Definition: no_os_dma.h:71
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:111
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:53
void * xfer_complete_ctx
Definition: no_os_dma.h:89
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:209
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:223
uint32_t ref
Definition: no_os_dma.h:155
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:92
void(* xfer_complete_cb)(struct no_os_dma_xfer_desc *, struct no_os_dma_xfer_desc *, void *)
Definition: no_os_dma.h:82
#define UART_MAX_NUMBER
Definition: no_os_uart.h:48
const struct no_os_timer_platform_ops * platform_ops
Definition: no_os_timer.h:91
struct no_os_irq_ctrl_desc * irq_ctrl
Definition: no_os_dma.h:151
void * handle
Definition: no_os_irq.h:152
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:221
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:187
uint32_t num_ch
Definition: no_os_dma.h:140
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:449
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:235
@ AXI_ADC_PN_CUSTOM
Definition: axi_adc_core.h:163
void(* callback)(void *context)
Definition: no_os_irq.h:144
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:88
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:110
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:138
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:96
uint32_t no_os_uart_get_errors(struct no_os_uart_desc *desc)
Check if errors occurred on UART.
Definition: no_os_uart.c:100
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:116
bool free
Definition: no_os_dma.h:111
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:45
#define AXI_ADC_FORMAT_ENABLE
Definition: axi_adc_core.h:85
int32_t no_os_list_remove(struct no_os_list_desc *list_desc)
@ NO_OS_EVT_DMA_TX_COMPLETE
Definition: no_os_irq.h:72
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:156
Structure representing an PWM generator device.
Definition: no_os_pwm.h:93
uint32_t max_speed_hz
Definition: no_os_spi.h:175
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:62
Structure holding I2C address descriptor.
Definition: no_os_i2c.h:101
#define I2C_MAX_BUS_NUMBER
Definition: no_os_i2c.h:47
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:242
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:52
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:136
void * extra
Definition: no_os_i2c.h:93
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:481
enum no_os_irq_event event
Definition: no_os_irq.h:148
uint32_t device_id
Definition: no_os_i2c.h:87
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:192
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:224
void * no_os_malloc(size_t size)
Allocate memory and return a pointer to it.
Definition: chibios_alloc.c:43
Structure holding the parameters for timer initialization.
Definition: no_os_timer.h:83
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:196
Header file of I2C Interface.
uint32_t max_speed_hz
Definition: no_os_spi.h:144
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:70
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:497
Header file of PWM Interface.
@ NO_OS_EVT_DMA_RX_COMPLETE
Definition: no_os_irq.h:70
@ AXI_ADC_PN7
Definition: axi_adc_core.h:159
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:91
int32_t axi_adc_update_active_channels(struct axi_adc *adc, uint32_t mask)
Update active AXI ADC channels.
Definition: axi_adc_core.c:539
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:205
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:465
#define AXI_ADC_REG_CLK_FREQ
Definition: axi_adc_core.h:57
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:115
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:521
struct no_os_spibus_desc * bus
Definition: no_os_spi.h:194
uint64_t clock_hz
Definition: axi_adc_core.h:134
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:69
MDIO device descriptor created with no_os_mdio_init().
Definition: no_os_mdio.h:78
void no_os_uart_stdio(struct no_os_uart_desc *desc)
Definition: no_os_uart.c:216
void * extra
Definition: no_os_spi.h:185
void * mutex
Definition: no_os_i2c.h:83
@ AXI_ADC_PN23A
Definition: axi_adc_core.h:158
const struct no_os_uart_platform_ops * platform_ops
Definition: no_os_uart.h:125
@ AXI_ADC_PN15
Definition: axi_adc_core.h:160
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:641
uint32_t slave_base
Definition: axi_adc_core.h:128
#define AXI_ADC_MMCM_RSTN
Definition: axi_adc_core.h:46
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:329
#define AXI_ADC_DCFILT_OFFSET(x)
Definition: axi_adc_core.h:95
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:113
Structure holding the parameters for I2C initialization.
Definition: no_os_i2c.h:64
#define NULL
Definition: wrapper.h:64
const struct no_os_trng_platform_ops * platform_ops
Definition: no_os_trng.h:61
Structure holding the parameters for UART initialization.
Definition: no_os_uart.h:110
@ AXI_ADC_PN31
Definition: axi_adc_core.h:162
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:191
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:71
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:52
uint8_t addr
Definition: no_os_mdio.h:67
int32_t axi_adc_init_finish(struct axi_adc *adc)
Begin AXI ADC Initialization.
Definition: axi_adc_core.c:612
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:118
Structure holding the initial parameters for Interrupt Request.
Definition: no_os_irq.h:107
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:86
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:356
int32_t axi_adc_remove(struct axi_adc *adc)
AXI ADC Resources deallocation.
Definition: axi_adc_core.c:681
uint8_t slave_number
Definition: no_os_i2c.h:85
#define AXI_ADC_REG_CHAN_CNTRL_1(c)
Definition: axi_adc_core.h:94
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:81
uint8_t device_id
Definition: no_os_uart.h:112
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:449
Structure holding the parameters for TDM initialization.
Definition: no_os_tdm.h:57
void no_os_mutex_lock(void *mutex)
Function for locking mutex.
Definition: freertos_mutex.c:60
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:67
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:587
void * mutex
Definition: no_os_timer.h:59
const struct no_os_spi_platform_ops * platform_ops
Definition: no_os_spi.h:208
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:181
struct no_os_platform_spi_delays platform_delays
Definition: no_os_spi.h:210
@ AXI_ADC_PN_RAMP_NIBBLE
Definition: axi_adc_core.h:164
Header file of GPIO Interface.
@ MEM_TO_DEV
Definition: no_os_dma.h:51
int32_t no_os_irq_global_disable(struct no_os_irq_ctrl_desc *desc)
Disable global interrupts.
Definition: no_os_irq.c:144
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:70
@ NO_OS_LIST_QUEUE
Definition: no_os_list.h:205
const struct no_os_trng_platform_ops * platform_ops
Definition: no_os_trng.h:76
const struct no_os_i2c_platform_ops * platform_ops
Definition: no_os_i2c.h:72
int32_t no_os_tdm_pause(struct no_os_tdm_desc *desc)
Pause TDM DMA transfer.
Definition: no_os_tdm.c:88
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:144
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:76
uint32_t base
Definition: axi_adc_core.h:126
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:198
SPI bus descriptor.
Definition: no_os_spi.h:167
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:49
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:136
const struct no_os_pwm_platform_ops * platform_ops
Definition: no_os_pwm.h:84
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:142
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:207
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:57
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:172
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:497
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:109
Structure holding the parameters for EEPROM initialization.
Definition: no_os_eeprom.h:58
axi_adc_pn_sel
Definition: axi_adc_core.h:156
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:417
struct no_os_callback_desc cb_desc
Definition: no_os_dma.h:117
void * extra
Definition: no_os_spi.h:158
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:133
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:465
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:198
const struct no_os_tdm_platform_ops * platform_ops
Definition: no_os_tdm.h:96
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:79
void * mutex
Definition: no_os_dma.h:123
int32_t no_os_tdm_resume(struct no_os_tdm_desc *desc)
Resume TDM DMA transfer.
Definition: no_os_tdm.c:98
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:45
uint32_t mask
Definition: axi_adc_core.h:136
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:81
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:101
Definition: no_os_irq.h:123
#define AXI_ADC_FORMAT_SIGNEXT
Definition: axi_adc_core.h:83
uint32_t device_id
Definition: no_os_i2c.h:66
bool sync_lock
Definition: no_os_dma.h:129
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:45
#define AXI_ADC_ADC_PN_SEL(x)
Definition: axi_adc_core.h:107
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:171
const char * name
Definition: axi_adc_core.h:145
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:162
@ AXI_ADC_PN9
Definition: axi_adc_core.h:157
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:243
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:151
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:120
int32_t no_os_pwm_enable(struct no_os_pwm_desc *desc)
Enable PWM signal generation.
Definition: no_os_pwm.c:98
struct no_os_mdio_ops * ops
Definition: no_os_mdio.h:82
const struct no_os_pwm_platform_ops * platform_ops
Definition: no_os_pwm.h:115
#define AXI_ADC_TO_IQCOR_COEFF_2(x)
Definition: axi_adc_core.h:104
struct no_os_list_desc * sg_list
Definition: no_os_dma.h:113
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:140
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:197
enum no_os_irq_peripheral periph
Definition: no_os_dma.h:97
Describes the state of the DMA controller.
Definition: no_os_dma.h:136
int32_t no_os_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable global interrupts.
Definition: no_os_irq.c:129
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:263
@ AXI_ADC_PN23
Definition: axi_adc_core.h:161