Line data Source code
1 0 : /*
2 : * Copyright (c) 2023 Grinn
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #ifndef ZEPHYR_INCLUDE_DRIVERS_MFD_AD559X_H_
7 : #define ZEPHYR_INCLUDE_DRIVERS_MFD_AD559X_H_
8 :
9 : #ifdef __cplusplus
10 : extern "C" {
11 : #endif
12 :
13 : #include <zephyr/device.h>
14 :
15 0 : #define AD559X_REG_SEQ_ADC 0x02U
16 0 : #define AD559X_REG_GEN_CTRL 0x03U
17 0 : #define AD559X_REG_ADC_CONFIG 0x04U
18 0 : #define AD559X_REG_LDAC_EN 0x05U
19 0 : #define AD559X_REG_GPIO_PULLDOWN 0x06U
20 0 : #define AD559X_REG_READ_AND_LDAC 0x07U
21 0 : #define AD559X_REG_GPIO_OUTPUT_EN 0x08U
22 0 : #define AD559X_REG_GPIO_SET 0x09U
23 0 : #define AD559X_REG_GPIO_INPUT_EN 0x0AU
24 0 : #define AD559X_REG_PD_REF_CTRL 0x0BU
25 0 : #define AD559X_REG_IO_TS_CONFIG 0x0DU
26 :
27 0 : #define AD559X_DAC_RANGE BIT(4)
28 0 : #define AD559X_ADC_RANGE BIT(5)
29 0 : #define AD559X_EN_REF BIT(9)
30 :
31 0 : #define AD559X_PIN_MAX 8U
32 :
33 : /**
34 : * @defgroup mdf_interface_ad559x MFD AD559X interface
35 : * @ingroup mfd_interfaces
36 : * @{
37 : */
38 :
39 : /**
40 : * @brief Check if the chip has a pointer byte map
41 : *
42 : * @param[in] dev Pointer to MFD device
43 : *
44 : * @retval true if chip has a pointer byte map, false if it has normal register map
45 : */
46 1 : bool mfd_ad559x_has_pointer_byte_map(const struct device *dev);
47 :
48 : /**
49 : * @brief Read raw data from the chip
50 : *
51 : * @param[in] dev Pointer to MFD device
52 : * @param[in] val Pointer to data buffer
53 : * @param[in] len Number of bytes to be read
54 : *
55 : * @retval 0 if success
56 : * @retval negative errno if failure
57 : */
58 1 : int mfd_ad559x_read_raw(const struct device *dev, uint8_t *val, size_t len);
59 :
60 : /**
61 : * @brief Write raw data to chip
62 : *
63 : * @param[in] dev Pointer to MFD device
64 : * @param[in] val Data to be written
65 : * @param[in] len Number of bytes to be written
66 : *
67 : * @retval 0 if success
68 : * @retval negative errno if failure
69 : */
70 1 : int mfd_ad559x_write_raw(const struct device *dev, uint8_t *val, size_t len);
71 :
72 : /**
73 : * @brief Read data from provided register
74 : *
75 : * @param[in] dev Pointer to MFD device
76 : * @param[in] reg Register to be read
77 : * @param[in] reg_data Additional data passed to selected register
78 : * @param[in] val Pointer to data buffer
79 : *
80 : * @retval 0 if success
81 : * @retval negative errno if failure
82 : */
83 1 : int mfd_ad559x_read_reg(const struct device *dev, uint8_t reg, uint8_t reg_data, uint16_t *val);
84 :
85 : /**
86 : * @brief Write data to provided register
87 : *
88 : * @param[in] dev Pointer to MFD device
89 : * @param[in] reg Register to be written
90 : * @param[in] val Data to be written
91 : *
92 : * @retval 0 if success
93 : * @retval negative errno if failure
94 : */
95 1 : int mfd_ad559x_write_reg(const struct device *dev, uint8_t reg, uint16_t val);
96 :
97 : /**
98 : * @brief Read ADC channel data from the chip
99 : *
100 : * @param[in] dev Pointer to MFD device
101 : * @param[in] channel Channel to read
102 : * @param[out] result ADC channel value read
103 : *
104 : * @retval 0 if success
105 : * @retval negative errno if failure
106 : */
107 1 : int mfd_ad559x_read_adc_chan(const struct device *dev, uint8_t channel, uint16_t *result);
108 :
109 : /**
110 : * @brief Write ADC channel data to the chip
111 : *
112 : * @param[in] dev Pointer to MFD device
113 : * @param[in] channel Channel to write to
114 : * @param[in] value DAC channel value
115 : *
116 : * @retval 0 if success
117 : * @retval negative errno if failure
118 : */
119 1 : int mfd_ad559x_write_dac_chan(const struct device *dev, uint8_t channel, uint16_t value);
120 :
121 : /**
122 : * @brief Read GPIO port from the chip
123 : *
124 : * @param[in] dev Pointer to MFD device
125 : * @param[in] gpio GPIO to read
126 : * @param[in] value DAC channel value
127 : *
128 : * @retval 0 if success
129 : * @retval negative errno if failure
130 : */
131 1 : int mfd_ad559x_gpio_port_get_raw(const struct device *dev, uint8_t gpio, uint16_t *value);
132 : /**
133 : * @}
134 : */
135 :
136 : #ifdef __cplusplus
137 : }
138 : #endif
139 :
140 : #endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_AD559X_H_ */
|