#include <linux/module.h>
#include <linux/mod_devicetable.h>
#include <linux/i2c.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
#include <linux/delay.h>
#include <linux/util_macros.h>
#include <linux/unaligned.h>
#define HP206C_CMD_SOFT_RST …
#define HP206C_CMD_ADC_CVT …
#define HP206C_CMD_ADC_CVT_OSR_4096 …
#define HP206C_CMD_ADC_CVT_OSR_2048 …
#define HP206C_CMD_ADC_CVT_OSR_1024 …
#define HP206C_CMD_ADC_CVT_OSR_512 …
#define HP206C_CMD_ADC_CVT_OSR_256 …
#define HP206C_CMD_ADC_CVT_OSR_128 …
#define HP206C_CMD_ADC_CVT_CHNL_PT …
#define HP206C_CMD_ADC_CVT_CHNL_T …
#define HP206C_CMD_READ_P …
#define HP206C_CMD_READ_T …
#define HP206C_CMD_READ_REG …
#define HP206C_CMD_WRITE_REG …
#define HP206C_REG_INT_EN …
#define HP206C_REG_INT_CFG …
#define HP206C_REG_INT_SRC …
#define HP206C_FLAG_DEV_RDY …
#define HP206C_REG_PARA …
#define HP206C_FLAG_CMPS_EN …
#define HP206C_MAX_DEV_RDY_WAIT_COUNT …
#define HP206C_DEV_RDY_WAIT_US …
struct hp206c_data { … };
struct hp206c_osr_setting { … };
static const struct hp206c_osr_setting hp206c_osr_settings[] = …;
static const int hp206c_osr_rates[] = …;
static const char hp206c_osr_rates_str[] = …;
static inline int hp206c_read_reg(struct i2c_client *client, u8 reg)
{ … }
static inline int hp206c_write_reg(struct i2c_client *client, u8 reg, u8 val)
{ … }
static int hp206c_read_20bit(struct i2c_client *client, u8 cmd)
{ … }
static int hp206c_wait_dev_rdy(struct iio_dev *indio_dev)
{ … }
static int hp206c_set_compensation(struct i2c_client *client, bool enabled)
{ … }
static int hp206c_soft_reset(struct iio_dev *indio_dev)
{ … }
static int hp206c_conv_and_read(struct iio_dev *indio_dev,
u8 conv_cmd, u8 read_cmd,
unsigned int sleep_us)
{ … }
static int hp206c_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan, int *val,
int *val2, long mask)
{ … }
static int hp206c_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 hp206c_channels[] = …;
static IIO_CONST_ATTR_SAMP_FREQ_AVAIL(hp206c_osr_rates_str);
static struct attribute *hp206c_attributes[] = …;
static const struct attribute_group hp206c_attribute_group = …;
static const struct iio_info hp206c_info = …;
static int hp206c_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id hp206c_id[] = …;
MODULE_DEVICE_TABLE(i2c, hp206c_id);
static const struct acpi_device_id hp206c_acpi_match[] = …;
MODULE_DEVICE_TABLE(acpi, hp206c_acpi_match);
static struct i2c_driver hp206c_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;