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