18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * STMicroelectronics pressures driver
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright 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_PRESS_H
128c2ecf20Sopenharmony_ci#define ST_PRESS_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include <linux/types.h>
158c2ecf20Sopenharmony_ci#include <linux/iio/common/st_sensors.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cienum st_press_type {
188c2ecf20Sopenharmony_ci	LPS001WP,
198c2ecf20Sopenharmony_ci	LPS25H,
208c2ecf20Sopenharmony_ci	LPS331AP,
218c2ecf20Sopenharmony_ci	LPS22HB,
228c2ecf20Sopenharmony_ci	LPS33HW,
238c2ecf20Sopenharmony_ci	LPS35HW,
248c2ecf20Sopenharmony_ci	LPS22HH,
258c2ecf20Sopenharmony_ci	ST_PRESS_MAX,
268c2ecf20Sopenharmony_ci};
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci#define LPS001WP_PRESS_DEV_NAME		"lps001wp"
298c2ecf20Sopenharmony_ci#define LPS25H_PRESS_DEV_NAME		"lps25h"
308c2ecf20Sopenharmony_ci#define LPS331AP_PRESS_DEV_NAME		"lps331ap"
318c2ecf20Sopenharmony_ci#define LPS22HB_PRESS_DEV_NAME		"lps22hb"
328c2ecf20Sopenharmony_ci#define LPS33HW_PRESS_DEV_NAME		"lps33hw"
338c2ecf20Sopenharmony_ci#define LPS35HW_PRESS_DEV_NAME		"lps35hw"
348c2ecf20Sopenharmony_ci#define LPS22HH_PRESS_DEV_NAME		"lps22hh"
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci/**
378c2ecf20Sopenharmony_ci * struct st_sensors_platform_data - default press platform data
388c2ecf20Sopenharmony_ci * @drdy_int_pin: default press DRDY is available on INT1 pin.
398c2ecf20Sopenharmony_ci */
408c2ecf20Sopenharmony_cistatic __maybe_unused const struct st_sensors_platform_data default_press_pdata = {
418c2ecf20Sopenharmony_ci	.drdy_int_pin = 1,
428c2ecf20Sopenharmony_ci};
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciconst struct st_sensor_settings *st_press_get_settings(const char *name);
458c2ecf20Sopenharmony_ciint st_press_common_probe(struct iio_dev *indio_dev);
468c2ecf20Sopenharmony_civoid st_press_common_remove(struct iio_dev *indio_dev);
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci#ifdef CONFIG_IIO_BUFFER
498c2ecf20Sopenharmony_ciint st_press_allocate_ring(struct iio_dev *indio_dev);
508c2ecf20Sopenharmony_civoid st_press_deallocate_ring(struct iio_dev *indio_dev);
518c2ecf20Sopenharmony_ciint st_press_trig_set_state(struct iio_trigger *trig, bool state);
528c2ecf20Sopenharmony_ci#define ST_PRESS_TRIGGER_SET_STATE (&st_press_trig_set_state)
538c2ecf20Sopenharmony_ci#else /* CONFIG_IIO_BUFFER */
548c2ecf20Sopenharmony_cistatic inline int st_press_allocate_ring(struct iio_dev *indio_dev)
558c2ecf20Sopenharmony_ci{
568c2ecf20Sopenharmony_ci	return 0;
578c2ecf20Sopenharmony_ci}
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_cistatic inline void st_press_deallocate_ring(struct iio_dev *indio_dev)
608c2ecf20Sopenharmony_ci{
618c2ecf20Sopenharmony_ci}
628c2ecf20Sopenharmony_ci#define ST_PRESS_TRIGGER_SET_STATE NULL
638c2ecf20Sopenharmony_ci#endif /* CONFIG_IIO_BUFFER */
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci#endif /* ST_PRESS_H */
66