cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ms5611.h (1435B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * MS5611 pressure and temperature sensor driver
      4 *
      5 * Copyright (c) Tomasz Duszynski <tduszyns@gmail.com>
      6 *
      7 */
      8
      9#ifndef _MS5611_H
     10#define _MS5611_H
     11
     12#include <linux/device.h>
     13#include <linux/iio/iio.h>
     14#include <linux/mutex.h>
     15
     16struct regulator;
     17
     18#define MS5611_RESET			0x1e
     19#define MS5611_READ_ADC			0x00
     20#define MS5611_READ_PROM_WORD		0xA0
     21#define MS5611_PROM_WORDS_NB		8
     22
     23enum {
     24	MS5611,
     25	MS5607,
     26};
     27
     28struct ms5611_chip_info {
     29	u16 prom[MS5611_PROM_WORDS_NB];
     30
     31	int (*temp_and_pressure_compensate)(struct ms5611_chip_info *chip_info,
     32					    s32 *temp, s32 *pressure);
     33};
     34
     35/*
     36 * OverSampling Rate descriptor.
     37 * Warning: cmd MUST be kept aligned on a word boundary (see
     38 * m5611_spi_read_adc_temp_and_pressure in ms5611_spi.c).
     39 */
     40struct ms5611_osr {
     41	unsigned long conv_usec;
     42	u8 cmd;
     43	unsigned short rate;
     44};
     45
     46struct ms5611_state {
     47	void *client;
     48	struct mutex lock;
     49
     50	const struct ms5611_osr *pressure_osr;
     51	const struct ms5611_osr *temp_osr;
     52
     53	int (*reset)(struct ms5611_state *st);
     54	int (*read_prom_word)(struct ms5611_state *st, int index, u16 *word);
     55	int (*read_adc_temp_and_pressure)(struct ms5611_state *st,
     56					  s32 *temp, s32 *pressure);
     57
     58	struct ms5611_chip_info *chip_info;
     59	struct regulator *vdd;
     60};
     61
     62int ms5611_probe(struct iio_dev *indio_dev, struct device *dev,
     63		 const char *name, int type);
     64void ms5611_remove(struct iio_dev *indio_dev);
     65
     66#endif /* _MS5611_H */