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#include "no_os_util.h"
41
42/* ADGM3121 Register Addresses */
43#define ADGM3121_REG_SWITCH_DATA 0x20
44
45/* ADGM3121 Register Bits */
46#define ADGM3121_SW1_EN NO_OS_BIT(0)
47#define ADGM3121_SW2_EN NO_OS_BIT(1)
48#define ADGM3121_SW3_EN NO_OS_BIT(2)
49#define ADGM3121_SW4_EN NO_OS_BIT(3)
50#define ADGM3121_INTERNAL_ERROR NO_OS_GENMASK(7, 6)
51#define ADGM3121_RESERVED NO_OS_GENMASK(5, 4)
52
53/* SPI Command Format */
54#define ADGM3121_SPI_READ NO_OS_BIT(15)
55#define ADGM3121_SPI_WRITE 0
56#define ADGM3121_SPI_ADDR_MSK NO_OS_GENMASK(14, 8)
57#define ADGM3121_SPI_DAISY_CHAIN_CMD 0x2500
58
59/* Default timeout values */
60#define ADGM3121_SWITCHING_TIME_US 200
61#define ADGM3121_POWER_UP_TIME_MS 45
62
73
82
88 ADGM3121_MODE_PARALLEL, /* GPIO parallel control mode */
89 ADGM3121_MODE_SPI, /* SPI control mode */
90};
91
97 /* SPI descriptor */
99 /* GPIO descriptors for parallel mode */
104 /* PIN/SPI mode select GPIO */
106 /* Control mode */
108 /* Current switch states cache */
110 /* SPI daisy chain mode */
112};
113
119 /* SPI initialization parameters */
121 /* GPIO initialization parameters for parallel mode */
126 /* PIN/SPI mode select GPIO */
128 /* Control mode */
130};
131
132/* Function prototypes */
133
134/* Initialize the device */
137
138/* Free resources allocated by adgm3121_init() */
139int adgm3121_remove(struct adgm3121_dev *dev);
140
141/* Set the state of a specific switch */
143 enum adgm3121_switch sw,
144 enum adgm3121_state state);
145
146/* Get the current state of a specific switch */
148 enum adgm3121_switch sw,
149 enum adgm3121_state *state);
150
151/* Set multiple switches at once using bitmask */
152int adgm3121_set_switches(struct adgm3121_dev *dev, uint8_t switch_mask);
153
154/* Get all switch states as bitmask */
155int adgm3121_get_switches(struct adgm3121_dev *dev, uint8_t *switch_mask);
156
157/* Reset all switches to off state */
159
160/* Enter SPI daisy chain mode */
162
163/* Check for internal errors */
165 uint8_t *error_status);
166
167/* Write to device register (SPI mode only) */
168int adgm3121_write_register(struct adgm3121_dev *dev, uint8_t reg_addr,
169 uint8_t data);
170
171/* Read from device register (SPI mode only) */
172int adgm3121_read_register(struct adgm3121_dev *dev, uint8_t reg_addr,
173 uint8_t *data);
174
175#endif /* ADGM3121_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
adgm3121_mode
Control mode enumeration.
Definition adgm3121.h:87
@ ADGM3121_MODE_PARALLEL
Definition adgm3121.h:88
@ ADGM3121_MODE_SPI
Definition adgm3121.h:89
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:78
@ ADGM3121_ENABLE
Definition adgm3121.h:80
@ ADGM3121_DISABLE
Definition adgm3121.h:79
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:67
@ ADGM3121_SW3
Definition adgm3121.h:70
@ ADGM3121_SW4
Definition adgm3121.h:71
@ ADGM3121_SW2
Definition adgm3121.h:69
@ ADGM3121_SW1
Definition adgm3121.h:68
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.
Header file of utility functions.
Device structure.
Definition adgm3121.h:96
struct no_os_gpio_desc * gpio_pin_spi
Definition adgm3121.h:105
struct no_os_gpio_desc * gpio_in1
Definition adgm3121.h:100
struct no_os_gpio_desc * gpio_in4
Definition adgm3121.h:103
struct no_os_gpio_desc * gpio_in3
Definition adgm3121.h:102
uint8_t switch_states
Definition adgm3121.h:109
struct no_os_spi_desc * spi_desc
Definition adgm3121.h:98
bool daisy_chain_mode
Definition adgm3121.h:111
enum adgm3121_mode mode
Definition adgm3121.h:107
struct no_os_gpio_desc * gpio_in2
Definition adgm3121.h:101
Initialization parameters.
Definition adgm3121.h:118
struct no_os_gpio_init_param gpio_in4
Definition adgm3121.h:125
struct no_os_gpio_init_param gpio_in2
Definition adgm3121.h:123
struct no_os_gpio_init_param gpio_in1
Definition adgm3121.h:122
struct no_os_gpio_init_param gpio_in3
Definition adgm3121.h:124
enum adgm3121_mode mode
Definition adgm3121.h:129
struct no_os_spi_init_param spi_init
Definition adgm3121.h:120
struct no_os_gpio_init_param gpio_pin_spi
Definition adgm3121.h:127
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