1 /*
2  * DA9150 MFD Driver - Core Data
3  *
4  * Copyright (c) 2014 Dialog Semiconductor
5  *
6  * Author: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
7  *
8  * This program is free software; you can redistribute  it and/or modify it
9  * under  the terms of  the GNU General  Public License as published by the
10  * Free Software Foundation;  either version 2 of the  License, or (at your
11  * option) any later version.
12  */
13 
14 #ifndef __DA9150_CORE_H
15 #define __DA9150_CORE_H
16 
17 #include <linux/device.h>
18 #include <linux/interrupt.h>
19 #include <linux/regmap.h>
20 
21 /* I2C address paging */
22 #define DA9150_REG_PAGE_SHIFT	8
23 #define DA9150_REG_PAGE_MASK	0xFF
24 
25 /* IRQs */
26 #define DA9150_NUM_IRQ_REGS	4
27 #define DA9150_IRQ_VBUS		0
28 #define DA9150_IRQ_CHG		1
29 #define DA9150_IRQ_TCLASS	2
30 #define DA9150_IRQ_TJUNC	3
31 #define DA9150_IRQ_VFAULT	4
32 #define DA9150_IRQ_CONF		5
33 #define DA9150_IRQ_DAT		6
34 #define DA9150_IRQ_DTYPE	7
35 #define DA9150_IRQ_ID		8
36 #define DA9150_IRQ_ADP		9
37 #define DA9150_IRQ_SESS_END	10
38 #define DA9150_IRQ_SESS_VLD	11
39 #define DA9150_IRQ_FG		12
40 #define DA9150_IRQ_GP		13
41 #define DA9150_IRQ_TBAT		14
42 #define DA9150_IRQ_GPIOA	15
43 #define DA9150_IRQ_GPIOB	16
44 #define DA9150_IRQ_GPIOC	17
45 #define DA9150_IRQ_GPIOD	18
46 #define DA9150_IRQ_GPADC	19
47 #define DA9150_IRQ_WKUP		20
48 
49 struct da9150_pdata {
50 	int irq_base;
51 };
52 
53 struct da9150 {
54 	struct device *dev;
55 	struct regmap *regmap;
56 	struct regmap_irq_chip_data *regmap_irq_data;
57 	int irq;
58 	int irq_base;
59 };
60 
61 /* Device I/O */
62 u8 da9150_reg_read(struct da9150 *da9150, u16 reg);
63 void da9150_reg_write(struct da9150 *da9150, u16 reg, u8 val);
64 void da9150_set_bits(struct da9150 *da9150, u16 reg, u8 mask, u8 val);
65 
66 void da9150_bulk_read(struct da9150 *da9150, u16 reg, int count, u8 *buf);
67 void da9150_bulk_write(struct da9150 *da9150, u16 reg, int count, const u8 *buf);
68 #endif /* __DA9150_CORE_H */
69