1
2
3
4
5
6
7
8
9
10#ifndef __DA9055_CORE_H
11#define __DA9055_CORE_H
12
13#include <linux/interrupt.h>
14#include <linux/regmap.h>
15
16
17
18
19#define DA9055_IRQ_ALARM 0x01
20#define DA9055_IRQ_TICK 0x02
21#define DA9055_IRQ_NONKEY 0x00
22#define DA9055_IRQ_REGULATOR 0x0B
23#define DA9055_IRQ_HWMON 0x03
24
25struct da9055_pdata;
26
27struct da9055 {
28 struct regmap *regmap;
29 struct regmap_irq_chip_data *irq_data;
30 struct device *dev;
31 struct i2c_client *i2c_client;
32
33 int irq_base;
34 int chip_irq;
35};
36
37
38static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg)
39{
40 int val, ret;
41
42 ret = regmap_read(da9055->regmap, reg, &val);
43 if (ret < 0)
44 return ret;
45
46 return val;
47}
48
49static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg,
50 unsigned char val)
51{
52 return regmap_write(da9055->regmap, reg, val);
53}
54
55static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg,
56 unsigned reg_cnt, unsigned char *val)
57{
58 return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt);
59}
60
61static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg,
62 unsigned reg_cnt, unsigned char *val)
63{
64 return regmap_raw_write(da9055->regmap, reg, val, reg_cnt);
65}
66
67static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg,
68 unsigned char bit_mask,
69 unsigned char reg_val)
70{
71 return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val);
72}
73
74
75int da9055_device_init(struct da9055 *da9055);
76void da9055_device_exit(struct da9055 *da9055);
77
78extern const struct regmap_config da9055_regmap_config;
79
80#endif
81