1 /* 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 #define AD559X_REG_SEQ_ADC 0x02U 16 #define AD559X_REG_GEN_CTRL 0x03U 17 #define AD559X_REG_ADC_CONFIG 0x04U 18 #define AD559X_REG_LDAC_EN 0x05U 19 #define AD559X_REG_GPIO_PULLDOWN 0x06U 20 #define AD559X_REG_READ_AND_LDAC 0x07U 21 #define AD559X_REG_GPIO_OUTPUT_EN 0x08U 22 #define AD559X_REG_GPIO_SET 0x09U 23 #define AD559X_REG_GPIO_INPUT_EN 0x0AU 24 #define AD559X_REG_PD_REF_CTRL 0x0BU 25 #define AD559X_REG_IO_TS_CONFIG 0x0DU 26 27 #define AD559X_DAC_RANGE BIT(4) 28 #define AD559X_ADC_RANGE BIT(5) 29 #define AD559X_EN_REF BIT(9) 30 31 #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 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 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 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 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 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 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 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 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_ */ 141