2014-07-22 19:01:00 +04:00
/*
* Header file for hmc5843 driver
*
* Split from hmc5843 . c
* Copyright ( C ) Josef Gajdusek < atx @ atx . name >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
2016-02-08 01:21:50 +03:00
*/
2014-07-22 19:01:00 +04:00
# ifndef HMC5843_CORE_H
# define HMC5843_CORE_H
# include <linux/regmap.h>
# include <linux/iio/iio.h>
# define HMC5843_CONFIG_REG_A 0x00
# define HMC5843_CONFIG_REG_B 0x01
# define HMC5843_MODE_REG 0x02
# define HMC5843_DATA_OUT_MSB_REGS 0x03
# define HMC5843_STATUS_REG 0x09
# define HMC5843_ID_REG 0x0a
# define HMC5843_ID_END 0x0c
enum hmc5843_ids {
HMC5843_ID ,
HMC5883_ID ,
HMC5883L_ID ,
2014-07-22 19:02:00 +04:00
HMC5983_ID ,
2014-07-22 19:01:00 +04:00
} ;
2015-03-20 19:09:43 +03:00
/**
* struct hcm5843_data - device specific data
* @ dev : actual device
* @ lock : update and read regmap data
* @ regmap : hardware access register maps
* @ variant : describe chip variants
* @ buffer : 3 x 16 - bit channels + padding + 64 - bit timestamp
2016-02-08 01:21:50 +03:00
*/
2014-07-22 19:01:00 +04:00
struct hmc5843_data {
struct device * dev ;
struct mutex lock ;
struct regmap * regmap ;
const struct hmc5843_chip_info * variant ;
2015-03-20 19:09:43 +03:00
__be16 buffer [ 8 ] ;
2014-07-22 19:01:00 +04:00
} ;
int hmc5843_common_probe ( struct device * dev , struct regmap * regmap ,
2015-08-12 16:25:46 +03:00
enum hmc5843_ids id , const char * name ) ;
2014-07-22 19:01:00 +04:00
int hmc5843_common_remove ( struct device * dev ) ;
int hmc5843_common_suspend ( struct device * dev ) ;
int hmc5843_common_resume ( struct device * dev ) ;
# ifdef CONFIG_PM_SLEEP
static SIMPLE_DEV_PM_OPS ( hmc5843_pm_ops ,
hmc5843_common_suspend ,
hmc5843_common_resume ) ;
# define HMC5843_PM_OPS (&hmc5843_pm_ops)
# else
# define HMC5843_PM_OPS NULL
# endif
# endif /* HMC5843_CORE_H */