18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * STMicroelectronics gyroscopes driver
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright 2012-2013 STMicroelectronics Inc.
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Denis Ciocca <denis.ciocca@st.com>
88c2ecf20Sopenharmony_ci * v. 1.0.0
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#ifndef ST_GYRO_H
128c2ecf20Sopenharmony_ci#define ST_GYRO_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include <linux/types.h>
158c2ecf20Sopenharmony_ci#include <linux/iio/common/st_sensors.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define L3G4200D_GYRO_DEV_NAME		"l3g4200d"
188c2ecf20Sopenharmony_ci#define LSM330D_GYRO_DEV_NAME		"lsm330d_gyro"
198c2ecf20Sopenharmony_ci#define LSM330DL_GYRO_DEV_NAME		"lsm330dl_gyro"
208c2ecf20Sopenharmony_ci#define LSM330DLC_GYRO_DEV_NAME		"lsm330dlc_gyro"
218c2ecf20Sopenharmony_ci#define L3GD20_GYRO_DEV_NAME		"l3gd20"
228c2ecf20Sopenharmony_ci#define L3GD20H_GYRO_DEV_NAME		"l3gd20h"
238c2ecf20Sopenharmony_ci#define L3G4IS_GYRO_DEV_NAME		"l3g4is_ui"
248c2ecf20Sopenharmony_ci#define LSM330_GYRO_DEV_NAME		"lsm330_gyro"
258c2ecf20Sopenharmony_ci#define LSM9DS0_GYRO_DEV_NAME		"lsm9ds0_gyro"
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci/**
288c2ecf20Sopenharmony_ci * struct st_sensors_platform_data - gyro platform data
298c2ecf20Sopenharmony_ci * @drdy_int_pin: DRDY on gyros is available only on INT2 pin.
308c2ecf20Sopenharmony_ci */
318c2ecf20Sopenharmony_cistatic __maybe_unused const struct st_sensors_platform_data gyro_pdata = {
328c2ecf20Sopenharmony_ci	.drdy_int_pin = 2,
338c2ecf20Sopenharmony_ci};
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciconst struct st_sensor_settings *st_gyro_get_settings(const char *name);
368c2ecf20Sopenharmony_ciint st_gyro_common_probe(struct iio_dev *indio_dev);
378c2ecf20Sopenharmony_civoid st_gyro_common_remove(struct iio_dev *indio_dev);
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci#ifdef CONFIG_IIO_BUFFER
408c2ecf20Sopenharmony_ciint st_gyro_allocate_ring(struct iio_dev *indio_dev);
418c2ecf20Sopenharmony_civoid st_gyro_deallocate_ring(struct iio_dev *indio_dev);
428c2ecf20Sopenharmony_ciint st_gyro_trig_set_state(struct iio_trigger *trig, bool state);
438c2ecf20Sopenharmony_ci#define ST_GYRO_TRIGGER_SET_STATE (&st_gyro_trig_set_state)
448c2ecf20Sopenharmony_ci#else /* CONFIG_IIO_BUFFER */
458c2ecf20Sopenharmony_cistatic inline int st_gyro_allocate_ring(struct iio_dev *indio_dev)
468c2ecf20Sopenharmony_ci{
478c2ecf20Sopenharmony_ci	return 0;
488c2ecf20Sopenharmony_ci}
498c2ecf20Sopenharmony_cistatic inline void st_gyro_deallocate_ring(struct iio_dev *indio_dev)
508c2ecf20Sopenharmony_ci{
518c2ecf20Sopenharmony_ci}
528c2ecf20Sopenharmony_ci#define ST_GYRO_TRIGGER_SET_STATE NULL
538c2ecf20Sopenharmony_ci#endif /* CONFIG_IIO_BUFFER */
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci#endif /* ST_GYRO_H */
56