no-OS
Loading...
Searching...
No Matches
ad9361_ext_band_ctrl.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025-2026 Analog Devices, Inc.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef AD9361_EXT_BAND_CTRL_H_
8#define AD9361_EXT_BAND_CTRL_H_
9
10#include <stdint.h>
11#include <stdbool.h>
12#include "no_os_gpio.h"
13
14/* Forward declaration — full definition in ad9361.h */
15struct ad9361_rf_phy;
16
17/* Constants */
18
20#define AD9361_EXT_BAND_MAX_GPIOS 32
21
23#define AD9361_EXT_BAND_MAX_SETTINGS 64
24
29#define AD9361_EXT_BAND_NO_PORT_SEL ((uint32_t)-1)
30
31/* GPIO operation codes */
32
47
48/* Band setting descriptor */
49
62 const char *name;
63
65 uint64_t freq_min;
67 uint64_t freq_max;
68
74 uint32_t *gpio_values;
76 uint32_t ngpios;
77
83
89
94 uint32_t delay_us;
95
98 uint32_t pre_seq_len;
99
102 uint32_t post_seq_len;
103};
104
105/* Controller descriptor */
106
132
133
134struct ad9361_band_setting *
135ad9361_band_setting_alloc(const char *name, uint64_t freq_min,
136 uint64_t freq_max, uint32_t ngpios);
137
139
141 uint32_t gpio_idx, uint32_t op);
142
144 uint32_t port);
145
147 uint32_t port);
148
150 uint32_t delay_us);
151
154
156 struct no_os_gpio_desc *gpio);
157
159 struct ad9361_band_setting *s);
160
162 struct ad9361_band_setting *s);
163
164
166 struct ad9361_ext_band_ctl *ctl);
167
169
171 uint64_t freq);
172
174 uint64_t freq);
175
176#endif /* AD9361_EXT_BAND_CTRL_H_ */
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
Definition ad9361.h:3340
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84