1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * da9055 declarations for DA9055 PMICs. |
4 | * |
5 | * Copyright(c) 2012 Dialog Semiconductor Ltd. |
6 | * |
7 | * Author: David Dajun Chen <dchen@diasemi.com> |
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 | * PMIC IRQ |
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 | |
25 | struct da9055_pdata; |
26 | |
27 | struct 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 | /* Device I/O */ |
38 | static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg) |
39 | { |
40 | int val, ret; |
41 | |
42 | ret = regmap_read(map: da9055->regmap, reg, val: &val); |
43 | if (ret < 0) |
44 | return ret; |
45 | |
46 | return val; |
47 | } |
48 | |
49 | static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg, |
50 | unsigned char val) |
51 | { |
52 | return regmap_write(map: da9055->regmap, reg, val); |
53 | } |
54 | |
55 | static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg, |
56 | unsigned reg_cnt, unsigned char *val) |
57 | { |
58 | return regmap_bulk_read(map: da9055->regmap, reg, val, val_count: reg_cnt); |
59 | } |
60 | |
61 | static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg, |
62 | unsigned reg_cnt, unsigned char *val) |
63 | { |
64 | return regmap_raw_write(map: da9055->regmap, reg, val, val_len: reg_cnt); |
65 | } |
66 | |
67 | static 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(map: da9055->regmap, reg, mask: bit_mask, val: reg_val); |
72 | } |
73 | |
74 | /* Generic Device API */ |
75 | int da9055_device_init(struct da9055 *da9055); |
76 | void da9055_device_exit(struct da9055 *da9055); |
77 | |
78 | extern const struct regmap_config da9055_regmap_config; |
79 | |
80 | #endif /* __DA9055_CORE_H */ |
81 | |