162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Header file for hmc5843 driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Split from hmc5843.c 662306a36Sopenharmony_ci * Copyright (C) Josef Gajdusek <atx@atx.name> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef HMC5843_CORE_H 1062306a36Sopenharmony_ci#define HMC5843_CORE_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/regmap.h> 1362306a36Sopenharmony_ci#include <linux/iio/iio.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define HMC5843_CONFIG_REG_A 0x00 1662306a36Sopenharmony_ci#define HMC5843_CONFIG_REG_B 0x01 1762306a36Sopenharmony_ci#define HMC5843_MODE_REG 0x02 1862306a36Sopenharmony_ci#define HMC5843_DATA_OUT_MSB_REGS 0x03 1962306a36Sopenharmony_ci#define HMC5843_STATUS_REG 0x09 2062306a36Sopenharmony_ci#define HMC5843_ID_REG 0x0a 2162306a36Sopenharmony_ci#define HMC5843_ID_END 0x0c 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cienum hmc5843_ids { 2462306a36Sopenharmony_ci HMC5843_ID, 2562306a36Sopenharmony_ci HMC5883_ID, 2662306a36Sopenharmony_ci HMC5883L_ID, 2762306a36Sopenharmony_ci HMC5983_ID, 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/** 3162306a36Sopenharmony_ci * struct hmc5843_data - device specific data 3262306a36Sopenharmony_ci * @dev: actual device 3362306a36Sopenharmony_ci * @lock: update and read regmap data 3462306a36Sopenharmony_ci * @regmap: hardware access register maps 3562306a36Sopenharmony_ci * @variant: describe chip variants 3662306a36Sopenharmony_ci * @scan: buffer to pack data for passing to 3762306a36Sopenharmony_ci * iio_push_to_buffers_with_timestamp() 3862306a36Sopenharmony_ci */ 3962306a36Sopenharmony_cistruct hmc5843_data { 4062306a36Sopenharmony_ci struct device *dev; 4162306a36Sopenharmony_ci struct mutex lock; 4262306a36Sopenharmony_ci struct regmap *regmap; 4362306a36Sopenharmony_ci const struct hmc5843_chip_info *variant; 4462306a36Sopenharmony_ci struct iio_mount_matrix orientation; 4562306a36Sopenharmony_ci struct { 4662306a36Sopenharmony_ci __be16 chans[3]; 4762306a36Sopenharmony_ci s64 timestamp __aligned(8); 4862306a36Sopenharmony_ci } scan; 4962306a36Sopenharmony_ci}; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciint hmc5843_common_probe(struct device *dev, struct regmap *regmap, 5262306a36Sopenharmony_ci enum hmc5843_ids id, const char *name); 5362306a36Sopenharmony_civoid hmc5843_common_remove(struct device *dev); 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciextern const struct dev_pm_ops hmc5843_pm_ops; 5662306a36Sopenharmony_ci#endif /* HMC5843_CORE_H */ 57