xref: /linux/drivers/iio/imu/inv_mpu6050/inv_mpu_magn.h (revision ead5d1f4d877e92c051e1a1ade623d0d30e71619)
1b1392de0SJean-Baptiste Maneyrol /* SPDX-License-Identifier: GPL-2.0 */
2b1392de0SJean-Baptiste Maneyrol /*
3b1392de0SJean-Baptiste Maneyrol  * Copyright (C) 2019 TDK-InvenSense, Inc.
4b1392de0SJean-Baptiste Maneyrol  */
5b1392de0SJean-Baptiste Maneyrol 
6b1392de0SJean-Baptiste Maneyrol #ifndef INV_MPU_MAGN_H_
7b1392de0SJean-Baptiste Maneyrol #define INV_MPU_MAGN_H_
8b1392de0SJean-Baptiste Maneyrol 
9b1392de0SJean-Baptiste Maneyrol #include <linux/kernel.h>
10b1392de0SJean-Baptiste Maneyrol 
11b1392de0SJean-Baptiste Maneyrol #include "inv_mpu_iio.h"
12b1392de0SJean-Baptiste Maneyrol 
13*ffc9648aSJean-Baptiste Maneyrol /* Magnetometer maximum frequency */
14*ffc9648aSJean-Baptiste Maneyrol #define INV_MPU_MAGN_FREQ_HZ_MAX	50
15*ffc9648aSJean-Baptiste Maneyrol 
16b1392de0SJean-Baptiste Maneyrol int inv_mpu_magn_probe(struct inv_mpu6050_state *st);
17b1392de0SJean-Baptiste Maneyrol 
18b1392de0SJean-Baptiste Maneyrol /**
19b1392de0SJean-Baptiste Maneyrol  * inv_mpu_magn_get_scale() - get magnetometer scale value
20b1392de0SJean-Baptiste Maneyrol  * @st: driver internal state
21b1392de0SJean-Baptiste Maneyrol  *
22b1392de0SJean-Baptiste Maneyrol  * Returns IIO data format.
23b1392de0SJean-Baptiste Maneyrol  */
inv_mpu_magn_get_scale(const struct inv_mpu6050_state * st,const struct iio_chan_spec * chan,int * val,int * val2)24b1392de0SJean-Baptiste Maneyrol static inline int inv_mpu_magn_get_scale(const struct inv_mpu6050_state *st,
25b1392de0SJean-Baptiste Maneyrol 					 const struct iio_chan_spec *chan,
26b1392de0SJean-Baptiste Maneyrol 					 int *val, int *val2)
27b1392de0SJean-Baptiste Maneyrol {
28b1392de0SJean-Baptiste Maneyrol 	*val = 0;
29b1392de0SJean-Baptiste Maneyrol 	*val2 = st->magn_raw_to_gauss[chan->address];
30b1392de0SJean-Baptiste Maneyrol 	return IIO_VAL_INT_PLUS_MICRO;
31b1392de0SJean-Baptiste Maneyrol }
32b1392de0SJean-Baptiste Maneyrol 
33b1392de0SJean-Baptiste Maneyrol int inv_mpu_magn_set_rate(const struct inv_mpu6050_state *st, int fifo_rate);
34b1392de0SJean-Baptiste Maneyrol 
35b1392de0SJean-Baptiste Maneyrol int inv_mpu_magn_set_orient(struct inv_mpu6050_state *st);
36b1392de0SJean-Baptiste Maneyrol 
3792e7407aSJean-Baptiste Maneyrol int inv_mpu_magn_read(struct inv_mpu6050_state *st, int axis, int *val);
38b1392de0SJean-Baptiste Maneyrol 
39b1392de0SJean-Baptiste Maneyrol #endif		/* INV_MPU_MAGN_H_ */
40