7#ifndef AD9361_EXT_BAND_CTRL_H_
8#define AD9361_EXT_BAND_CTRL_H_
20#define AD9361_EXT_BAND_MAX_GPIOS 32
23#define AD9361_EXT_BAND_MAX_SETTINGS 64
29#define AD9361_EXT_BAND_NO_PORT_SEL ((uint32_t)-1)
141 uint32_t gpio_idx, uint32_t op);
int32_t ad9361_adjust_rx_ext_band_settings(struct ad9361_rf_phy *phy, uint64_t freq)
Switch RX band for a new LO frequency. Called automatically from ad9361_rfpll_set_rate() on every RX ...
Definition ad9361_ext_band_ctrl.c:511
void ad9361_band_setting_set_rx_port(struct ad9361_band_setting *s, uint32_t port)
Set the RX RF port for this band.
Definition ad9361_ext_band_ctrl.c:336
int ad9361_ext_band_ctl_add_gpio(struct ad9361_ext_band_ctl *ctl, struct no_os_gpio_desc *gpio)
Register a GPIO with the controller. GPIOs are referenced by add order (0 = first added).
Definition ad9361_ext_band_ctrl.c:407
struct ad9361_band_setting * ad9361_band_setting_alloc(const char *name, uint64_t freq_min, uint64_t freq_max, uint32_t ngpios)
Allocate a band setting descriptor.
Definition ad9361_ext_band_ctrl.c:244
void ad9361_unregister_ext_band_control(struct ad9361_rf_phy *phy)
Detach the controller from a PHY. Does not free anything.
Definition ad9361_ext_band_ctrl.c:497
void ad9361_band_setting_free(struct ad9361_band_setting *s)
Release a band setting and its sub-sequences.
Definition ad9361_ext_band_ctrl.c:290
#define AD9361_EXT_BAND_MAX_GPIOS
Definition ad9361_ext_band_ctrl.h:20
struct ad9361_ext_band_ctl * ad9361_ext_band_ctl_alloc(void)
Allocate an external band controller.
Definition ad9361_ext_band_ctrl.c:371
int32_t ad9361_register_ext_band_control(struct ad9361_rf_phy *phy, struct ad9361_ext_band_ctl *ctl)
Attach a controller to a PHY.
Definition ad9361_ext_band_ctrl.c:475
void ad9361_ext_band_ctl_free(struct ad9361_ext_band_ctl *ctl)
Release a controller and all registered settings. GPIO descriptors are NOT freed – the caller owns th...
Definition ad9361_ext_band_ctrl.c:382
void ad9361_band_setting_set_delay(struct ad9361_band_setting *s, uint32_t delay_us)
Set the post-step delay (microseconds).
Definition ad9361_ext_band_ctrl.c:360
int ad9361_ext_band_ctl_add_rx_setting(struct ad9361_ext_band_ctl *ctl, struct ad9361_band_setting *s)
Append an RX band setting. Settings are matched first-to-last; the first frequency match wins.
Definition ad9361_ext_band_ctrl.c:428
void ad9361_band_setting_set_tx_port(struct ad9361_band_setting *s, uint32_t port)
Set the TX RF port for this band.
Definition ad9361_ext_band_ctrl.c:348
int ad9361_band_setting_set_gpio(struct ad9361_band_setting *s, uint32_t gpio_idx, uint32_t op)
Set the operation for one GPIO pin.
Definition ad9361_ext_band_ctrl.c:322
int ad9361_ext_band_ctl_add_tx_setting(struct ad9361_ext_band_ctl *ctl, struct ad9361_band_setting *s)
Append a TX band setting. Settings are matched first-to-last; the first frequency match wins.
Definition ad9361_ext_band_ctrl.c:452
ad9361_ext_band_ctl_op
Definition ad9361_ext_band_ctrl.h:37
@ AD9361_EXT_BAND_CTL_OP_LOW
Definition ad9361_ext_band_ctrl.h:39
@ AD9361_EXT_BAND_CTL_OP_HIGH
Definition ad9361_ext_band_ctrl.h:41
@ AD9361_EXT_BAND_CTL_OP_INPUT
Definition ad9361_ext_band_ctrl.h:43
@ AD9361_EXT_BAND_CTL_OP_NOP
Definition ad9361_ext_band_ctrl.h:45
int32_t ad9361_adjust_tx_ext_band_settings(struct ad9361_rf_phy *phy, uint64_t freq)
Switch TX band for a new LO frequency.
Definition ad9361_ext_band_ctrl.c:543
void delay_us(unsigned int usec)
Definition maxim_usb_uart.c:86
Header file of GPIO Interface.
Definition ad9361_ext_band_ctrl.h:60
uint32_t * gpio_values
Definition ad9361_ext_band_ctrl.h:74
struct ad9361_band_setting * pre_seq
Definition ad9361_ext_band_ctrl.h:97
uint64_t freq_min
Definition ad9361_ext_band_ctrl.h:65
uint64_t freq_max
Definition ad9361_ext_band_ctrl.h:67
uint32_t rf_tx_output_sel
Definition ad9361_ext_band_ctrl.h:88
uint32_t ngpios
Definition ad9361_ext_band_ctrl.h:76
uint32_t post_seq_len
Definition ad9361_ext_band_ctrl.h:102
uint32_t rf_rx_input_sel
Definition ad9361_ext_band_ctrl.h:82
const char * name
Definition ad9361_ext_band_ctrl.h:62
struct ad9361_band_setting * post_seq
Definition ad9361_ext_band_ctrl.h:101
uint32_t delay_us
Definition ad9361_ext_band_ctrl.h:94
uint32_t pre_seq_len
Definition ad9361_ext_band_ctrl.h:98
Definition ad9361_ext_band_ctrl.h:113
struct ad9361_band_setting ** rx_settings
Definition ad9361_ext_band_ctrl.h:120
struct ad9361_band_setting * current_rx_setting
Definition ad9361_ext_band_ctrl.h:128
uint32_t tx_count
Definition ad9361_ext_band_ctrl.h:125
struct ad9361_band_setting ** tx_settings
Definition ad9361_ext_band_ctrl.h:124
uint32_t rx_count
Definition ad9361_ext_band_ctrl.h:121
struct no_os_gpio_desc * gpios[AD9361_EXT_BAND_MAX_GPIOS]
Definition ad9361_ext_band_ctrl.h:115
int ngpios
Definition ad9361_ext_band_ctrl.h:117
struct ad9361_band_setting * current_tx_setting
Definition ad9361_ext_band_ctrl.h:130
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84