firewire: core: add CSR MAINT_UTILITY support
[firewire-audio.git] / include / linux / mfd / ab4500.h
bloba42a7033ae539d5362b87c2c904da3cedc7b4d72
1 /*
2 * Copyright (C) 2009 ST-Ericsson
4 * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2, as
8 * published by the Free Software Foundation.
10 * AB4500 device core funtions, for client access
12 #ifndef MFD_AB4500_H
13 #define MFD_AB4500_H
15 #include <linux/device.h>
18 * AB4500 bank addresses
20 #define AB4500_SYS_CTRL1_BLOCK 0x1
21 #define AB4500_SYS_CTRL2_BLOCK 0x2
22 #define AB4500_REGU_CTRL1 0x3
23 #define AB4500_REGU_CTRL2 0x4
24 #define AB4500_USB 0x5
25 #define AB4500_TVOUT 0x6
26 #define AB4500_DBI 0x7
27 #define AB4500_ECI_AV_ACC 0x8
28 #define AB4500_RESERVED 0x9
29 #define AB4500_GPADC 0xA
30 #define AB4500_CHARGER 0xB
31 #define AB4500_GAS_GAUGE 0xC
32 #define AB4500_AUDIO 0xD
33 #define AB4500_INTERRUPT 0xE
34 #define AB4500_RTC 0xF
35 #define AB4500_MISC 0x10
36 #define AB4500_DEBUG 0x12
37 #define AB4500_PROD_TEST 0x13
38 #define AB4500_OTP_EMUL 0x15
41 * System control 1 register offsets.
42 * Bank = 0x01
44 #define AB4500_TURNON_STAT_REG 0x0100
45 #define AB4500_RESET_STAT_REG 0x0101
46 #define AB4500_PONKEY1_PRESS_STAT_REG 0x0102
48 #define AB4500_FSM_STAT1_REG 0x0140
49 #define AB4500_FSM_STAT2_REG 0x0141
50 #define AB4500_SYSCLK_REQ_STAT_REG 0x0142
51 #define AB4500_USB_STAT1_REG 0x0143
52 #define AB4500_USB_STAT2_REG 0x0144
53 #define AB4500_STATUS_SPARE1_REG 0x0145
54 #define AB4500_STATUS_SPARE2_REG 0x0146
56 #define AB4500_CTRL1_REG 0x0180
57 #define AB4500_CTRL2_REG 0x0181
60 * System control 2 register offsets.
61 * bank = 0x02
63 #define AB4500_CTRL3_REG 0x0200
64 #define AB4500_MAIN_WDOG_CTRL_REG 0x0201
65 #define AB4500_MAIN_WDOG_TIMER_REG 0x0202
66 #define AB4500_LOW_BAT_REG 0x0203
67 #define AB4500_BATT_OK_REG 0x0204
68 #define AB4500_SYSCLK_TIMER_REG 0x0205
69 #define AB4500_SMPSCLK_CTRL_REG 0x0206
70 #define AB4500_SMPSCLK_SEL1_REG 0x0207
71 #define AB4500_SMPSCLK_SEL2_REG 0x0208
72 #define AB4500_SMPSCLK_SEL3_REG 0x0209
73 #define AB4500_SYSULPCLK_CONF_REG 0x020A
74 #define AB4500_SYSULPCLK_CTRL1_REG 0x020B
75 #define AB4500_SYSCLK_CTRL_REG 0x020C
76 #define AB4500_SYSCLK_REQ1_VALID_REG 0x020D
77 #define AB4500_SYSCLK_REQ_VALID_REG 0x020E
78 #define AB4500_SYSCTRL_SPARE_REG 0x020F
79 #define AB4500_PAD_CONF_REG 0x0210
82 * Regu control1 register offsets
83 * Bank = 0x03
85 #define AB4500_REGU_SERIAL_CTRL1_REG 0x0300
86 #define AB4500_REGU_SERIAL_CTRL2_REG 0x0301
87 #define AB4500_REGU_SERIAL_CTRL3_REG 0x0302
88 #define AB4500_REGU_REQ_CTRL1_REG 0x0303
89 #define AB4500_REGU_REQ_CTRL2_REG 0x0304
90 #define AB4500_REGU_REQ_CTRL3_REG 0x0305
91 #define AB4500_REGU_REQ_CTRL4_REG 0x0306
92 #define AB4500_REGU_MISC1_REG 0x0380
93 #define AB4500_REGU_OTGSUPPLY_CTRL_REG 0x0381
94 #define AB4500_REGU_VUSB_CTRL_REG 0x0382
95 #define AB4500_REGU_VAUDIO_SUPPLY_REG 0x0383
96 #define AB4500_REGU_CTRL1_SPARE_REG 0x0384
99 * Regu control2 Vmod register offsets
101 #define AB4500_REGU_VMOD_REGU_REG 0x0440
102 #define AB4500_REGU_VMOD_SEL1_REG 0x0441
103 #define AB4500_REGU_VMOD_SEL2_REG 0x0442
104 #define AB4500_REGU_CTRL_DISCH_REG 0x0443
105 #define AB4500_REGU_CTRL_DISCH2_REG 0x0444
108 * USB/ULPI register offsets
109 * Bank : 0x5
111 #define AB4500_USB_LINE_STAT_REG 0x0580
112 #define AB4500_USB_LINE_CTRL1_REG 0x0581
113 #define AB4500_USB_LINE_CTRL2_REG 0x0582
114 #define AB4500_USB_LINE_CTRL3_REG 0x0583
115 #define AB4500_USB_LINE_CTRL4_REG 0x0584
116 #define AB4500_USB_LINE_CTRL5_REG 0x0585
117 #define AB4500_USB_OTG_CTRL_REG 0x0587
118 #define AB4500_USB_OTG_STAT_REG 0x0588
119 #define AB4500_USB_OTG_STAT_REG 0x0588
120 #define AB4500_USB_CTRL_SPARE_REG 0x0589
121 #define AB4500_USB_PHY_CTRL_REG 0x058A
124 * TVOUT / CTRL register offsets
125 * Bank : 0x06
127 #define AB4500_TVOUT_CTRL_REG 0x0680
130 * DBI register offsets
131 * Bank : 0x07
133 #define AB4500_DBI_REG1_REG 0x0700
134 #define AB4500_DBI_REG2_REG 0x0701
137 * ECI regsiter offsets
138 * Bank : 0x08
140 #define AB4500_ECI_CTRL_REG 0x0800
141 #define AB4500_ECI_HOOKLEVEL_REG 0x0801
142 #define AB4500_ECI_DATAOUT_REG 0x0802
143 #define AB4500_ECI_DATAIN_REG 0x0803
146 * AV Connector register offsets
147 * Bank : 0x08
149 #define AB4500_AV_CONN_REG 0x0840
152 * Accessory detection register offsets
153 * Bank : 0x08
155 #define AB4500_ACC_DET_DB1_REG 0x0880
156 #define AB4500_ACC_DET_DB2_REG 0x0881
159 * GPADC register offsets
160 * Bank : 0x0A
162 #define AB4500_GPADC_CTRL1_REG 0x0A00
163 #define AB4500_GPADC_CTRL2_REG 0x0A01
164 #define AB4500_GPADC_CTRL3_REG 0x0A02
165 #define AB4500_GPADC_AUTO_TIMER_REG 0x0A03
166 #define AB4500_GPADC_STAT_REG 0x0A04
167 #define AB4500_GPADC_MANDATAL_REG 0x0A05
168 #define AB4500_GPADC_MANDATAH_REG 0x0A06
169 #define AB4500_GPADC_AUTODATAL_REG 0x0A07
170 #define AB4500_GPADC_AUTODATAH_REG 0x0A08
171 #define AB4500_GPADC_MUX_CTRL_REG 0x0A09
174 * Charger / status register offfsets
175 * Bank : 0x0B
177 #define AB4500_CH_STATUS1_REG 0x0B00
178 #define AB4500_CH_STATUS2_REG 0x0B01
179 #define AB4500_CH_USBCH_STAT1_REG 0x0B02
180 #define AB4500_CH_USBCH_STAT2_REG 0x0B03
181 #define AB4500_CH_FSM_STAT_REG 0x0B04
182 #define AB4500_CH_STAT_REG 0x0B05
185 * Charger / control register offfsets
186 * Bank : 0x0B
188 #define AB4500_CH_VOLT_LVL_REG 0x0B40
191 * Charger / main control register offfsets
192 * Bank : 0x0B
194 #define AB4500_MCH_CTRL1 0x0B80
195 #define AB4500_MCH_CTRL2 0x0B81
196 #define AB4500_MCH_IPT_CURLVL_REG 0x0B82
197 #define AB4500_CH_WD_REG 0x0B83
200 * Charger / USB control register offsets
201 * Bank : 0x0B
203 #define AB4500_USBCH_CTRL1_REG 0x0BC0
204 #define AB4500_USBCH_CTRL2_REG 0x0BC1
205 #define AB4500_USBCH_IPT_CRNTLVL_REG 0x0BC2
208 * RTC bank register offsets
209 * Bank : 0xF
211 #define AB4500_RTC_SOFF_STAT_REG 0x0F00
212 #define AB4500_RTC_CC_CONF_REG 0x0F01
213 #define AB4500_RTC_READ_REQ_REG 0x0F02
214 #define AB4500_RTC_WATCH_TSECMID_REG 0x0F03
215 #define AB4500_RTC_WATCH_TSECHI_REG 0x0F04
216 #define AB4500_RTC_WATCH_TMIN_LOW_REG 0x0F05
217 #define AB4500_RTC_WATCH_TMIN_MID_REG 0x0F06
218 #define AB4500_RTC_WATCH_TMIN_HI_REG 0x0F07
219 #define AB4500_RTC_ALRM_MIN_LOW_REG 0x0F08
220 #define AB4500_RTC_ALRM_MIN_MID_REG 0x0F09
221 #define AB4500_RTC_ALRM_MIN_HI_REG 0x0F0A
222 #define AB4500_RTC_STAT_REG 0x0F0B
223 #define AB4500_RTC_BKUP_CHG_REG 0x0F0C
224 #define AB4500_RTC_FORCE_BKUP_REG 0x0F0D
225 #define AB4500_RTC_CALIB_REG 0x0F0E
226 #define AB4500_RTC_SWITCH_STAT_REG 0x0F0F
229 * PWM Out generators
230 * Bank: 0x10
232 #define AB4500_PWM_OUT_CTRL1_REG 0x1060
233 #define AB4500_PWM_OUT_CTRL2_REG 0x1061
234 #define AB4500_PWM_OUT_CTRL3_REG 0x1062
235 #define AB4500_PWM_OUT_CTRL4_REG 0x1063
236 #define AB4500_PWM_OUT_CTRL5_REG 0x1064
237 #define AB4500_PWM_OUT_CTRL6_REG 0x1065
238 #define AB4500_PWM_OUT_CTRL7_REG 0x1066
240 #define AB4500_I2C_PAD_CTRL_REG 0x1067
241 #define AB4500_REV_REG 0x1080
244 * struct ab4500
245 * @spi: spi device structure
246 * @tx_buf: transmit buffer
247 * @rx_buf: receive buffer
248 * @lock: sync primitive
250 struct ab4500 {
251 struct spi_device *spi;
252 unsigned long tx_buf[4];
253 unsigned long rx_buf[4];
254 struct mutex lock;
257 int ab4500_write(struct ab4500 *ab4500, unsigned char block,
258 unsigned long addr, unsigned char data);
259 int ab4500_read(struct ab4500 *ab4500, unsigned char block,
260 unsigned long addr);
262 #endif /* MFD_AB4500_H */