#ifndef ST_SENSORS_H
#define ST_SENSORS_H
#include <linux/i2c.h>
#include <linux/spi/spi.h>
#include <linux/irqreturn.h>
#include <linux/iio/iio.h>
#include <linux/iio/trigger.h>
#include <linux/bitops.h>
#include <linux/regulator/consumer.h>
#include <linux/regmap.h>
#include <linux/platform_data/st_sensors_pdata.h>
#define LSM9DS0_IMU_DEV_NAME …
#define LSM303D_IMU_DEV_NAME …
#define ST_SENSORS_MAX_BUFFER_SIZE …
#define ST_SENSORS_ODR_LIST_MAX …
#define ST_SENSORS_FULLSCALE_AVL_MAX …
#define ST_SENSORS_NUMBER_ALL_CHANNELS …
#define ST_SENSORS_ENABLE_ALL_AXIS …
#define ST_SENSORS_SCAN_X …
#define ST_SENSORS_SCAN_Y …
#define ST_SENSORS_SCAN_Z …
#define ST_SENSORS_DEFAULT_POWER_ON_VALUE …
#define ST_SENSORS_DEFAULT_POWER_OFF_VALUE …
#define ST_SENSORS_DEFAULT_WAI_ADDRESS …
#define ST_SENSORS_DEFAULT_AXIS_ADDR …
#define ST_SENSORS_DEFAULT_AXIS_MASK …
#define ST_SENSORS_DEFAULT_AXIS_N_BIT …
#define ST_SENSORS_DEFAULT_STAT_ADDR …
#define ST_SENSORS_MAX_NAME …
#define ST_SENSORS_MAX_4WAI …
#define ST_SENSORS_LSM_CHANNELS_EXT(device_type, mask, index, mod, \
ch2, s, endian, rbits, sbits, addr, ext) …
#define ST_SENSORS_LSM_CHANNELS(device_type, mask, index, mod, \
ch2, s, endian, rbits, sbits, addr) …
#define ST_SENSORS_DEV_ATTR_SAMP_FREQ_AVAIL() …
#define ST_SENSORS_DEV_ATTR_SCALE_AVAIL(name) …
struct st_sensor_odr_avl { … };
struct st_sensor_odr { … };
struct st_sensor_power { … };
struct st_sensor_axis { … };
struct st_sensor_fullscale_avl { … };
struct st_sensor_fullscale { … };
struct st_sensor_sim { … };
struct st_sensor_bdu { … };
struct st_sensor_das { … };
struct st_sensor_int_drdy { … };
struct st_sensor_data_ready_irq { … };
struct st_sensor_settings { … };
struct st_sensor_data { … };
#ifdef CONFIG_IIO_BUFFER
irqreturn_t st_sensors_trigger_handler(int irq, void *p);
#endif
#ifdef CONFIG_IIO_TRIGGER
int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
const struct iio_trigger_ops *trigger_ops);
int st_sensors_validate_device(struct iio_trigger *trig,
struct iio_dev *indio_dev);
#else
static inline int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
const struct iio_trigger_ops *trigger_ops)
{
return 0;
}
#define st_sensors_validate_device …
#endif
int st_sensors_init_sensor(struct iio_dev *indio_dev,
struct st_sensors_platform_data *pdata);
int st_sensors_set_enable(struct iio_dev *indio_dev, bool enable);
int st_sensors_set_axis_enable(struct iio_dev *indio_dev, u8 axis_enable);
int st_sensors_power_enable(struct iio_dev *indio_dev);
int st_sensors_debugfs_reg_access(struct iio_dev *indio_dev,
unsigned reg, unsigned writeval,
unsigned *readval);
int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr);
int st_sensors_set_dataready_irq(struct iio_dev *indio_dev, bool enable);
int st_sensors_set_fullscale_by_gain(struct iio_dev *indio_dev, int scale);
int st_sensors_read_info_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *ch, int *val);
int st_sensors_get_settings_index(const char *name,
const struct st_sensor_settings *list,
const int list_length);
int st_sensors_verify_id(struct iio_dev *indio_dev);
ssize_t st_sensors_sysfs_sampling_frequency_avail(struct device *dev,
struct device_attribute *attr, char *buf);
ssize_t st_sensors_sysfs_scale_avail(struct device *dev,
struct device_attribute *attr, char *buf);
void st_sensors_dev_name_probe(struct device *dev, char *name, int len);
const struct st_sensor_settings *st_accel_get_settings(const char *name);
int st_accel_common_probe(struct iio_dev *indio_dev);
const struct st_sensor_settings *st_gyro_get_settings(const char *name);
int st_gyro_common_probe(struct iio_dev *indio_dev);
const struct st_sensor_settings *st_magn_get_settings(const char *name);
int st_magn_common_probe(struct iio_dev *indio_dev);
const struct st_sensor_settings *st_press_get_settings(const char *name);
int st_press_common_probe(struct iio_dev *indio_dev);
#endif