linux/drivers/iio/magnetometer/hmc5843.h
<<
>>
Prefs
   1/*
   2 * Header file for hmc5843 driver
   3 *
   4 * Split from hmc5843.c
   5 * Copyright (C) Josef Gajdusek <atx@atx.name>
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License version 2 as
   9 * published by the Free Software Foundation.
  10 */
  11
  12#ifndef HMC5843_CORE_H
  13#define HMC5843_CORE_H
  14
  15#include <linux/regmap.h>
  16#include <linux/iio/iio.h>
  17
  18#define HMC5843_CONFIG_REG_A                    0x00
  19#define HMC5843_CONFIG_REG_B                    0x01
  20#define HMC5843_MODE_REG                        0x02
  21#define HMC5843_DATA_OUT_MSB_REGS               0x03
  22#define HMC5843_STATUS_REG                      0x09
  23#define HMC5843_ID_REG                          0x0a
  24#define HMC5843_ID_END                          0x0c
  25
  26enum hmc5843_ids {
  27        HMC5843_ID,
  28        HMC5883_ID,
  29        HMC5883L_ID,
  30        HMC5983_ID,
  31};
  32
  33/**
  34 * struct hcm5843_data  - device specific data
  35 * @dev:                actual device
  36 * @lock:               update and read regmap data
  37 * @regmap:             hardware access register maps
  38 * @variant:            describe chip variants
  39 * @buffer:             3x 16-bit channels + padding + 64-bit timestamp
  40 */
  41struct hmc5843_data {
  42        struct device *dev;
  43        struct mutex lock;
  44        struct regmap *regmap;
  45        const struct hmc5843_chip_info *variant;
  46        __be16 buffer[8];
  47};
  48
  49int hmc5843_common_probe(struct device *dev, struct regmap *regmap,
  50                         enum hmc5843_ids id, const char *name);
  51int hmc5843_common_remove(struct device *dev);
  52
  53int hmc5843_common_suspend(struct device *dev);
  54int hmc5843_common_resume(struct device *dev);
  55
  56#ifdef CONFIG_PM_SLEEP
  57static SIMPLE_DEV_PM_OPS(hmc5843_pm_ops,
  58                hmc5843_common_suspend,
  59                hmc5843_common_resume);
  60#define HMC5843_PM_OPS (&hmc5843_pm_ops)
  61#else
  62#define HMC5843_PM_OPS NULL
  63#endif
  64
  65#endif /* HMC5843_CORE_H */
  66