AD4130 Mbed IIO Firmware

Dependencies:   tempsensors sdp_k1_sdram

Committer:
MPhalke@MPHALKE-L02.ad.analog.com
Date:
Fri Jul 15 17:47:44 2022 +0530
Revision:
2:871d585d96ee
AD4130 firmware - initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 1 /***************************************************************************//**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 2 * @file ad413x.h
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 3 * @brief Header file of AD413X Driver.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 4 * @author Andrei Porumb (andrei.porumb@analog.com)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 5 ********************************************************************************
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 6 * Copyright 2022(c) Analog Devices, Inc.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 7 *
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 8 * All rights reserved.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 9 *
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 10 * Redistribution and use in source and binary forms, with or without
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 11 * modification, are permitted provided that the following conditions are met:
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 12 * - Redistributions of source code must retain the above copyright
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 13 * notice, this list of conditions and the following disclaimer.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 14 * - Redistributions in binary form must reproduce the above copyright
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 15 * notice, this list of conditions and the following disclaimer in
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 16 * the documentation and/or other materials provided with the
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 17 * distribution.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 18 * - Neither the name of Analog Devices, Inc. nor the names of its
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 19 * contributors may be used to endorse or promote products derived
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 20 * from this software without specific prior written permission.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 21 * - The use of this software may or may not infringe the patent rights
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 22 * of one or more patent holders. This license does not release you
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 23 * from the requirement that you obtain separate licenses from these
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 24 * patent holders to use this software.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 25 * - Use of the software either in source or binary form, must be run
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 26 * on or directly connected to an Analog Devices Inc. component.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 27 *
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 28 * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 29 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 30 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 31 * IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 32 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 33 * LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 34 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 35 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 36 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 37 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 38 *******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 39
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 40 #ifndef AD413X_H_
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 41 #define AD413X_H_
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 42
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 43 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 44 /***************************** Include Files **********************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 45 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 46 #include <stdint.h>
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 47 #include "no_os_delay.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 48 #include "no_os_gpio.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 49 #include "no_os_spi.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 50 #include "no_os_irq.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 51 #include "no_os_util.h"
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 52
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 53 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 54 /********************** Macros and Constants Definitions **********************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 55 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 56 #define AD413X_CMD_WR_COM_REG(x) (0x00 | ((x) & 0x3F)) // Write to Register x
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 57 #define AD413X_CMD_RD_COM_REG(x) (0x40 | ((x) & 0x3F)) // Read from Register x
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 58
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 59 /*************************** ADC Register Lengths *****************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 60 #define AD413X_R1B (1 << 8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 61 #define AD413X_R2B (2 << 8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 62 #define AD413X_R3B (3 << 8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 63 #define AD413X_TRANSF_LEN(x) (((x) >> 8) & 0xFF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 64
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 65 /***************************** ADC Register Map *******************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 66 #define AD413X_REG_STATUS (AD413X_R1B | 0x0)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 67 #define AD413X_REG_ADC_CTRL (AD413X_R2B | 0x1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 68 #define AD413X_REG_DATA (AD413X_R3B | 0x2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 69 #define AD413X_REG_IO_CTRL (AD413X_R2B | 0x3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 70 #define AD413X_REG_VBIAS_CTRL (AD413X_R2B | 0x4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 71 #define AD413X_REG_ID (AD413X_R1B | 0x5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 72 #define AD413X_REG_ERROR (AD413X_R2B | 0x6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 73 #define AD413X_REG_ERROR_EN (AD413X_R2B | 0x7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 74 #define AD413X_REG_MCLK_CNT (AD413X_R1B | 0x8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 75 #define AD413X_REG_CHN(x) (AD413X_R3B | (0x09U + (x)))
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 76 #define AD413X_REG_CONFIG(x) (AD413X_R2B | (0x19U + (x)))
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 77 #define AD413X_REG_FILTER(x) (AD413X_R3B | (0x21U + (x)))
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 78 #define AD413X_REG_OFFSET(x) (AD413X_R3B | (0x29U + (x)))
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 79 #define AD413X_REG_GAIN(x) (AD413X_R3B | (0x31U + (x)))
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 80 #define AD413X_REG_MISC (AD413X_R2B | 0x39)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 81 #define AD413X_REG_FIFO_CTRL (AD413X_R3B | 0x3A)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 82 #define AD413X_REG_FIFO_STS (AD413X_R1B | 0x3B)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 83 #define AD413X_REG_FIFO_THRSHLD (AD413X_R3B | 0x3C)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 84 #define AD413X_REG_FIFO_DATA (AD413X_R3B | 0x3D)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 85
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 86
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 87 /* ADC_CONTROL Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 88 #define AD413X_ADC_BIPOLAR NO_OS_BIT(14)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 89 #define AD413X_ADC_REF_VAL NO_OS_BIT(13)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 90 #define AD413X_ADC_DOUT_DIS_DEL NO_OS_BIT(12)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 91 #define AD413X_ADC_CONT_READ NO_OS_BIT(11)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 92 #define AD413X_ADC_DATA_STATUS NO_OS_BIT(10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 93 #define AD413X_ADC_CSB_EN NO_OS_BIT(9)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 94 #define AD413X_ADC_REF_EN NO_OS_BIT(8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 95 #define AD413X_ADC_DUTY_CYC_RATIO NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 96 #define AD413X_ADC_MODE(x) (((x) & 0xF) << 2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 97 #define AD413X_ADC_CNTRL_MCLK(x) ((x) & 0x3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 98
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 99 /* IO_CONTROL Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 100 #define AD413X_SYNCB_CLEAR NO_OS_BIT(10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 101 #define AD413X_INT_PIN_SEL(x) (((x) & 0x3) << 8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 102 #define AD413X_GPO_DATA_P4 NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 103 #define AD413X_GPO_DATA_P3 NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 104 #define AD413X_GPO_DATA_P2 NO_OS_BIT(5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 105 #define AD413X_GPO_DATA_P1 NO_OS_BIT(4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 106 #define AD413X_GPO_CTRL_P4 NO_OS_BIT(3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 107 #define AD413X_GPO_CTRL_P3 NO_OS_BIT(2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 108 #define AD413X_GPO_CTRL_P2 NO_OS_BIT(1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 109 #define AD413X_GPO_CTRL_P1 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 110
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 111 /* VBIAS_CTRL Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 112 #define AD413X_VBIAS_15 NO_OS_BIT(15)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 113 #define AD413X_VBIAS_14 NO_OS_BIT(14)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 114 #define AD413X_VBIAS_13 NO_OS_BIT(13)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 115 #define AD413X_VBIAS_12 NO_OS_BIT(12)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 116 #define AD413X_VBIAS_11 NO_OS_BIT(11)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 117 #define AD413X_VBIAS_10 NO_OS_BIT(10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 118 #define AD413X_VBIAS_9 NO_OS_BIT(9)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 119 #define AD413X_VBIAS_8 NO_OS_BIT(8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 120 #define AD413X_VBIAS_7 NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 121 #define AD413X_VBIAS_6 NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 122 #define AD413X_VBIAS_5 NO_OS_BIT(5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 123 #define AD413X_VBIAS_4 NO_OS_BIT(4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 124 #define AD413X_VBIAS_3 NO_OS_BIT(3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 125 #define AD413X_VBIAS_2 NO_OS_BIT(2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 126 #define AD413X_VBIAS_1 NO_OS_BIT(1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 127 #define AD413X_VBIAS_0 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 128
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 129 /* ERROR Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 130 #define AD413X_AINP_OV_UV_ERR NO_OS_BIT(11)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 131 #define AD413X_AINM_OV_UV_ERR NO_OS_BIT(10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 132 #define AD413X_REF_OV_UV_ERR NO_OS_BIT(9)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 133 #define AD413X_REF_DETECT_ERR NO_OS_BIT(8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 134 #define AD413X_ADC_ERR NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 135 #define AD413X_SPI_IGNORE_ERR NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 136 #define AD413X_SPI_SCLK_CNT_ERR NO_OS_BIT(5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 137 #define AD413X_SPI_READ_ERR NO_OS_BIT(4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 138 #define AD413X_SPI_WRITE_ERR NO_OS_BIT(3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 139 #define AD413X_SPI_CRC_ERR NO_OS_BIT(2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 140 #define AD413X_MM_CRC_ERR NO_OS_BIT(1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 141 #define AD413X_ROM_CRC_ERR 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 142
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 143 /* ERROR_EN Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 144 #define AD413X_MCLK_CNT_EN NO_OS_BIT(12)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 145 #define AD413X_AINP_OV_UV_ERR_EN NO_OS_BIT(11)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 146 #define AD413X_AINM_OV_UV_ERR_EN NO_OS_BIT(10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 147 #define AD413X_REF_OV_UV_ERR_EN NO_OS_BIT(9)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 148 #define AD413X_REF_DETECT_ERR_EN NO_OS_BIT(8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 149 #define AD413X_ADC_ERR_EN NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 150 #define AD413X_SPI_IGNORE_ERR_EN NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 151 #define AD413X_SPI_SCLK_CNT_ERR_EN NO_OS_BIT(5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 152 #define AD413X_SPI_READ_ERR_EN NO_OS_BIT(4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 153 #define AD413X_SPI_WRITE_ERR_EN NO_OS_BIT(3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 154 #define AD413X_SPI_CRC_ERR_EN NO_OS_BIT(2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 155 #define AD413X_MM_CRC_ERR_EN NO_OS_BIT(1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 156 #define AD413X_ROM_CRC_ERR_EN 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 157
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 158 /* CHANNEL_M Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 159 #define AD413X_ENABLE_M NO_OS_BIT(23)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 160 #define AD413X_SETUP_M(x) (((x) & 0x7) << 20)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 161 #define AD413X_PDSW_M NO_OS_BIT(19)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 162 #define AD413X_THRES_EN_M NO_OS_BIT(18)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 163 #define AD413X_AINP_M(x) (((x) & 0x1F) << 13)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 164 #define AD413X_AINM_M(x) (((x) & 0x1F) << 8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 165 #define AD413X_I_OUT1_CH_M(x) (((x) & 0xF) << 4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 166 #define AD413X_I_OUT0_CH_M(x) ((x) & 0xF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 167 #define AD413X_I_OUT_CH_MSK NO_OS_GENMASK(7,0)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 168
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 169 /* CONFIG_N Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 170 #define AD413X_I_OUT1_N(x) (((x) & 0x7) << 13)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 171 #define AD413X_I_OUT0_N(x) (((x) & 0x7) << 10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 172 #define AD413X_I_OUT_MSK NO_OS_GENMASK(15,10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 173 #define AD413X_BURNOUT_N(x) (((x) & 0x3) << 8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 174 #define AD413X_REF_BUF_MSK NO_OS_GENMASK(7,6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 175 #define AD413X_REF_BUFP_N NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 176 #define AD413X_REF_BUFM_N NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 177 #define AD413X_REF_SEL_N(x) (((x) & 0x3) << 4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 178 #define AD413X_PGA_N(x) (((x) & 0x7) << 1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 179 #define AD413X_PGA_BYP_N 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 180
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 181 /* FILTER_N Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 182 #define AD413X_SETTLE_N(x) (((x) & 0x7) << 21)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 183 #define AD413X_REPEAT_N(x) (((x) & 0x1F) << 16)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 184 #define AD413X_FILTER_MODE_N(x) (((x) & 0xF) << 12)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 185 #define AD413X_FS_N(x) ((x) & 0x7FF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 186
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 187 /* OFFSET_N Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 188 #define AD413X_OFFSET_N(x) ((x) & 0xFFFFFF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 189
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 190 /* GAIN_N Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 191 #define AD413X_GAIN_N(x) ((x) & 0xFFFFFF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 192
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 193 /* MISC Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 194 #define AD413X_BYPASS_OSC NO_OS_BIT(15)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 195 #define AD413X_PD_ALDO NO_OS_BIT(14)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 196 #define AD413X_CAL_RANGE_X2 NO_OS_BIT(13)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 197 #define AD413X_RESERVED(x) (((x) & 0xF) << 9)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 198 #define AD413X_STBY_CTRL_MSK NO_OS_GENMASK(8,0)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 199 #define AD413X_STBY_OUT_EN NO_OS_BIT(8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 200 #define AD413X_STBY_DIAGNOSTICS_EN NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 201 #define AD413X_STBY_GPO_EN NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 202 #define AD413X_STBY_PDSW_EN NO_OS_BIT(5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 203 #define AD413X_STBY_BURNOUT_EN NO_OS_BIT(4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 204 #define AD413X_STBY_VBIAS_EN NO_OS_BIT(3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 205 #define AD413X_STBY_IEXC_EN NO_OS_BIT(2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 206 #define AD413X_STBY_REFHOL_EN NO_OS_BIT(1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 207 #define AD413X_STBY_INTREF_EN 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 208
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 209 /* FIFO_CONTROL Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 210 #define AD413X_ADD_FIFO_STATUS NO_OS_BIT(19)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 211 #define AD413X_ADD_FIFO_HEADER NO_OS_BIT(18)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 212 #define AD413X_FIFO_MODE(x) (((x) & 0x3) << 16)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 213 #define AD413X_FIFO_WRITE_ERR_INT_EN NO_OS_BIT(14)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 214 #define AD413X_FIFO_READ_ERR_INT_EN NO_OS_BIT(13)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 215 #define AD413X_THRES_HIGH_INT_EN NO_OS_BIT(12)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 216 #define AD413X_THRES_LOW_INT_EN NO_OS_BIT(11)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 217 #define AD413X_OVERRUN_INT_EN NO_OS_BIT(10)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 218 #define AD413X_WATERMARK_INT_EN NO_OS_BIT(9)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 219 #define AD413X_EMPTY_INT_EN NO_OS_BIT(8)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 220 #define AD413X_WATERMARK(x) ((x) & 0xFF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 221
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 222 /* FIFO_STATUS Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 223 #define AD413X_MASTER_ERR NO_OS_BIT(7)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 224 #define AD413X_FIFO_WRITE_ERR NO_OS_BIT(6)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 225 #define AD413X_FIFO_READ_ERR NO_OS_BIT(5)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 226 #define AD413X_THRES_HIGH_FLAG NO_OS_BIT(4)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 227 #define AD413X_THRES_LOW_FLAG NO_OS_BIT(3)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 228 #define AD413X_OVERRUN_FLAG NO_OS_BIT(2)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 229 #define AD413X_WATERMARK_FLAG NO_OS_BIT(1)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 230 #define AD413X_EMPTY_FLAG 0x01
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 231
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 232 /* FIFO_THRESHOLD Register */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 233 #define AD413X_THRES_HIGH_VAL(x) (((x) & 0xFFF) << 12)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 234 #define AD413X_THRES_LOW_VAL(x) ((x) & 0xFFF)
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 235
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 236 /* 8-bits wide checksum generated using the polynomial */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 237 #define AD413X_CRC8_POLY 0x07 // x^8 + x^2 + x^1 + x^0
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 238
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 239 #define ENABLE 1U
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 240 #define DISABLE 0U
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 241
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 242 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 243 /*************************** Types Declarations *******************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 244 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 245 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 246 * @enum ad413x_input
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 247 * @brief ADC input sources for each channel.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 248 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 249 enum ad413x_input {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 250 AD413X_AIN0,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 251 AD413X_AIN1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 252 AD413X_AIN2,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 253 AD413X_AIN3,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 254 AD413X_AIN4,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 255 AD413X_AIN5,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 256 AD413X_AIN6,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 257 AD413X_AIN7,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 258 AD413X_AIN8,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 259 AD413X_AIN9,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 260 AD413X_AIN10,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 261 AD413X_AIN11,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 262 AD413X_AIN12,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 263 AD413X_AIN13,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 264 AD413X_AIN14,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 265 AD413X_AIN15,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 266 AD413X_TEMP,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 267 AD413X_AVSS,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 268 AD413X_INT_REF,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 269 AD413X_DGND,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 270 AD413X_AVDD_AVSS_6P,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 271 AD413X_AVDD_AVSS_6M,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 272 AD413X_IOVDD_DGND_6P,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 273 AD413X_IOVDD_DGND_6M,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 274 AD413X_ALDO_AVSS_6P,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 275 AD413X_ALDO_AVSS_6M,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 276 AD413X_DLDO_DGND_6P,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 277 AD413X_DLDO_DGND_6M,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 278 AD413X_V_MV_P,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 279 AD413X_V_MV_M,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 280 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 281
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 282 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 283 * @enum ad413x_preset_nb
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 284 * @brief Preset number.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 285 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 286 enum ad413x_preset_nb {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 287 AD413X_PRESET_0,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 288 AD413X_PRESET_1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 289 AD413X_PRESET_2,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 290 AD413X_PRESET_3,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 291 AD413X_PRESET_4,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 292 AD413X_PRESET_5,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 293 AD413X_PRESET_6,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 294 AD413X_PRESET_7
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 295 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 296
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 297 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 298 * @enum ad413x_mclk_sel
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 299 * @brief Master clock options.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 300 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 301 enum ad413x_mclk_sel {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 302 AD413X_INT_76_8_KHZ_OUT_OFF,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 303 AD413X_INT_76_8_KHZ_OUT_ON,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 304 AD413X_EXT_76_8KHZ,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 305 AD413X_EXT_153_6_KHZ_DIV_2
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 306 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 307
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 308 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 309 * @enum ad413x_adc_mode
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 310 * @brief ADC conversion modes.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 311 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 312 enum ad413x_adc_mode {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 313 AD413X_CONTINOUS_CONV_MODE = 0,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 314 AD413X_SINGLE_CONV_MODE = 1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 315 AD413X_STANDBY_MODE = 2,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 316 AD413X_PW_DOWN_MODE = 3,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 317 AD413X_IDLE_MODE = 4,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 318 AD413X_INT_OFFSET_CAL = 5,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 319 AD413X_INT_GAIN_CAL = 6,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 320 AD413X_SYS_OFFSET_CAL = 7,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 321 AD413X_SYS_GAIN_CAL = 8,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 322 AD413X_DUTY_CYCLING_MODE = 9,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 323 AD413X_SINGLE_CONV_SYNC_IDLE_MODE = 10,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 324 AD413X_DUTY_CYCLING_SYNC_STBY_MODE = 11
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 325 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 326
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 327 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 328 * @struct ad413x_ref_buf
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 329 * @brief ADC reference buffer selection.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 330 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 331 struct ad413x_ref_buf {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 332 bool ref_buf_p_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 333 bool ref_buf_m_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 334 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 335
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 336 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 337 * @enum ad413x_ref_sel
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 338 * @brief ADC reference selection.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 339 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 340 enum ad413x_ref_sel {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 341 AD413X_REFIN1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 342 AD413X_REFIN2,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 343 AD413X_REFOUT_AVSS,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 344 AD413X_AVDD_AVSS
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 345 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 346
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 347 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 348 * @enum ad413x_int_ref
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 349 * @brief Internal reference selection.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 350 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 351 enum ad413x_int_ref {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 352 AD413X_INTREF_DISABLED,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 353 AD413X_INTREF_2_5V,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 354 AD413X_INTREF_1_25V
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 355 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 356
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 357 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 358 * @enum ad413x_filter
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 359 * @brief Filter types.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 360 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 361 enum ad413x_filter {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 362 AD413X_SYNC4_STANDALONE,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 363 AD413X_SYNC4_SYNC1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 364 AD413X_SYNC3_STANDALONE,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 365 AD413X_SYNC3_REJ60,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 366 AD413X_SYNC3_SYNC1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 367 AD413X_SYNC3_PF1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 368 AD413X_SYNC3_PF2,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 369 AD413X_SYNC3_PF3,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 370 AD413X_SYNC3_PF4
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 371 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 372
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 373 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 374 * @enum ad413x_gain
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 375 * @brief Gain options.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 376 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 377 enum ad413x_gain {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 378 AD413X_GAIN_1,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 379 AD413X_GAIN_2,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 380 AD413X_GAIN_4,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 381 AD413X_GAIN_8,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 382 AD413X_GAIN_16,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 383 AD413X_GAIN_32,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 384 AD413X_GAIN_64,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 385 AD413X_GAIN_128,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 386 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 387
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 388 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 389 * @enum ad413x_chip_id
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 390 * @brief Chip IDs.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 391 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 392 enum ad413x_chip_id {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 393 /* TBD */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 394 AD4130_8 = 0x00
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 395 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 396
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 397 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 398 * @enum ad413x_settle_time
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 399 * @brief Channel settle time.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 400 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 401 enum ad413x_settle_time {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 402 AD413X_32_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 403 AD413X_64_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 404 AD413X_128_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 405 AD413X_256_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 406 AD413X_512_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 407 AD413X_1024_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 408 AD413X_2048_MCLK,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 409 AD413X_4096_MCLK
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 410 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 411
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 412 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 413 * @enum ad413x_exc_current
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 414 * @brief Excitation current value
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 415 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 416 enum ad413x_exc_current {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 417 AD413X_EXC_OFF,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 418 AD413X_EXC_10UA,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 419 AD413X_EXC_20UA,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 420 AD413X_EXC_50UA,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 421 AD413X_EXC_100UA,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 422 AD413X_EXC_150UA,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 423 AD413X_EXC_200UA,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 424 AD413X_EXC_100NA
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 425 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 426
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 427 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 428 * @struct ad413x_standby_ctrl
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 429 * @brief Standby control flags
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 430 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 431 struct ad413x_standby_ctrl {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 432 bool standby_int_ref_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 433 bool standby_ref_holder_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 434 bool standby_iexc_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 435 bool standby_vbias_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 436 bool standby_burnout_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 437 bool standby_pdsw_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 438 bool standby_gpio_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 439 bool standby_diagn_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 440 bool standby_output_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 441 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 442
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 443 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 444 * @struct ad413x_preset
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 445 * @brief Preset setting.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 446 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 447 struct ad413x_preset {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 448 struct ad413x_ref_buf ref_buf;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 449 enum ad413x_ref_sel ref_sel;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 450 enum ad413x_gain gain;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 451 enum ad413x_filter filter;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 452 /* By default, settle time = 32MCLK */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 453 enum ad413x_settle_time s_time;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 454 enum ad413x_exc_current iout0_exc_current;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 455 enum ad413x_exc_current iout1_exc_current;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 456 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 457
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 458 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 459 * @struct ad413x_channel
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 460 * @brief Channel setting.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 461 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 462 struct ad413x_channel {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 463 enum ad413x_preset_nb preset;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 464 uint8_t enable;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 465 enum ad413x_input ain_p;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 466 enum ad413x_input ain_m;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 467 enum ad413x_input iout0_exc_input;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 468 enum ad413x_input iout1_exc_input;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 469 bool pdsw_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 470 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 471
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 472 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 473 * @struct ad413x_dev
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 474 * @brief Device structure.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 475 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 476 struct ad413x_dev {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 477 /* SPI */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 478 struct no_os_spi_desc *spi_dev;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 479 /* GPIO - used to know when conversion is rdy */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 480 struct no_os_irq_ctrl_desc *irq_desc;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 481 uint32_t rdy_pin;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 482 /* Device Settings */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 483 struct ad413x_preset preset[8];
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 484 struct ad413x_channel ch[16];
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 485 enum ad413x_chip_id chip_id;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 486 enum ad413x_mclk_sel mclk;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 487 enum ad413x_adc_mode op_mode;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 488 uint8_t bipolar;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 489 enum ad413x_int_ref int_ref;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 490 uint16_t v_bias;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 491 struct ad413x_standby_ctrl standby_ctrl;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 492 uint8_t data_stat;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 493 uint8_t spi_crc_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 494 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 495
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 496 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 497 * @struct ad413x_init_param
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 498 * @brief Initial parameter structure.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 499 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 500 struct ad413x_init_param {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 501 /* SPI */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 502 struct no_os_spi_init_param *spi_init;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 503 /* GPIO - used to know when conversion is rdy */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 504 struct no_os_irq_ctrl_desc *irq_desc;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 505 uint32_t rdy_pin;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 506 /* Device Settings */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 507 struct ad413x_preset preset[8];
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 508 struct ad413x_channel ch[16];
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 509 enum ad413x_chip_id chip_id;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 510 enum ad413x_mclk_sel mclk;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 511 uint8_t bipolar;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 512 enum ad413x_int_ref int_ref;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 513 uint16_t v_bias;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 514 struct ad413x_standby_ctrl standby_ctrl;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 515 uint8_t data_stat;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 516 uint8_t spi_crc_en;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 517 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 518
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 519 /**
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 520 * @struct ad413x_callback_ctx
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 521 * @brief Callback structure.
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 522 */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 523 struct ad413x_callback_ctx {
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 524 struct ad413x_dev *dev;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 525 int32_t *buffer;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 526 int32_t buffer_size;
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 527 };
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 528
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 529 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 530 /************************ Functions Declarations ******************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 531 /******************************************************************************/
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 532 /* SPI write to device using a mask. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 533 int32_t ad413x_reg_write_msk(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 534 uint32_t reg_addr,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 535 uint32_t data,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 536 uint32_t mask);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 537
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 538 /* Set the mode of the ADC. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 539 int32_t ad413x_set_adc_mode(struct ad413x_dev *dev, enum ad413x_adc_mode mode);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 540
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 541 /* Set the internal reference. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 542 int32_t ad413x_set_int_ref(struct ad413x_dev *dev, enum ad413x_int_ref int_ref);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 543
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 544 /* Enable/disable DATA_STAT. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 545 int32_t ad413x_data_stat_en(struct ad413x_dev *dev, uint8_t enable);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 546
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 547 /* Set the gain. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 548 int32_t ad413x_set_gain(struct ad413x_dev *dev, enum ad413x_gain gain,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 549 enum ad413x_preset_nb reg_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 550
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 551 /* Set the reference. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 552 int32_t ad413x_set_ref(struct ad413x_dev *dev, enum ad413x_ref_sel ref,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 553 enum ad413x_preset_nb reg_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 554
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 555 /* Set the reference buffers */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 556 int32_t ad413x_set_ref_buf(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 557 struct ad413x_ref_buf ref_buf,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 558 enum ad413x_preset_nb reg_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 559
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 560 /* Set the filter */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 561 int32_t ad413x_set_filter(struct ad413x_dev *dev, enum ad413x_filter filter,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 562 enum ad413x_preset_nb reg_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 563
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 564 /* Set settle time */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 565 int32_t ad413x_set_settle_time(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 566 enum ad413x_settle_time s_time,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 567 enum ad413x_preset_nb reg_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 568
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 569 /* Set excitation currents */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 570 int32_t ad413x_set_exc_current(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 571 enum ad413x_exc_current iout0_exc,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 572 enum ad413x_exc_current iout1_exc,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 573 enum ad413x_preset_nb reg_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 574
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 575 /* Set excitation source pins */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 576 int32_t ad413x_ch_exc_input(struct ad413x_dev *dev, uint8_t ch_nb,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 577 enum ad413x_input iout0_exc_inp,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 578 enum ad413x_input iout1_exc_inp);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 579
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 580 /* Set channel preset */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 581 int32_t ad413x_set_ch_preset(struct ad413x_dev *dev, uint8_t ch_nb,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 582 enum ad413x_preset_nb preset_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 583
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 584 /* Enable channel */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 585 int32_t ad413x_ch_en(struct ad413x_dev *dev, uint8_t ch_nb, uint8_t enable);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 586
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 587 /* Enable PDSW */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 588 int32_t ad413x_pdsw_en(struct ad413x_dev *dev, uint8_t ch_nb, bool pdsw_en);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 589
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 590 /* Set output VBIAS */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 591 int32_t ad413x_set_v_bias(struct ad413x_dev *dev, uint16_t v_bias_val);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 592
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 593 /* Set standby control flags */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 594 int32_t ad413x_set_standby_ctrl(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 595 struct ad413x_standby_ctrl standby_ctrl);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 596
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 597 /* Set ADC master clock mode. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 598 int32_t ad413x_set_mclk(struct ad413x_dev *dev, enum ad413x_mclk_sel clk);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 599
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 600 /* Do a SPI software reset. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 601 int32_t ad413x_do_soft_reset(struct ad413x_dev *dev);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 602
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 603 /* SPI internal register write to device. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 604 int32_t ad413x_reg_write(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 605 uint32_t reg_addr,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 606 uint32_t reg_data);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 607
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 608 /* SPI internal register read from device. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 609 int32_t ad413x_reg_read(struct ad413x_dev *dev,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 610 uint32_t reg_addr,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 611 uint32_t *reg_data);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 612
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 613 /* Fills buffer with data read from each active channel */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 614 int32_t ad413x_single_conv(struct ad413x_dev *dev, uint32_t *buffer,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 615 uint8_t ch_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 616
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 617 /* Fills buffer with data from continuous conv mode from each active channel */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 618 int32_t ad413x_continuous_conv(struct ad413x_dev *dev, uint32_t *buffer,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 619 uint8_t ch_nb, uint32_t sample_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 620
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 621 /* Set adc bipolar/unipolar coding. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 622 int32_t ad413x_adc_bipolar(struct ad413x_dev *dev, uint8_t enable);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 623
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 624 /* Store presets for adc channels */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 625 int32_t ad413x_preset_store(struct ad413x_dev *dev, struct ad413x_preset preset,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 626 enum ad413x_preset_nb preset_nb);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 627
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 628 /* Initialize the device. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 629 int32_t ad413x_init(struct ad413x_dev **device,
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 630 struct ad413x_init_param init_param);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 631
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 632 /* Remove the device. */
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 633 int32_t ad413x_remove(struct ad413x_dev *dev);
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 634
MPhalke@MPHALKE-L02.ad.analog.com 2:871d585d96ee 635 #endif // AD413X_H_