linux/drivers/iio/pressure/hp206c.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * hp206c.c - HOPERF HP206C precision barometer and altimeter sensor
 *
 * Copyright (c) 2016, Intel Corporation.
 *
 * (7-bit I2C slave address 0x76)
 *
 * Datasheet:
 *  http://www.hoperf.com/upload/sensor/HP206C_DataSheet_EN_V2.0.pdf
 */

#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>

/* I2C commands: */
#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

/* Maximum spin for DEV_RDY */
#define HP206C_MAX_DEV_RDY_WAIT_COUNT
#define HP206C_DEV_RDY_WAIT_US

struct hp206c_data {};

struct hp206c_osr_setting {};

/* Data from Table 5 in datasheet. */
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)
{}

/* Spin for max 160ms until DEV_RDY is 1, or return error. */
static int hp206c_wait_dev_rdy(struct iio_dev *indio_dev)
{}

static int hp206c_set_compensation(struct i2c_client *client, bool enabled)
{}

/* Do a soft reset */
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();