18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * STMicroelectronics magnetometers 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_MAGN_H
128c2ecf20Sopenharmony_ci#define ST_MAGN_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include <linux/types.h>
158c2ecf20Sopenharmony_ci#include <linux/iio/common/st_sensors.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define LSM303DLH_MAGN_DEV_NAME		"lsm303dlh_magn"
188c2ecf20Sopenharmony_ci#define LSM303DLHC_MAGN_DEV_NAME	"lsm303dlhc_magn"
198c2ecf20Sopenharmony_ci#define LSM303DLM_MAGN_DEV_NAME		"lsm303dlm_magn"
208c2ecf20Sopenharmony_ci#define LIS3MDL_MAGN_DEV_NAME		"lis3mdl"
218c2ecf20Sopenharmony_ci#define LSM303AGR_MAGN_DEV_NAME		"lsm303agr_magn"
228c2ecf20Sopenharmony_ci#define LIS2MDL_MAGN_DEV_NAME		"lis2mdl"
238c2ecf20Sopenharmony_ci#define LSM9DS1_MAGN_DEV_NAME		"lsm9ds1_magn"
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciconst struct st_sensor_settings *st_magn_get_settings(const char *name);
268c2ecf20Sopenharmony_ciint st_magn_common_probe(struct iio_dev *indio_dev);
278c2ecf20Sopenharmony_civoid st_magn_common_remove(struct iio_dev *indio_dev);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci#ifdef CONFIG_IIO_BUFFER
308c2ecf20Sopenharmony_ciint st_magn_allocate_ring(struct iio_dev *indio_dev);
318c2ecf20Sopenharmony_civoid st_magn_deallocate_ring(struct iio_dev *indio_dev);
328c2ecf20Sopenharmony_ciint st_magn_trig_set_state(struct iio_trigger *trig, bool state);
338c2ecf20Sopenharmony_ci#define ST_MAGN_TRIGGER_SET_STATE (&st_magn_trig_set_state)
348c2ecf20Sopenharmony_ci#else /* CONFIG_IIO_BUFFER */
358c2ecf20Sopenharmony_cistatic inline int st_magn_probe_trigger(struct iio_dev *indio_dev, int irq)
368c2ecf20Sopenharmony_ci{
378c2ecf20Sopenharmony_ci	return 0;
388c2ecf20Sopenharmony_ci}
398c2ecf20Sopenharmony_cistatic inline void st_magn_remove_trigger(struct iio_dev *indio_dev, int irq)
408c2ecf20Sopenharmony_ci{
418c2ecf20Sopenharmony_ci	return;
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_cistatic inline int st_magn_allocate_ring(struct iio_dev *indio_dev)
448c2ecf20Sopenharmony_ci{
458c2ecf20Sopenharmony_ci	return 0;
468c2ecf20Sopenharmony_ci}
478c2ecf20Sopenharmony_cistatic inline void st_magn_deallocate_ring(struct iio_dev *indio_dev)
488c2ecf20Sopenharmony_ci{
498c2ecf20Sopenharmony_ci}
508c2ecf20Sopenharmony_ci#define ST_MAGN_TRIGGER_SET_STATE NULL
518c2ecf20Sopenharmony_ci#endif /* CONFIG_IIO_BUFFER */
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci#endif /* ST_MAGN_H */
54