2018-09-01 22:52:14 +03:00
/* SPDX-License-Identifier: GPL-2.0 */
2015-03-14 23:29:31 +03:00
/*
* MS5611 pressure and temperature sensor driver
*
* Copyright ( c ) Tomasz Duszynski < tduszyns @ gmail . com >
*
*/
# ifndef _MS5611_H
# define _MS5611_H
# include <linux/device.h>
# include <linux/iio/iio.h>
# include <linux/mutex.h>
# define MS5611_RESET 0x1e
# define MS5611_READ_ADC 0x00
# define MS5611_READ_PROM_WORD 0xA0
# define MS5611_PROM_WORDS_NB 8
2015-06-23 21:45:48 +03:00
enum {
MS5611 ,
MS5607 ,
} ;
2016-03-01 13:31:38 +03:00
/*
* OverSampling Rate descriptor .
* Warning : cmd MUST be kept aligned on a word boundary ( see
* m5611_spi_read_adc_temp_and_pressure in ms5611_spi . c ) .
*/
struct ms5611_osr {
unsigned long conv_usec ;
u8 cmd ;
unsigned short rate ;
} ;
2015-03-14 23:29:31 +03:00
struct ms5611_state {
void * client ;
struct mutex lock ;
2016-03-01 13:31:38 +03:00
const struct ms5611_osr * pressure_osr ;
const struct ms5611_osr * temp_osr ;
2022-10-21 16:58:20 +03:00
u16 prom [ MS5611_PROM_WORDS_NB ] ;
2021-10-20 17:21:10 +03:00
int ( * reset ) ( struct ms5611_state * st ) ;
int ( * read_prom_word ) ( struct ms5611_state * st , int index , u16 * word ) ;
int ( * read_adc_temp_and_pressure ) ( struct ms5611_state * st ,
2015-03-14 23:29:31 +03:00
s32 * temp , s32 * pressure ) ;
2022-10-21 16:58:20 +03:00
int ( * compensate_temp_and_pressure ) ( struct ms5611_state * st , s32 * temp ,
s32 * pressure ) ;
2015-03-14 23:29:31 +03:00
} ;
2016-02-17 20:52:50 +03:00
int ms5611_probe ( struct iio_dev * indio_dev , struct device * dev ,
2018-02-16 22:44:41 +03:00
const char * name , int type ) ;
2015-03-14 23:29:31 +03:00
# endif /* _MS5611_H */