1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 27247645fSCristina Moraru /* 37247645fSCristina Moraru * Header file for hmc5843 driver 47247645fSCristina Moraru * 57247645fSCristina Moraru * Split from hmc5843.c 67247645fSCristina Moraru * Copyright (C) Josef Gajdusek <atx@atx.name> 77247645fSCristina Moraru */ 87247645fSCristina Moraru 97247645fSCristina Moraru #ifndef HMC5843_CORE_H 107247645fSCristina Moraru #define HMC5843_CORE_H 117247645fSCristina Moraru 127247645fSCristina Moraru #include <linux/regmap.h> 137247645fSCristina Moraru #include <linux/iio/iio.h> 147247645fSCristina Moraru 157247645fSCristina Moraru #define HMC5843_CONFIG_REG_A 0x00 167247645fSCristina Moraru #define HMC5843_CONFIG_REG_B 0x01 177247645fSCristina Moraru #define HMC5843_MODE_REG 0x02 187247645fSCristina Moraru #define HMC5843_DATA_OUT_MSB_REGS 0x03 197247645fSCristina Moraru #define HMC5843_STATUS_REG 0x09 207247645fSCristina Moraru #define HMC5843_ID_REG 0x0a 217247645fSCristina Moraru #define HMC5843_ID_END 0x0c 227247645fSCristina Moraru 237247645fSCristina Moraru enum hmc5843_ids { 247247645fSCristina Moraru HMC5843_ID, 257247645fSCristina Moraru HMC5883_ID, 267247645fSCristina Moraru HMC5883L_ID, 277247645fSCristina Moraru HMC5983_ID, 287247645fSCristina Moraru }; 297247645fSCristina Moraru 307247645fSCristina Moraru /** 31f9c4c27fSSong Qiang * struct hmc5843_data - device specific data 327247645fSCristina Moraru * @dev: actual device 337247645fSCristina Moraru * @lock: update and read regmap data 347247645fSCristina Moraru * @regmap: hardware access register maps 357247645fSCristina Moraru * @variant: describe chip variants 361ef2f51eSJonathan Cameron * @scan: buffer to pack data for passing to 371ef2f51eSJonathan Cameron * iio_push_to_buffers_with_timestamp() 387247645fSCristina Moraru */ 397247645fSCristina Moraru struct hmc5843_data { 407247645fSCristina Moraru struct device *dev; 417247645fSCristina Moraru struct mutex lock; 427247645fSCristina Moraru struct regmap *regmap; 437247645fSCristina Moraru const struct hmc5843_chip_info *variant; 448d7ea738SH. Nikolaus Schaller struct iio_mount_matrix orientation; 451ef2f51eSJonathan Cameron struct { 461ef2f51eSJonathan Cameron __be16 chans[3]; 471ef2f51eSJonathan Cameron s64 timestamp __aligned(8); 481ef2f51eSJonathan Cameron } scan; 497247645fSCristina Moraru }; 507247645fSCristina Moraru 517247645fSCristina Moraru int hmc5843_common_probe(struct device *dev, struct regmap *regmap, 527247645fSCristina Moraru enum hmc5843_ids id, const char *name); 534b6fb9f3SUwe Kleine-König void hmc5843_common_remove(struct device *dev); 547247645fSCristina Moraru 55*71041f73SJonathan Cameron extern const struct dev_pm_ops hmc5843_pm_ops; 567247645fSCristina Moraru #endif /* HMC5843_CORE_H */ 57