xref: /openbmc/linux/drivers/iio/adc/ltc2497.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
169548b7cSUwe Kleine-König /* SPDX-License-Identifier: GPL-2.0-only */
269548b7cSUwe Kleine-König 
369548b7cSUwe Kleine-König #define LTC2497_ENABLE			0xA0
469548b7cSUwe Kleine-König #define LTC2497_CONFIG_DEFAULT		LTC2497_ENABLE
569548b7cSUwe Kleine-König #define LTC2497_CONVERSION_TIME_MS	150ULL
669548b7cSUwe Kleine-König 
72187cfebSCiprian Regus struct ltc2497_chip_info {
82187cfebSCiprian Regus 	u32 resolution;
91695c52aSCiprian Regus 	const char *name;
102187cfebSCiprian Regus };
112187cfebSCiprian Regus 
1269548b7cSUwe Kleine-König struct ltc2497core_driverdata {
1369548b7cSUwe Kleine-König 	struct regulator *ref;
1469548b7cSUwe Kleine-König 	ktime_t	time_prev;
15*da8091f8SNuno Sá 	/* lock to protect against multiple access to the device */
16*da8091f8SNuno Sá 	struct mutex lock;
172187cfebSCiprian Regus 	const struct ltc2497_chip_info	*chip_info;
1869548b7cSUwe Kleine-König 	u8 addr_prev;
1969548b7cSUwe Kleine-König 	int (*result_and_measure)(struct ltc2497core_driverdata *ddata,
2069548b7cSUwe Kleine-König 				  u8 address, int *val);
2169548b7cSUwe Kleine-König };
2269548b7cSUwe Kleine-König 
2369548b7cSUwe Kleine-König int ltc2497core_probe(struct device *dev, struct iio_dev *indio_dev);
2469548b7cSUwe Kleine-König void ltc2497core_remove(struct iio_dev *indio_dev);
2569548b7cSUwe Kleine-König 
2669548b7cSUwe Kleine-König MODULE_IMPORT_NS(LTC2497);
27