no-OS
Loading...
Searching...
No Matches
adgm3121.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef ADGM3121_H_
34#define ADGM3121_H_
35
36#include <stdint.h>
37#include <stdbool.h>
38#include "no_os_spi.h"
39#include "no_os_gpio.h"
40
41/* ADGM3121 Register Addresses */
42#define ADGM3121_REG_SWITCH_DATA 0x20
43
44/* ADGM3121 Register Bits */
45#define ADGM3121_SW1_EN NO_OS_BIT(0)
46#define ADGM3121_SW2_EN NO_OS_BIT(1)
47#define ADGM3121_SW3_EN NO_OS_BIT(2)
48#define ADGM3121_SW4_EN NO_OS_BIT(3)
49#define ADGM3121_INTERNAL_ERROR NO_OS_GENMASK(7, 6)
50#define ADGM3121_RESERVED NO_OS_GENMASK(5, 4)
51
52/* SPI Command Format */
53#define ADGM3121_SPI_READ NO_OS_BIT(15)
54#define ADGM3121_SPI_WRITE 0
55#define ADGM3121_SPI_ADDR_MSK NO_OS_GENMASK(14, 8)
56#define ADGM3121_SPI_DAISY_CHAIN_CMD 0x2500
57
58/* Default timeout values */
59#define ADGM3121_SWITCHING_TIME_US 200
60#define ADGM3121_POWER_UP_TIME_MS 45
61
72
81
87 ADGM3121_MODE_PARALLEL, /* GPIO parallel control mode */
88 ADGM3121_MODE_SPI, /* SPI control mode */
89};
90
96 /* SPI descriptor */
98 /* GPIO descriptors for parallel mode */
103 /* PIN/SPI mode select GPIO */
105 /* Control mode */
107 /* Current switch states cache */
109 /* SPI daisy chain mode */
111};
112
118 /* SPI initialization parameters */
120 /* GPIO initialization parameters for parallel mode */
125 /* PIN/SPI mode select GPIO */
127 /* Control mode */
129};
130
131/* Function prototypes */
132
133/* Initialize the device */
136
137/* Free resources allocated by adgm3121_init() */
138int adgm3121_remove(struct adgm3121_dev *dev);
139
140/* Set the state of a specific switch */
142 enum adgm3121_switch sw,
143 enum adgm3121_state state);
144
145/* Get the current state of a specific switch */
147 enum adgm3121_switch sw,
148 enum adgm3121_state *state);
149
150/* Set multiple switches at once using bitmask */
151int adgm3121_set_switches(struct adgm3121_dev *dev, uint8_t switch_mask);
152
153/* Get all switch states as bitmask */
154int adgm3121_get_switches(struct adgm3121_dev *dev, uint8_t *switch_mask);
155
156/* Reset all switches to off state */
158
159/* Enter SPI daisy chain mode */
161
162/* Check for internal errors */
164 uint8_t *error_status);
165
166/* Write to device register (SPI mode only) */
167int adgm3121_write_register(struct adgm3121_dev *dev, uint8_t reg_addr,
168 uint8_t data);
169
170/* Read from device register (SPI mode only) */
171int adgm3121_read_register(struct adgm3121_dev *dev, uint8_t reg_addr,
172 uint8_t *data);
173
174#endif /* ADGM3121_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
adgm3121_mode
Control mode enumeration.
Definition adgm3121.h:86
@ ADGM3121_MODE_PARALLEL
Definition adgm3121.h:87
@ ADGM3121_MODE_SPI
Definition adgm3121.h:88
int adgm3121_get_switch_state(struct adgm3121_dev *dev, enum adgm3121_switch sw, enum adgm3121_state *state)
Get the current state of a specific switch.
Definition adgm3121.c:275
int adgm3121_remove(struct adgm3121_dev *dev)
Free resources allocated by adgm3121_init()
Definition adgm3121.c:550
int adgm3121_reset_switches(struct adgm3121_dev *dev)
Reset all switches to off state.
Definition adgm3121.c:372
int adgm3121_enter_daisy_chain_mode(struct adgm3121_dev *dev)
Enter SPI daisy chain mode.
Definition adgm3121.c:382
int adgm3121_init(struct adgm3121_dev **device, struct adgm3121_init_param *init_param)
Initialize the device.
Definition adgm3121.c:435
int adgm3121_read_register(struct adgm3121_dev *dev, uint8_t reg_addr, uint8_t *data)
Read from device register via SPI.
Definition adgm3121.c:80
adgm3121_state
Switch state enumeration.
Definition adgm3121.h:77
@ ADGM3121_ENABLE
Definition adgm3121.h:79
@ ADGM3121_DISABLE
Definition adgm3121.h:78
int adgm3121_set_switch_state(struct adgm3121_dev *dev, enum adgm3121_switch sw, enum adgm3121_state state)
Set the state of a specific switch.
Definition adgm3121.c:255
int adgm3121_set_switches(struct adgm3121_dev *dev, uint8_t switch_mask)
Set multiple switches at once using bitmask.
Definition adgm3121.c:294
int adgm3121_write_register(struct adgm3121_dev *dev, uint8_t reg_addr, uint8_t data)
Write to device register via SPI.
Definition adgm3121.c:48
adgm3121_switch
Switch enumeration (valid for both devices)
Definition adgm3121.h:66
@ ADGM3121_SW3
Definition adgm3121.h:69
@ ADGM3121_SW4
Definition adgm3121.h:70
@ ADGM3121_SW2
Definition adgm3121.h:68
@ ADGM3121_SW1
Definition adgm3121.h:67
int adgm3121_check_internal_error(struct adgm3121_dev *dev, uint8_t *error_status)
Check for internal errors.
Definition adgm3121.c:411
int adgm3121_get_switches(struct adgm3121_dev *dev, uint8_t *switch_mask)
Get all switch states as bitmask.
Definition adgm3121.c:334
Header file of GPIO Interface.
Header file of SPI Interface.
Device structure.
Definition adgm3121.h:95
struct no_os_gpio_desc * gpio_pin_spi
Definition adgm3121.h:104
struct no_os_gpio_desc * gpio_in1
Definition adgm3121.h:99
struct no_os_gpio_desc * gpio_in4
Definition adgm3121.h:102
struct no_os_gpio_desc * gpio_in3
Definition adgm3121.h:101
uint8_t switch_states
Definition adgm3121.h:108
struct no_os_spi_desc * spi_desc
Definition adgm3121.h:97
bool daisy_chain_mode
Definition adgm3121.h:110
enum adgm3121_mode mode
Definition adgm3121.h:106
struct no_os_gpio_desc * gpio_in2
Definition adgm3121.h:100
Initialization parameters.
Definition adgm3121.h:117
struct no_os_gpio_init_param gpio_in4
Definition adgm3121.h:124
struct no_os_gpio_init_param gpio_in2
Definition adgm3121.h:122
struct no_os_gpio_init_param gpio_in1
Definition adgm3121.h:121
struct no_os_gpio_init_param gpio_in3
Definition adgm3121.h:123
enum adgm3121_mode mode
Definition adgm3121.h:128
struct no_os_spi_init_param spi_init
Definition adgm3121.h:119
struct no_os_gpio_init_param gpio_pin_spi
Definition adgm3121.h:126
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128