#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/sysfs.h>
#include <linux/module.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
#include <linux/iio/imu/adis.h>
#define ADIS16240_STARTUP_DELAY …
#define ADIS16240_FLASH_CNT …
#define ADIS16240_SUPPLY_OUT …
#define ADIS16240_XACCL_OUT …
#define ADIS16240_YACCL_OUT …
#define ADIS16240_ZACCL_OUT …
#define ADIS16240_AUX_ADC …
#define ADIS16240_TEMP_OUT …
#define ADIS16240_XPEAK_OUT …
#define ADIS16240_YPEAK_OUT …
#define ADIS16240_ZPEAK_OUT …
#define ADIS16240_XYZPEAK_OUT …
#define ADIS16240_CAPT_BUF1 …
#define ADIS16240_CAPT_BUF2 …
#define ADIS16240_DIAG_STAT …
#define ADIS16240_EVNT_CNTR …
#define ADIS16240_CHK_SUM …
#define ADIS16240_XACCL_OFF …
#define ADIS16240_YACCL_OFF …
#define ADIS16240_ZACCL_OFF …
#define ADIS16240_CLK_TIME …
#define ADIS16240_CLK_DATE …
#define ADIS16240_CLK_YEAR …
#define ADIS16240_WAKE_TIME …
#define ADIS16240_WAKE_DATE …
#define ADIS16240_ALM_MAG1 …
#define ADIS16240_ALM_MAG2 …
#define ADIS16240_ALM_CTRL …
#define ADIS16240_XTRIG_CTRL …
#define ADIS16240_CAPT_PNTR …
#define ADIS16240_CAPT_CTRL …
#define ADIS16240_GPIO_CTRL …
#define ADIS16240_MSC_CTRL …
#define ADIS16240_SMPL_PRD …
#define ADIS16240_GLOB_CMD …
#define ADIS16240_MSC_CTRL_XYZPEAK_OUT_EN …
#define ADIS16240_MSC_CTRL_X_Y_ZPEAK_OUT_EN …
#define ADIS16240_MSC_CTRL_SELF_TEST_EN …
#define ADIS16240_MSC_CTRL_DATA_RDY_EN …
#define ADIS16240_MSC_CTRL_ACTIVE_HIGH …
#define ADIS16240_MSC_CTRL_DATA_RDY_DIO2 …
#define ADIS16240_DIAG_STAT_ALARM2 …
#define ADIS16240_DIAG_STAT_ALARM1 …
#define ADIS16240_DIAG_STAT_CPT_BUF_FUL …
#define ADIS16240_DIAG_STAT_CHKSUM …
#define ADIS16240_DIAG_STAT_PWRON_FAIL_BIT …
#define ADIS16240_DIAG_STAT_PWRON_BUSY …
#define ADIS16240_DIAG_STAT_SPI_FAIL_BIT …
#define ADIS16240_DIAG_STAT_FLASH_UPT_BIT …
#define ADIS16240_DIAG_STAT_POWER_HIGH_BIT …
#define ADIS16240_DIAG_STAT_POWER_LOW_BIT …
#define ADIS16240_GLOB_CMD_RESUME …
#define ADIS16240_GLOB_CMD_SW_RESET …
#define ADIS16240_GLOB_CMD_STANDBY …
#define ADIS16240_ERROR_ACTIVE …
enum adis16240_scan { … };
static ssize_t adis16240_spi_read_signed(struct device *dev,
struct device_attribute *attr,
char *buf,
unsigned int bits)
{ … }
static ssize_t adis16240_read_12bit_signed(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static IIO_DEVICE_ATTR(in_accel_xyz_squared_peak_raw, 0444,
adis16240_read_12bit_signed, NULL,
ADIS16240_XYZPEAK_OUT);
static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("4096");
static const u8 adis16240_addresses[][2] = …;
static int adis16240_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *val, int *val2,
long mask)
{ … }
static int adis16240_write_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int val,
int val2,
long mask)
{ … }
static const struct iio_chan_spec adis16240_channels[] = …;
static struct attribute *adis16240_attributes[] = …;
static const struct attribute_group adis16240_attribute_group = …;
static const struct iio_info adis16240_info = …;
static const char * const adis16240_status_error_msgs[] = …;
static const struct adis_timeout adis16240_timeouts = …;
static const struct adis_data adis16240_data = …;
static int adis16240_probe(struct spi_device *spi)
{ … }
static const struct of_device_id adis16240_of_match[] = …;
MODULE_DEVICE_TABLE(of, adis16240_of_match);
static struct spi_driver adis16240_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;
MODULE_IMPORT_NS(…);