xref: /openbmc/linux/drivers/iio/gyro/st_gyro.h (revision 45a4e4220bf4927e321e18750e47c576bf62b000)
17be56a8fSDenis Ciocca /*
27be56a8fSDenis Ciocca  * STMicroelectronics gyroscopes driver
37be56a8fSDenis Ciocca  *
47be56a8fSDenis Ciocca  * Copyright 2012-2013 STMicroelectronics Inc.
57be56a8fSDenis Ciocca  *
67be56a8fSDenis Ciocca  * Denis Ciocca <denis.ciocca@st.com>
77be56a8fSDenis Ciocca  * v. 1.0.0
87be56a8fSDenis Ciocca  * Licensed under the GPL-2.
97be56a8fSDenis Ciocca  */
107be56a8fSDenis Ciocca 
117be56a8fSDenis Ciocca #ifndef ST_GYRO_H
127be56a8fSDenis Ciocca #define ST_GYRO_H
137be56a8fSDenis Ciocca 
147be56a8fSDenis Ciocca #include <linux/types.h>
157be56a8fSDenis Ciocca #include <linux/iio/common/st_sensors.h>
167be56a8fSDenis Ciocca 
177be56a8fSDenis Ciocca #define L3G4200D_GYRO_DEV_NAME		"l3g4200d"
187be56a8fSDenis Ciocca #define LSM330D_GYRO_DEV_NAME		"lsm330d_gyro"
197be56a8fSDenis Ciocca #define LSM330DL_GYRO_DEV_NAME		"lsm330dl_gyro"
207be56a8fSDenis Ciocca #define LSM330DLC_GYRO_DEV_NAME		"lsm330dlc_gyro"
217be56a8fSDenis Ciocca #define L3GD20_GYRO_DEV_NAME		"l3gd20"
22*45a4e422SLorenzo Bianconi #define L3GD20H_GYRO_DEV_NAME		"l3gd20h"
237be56a8fSDenis Ciocca #define L3G4IS_GYRO_DEV_NAME		"l3g4is_ui"
247be56a8fSDenis Ciocca #define LSM330_GYRO_DEV_NAME		"lsm330_gyro"
2541c128cbSCrestez Dan Leonard #define LSM9DS0_GYRO_DEV_NAME		"lsm9ds0_gyro"
267be56a8fSDenis Ciocca 
2723cde4d6SDenis CIOCCA /**
2823cde4d6SDenis CIOCCA  * struct st_sensors_platform_data - gyro platform data
2923cde4d6SDenis CIOCCA  * @drdy_int_pin: DRDY on gyros is available only on INT2 pin.
3023cde4d6SDenis CIOCCA  */
3123cde4d6SDenis CIOCCA static const struct st_sensors_platform_data gyro_pdata = {
3223cde4d6SDenis CIOCCA 	.drdy_int_pin = 2,
3323cde4d6SDenis CIOCCA };
3423cde4d6SDenis CIOCCA 
35ef67b341SDenis CIOCCA int st_gyro_common_probe(struct iio_dev *indio_dev);
367be56a8fSDenis Ciocca void st_gyro_common_remove(struct iio_dev *indio_dev);
377be56a8fSDenis Ciocca 
387be56a8fSDenis Ciocca #ifdef CONFIG_IIO_BUFFER
397be56a8fSDenis Ciocca int st_gyro_allocate_ring(struct iio_dev *indio_dev);
407be56a8fSDenis Ciocca void st_gyro_deallocate_ring(struct iio_dev *indio_dev);
417be56a8fSDenis Ciocca int st_gyro_trig_set_state(struct iio_trigger *trig, bool state);
427be56a8fSDenis Ciocca #define ST_GYRO_TRIGGER_SET_STATE (&st_gyro_trig_set_state)
437be56a8fSDenis Ciocca #else /* CONFIG_IIO_BUFFER */
447be56a8fSDenis Ciocca static inline int st_gyro_allocate_ring(struct iio_dev *indio_dev)
457be56a8fSDenis Ciocca {
467be56a8fSDenis Ciocca 	return 0;
477be56a8fSDenis Ciocca }
487be56a8fSDenis Ciocca static inline void st_gyro_deallocate_ring(struct iio_dev *indio_dev)
497be56a8fSDenis Ciocca {
507be56a8fSDenis Ciocca }
517be56a8fSDenis Ciocca #define ST_GYRO_TRIGGER_SET_STATE NULL
527be56a8fSDenis Ciocca #endif /* CONFIG_IIO_BUFFER */
537be56a8fSDenis Ciocca 
547be56a8fSDenis Ciocca #endif /* ST_GYRO_H */
55