Example Program for EVAL-AD7606

Dependencies:   platform_drivers

Committer:
mahphalke
Date:
Mon Oct 05 13:45:15 2020 +0530
Revision:
1:819ac9aa5667
Child:
3:83b3133f544a
AD7606 IIO Application- Initial Revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mahphalke 1:819ac9aa5667 1 /***************************************************************************//**
mahphalke 1:819ac9aa5667 2 * @file iio_ad7606_attr.h
mahphalke 1:819ac9aa5667 3 * @brief File for AD7606 IIO Attributes
mahphalke 1:819ac9aa5667 4 ********************************************************************************
mahphalke 1:819ac9aa5667 5 * Copyright (c) 2020 Analog Devices, Inc.
mahphalke 1:819ac9aa5667 6 *
mahphalke 1:819ac9aa5667 7 * All rights reserved.
mahphalke 1:819ac9aa5667 8 * This software is proprietary to Analog Devices, Inc. and its licensors.
mahphalke 1:819ac9aa5667 9 * By using this software you agree to the terms of the associated
mahphalke 1:819ac9aa5667 10 * Analog Devices Software License Agreement.
mahphalke 1:819ac9aa5667 11 *******************************************************************************/
mahphalke 1:819ac9aa5667 12 #ifndef IIO_AD7606_ATTR_H_
mahphalke 1:819ac9aa5667 13 #define IIO_AD7606_ATTR_H_
mahphalke 1:819ac9aa5667 14
mahphalke 1:819ac9aa5667 15 /******************************************************************************/
mahphalke 1:819ac9aa5667 16 /***************************** Include Files **********************************/
mahphalke 1:819ac9aa5667 17 /******************************************************************************/
mahphalke 1:819ac9aa5667 18
mahphalke 1:819ac9aa5667 19 #include <stdio.h>
mahphalke 1:819ac9aa5667 20 #include <stdbool.h>
mahphalke 1:819ac9aa5667 21
mahphalke 1:819ac9aa5667 22 #include "app_config.h"
mahphalke 1:819ac9aa5667 23 #include "iio.h"
mahphalke 1:819ac9aa5667 24 #include "iio_types.h"
mahphalke 1:819ac9aa5667 25
mahphalke 1:819ac9aa5667 26 /******************************************************************************/
mahphalke 1:819ac9aa5667 27 /****************************** Macros ****************************************/
mahphalke 1:819ac9aa5667 28 /******************************************************************************/
mahphalke 1:819ac9aa5667 29
mahphalke 1:819ac9aa5667 30 extern ssize_t get_chn_scale(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 31 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 32 extern ssize_t set_chn_scale(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 33 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 34
mahphalke 1:819ac9aa5667 35 extern ssize_t get_chn_range(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 36 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 37 extern ssize_t set_chn_range(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 38 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 39
mahphalke 1:819ac9aa5667 40 extern ssize_t get_chn_offset(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 41 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 42 extern ssize_t set_chn_offset(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 43 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 44
mahphalke 1:819ac9aa5667 45 extern ssize_t get_chn_phase_offset(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 46 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 47 extern ssize_t set_chn_phase_offset(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 48 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 49
mahphalke 1:819ac9aa5667 50 extern ssize_t get_chn_temperature(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 51 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 52 extern ssize_t set_chn_temperature(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 53 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 54
mahphalke 1:819ac9aa5667 55 extern ssize_t get_chn_vref(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 56 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 57 extern ssize_t set_chn_vref(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 58 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 59
mahphalke 1:819ac9aa5667 60 extern ssize_t get_chn_vdrive(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 61 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 62 extern ssize_t set_chn_vdrive(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 63 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 64
mahphalke 1:819ac9aa5667 65 extern ssize_t get_chn_aldo(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 66 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 67 extern ssize_t set_chn_aldo(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 68 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 69
mahphalke 1:819ac9aa5667 70 extern ssize_t get_chn_dldo(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 71 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 72 extern ssize_t set_chn_dldo(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 73 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 74
mahphalke 1:819ac9aa5667 75 extern ssize_t get_bandwidth(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 76 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 77 extern ssize_t set_bandwidth(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 78 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 79
mahphalke 1:819ac9aa5667 80 extern ssize_t get_chn_open_wire_detect_manual(void *device, char *buf,
mahphalke 1:819ac9aa5667 81 size_t len,
mahphalke 1:819ac9aa5667 82 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 83 extern ssize_t set_chn_open_wire_detect_manual(void *device, char *buf,
mahphalke 1:819ac9aa5667 84 size_t len,
mahphalke 1:819ac9aa5667 85 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 86
mahphalke 1:819ac9aa5667 87 extern ssize_t get_chn_open_wire_detect_auto(void *device, char *buf,
mahphalke 1:819ac9aa5667 88 size_t len,
mahphalke 1:819ac9aa5667 89 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 90 extern ssize_t set_chn_open_wire_detect_auto(void *device, char *buf,
mahphalke 1:819ac9aa5667 91 size_t len,
mahphalke 1:819ac9aa5667 92 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 93
mahphalke 1:819ac9aa5667 94 extern ssize_t get_chn_calibrate_adc_offset(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 95 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 96 extern ssize_t set_chn_calibrate_adc_offset(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 97 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 98
mahphalke 1:819ac9aa5667 99 extern ssize_t get_chn_calibrate_adc_gain(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 100 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 101 extern ssize_t set_chn_calibrate_adc_gain(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 102 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 103
mahphalke 1:819ac9aa5667 104 extern ssize_t get_chn_raw(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 105 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 106 extern ssize_t set_chn_raw(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 107 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 108
mahphalke 1:819ac9aa5667 109 extern ssize_t get_operating_mode(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 110 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 111 extern ssize_t set_operating_mode(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 112 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 113
mahphalke 1:819ac9aa5667 114 extern ssize_t get_power_down_mode(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 115 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 116 extern ssize_t set_power_down_mode(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 117 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 118
mahphalke 1:819ac9aa5667 119 extern ssize_t get_range(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 120 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 121 extern ssize_t set_range(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 122 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 123
mahphalke 1:819ac9aa5667 124 extern ssize_t get_oversampling(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 125 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 126 extern ssize_t set_oversampling(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 127 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 128
mahphalke 1:819ac9aa5667 129 extern ssize_t get_direct_reg_access(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 130 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 131 extern ssize_t set_direct_reg_access(void *device, char *buf, size_t len,
mahphalke 1:819ac9aa5667 132 const struct iio_ch_info *channel);
mahphalke 1:819ac9aa5667 133
mahphalke 1:819ac9aa5667 134 /******************************************************************************/
mahphalke 1:819ac9aa5667 135 /*************************** Types Declarations *******************************/
mahphalke 1:819ac9aa5667 136 /******************************************************************************/
mahphalke 1:819ac9aa5667 137
mahphalke 1:819ac9aa5667 138 #if defined(DEV_AD7605_4)
mahphalke 1:819ac9aa5667 139 #define AD7606X_DEVICE_ID "<device id=\"AD7605-4-phy\" name=\"ID_AD7605-4-phy\" >"
mahphalke 1:819ac9aa5667 140 #elif defined(DEV_AD7606_4)
mahphalke 1:819ac9aa5667 141 #define AD7606X_DEVICE_ID "<device id=\"AD7606-4-phy\" name=\"AD7606-4-phy\" >"
mahphalke 1:819ac9aa5667 142 #elif defined(DEV_AD7606_6)
mahphalke 1:819ac9aa5667 143 #define AD7606X_DEVICE_ID "<device id=\"AD7606-6-phy\" name=\"AD7606-6-phy\" >"
mahphalke 1:819ac9aa5667 144 #elif defined(DEV_AD7606_8)
mahphalke 1:819ac9aa5667 145 #define AD7606X_DEVICE_ID "<device id=\"AD7606-8-phy\" name=\"AD7606-8-phy\" >"
mahphalke 1:819ac9aa5667 146 #elif defined(DEV_AD7606B)
mahphalke 1:819ac9aa5667 147 #define AD7606X_DEVICE_ID "<device id=\"AD7606B-phy\" name=\"AD7606B-phy\" >"
mahphalke 1:819ac9aa5667 148 #elif defined(DEV_AD7606C_16)
mahphalke 1:819ac9aa5667 149 #define AD7606X_DEVICE_ID "<device id=\"AD7606C-phy\" name=\"AD7606C-16-phy\" >"
mahphalke 1:819ac9aa5667 150 #elif defined(DEV_AD7606C_18)
mahphalke 1:819ac9aa5667 151 #define AD7606X_DEVICE_ID "<device id=\"AD7606C-phy\" name=\"AD7606C-18-phy\" >"
mahphalke 1:819ac9aa5667 152 #elif defined(DEV_AD7608)
mahphalke 1:819ac9aa5667 153 #define AD7606X_DEVICE_ID "<device id=\"AD7608-phy\" name=\"AD7608-phy\" >"
mahphalke 1:819ac9aa5667 154 #elif defined(DEV_AD7609)
mahphalke 1:819ac9aa5667 155 #define AD7606X_DEVICE_ID "<device id=\"AD7609-phy\" name=\"AD7609-phy\" >"
mahphalke 1:819ac9aa5667 156 #else
mahphalke 1:819ac9aa5667 157 #endif
mahphalke 1:819ac9aa5667 158
mahphalke 1:819ac9aa5667 159 #define AD7606X_COMMON_ATTRB "<attribute name=\"raw\" />" \
mahphalke 1:819ac9aa5667 160 "<attribute name=\"scale\" />"
mahphalke 1:819ac9aa5667 161
mahphalke 1:819ac9aa5667 162 #if defined(DEV_AD7606B)
mahphalke 1:819ac9aa5667 163 #define AD7606X_CHANNELS_ATTRB "<attribute name=\"chn_range\" />" \
mahphalke 1:819ac9aa5667 164 "<attribute name=\"chn_offset\" />" \
mahphalke 1:819ac9aa5667 165 "<attribute name=\"Temperature\" />" \
mahphalke 1:819ac9aa5667 166 "<attribute name=\"Vref\" />" \
mahphalke 1:819ac9aa5667 167 "<attribute name=\"Vdrive\" />" \
mahphalke 1:819ac9aa5667 168 "<attribute name=\"ALDO\" />" \
mahphalke 1:819ac9aa5667 169 "<attribute name=\"DLDO\" />" \
mahphalke 1:819ac9aa5667 170 "<attribute name=\"open_wire_detect_manual\" />" \
mahphalke 1:819ac9aa5667 171 "<attribute name=\"open_wire_detect_auto\" />" \
mahphalke 1:819ac9aa5667 172 "<attribute name=\"calibrate_adc_offset\" />" \
mahphalke 1:819ac9aa5667 173 "<attribute name=\"calibrate_adc_gain\" />"
mahphalke 1:819ac9aa5667 174 #elif defined(DEV_AD7606C_18) || defined(DEV_AD7606C_16)
mahphalke 1:819ac9aa5667 175 #define AD7606X_CHANNELS_ATTRB "<attribute name=\"chn_range\" />" \
mahphalke 1:819ac9aa5667 176 "<attribute name=\"chn_offset\" />" \
mahphalke 1:819ac9aa5667 177 "<attribute name=\"Temperature\" />" \
mahphalke 1:819ac9aa5667 178 "<attribute name=\"Vref\" />" \
mahphalke 1:819ac9aa5667 179 "<attribute name=\"Vdrive\" />" \
mahphalke 1:819ac9aa5667 180 "<attribute name=\"ALDO\" />" \
mahphalke 1:819ac9aa5667 181 "<attribute name=\"DLDO\" />" \
mahphalke 1:819ac9aa5667 182 "<attribute name=\"open_wire_detect_manual\" />" \
mahphalke 1:819ac9aa5667 183 "<attribute name=\"open_wire_detect_auto\" />" \
mahphalke 1:819ac9aa5667 184 "<attribute name=\"calibrate_adc_offset\" />" \
mahphalke 1:819ac9aa5667 185 "<attribute name=\"calibrate_adc_gain\" />" \
mahphalke 1:819ac9aa5667 186 "<attribute name=\"bandwidth\" />"
mahphalke 1:819ac9aa5667 187 #endif
mahphalke 1:819ac9aa5667 188
mahphalke 1:819ac9aa5667 189 #if defined(DEV_AD7606B) || defined(DEV_AD7606C_18) || defined(DEV_AD7606C_16)
mahphalke 1:819ac9aa5667 190 #define AD7606X_GLOBAL_ATTRB "<attribute name=\"operating_mode\" />" \
mahphalke 1:819ac9aa5667 191 "<attribute name=\"oversampling\" />" \
mahphalke 1:819ac9aa5667 192 "<debug-attribute name =\"direct_reg_access\" />"
mahphalke 1:819ac9aa5667 193 #else
mahphalke 1:819ac9aa5667 194 #define AD7606X_GLOBAL_ATTRB "<attribute name=\"power_down_mode\" />" \
mahphalke 1:819ac9aa5667 195 "<attribute name=\"range\" />"
mahphalke 1:819ac9aa5667 196 #endif
mahphalke 1:819ac9aa5667 197
mahphalke 1:819ac9aa5667 198
mahphalke 1:819ac9aa5667 199 // XML describes the IIO context hierarchy for AD7606 family devices
mahphalke 1:819ac9aa5667 200 static const char * const ad7606_phy_xml =
mahphalke 1:819ac9aa5667 201 AD7606X_DEVICE_ID
mahphalke 1:819ac9aa5667 202 "<channel id=\"voltage1\" type=\"input\" >"
mahphalke 1:819ac9aa5667 203 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 204 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"0\" />"
mahphalke 1:819ac9aa5667 205 #else
mahphalke 1:819ac9aa5667 206 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"0\" />"
mahphalke 1:819ac9aa5667 207 #endif
mahphalke 1:819ac9aa5667 208 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 209 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 210 "</channel>"
mahphalke 1:819ac9aa5667 211 "<channel id=\"voltage2\" type=\"input\" >"
mahphalke 1:819ac9aa5667 212 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 213 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"1\" />"
mahphalke 1:819ac9aa5667 214 #else
mahphalke 1:819ac9aa5667 215 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"1\" />"
mahphalke 1:819ac9aa5667 216 #endif
mahphalke 1:819ac9aa5667 217 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 218 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 219 "</channel>"
mahphalke 1:819ac9aa5667 220 "<channel id=\"voltage3\" type=\"input\" >"
mahphalke 1:819ac9aa5667 221 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 222 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"2\" />"
mahphalke 1:819ac9aa5667 223 #else
mahphalke 1:819ac9aa5667 224 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"2\" />"
mahphalke 1:819ac9aa5667 225 #endif
mahphalke 1:819ac9aa5667 226 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 227 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 228 "</channel>"
mahphalke 1:819ac9aa5667 229 "<channel id=\"voltage4\" type=\"input\" >"
mahphalke 1:819ac9aa5667 230 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 231 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"3\" />"
mahphalke 1:819ac9aa5667 232 #else
mahphalke 1:819ac9aa5667 233 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"3\" />"
mahphalke 1:819ac9aa5667 234 #endif
mahphalke 1:819ac9aa5667 235 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 236 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 237 "</channel>"
mahphalke 1:819ac9aa5667 238 #if (AD7606X_ADC_CHANNELS > 4)
mahphalke 1:819ac9aa5667 239 "<channel id=\"voltage5\" type=\"input\" >"
mahphalke 1:819ac9aa5667 240 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 241 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"4\" />"
mahphalke 1:819ac9aa5667 242 #else
mahphalke 1:819ac9aa5667 243 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"4\" />"
mahphalke 1:819ac9aa5667 244 #endif
mahphalke 1:819ac9aa5667 245 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 246 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 247 "</channel>"
mahphalke 1:819ac9aa5667 248 "<channel id=\"voltage6\" type=\"input\" >"
mahphalke 1:819ac9aa5667 249 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 250 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"5\" />"
mahphalke 1:819ac9aa5667 251 #else
mahphalke 1:819ac9aa5667 252 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"5\" />"
mahphalke 1:819ac9aa5667 253 #endif
mahphalke 1:819ac9aa5667 254 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 255 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 256 "</channel>"
mahphalke 1:819ac9aa5667 257 #endif
mahphalke 1:819ac9aa5667 258 #if (AD7606X_ADC_CHANNELS > 6)
mahphalke 1:819ac9aa5667 259 "<channel id=\"voltage7\" type=\"input\" >"
mahphalke 1:819ac9aa5667 260 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 261 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"6\" />"
mahphalke 1:819ac9aa5667 262 #else
mahphalke 1:819ac9aa5667 263 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"6\" />"
mahphalke 1:819ac9aa5667 264 #endif
mahphalke 1:819ac9aa5667 265 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 266 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 267 "</channel>"
mahphalke 1:819ac9aa5667 268 "<channel id=\"voltage8\" type=\"input\" >"
mahphalke 1:819ac9aa5667 269 #if (AD7606X_ADC_RESOLUTION == 18)
mahphalke 1:819ac9aa5667 270 "<scan-element scale=\"0.1525\" format=\"le:s18/18>>0\" index = \"7\" />"
mahphalke 1:819ac9aa5667 271 #else
mahphalke 1:819ac9aa5667 272 "<scan-element scale=\"0.1525\" format=\"le:s16/16>>0\" index = \"7\" />"
mahphalke 1:819ac9aa5667 273 #endif
mahphalke 1:819ac9aa5667 274 AD7606X_COMMON_ATTRB
mahphalke 1:819ac9aa5667 275 AD7606X_CHANNELS_ATTRB
mahphalke 1:819ac9aa5667 276 "</channel>"
mahphalke 1:819ac9aa5667 277 #endif
mahphalke 1:819ac9aa5667 278 AD7606X_GLOBAL_ATTRB
mahphalke 1:819ac9aa5667 279 "</device>";
mahphalke 1:819ac9aa5667 280
mahphalke 1:819ac9aa5667 281
mahphalke 1:819ac9aa5667 282 /* Channels IIO attribute structures */
mahphalke 1:819ac9aa5667 283
mahphalke 1:819ac9aa5667 284 static struct iio_attribute iio_attr_chn_scale = {
mahphalke 1:819ac9aa5667 285 .name = "scale",
mahphalke 1:819ac9aa5667 286 .show = get_chn_scale,
mahphalke 1:819ac9aa5667 287 .store = set_chn_scale,
mahphalke 1:819ac9aa5667 288 };
mahphalke 1:819ac9aa5667 289
mahphalke 1:819ac9aa5667 290 static struct iio_attribute iio_attr_chn_raw = {
mahphalke 1:819ac9aa5667 291 .name = "raw",
mahphalke 1:819ac9aa5667 292 .show = get_chn_raw,
mahphalke 1:819ac9aa5667 293 .store = set_chn_raw,
mahphalke 1:819ac9aa5667 294 };
mahphalke 1:819ac9aa5667 295
mahphalke 1:819ac9aa5667 296 static struct iio_attribute iio_attr_chn_range = {
mahphalke 1:819ac9aa5667 297 .name = "chn_range",
mahphalke 1:819ac9aa5667 298 .show = get_chn_range,
mahphalke 1:819ac9aa5667 299 .store = set_chn_range,
mahphalke 1:819ac9aa5667 300 };
mahphalke 1:819ac9aa5667 301
mahphalke 1:819ac9aa5667 302 static struct iio_attribute iio_attr_chn_offset = {
mahphalke 1:819ac9aa5667 303 .name = "chn_offset",
mahphalke 1:819ac9aa5667 304 .show = get_chn_offset,
mahphalke 1:819ac9aa5667 305 .store = set_chn_offset,
mahphalke 1:819ac9aa5667 306 };
mahphalke 1:819ac9aa5667 307
mahphalke 1:819ac9aa5667 308 static struct iio_attribute iio_attr_chn_phase_offset = {
mahphalke 1:819ac9aa5667 309 .name = "chn_phase offset",
mahphalke 1:819ac9aa5667 310 .show = get_chn_phase_offset,
mahphalke 1:819ac9aa5667 311 .store = set_chn_phase_offset,
mahphalke 1:819ac9aa5667 312 };
mahphalke 1:819ac9aa5667 313
mahphalke 1:819ac9aa5667 314 static struct iio_attribute iio_attr_chn_temperature = {
mahphalke 1:819ac9aa5667 315 .name = "Temperature",
mahphalke 1:819ac9aa5667 316 .show = get_chn_temperature,
mahphalke 1:819ac9aa5667 317 .store = set_chn_temperature,
mahphalke 1:819ac9aa5667 318 };
mahphalke 1:819ac9aa5667 319
mahphalke 1:819ac9aa5667 320 static struct iio_attribute iio_attr_chn_vref = {
mahphalke 1:819ac9aa5667 321 .name = "Vref",
mahphalke 1:819ac9aa5667 322 .show = get_chn_vref,
mahphalke 1:819ac9aa5667 323 .store = set_chn_vref,
mahphalke 1:819ac9aa5667 324 };
mahphalke 1:819ac9aa5667 325
mahphalke 1:819ac9aa5667 326 static struct iio_attribute iio_attr_chn_vdrive = {
mahphalke 1:819ac9aa5667 327 .name = "Vdrive",
mahphalke 1:819ac9aa5667 328 .show = get_chn_vdrive,
mahphalke 1:819ac9aa5667 329 .store = set_chn_vdrive,
mahphalke 1:819ac9aa5667 330 };
mahphalke 1:819ac9aa5667 331
mahphalke 1:819ac9aa5667 332 static struct iio_attribute iio_attr_chn_aldo = {
mahphalke 1:819ac9aa5667 333 .name = "ALDO",
mahphalke 1:819ac9aa5667 334 .show = get_chn_aldo,
mahphalke 1:819ac9aa5667 335 .store = set_chn_aldo,
mahphalke 1:819ac9aa5667 336 };
mahphalke 1:819ac9aa5667 337
mahphalke 1:819ac9aa5667 338 static struct iio_attribute iio_attr_chn_dldo = {
mahphalke 1:819ac9aa5667 339 .name = "DLDO",
mahphalke 1:819ac9aa5667 340 .show = get_chn_dldo,
mahphalke 1:819ac9aa5667 341 .store = set_chn_dldo,
mahphalke 1:819ac9aa5667 342 };
mahphalke 1:819ac9aa5667 343
mahphalke 1:819ac9aa5667 344 static struct iio_attribute iio_attr_bandwidth = {
mahphalke 1:819ac9aa5667 345 .name = "bandwidth",
mahphalke 1:819ac9aa5667 346 .show = get_bandwidth,
mahphalke 1:819ac9aa5667 347 .store = set_bandwidth,
mahphalke 1:819ac9aa5667 348 };
mahphalke 1:819ac9aa5667 349
mahphalke 1:819ac9aa5667 350 static struct iio_attribute iio_attr_chn_open_wire_detect_manual = {
mahphalke 1:819ac9aa5667 351 .name = "open_wire_detect_manual",
mahphalke 1:819ac9aa5667 352 .show = get_chn_open_wire_detect_manual,
mahphalke 1:819ac9aa5667 353 .store = set_chn_open_wire_detect_manual,
mahphalke 1:819ac9aa5667 354 };
mahphalke 1:819ac9aa5667 355
mahphalke 1:819ac9aa5667 356 static struct iio_attribute iio_attr_chn_open_wire_detect_auto = {
mahphalke 1:819ac9aa5667 357 .name = "open_wire_detect_auto",
mahphalke 1:819ac9aa5667 358 .show = get_chn_open_wire_detect_auto,
mahphalke 1:819ac9aa5667 359 .store = set_chn_open_wire_detect_auto,
mahphalke 1:819ac9aa5667 360 };
mahphalke 1:819ac9aa5667 361
mahphalke 1:819ac9aa5667 362 static struct iio_attribute iio_attr_calibrate_adc_offset= {
mahphalke 1:819ac9aa5667 363 .name = "calibrate_adc_offset",
mahphalke 1:819ac9aa5667 364 .show = get_chn_calibrate_adc_offset,
mahphalke 1:819ac9aa5667 365 .store = set_chn_calibrate_adc_offset,
mahphalke 1:819ac9aa5667 366 };
mahphalke 1:819ac9aa5667 367
mahphalke 1:819ac9aa5667 368 static struct iio_attribute iio_attr_calibrate_adc_gain = {
mahphalke 1:819ac9aa5667 369 .name = "calibrate_adc_gain",
mahphalke 1:819ac9aa5667 370 .show = get_chn_calibrate_adc_gain,
mahphalke 1:819ac9aa5667 371 .store = set_chn_calibrate_adc_gain,
mahphalke 1:819ac9aa5667 372 };
mahphalke 1:819ac9aa5667 373
mahphalke 1:819ac9aa5667 374
mahphalke 1:819ac9aa5667 375 struct iio_attribute *channel_input_attributes[] = {
mahphalke 1:819ac9aa5667 376 &iio_attr_chn_raw,
mahphalke 1:819ac9aa5667 377 &iio_attr_chn_scale,
mahphalke 1:819ac9aa5667 378 #if defined(DEV_AD7606B) || defined(DEV_AD7606C_18) || defined(DEV_AD7606C_16)
mahphalke 1:819ac9aa5667 379 &iio_attr_chn_range,
mahphalke 1:819ac9aa5667 380 &iio_attr_chn_offset,
mahphalke 1:819ac9aa5667 381 &iio_attr_chn_phase_offset,
mahphalke 1:819ac9aa5667 382 &iio_attr_chn_temperature,
mahphalke 1:819ac9aa5667 383 &iio_attr_chn_vref,
mahphalke 1:819ac9aa5667 384 &iio_attr_chn_vdrive,
mahphalke 1:819ac9aa5667 385 &iio_attr_chn_aldo,
mahphalke 1:819ac9aa5667 386 &iio_attr_chn_dldo,
mahphalke 1:819ac9aa5667 387 &iio_attr_chn_open_wire_detect_manual,
mahphalke 1:819ac9aa5667 388 &iio_attr_chn_open_wire_detect_auto,
mahphalke 1:819ac9aa5667 389 &iio_attr_calibrate_adc_offset,
mahphalke 1:819ac9aa5667 390 &iio_attr_calibrate_adc_gain,
mahphalke 1:819ac9aa5667 391 #if defined(DEV_AD7606C_18) || defined(DEV_AD7606C_16)
mahphalke 1:819ac9aa5667 392 &iio_attr_bandwidth
mahphalke 1:819ac9aa5667 393 #endif
mahphalke 1:819ac9aa5667 394 #endif
mahphalke 1:819ac9aa5667 395 };
mahphalke 1:819ac9aa5667 396
mahphalke 1:819ac9aa5667 397
mahphalke 1:819ac9aa5667 398 /* Device IIO attribute structures */
mahphalke 1:819ac9aa5667 399
mahphalke 1:819ac9aa5667 400 static struct iio_attribute iio_attr_operating_mode = {
mahphalke 1:819ac9aa5667 401 .name = "operating_mode",
mahphalke 1:819ac9aa5667 402 .show = get_operating_mode,
mahphalke 1:819ac9aa5667 403 .store = set_operating_mode,
mahphalke 1:819ac9aa5667 404 };
mahphalke 1:819ac9aa5667 405
mahphalke 1:819ac9aa5667 406 static struct iio_attribute iio_attr_power_down_mode = {
mahphalke 1:819ac9aa5667 407 .name = "power_down_mode",
mahphalke 1:819ac9aa5667 408 .show = get_power_down_mode,
mahphalke 1:819ac9aa5667 409 .store = set_power_down_mode,
mahphalke 1:819ac9aa5667 410 };
mahphalke 1:819ac9aa5667 411
mahphalke 1:819ac9aa5667 412 static struct iio_attribute iio_attr_range = {
mahphalke 1:819ac9aa5667 413 .name = "range",
mahphalke 1:819ac9aa5667 414 .show = get_range,
mahphalke 1:819ac9aa5667 415 .store = set_range,
mahphalke 1:819ac9aa5667 416 };
mahphalke 1:819ac9aa5667 417
mahphalke 1:819ac9aa5667 418 static struct iio_attribute iio_attr_oversampling = {
mahphalke 1:819ac9aa5667 419 .name = "oversampling",
mahphalke 1:819ac9aa5667 420 .show = get_oversampling,
mahphalke 1:819ac9aa5667 421 .store = set_oversampling,
mahphalke 1:819ac9aa5667 422 };
mahphalke 1:819ac9aa5667 423
mahphalke 1:819ac9aa5667 424 static struct iio_attribute iio_attr_direct_reg_access = {
mahphalke 1:819ac9aa5667 425 .name = "direct_reg_access",
mahphalke 1:819ac9aa5667 426 .show = get_direct_reg_access,
mahphalke 1:819ac9aa5667 427 .store = set_direct_reg_access,
mahphalke 1:819ac9aa5667 428 };
mahphalke 1:819ac9aa5667 429
mahphalke 1:819ac9aa5667 430 static struct iio_attribute *global_attributes[] = {
mahphalke 1:819ac9aa5667 431 #if defined(DEV_AD7606B) || defined(DEV_AD7606C_18) || defined(DEV_AD7606C_16)
mahphalke 1:819ac9aa5667 432 &iio_attr_operating_mode,
mahphalke 1:819ac9aa5667 433 &iio_attr_oversampling,
mahphalke 1:819ac9aa5667 434 &iio_attr_direct_reg_access,
mahphalke 1:819ac9aa5667 435 #else
mahphalke 1:819ac9aa5667 436 &iio_attr_power_down_mode,
mahphalke 1:819ac9aa5667 437 &iio_attr_range,
mahphalke 1:819ac9aa5667 438 #endif
mahphalke 1:819ac9aa5667 439 };
mahphalke 1:819ac9aa5667 440
mahphalke 1:819ac9aa5667 441
mahphalke 1:819ac9aa5667 442 static struct iio_channel iio_channel_ch1_in = {
mahphalke 1:819ac9aa5667 443 .name = "voltage1",
mahphalke 1:819ac9aa5667 444 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 445 .ch_out = false,
mahphalke 1:819ac9aa5667 446 };
mahphalke 1:819ac9aa5667 447
mahphalke 1:819ac9aa5667 448 static struct iio_channel iio_channel_ch2_in = {
mahphalke 1:819ac9aa5667 449 .name = "voltage2",
mahphalke 1:819ac9aa5667 450 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 451 .ch_out = false,
mahphalke 1:819ac9aa5667 452 };
mahphalke 1:819ac9aa5667 453
mahphalke 1:819ac9aa5667 454 static struct iio_channel iio_channel_ch3_in = {
mahphalke 1:819ac9aa5667 455 .name = "voltage3",
mahphalke 1:819ac9aa5667 456 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 457 .ch_out = false,
mahphalke 1:819ac9aa5667 458 };
mahphalke 1:819ac9aa5667 459
mahphalke 1:819ac9aa5667 460 static struct iio_channel iio_channel_ch4_in = {
mahphalke 1:819ac9aa5667 461 .name = "voltage4",
mahphalke 1:819ac9aa5667 462 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 463 .ch_out = false,
mahphalke 1:819ac9aa5667 464 };
mahphalke 1:819ac9aa5667 465
mahphalke 1:819ac9aa5667 466 static struct iio_channel iio_channel_ch5_in = {
mahphalke 1:819ac9aa5667 467 .name = "voltage5",
mahphalke 1:819ac9aa5667 468 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 469 .ch_out = false,
mahphalke 1:819ac9aa5667 470 };
mahphalke 1:819ac9aa5667 471
mahphalke 1:819ac9aa5667 472 static struct iio_channel iio_channel_ch6_in = {
mahphalke 1:819ac9aa5667 473 .name = "voltage6",
mahphalke 1:819ac9aa5667 474 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 475 .ch_out = false,
mahphalke 1:819ac9aa5667 476 };
mahphalke 1:819ac9aa5667 477
mahphalke 1:819ac9aa5667 478 static struct iio_channel iio_channel_ch7_in = {
mahphalke 1:819ac9aa5667 479 .name = "voltage7",
mahphalke 1:819ac9aa5667 480 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 481 .ch_out = false,
mahphalke 1:819ac9aa5667 482 };
mahphalke 1:819ac9aa5667 483
mahphalke 1:819ac9aa5667 484 static struct iio_channel iio_channel_ch8_in = {
mahphalke 1:819ac9aa5667 485 .name = "voltage8",
mahphalke 1:819ac9aa5667 486 .attributes = channel_input_attributes,
mahphalke 1:819ac9aa5667 487 .ch_out = false,
mahphalke 1:819ac9aa5667 488 };
mahphalke 1:819ac9aa5667 489
mahphalke 1:819ac9aa5667 490
mahphalke 1:819ac9aa5667 491 static struct iio_channel *iio_ad7606_channels[] = {
mahphalke 1:819ac9aa5667 492 &iio_channel_ch1_in,
mahphalke 1:819ac9aa5667 493 &iio_channel_ch2_in,
mahphalke 1:819ac9aa5667 494 &iio_channel_ch3_in,
mahphalke 1:819ac9aa5667 495 &iio_channel_ch4_in,
mahphalke 1:819ac9aa5667 496 #if (AD7606X_ADC_CHANNELS > 4)
mahphalke 1:819ac9aa5667 497 &iio_channel_ch5_in,
mahphalke 1:819ac9aa5667 498 &iio_channel_ch6_in,
mahphalke 1:819ac9aa5667 499 #endif
mahphalke 1:819ac9aa5667 500 #if (AD7606X_ADC_CHANNELS > 6)
mahphalke 1:819ac9aa5667 501 &iio_channel_ch7_in,
mahphalke 1:819ac9aa5667 502 &iio_channel_ch8_in,
mahphalke 1:819ac9aa5667 503 #endif
mahphalke 1:819ac9aa5667 504 };
mahphalke 1:819ac9aa5667 505
mahphalke 1:819ac9aa5667 506 /******************************************************************************/
mahphalke 1:819ac9aa5667 507 /************************ Functions Declarations ******************************/
mahphalke 1:819ac9aa5667 508 /******************************************************************************/
mahphalke 1:819ac9aa5667 509
mahphalke 1:819ac9aa5667 510 #endif /* IIO_AD7606_ATTR_H_ */