#include <linux/module.h>
#include <linux/spi/spi.h>
#include <linux/iio/iio.h>
#include <linux/iio/imu/adis.h>
#include <linux/debugfs.h>
#define ADIS16460_REG_FLASH_CNT …
#define ADIS16460_REG_DIAG_STAT …
#define ADIS16460_REG_X_GYRO_LOW …
#define ADIS16460_REG_X_GYRO_OUT …
#define ADIS16460_REG_Y_GYRO_LOW …
#define ADIS16460_REG_Y_GYRO_OUT …
#define ADIS16460_REG_Z_GYRO_LOW …
#define ADIS16460_REG_Z_GYRO_OUT …
#define ADIS16460_REG_X_ACCL_LOW …
#define ADIS16460_REG_X_ACCL_OUT …
#define ADIS16460_REG_Y_ACCL_LOW …
#define ADIS16460_REG_Y_ACCL_OUT …
#define ADIS16460_REG_Z_ACCL_LOW …
#define ADIS16460_REG_Z_ACCL_OUT …
#define ADIS16460_REG_SMPL_CNTR …
#define ADIS16460_REG_TEMP_OUT …
#define ADIS16460_REG_X_DELT_ANG …
#define ADIS16460_REG_Y_DELT_ANG …
#define ADIS16460_REG_Z_DELT_ANG …
#define ADIS16460_REG_X_DELT_VEL …
#define ADIS16460_REG_Y_DELT_VEL …
#define ADIS16460_REG_Z_DELT_VEL …
#define ADIS16460_REG_MSC_CTRL …
#define ADIS16460_REG_SYNC_SCAL …
#define ADIS16460_REG_DEC_RATE …
#define ADIS16460_REG_FLTR_CTRL …
#define ADIS16460_REG_GLOB_CMD …
#define ADIS16460_REG_X_GYRO_OFF …
#define ADIS16460_REG_Y_GYRO_OFF …
#define ADIS16460_REG_Z_GYRO_OFF …
#define ADIS16460_REG_X_ACCL_OFF …
#define ADIS16460_REG_Y_ACCL_OFF …
#define ADIS16460_REG_Z_ACCL_OFF …
#define ADIS16460_REG_LOT_ID1 …
#define ADIS16460_REG_LOT_ID2 …
#define ADIS16460_REG_PROD_ID …
#define ADIS16460_REG_SERIAL_NUM …
#define ADIS16460_REG_CAL_SGNTR …
#define ADIS16460_REG_CAL_CRC …
#define ADIS16460_REG_CODE_SGNTR …
#define ADIS16460_REG_CODE_CRC …
struct adis16460_chip_info { … };
struct adis16460 { … };
static int adis16460_show_serial_number(void *arg, u64 *val)
{ … }
DEFINE_DEBUGFS_ATTRIBUTE(…);
static int adis16460_show_product_id(void *arg, u64 *val)
{ … }
DEFINE_DEBUGFS_ATTRIBUTE(…);
static int adis16460_show_flash_count(void *arg, u64 *val)
{ … }
DEFINE_DEBUGFS_ATTRIBUTE(…);
static void adis16460_debugfs_init(struct iio_dev *indio_dev)
{ … }
static int adis16460_set_freq(struct iio_dev *indio_dev, int val, int val2)
{ … }
static int adis16460_get_freq(struct iio_dev *indio_dev, int *val, int *val2)
{ … }
static int adis16460_read_raw(struct iio_dev *indio_dev,
const struct iio_chan_spec *chan, int *val, int *val2, long info)
{ … }
static int adis16460_write_raw(struct iio_dev *indio_dev,
const struct iio_chan_spec *chan, int val, int val2, long info)
{ … }
enum { … };
#define ADIS16460_MOD_CHANNEL(_type, _mod, _address, _si, _bits) …
#define ADIS16460_GYRO_CHANNEL(_mod) …
#define ADIS16460_ACCEL_CHANNEL(_mod) …
#define ADIS16460_TEMP_CHANNEL() …
static const struct iio_chan_spec adis16460_channels[] = …;
static const struct adis16460_chip_info adis16460_chip_info = …;
static const struct iio_info adis16460_info = …;
#define ADIS16460_DIAG_STAT_IN_CLK_OOS …
#define ADIS16460_DIAG_STAT_FLASH_MEM …
#define ADIS16460_DIAG_STAT_SELF_TEST …
#define ADIS16460_DIAG_STAT_OVERRANGE …
#define ADIS16460_DIAG_STAT_SPI_COMM …
#define ADIS16460_DIAG_STAT_FLASH_UPT …
static const char * const adis16460_status_error_msgs[] = …;
static const struct adis_timeout adis16460_timeouts = …;
static const struct adis_data adis16460_data = …;
static int adis16460_probe(struct spi_device *spi)
{ … }
static const struct spi_device_id adis16460_ids[] = …;
MODULE_DEVICE_TABLE(spi, adis16460_ids);
static const struct of_device_id adis16460_of_match[] = …;
MODULE_DEVICE_TABLE(of, adis16460_of_match);
static struct spi_driver adis16460_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_IMPORT_NS(…);