xref: /linux/include/linux/mfd/mc13783.h (revision 623b4ac4bf9e767991c66e29b47dd4b19458fb42)
1 /*
2  * Copyright 2009 Pengutronix
3  * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 2 as published by the
7  * Free Software Foundation.
8  */
9 #ifndef __LINUX_MFD_MC13783_H
10 #define __LINUX_MFD_MC13783_H
11 
12 #include <linux/interrupt.h>
13 
14 struct mc13783;
15 
16 void mc13783_lock(struct mc13783 *mc13783);
17 void mc13783_unlock(struct mc13783 *mc13783);
18 
19 int mc13783_reg_read(struct mc13783 *mc13783, unsigned int offset, u32 *val);
20 int mc13783_reg_write(struct mc13783 *mc13783, unsigned int offset, u32 val);
21 int mc13783_reg_rmw(struct mc13783 *mc13783, unsigned int offset,
22 		u32 mask, u32 val);
23 
24 int mc13783_irq_request(struct mc13783 *mc13783, int irq,
25 		irq_handler_t handler, const char *name, void *dev);
26 int mc13783_irq_request_nounmask(struct mc13783 *mc13783, int irq,
27 		irq_handler_t handler, const char *name, void *dev);
28 int mc13783_irq_free(struct mc13783 *mc13783, int irq, void *dev);
29 int mc13783_ackirq(struct mc13783 *mc13783, int irq);
30 
31 int mc13783_mask(struct mc13783 *mc13783, int irq);
32 int mc13783_unmask(struct mc13783 *mc13783, int irq);
33 
34 #define MC13783_ADC0		43
35 #define MC13783_ADC0_ADREFEN		(1 << 10)
36 #define MC13783_ADC0_ADREFMODE		(1 << 11)
37 #define MC13783_ADC0_TSMOD0		(1 << 12)
38 #define MC13783_ADC0_TSMOD1		(1 << 13)
39 #define MC13783_ADC0_TSMOD2		(1 << 14)
40 #define MC13783_ADC0_ADINC1		(1 << 16)
41 #define MC13783_ADC0_ADINC2		(1 << 17)
42 
43 #define MC13783_ADC0_TSMOD_MASK		(MC13783_ADC0_TSMOD0 | \
44 					MC13783_ADC0_TSMOD1 | \
45 					MC13783_ADC0_TSMOD2)
46 
47 /* to be cleaned up */
48 struct regulator_init_data;
49 
50 struct mc13783_regulator_init_data {
51 	int id;
52 	struct regulator_init_data *init_data;
53 };
54 
55 struct mc13783_regulator_platform_data {
56 	int num_regulators;
57 	struct mc13783_regulator_init_data *regulators;
58 };
59 
60 struct mc13783_platform_data {
61 	int num_regulators;
62 	struct mc13783_regulator_init_data *regulators;
63 
64 #define MC13783_USE_TOUCHSCREEN (1 << 0)
65 #define MC13783_USE_CODEC	(1 << 1)
66 #define MC13783_USE_ADC		(1 << 2)
67 #define MC13783_USE_RTC		(1 << 3)
68 #define MC13783_USE_REGULATOR	(1 << 4)
69 	unsigned int flags;
70 };
71 
72 #define MC13783_ADC_MODE_TS		1
73 #define MC13783_ADC_MODE_SINGLE_CHAN	2
74 #define MC13783_ADC_MODE_MULT_CHAN	3
75 
76 int mc13783_adc_do_conversion(struct mc13783 *mc13783, unsigned int mode,
77 		unsigned int channel, unsigned int *sample);
78 
79 
80 #define	MC13783_SW_SW1A		0
81 #define	MC13783_SW_SW1B		1
82 #define	MC13783_SW_SW2A		2
83 #define	MC13783_SW_SW2B		3
84 #define	MC13783_SW_SW3		4
85 #define	MC13783_SW_PLL		5
86 #define	MC13783_REGU_VAUDIO	6
87 #define	MC13783_REGU_VIOHI	7
88 #define	MC13783_REGU_VIOLO	8
89 #define	MC13783_REGU_VDIG	9
90 #define	MC13783_REGU_VGEN	10
91 #define	MC13783_REGU_VRFDIG	11
92 #define	MC13783_REGU_VRFREF	12
93 #define	MC13783_REGU_VRFCP	13
94 #define	MC13783_REGU_VSIM	14
95 #define	MC13783_REGU_VESIM	15
96 #define	MC13783_REGU_VCAM	16
97 #define	MC13783_REGU_VRFBG	17
98 #define	MC13783_REGU_VVIB	18
99 #define	MC13783_REGU_VRF1	19
100 #define	MC13783_REGU_VRF2	20
101 #define	MC13783_REGU_VMMC1	21
102 #define	MC13783_REGU_VMMC2	22
103 #define	MC13783_REGU_GPO1	23
104 #define	MC13783_REGU_GPO2	24
105 #define	MC13783_REGU_GPO3	25
106 #define	MC13783_REGU_GPO4	26
107 #define	MC13783_REGU_V1		27
108 #define	MC13783_REGU_V2		28
109 #define	MC13783_REGU_V3		29
110 #define	MC13783_REGU_V4		30
111 
112 #define MC13783_IRQ_ADCDONE	0
113 #define MC13783_IRQ_ADCBISDONE	1
114 #define MC13783_IRQ_TS		2
115 #define MC13783_IRQ_WHIGH	3
116 #define MC13783_IRQ_WLOW	4
117 #define MC13783_IRQ_CHGDET	6
118 #define MC13783_IRQ_CHGOV	7
119 #define MC13783_IRQ_CHGREV	8
120 #define MC13783_IRQ_CHGSHORT	9
121 #define MC13783_IRQ_CCCV	10
122 #define MC13783_IRQ_CHGCURR	11
123 #define MC13783_IRQ_BPON	12
124 #define MC13783_IRQ_LOBATL	13
125 #define MC13783_IRQ_LOBATH	14
126 #define MC13783_IRQ_UDP		15
127 #define MC13783_IRQ_USB		16
128 #define MC13783_IRQ_ID		19
129 #define MC13783_IRQ_SE1		21
130 #define MC13783_IRQ_CKDET	22
131 #define MC13783_IRQ_UDM		23
132 #define MC13783_IRQ_1HZ		24
133 #define MC13783_IRQ_TODA	25
134 #define MC13783_IRQ_ONOFD1	27
135 #define MC13783_IRQ_ONOFD2	28
136 #define MC13783_IRQ_ONOFD3	29
137 #define MC13783_IRQ_SYSRST	30
138 #define MC13783_IRQ_RTCRST	31
139 #define MC13783_IRQ_PC		32
140 #define MC13783_IRQ_WARM	33
141 #define MC13783_IRQ_MEMHLD	34
142 #define MC13783_IRQ_PWRRDY	35
143 #define MC13783_IRQ_THWARNL	36
144 #define MC13783_IRQ_THWARNH	37
145 #define MC13783_IRQ_CLK		38
146 #define MC13783_IRQ_SEMAF	39
147 #define MC13783_IRQ_MC2B	41
148 #define MC13783_IRQ_HSDET	42
149 #define MC13783_IRQ_HSL		43
150 #define MC13783_IRQ_ALSPTH	44
151 #define MC13783_IRQ_AHSSHORT	45
152 #define MC13783_NUM_IRQ		46
153 
154 #endif /* __LINUX_MFD_MC13783_H */
155