162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef BMI160_H_ 362306a36Sopenharmony_ci#define BMI160_H_ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/iio/iio.h> 662306a36Sopenharmony_ci#include <linux/regulator/consumer.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_cistruct bmi160_data { 962306a36Sopenharmony_ci struct regmap *regmap; 1062306a36Sopenharmony_ci struct iio_trigger *trig; 1162306a36Sopenharmony_ci struct regulator_bulk_data supplies[2]; 1262306a36Sopenharmony_ci struct iio_mount_matrix orientation; 1362306a36Sopenharmony_ci /* 1462306a36Sopenharmony_ci * Ensure natural alignment for timestamp if present. 1562306a36Sopenharmony_ci * Max length needed: 2 * 3 channels + 4 bytes padding + 8 byte ts. 1662306a36Sopenharmony_ci * If fewer channels are enabled, less space may be needed, as 1762306a36Sopenharmony_ci * long as the timestamp is still aligned to 8 bytes. 1862306a36Sopenharmony_ci */ 1962306a36Sopenharmony_ci __le16 buf[12] __aligned(8); 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ciextern const struct regmap_config bmi160_regmap_config; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciint bmi160_core_probe(struct device *dev, struct regmap *regmap, 2562306a36Sopenharmony_ci const char *name, bool use_spi); 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciint bmi160_enable_irq(struct regmap *regmap, bool enable); 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ciint bmi160_probe_trigger(struct iio_dev *indio_dev, int irq, u32 irq_type); 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#endif /* BMI160_H_ */ 32