0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef __DA9055_CORE_H
0011 #define __DA9055_CORE_H
0012
0013 #include <linux/interrupt.h>
0014 #include <linux/regmap.h>
0015
0016
0017
0018
0019 #define DA9055_IRQ_ALARM 0x01
0020 #define DA9055_IRQ_TICK 0x02
0021 #define DA9055_IRQ_NONKEY 0x00
0022 #define DA9055_IRQ_REGULATOR 0x0B
0023 #define DA9055_IRQ_HWMON 0x03
0024
0025 struct da9055_pdata;
0026
0027 struct da9055 {
0028 struct regmap *regmap;
0029 struct regmap_irq_chip_data *irq_data;
0030 struct device *dev;
0031 struct i2c_client *i2c_client;
0032
0033 int irq_base;
0034 int chip_irq;
0035 };
0036
0037
0038 static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg)
0039 {
0040 int val, ret;
0041
0042 ret = regmap_read(da9055->regmap, reg, &val);
0043 if (ret < 0)
0044 return ret;
0045
0046 return val;
0047 }
0048
0049 static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg,
0050 unsigned char val)
0051 {
0052 return regmap_write(da9055->regmap, reg, val);
0053 }
0054
0055 static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg,
0056 unsigned reg_cnt, unsigned char *val)
0057 {
0058 return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt);
0059 }
0060
0061 static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg,
0062 unsigned reg_cnt, unsigned char *val)
0063 {
0064 return regmap_raw_write(da9055->regmap, reg, val, reg_cnt);
0065 }
0066
0067 static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg,
0068 unsigned char bit_mask,
0069 unsigned char reg_val)
0070 {
0071 return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val);
0072 }
0073
0074
0075 int da9055_device_init(struct da9055 *da9055);
0076 void da9055_device_exit(struct da9055 *da9055);
0077
0078 extern const struct regmap_config da9055_regmap_config;
0079
0080 #endif