aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
commit8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch)
treea8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /include/linux/mfd
parent406089d01562f1e2bf9f089fd7637009ebaad589 (diff)
Patched in Tegra support.
Diffstat (limited to 'include/linux/mfd')
-rw-r--r--include/linux/mfd/88pm80x.h369
-rw-r--r--include/linux/mfd/88pm860x.h159
-rw-r--r--include/linux/mfd/ab3100.h129
-rw-r--r--include/linux/mfd/abx500.h403
-rw-r--r--include/linux/mfd/abx500/ab8500-bm.h474
-rw-r--r--include/linux/mfd/abx500/ab8500-codec.h54
-rw-r--r--include/linux/mfd/abx500/ab8500-gpadc.h35
-rw-r--r--include/linux/mfd/abx500/ab8500-gpio.h23
-rw-r--r--include/linux/mfd/abx500/ab8500-sysctrl.h297
-rw-r--r--include/linux/mfd/abx500/ab8500.h344
-rw-r--r--include/linux/mfd/abx500/ux500_chargalg.h38
-rw-r--r--include/linux/mfd/arizona/core.h118
-rw-r--r--include/linux/mfd/arizona/pdata.h125
-rw-r--r--include/linux/mfd/arizona/registers.h6611
-rw-r--r--include/linux/mfd/as3711.h126
-rw-r--r--include/linux/mfd/asic3.h3
-rw-r--r--include/linux/mfd/core.h9
-rw-r--r--include/linux/mfd/da9052/da9052.h159
-rw-r--r--include/linux/mfd/da9052/pdata.h40
-rw-r--r--include/linux/mfd/da9052/reg.h749
-rw-r--r--include/linux/mfd/da9055/core.h94
-rw-r--r--include/linux/mfd/da9055/pdata.h53
-rw-r--r--include/linux/mfd/da9055/reg.h699
-rw-r--r--include/linux/mfd/db8500-prcmu.h514
-rw-r--r--include/linux/mfd/dbx500-prcmu.h773
-rw-r--r--include/linux/mfd/ezx-pcap.h1
-rw-r--r--include/linux/mfd/intel_msic.h456
-rw-r--r--include/linux/mfd/lm3533.h104
-rw-r--r--include/linux/mfd/lp8788-isink.h52
-rw-r--r--include/linux/mfd/lp8788.h364
-rw-r--r--include/linux/mfd/lpc_ich.h49
-rw-r--r--include/linux/mfd/max77686-private.h246
-rw-r--r--include/linux/mfd/max77686.h115
-rw-r--r--include/linux/mfd/max77693-private.h226
-rw-r--r--include/linux/mfd/max77693.h49
-rw-r--r--include/linux/mfd/max8907.h252
-rw-r--r--include/linux/mfd/max8925.h35
-rw-r--r--include/linux/mfd/max8997-private.h6
-rw-r--r--include/linux/mfd/max8997.h115
-rw-r--r--include/linux/mfd/max8998.h2
-rw-r--r--include/linux/mfd/mc13783.h111
-rw-r--r--include/linux/mfd/mc13xxx.h72
-rw-r--r--include/linux/mfd/mcp.h19
-rw-r--r--include/linux/mfd/menelaus.h47
-rw-r--r--include/linux/mfd/palmas.h2792
-rw-r--r--include/linux/mfd/pcf50633/core.h3
-rw-r--r--include/linux/mfd/pm8xxx/irq.h8
-rw-r--r--include/linux/mfd/pm8xxx/pm8921.h1
-rw-r--r--include/linux/mfd/rc5t583.h103
-rw-r--r--include/linux/mfd/retu.h22
-rw-r--r--include/linux/mfd/rtsx_common.h48
-rw-r--r--include/linux/mfd/rtsx_pci.h794
-rw-r--r--include/linux/mfd/samsung/core.h159
-rw-r--r--include/linux/mfd/samsung/irq.h152
-rw-r--r--include/linux/mfd/samsung/rtc.h83
-rw-r--r--include/linux/mfd/samsung/s2mps11.h196
-rw-r--r--include/linux/mfd/samsung/s5m8763.h96
-rw-r--r--include/linux/mfd/samsung/s5m8767.h188
-rw-r--r--include/linux/mfd/smsc.h109
-rw-r--r--include/linux/mfd/sta2x11-mfd.h518
-rw-r--r--include/linux/mfd/stmpe.h27
-rw-r--r--include/linux/mfd/syscon.h23
-rw-r--r--include/linux/mfd/syscon/imx6q-iomuxc-gpr.h319
-rw-r--r--include/linux/mfd/tc3589x.h3
-rw-r--r--include/linux/mfd/ti_am335x_tscadc.h152
-rw-r--r--include/linux/mfd/tmio.h30
-rw-r--r--include/linux/mfd/tps65090.h110
-rw-r--r--include/linux/mfd/tps65217.h298
-rw-r--r--include/linux/mfd/tps6586x.h67
-rw-r--r--include/linux/mfd/tps65910.h216
-rw-r--r--include/linux/mfd/tps80031.h670
-rw-r--r--include/linux/mfd/twl6040.h103
-rw-r--r--include/linux/mfd/ucb1x00.h38
-rw-r--r--include/linux/mfd/viperboard.h110
-rw-r--r--include/linux/mfd/wm831x/core.h11
-rw-r--r--include/linux/mfd/wm831x/pdata.h2
-rw-r--r--include/linux/mfd/wm8350/core.h33
-rw-r--r--include/linux/mfd/wm8400-private.h14
-rw-r--r--include/linux/mfd/wm8994/core.h27
-rw-r--r--include/linux/mfd/wm8994/pdata.h52
-rw-r--r--include/linux/mfd/wm8994/registers.h218
81 files changed, 1043 insertions, 21471 deletions
diff --git a/include/linux/mfd/88pm80x.h b/include/linux/mfd/88pm80x.h
deleted file mode 100644
index 478672ed0c3..00000000000
--- a/include/linux/mfd/88pm80x.h
+++ /dev/null
@@ -1,369 +0,0 @@
1/*
2 * Marvell 88PM80x Interface
3 *
4 * Copyright (C) 2012 Marvell International Ltd.
5 * Qiao Zhou <zhouqiao@marvell.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef __LINUX_MFD_88PM80X_H
13#define __LINUX_MFD_88PM80X_H
14
15#include <linux/platform_device.h>
16#include <linux/interrupt.h>
17#include <linux/regmap.h>
18#include <linux/atomic.h>
19
20#define PM80X_VERSION_MASK (0xFF) /* 80X chip ID mask */
21enum {
22 CHIP_INVALID = 0,
23 CHIP_PM800,
24 CHIP_PM805,
25 CHIP_MAX,
26};
27
28enum {
29 PM800_ID_BUCK1 = 0,
30 PM800_ID_BUCK2,
31 PM800_ID_BUCK3,
32 PM800_ID_BUCK4,
33 PM800_ID_BUCK5,
34
35 PM800_ID_LDO1,
36 PM800_ID_LDO2,
37 PM800_ID_LDO3,
38 PM800_ID_LDO4,
39 PM800_ID_LDO5,
40 PM800_ID_LDO6,
41 PM800_ID_LDO7,
42 PM800_ID_LDO8,
43 PM800_ID_LDO9,
44 PM800_ID_LDO10,
45 PM800_ID_LDO11,
46 PM800_ID_LDO12,
47 PM800_ID_LDO13,
48 PM800_ID_LDO14,
49 PM800_ID_LDO15,
50 PM800_ID_LDO16,
51 PM800_ID_LDO17,
52 PM800_ID_LDO18,
53 PM800_ID_LDO19,
54
55 PM800_ID_RG_MAX,
56};
57#define PM800_MAX_REGULATOR PM800_ID_RG_MAX /* 5 Bucks, 19 LDOs */
58#define PM800_NUM_BUCK (5) /*5 Bucks */
59#define PM800_NUM_LDO (19) /*19 Bucks */
60
61/* page 0 basic: slave adder 0x60 */
62
63#define PM800_STATUS_1 (0x01)
64#define PM800_ONKEY_STS1 (1 << 0)
65#define PM800_EXTON_STS1 (1 << 1)
66#define PM800_CHG_STS1 (1 << 2)
67#define PM800_BAT_STS1 (1 << 3)
68#define PM800_VBUS_STS1 (1 << 4)
69#define PM800_LDO_PGOOD_STS1 (1 << 5)
70#define PM800_BUCK_PGOOD_STS1 (1 << 6)
71
72#define PM800_STATUS_2 (0x02)
73#define PM800_RTC_ALARM_STS2 (1 << 0)
74
75/* Wakeup Registers */
76#define PM800_WAKEUP1 (0x0D)
77
78#define PM800_WAKEUP2 (0x0E)
79#define PM800_WAKEUP2_INV_INT (1 << 0)
80#define PM800_WAKEUP2_INT_CLEAR (1 << 1)
81#define PM800_WAKEUP2_INT_MASK (1 << 2)
82
83#define PM800_POWER_UP_LOG (0x10)
84
85/* Referance and low power registers */
86#define PM800_LOW_POWER1 (0x20)
87#define PM800_LOW_POWER2 (0x21)
88#define PM800_LOW_POWER_CONFIG3 (0x22)
89#define PM800_LOW_POWER_CONFIG4 (0x23)
90
91/* GPIO register */
92#define PM800_GPIO_0_1_CNTRL (0x30)
93#define PM800_GPIO0_VAL (1 << 0)
94#define PM800_GPIO0_GPIO_MODE(x) (x << 1)
95#define PM800_GPIO1_VAL (1 << 4)
96#define PM800_GPIO1_GPIO_MODE(x) (x << 5)
97
98#define PM800_GPIO_2_3_CNTRL (0x31)
99#define PM800_GPIO2_VAL (1 << 0)
100#define PM800_GPIO2_GPIO_MODE(x) (x << 1)
101#define PM800_GPIO3_VAL (1 << 4)
102#define PM800_GPIO3_GPIO_MODE(x) (x << 5)
103#define PM800_GPIO3_MODE_MASK 0x1F
104#define PM800_GPIO3_HEADSET_MODE PM800_GPIO3_GPIO_MODE(6)
105
106#define PM800_GPIO_4_CNTRL (0x32)
107#define PM800_GPIO4_VAL (1 << 0)
108#define PM800_GPIO4_GPIO_MODE(x) (x << 1)
109
110#define PM800_HEADSET_CNTRL (0x38)
111#define PM800_HEADSET_DET_EN (1 << 7)
112#define PM800_HSDET_SLP (1 << 1)
113/* PWM register */
114#define PM800_PWM1 (0x40)
115#define PM800_PWM2 (0x41)
116#define PM800_PWM3 (0x42)
117#define PM800_PWM4 (0x43)
118
119/* RTC Registers */
120#define PM800_RTC_CONTROL (0xD0)
121#define PM800_RTC_MISC1 (0xE1)
122#define PM800_RTC_MISC2 (0xE2)
123#define PM800_RTC_MISC3 (0xE3)
124#define PM800_RTC_MISC4 (0xE4)
125#define PM800_RTC_MISC5 (0xE7)
126/* bit definitions of RTC Register 1 (0xD0) */
127#define PM800_ALARM1_EN (1 << 0)
128#define PM800_ALARM_WAKEUP (1 << 4)
129#define PM800_ALARM (1 << 5)
130#define PM800_RTC1_USE_XO (1 << 7)
131
132/* Regulator Control Registers: BUCK1,BUCK5,LDO1 have DVC */
133
134/* buck registers */
135#define PM800_SLEEP_BUCK1 (0x30)
136
137/* BUCK Sleep Mode Register 1: BUCK[1..4] */
138#define PM800_BUCK_SLP1 (0x5A)
139#define PM800_BUCK1_SLP1_SHIFT 0
140#define PM800_BUCK1_SLP1_MASK (0x3 << PM800_BUCK1_SLP1_SHIFT)
141
142/* page 2 GPADC: slave adder 0x02 */
143#define PM800_GPADC_MEAS_EN1 (0x01)
144#define PM800_MEAS_EN1_VBAT (1 << 2)
145#define PM800_GPADC_MEAS_EN2 (0x02)
146#define PM800_MEAS_EN2_RFTMP (1 << 0)
147#define PM800_MEAS_GP0_EN (1 << 2)
148#define PM800_MEAS_GP1_EN (1 << 3)
149#define PM800_MEAS_GP2_EN (1 << 4)
150#define PM800_MEAS_GP3_EN (1 << 5)
151#define PM800_MEAS_GP4_EN (1 << 6)
152
153#define PM800_GPADC_MISC_CONFIG1 (0x05)
154#define PM800_GPADC_MISC_CONFIG2 (0x06)
155#define PM800_GPADC_MISC_GPFSM_EN (1 << 0)
156#define PM800_GPADC_SLOW_MODE(x) (x << 3)
157
158#define PM800_GPADC_MISC_CONFIG3 (0x09)
159#define PM800_GPADC_MISC_CONFIG4 (0x0A)
160
161#define PM800_GPADC_PREBIAS1 (0x0F)
162#define PM800_GPADC0_GP_PREBIAS_TIME(x) (x << 0)
163#define PM800_GPADC_PREBIAS2 (0x10)
164
165#define PM800_GP_BIAS_ENA1 (0x14)
166#define PM800_GPADC_GP_BIAS_EN0 (1 << 0)
167#define PM800_GPADC_GP_BIAS_EN1 (1 << 1)
168#define PM800_GPADC_GP_BIAS_EN2 (1 << 2)
169#define PM800_GPADC_GP_BIAS_EN3 (1 << 3)
170
171#define PM800_GP_BIAS_OUT1 (0x15)
172#define PM800_BIAS_OUT_GP0 (1 << 0)
173#define PM800_BIAS_OUT_GP1 (1 << 1)
174#define PM800_BIAS_OUT_GP2 (1 << 2)
175#define PM800_BIAS_OUT_GP3 (1 << 3)
176
177#define PM800_GPADC0_LOW_TH 0x20
178#define PM800_GPADC1_LOW_TH 0x21
179#define PM800_GPADC2_LOW_TH 0x22
180#define PM800_GPADC3_LOW_TH 0x23
181#define PM800_GPADC4_LOW_TH 0x24
182
183#define PM800_GPADC0_UPP_TH 0x30
184#define PM800_GPADC1_UPP_TH 0x31
185#define PM800_GPADC2_UPP_TH 0x32
186#define PM800_GPADC3_UPP_TH 0x33
187#define PM800_GPADC4_UPP_TH 0x34
188
189#define PM800_VBBAT_MEAS1 0x40
190#define PM800_VBBAT_MEAS2 0x41
191#define PM800_VBAT_MEAS1 0x42
192#define PM800_VBAT_MEAS2 0x43
193#define PM800_VSYS_MEAS1 0x44
194#define PM800_VSYS_MEAS2 0x45
195#define PM800_VCHG_MEAS1 0x46
196#define PM800_VCHG_MEAS2 0x47
197#define PM800_TINT_MEAS1 0x50
198#define PM800_TINT_MEAS2 0x51
199#define PM800_PMOD_MEAS1 0x52
200#define PM800_PMOD_MEAS2 0x53
201
202#define PM800_GPADC0_MEAS1 0x54
203#define PM800_GPADC0_MEAS2 0x55
204#define PM800_GPADC1_MEAS1 0x56
205#define PM800_GPADC1_MEAS2 0x57
206#define PM800_GPADC2_MEAS1 0x58
207#define PM800_GPADC2_MEAS2 0x59
208#define PM800_GPADC3_MEAS1 0x5A
209#define PM800_GPADC3_MEAS2 0x5B
210#define PM800_GPADC4_MEAS1 0x5C
211#define PM800_GPADC4_MEAS2 0x5D
212
213#define PM800_GPADC4_AVG1 0xA8
214#define PM800_GPADC4_AVG2 0xA9
215
216/* 88PM805 Registers */
217#define PM805_MAIN_POWERUP (0x01)
218#define PM805_INT_STATUS0 (0x02) /* for ena/dis all interrupts */
219
220#define PM805_STATUS0_INT_CLEAR (1 << 0)
221#define PM805_STATUS0_INV_INT (1 << 1)
222#define PM800_STATUS0_INT_MASK (1 << 2)
223
224#define PM805_INT_STATUS1 (0x03)
225
226#define PM805_INT1_HP1_SHRT (1 << 0)
227#define PM805_INT1_HP2_SHRT (1 << 1)
228#define PM805_INT1_MIC_CONFLICT (1 << 2)
229#define PM805_INT1_CLIP_FAULT (1 << 3)
230#define PM805_INT1_LDO_OFF (1 << 4)
231#define PM805_INT1_SRC_DPLL_LOCK (1 << 5)
232
233#define PM805_INT_STATUS2 (0x04)
234
235#define PM805_INT2_MIC_DET (1 << 0)
236#define PM805_INT2_SHRT_BTN_DET (1 << 1)
237#define PM805_INT2_VOLM_BTN_DET (1 << 2)
238#define PM805_INT2_VOLP_BTN_DET (1 << 3)
239#define PM805_INT2_RAW_PLL_FAULT (1 << 4)
240#define PM805_INT2_FINE_PLL_FAULT (1 << 5)
241
242#define PM805_INT_MASK1 (0x05)
243#define PM805_INT_MASK2 (0x06)
244#define PM805_SHRT_BTN_DET (1 << 1)
245
246/* number of status and int reg in a row */
247#define PM805_INT_REG_NUM (2)
248
249#define PM805_MIC_DET1 (0x07)
250#define PM805_MIC_DET_EN_MIC_DET (1 << 0)
251#define PM805_MIC_DET2 (0x08)
252#define PM805_MIC_DET_STATUS1 (0x09)
253
254#define PM805_MIC_DET_STATUS3 (0x0A)
255#define PM805_AUTO_SEQ_STATUS1 (0x0B)
256#define PM805_AUTO_SEQ_STATUS2 (0x0C)
257
258#define PM805_ADC_SETTING1 (0x10)
259#define PM805_ADC_SETTING2 (0x11)
260#define PM805_ADC_SETTING3 (0x11)
261#define PM805_ADC_GAIN1 (0x12)
262#define PM805_ADC_GAIN2 (0x13)
263#define PM805_DMIC_SETTING (0x15)
264#define PM805_DWS_SETTING (0x16)
265#define PM805_MIC_CONFLICT_STS (0x17)
266
267#define PM805_PDM_SETTING1 (0x20)
268#define PM805_PDM_SETTING2 (0x21)
269#define PM805_PDM_SETTING3 (0x22)
270#define PM805_PDM_CONTROL1 (0x23)
271#define PM805_PDM_CONTROL2 (0x24)
272#define PM805_PDM_CONTROL3 (0x25)
273
274#define PM805_HEADPHONE_SETTING (0x26)
275#define PM805_HEADPHONE_GAIN_A2A (0x27)
276#define PM805_HEADPHONE_SHORT_STATE (0x28)
277#define PM805_EARPHONE_SETTING (0x29)
278#define PM805_AUTO_SEQ_SETTING (0x2A)
279
280struct pm80x_rtc_pdata {
281 int vrtc;
282 int rtc_wakeup;
283};
284
285struct pm80x_subchip {
286 struct i2c_client *power_page; /* chip client for power page */
287 struct i2c_client *gpadc_page; /* chip client for gpadc page */
288 struct regmap *regmap_power;
289 struct regmap *regmap_gpadc;
290 unsigned short power_page_addr; /* power page I2C address */
291 unsigned short gpadc_page_addr; /* gpadc page I2C address */
292};
293
294struct pm80x_chip {
295 struct pm80x_subchip *subchip;
296 struct device *dev;
297 struct i2c_client *client;
298 struct i2c_client *companion;
299 struct regmap *regmap;
300 struct regmap_irq_chip *regmap_irq_chip;
301 struct regmap_irq_chip_data *irq_data;
302 unsigned char version;
303 int id;
304 int irq;
305 int irq_mode;
306 unsigned long wu_flag;
307 spinlock_t lock;
308};
309
310struct pm80x_platform_data {
311 struct pm80x_rtc_pdata *rtc;
312 unsigned short power_page_addr; /* power page I2C address */
313 unsigned short gpadc_page_addr; /* gpadc page I2C address */
314 int irq_mode; /* Clear interrupt by read/write(0/1) */
315 int batt_det; /* enable/disable */
316 int (*plat_config)(struct pm80x_chip *chip,
317 struct pm80x_platform_data *pdata);
318};
319
320extern const struct dev_pm_ops pm80x_pm_ops;
321extern const struct regmap_config pm80x_regmap_config;
322
323static inline int pm80x_request_irq(struct pm80x_chip *pm80x, int irq,
324 irq_handler_t handler, unsigned long flags,
325 const char *name, void *data)
326{
327 if (!pm80x->irq_data)
328 return -EINVAL;
329 return request_threaded_irq(regmap_irq_get_virq(pm80x->irq_data, irq),
330 NULL, handler, flags, name, data);
331}
332
333static inline void pm80x_free_irq(struct pm80x_chip *pm80x, int irq, void *data)
334{
335 if (!pm80x->irq_data)
336 return;
337 free_irq(regmap_irq_get_virq(pm80x->irq_data, irq), data);
338}
339
340#ifdef CONFIG_PM
341static inline int pm80x_dev_suspend(struct device *dev)
342{
343 struct platform_device *pdev = to_platform_device(dev);
344 struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent);
345 int irq = platform_get_irq(pdev, 0);
346
347 if (device_may_wakeup(dev))
348 set_bit((1 << irq), &chip->wu_flag);
349
350 return 0;
351}
352
353static inline int pm80x_dev_resume(struct device *dev)
354{
355 struct platform_device *pdev = to_platform_device(dev);
356 struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent);
357 int irq = platform_get_irq(pdev, 0);
358
359 if (device_may_wakeup(dev))
360 clear_bit((1 << irq), &chip->wu_flag);
361
362 return 0;
363}
364#endif
365
366extern int pm80x_init(struct i2c_client *client,
367 const struct i2c_device_id *id);
368extern int pm80x_deinit(struct i2c_client *client);
369#endif /* __LINUX_MFD_88PM80X_H */
diff --git a/include/linux/mfd/88pm860x.h b/include/linux/mfd/88pm860x.h
index cd97530205c..63b4fb8e3b6 100644
--- a/include/linux/mfd/88pm860x.h
+++ b/include/linux/mfd/88pm860x.h
@@ -34,26 +34,27 @@ enum {
34 PM8606_ID_MAX, 34 PM8606_ID_MAX,
35}; 35};
36 36
37enum {
38 PM8606_BACKLIGHT1 = 0,
39 PM8606_BACKLIGHT2,
40 PM8606_BACKLIGHT3,
41};
42
43enum {
44 PM8606_LED1_RED = 0,
45 PM8606_LED1_GREEN,
46 PM8606_LED1_BLUE,
47 PM8606_LED2_RED,
48 PM8606_LED2_GREEN,
49 PM8606_LED2_BLUE,
50 PM8607_LED_VIBRATOR,
51};
52
37 53
38/* 8606 Registers */ 54/* 8606 Registers */
39#define PM8606_DCM_BOOST (0x00) 55#define PM8606_DCM_BOOST (0x00)
40#define PM8606_PWM (0x01) 56#define PM8606_PWM (0x01)
41 57
42#define PM8607_MISC2 (0x42)
43
44/* Power Up Log Register */
45#define PM8607_POWER_UP_LOG (0x3F)
46
47/* Charger Control Registers */
48#define PM8607_CCNT (0x47)
49#define PM8607_CHG_CTRL1 (0x48)
50#define PM8607_CHG_CTRL2 (0x49)
51#define PM8607_CHG_CTRL3 (0x4A)
52#define PM8607_CHG_CTRL4 (0x4B)
53#define PM8607_CHG_CTRL5 (0x4C)
54#define PM8607_CHG_CTRL6 (0x4D)
55#define PM8607_CHG_CTRL7 (0x4E)
56
57/* Backlight Registers */ 58/* Backlight Registers */
58#define PM8606_WLED1A (0x02) 59#define PM8606_WLED1A (0x02)
59#define PM8606_WLED1B (0x03) 60#define PM8606_WLED1B (0x03)
@@ -135,7 +136,6 @@ enum {
135 PM8607_ID_LDO13, 136 PM8607_ID_LDO13,
136 PM8607_ID_LDO14, 137 PM8607_ID_LDO14,
137 PM8607_ID_LDO15, 138 PM8607_ID_LDO15,
138 PM8606_ID_PREG,
139 139
140 PM8607_ID_RG_MAX, 140 PM8607_ID_RG_MAX,
141}; 141};
@@ -204,71 +204,6 @@ enum {
204#define PM8607_PD_PREBIAS (0x56) /* prebias time */ 204#define PM8607_PD_PREBIAS (0x56) /* prebias time */
205#define PM8607_GPADC_MISC1 (0x57) 205#define PM8607_GPADC_MISC1 (0x57)
206 206
207/* bit definitions of MEAS_EN1*/
208#define PM8607_MEAS_EN1_VBAT (1 << 0)
209#define PM8607_MEAS_EN1_VCHG (1 << 1)
210#define PM8607_MEAS_EN1_VSYS (1 << 2)
211#define PM8607_MEAS_EN1_TINT (1 << 3)
212#define PM8607_MEAS_EN1_RFTMP (1 << 4)
213#define PM8607_MEAS_EN1_TBAT (1 << 5)
214#define PM8607_MEAS_EN1_GPADC2 (1 << 6)
215#define PM8607_MEAS_EN1_GPADC3 (1 << 7)
216
217/* Battery Monitor Registers */
218#define PM8607_GP_BIAS2 (0x5A)
219#define PM8607_VBAT_LOWTH (0x5B)
220#define PM8607_VCHG_LOWTH (0x5C)
221#define PM8607_VSYS_LOWTH (0x5D)
222#define PM8607_TINT_LOWTH (0x5E)
223#define PM8607_GPADC0_LOWTH (0x5F)
224#define PM8607_GPADC1_LOWTH (0x60)
225#define PM8607_GPADC2_LOWTH (0x61)
226#define PM8607_GPADC3_LOWTH (0x62)
227#define PM8607_VBAT_HIGHTH (0x63)
228#define PM8607_VCHG_HIGHTH (0x64)
229#define PM8607_VSYS_HIGHTH (0x65)
230#define PM8607_TINT_HIGHTH (0x66)
231#define PM8607_GPADC0_HIGHTH (0x67)
232#define PM8607_GPADC1_HIGHTH (0x68)
233#define PM8607_GPADC2_HIGHTH (0x69)
234#define PM8607_GPADC3_HIGHTH (0x6A)
235#define PM8607_IBAT_MEAS1 (0x6B)
236#define PM8607_IBAT_MEAS2 (0x6C)
237#define PM8607_VBAT_MEAS1 (0x6D)
238#define PM8607_VBAT_MEAS2 (0x6E)
239#define PM8607_VCHG_MEAS1 (0x6F)
240#define PM8607_VCHG_MEAS2 (0x70)
241#define PM8607_VSYS_MEAS1 (0x71)
242#define PM8607_VSYS_MEAS2 (0x72)
243#define PM8607_TINT_MEAS1 (0x73)
244#define PM8607_TINT_MEAS2 (0x74)
245#define PM8607_GPADC0_MEAS1 (0x75)
246#define PM8607_GPADC0_MEAS2 (0x76)
247#define PM8607_GPADC1_MEAS1 (0x77)
248#define PM8607_GPADC1_MEAS2 (0x78)
249#define PM8607_GPADC2_MEAS1 (0x79)
250#define PM8607_GPADC2_MEAS2 (0x7A)
251#define PM8607_GPADC3_MEAS1 (0x7B)
252#define PM8607_GPADC3_MEAS2 (0x7C)
253#define PM8607_CCNT_MEAS1 (0x95)
254#define PM8607_CCNT_MEAS2 (0x96)
255#define PM8607_VBAT_AVG (0x97)
256#define PM8607_VCHG_AVG (0x98)
257#define PM8607_VSYS_AVG (0x99)
258#define PM8607_VBAT_MIN (0x9A)
259#define PM8607_VCHG_MIN (0x9B)
260#define PM8607_VSYS_MIN (0x9C)
261#define PM8607_VBAT_MAX (0x9D)
262#define PM8607_VCHG_MAX (0x9E)
263#define PM8607_VSYS_MAX (0x9F)
264
265#define PM8607_GPADC_MISC2 (0x59)
266#define PM8607_GPADC0_GP_BIAS_A0 (1 << 0)
267#define PM8607_GPADC1_GP_BIAS_A1 (1 << 1)
268#define PM8607_GPADC2_GP_BIAS_A2 (1 << 2)
269#define PM8607_GPADC3_GP_BIAS_A3 (1 << 3)
270#define PM8607_GPADC2_GP_BIAS_OUT2 (1 << 6)
271
272/* RTC Control Registers */ 207/* RTC Control Registers */
273#define PM8607_RTC1 (0xA0) 208#define PM8607_RTC1 (0xA0)
274#define PM8607_RTC_COUNTER1 (0xA1) 209#define PM8607_RTC_COUNTER1 (0xA1)
@@ -328,22 +263,6 @@ enum {
328#define PM8607_PD_PREBIAS_MASK (0x1F << 0) 263#define PM8607_PD_PREBIAS_MASK (0x1F << 0)
329#define PM8607_PD_PRECHG_MASK (7 << 5) 264#define PM8607_PD_PRECHG_MASK (7 << 5)
330 265
331#define PM8606_REF_GP_OSC_OFF 0
332#define PM8606_REF_GP_OSC_ON 1
333#define PM8606_REF_GP_OSC_UNKNOWN 2
334
335/* Clients of reference group and 8MHz oscillator in 88PM8606 */
336enum pm8606_ref_gp_and_osc_clients {
337 REF_GP_NO_CLIENTS = 0,
338 WLED1_DUTY = (1<<0), /*PF 0x02.7:0*/
339 WLED2_DUTY = (1<<1), /*PF 0x04.7:0*/
340 WLED3_DUTY = (1<<2), /*PF 0x06.7:0*/
341 RGB1_ENABLE = (1<<3), /*PF 0x07.1*/
342 RGB2_ENABLE = (1<<4), /*PF 0x07.2*/
343 LDO_VBR_EN = (1<<5), /*PF 0x12.0*/
344 REF_GP_MAX_CLIENT = 0xFFFF
345};
346
347/* Interrupt Number in 88PM8607 */ 266/* Interrupt Number in 88PM8607 */
348enum { 267enum {
349 PM8607_IRQ_ONKEY, 268 PM8607_IRQ_ONKEY,
@@ -378,24 +297,19 @@ enum {
378 297
379struct pm860x_chip { 298struct pm860x_chip {
380 struct device *dev; 299 struct device *dev;
300 struct mutex io_lock;
381 struct mutex irq_lock; 301 struct mutex irq_lock;
382 struct mutex osc_lock;
383 struct i2c_client *client; 302 struct i2c_client *client;
384 struct i2c_client *companion; /* companion chip client */ 303 struct i2c_client *companion; /* companion chip client */
385 struct regmap *regmap;
386 struct regmap *regmap_companion;
387 304
388 int buck3_double; /* DVC ramp slope double */ 305 int buck3_double; /* DVC ramp slope double */
389 int companion_addr; 306 unsigned short companion_addr;
390 unsigned short osc_vote;
391 int id; 307 int id;
392 int irq_mode; 308 int irq_mode;
393 int irq_base; 309 int irq_base;
394 int core_irq; 310 int core_irq;
395 unsigned char chip_version; 311 unsigned char chip_version;
396 unsigned char osc_status;
397 312
398 unsigned int wakeup_flag;
399}; 313};
400 314
401enum { 315enum {
@@ -404,12 +318,16 @@ enum {
404}; 318};
405 319
406struct pm860x_backlight_pdata { 320struct pm860x_backlight_pdata {
321 int id;
407 int pwm; 322 int pwm;
408 int iset; 323 int iset;
324 unsigned long flags;
409}; 325};
410 326
411struct pm860x_led_pdata { 327struct pm860x_led_pdata {
328 int id;
412 int iset; 329 int iset;
330 unsigned long flags;
413}; 331};
414 332
415struct pm860x_rtc_pdata { 333struct pm860x_rtc_pdata {
@@ -430,8 +348,7 @@ struct pm860x_touch_pdata {
430}; 348};
431 349
432struct pm860x_power_pdata { 350struct pm860x_power_pdata {
433 int max_capacity; 351 unsigned fast_charge; /* charge current */
434 int resistor;
435}; 352};
436 353
437struct pm860x_platform_data { 354struct pm860x_platform_data {
@@ -440,35 +357,17 @@ struct pm860x_platform_data {
440 struct pm860x_rtc_pdata *rtc; 357 struct pm860x_rtc_pdata *rtc;
441 struct pm860x_touch_pdata *touch; 358 struct pm860x_touch_pdata *touch;
442 struct pm860x_power_pdata *power; 359 struct pm860x_power_pdata *power;
443 struct regulator_init_data *buck1; 360 struct regulator_init_data *regulator;
444 struct regulator_init_data *buck2; 361
445 struct regulator_init_data *buck3; 362 unsigned short companion_addr; /* I2C address of companion chip */
446 struct regulator_init_data *ldo1;
447 struct regulator_init_data *ldo2;
448 struct regulator_init_data *ldo3;
449 struct regulator_init_data *ldo4;
450 struct regulator_init_data *ldo5;
451 struct regulator_init_data *ldo6;
452 struct regulator_init_data *ldo7;
453 struct regulator_init_data *ldo8;
454 struct regulator_init_data *ldo9;
455 struct regulator_init_data *ldo10;
456 struct regulator_init_data *ldo12;
457 struct regulator_init_data *ldo_vibrator;
458 struct regulator_init_data *ldo14;
459 struct charger_desc *chg_desc;
460
461 int companion_addr; /* I2C address of companion chip */
462 int i2c_port; /* Controlled by GI2C or PI2C */ 363 int i2c_port; /* Controlled by GI2C or PI2C */
463 int irq_mode; /* Clear interrupt by read/write(0/1) */ 364 int irq_mode; /* Clear interrupt by read/write(0/1) */
464 int irq_base; /* IRQ base number of 88pm860x */ 365 int irq_base; /* IRQ base number of 88pm860x */
465 int num_leds; 366 int num_leds;
466 int num_backlights; 367 int num_backlights;
368 int num_regulators;
467}; 369};
468 370
469extern int pm8606_osc_enable(struct pm860x_chip *, unsigned short);
470extern int pm8606_osc_disable(struct pm860x_chip *, unsigned short);
471
472extern int pm860x_reg_read(struct i2c_client *, int); 371extern int pm860x_reg_read(struct i2c_client *, int);
473extern int pm860x_reg_write(struct i2c_client *, int, unsigned char); 372extern int pm860x_reg_write(struct i2c_client *, int, unsigned char);
474extern int pm860x_bulk_read(struct i2c_client *, int, int, unsigned char *); 373extern int pm860x_bulk_read(struct i2c_client *, int, int, unsigned char *);
@@ -484,4 +383,8 @@ extern int pm860x_page_bulk_write(struct i2c_client *, int, int,
484extern int pm860x_page_set_bits(struct i2c_client *, int, unsigned char, 383extern int pm860x_page_set_bits(struct i2c_client *, int, unsigned char,
485 unsigned char); 384 unsigned char);
486 385
386extern int pm860x_device_init(struct pm860x_chip *chip,
387 struct pm860x_platform_data *pdata) __devinit ;
388extern void pm860x_device_exit(struct pm860x_chip *chip) __devexit ;
389
487#endif /* __LINUX_MFD_88PM860X_H */ 390#endif /* __LINUX_MFD_88PM860X_H */
diff --git a/include/linux/mfd/ab3100.h b/include/linux/mfd/ab3100.h
deleted file mode 100644
index afd3080bde2..00000000000
--- a/include/linux/mfd/ab3100.h
+++ /dev/null
@@ -1,129 +0,0 @@
1/*
2 * Copyright (C) 2007-2009 ST-Ericsson AB
3 * License terms: GNU General Public License (GPL) version 2
4 * AB3100 core access functions
5 * Author: Linus Walleij <linus.walleij@stericsson.com>
6 *
7 */
8
9#include <linux/regulator/machine.h>
10
11struct device;
12
13#ifndef MFD_AB3100_H
14#define MFD_AB3100_H
15
16
17#define AB3100_P1A 0xc0
18#define AB3100_P1B 0xc1
19#define AB3100_P1C 0xc2
20#define AB3100_P1D 0xc3
21#define AB3100_P1E 0xc4
22#define AB3100_P1F 0xc5
23#define AB3100_P1G 0xc6
24#define AB3100_R2A 0xc7
25#define AB3100_R2B 0xc8
26
27/*
28 * AB3100, EVENTA1, A2 and A3 event register flags
29 * these are catenated into a single 32-bit flag in the code
30 * for event notification broadcasts.
31 */
32#define AB3100_EVENTA1_ONSWA (0x01<<16)
33#define AB3100_EVENTA1_ONSWB (0x02<<16)
34#define AB3100_EVENTA1_ONSWC (0x04<<16)
35#define AB3100_EVENTA1_DCIO (0x08<<16)
36#define AB3100_EVENTA1_OVER_TEMP (0x10<<16)
37#define AB3100_EVENTA1_SIM_OFF (0x20<<16)
38#define AB3100_EVENTA1_VBUS (0x40<<16)
39#define AB3100_EVENTA1_VSET_USB (0x80<<16)
40
41#define AB3100_EVENTA2_READY_TX (0x01<<8)
42#define AB3100_EVENTA2_READY_RX (0x02<<8)
43#define AB3100_EVENTA2_OVERRUN_ERROR (0x04<<8)
44#define AB3100_EVENTA2_FRAMING_ERROR (0x08<<8)
45#define AB3100_EVENTA2_CHARG_OVERCURRENT (0x10<<8)
46#define AB3100_EVENTA2_MIDR (0x20<<8)
47#define AB3100_EVENTA2_BATTERY_REM (0x40<<8)
48#define AB3100_EVENTA2_ALARM (0x80<<8)
49
50#define AB3100_EVENTA3_ADC_TRIG5 (0x01)
51#define AB3100_EVENTA3_ADC_TRIG4 (0x02)
52#define AB3100_EVENTA3_ADC_TRIG3 (0x04)
53#define AB3100_EVENTA3_ADC_TRIG2 (0x08)
54#define AB3100_EVENTA3_ADC_TRIGVBAT (0x10)
55#define AB3100_EVENTA3_ADC_TRIGVTX (0x20)
56#define AB3100_EVENTA3_ADC_TRIG1 (0x40)
57#define AB3100_EVENTA3_ADC_TRIG0 (0x80)
58
59/* AB3100, STR register flags */
60#define AB3100_STR_ONSWA (0x01)
61#define AB3100_STR_ONSWB (0x02)
62#define AB3100_STR_ONSWC (0x04)
63#define AB3100_STR_DCIO (0x08)
64#define AB3100_STR_BOOT_MODE (0x10)
65#define AB3100_STR_SIM_OFF (0x20)
66#define AB3100_STR_BATT_REMOVAL (0x40)
67#define AB3100_STR_VBUS (0x80)
68
69/*
70 * AB3100 contains 8 regulators, one external regulator controller
71 * and a buck converter, further the LDO E and buck converter can
72 * have separate settings if they are in sleep mode, this is
73 * modeled as a separate regulator.
74 */
75#define AB3100_NUM_REGULATORS 10
76
77/**
78 * struct ab3100
79 * @access_mutex: lock out concurrent accesses to the AB3100 registers
80 * @dev: pointer to the containing device
81 * @i2c_client: I2C client for this chip
82 * @testreg_client: secondary client for test registers
83 * @chip_name: name of this chip variant
84 * @chip_id: 8 bit chip ID for this chip variant
85 * @event_subscribers: event subscribers are listed here
86 * @startup_events: a copy of the first reading of the event registers
87 * @startup_events_read: whether the first events have been read
88 *
89 * This struct is PRIVATE and devices using it should NOT
90 * access ANY fields. It is used as a token for calling the
91 * AB3100 functions.
92 */
93struct ab3100 {
94 struct mutex access_mutex;
95 struct device *dev;
96 struct i2c_client *i2c_client;
97 struct i2c_client *testreg_client;
98 char chip_name[32];
99 u8 chip_id;
100 struct blocking_notifier_head event_subscribers;
101 u8 startup_events[3];
102 bool startup_events_read;
103};
104
105/**
106 * struct ab3100_platform_data
107 * Data supplied to initialize board connections to the AB3100
108 * @reg_constraints: regulator constraints for target board
109 * the order of these constraints are: LDO A, C, D, E,
110 * F, G, H, K, EXT and BUCK.
111 * @reg_initvals: initial values for the regulator registers
112 * plus two sleep settings for LDO E and the BUCK converter.
113 * exactly AB3100_NUM_REGULATORS+2 values must be sent in.
114 * Order: LDO A, C, E, E sleep, F, G, H, K, EXT, BUCK,
115 * BUCK sleep, LDO D. (LDO D need to be initialized last.)
116 * @external_voltage: voltage level of the external regulator.
117 */
118struct ab3100_platform_data {
119 struct regulator_init_data reg_constraints[AB3100_NUM_REGULATORS];
120 u8 reg_initvals[AB3100_NUM_REGULATORS+2];
121 int external_voltage;
122};
123
124int ab3100_event_register(struct ab3100 *ab3100,
125 struct notifier_block *nb);
126int ab3100_event_unregister(struct ab3100 *ab3100,
127 struct notifier_block *nb);
128
129#endif /* MFD_AB3100_H */
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h
index 2138bd33021..896b5e47f16 100644
--- a/include/linux/mfd/abx500.h
+++ b/include/linux/mfd/abx500.h
@@ -1,9 +1,12 @@
1/* 1/*
2 * Copyright (C) 2007-2009 ST-Ericsson AB 2 * Copyright (C) 2007-2009 ST-Ericsson AB
3 * License terms: GNU General Public License (GPL) version 2 3 * License terms: GNU General Public License (GPL) version 2
4 * AB3100 core access functions
5 * Author: Linus Walleij <linus.walleij@stericsson.com>
4 * 6 *
5 * ABX500 core access functions. 7 * ABX500 core access functions.
6 * The abx500 interface is used for the Analog Baseband chips. 8 * The abx500 interface is used for the Analog Baseband chip
9 * ab3100, ab3550, ab5500, and ab8500.
7 * 10 *
8 * Author: Mattias Wallin <mattias.wallin@stericsson.com> 11 * Author: Mattias Wallin <mattias.wallin@stericsson.com>
9 * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com> 12 * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com>
@@ -11,278 +14,190 @@
11 * Author: Rickard Andersson <rickard.andersson@stericsson.com> 14 * Author: Rickard Andersson <rickard.andersson@stericsson.com>
12 */ 15 */
13 16
17#include <linux/device.h>
14#include <linux/regulator/machine.h> 18#include <linux/regulator/machine.h>
15 19
16struct device;
17
18#ifndef MFD_ABX500_H 20#ifndef MFD_ABX500_H
19#define MFD_ABX500_H 21#define MFD_ABX500_H
20 22
21/** 23#define AB3100_P1A 0xc0
22 * struct abx500_init_setting 24#define AB3100_P1B 0xc1
23 * Initial value of the registers for driver to use during setup. 25#define AB3100_P1C 0xc2
24 */ 26#define AB3100_P1D 0xc3
25struct abx500_init_settings { 27#define AB3100_P1E 0xc4
26 u8 bank; 28#define AB3100_P1F 0xc5
27 u8 reg; 29#define AB3100_P1G 0xc6
28 u8 setting; 30#define AB3100_R2A 0xc7
29}; 31#define AB3100_R2B 0xc8
32#define AB3550_P1A 0x10
33#define AB5500_1_0 0x20
34#define AB5500_2_0 0x21
35#define AB5500_2_1 0x22
36
37/* AB8500 CIDs*/
38#define AB8500_CUTEARLY 0x00
39#define AB8500_CUT1P0 0x10
40#define AB8500_CUT1P1 0x11
41#define AB8500_CUT2P0 0x20
42#define AB8500_CUT3P0 0x30
30 43
31/* Battery driver related data */
32/* 44/*
33 * ADC for the battery thermistor. 45 * AB3100, EVENTA1, A2 and A3 event register flags
34 * When using the ABx500_ADC_THERM_BATCTRL the battery ID resistor is combined 46 * these are catenated into a single 32-bit flag in the code
35 * with a NTC resistor to both identify the battery and to measure its 47 * for event notification broadcasts.
36 * temperature. Different phone manufactures uses different techniques to both
37 * identify the battery and to read its temperature.
38 */
39enum abx500_adc_therm {
40 ABx500_ADC_THERM_BATCTRL,
41 ABx500_ADC_THERM_BATTEMP,
42};
43
44/**
45 * struct abx500_res_to_temp - defines one point in a temp to res curve. To
46 * be used in battery packs that combines the identification resistor with a
47 * NTC resistor.
48 * @temp: battery pack temperature in Celcius
49 * @resist: NTC resistor net total resistance
50 */
51struct abx500_res_to_temp {
52 int temp;
53 int resist;
54};
55
56/**
57 * struct abx500_v_to_cap - Table for translating voltage to capacity
58 * @voltage: Voltage in mV
59 * @capacity: Capacity in percent
60 */ 48 */
61struct abx500_v_to_cap { 49#define AB3100_EVENTA1_ONSWA (0x01<<16)
62 int voltage; 50#define AB3100_EVENTA1_ONSWB (0x02<<16)
63 int capacity; 51#define AB3100_EVENTA1_ONSWC (0x04<<16)
64}; 52#define AB3100_EVENTA1_DCIO (0x08<<16)
65 53#define AB3100_EVENTA1_OVER_TEMP (0x10<<16)
66/* Forward declaration */ 54#define AB3100_EVENTA1_SIM_OFF (0x20<<16)
67struct abx500_fg; 55#define AB3100_EVENTA1_VBUS (0x40<<16)
56#define AB3100_EVENTA1_VSET_USB (0x80<<16)
57
58#define AB3100_EVENTA2_READY_TX (0x01<<8)
59#define AB3100_EVENTA2_READY_RX (0x02<<8)
60#define AB3100_EVENTA2_OVERRUN_ERROR (0x04<<8)
61#define AB3100_EVENTA2_FRAMING_ERROR (0x08<<8)
62#define AB3100_EVENTA2_CHARG_OVERCURRENT (0x10<<8)
63#define AB3100_EVENTA2_MIDR (0x20<<8)
64#define AB3100_EVENTA2_BATTERY_REM (0x40<<8)
65#define AB3100_EVENTA2_ALARM (0x80<<8)
66
67#define AB3100_EVENTA3_ADC_TRIG5 (0x01)
68#define AB3100_EVENTA3_ADC_TRIG4 (0x02)
69#define AB3100_EVENTA3_ADC_TRIG3 (0x04)
70#define AB3100_EVENTA3_ADC_TRIG2 (0x08)
71#define AB3100_EVENTA3_ADC_TRIGVBAT (0x10)
72#define AB3100_EVENTA3_ADC_TRIGVTX (0x20)
73#define AB3100_EVENTA3_ADC_TRIG1 (0x40)
74#define AB3100_EVENTA3_ADC_TRIG0 (0x80)
75
76/* AB3100, STR register flags */
77#define AB3100_STR_ONSWA (0x01)
78#define AB3100_STR_ONSWB (0x02)
79#define AB3100_STR_ONSWC (0x04)
80#define AB3100_STR_DCIO (0x08)
81#define AB3100_STR_BOOT_MODE (0x10)
82#define AB3100_STR_SIM_OFF (0x20)
83#define AB3100_STR_BATT_REMOVAL (0x40)
84#define AB3100_STR_VBUS (0x80)
68 85
69/** 86/*
70 * struct abx500_fg_parameters - Fuel gauge algorithm parameters, in seconds 87 * AB3100 contains 8 regulators, one external regulator controller
71 * if not specified 88 * and a buck converter, further the LDO E and buck converter can
72 * @recovery_sleep_timer: Time between measurements while recovering 89 * have separate settings if they are in sleep mode, this is
73 * @recovery_total_time: Total recovery time 90 * modeled as a separate regulator.
74 * @init_timer: Measurement interval during startup
75 * @init_discard_time: Time we discard voltage measurement at startup
76 * @init_total_time: Total init time during startup
77 * @high_curr_time: Time current has to be high to go to recovery
78 * @accu_charging: FG accumulation time while charging
79 * @accu_high_curr: FG accumulation time in high current mode
80 * @high_curr_threshold: High current threshold, in mA
81 * @lowbat_threshold: Low battery threshold, in mV
82 * @overbat_threshold: Over battery threshold, in mV
83 * @battok_falling_th_sel0 Threshold in mV for battOk signal sel0
84 * Resolution in 50 mV step.
85 * @battok_raising_th_sel1 Threshold in mV for battOk signal sel1
86 * Resolution in 50 mV step.
87 * @user_cap_limit Capacity reported from user must be within this
88 * limit to be considered as sane, in percentage
89 * points.
90 * @maint_thres This is the threshold where we stop reporting
91 * battery full while in maintenance, in per cent
92 */ 91 */
93struct abx500_fg_parameters { 92#define AB3100_NUM_REGULATORS 10
94 int recovery_sleep_timer;
95 int recovery_total_time;
96 int init_timer;
97 int init_discard_time;
98 int init_total_time;
99 int high_curr_time;
100 int accu_charging;
101 int accu_high_curr;
102 int high_curr_threshold;
103 int lowbat_threshold;
104 int overbat_threshold;
105 int battok_falling_th_sel0;
106 int battok_raising_th_sel1;
107 int user_cap_limit;
108 int maint_thres;
109};
110 93
111/** 94/**
112 * struct abx500_charger_maximization - struct used by the board config. 95 * struct ab3100
113 * @use_maxi: Enable maximization for this battery type 96 * @access_mutex: lock out concurrent accesses to the AB3100 registers
114 * @maxi_chg_curr: Maximum charger current allowed 97 * @dev: pointer to the containing device
115 * @maxi_wait_cycles: cycles to wait before setting charger current 98 * @i2c_client: I2C client for this chip
116 * @charger_curr_step delta between two charger current settings (mA) 99 * @testreg_client: secondary client for test registers
100 * @chip_name: name of this chip variant
101 * @chip_id: 8 bit chip ID for this chip variant
102 * @event_subscribers: event subscribers are listed here
103 * @startup_events: a copy of the first reading of the event registers
104 * @startup_events_read: whether the first events have been read
105 *
106 * This struct is PRIVATE and devices using it should NOT
107 * access ANY fields. It is used as a token for calling the
108 * AB3100 functions.
117 */ 109 */
118struct abx500_maxim_parameters { 110struct ab3100 {
119 bool ena_maxi; 111 struct mutex access_mutex;
120 int chg_curr; 112 struct device *dev;
121 int wait_cycles; 113 struct i2c_client *i2c_client;
122 int charger_curr_step; 114 struct i2c_client *testreg_client;
115 char chip_name[32];
116 u8 chip_id;
117 struct blocking_notifier_head event_subscribers;
118 u8 startup_events[3];
119 bool startup_events_read;
123}; 120};
124 121
125/** 122/**
126 * struct abx500_battery_type - different batteries supported 123 * struct ab3100_platform_data
127 * @name: battery technology 124 * Data supplied to initialize board connections to the AB3100
128 * @resis_high: battery upper resistance limit 125 * @reg_constraints: regulator constraints for target board
129 * @resis_low: battery lower resistance limit 126 * the order of these constraints are: LDO A, C, D, E,
130 * @charge_full_design: Maximum battery capacity in mAh 127 * F, G, H, K, EXT and BUCK.
131 * @nominal_voltage: Nominal voltage of the battery in mV 128 * @reg_initvals: initial values for the regulator registers
132 * @termination_vol: max voltage upto which battery can be charged 129 * plus two sleep settings for LDO E and the BUCK converter.
133 * @termination_curr battery charging termination current in mA 130 * exactly AB3100_NUM_REGULATORS+2 values must be sent in.
134 * @recharge_vol battery voltage limit that will trigger a new 131 * Order: LDO A, C, E, E sleep, F, G, H, K, EXT, BUCK,
135 * full charging cycle in the case where maintenan- 132 * BUCK sleep, LDO D. (LDO D need to be initialized last.)
136 * -ce charging has been disabled 133 * @external_voltage: voltage level of the external regulator.
137 * @normal_cur_lvl: charger current in normal state in mA
138 * @normal_vol_lvl: charger voltage in normal state in mV
139 * @maint_a_cur_lvl: charger current in maintenance A state in mA
140 * @maint_a_vol_lvl: charger voltage in maintenance A state in mV
141 * @maint_a_chg_timer_h: charge time in maintenance A state
142 * @maint_b_cur_lvl: charger current in maintenance B state in mA
143 * @maint_b_vol_lvl: charger voltage in maintenance B state in mV
144 * @maint_b_chg_timer_h: charge time in maintenance B state
145 * @low_high_cur_lvl: charger current in temp low/high state in mA
146 * @low_high_vol_lvl: charger voltage in temp low/high state in mV'
147 * @battery_resistance: battery inner resistance in mOhm.
148 * @n_r_t_tbl_elements: number of elements in r_to_t_tbl
149 * @r_to_t_tbl: table containing resistance to temp points
150 * @n_v_cap_tbl_elements: number of elements in v_to_cap_tbl
151 * @v_to_cap_tbl: Voltage to capacity (in %) table
152 * @n_batres_tbl_elements number of elements in the batres_tbl
153 * @batres_tbl battery internal resistance vs temperature table
154 */ 134 */
155struct abx500_battery_type { 135struct ab3100_platform_data {
156 int name; 136 struct regulator_init_data reg_constraints[AB3100_NUM_REGULATORS];
157 int resis_high; 137 u8 reg_initvals[AB3100_NUM_REGULATORS+2];
158 int resis_low; 138 int external_voltage;
159 int charge_full_design;
160 int nominal_voltage;
161 int termination_vol;
162 int termination_curr;
163 int recharge_vol;
164 int normal_cur_lvl;
165 int normal_vol_lvl;
166 int maint_a_cur_lvl;
167 int maint_a_vol_lvl;
168 int maint_a_chg_timer_h;
169 int maint_b_cur_lvl;
170 int maint_b_vol_lvl;
171 int maint_b_chg_timer_h;
172 int low_high_cur_lvl;
173 int low_high_vol_lvl;
174 int battery_resistance;
175 int n_temp_tbl_elements;
176 struct abx500_res_to_temp *r_to_t_tbl;
177 int n_v_cap_tbl_elements;
178 struct abx500_v_to_cap *v_to_cap_tbl;
179 int n_batres_tbl_elements;
180 struct batres_vs_temp *batres_tbl;
181}; 139};
182 140
183/** 141int ab3100_event_register(struct ab3100 *ab3100,
184 * struct abx500_bm_capacity_levels - abx500 capacity level data 142 struct notifier_block *nb);
185 * @critical: critical capacity level in percent 143int ab3100_event_unregister(struct ab3100 *ab3100,
186 * @low: low capacity level in percent 144 struct notifier_block *nb);
187 * @normal: normal capacity level in percent 145
188 * @high: high capacity level in percent 146/* AB3550, STR register flags */
189 * @full: full capacity level in percent 147#define AB3550_STR_ONSWA (0x01)
190 */ 148#define AB3550_STR_ONSWB (0x02)
191struct abx500_bm_capacity_levels { 149#define AB3550_STR_ONSWC (0x04)
192 int critical; 150#define AB3550_STR_DCIO (0x08)
193 int low; 151#define AB3550_STR_BOOT_MODE (0x10)
194 int normal; 152#define AB3550_STR_SIM_OFF (0x20)
195 int high; 153#define AB3550_STR_BATT_REMOVAL (0x40)
196 int full; 154#define AB3550_STR_VBUS (0x80)
155
156/* Interrupt mask registers */
157#define AB3550_IMR1 0x29
158#define AB3550_IMR2 0x2a
159#define AB3550_IMR3 0x2b
160#define AB3550_IMR4 0x2c
161#define AB3550_IMR5 0x2d
162
163enum ab3550_devid {
164 AB3550_DEVID_ADC,
165 AB3550_DEVID_DAC,
166 AB3550_DEVID_LEDS,
167 AB3550_DEVID_POWER,
168 AB3550_DEVID_REGULATORS,
169 AB3550_DEVID_SIM,
170 AB3550_DEVID_UART,
171 AB3550_DEVID_RTC,
172 AB3550_DEVID_CHARGER,
173 AB3550_DEVID_FUELGAUGE,
174 AB3550_DEVID_VIBRATOR,
175 AB3550_DEVID_CODEC,
176 AB3550_NUM_DEVICES,
197}; 177};
198 178
199/** 179/**
200 * struct abx500_bm_charger_parameters - Charger specific parameters 180 * struct abx500_init_setting
201 * @usb_volt_max: maximum allowed USB charger voltage in mV 181 * Initial value of the registers for driver to use during setup.
202 * @usb_curr_max: maximum allowed USB charger current in mA
203 * @ac_volt_max: maximum allowed AC charger voltage in mV
204 * @ac_curr_max: maximum allowed AC charger current in mA
205 */ 182 */
206struct abx500_bm_charger_parameters { 183struct abx500_init_settings {
207 int usb_volt_max; 184 u8 bank;
208 int usb_curr_max; 185 u8 reg;
209 int ac_volt_max; 186 u8 setting;
210 int ac_curr_max;
211}; 187};
212 188
213/** 189/**
214 * struct abx500_bm_data - abx500 battery management data 190 * struct ab3550_platform_data
215 * @temp_under under this temp, charging is stopped 191 * Data supplied to initialize board connections to the AB3550
216 * @temp_low between this temp and temp_under charging is reduced
217 * @temp_high between this temp and temp_over charging is reduced
218 * @temp_over over this temp, charging is stopped
219 * @temp_now present battery temperature
220 * @temp_interval_chg temperature measurement interval in s when charging
221 * @temp_interval_nochg temperature measurement interval in s when not charging
222 * @main_safety_tmr_h safety timer for main charger
223 * @usb_safety_tmr_h safety timer for usb charger
224 * @bkup_bat_v voltage which we charge the backup battery with
225 * @bkup_bat_i current which we charge the backup battery with
226 * @no_maintenance indicates that maintenance charging is disabled
227 * @abx500_adc_therm placement of thermistor, batctrl or battemp adc
228 * @chg_unknown_bat flag to enable charging of unknown batteries
229 * @enable_overshoot flag to enable VBAT overshoot control
230 * @auto_trig flag to enable auto adc trigger
231 * @fg_res resistance of FG resistor in 0.1mOhm
232 * @n_btypes number of elements in array bat_type
233 * @batt_id index of the identified battery in array bat_type
234 * @interval_charging charge alg cycle period time when charging (sec)
235 * @interval_not_charging charge alg cycle period time when not charging (sec)
236 * @temp_hysteresis temperature hysteresis
237 * @gnd_lift_resistance Battery ground to phone ground resistance (mOhm)
238 * @maxi: maximization parameters
239 * @cap_levels capacity in percent for the different capacity levels
240 * @bat_type table of supported battery types
241 * @chg_params charger parameters
242 * @fg_params fuel gauge parameters
243 */ 192 */
244struct abx500_bm_data { 193struct ab3550_platform_data {
245 int temp_under; 194 struct {unsigned int base; unsigned int count; } irq;
246 int temp_low; 195 void *dev_data[AB3550_NUM_DEVICES];
247 int temp_high; 196 size_t dev_data_sz[AB3550_NUM_DEVICES];
248 int temp_over; 197 struct abx500_init_settings *init_settings;
249 int temp_now; 198 unsigned int init_settings_sz;
250 int temp_interval_chg;
251 int temp_interval_nochg;
252 int main_safety_tmr_h;
253 int usb_safety_tmr_h;
254 int bkup_bat_v;
255 int bkup_bat_i;
256 bool no_maintenance;
257 bool chg_unknown_bat;
258 bool enable_overshoot;
259 bool auto_trig;
260 enum abx500_adc_therm adc_therm;
261 int fg_res;
262 int n_btypes;
263 int batt_id;
264 int interval_charging;
265 int interval_not_charging;
266 int temp_hysteresis;
267 int gnd_lift_resistance;
268 const struct abx500_maxim_parameters *maxi;
269 const struct abx500_bm_capacity_levels *cap_levels;
270 struct abx500_battery_type *bat_type;
271 const struct abx500_bm_charger_parameters *chg_params;
272 const struct abx500_fg_parameters *fg_params;
273}; 199};
274 200
275extern struct abx500_bm_data ab8500_bm_data;
276
277enum {
278 NTC_EXTERNAL = 0,
279 NTC_INTERNAL,
280};
281
282int bmdevs_of_probe(struct device *dev,
283 struct device_node *np,
284 struct abx500_bm_data **battery);
285
286int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, 201int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg,
287 u8 value); 202 u8 value);
288int abx500_get_register_interruptible(struct device *dev, u8 bank, u8 reg, 203int abx500_get_register_interruptible(struct device *dev, u8 bank, u8 reg,
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h
deleted file mode 100644
index 44310c98ee6..00000000000
--- a/include/linux/mfd/abx500/ab8500-bm.h
+++ /dev/null
@@ -1,474 +0,0 @@
1/*
2 * Copyright ST-Ericsson 2012.
3 *
4 * Author: Arun Murthy <arun.murthy@stericsson.com>
5 * Licensed under GPLv2.
6 */
7
8#ifndef _AB8500_BM_H
9#define _AB8500_BM_H
10
11#include <linux/kernel.h>
12#include <linux/mfd/abx500.h>
13
14/*
15 * System control 2 register offsets.
16 * bank = 0x02
17 */
18#define AB8500_MAIN_WDOG_CTRL_REG 0x01
19#define AB8500_LOW_BAT_REG 0x03
20#define AB8500_BATT_OK_REG 0x04
21/*
22 * USB/ULPI register offsets
23 * Bank : 0x5
24 */
25#define AB8500_USB_LINE_STAT_REG 0x80
26
27/*
28 * Charger / status register offfsets
29 * Bank : 0x0B
30 */
31#define AB8500_CH_STATUS1_REG 0x00
32#define AB8500_CH_STATUS2_REG 0x01
33#define AB8500_CH_USBCH_STAT1_REG 0x02
34#define AB8500_CH_USBCH_STAT2_REG 0x03
35#define AB8500_CH_FSM_STAT_REG 0x04
36#define AB8500_CH_STAT_REG 0x05
37
38/*
39 * Charger / control register offfsets
40 * Bank : 0x0B
41 */
42#define AB8500_CH_VOLT_LVL_REG 0x40
43#define AB8500_CH_VOLT_LVL_MAX_REG 0x41 /*Only in Cut2.0*/
44#define AB8500_CH_OPT_CRNTLVL_REG 0x42
45#define AB8500_CH_OPT_CRNTLVL_MAX_REG 0x43 /*Only in Cut2.0*/
46#define AB8500_CH_WD_TIMER_REG 0x50
47#define AB8500_CHARG_WD_CTRL 0x51
48#define AB8500_BTEMP_HIGH_TH 0x52
49#define AB8500_LED_INDICATOR_PWM_CTRL 0x53
50#define AB8500_LED_INDICATOR_PWM_DUTY 0x54
51#define AB8500_BATT_OVV 0x55
52#define AB8500_CHARGER_CTRL 0x56
53#define AB8500_BAT_CTRL_CURRENT_SOURCE 0x60 /*Only in Cut2.0*/
54
55/*
56 * Charger / main control register offsets
57 * Bank : 0x0B
58 */
59#define AB8500_MCH_CTRL1 0x80
60#define AB8500_MCH_CTRL2 0x81
61#define AB8500_MCH_IPT_CURLVL_REG 0x82
62#define AB8500_CH_WD_REG 0x83
63
64/*
65 * Charger / USB control register offsets
66 * Bank : 0x0B
67 */
68#define AB8500_USBCH_CTRL1_REG 0xC0
69#define AB8500_USBCH_CTRL2_REG 0xC1
70#define AB8500_USBCH_IPT_CRNTLVL_REG 0xC2
71
72/*
73 * Gas Gauge register offsets
74 * Bank : 0x0C
75 */
76#define AB8500_GASG_CC_CTRL_REG 0x00
77#define AB8500_GASG_CC_ACCU1_REG 0x01
78#define AB8500_GASG_CC_ACCU2_REG 0x02
79#define AB8500_GASG_CC_ACCU3_REG 0x03
80#define AB8500_GASG_CC_ACCU4_REG 0x04
81#define AB8500_GASG_CC_SMPL_CNTRL_REG 0x05
82#define AB8500_GASG_CC_SMPL_CNTRH_REG 0x06
83#define AB8500_GASG_CC_SMPL_CNVL_REG 0x07
84#define AB8500_GASG_CC_SMPL_CNVH_REG 0x08
85#define AB8500_GASG_CC_CNTR_AVGOFF_REG 0x09
86#define AB8500_GASG_CC_OFFSET_REG 0x0A
87#define AB8500_GASG_CC_NCOV_ACCU 0x10
88#define AB8500_GASG_CC_NCOV_ACCU_CTRL 0x11
89#define AB8500_GASG_CC_NCOV_ACCU_LOW 0x12
90#define AB8500_GASG_CC_NCOV_ACCU_MED 0x13
91#define AB8500_GASG_CC_NCOV_ACCU_HIGH 0x14
92
93/*
94 * Interrupt register offsets
95 * Bank : 0x0E
96 */
97#define AB8500_IT_SOURCE2_REG 0x01
98#define AB8500_IT_SOURCE21_REG 0x14
99
100/*
101 * RTC register offsets
102 * Bank: 0x0F
103 */
104#define AB8500_RTC_BACKUP_CHG_REG 0x0C
105#define AB8500_RTC_CC_CONF_REG 0x01
106#define AB8500_RTC_CTRL_REG 0x0B
107
108/*
109 * OTP register offsets
110 * Bank : 0x15
111 */
112#define AB8500_OTP_CONF_15 0x0E
113
114/* GPADC constants from AB8500 spec, UM0836 */
115#define ADC_RESOLUTION 1024
116#define ADC_CH_MAIN_MIN 0
117#define ADC_CH_MAIN_MAX 20030
118#define ADC_CH_VBUS_MIN 0
119#define ADC_CH_VBUS_MAX 20030
120#define ADC_CH_VBAT_MIN 2300
121#define ADC_CH_VBAT_MAX 4800
122#define ADC_CH_BKBAT_MIN 0
123#define ADC_CH_BKBAT_MAX 3200
124
125/* Main charge i/p current */
126#define MAIN_CH_IP_CUR_0P9A 0x80
127#define MAIN_CH_IP_CUR_1P0A 0x90
128#define MAIN_CH_IP_CUR_1P1A 0xA0
129#define MAIN_CH_IP_CUR_1P2A 0xB0
130#define MAIN_CH_IP_CUR_1P3A 0xC0
131#define MAIN_CH_IP_CUR_1P4A 0xD0
132#define MAIN_CH_IP_CUR_1P5A 0xE0
133
134/* ChVoltLevel */
135#define CH_VOL_LVL_3P5 0x00
136#define CH_VOL_LVL_4P0 0x14
137#define CH_VOL_LVL_4P05 0x16
138#define CH_VOL_LVL_4P1 0x1B
139#define CH_VOL_LVL_4P15 0x20
140#define CH_VOL_LVL_4P2 0x25
141#define CH_VOL_LVL_4P6 0x4D
142
143/* ChOutputCurrentLevel */
144#define CH_OP_CUR_LVL_0P1 0x00
145#define CH_OP_CUR_LVL_0P2 0x01
146#define CH_OP_CUR_LVL_0P3 0x02
147#define CH_OP_CUR_LVL_0P4 0x03
148#define CH_OP_CUR_LVL_0P5 0x04
149#define CH_OP_CUR_LVL_0P6 0x05
150#define CH_OP_CUR_LVL_0P7 0x06
151#define CH_OP_CUR_LVL_0P8 0x07
152#define CH_OP_CUR_LVL_0P9 0x08
153#define CH_OP_CUR_LVL_1P4 0x0D
154#define CH_OP_CUR_LVL_1P5 0x0E
155#define CH_OP_CUR_LVL_1P6 0x0F
156
157/* BTEMP High thermal limits */
158#define BTEMP_HIGH_TH_57_0 0x00
159#define BTEMP_HIGH_TH_52 0x01
160#define BTEMP_HIGH_TH_57_1 0x02
161#define BTEMP_HIGH_TH_62 0x03
162
163/* current is mA */
164#define USB_0P1A 100
165#define USB_0P2A 200
166#define USB_0P3A 300
167#define USB_0P4A 400
168#define USB_0P5A 500
169
170#define LOW_BAT_3P1V 0x20
171#define LOW_BAT_2P3V 0x00
172#define LOW_BAT_RESET 0x01
173#define LOW_BAT_ENABLE 0x01
174
175/* Backup battery constants */
176#define BUP_ICH_SEL_50UA 0x00
177#define BUP_ICH_SEL_150UA 0x04
178#define BUP_ICH_SEL_300UA 0x08
179#define BUP_ICH_SEL_700UA 0x0C
180
181#define BUP_VCH_SEL_2P5V 0x00
182#define BUP_VCH_SEL_2P6V 0x01
183#define BUP_VCH_SEL_2P8V 0x02
184#define BUP_VCH_SEL_3P1V 0x03
185
186/* Battery OVV constants */
187#define BATT_OVV_ENA 0x02
188#define BATT_OVV_TH_3P7 0x00
189#define BATT_OVV_TH_4P75 0x01
190
191/* A value to indicate over voltage */
192#define BATT_OVV_VALUE 4750
193
194/* VBUS OVV constants */
195#define VBUS_OVV_SELECT_MASK 0x78
196#define VBUS_OVV_SELECT_5P6V 0x00
197#define VBUS_OVV_SELECT_5P7V 0x08
198#define VBUS_OVV_SELECT_5P8V 0x10
199#define VBUS_OVV_SELECT_5P9V 0x18
200#define VBUS_OVV_SELECT_6P0V 0x20
201#define VBUS_OVV_SELECT_6P1V 0x28
202#define VBUS_OVV_SELECT_6P2V 0x30
203#define VBUS_OVV_SELECT_6P3V 0x38
204
205#define VBUS_AUTO_IN_CURR_LIM_ENA 0x04
206
207/* Fuel Gauge constants */
208#define RESET_ACCU 0x02
209#define READ_REQ 0x01
210#define CC_DEEP_SLEEP_ENA 0x02
211#define CC_PWR_UP_ENA 0x01
212#define CC_SAMPLES_40 0x28
213#define RD_NCONV_ACCU_REQ 0x01
214#define CC_CALIB 0x08
215#define CC_INTAVGOFFSET_ENA 0x10
216#define CC_MUXOFFSET 0x80
217#define CC_INT_CAL_N_AVG_MASK 0x60
218#define CC_INT_CAL_SAMPLES_16 0x40
219#define CC_INT_CAL_SAMPLES_8 0x20
220#define CC_INT_CAL_SAMPLES_4 0x00
221
222/* RTC constants */
223#define RTC_BUP_CH_ENA 0x10
224
225/* BatCtrl Current Source Constants */
226#define BAT_CTRL_7U_ENA 0x01
227#define BAT_CTRL_20U_ENA 0x02
228#define BAT_CTRL_CMP_ENA 0x04
229#define FORCE_BAT_CTRL_CMP_HIGH 0x08
230#define BAT_CTRL_PULL_UP_ENA 0x10
231
232/* Battery type */
233#define BATTERY_UNKNOWN 00
234
235/**
236 * struct res_to_temp - defines one point in a temp to res curve. To
237 * be used in battery packs that combines the identification resistor with a
238 * NTC resistor.
239 * @temp: battery pack temperature in Celcius
240 * @resist: NTC resistor net total resistance
241 */
242struct res_to_temp {
243 int temp;
244 int resist;
245};
246
247/**
248 * struct batres_vs_temp - defines one point in a temp vs battery internal
249 * resistance curve.
250 * @temp: battery pack temperature in Celcius
251 * @resist: battery internal reistance in mOhm
252 */
253struct batres_vs_temp {
254 int temp;
255 int resist;
256};
257
258/* Forward declaration */
259struct ab8500_fg;
260
261/**
262 * struct ab8500_fg_parameters - Fuel gauge algorithm parameters, in seconds
263 * if not specified
264 * @recovery_sleep_timer: Time between measurements while recovering
265 * @recovery_total_time: Total recovery time
266 * @init_timer: Measurement interval during startup
267 * @init_discard_time: Time we discard voltage measurement at startup
268 * @init_total_time: Total init time during startup
269 * @high_curr_time: Time current has to be high to go to recovery
270 * @accu_charging: FG accumulation time while charging
271 * @accu_high_curr: FG accumulation time in high current mode
272 * @high_curr_threshold: High current threshold, in mA
273 * @lowbat_threshold: Low battery threshold, in mV
274 * @battok_falling_th_sel0 Threshold in mV for battOk signal sel0
275 * Resolution in 50 mV step.
276 * @battok_raising_th_sel1 Threshold in mV for battOk signal sel1
277 * Resolution in 50 mV step.
278 * @user_cap_limit Capacity reported from user must be within this
279 * limit to be considered as sane, in percentage
280 * points.
281 * @maint_thres This is the threshold where we stop reporting
282 * battery full while in maintenance, in per cent
283 */
284struct ab8500_fg_parameters {
285 int recovery_sleep_timer;
286 int recovery_total_time;
287 int init_timer;
288 int init_discard_time;
289 int init_total_time;
290 int high_curr_time;
291 int accu_charging;
292 int accu_high_curr;
293 int high_curr_threshold;
294 int lowbat_threshold;
295 int battok_falling_th_sel0;
296 int battok_raising_th_sel1;
297 int user_cap_limit;
298 int maint_thres;
299};
300
301/**
302 * struct ab8500_charger_maximization - struct used by the board config.
303 * @use_maxi: Enable maximization for this battery type
304 * @maxi_chg_curr: Maximum charger current allowed
305 * @maxi_wait_cycles: cycles to wait before setting charger current
306 * @charger_curr_step delta between two charger current settings (mA)
307 */
308struct ab8500_maxim_parameters {
309 bool ena_maxi;
310 int chg_curr;
311 int wait_cycles;
312 int charger_curr_step;
313};
314
315/**
316 * struct ab8500_bm_capacity_levels - ab8500 capacity level data
317 * @critical: critical capacity level in percent
318 * @low: low capacity level in percent
319 * @normal: normal capacity level in percent
320 * @high: high capacity level in percent
321 * @full: full capacity level in percent
322 */
323struct ab8500_bm_capacity_levels {
324 int critical;
325 int low;
326 int normal;
327 int high;
328 int full;
329};
330
331/**
332 * struct ab8500_bm_charger_parameters - Charger specific parameters
333 * @usb_volt_max: maximum allowed USB charger voltage in mV
334 * @usb_curr_max: maximum allowed USB charger current in mA
335 * @ac_volt_max: maximum allowed AC charger voltage in mV
336 * @ac_curr_max: maximum allowed AC charger current in mA
337 */
338struct ab8500_bm_charger_parameters {
339 int usb_volt_max;
340 int usb_curr_max;
341 int ac_volt_max;
342 int ac_curr_max;
343};
344
345/**
346 * struct ab8500_bm_data - ab8500 battery management data
347 * @temp_under under this temp, charging is stopped
348 * @temp_low between this temp and temp_under charging is reduced
349 * @temp_high between this temp and temp_over charging is reduced
350 * @temp_over over this temp, charging is stopped
351 * @temp_interval_chg temperature measurement interval in s when charging
352 * @temp_interval_nochg temperature measurement interval in s when not charging
353 * @main_safety_tmr_h safety timer for main charger
354 * @usb_safety_tmr_h safety timer for usb charger
355 * @bkup_bat_v voltage which we charge the backup battery with
356 * @bkup_bat_i current which we charge the backup battery with
357 * @no_maintenance indicates that maintenance charging is disabled
358 * @adc_therm placement of thermistor, batctrl or battemp adc
359 * @chg_unknown_bat flag to enable charging of unknown batteries
360 * @enable_overshoot flag to enable VBAT overshoot control
361 * @fg_res resistance of FG resistor in 0.1mOhm
362 * @n_btypes number of elements in array bat_type
363 * @batt_id index of the identified battery in array bat_type
364 * @interval_charging charge alg cycle period time when charging (sec)
365 * @interval_not_charging charge alg cycle period time when not charging (sec)
366 * @temp_hysteresis temperature hysteresis
367 * @gnd_lift_resistance Battery ground to phone ground resistance (mOhm)
368 * @maxi: maximization parameters
369 * @cap_levels capacity in percent for the different capacity levels
370 * @bat_type table of supported battery types
371 * @chg_params charger parameters
372 * @fg_params fuel gauge parameters
373 */
374struct ab8500_bm_data {
375 int temp_under;
376 int temp_low;
377 int temp_high;
378 int temp_over;
379 int temp_interval_chg;
380 int temp_interval_nochg;
381 int main_safety_tmr_h;
382 int usb_safety_tmr_h;
383 int bkup_bat_v;
384 int bkup_bat_i;
385 bool no_maintenance;
386 bool chg_unknown_bat;
387 bool enable_overshoot;
388 enum abx500_adc_therm adc_therm;
389 int fg_res;
390 int n_btypes;
391 int batt_id;
392 int interval_charging;
393 int interval_not_charging;
394 int temp_hysteresis;
395 int gnd_lift_resistance;
396 const struct ab8500_maxim_parameters *maxi;
397 const struct ab8500_bm_capacity_levels *cap_levels;
398 const struct ab8500_bm_charger_parameters *chg_params;
399 const struct ab8500_fg_parameters *fg_params;
400};
401
402struct ab8500_charger_platform_data {
403 char **supplied_to;
404 size_t num_supplicants;
405 bool autopower_cfg;
406};
407
408struct ab8500_btemp_platform_data {
409 char **supplied_to;
410 size_t num_supplicants;
411};
412
413struct ab8500_fg_platform_data {
414 char **supplied_to;
415 size_t num_supplicants;
416};
417
418struct ab8500_chargalg_platform_data {
419 char **supplied_to;
420 size_t num_supplicants;
421};
422struct ab8500_btemp;
423struct ab8500_gpadc;
424struct ab8500_fg;
425#ifdef CONFIG_AB8500_BM
426void ab8500_fg_reinit(void);
427void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA);
428struct ab8500_btemp *ab8500_btemp_get(void);
429int ab8500_btemp_get_batctrl_temp(struct ab8500_btemp *btemp);
430struct ab8500_fg *ab8500_fg_get(void);
431int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev);
432int ab8500_fg_inst_curr_start(struct ab8500_fg *di);
433int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res);
434int ab8500_fg_inst_curr_done(struct ab8500_fg *di);
435
436#else
437int ab8500_fg_inst_curr_done(struct ab8500_fg *di)
438{
439}
440static void ab8500_fg_reinit(void)
441{
442}
443static void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA)
444{
445}
446static struct ab8500_btemp *ab8500_btemp_get(void)
447{
448 return NULL;
449}
450static int ab8500_btemp_get_batctrl_temp(struct ab8500_btemp *btemp)
451{
452 return 0;
453}
454struct ab8500_fg *ab8500_fg_get(void)
455{
456 return NULL;
457}
458static int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev)
459{
460 return -ENODEV;
461}
462
463static inline int ab8500_fg_inst_curr_start(struct ab8500_fg *di)
464{
465 return -ENODEV;
466}
467
468static inline int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res)
469{
470 return -ENODEV;
471}
472
473#endif
474#endif /* _AB8500_BM_H */
diff --git a/include/linux/mfd/abx500/ab8500-codec.h b/include/linux/mfd/abx500/ab8500-codec.h
deleted file mode 100644
index d7079413def..00000000000
--- a/include/linux/mfd/abx500/ab8500-codec.h
+++ /dev/null
@@ -1,54 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2012
3 *
4 * Author: Ola Lilja <ola.o.lilja@stericsson.com>
5 * for ST-Ericsson.
6 *
7 * License terms:
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License version 2 as published
11 * by the Free Software Foundation.
12 */
13
14#ifndef AB8500_CORE_CODEC_H
15#define AB8500_CORE_CODEC_H
16
17/* Mic-types */
18enum amic_type {
19 AMIC_TYPE_SINGLE_ENDED,
20 AMIC_TYPE_DIFFERENTIAL
21};
22
23/* Mic-biases */
24enum amic_micbias {
25 AMIC_MICBIAS_VAMIC1,
26 AMIC_MICBIAS_VAMIC2,
27 AMIC_MICBIAS_UNKNOWN
28};
29
30/* Bias-voltage */
31enum ear_cm_voltage {
32 EAR_CMV_0_95V,
33 EAR_CMV_1_10V,
34 EAR_CMV_1_27V,
35 EAR_CMV_1_58V,
36 EAR_CMV_UNKNOWN
37};
38
39/* Analog microphone settings */
40struct amic_settings {
41 enum amic_type mic1_type;
42 enum amic_type mic2_type;
43 enum amic_micbias mic1a_micbias;
44 enum amic_micbias mic1b_micbias;
45 enum amic_micbias mic2_micbias;
46};
47
48/* Platform data structure for the audio-parts of the AB8500 */
49struct ab8500_codec_platform_data {
50 struct amic_settings amics;
51 enum ear_cm_voltage ear_cmv;
52};
53
54#endif
diff --git a/include/linux/mfd/abx500/ab8500-gpadc.h b/include/linux/mfd/abx500/ab8500-gpadc.h
deleted file mode 100644
index 252966769d9..00000000000
--- a/include/linux/mfd/abx500/ab8500-gpadc.h
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Copyright (C) 2010 ST-Ericsson SA
3 * Licensed under GPLv2.
4 *
5 * Author: Arun R Murthy <arun.murthy@stericsson.com>
6 * Author: Daniel Willerud <daniel.willerud@stericsson.com>
7 */
8
9#ifndef _AB8500_GPADC_H
10#define _AB8500_GPADC_H
11
12/* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2) */
13#define BAT_CTRL 0x01
14#define BTEMP_BALL 0x02
15#define MAIN_CHARGER_V 0x03
16#define ACC_DETECT1 0x04
17#define ACC_DETECT2 0x05
18#define ADC_AUX1 0x06
19#define ADC_AUX2 0x07
20#define MAIN_BAT_V 0x08
21#define VBUS_V 0x09
22#define MAIN_CHARGER_C 0x0A
23#define USB_CHARGER_C 0x0B
24#define BK_BAT_V 0x0C
25#define DIE_TEMP 0x0D
26
27struct ab8500_gpadc;
28
29struct ab8500_gpadc *ab8500_gpadc_get(char *name);
30int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel);
31int ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel);
32int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc,
33 u8 channel, int ad_value);
34
35#endif /* _AB8500_GPADC_H */
diff --git a/include/linux/mfd/abx500/ab8500-gpio.h b/include/linux/mfd/abx500/ab8500-gpio.h
deleted file mode 100644
index 2387c207ea8..00000000000
--- a/include/linux/mfd/abx500/ab8500-gpio.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/*
2 * Copyright ST-Ericsson 2010.
3 *
4 * Author: Bibek Basu <bibek.basu@stericsson.com>
5 * Licensed under GPLv2.
6 */
7
8#ifndef _AB8500_GPIO_H
9#define _AB8500_GPIO_H
10
11/*
12 * Platform data to register a block: only the initial gpio/irq number.
13 * Array sizes are large enough to contain all AB8500 and AB9540 GPIO
14 * registers.
15 */
16
17struct ab8500_gpio_platform_data {
18 int gpio_base;
19 u32 irq_base;
20 u8 config_reg[8];
21};
22
23#endif /* _AB8500_GPIO_H */
diff --git a/include/linux/mfd/abx500/ab8500-sysctrl.h b/include/linux/mfd/abx500/ab8500-sysctrl.h
deleted file mode 100644
index 10eb50973c3..00000000000
--- a/include/linux/mfd/abx500/ab8500-sysctrl.h
+++ /dev/null
@@ -1,297 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2010
3 * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com> for ST Ericsson.
4 * License terms: GNU General Public License (GPL) version 2
5 */
6#ifndef __AB8500_SYSCTRL_H
7#define __AB8500_SYSCTRL_H
8
9#include <linux/bitops.h>
10
11#ifdef CONFIG_AB8500_CORE
12
13int ab8500_sysctrl_read(u16 reg, u8 *value);
14int ab8500_sysctrl_write(u16 reg, u8 mask, u8 value);
15
16#else
17
18static inline int ab8500_sysctrl_read(u16 reg, u8 *value)
19{
20 return 0;
21}
22
23static inline int ab8500_sysctrl_write(u16 reg, u8 mask, u8 value)
24{
25 return 0;
26}
27
28#endif /* CONFIG_AB8500_CORE */
29
30static inline int ab8500_sysctrl_set(u16 reg, u8 bits)
31{
32 return ab8500_sysctrl_write(reg, bits, bits);
33}
34
35static inline int ab8500_sysctrl_clear(u16 reg, u8 bits)
36{
37 return ab8500_sysctrl_write(reg, bits, 0);
38}
39
40/* Registers */
41#define AB8500_TURNONSTATUS 0x100
42#define AB8500_RESETSTATUS 0x101
43#define AB8500_PONKEY1PRESSSTATUS 0x102
44#define AB8500_SYSCLKREQSTATUS 0x142
45#define AB8500_STW4500CTRL1 0x180
46#define AB8500_STW4500CTRL2 0x181
47#define AB8500_STW4500CTRL3 0x200
48#define AB8500_MAINWDOGCTRL 0x201
49#define AB8500_MAINWDOGTIMER 0x202
50#define AB8500_LOWBAT 0x203
51#define AB8500_BATTOK 0x204
52#define AB8500_SYSCLKTIMER 0x205
53#define AB8500_SMPSCLKCTRL 0x206
54#define AB8500_SMPSCLKSEL1 0x207
55#define AB8500_SMPSCLKSEL2 0x208
56#define AB8500_SMPSCLKSEL3 0x209
57#define AB8500_SYSULPCLKCONF 0x20A
58#define AB8500_SYSULPCLKCTRL1 0x20B
59#define AB8500_SYSCLKCTRL 0x20C
60#define AB8500_SYSCLKREQ1VALID 0x20D
61#define AB8500_SYSTEMCTRLSUP 0x20F
62#define AB8500_SYSCLKREQ1RFCLKBUF 0x210
63#define AB8500_SYSCLKREQ2RFCLKBUF 0x211
64#define AB8500_SYSCLKREQ3RFCLKBUF 0x212
65#define AB8500_SYSCLKREQ4RFCLKBUF 0x213
66#define AB8500_SYSCLKREQ5RFCLKBUF 0x214
67#define AB8500_SYSCLKREQ6RFCLKBUF 0x215
68#define AB8500_SYSCLKREQ7RFCLKBUF 0x216
69#define AB8500_SYSCLKREQ8RFCLKBUF 0x217
70#define AB8500_DITHERCLKCTRL 0x220
71#define AB8500_SWATCTRL 0x230
72#define AB8500_HIQCLKCTRL 0x232
73#define AB8500_VSIMSYSCLKCTRL 0x233
74#define AB9540_SYSCLK12BUFCTRL 0x234
75#define AB9540_SYSCLK12CONFCTRL 0x235
76#define AB9540_SYSCLK12BUFCTRL2 0x236
77#define AB9540_SYSCLK12BUF1VALID 0x237
78#define AB9540_SYSCLK12BUF2VALID 0x238
79#define AB9540_SYSCLK12BUF3VALID 0x239
80#define AB9540_SYSCLK12BUF4VALID 0x23A
81
82/* Bits */
83#define AB8500_TURNONSTATUS_PORNVBAT BIT(0)
84#define AB8500_TURNONSTATUS_PONKEY1DBF BIT(1)
85#define AB8500_TURNONSTATUS_PONKEY2DBF BIT(2)
86#define AB8500_TURNONSTATUS_RTCALARM BIT(3)
87#define AB8500_TURNONSTATUS_MAINCHDET BIT(4)
88#define AB8500_TURNONSTATUS_VBUSDET BIT(5)
89#define AB8500_TURNONSTATUS_USBIDDETECT BIT(6)
90
91#define AB8500_RESETSTATUS_RESETN4500NSTATUS BIT(0)
92#define AB8500_RESETSTATUS_SWRESETN4500NSTATUS BIT(2)
93
94#define AB8500_PONKEY1PRESSSTATUS_PONKEY1PRESSTIME_MASK 0x7F
95#define AB8500_PONKEY1PRESSSTATUS_PONKEY1PRESSTIME_SHIFT 0
96
97#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ1STATUS BIT(0)
98#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ2STATUS BIT(1)
99#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ3STATUS BIT(2)
100#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ4STATUS BIT(3)
101#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ5STATUS BIT(4)
102#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ6STATUS BIT(5)
103#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ7STATUS BIT(6)
104#define AB8500_SYSCLKREQSTATUS_SYSCLKREQ8STATUS BIT(7)
105
106#define AB8500_STW4500CTRL1_SWOFF BIT(0)
107#define AB8500_STW4500CTRL1_SWRESET4500N BIT(1)
108#define AB8500_STW4500CTRL1_THDB8500SWOFF BIT(2)
109
110#define AB8500_STW4500CTRL2_RESETNVAUX1VALID BIT(0)
111#define AB8500_STW4500CTRL2_RESETNVAUX2VALID BIT(1)
112#define AB8500_STW4500CTRL2_RESETNVAUX3VALID BIT(2)
113#define AB8500_STW4500CTRL2_RESETNVMODVALID BIT(3)
114#define AB8500_STW4500CTRL2_RESETNVEXTSUPPLY1VALID BIT(4)
115#define AB8500_STW4500CTRL2_RESETNVEXTSUPPLY2VALID BIT(5)
116#define AB8500_STW4500CTRL2_RESETNVEXTSUPPLY3VALID BIT(6)
117#define AB8500_STW4500CTRL2_RESETNVSMPS1VALID BIT(7)
118
119#define AB8500_STW4500CTRL3_CLK32KOUT2DIS BIT(0)
120#define AB8500_STW4500CTRL3_RESETAUDN BIT(1)
121#define AB8500_STW4500CTRL3_RESETDENCN BIT(2)
122#define AB8500_STW4500CTRL3_THSDENA BIT(3)
123
124#define AB8500_MAINWDOGCTRL_MAINWDOGENA BIT(0)
125#define AB8500_MAINWDOGCTRL_MAINWDOGKICK BIT(1)
126#define AB8500_MAINWDOGCTRL_WDEXPTURNONVALID BIT(4)
127
128#define AB8500_MAINWDOGTIMER_MAINWDOGTIMER_MASK 0x7F
129#define AB8500_MAINWDOGTIMER_MAINWDOGTIMER_SHIFT 0
130
131#define AB8500_LOWBAT_LOWBATENA BIT(0)
132#define AB8500_LOWBAT_LOWBAT_MASK 0x7E
133#define AB8500_LOWBAT_LOWBAT_SHIFT 1
134
135#define AB8500_BATTOK_BATTOKSEL0THF_MASK 0x0F
136#define AB8500_BATTOK_BATTOKSEL0THF_SHIFT 0
137#define AB8500_BATTOK_BATTOKSEL1THF_MASK 0xF0
138#define AB8500_BATTOK_BATTOKSEL1THF_SHIFT 4
139
140#define AB8500_SYSCLKTIMER_SYSCLKTIMER_MASK 0x0F
141#define AB8500_SYSCLKTIMER_SYSCLKTIMER_SHIFT 0
142#define AB8500_SYSCLKTIMER_SYSCLKTIMERADJ_MASK 0xF0
143#define AB8500_SYSCLKTIMER_SYSCLKTIMERADJ_SHIFT 4
144
145#define AB8500_SMPSCLKCTRL_SMPSCLKINTSEL_MASK 0x03
146#define AB8500_SMPSCLKCTRL_SMPSCLKINTSEL_SHIFT 0
147#define AB8500_SMPSCLKCTRL_3M2CLKINTENA BIT(2)
148
149#define AB8500_SMPSCLKSEL1_VARMCLKSEL_MASK 0x07
150#define AB8500_SMPSCLKSEL1_VARMCLKSEL_SHIFT 0
151#define AB8500_SMPSCLKSEL1_VAPECLKSEL_MASK 0x38
152#define AB8500_SMPSCLKSEL1_VAPECLKSEL_SHIFT 3
153
154#define AB8500_SMPSCLKSEL2_VMODCLKSEL_MASK 0x07
155#define AB8500_SMPSCLKSEL2_VMODCLKSEL_SHIFT 0
156#define AB8500_SMPSCLKSEL2_VSMPS1CLKSEL_MASK 0x38
157#define AB8500_SMPSCLKSEL2_VSMPS1CLKSEL_SHIFT 3
158
159#define AB8500_SMPSCLKSEL3_VSMPS2CLKSEL_MASK 0x07
160#define AB8500_SMPSCLKSEL3_VSMPS2CLKSEL_SHIFT 0
161#define AB8500_SMPSCLKSEL3_VSMPS3CLKSEL_MASK 0x38
162#define AB8500_SMPSCLKSEL3_VSMPS3CLKSEL_SHIFT 3
163
164#define AB8500_SYSULPCLKCONF_ULPCLKCONF_MASK 0x03
165#define AB8500_SYSULPCLKCONF_ULPCLKCONF_SHIFT 0
166#define AB8500_SYSULPCLKCONF_CLK27MHZSTRE BIT(2)
167#define AB8500_SYSULPCLKCONF_TVOUTCLKDELN BIT(3)
168#define AB8500_SYSULPCLKCONF_TVOUTCLKINV BIT(4)
169#define AB8500_SYSULPCLKCONF_ULPCLKSTRE BIT(5)
170#define AB8500_SYSULPCLKCONF_CLK27MHZBUFENA BIT(6)
171#define AB8500_SYSULPCLKCONF_CLK27MHZPDENA BIT(7)
172
173#define AB8500_SYSULPCLKCTRL1_SYSULPCLKINTSEL_MASK 0x03
174#define AB8500_SYSULPCLKCTRL1_SYSULPCLKINTSEL_SHIFT 0
175#define AB8500_SYSULPCLKCTRL1_ULPCLKREQ BIT(2)
176#define AB8500_SYSULPCLKCTRL1_4500SYSCLKREQ BIT(3)
177#define AB8500_SYSULPCLKCTRL1_AUDIOCLKENA BIT(4)
178#define AB8500_SYSULPCLKCTRL1_SYSCLKBUF2REQ BIT(5)
179#define AB8500_SYSULPCLKCTRL1_SYSCLKBUF3REQ BIT(6)
180#define AB8500_SYSULPCLKCTRL1_SYSCLKBUF4REQ BIT(7)
181
182#define AB8500_SYSCLKCTRL_TVOUTPLLENA BIT(0)
183#define AB8500_SYSCLKCTRL_TVOUTCLKENA BIT(1)
184#define AB8500_SYSCLKCTRL_USBCLKENA BIT(2)
185
186#define AB8500_SYSCLKREQ1VALID_SYSCLKREQ1VALID BIT(0)
187#define AB8500_SYSCLKREQ1VALID_ULPCLKREQ1VALID BIT(1)
188#define AB8500_SYSCLKREQ1VALID_USBSYSCLKREQ1VALID BIT(2)
189
190#define AB8500_SYSTEMCTRLSUP_EXTSUP12LPNCLKSEL_MASK 0x03
191#define AB8500_SYSTEMCTRLSUP_EXTSUP12LPNCLKSEL_SHIFT 0
192#define AB8500_SYSTEMCTRLSUP_EXTSUP3LPNCLKSEL_MASK 0x0C
193#define AB8500_SYSTEMCTRLSUP_EXTSUP3LPNCLKSEL_SHIFT 2
194#define AB8500_SYSTEMCTRLSUP_INTDB8500NOD BIT(4)
195
196#define AB8500_SYSCLKREQ1RFCLKBUF_SYSCLKREQ1RFCLKBUF2 BIT(2)
197#define AB8500_SYSCLKREQ1RFCLKBUF_SYSCLKREQ1RFCLKBUF3 BIT(3)
198#define AB8500_SYSCLKREQ1RFCLKBUF_SYSCLKREQ1RFCLKBUF4 BIT(4)
199
200#define AB8500_SYSCLKREQ2RFCLKBUF_SYSCLKREQ2RFCLKBUF2 BIT(2)
201#define AB8500_SYSCLKREQ2RFCLKBUF_SYSCLKREQ2RFCLKBUF3 BIT(3)
202#define AB8500_SYSCLKREQ2RFCLKBUF_SYSCLKREQ2RFCLKBUF4 BIT(4)
203
204#define AB8500_SYSCLKREQ3RFCLKBUF_SYSCLKREQ3RFCLKBUF2 BIT(2)
205#define AB8500_SYSCLKREQ3RFCLKBUF_SYSCLKREQ3RFCLKBUF3 BIT(3)
206#define AB8500_SYSCLKREQ3RFCLKBUF_SYSCLKREQ3RFCLKBUF4 BIT(4)
207
208#define AB8500_SYSCLKREQ4RFCLKBUF_SYSCLKREQ4RFCLKBUF2 BIT(2)
209#define AB8500_SYSCLKREQ4RFCLKBUF_SYSCLKREQ4RFCLKBUF3 BIT(3)
210#define AB8500_SYSCLKREQ4RFCLKBUF_SYSCLKREQ4RFCLKBUF4 BIT(4)
211
212#define AB8500_SYSCLKREQ5RFCLKBUF_SYSCLKREQ5RFCLKBUF2 BIT(2)
213#define AB8500_SYSCLKREQ5RFCLKBUF_SYSCLKREQ5RFCLKBUF3 BIT(3)
214#define AB8500_SYSCLKREQ5RFCLKBUF_SYSCLKREQ5RFCLKBUF4 BIT(4)
215
216#define AB8500_SYSCLKREQ6RFCLKBUF_SYSCLKREQ6RFCLKBUF2 BIT(2)
217#define AB8500_SYSCLKREQ6RFCLKBUF_SYSCLKREQ6RFCLKBUF3 BIT(3)
218#define AB8500_SYSCLKREQ6RFCLKBUF_SYSCLKREQ6RFCLKBUF4 BIT(4)
219
220#define AB8500_SYSCLKREQ7RFCLKBUF_SYSCLKREQ7RFCLKBUF2 BIT(2)
221#define AB8500_SYSCLKREQ7RFCLKBUF_SYSCLKREQ7RFCLKBUF3 BIT(3)
222#define AB8500_SYSCLKREQ7RFCLKBUF_SYSCLKREQ7RFCLKBUF4 BIT(4)
223
224#define AB8500_SYSCLKREQ8RFCLKBUF_SYSCLKREQ8RFCLKBUF2 BIT(2)
225#define AB8500_SYSCLKREQ8RFCLKBUF_SYSCLKREQ8RFCLKBUF3 BIT(3)
226#define AB8500_SYSCLKREQ8RFCLKBUF_SYSCLKREQ8RFCLKBUF4 BIT(4)
227
228#define AB8500_DITHERCLKCTRL_VARMDITHERENA BIT(0)
229#define AB8500_DITHERCLKCTRL_VSMPS3DITHERENA BIT(1)
230#define AB8500_DITHERCLKCTRL_VSMPS1DITHERENA BIT(2)
231#define AB8500_DITHERCLKCTRL_VSMPS2DITHERENA BIT(3)
232#define AB8500_DITHERCLKCTRL_VMODDITHERENA BIT(4)
233#define AB8500_DITHERCLKCTRL_VAPEDITHERENA BIT(5)
234#define AB8500_DITHERCLKCTRL_DITHERDEL_MASK 0xC0
235#define AB8500_DITHERCLKCTRL_DITHERDEL_SHIFT 6
236
237#define AB8500_SWATCTRL_UPDATERF BIT(0)
238#define AB8500_SWATCTRL_SWATENABLE BIT(1)
239#define AB8500_SWATCTRL_RFOFFTIMER_MASK 0x1C
240#define AB8500_SWATCTRL_RFOFFTIMER_SHIFT 2
241#define AB8500_SWATCTRL_SWATBIT5 BIT(6)
242
243#define AB8500_HIQCLKCTRL_SYSCLKREQ1HIQENAVALID BIT(0)
244#define AB8500_HIQCLKCTRL_SYSCLKREQ2HIQENAVALID BIT(1)
245#define AB8500_HIQCLKCTRL_SYSCLKREQ3HIQENAVALID BIT(2)
246#define AB8500_HIQCLKCTRL_SYSCLKREQ4HIQENAVALID BIT(3)
247#define AB8500_HIQCLKCTRL_SYSCLKREQ5HIQENAVALID BIT(4)
248#define AB8500_HIQCLKCTRL_SYSCLKREQ6HIQENAVALID BIT(5)
249#define AB8500_HIQCLKCTRL_SYSCLKREQ7HIQENAVALID BIT(6)
250#define AB8500_HIQCLKCTRL_SYSCLKREQ8HIQENAVALID BIT(7)
251
252#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ1VALID BIT(0)
253#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ2VALID BIT(1)
254#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ3VALID BIT(2)
255#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ4VALID BIT(3)
256#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ5VALID BIT(4)
257#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ6VALID BIT(5)
258#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ7VALID BIT(6)
259#define AB8500_VSIMSYSCLKCTRL_VSIMSYSCLKREQ8VALID BIT(7)
260
261#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF1ENA BIT(0)
262#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF2ENA BIT(1)
263#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF3ENA BIT(2)
264#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF4ENA BIT(3)
265#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUFENA_MASK 0x0F
266#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF1STRE BIT(4)
267#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF2STRE BIT(5)
268#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF3STRE BIT(6)
269#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUF4STRE BIT(7)
270#define AB9540_SYSCLK12BUFCTRL_SYSCLK12BUFSTRE_MASK 0xF0
271
272#define AB9540_SYSCLK12CONFCTRL_PLL26TO38ENA BIT(0)
273#define AB9540_SYSCLK12CONFCTRL_SYSCLK12USBMUXSEL BIT(1)
274#define AB9540_SYSCLK12CONFCTRL_INT384MHZMUXSEL_MASK 0x0C
275#define AB9540_SYSCLK12CONFCTRL_INT384MHZMUXSEL_SHIFT 2
276#define AB9540_SYSCLK12CONFCTRL_SYSCLK12BUFMUX BIT(4)
277#define AB9540_SYSCLK12CONFCTRL_SYSCLK12PLLMUX BIT(5)
278#define AB9540_SYSCLK12CONFCTRL_SYSCLK2MUXVALID BIT(6)
279
280#define AB9540_SYSCLK12BUFCTRL2_SYSCLK12BUF1PDENA BIT(0)
281#define AB9540_SYSCLK12BUFCTRL2_SYSCLK12BUF2PDENA BIT(1)
282#define AB9540_SYSCLK12BUFCTRL2_SYSCLK12BUF3PDENA BIT(2)
283#define AB9540_SYSCLK12BUFCTRL2_SYSCLK12BUF4PDENA BIT(3)
284
285#define AB9540_SYSCLK12BUF1VALID_SYSCLK12BUF1VALID_MASK 0xFF
286#define AB9540_SYSCLK12BUF1VALID_SYSCLK12BUF1VALID_SHIFT 0
287
288#define AB9540_SYSCLK12BUF2VALID_SYSCLK12BUF2VALID_MASK 0xFF
289#define AB9540_SYSCLK12BUF2VALID_SYSCLK12BUF2VALID_SHIFT 0
290
291#define AB9540_SYSCLK12BUF3VALID_SYSCLK12BUF3VALID_MASK 0xFF
292#define AB9540_SYSCLK12BUF3VALID_SYSCLK12BUF3VALID_SHIFT 0
293
294#define AB9540_SYSCLK12BUF4VALID_SYSCLK12BUF4VALID_MASK 0xFF
295#define AB9540_SYSCLK12BUF4VALID_SYSCLK12BUF4VALID_SHIFT 0
296
297#endif /* __AB8500_SYSCTRL_H */
diff --git a/include/linux/mfd/abx500/ab8500.h b/include/linux/mfd/abx500/ab8500.h
deleted file mode 100644
index 1cb5698b4d7..00000000000
--- a/include/linux/mfd/abx500/ab8500.h
+++ /dev/null
@@ -1,344 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2010
3 *
4 * License Terms: GNU General Public License v2
5 * Author: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
6 */
7#ifndef MFD_AB8500_H
8#define MFD_AB8500_H
9
10#include <linux/atomic.h>
11#include <linux/mutex.h>
12#include <linux/irqdomain.h>
13
14struct device;
15
16/*
17 * AB IC versions
18 *
19 * AB8500_VERSION_AB8500 should be 0xFF but will never be read as need a
20 * non-supported multi-byte I2C access via PRCMU. Set to 0x00 to ease the
21 * print of version string.
22 */
23enum ab8500_version {
24 AB8500_VERSION_AB8500 = 0x0,
25 AB8500_VERSION_AB8505 = 0x1,
26 AB8500_VERSION_AB9540 = 0x2,
27 AB8500_VERSION_AB8540 = 0x3,
28 AB8500_VERSION_UNDEFINED,
29};
30
31/* AB8500 CIDs*/
32#define AB8500_CUTEARLY 0x00
33#define AB8500_CUT1P0 0x10
34#define AB8500_CUT1P1 0x11
35#define AB8500_CUT2P0 0x20
36#define AB8500_CUT3P0 0x30
37#define AB8500_CUT3P3 0x33
38
39/*
40 * AB8500 bank addresses
41 */
42#define AB8500_SYS_CTRL1_BLOCK 0x1
43#define AB8500_SYS_CTRL2_BLOCK 0x2
44#define AB8500_REGU_CTRL1 0x3
45#define AB8500_REGU_CTRL2 0x4
46#define AB8500_USB 0x5
47#define AB8500_TVOUT 0x6
48#define AB8500_DBI 0x7
49#define AB8500_ECI_AV_ACC 0x8
50#define AB8500_RESERVED 0x9
51#define AB8500_GPADC 0xA
52#define AB8500_CHARGER 0xB
53#define AB8500_GAS_GAUGE 0xC
54#define AB8500_AUDIO 0xD
55#define AB8500_INTERRUPT 0xE
56#define AB8500_RTC 0xF
57#define AB8500_MISC 0x10
58#define AB8500_DEVELOPMENT 0x11
59#define AB8500_DEBUG 0x12
60#define AB8500_PROD_TEST 0x13
61#define AB8500_OTP_EMUL 0x15
62
63/*
64 * Interrupts
65 * Values used to index into array ab8500_irq_regoffset[] defined in
66 * drivers/mdf/ab8500-core.c
67 */
68/* Definitions for AB8500 and AB9540 */
69/* ab8500_irq_regoffset[0] -> IT[Source|Latch|Mask]1 */
70#define AB8500_INT_MAIN_EXT_CH_NOT_OK 0 /* not 8505/9540 */
71#define AB8500_INT_UN_PLUG_TV_DET 1 /* not 8505/9540 */
72#define AB8500_INT_PLUG_TV_DET 2 /* not 8505/9540 */
73#define AB8500_INT_TEMP_WARM 3
74#define AB8500_INT_PON_KEY2DB_F 4
75#define AB8500_INT_PON_KEY2DB_R 5
76#define AB8500_INT_PON_KEY1DB_F 6
77#define AB8500_INT_PON_KEY1DB_R 7
78/* ab8500_irq_regoffset[1] -> IT[Source|Latch|Mask]2 */
79#define AB8500_INT_BATT_OVV 8
80#define AB8500_INT_MAIN_CH_UNPLUG_DET 10 /* not 8505 */
81#define AB8500_INT_MAIN_CH_PLUG_DET 11 /* not 8505 */
82#define AB8500_INT_VBUS_DET_F 14
83#define AB8500_INT_VBUS_DET_R 15
84/* ab8500_irq_regoffset[2] -> IT[Source|Latch|Mask]3 */
85#define AB8500_INT_VBUS_CH_DROP_END 16
86#define AB8500_INT_RTC_60S 17
87#define AB8500_INT_RTC_ALARM 18
88#define AB8500_INT_BAT_CTRL_INDB 20
89#define AB8500_INT_CH_WD_EXP 21
90#define AB8500_INT_VBUS_OVV 22
91#define AB8500_INT_MAIN_CH_DROP_END 23 /* not 8505/9540 */
92/* ab8500_irq_regoffset[3] -> IT[Source|Latch|Mask]4 */
93#define AB8500_INT_CCN_CONV_ACC 24
94#define AB8500_INT_INT_AUD 25
95#define AB8500_INT_CCEOC 26
96#define AB8500_INT_CC_INT_CALIB 27
97#define AB8500_INT_LOW_BAT_F 28
98#define AB8500_INT_LOW_BAT_R 29
99#define AB8500_INT_BUP_CHG_NOT_OK 30
100#define AB8500_INT_BUP_CHG_OK 31
101/* ab8500_irq_regoffset[4] -> IT[Source|Latch|Mask]5 */
102#define AB8500_INT_GP_HW_ADC_CONV_END 32 /* not 8505 */
103#define AB8500_INT_ACC_DETECT_1DB_F 33
104#define AB8500_INT_ACC_DETECT_1DB_R 34
105#define AB8500_INT_ACC_DETECT_22DB_F 35
106#define AB8500_INT_ACC_DETECT_22DB_R 36
107#define AB8500_INT_ACC_DETECT_21DB_F 37
108#define AB8500_INT_ACC_DETECT_21DB_R 38
109#define AB8500_INT_GP_SW_ADC_CONV_END 39
110/* ab8500_irq_regoffset[5] -> IT[Source|Latch|Mask]7 */
111#define AB8500_INT_GPIO6R 40 /* not 8505/9540 */
112#define AB8500_INT_GPIO7R 41 /* not 8505/9540 */
113#define AB8500_INT_GPIO8R 42 /* not 8505/9540 */
114#define AB8500_INT_GPIO9R 43 /* not 8505/9540 */
115#define AB8500_INT_GPIO10R 44
116#define AB8500_INT_GPIO11R 45
117#define AB8500_INT_GPIO12R 46 /* not 8505 */
118#define AB8500_INT_GPIO13R 47
119/* ab8500_irq_regoffset[6] -> IT[Source|Latch|Mask]8 */
120#define AB8500_INT_GPIO24R 48 /* not 8505 */
121#define AB8500_INT_GPIO25R 49 /* not 8505 */
122#define AB8500_INT_GPIO36R 50 /* not 8505/9540 */
123#define AB8500_INT_GPIO37R 51 /* not 8505/9540 */
124#define AB8500_INT_GPIO38R 52 /* not 8505/9540 */
125#define AB8500_INT_GPIO39R 53 /* not 8505/9540 */
126#define AB8500_INT_GPIO40R 54
127#define AB8500_INT_GPIO41R 55
128/* ab8500_irq_regoffset[7] -> IT[Source|Latch|Mask]9 */
129#define AB8500_INT_GPIO6F 56 /* not 8505/9540 */
130#define AB8500_INT_GPIO7F 57 /* not 8505/9540 */
131#define AB8500_INT_GPIO8F 58 /* not 8505/9540 */
132#define AB8500_INT_GPIO9F 59 /* not 8505/9540 */
133#define AB8500_INT_GPIO10F 60
134#define AB8500_INT_GPIO11F 61
135#define AB8500_INT_GPIO12F 62 /* not 8505 */
136#define AB8500_INT_GPIO13F 63
137/* ab8500_irq_regoffset[8] -> IT[Source|Latch|Mask]10 */
138#define AB8500_INT_GPIO24F 64 /* not 8505 */
139#define AB8500_INT_GPIO25F 65 /* not 8505 */
140#define AB8500_INT_GPIO36F 66 /* not 8505/9540 */
141#define AB8500_INT_GPIO37F 67 /* not 8505/9540 */
142#define AB8500_INT_GPIO38F 68 /* not 8505/9540 */
143#define AB8500_INT_GPIO39F 69 /* not 8505/9540 */
144#define AB8500_INT_GPIO40F 70
145#define AB8500_INT_GPIO41F 71
146/* ab8500_irq_regoffset[9] -> IT[Source|Latch|Mask]12 */
147#define AB8500_INT_ADP_SOURCE_ERROR 72
148#define AB8500_INT_ADP_SINK_ERROR 73
149#define AB8500_INT_ADP_PROBE_PLUG 74
150#define AB8500_INT_ADP_PROBE_UNPLUG 75
151#define AB8500_INT_ADP_SENSE_OFF 76
152#define AB8500_INT_USB_PHY_POWER_ERR 78
153#define AB8500_INT_USB_LINK_STATUS 79
154/* ab8500_irq_regoffset[10] -> IT[Source|Latch|Mask]19 */
155#define AB8500_INT_BTEMP_LOW 80
156#define AB8500_INT_BTEMP_LOW_MEDIUM 81
157#define AB8500_INT_BTEMP_MEDIUM_HIGH 82
158#define AB8500_INT_BTEMP_HIGH 83
159/* ab8500_irq_regoffset[11] -> IT[Source|Latch|Mask]20 */
160#define AB8500_INT_SRP_DETECT 88
161#define AB8500_INT_USB_CHARGER_NOT_OKR 89
162#define AB8500_INT_ID_WAKEUP_R 90
163#define AB8500_INT_ID_DET_R1R 92
164#define AB8500_INT_ID_DET_R2R 93
165#define AB8500_INT_ID_DET_R3R 94
166#define AB8500_INT_ID_DET_R4R 95
167/* ab8500_irq_regoffset[12] -> IT[Source|Latch|Mask]21 */
168#define AB8500_INT_ID_WAKEUP_F 96
169#define AB8500_INT_ID_DET_R1F 98
170#define AB8500_INT_ID_DET_R2F 99
171#define AB8500_INT_ID_DET_R3F 100
172#define AB8500_INT_ID_DET_R4F 101
173#define AB8500_INT_CHAUTORESTARTAFTSEC 102
174#define AB8500_INT_CHSTOPBYSEC 103
175/* ab8500_irq_regoffset[13] -> IT[Source|Latch|Mask]22 */
176#define AB8500_INT_USB_CH_TH_PROT_F 104
177#define AB8500_INT_USB_CH_TH_PROT_R 105
178#define AB8500_INT_MAIN_CH_TH_PROT_F 106 /* not 8505/9540 */
179#define AB8500_INT_MAIN_CH_TH_PROT_R 107 /* not 8505/9540 */
180#define AB8500_INT_CHCURLIMNOHSCHIRP 109
181#define AB8500_INT_CHCURLIMHSCHIRP 110
182#define AB8500_INT_XTAL32K_KO 111
183
184/* Definitions for AB9540 */
185/* ab8500_irq_regoffset[14] -> IT[Source|Latch|Mask]13 */
186#define AB9540_INT_GPIO50R 113
187#define AB9540_INT_GPIO51R 114 /* not 8505 */
188#define AB9540_INT_GPIO52R 115
189#define AB9540_INT_GPIO53R 116
190#define AB9540_INT_GPIO54R 117 /* not 8505 */
191#define AB9540_INT_IEXT_CH_RF_BFN_R 118
192#define AB9540_INT_IEXT_CH_RF_BFN_F 119
193/* ab8500_irq_regoffset[15] -> IT[Source|Latch|Mask]14 */
194#define AB9540_INT_GPIO50F 121
195#define AB9540_INT_GPIO51F 122 /* not 8505 */
196#define AB9540_INT_GPIO52F 123
197#define AB9540_INT_GPIO53F 124
198#define AB9540_INT_GPIO54F 125 /* not 8505 */
199/* ab8500_irq_regoffset[16] -> IT[Source|Latch|Mask]25 */
200#define AB8505_INT_KEYSTUCK 128
201#define AB8505_INT_IKR 129
202#define AB8505_INT_IKP 130
203#define AB8505_INT_KP 131
204#define AB8505_INT_KEYDEGLITCH 132
205#define AB8505_INT_MODPWRSTATUSF 134
206#define AB8505_INT_MODPWRSTATUSR 135
207
208/*
209 * AB8500_AB9540_NR_IRQS is used when configuring the IRQ numbers for the
210 * entire platform. This is a "compile time" constant so this must be set to
211 * the largest possible value that may be encountered with different AB SOCs.
212 * Of the currently supported AB devices, AB8500 and AB9540, it is the AB9540
213 * which is larger.
214 */
215#define AB8500_NR_IRQS 112
216#define AB8505_NR_IRQS 136
217#define AB9540_NR_IRQS 136
218/* This is set to the roof of any AB8500 chip variant IRQ counts */
219#define AB8500_MAX_NR_IRQS AB9540_NR_IRQS
220
221#define AB8500_NUM_IRQ_REGS 14
222#define AB9540_NUM_IRQ_REGS 17
223
224/**
225 * struct ab8500 - ab8500 internal structure
226 * @dev: parent device
227 * @lock: read/write operations lock
228 * @irq_lock: genirq bus lock
229 * @transfer_ongoing: 0 if no transfer ongoing
230 * @irq: irq line
231 * @irq_domain: irq domain
232 * @version: chip version id (e.g. ab8500 or ab9540)
233 * @chip_id: chip revision id
234 * @write: register write
235 * @write_masked: masked register write
236 * @read: register read
237 * @rx_buf: rx buf for SPI
238 * @tx_buf: tx buf for SPI
239 * @mask: cache of IRQ regs for bus lock
240 * @oldmask: cache of previous IRQ regs for bus lock
241 * @mask_size: Actual number of valid entries in mask[], oldmask[] and
242 * irq_reg_offset
243 * @irq_reg_offset: Array of offsets into IRQ registers
244 */
245struct ab8500 {
246 struct device *dev;
247 struct mutex lock;
248 struct mutex irq_lock;
249 atomic_t transfer_ongoing;
250 int irq_base;
251 int irq;
252 struct irq_domain *domain;
253 enum ab8500_version version;
254 u8 chip_id;
255
256 int (*write)(struct ab8500 *ab8500, u16 addr, u8 data);
257 int (*write_masked)(struct ab8500 *ab8500, u16 addr, u8 mask, u8 data);
258 int (*read)(struct ab8500 *ab8500, u16 addr);
259
260 unsigned long tx_buf[4];
261 unsigned long rx_buf[4];
262
263 u8 *mask;
264 u8 *oldmask;
265 int mask_size;
266 const int *irq_reg_offset;
267};
268
269struct regulator_reg_init;
270struct regulator_init_data;
271struct ab8500_gpio_platform_data;
272struct ab8500_codec_platform_data;
273
274/**
275 * struct ab8500_platform_data - AB8500 platform data
276 * @irq_base: start of AB8500 IRQs, AB8500_NR_IRQS will be used
277 * @init: board-specific initialization after detection of ab8500
278 * @num_regulator_reg_init: number of regulator init registers
279 * @regulator_reg_init: regulator init registers
280 * @num_regulator: number of regulators
281 * @regulator: machine-specific constraints for regulators
282 */
283struct ab8500_platform_data {
284 int irq_base;
285 void (*init) (struct ab8500 *);
286 int num_regulator_reg_init;
287 struct ab8500_regulator_reg_init *regulator_reg_init;
288 int num_regulator;
289 struct regulator_init_data *regulator;
290 struct ab8500_gpio_platform_data *gpio;
291 struct ab8500_codec_platform_data *codec;
292};
293
294extern int ab8500_init(struct ab8500 *ab8500,
295 enum ab8500_version version);
296extern int ab8500_exit(struct ab8500 *ab8500);
297
298extern int ab8500_suspend(struct ab8500 *ab8500);
299
300static inline int is_ab8500(struct ab8500 *ab)
301{
302 return ab->version == AB8500_VERSION_AB8500;
303}
304
305static inline int is_ab8505(struct ab8500 *ab)
306{
307 return ab->version == AB8500_VERSION_AB8505;
308}
309
310static inline int is_ab9540(struct ab8500 *ab)
311{
312 return ab->version == AB8500_VERSION_AB9540;
313}
314
315static inline int is_ab8540(struct ab8500 *ab)
316{
317 return ab->version == AB8500_VERSION_AB8540;
318}
319
320/* exclude also ab8505, ab9540... */
321static inline int is_ab8500_1p0_or_earlier(struct ab8500 *ab)
322{
323 return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT1P0));
324}
325
326/* exclude also ab8505, ab9540... */
327static inline int is_ab8500_1p1_or_earlier(struct ab8500 *ab)
328{
329 return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT1P1));
330}
331
332/* exclude also ab8505, ab9540... */
333static inline int is_ab8500_2p0_or_earlier(struct ab8500 *ab)
334{
335 return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT2P0));
336}
337
338/* exclude also ab8505, ab9540... */
339static inline int is_ab8500_2p0(struct ab8500 *ab)
340{
341 return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0));
342}
343
344#endif /* MFD_AB8500_H */
diff --git a/include/linux/mfd/abx500/ux500_chargalg.h b/include/linux/mfd/abx500/ux500_chargalg.h
deleted file mode 100644
index 9b07725750c..00000000000
--- a/include/linux/mfd/abx500/ux500_chargalg.h
+++ /dev/null
@@ -1,38 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2012
3 * Author: Johan Gardsmark <johan.gardsmark@stericsson.com> for ST-Ericsson.
4 * License terms: GNU General Public License (GPL), version 2
5 */
6
7#ifndef _UX500_CHARGALG_H
8#define _UX500_CHARGALG_H
9
10#include <linux/power_supply.h>
11
12#define psy_to_ux500_charger(x) container_of((x), \
13 struct ux500_charger, psy)
14
15/* Forward declaration */
16struct ux500_charger;
17
18struct ux500_charger_ops {
19 int (*enable) (struct ux500_charger *, int, int, int);
20 int (*kick_wd) (struct ux500_charger *);
21 int (*update_curr) (struct ux500_charger *, int);
22};
23
24/**
25 * struct ux500_charger - power supply ux500 charger sub class
26 * @psy power supply base class
27 * @ops ux500 charger operations
28 * @max_out_volt maximum output charger voltage in mV
29 * @max_out_curr maximum output charger current in mA
30 */
31struct ux500_charger {
32 struct power_supply psy;
33 struct ux500_charger_ops ops;
34 int max_out_volt;
35 int max_out_curr;
36};
37
38#endif
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
deleted file mode 100644
index a580363a7d2..00000000000
--- a/include/linux/mfd/arizona/core.h
+++ /dev/null
@@ -1,118 +0,0 @@
1/*
2 * Arizona MFD internals
3 *
4 * Copyright 2012 Wolfson Microelectronics plc
5 *
6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#ifndef _WM_ARIZONA_CORE_H
14#define _WM_ARIZONA_CORE_H
15
16#include <linux/interrupt.h>
17#include <linux/regmap.h>
18#include <linux/regulator/consumer.h>
19#include <linux/mfd/arizona/pdata.h>
20
21#define ARIZONA_MAX_CORE_SUPPLIES 3
22
23enum arizona_type {
24 WM5102 = 1,
25 WM5110 = 2,
26};
27
28#define ARIZONA_IRQ_GP1 0
29#define ARIZONA_IRQ_GP2 1
30#define ARIZONA_IRQ_GP3 2
31#define ARIZONA_IRQ_GP4 3
32#define ARIZONA_IRQ_GP5_FALL 4
33#define ARIZONA_IRQ_GP5_RISE 5
34#define ARIZONA_IRQ_JD_FALL 6
35#define ARIZONA_IRQ_JD_RISE 7
36#define ARIZONA_IRQ_DSP1_RAM_RDY 8
37#define ARIZONA_IRQ_DSP2_RAM_RDY 9
38#define ARIZONA_IRQ_DSP3_RAM_RDY 10
39#define ARIZONA_IRQ_DSP4_RAM_RDY 11
40#define ARIZONA_IRQ_DSP_IRQ1 12
41#define ARIZONA_IRQ_DSP_IRQ2 13
42#define ARIZONA_IRQ_DSP_IRQ3 14
43#define ARIZONA_IRQ_DSP_IRQ4 15
44#define ARIZONA_IRQ_DSP_IRQ5 16
45#define ARIZONA_IRQ_DSP_IRQ6 17
46#define ARIZONA_IRQ_DSP_IRQ7 18
47#define ARIZONA_IRQ_DSP_IRQ8 19
48#define ARIZONA_IRQ_SPK_SHUTDOWN_WARN 20
49#define ARIZONA_IRQ_SPK_SHUTDOWN 21
50#define ARIZONA_IRQ_MICDET 22
51#define ARIZONA_IRQ_HPDET 23
52#define ARIZONA_IRQ_WSEQ_DONE 24
53#define ARIZONA_IRQ_DRC2_SIG_DET 25
54#define ARIZONA_IRQ_DRC1_SIG_DET 26
55#define ARIZONA_IRQ_ASRC2_LOCK 27
56#define ARIZONA_IRQ_ASRC1_LOCK 28
57#define ARIZONA_IRQ_UNDERCLOCKED 29
58#define ARIZONA_IRQ_OVERCLOCKED 30
59#define ARIZONA_IRQ_FLL2_LOCK 31
60#define ARIZONA_IRQ_FLL1_LOCK 32
61#define ARIZONA_IRQ_CLKGEN_ERR 33
62#define ARIZONA_IRQ_CLKGEN_ERR_ASYNC 34
63#define ARIZONA_IRQ_ASRC_CFG_ERR 35
64#define ARIZONA_IRQ_AIF3_ERR 36
65#define ARIZONA_IRQ_AIF2_ERR 37
66#define ARIZONA_IRQ_AIF1_ERR 38
67#define ARIZONA_IRQ_CTRLIF_ERR 39
68#define ARIZONA_IRQ_MIXER_DROPPED_SAMPLES 40
69#define ARIZONA_IRQ_ASYNC_CLK_ENA_LOW 41
70#define ARIZONA_IRQ_SYSCLK_ENA_LOW 42
71#define ARIZONA_IRQ_ISRC1_CFG_ERR 43
72#define ARIZONA_IRQ_ISRC2_CFG_ERR 44
73#define ARIZONA_IRQ_BOOT_DONE 45
74#define ARIZONA_IRQ_DCS_DAC_DONE 46
75#define ARIZONA_IRQ_DCS_HP_DONE 47
76#define ARIZONA_IRQ_FLL2_CLOCK_OK 48
77#define ARIZONA_IRQ_FLL1_CLOCK_OK 49
78
79#define ARIZONA_NUM_IRQ 50
80
81struct snd_soc_dapm_context;
82
83struct arizona {
84 struct regmap *regmap;
85 struct device *dev;
86
87 enum arizona_type type;
88 unsigned int rev;
89
90 int num_core_supplies;
91 struct regulator_bulk_data core_supplies[ARIZONA_MAX_CORE_SUPPLIES];
92 struct regulator *dcvdd;
93
94 struct arizona_pdata pdata;
95
96 int irq;
97 struct irq_domain *virq;
98 struct regmap_irq_chip_data *aod_irq_chip;
99 struct regmap_irq_chip_data *irq_chip;
100
101 struct mutex clk_lock;
102 int clk32k_ref;
103
104 struct snd_soc_dapm_context *dapm;
105};
106
107int arizona_clk32k_enable(struct arizona *arizona);
108int arizona_clk32k_disable(struct arizona *arizona);
109
110int arizona_request_irq(struct arizona *arizona, int irq, char *name,
111 irq_handler_t handler, void *data);
112void arizona_free_irq(struct arizona *arizona, int irq, void *data);
113int arizona_set_irq_wake(struct arizona *arizona, int irq, int on);
114
115int wm5102_patch(struct arizona *arizona);
116int wm5110_patch(struct arizona *arizona);
117
118#endif
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h
deleted file mode 100644
index 8b1d1daaae1..00000000000
--- a/include/linux/mfd/arizona/pdata.h
+++ /dev/null
@@ -1,125 +0,0 @@
1/*
2 * Platform data for Arizona devices
3 *
4 * Copyright 2012 Wolfson Microelectronics. PLC.
5 *
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.
9 */
10
11#ifndef _ARIZONA_PDATA_H
12#define _ARIZONA_PDATA_H
13
14#define ARIZONA_GPN_DIR 0x8000 /* GPN_DIR */
15#define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */
16#define ARIZONA_GPN_DIR_SHIFT 15 /* GPN_DIR */
17#define ARIZONA_GPN_DIR_WIDTH 1 /* GPN_DIR */
18#define ARIZONA_GPN_PU 0x4000 /* GPN_PU */
19#define ARIZONA_GPN_PU_MASK 0x4000 /* GPN_PU */
20#define ARIZONA_GPN_PU_SHIFT 14 /* GPN_PU */
21#define ARIZONA_GPN_PU_WIDTH 1 /* GPN_PU */
22#define ARIZONA_GPN_PD 0x2000 /* GPN_PD */
23#define ARIZONA_GPN_PD_MASK 0x2000 /* GPN_PD */
24#define ARIZONA_GPN_PD_SHIFT 13 /* GPN_PD */
25#define ARIZONA_GPN_PD_WIDTH 1 /* GPN_PD */
26#define ARIZONA_GPN_LVL 0x0800 /* GPN_LVL */
27#define ARIZONA_GPN_LVL_MASK 0x0800 /* GPN_LVL */
28#define ARIZONA_GPN_LVL_SHIFT 11 /* GPN_LVL */
29#define ARIZONA_GPN_LVL_WIDTH 1 /* GPN_LVL */
30#define ARIZONA_GPN_POL 0x0400 /* GPN_POL */
31#define ARIZONA_GPN_POL_MASK 0x0400 /* GPN_POL */
32#define ARIZONA_GPN_POL_SHIFT 10 /* GPN_POL */
33#define ARIZONA_GPN_POL_WIDTH 1 /* GPN_POL */
34#define ARIZONA_GPN_OP_CFG 0x0200 /* GPN_OP_CFG */
35#define ARIZONA_GPN_OP_CFG_MASK 0x0200 /* GPN_OP_CFG */
36#define ARIZONA_GPN_OP_CFG_SHIFT 9 /* GPN_OP_CFG */
37#define ARIZONA_GPN_OP_CFG_WIDTH 1 /* GPN_OP_CFG */
38#define ARIZONA_GPN_DB 0x0100 /* GPN_DB */
39#define ARIZONA_GPN_DB_MASK 0x0100 /* GPN_DB */
40#define ARIZONA_GPN_DB_SHIFT 8 /* GPN_DB */
41#define ARIZONA_GPN_DB_WIDTH 1 /* GPN_DB */
42#define ARIZONA_GPN_FN_MASK 0x007F /* GPN_FN - [6:0] */
43#define ARIZONA_GPN_FN_SHIFT 0 /* GPN_FN - [6:0] */
44#define ARIZONA_GPN_FN_WIDTH 7 /* GPN_FN - [6:0] */
45
46#define ARIZONA_MAX_GPIO 5
47
48#define ARIZONA_32KZ_MCLK1 1
49#define ARIZONA_32KZ_MCLK2 2
50#define ARIZONA_32KZ_NONE 3
51
52#define ARIZONA_MAX_INPUT 4
53
54#define ARIZONA_DMIC_MICVDD 0
55#define ARIZONA_DMIC_MICBIAS1 1
56#define ARIZONA_DMIC_MICBIAS2 2
57#define ARIZONA_DMIC_MICBIAS3 3
58
59#define ARIZONA_INMODE_DIFF 0
60#define ARIZONA_INMODE_SE 1
61#define ARIZONA_INMODE_DMIC 2
62
63#define ARIZONA_MAX_OUTPUT 6
64
65#define ARIZONA_HAP_ACT_ERM 0
66#define ARIZONA_HAP_ACT_LRA 2
67
68#define ARIZONA_MAX_PDM_SPK 2
69
70struct regulator_init_data;
71
72struct arizona_micd_config {
73 unsigned int src;
74 unsigned int bias;
75 bool gpio;
76};
77
78struct arizona_pdata {
79 int reset; /** GPIO controlling /RESET, if any */
80 int ldoena; /** GPIO controlling LODENA, if any */
81
82 /** Regulator configuration for MICVDD */
83 struct regulator_init_data *micvdd;
84
85 /** Regulator configuration for LDO1 */
86 struct regulator_init_data *ldo1;
87
88 /** If a direct 32kHz clock is provided on an MCLK specify it here */
89 int clk32k_src;
90
91 bool irq_active_high; /** IRQ polarity */
92
93 /* Base GPIO */
94 int gpio_base;
95
96 /** Pin state for GPIO pins */
97 int gpio_defaults[ARIZONA_MAX_GPIO];
98
99 /** GPIO for mic detection polarity */
100 int micd_pol_gpio;
101
102 /** Headset polarity configurations */
103 struct arizona_micd_config *micd_configs;
104 int num_micd_configs;
105
106 /** Reference voltage for DMIC inputs */
107 int dmic_ref[ARIZONA_MAX_INPUT];
108
109 /** Mode of input structures */
110 int inmode[ARIZONA_MAX_INPUT];
111
112 /** Mode for outputs */
113 bool out_mono[ARIZONA_MAX_OUTPUT];
114
115 /** PDM speaker mute setting */
116 unsigned int spk_mute[ARIZONA_MAX_PDM_SPK];
117
118 /** PDM speaker format */
119 unsigned int spk_fmt[ARIZONA_MAX_PDM_SPK];
120
121 /** Haptic actuator type */
122 unsigned int hap_act;
123};
124
125#endif
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h
deleted file mode 100644
index 1f6fe31a4d5..00000000000
--- a/include/linux/mfd/arizona/registers.h
+++ /dev/null
@@ -1,6611 +0,0 @@
1/*
2 * ARIZONA register definitions
3 *
4 * Copyright 2012 Wolfson Microelectronics plc
5 *
6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#ifndef _ARIZONA_REGISTERS_H
14#define _ARIZONA_REGISTERS_H
15
16/*
17 * Register values.
18 */
19#define ARIZONA_SOFTWARE_RESET 0x00
20#define ARIZONA_DEVICE_REVISION 0x01
21#define ARIZONA_CTRL_IF_SPI_CFG_1 0x08
22#define ARIZONA_CTRL_IF_I2C1_CFG_1 0x09
23#define ARIZONA_CTRL_IF_I2C2_CFG_1 0x0A
24#define ARIZONA_CTRL_IF_I2C1_CFG_2 0x0B
25#define ARIZONA_CTRL_IF_I2C2_CFG_2 0x0C
26#define ARIZONA_CTRL_IF_STATUS_1 0x0D
27#define ARIZONA_WRITE_SEQUENCER_CTRL_0 0x16
28#define ARIZONA_WRITE_SEQUENCER_CTRL_1 0x17
29#define ARIZONA_WRITE_SEQUENCER_CTRL_2 0x18
30#define ARIZONA_WRITE_SEQUENCER_PROM 0x1A
31#define ARIZONA_TONE_GENERATOR_1 0x20
32#define ARIZONA_TONE_GENERATOR_2 0x21
33#define ARIZONA_TONE_GENERATOR_3 0x22
34#define ARIZONA_TONE_GENERATOR_4 0x23
35#define ARIZONA_TONE_GENERATOR_5 0x24
36#define ARIZONA_PWM_DRIVE_1 0x30
37#define ARIZONA_PWM_DRIVE_2 0x31
38#define ARIZONA_PWM_DRIVE_3 0x32
39#define ARIZONA_WAKE_CONTROL 0x40
40#define ARIZONA_SEQUENCE_CONTROL 0x41
41#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1 0x61
42#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2 0x62
43#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3 0x63
44#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4 0x64
45#define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1 0x68
46#define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2 0x69
47#define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3 0x6A
48#define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4 0x6B
49#define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5 0x6C
50#define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6 0x6D
51#define ARIZONA_COMFORT_NOISE_GENERATOR 0x70
52#define ARIZONA_HAPTICS_CONTROL_1 0x90
53#define ARIZONA_HAPTICS_CONTROL_2 0x91
54#define ARIZONA_HAPTICS_PHASE_1_INTENSITY 0x92
55#define ARIZONA_HAPTICS_PHASE_1_DURATION 0x93
56#define ARIZONA_HAPTICS_PHASE_2_INTENSITY 0x94
57#define ARIZONA_HAPTICS_PHASE_2_DURATION 0x95
58#define ARIZONA_HAPTICS_PHASE_3_INTENSITY 0x96
59#define ARIZONA_HAPTICS_PHASE_3_DURATION 0x97
60#define ARIZONA_HAPTICS_STATUS 0x98
61#define ARIZONA_CLOCK_32K_1 0x100
62#define ARIZONA_SYSTEM_CLOCK_1 0x101
63#define ARIZONA_SAMPLE_RATE_1 0x102
64#define ARIZONA_SAMPLE_RATE_2 0x103
65#define ARIZONA_SAMPLE_RATE_3 0x104
66#define ARIZONA_SAMPLE_RATE_1_STATUS 0x10A
67#define ARIZONA_SAMPLE_RATE_2_STATUS 0x10B
68#define ARIZONA_SAMPLE_RATE_3_STATUS 0x10C
69#define ARIZONA_ASYNC_CLOCK_1 0x112
70#define ARIZONA_ASYNC_SAMPLE_RATE_1 0x113
71#define ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS 0x11B
72#define ARIZONA_OUTPUT_SYSTEM_CLOCK 0x149
73#define ARIZONA_OUTPUT_ASYNC_CLOCK 0x14A
74#define ARIZONA_RATE_ESTIMATOR_1 0x152
75#define ARIZONA_RATE_ESTIMATOR_2 0x153
76#define ARIZONA_RATE_ESTIMATOR_3 0x154
77#define ARIZONA_RATE_ESTIMATOR_4 0x155
78#define ARIZONA_RATE_ESTIMATOR_5 0x156
79#define ARIZONA_DYNAMIC_FREQUENCY_SCALING_1 0x161
80#define ARIZONA_FLL1_CONTROL_1 0x171
81#define ARIZONA_FLL1_CONTROL_2 0x172
82#define ARIZONA_FLL1_CONTROL_3 0x173
83#define ARIZONA_FLL1_CONTROL_4 0x174
84#define ARIZONA_FLL1_CONTROL_5 0x175
85#define ARIZONA_FLL1_CONTROL_6 0x176
86#define ARIZONA_FLL1_LOOP_FILTER_TEST_1 0x177
87#define ARIZONA_FLL1_NCO_TEST_0 0x178
88#define ARIZONA_FLL1_SYNCHRONISER_1 0x181
89#define ARIZONA_FLL1_SYNCHRONISER_2 0x182
90#define ARIZONA_FLL1_SYNCHRONISER_3 0x183
91#define ARIZONA_FLL1_SYNCHRONISER_4 0x184
92#define ARIZONA_FLL1_SYNCHRONISER_5 0x185
93#define ARIZONA_FLL1_SYNCHRONISER_6 0x186
94#define ARIZONA_FLL1_SPREAD_SPECTRUM 0x189
95#define ARIZONA_FLL1_GPIO_CLOCK 0x18A
96#define ARIZONA_FLL2_CONTROL_1 0x191
97#define ARIZONA_FLL2_CONTROL_2 0x192
98#define ARIZONA_FLL2_CONTROL_3 0x193
99#define ARIZONA_FLL2_CONTROL_4 0x194
100#define ARIZONA_FLL2_CONTROL_5 0x195
101#define ARIZONA_FLL2_CONTROL_6 0x196
102#define ARIZONA_FLL2_LOOP_FILTER_TEST_1 0x197
103#define ARIZONA_FLL2_NCO_TEST_0 0x198
104#define ARIZONA_FLL2_SYNCHRONISER_1 0x1A1
105#define ARIZONA_FLL2_SYNCHRONISER_2 0x1A2
106#define ARIZONA_FLL2_SYNCHRONISER_3 0x1A3
107#define ARIZONA_FLL2_SYNCHRONISER_4 0x1A4
108#define ARIZONA_FLL2_SYNCHRONISER_5 0x1A5
109#define ARIZONA_FLL2_SYNCHRONISER_6 0x1A6
110#define ARIZONA_FLL2_SPREAD_SPECTRUM 0x1A9
111#define ARIZONA_FLL2_GPIO_CLOCK 0x1AA
112#define ARIZONA_MIC_CHARGE_PUMP_1 0x200
113#define ARIZONA_LDO1_CONTROL_1 0x210
114#define ARIZONA_LDO1_CONTROL_2 0x212
115#define ARIZONA_LDO2_CONTROL_1 0x213
116#define ARIZONA_MIC_BIAS_CTRL_1 0x218
117#define ARIZONA_MIC_BIAS_CTRL_2 0x219
118#define ARIZONA_MIC_BIAS_CTRL_3 0x21A
119#define ARIZONA_ACCESSORY_DETECT_MODE_1 0x293
120#define ARIZONA_HEADPHONE_DETECT_1 0x29B
121#define ARIZONA_HEADPHONE_DETECT_2 0x29C
122#define ARIZONA_MIC_DETECT_1 0x2A3
123#define ARIZONA_MIC_DETECT_2 0x2A4
124#define ARIZONA_MIC_DETECT_3 0x2A5
125#define ARIZONA_MIC_NOISE_MIX_CONTROL_1 0x2C3
126#define ARIZONA_ISOLATION_CONTROL 0x2CB
127#define ARIZONA_JACK_DETECT_ANALOGUE 0x2D3
128#define ARIZONA_INPUT_ENABLES 0x300
129#define ARIZONA_INPUT_ENABLES_STATUS 0x301
130#define ARIZONA_INPUT_RATE 0x308
131#define ARIZONA_INPUT_VOLUME_RAMP 0x309
132#define ARIZONA_IN1L_CONTROL 0x310
133#define ARIZONA_ADC_DIGITAL_VOLUME_1L 0x311
134#define ARIZONA_DMIC1L_CONTROL 0x312
135#define ARIZONA_IN1R_CONTROL 0x314
136#define ARIZONA_ADC_DIGITAL_VOLUME_1R 0x315
137#define ARIZONA_DMIC1R_CONTROL 0x316
138#define ARIZONA_IN2L_CONTROL 0x318
139#define ARIZONA_ADC_DIGITAL_VOLUME_2L 0x319
140#define ARIZONA_DMIC2L_CONTROL 0x31A
141#define ARIZONA_IN2R_CONTROL 0x31C
142#define ARIZONA_ADC_DIGITAL_VOLUME_2R 0x31D
143#define ARIZONA_DMIC2R_CONTROL 0x31E
144#define ARIZONA_IN3L_CONTROL 0x320
145#define ARIZONA_ADC_DIGITAL_VOLUME_3L 0x321
146#define ARIZONA_DMIC3L_CONTROL 0x322
147#define ARIZONA_IN3R_CONTROL 0x324
148#define ARIZONA_ADC_DIGITAL_VOLUME_3R 0x325
149#define ARIZONA_DMIC3R_CONTROL 0x326
150#define ARIZONA_IN4L_CONTROL 0x328
151#define ARIZONA_ADC_DIGITAL_VOLUME_4L 0x329
152#define ARIZONA_DMIC4L_CONTROL 0x32A
153#define ARIZONA_ADC_DIGITAL_VOLUME_4R 0x32D
154#define ARIZONA_DMIC4R_CONTROL 0x32E
155#define ARIZONA_OUTPUT_ENABLES_1 0x400
156#define ARIZONA_OUTPUT_STATUS_1 0x401
157#define ARIZONA_RAW_OUTPUT_STATUS_1 0x406
158#define ARIZONA_OUTPUT_RATE_1 0x408
159#define ARIZONA_OUTPUT_VOLUME_RAMP 0x409
160#define ARIZONA_OUTPUT_PATH_CONFIG_1L 0x410
161#define ARIZONA_DAC_DIGITAL_VOLUME_1L 0x411
162#define ARIZONA_DAC_VOLUME_LIMIT_1L 0x412
163#define ARIZONA_NOISE_GATE_SELECT_1L 0x413
164#define ARIZONA_OUTPUT_PATH_CONFIG_1R 0x414
165#define ARIZONA_DAC_DIGITAL_VOLUME_1R 0x415
166#define ARIZONA_DAC_VOLUME_LIMIT_1R 0x416
167#define ARIZONA_NOISE_GATE_SELECT_1R 0x417
168#define ARIZONA_OUTPUT_PATH_CONFIG_2L 0x418
169#define ARIZONA_DAC_DIGITAL_VOLUME_2L 0x419
170#define ARIZONA_DAC_VOLUME_LIMIT_2L 0x41A
171#define ARIZONA_NOISE_GATE_SELECT_2L 0x41B
172#define ARIZONA_OUTPUT_PATH_CONFIG_2R 0x41C
173#define ARIZONA_DAC_DIGITAL_VOLUME_2R 0x41D
174#define ARIZONA_DAC_VOLUME_LIMIT_2R 0x41E
175#define ARIZONA_NOISE_GATE_SELECT_2R 0x41F
176#define ARIZONA_OUTPUT_PATH_CONFIG_3L 0x420
177#define ARIZONA_DAC_DIGITAL_VOLUME_3L 0x421
178#define ARIZONA_DAC_VOLUME_LIMIT_3L 0x422
179#define ARIZONA_NOISE_GATE_SELECT_3L 0x423
180#define ARIZONA_OUTPUT_PATH_CONFIG_3R 0x424
181#define ARIZONA_DAC_DIGITAL_VOLUME_3R 0x425
182#define ARIZONA_DAC_VOLUME_LIMIT_3R 0x426
183#define ARIZONA_NOISE_GATE_SELECT_3R 0x427
184#define ARIZONA_OUTPUT_PATH_CONFIG_4L 0x428
185#define ARIZONA_DAC_DIGITAL_VOLUME_4L 0x429
186#define ARIZONA_OUT_VOLUME_4L 0x42A
187#define ARIZONA_NOISE_GATE_SELECT_4L 0x42B
188#define ARIZONA_OUTPUT_PATH_CONFIG_4R 0x42C
189#define ARIZONA_DAC_DIGITAL_VOLUME_4R 0x42D
190#define ARIZONA_OUT_VOLUME_4R 0x42E
191#define ARIZONA_NOISE_GATE_SELECT_4R 0x42F
192#define ARIZONA_OUTPUT_PATH_CONFIG_5L 0x430
193#define ARIZONA_DAC_DIGITAL_VOLUME_5L 0x431
194#define ARIZONA_DAC_VOLUME_LIMIT_5L 0x432
195#define ARIZONA_NOISE_GATE_SELECT_5L 0x433
196#define ARIZONA_OUTPUT_PATH_CONFIG_5R 0x434
197#define ARIZONA_DAC_DIGITAL_VOLUME_5R 0x435
198#define ARIZONA_DAC_VOLUME_LIMIT_5R 0x436
199#define ARIZONA_NOISE_GATE_SELECT_5R 0x437
200#define ARIZONA_OUTPUT_PATH_CONFIG_6L 0x438
201#define ARIZONA_DAC_DIGITAL_VOLUME_6L 0x439
202#define ARIZONA_DAC_VOLUME_LIMIT_6L 0x43A
203#define ARIZONA_NOISE_GATE_SELECT_6L 0x43B
204#define ARIZONA_OUTPUT_PATH_CONFIG_6R 0x43C
205#define ARIZONA_DAC_DIGITAL_VOLUME_6R 0x43D
206#define ARIZONA_DAC_VOLUME_LIMIT_6R 0x43E
207#define ARIZONA_NOISE_GATE_SELECT_6R 0x43F
208#define ARIZONA_DAC_AEC_CONTROL_1 0x450
209#define ARIZONA_NOISE_GATE_CONTROL 0x458
210#define ARIZONA_PDM_SPK1_CTRL_1 0x490
211#define ARIZONA_PDM_SPK1_CTRL_2 0x491
212#define ARIZONA_PDM_SPK2_CTRL_1 0x492
213#define ARIZONA_PDM_SPK2_CTRL_2 0x493
214#define ARIZONA_DAC_COMP_1 0x4DC
215#define ARIZONA_DAC_COMP_2 0x4DD
216#define ARIZONA_DAC_COMP_3 0x4DE
217#define ARIZONA_DAC_COMP_4 0x4DF
218#define ARIZONA_AIF1_BCLK_CTRL 0x500
219#define ARIZONA_AIF1_TX_PIN_CTRL 0x501
220#define ARIZONA_AIF1_RX_PIN_CTRL 0x502
221#define ARIZONA_AIF1_RATE_CTRL 0x503
222#define ARIZONA_AIF1_FORMAT 0x504
223#define ARIZONA_AIF1_TX_BCLK_RATE 0x505
224#define ARIZONA_AIF1_RX_BCLK_RATE 0x506
225#define ARIZONA_AIF1_FRAME_CTRL_1 0x507
226#define ARIZONA_AIF1_FRAME_CTRL_2 0x508
227#define ARIZONA_AIF1_FRAME_CTRL_3 0x509
228#define ARIZONA_AIF1_FRAME_CTRL_4 0x50A
229#define ARIZONA_AIF1_FRAME_CTRL_5 0x50B
230#define ARIZONA_AIF1_FRAME_CTRL_6 0x50C
231#define ARIZONA_AIF1_FRAME_CTRL_7 0x50D
232#define ARIZONA_AIF1_FRAME_CTRL_8 0x50E
233#define ARIZONA_AIF1_FRAME_CTRL_9 0x50F
234#define ARIZONA_AIF1_FRAME_CTRL_10 0x510
235#define ARIZONA_AIF1_FRAME_CTRL_11 0x511
236#define ARIZONA_AIF1_FRAME_CTRL_12 0x512
237#define ARIZONA_AIF1_FRAME_CTRL_13 0x513
238#define ARIZONA_AIF1_FRAME_CTRL_14 0x514
239#define ARIZONA_AIF1_FRAME_CTRL_15 0x515
240#define ARIZONA_AIF1_FRAME_CTRL_16 0x516
241#define ARIZONA_AIF1_FRAME_CTRL_17 0x517
242#define ARIZONA_AIF1_FRAME_CTRL_18 0x518
243#define ARIZONA_AIF1_TX_ENABLES 0x519
244#define ARIZONA_AIF1_RX_ENABLES 0x51A
245#define ARIZONA_AIF1_FORCE_WRITE 0x51B
246#define ARIZONA_AIF2_BCLK_CTRL 0x540
247#define ARIZONA_AIF2_TX_PIN_CTRL 0x541
248#define ARIZONA_AIF2_RX_PIN_CTRL 0x542
249#define ARIZONA_AIF2_RATE_CTRL 0x543
250#define ARIZONA_AIF2_FORMAT 0x544
251#define ARIZONA_AIF2_TX_BCLK_RATE 0x545
252#define ARIZONA_AIF2_RX_BCLK_RATE 0x546
253#define ARIZONA_AIF2_FRAME_CTRL_1 0x547
254#define ARIZONA_AIF2_FRAME_CTRL_2 0x548
255#define ARIZONA_AIF2_FRAME_CTRL_3 0x549
256#define ARIZONA_AIF2_FRAME_CTRL_4 0x54A
257#define ARIZONA_AIF2_FRAME_CTRL_11 0x551
258#define ARIZONA_AIF2_FRAME_CTRL_12 0x552
259#define ARIZONA_AIF2_TX_ENABLES 0x559
260#define ARIZONA_AIF2_RX_ENABLES 0x55A
261#define ARIZONA_AIF2_FORCE_WRITE 0x55B
262#define ARIZONA_AIF3_BCLK_CTRL 0x580
263#define ARIZONA_AIF3_TX_PIN_CTRL 0x581
264#define ARIZONA_AIF3_RX_PIN_CTRL 0x582
265#define ARIZONA_AIF3_RATE_CTRL 0x583
266#define ARIZONA_AIF3_FORMAT 0x584
267#define ARIZONA_AIF3_TX_BCLK_RATE 0x585
268#define ARIZONA_AIF3_RX_BCLK_RATE 0x586
269#define ARIZONA_AIF3_FRAME_CTRL_1 0x587
270#define ARIZONA_AIF3_FRAME_CTRL_2 0x588
271#define ARIZONA_AIF3_FRAME_CTRL_3 0x589
272#define ARIZONA_AIF3_FRAME_CTRL_4 0x58A
273#define ARIZONA_AIF3_FRAME_CTRL_11 0x591
274#define ARIZONA_AIF3_FRAME_CTRL_12 0x592
275#define ARIZONA_AIF3_TX_ENABLES 0x599
276#define ARIZONA_AIF3_RX_ENABLES 0x59A
277#define ARIZONA_AIF3_FORCE_WRITE 0x59B
278#define ARIZONA_SLIMBUS_FRAMER_REF_GEAR 0x5E3
279#define ARIZONA_SLIMBUS_RATES_1 0x5E5
280#define ARIZONA_SLIMBUS_RATES_2 0x5E6
281#define ARIZONA_SLIMBUS_RATES_3 0x5E7
282#define ARIZONA_SLIMBUS_RATES_4 0x5E8
283#define ARIZONA_SLIMBUS_RATES_5 0x5E9
284#define ARIZONA_SLIMBUS_RATES_6 0x5EA
285#define ARIZONA_SLIMBUS_RATES_7 0x5EB
286#define ARIZONA_SLIMBUS_RATES_8 0x5EC
287#define ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE 0x5F5
288#define ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE 0x5F6
289#define ARIZONA_SLIMBUS_RX_PORT_STATUS 0x5F7
290#define ARIZONA_SLIMBUS_TX_PORT_STATUS 0x5F8
291#define ARIZONA_PWM1MIX_INPUT_1_SOURCE 0x640
292#define ARIZONA_PWM1MIX_INPUT_1_VOLUME 0x641
293#define ARIZONA_PWM1MIX_INPUT_2_SOURCE 0x642
294#define ARIZONA_PWM1MIX_INPUT_2_VOLUME 0x643
295#define ARIZONA_PWM1MIX_INPUT_3_SOURCE 0x644
296#define ARIZONA_PWM1MIX_INPUT_3_VOLUME 0x645
297#define ARIZONA_PWM1MIX_INPUT_4_SOURCE 0x646
298#define ARIZONA_PWM1MIX_INPUT_4_VOLUME 0x647
299#define ARIZONA_PWM2MIX_INPUT_1_SOURCE 0x648
300#define ARIZONA_PWM2MIX_INPUT_1_VOLUME 0x649
301#define ARIZONA_PWM2MIX_INPUT_2_SOURCE 0x64A
302#define ARIZONA_PWM2MIX_INPUT_2_VOLUME 0x64B
303#define ARIZONA_PWM2MIX_INPUT_3_SOURCE 0x64C
304#define ARIZONA_PWM2MIX_INPUT_3_VOLUME 0x64D
305#define ARIZONA_PWM2MIX_INPUT_4_SOURCE 0x64E
306#define ARIZONA_PWM2MIX_INPUT_4_VOLUME 0x64F
307#define ARIZONA_MICMIX_INPUT_1_SOURCE 0x660
308#define ARIZONA_MICMIX_INPUT_1_VOLUME 0x661
309#define ARIZONA_MICMIX_INPUT_2_SOURCE 0x662
310#define ARIZONA_MICMIX_INPUT_2_VOLUME 0x663
311#define ARIZONA_MICMIX_INPUT_3_SOURCE 0x664
312#define ARIZONA_MICMIX_INPUT_3_VOLUME 0x665
313#define ARIZONA_MICMIX_INPUT_4_SOURCE 0x666
314#define ARIZONA_MICMIX_INPUT_4_VOLUME 0x667
315#define ARIZONA_NOISEMIX_INPUT_1_SOURCE 0x668
316#define ARIZONA_NOISEMIX_INPUT_1_VOLUME 0x669
317#define ARIZONA_NOISEMIX_INPUT_2_SOURCE 0x66A
318#define ARIZONA_NOISEMIX_INPUT_2_VOLUME 0x66B
319#define ARIZONA_NOISEMIX_INPUT_3_SOURCE 0x66C
320#define ARIZONA_NOISEMIX_INPUT_3_VOLUME 0x66D
321#define ARIZONA_NOISEMIX_INPUT_4_SOURCE 0x66E
322#define ARIZONA_NOISEMIX_INPUT_4_VOLUME 0x66F
323#define ARIZONA_OUT1LMIX_INPUT_1_SOURCE 0x680
324#define ARIZONA_OUT1LMIX_INPUT_1_VOLUME 0x681
325#define ARIZONA_OUT1LMIX_INPUT_2_SOURCE 0x682
326#define ARIZONA_OUT1LMIX_INPUT_2_VOLUME 0x683
327#define ARIZONA_OUT1LMIX_INPUT_3_SOURCE 0x684
328#define ARIZONA_OUT1LMIX_INPUT_3_VOLUME 0x685
329#define ARIZONA_OUT1LMIX_INPUT_4_SOURCE 0x686
330#define ARIZONA_OUT1LMIX_INPUT_4_VOLUME 0x687
331#define ARIZONA_OUT1RMIX_INPUT_1_SOURCE 0x688
332#define ARIZONA_OUT1RMIX_INPUT_1_VOLUME 0x689
333#define ARIZONA_OUT1RMIX_INPUT_2_SOURCE 0x68A
334#define ARIZONA_OUT1RMIX_INPUT_2_VOLUME 0x68B
335#define ARIZONA_OUT1RMIX_INPUT_3_SOURCE 0x68C
336#define ARIZONA_OUT1RMIX_INPUT_3_VOLUME 0x68D
337#define ARIZONA_OUT1RMIX_INPUT_4_SOURCE 0x68E
338#define ARIZONA_OUT1RMIX_INPUT_4_VOLUME 0x68F
339#define ARIZONA_OUT2LMIX_INPUT_1_SOURCE 0x690
340#define ARIZONA_OUT2LMIX_INPUT_1_VOLUME 0x691
341#define ARIZONA_OUT2LMIX_INPUT_2_SOURCE 0x692
342#define ARIZONA_OUT2LMIX_INPUT_2_VOLUME 0x693
343#define ARIZONA_OUT2LMIX_INPUT_3_SOURCE 0x694
344#define ARIZONA_OUT2LMIX_INPUT_3_VOLUME 0x695
345#define ARIZONA_OUT2LMIX_INPUT_4_SOURCE 0x696
346#define ARIZONA_OUT2LMIX_INPUT_4_VOLUME 0x697
347#define ARIZONA_OUT2RMIX_INPUT_1_SOURCE 0x698
348#define ARIZONA_OUT2RMIX_INPUT_1_VOLUME 0x699
349#define ARIZONA_OUT2RMIX_INPUT_2_SOURCE 0x69A
350#define ARIZONA_OUT2RMIX_INPUT_2_VOLUME 0x69B
351#define ARIZONA_OUT2RMIX_INPUT_3_SOURCE 0x69C
352#define ARIZONA_OUT2RMIX_INPUT_3_VOLUME 0x69D
353#define ARIZONA_OUT2RMIX_INPUT_4_SOURCE 0x69E
354#define ARIZONA_OUT2RMIX_INPUT_4_VOLUME 0x69F
355#define ARIZONA_OUT3LMIX_INPUT_1_SOURCE 0x6A0
356#define ARIZONA_OUT3LMIX_INPUT_1_VOLUME 0x6A1
357#define ARIZONA_OUT3LMIX_INPUT_2_SOURCE 0x6A2
358#define ARIZONA_OUT3LMIX_INPUT_2_VOLUME 0x6A3
359#define ARIZONA_OUT3LMIX_INPUT_3_SOURCE 0x6A4
360#define ARIZONA_OUT3LMIX_INPUT_3_VOLUME 0x6A5
361#define ARIZONA_OUT3LMIX_INPUT_4_SOURCE 0x6A6
362#define ARIZONA_OUT3LMIX_INPUT_4_VOLUME 0x6A7
363#define ARIZONA_OUT3RMIX_INPUT_1_SOURCE 0x6A8
364#define ARIZONA_OUT3RMIX_INPUT_1_VOLUME 0x6A9
365#define ARIZONA_OUT3RMIX_INPUT_2_SOURCE 0x6AA
366#define ARIZONA_OUT3RMIX_INPUT_2_VOLUME 0x6AB
367#define ARIZONA_OUT3RMIX_INPUT_3_SOURCE 0x6AC
368#define ARIZONA_OUT3RMIX_INPUT_3_VOLUME 0x6AD
369#define ARIZONA_OUT3RMIX_INPUT_4_SOURCE 0x6AE
370#define ARIZONA_OUT3RMIX_INPUT_4_VOLUME 0x6AF
371#define ARIZONA_OUT4LMIX_INPUT_1_SOURCE 0x6B0
372#define ARIZONA_OUT4LMIX_INPUT_1_VOLUME 0x6B1
373#define ARIZONA_OUT4LMIX_INPUT_2_SOURCE 0x6B2
374#define ARIZONA_OUT4LMIX_INPUT_2_VOLUME 0x6B3
375#define ARIZONA_OUT4LMIX_INPUT_3_SOURCE 0x6B4
376#define ARIZONA_OUT4LMIX_INPUT_3_VOLUME 0x6B5
377#define ARIZONA_OUT4LMIX_INPUT_4_SOURCE 0x6B6
378#define ARIZONA_OUT4LMIX_INPUT_4_VOLUME 0x6B7
379#define ARIZONA_OUT4RMIX_INPUT_1_SOURCE 0x6B8
380#define ARIZONA_OUT4RMIX_INPUT_1_VOLUME 0x6B9
381#define ARIZONA_OUT4RMIX_INPUT_2_SOURCE 0x6BA
382#define ARIZONA_OUT4RMIX_INPUT_2_VOLUME 0x6BB
383#define ARIZONA_OUT4RMIX_INPUT_3_SOURCE 0x6BC
384#define ARIZONA_OUT4RMIX_INPUT_3_VOLUME 0x6BD
385#define ARIZONA_OUT4RMIX_INPUT_4_SOURCE 0x6BE
386#define ARIZONA_OUT4RMIX_INPUT_4_VOLUME 0x6BF
387#define ARIZONA_OUT5LMIX_INPUT_1_SOURCE 0x6C0
388#define ARIZONA_OUT5LMIX_INPUT_1_VOLUME 0x6C1
389#define ARIZONA_OUT5LMIX_INPUT_2_SOURCE 0x6C2
390#define ARIZONA_OUT5LMIX_INPUT_2_VOLUME 0x6C3
391#define ARIZONA_OUT5LMIX_INPUT_3_SOURCE 0x6C4
392#define ARIZONA_OUT5LMIX_INPUT_3_VOLUME 0x6C5
393#define ARIZONA_OUT5LMIX_INPUT_4_SOURCE 0x6C6
394#define ARIZONA_OUT5LMIX_INPUT_4_VOLUME 0x6C7
395#define ARIZONA_OUT5RMIX_INPUT_1_SOURCE 0x6C8
396#define ARIZONA_OUT5RMIX_INPUT_1_VOLUME 0x6C9
397#define ARIZONA_OUT5RMIX_INPUT_2_SOURCE 0x6CA
398#define ARIZONA_OUT5RMIX_INPUT_2_VOLUME 0x6CB
399#define ARIZONA_OUT5RMIX_INPUT_3_SOURCE 0x6CC
400#define ARIZONA_OUT5RMIX_INPUT_3_VOLUME 0x6CD
401#define ARIZONA_OUT5RMIX_INPUT_4_SOURCE 0x6CE
402#define ARIZONA_OUT5RMIX_INPUT_4_VOLUME 0x6CF
403#define ARIZONA_OUT6LMIX_INPUT_1_SOURCE 0x6D0
404#define ARIZONA_OUT6LMIX_INPUT_1_VOLUME 0x6D1
405#define ARIZONA_OUT6LMIX_INPUT_2_SOURCE 0x6D2
406#define ARIZONA_OUT6LMIX_INPUT_2_VOLUME 0x6D3
407#define ARIZONA_OUT6LMIX_INPUT_3_SOURCE 0x6D4
408#define ARIZONA_OUT6LMIX_INPUT_3_VOLUME 0x6D5
409#define ARIZONA_OUT6LMIX_INPUT_4_SOURCE 0x6D6
410#define ARIZONA_OUT6LMIX_INPUT_4_VOLUME 0x6D7
411#define ARIZONA_OUT6RMIX_INPUT_1_SOURCE 0x6D8
412#define ARIZONA_OUT6RMIX_INPUT_1_VOLUME 0x6D9
413#define ARIZONA_OUT6RMIX_INPUT_2_SOURCE 0x6DA
414#define ARIZONA_OUT6RMIX_INPUT_2_VOLUME 0x6DB
415#define ARIZONA_OUT6RMIX_INPUT_3_SOURCE 0x6DC
416#define ARIZONA_OUT6RMIX_INPUT_3_VOLUME 0x6DD
417#define ARIZONA_OUT6RMIX_INPUT_4_SOURCE 0x6DE
418#define ARIZONA_OUT6RMIX_INPUT_4_VOLUME 0x6DF
419#define ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE 0x700
420#define ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME 0x701
421#define ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE 0x702
422#define ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME 0x703
423#define ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE 0x704
424#define ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME 0x705
425#define ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE 0x706
426#define ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME 0x707
427#define ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE 0x708
428#define ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME 0x709
429#define ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE 0x70A
430#define ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME 0x70B
431#define ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE 0x70C
432#define ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME 0x70D
433#define ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE 0x70E
434#define ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME 0x70F
435#define ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE 0x710
436#define ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME 0x711
437#define ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE 0x712
438#define ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME 0x713
439#define ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE 0x714
440#define ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME 0x715
441#define ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE 0x716
442#define ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME 0x717
443#define ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE 0x718
444#define ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME 0x719
445#define ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE 0x71A
446#define ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME 0x71B
447#define ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE 0x71C
448#define ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME 0x71D
449#define ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE 0x71E
450#define ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME 0x71F
451#define ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE 0x720
452#define ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME 0x721
453#define ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE 0x722
454#define ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME 0x723
455#define ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE 0x724
456#define ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME 0x725
457#define ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE 0x726
458#define ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME 0x727
459#define ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE 0x728
460#define ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME 0x729
461#define ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE 0x72A
462#define ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME 0x72B
463#define ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE 0x72C
464#define ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME 0x72D
465#define ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE 0x72E
466#define ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME 0x72F
467#define ARIZONA_AIF1TX7MIX_INPUT_1_SOURCE 0x730
468#define ARIZONA_AIF1TX7MIX_INPUT_1_VOLUME 0x731
469#define ARIZONA_AIF1TX7MIX_INPUT_2_SOURCE 0x732
470#define ARIZONA_AIF1TX7MIX_INPUT_2_VOLUME 0x733
471#define ARIZONA_AIF1TX7MIX_INPUT_3_SOURCE 0x734
472#define ARIZONA_AIF1TX7MIX_INPUT_3_VOLUME 0x735
473#define ARIZONA_AIF1TX7MIX_INPUT_4_SOURCE 0x736
474#define ARIZONA_AIF1TX7MIX_INPUT_4_VOLUME 0x737
475#define ARIZONA_AIF1TX8MIX_INPUT_1_SOURCE 0x738
476#define ARIZONA_AIF1TX8MIX_INPUT_1_VOLUME 0x739
477#define ARIZONA_AIF1TX8MIX_INPUT_2_SOURCE 0x73A
478#define ARIZONA_AIF1TX8MIX_INPUT_2_VOLUME 0x73B
479#define ARIZONA_AIF1TX8MIX_INPUT_3_SOURCE 0x73C
480#define ARIZONA_AIF1TX8MIX_INPUT_3_VOLUME 0x73D
481#define ARIZONA_AIF1TX8MIX_INPUT_4_SOURCE 0x73E
482#define ARIZONA_AIF1TX8MIX_INPUT_4_VOLUME 0x73F
483#define ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE 0x740
484#define ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME 0x741
485#define ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE 0x742
486#define ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME 0x743
487#define ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE 0x744
488#define ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME 0x745
489#define ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE 0x746
490#define ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME 0x747
491#define ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE 0x748
492#define ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME 0x749
493#define ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE 0x74A
494#define ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME 0x74B
495#define ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE 0x74C
496#define ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME 0x74D
497#define ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE 0x74E
498#define ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME 0x74F
499#define ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE 0x780
500#define ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME 0x781
501#define ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE 0x782
502#define ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME 0x783
503#define ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE 0x784
504#define ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME 0x785
505#define ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE 0x786
506#define ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME 0x787
507#define ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE 0x788
508#define ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME 0x789
509#define ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE 0x78A
510#define ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME 0x78B
511#define ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE 0x78C
512#define ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME 0x78D
513#define ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE 0x78E
514#define ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME 0x78F
515#define ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE 0x7C0
516#define ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME 0x7C1
517#define ARIZONA_SLIMTX1MIX_INPUT_2_SOURCE 0x7C2
518#define ARIZONA_SLIMTX1MIX_INPUT_2_VOLUME 0x7C3
519#define ARIZONA_SLIMTX1MIX_INPUT_3_SOURCE 0x7C4
520#define ARIZONA_SLIMTX1MIX_INPUT_3_VOLUME 0x7C5
521#define ARIZONA_SLIMTX1MIX_INPUT_4_SOURCE 0x7C6
522#define ARIZONA_SLIMTX1MIX_INPUT_4_VOLUME 0x7C7
523#define ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE 0x7C8
524#define ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME 0x7C9
525#define ARIZONA_SLIMTX2MIX_INPUT_2_SOURCE 0x7CA
526#define ARIZONA_SLIMTX2MIX_INPUT_2_VOLUME 0x7CB
527#define ARIZONA_SLIMTX2MIX_INPUT_3_SOURCE 0x7CC
528#define ARIZONA_SLIMTX2MIX_INPUT_3_VOLUME 0x7CD
529#define ARIZONA_SLIMTX2MIX_INPUT_4_SOURCE 0x7CE
530#define ARIZONA_SLIMTX2MIX_INPUT_4_VOLUME 0x7CF
531#define ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE 0x7D0
532#define ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME 0x7D1
533#define ARIZONA_SLIMTX3MIX_INPUT_2_SOURCE 0x7D2
534#define ARIZONA_SLIMTX3MIX_INPUT_2_VOLUME 0x7D3
535#define ARIZONA_SLIMTX3MIX_INPUT_3_SOURCE 0x7D4
536#define ARIZONA_SLIMTX3MIX_INPUT_3_VOLUME 0x7D5
537#define ARIZONA_SLIMTX3MIX_INPUT_4_SOURCE 0x7D6
538#define ARIZONA_SLIMTX3MIX_INPUT_4_VOLUME 0x7D7
539#define ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE 0x7D8
540#define ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME 0x7D9
541#define ARIZONA_SLIMTX4MIX_INPUT_2_SOURCE 0x7DA
542#define ARIZONA_SLIMTX4MIX_INPUT_2_VOLUME 0x7DB
543#define ARIZONA_SLIMTX4MIX_INPUT_3_SOURCE 0x7DC
544#define ARIZONA_SLIMTX4MIX_INPUT_3_VOLUME 0x7DD
545#define ARIZONA_SLIMTX4MIX_INPUT_4_SOURCE 0x7DE
546#define ARIZONA_SLIMTX4MIX_INPUT_4_VOLUME 0x7DF
547#define ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE 0x7E0
548#define ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME 0x7E1
549#define ARIZONA_SLIMTX5MIX_INPUT_2_SOURCE 0x7E2
550#define ARIZONA_SLIMTX5MIX_INPUT_2_VOLUME 0x7E3
551#define ARIZONA_SLIMTX5MIX_INPUT_3_SOURCE 0x7E4
552#define ARIZONA_SLIMTX5MIX_INPUT_3_VOLUME 0x7E5
553#define ARIZONA_SLIMTX5MIX_INPUT_4_SOURCE 0x7E6
554#define ARIZONA_SLIMTX5MIX_INPUT_4_VOLUME 0x7E7
555#define ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE 0x7E8
556#define ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME 0x7E9
557#define ARIZONA_SLIMTX6MIX_INPUT_2_SOURCE 0x7EA
558#define ARIZONA_SLIMTX6MIX_INPUT_2_VOLUME 0x7EB
559#define ARIZONA_SLIMTX6MIX_INPUT_3_SOURCE 0x7EC
560#define ARIZONA_SLIMTX6MIX_INPUT_3_VOLUME 0x7ED
561#define ARIZONA_SLIMTX6MIX_INPUT_4_SOURCE 0x7EE
562#define ARIZONA_SLIMTX6MIX_INPUT_4_VOLUME 0x7EF
563#define ARIZONA_SLIMTX7MIX_INPUT_1_SOURCE 0x7F0
564#define ARIZONA_SLIMTX7MIX_INPUT_1_VOLUME 0x7F1
565#define ARIZONA_SLIMTX7MIX_INPUT_2_SOURCE 0x7F2
566#define ARIZONA_SLIMTX7MIX_INPUT_2_VOLUME 0x7F3
567#define ARIZONA_SLIMTX7MIX_INPUT_3_SOURCE 0x7F4
568#define ARIZONA_SLIMTX7MIX_INPUT_3_VOLUME 0x7F5
569#define ARIZONA_SLIMTX7MIX_INPUT_4_SOURCE 0x7F6
570#define ARIZONA_SLIMTX7MIX_INPUT_4_VOLUME 0x7F7
571#define ARIZONA_SLIMTX8MIX_INPUT_1_SOURCE 0x7F8
572#define ARIZONA_SLIMTX8MIX_INPUT_1_VOLUME 0x7F9
573#define ARIZONA_SLIMTX8MIX_INPUT_2_SOURCE 0x7FA
574#define ARIZONA_SLIMTX8MIX_INPUT_2_VOLUME 0x7FB
575#define ARIZONA_SLIMTX8MIX_INPUT_3_SOURCE 0x7FC
576#define ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME 0x7FD
577#define ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE 0x7FE
578#define ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME 0x7FF
579#define ARIZONA_EQ1MIX_INPUT_1_SOURCE 0x880
580#define ARIZONA_EQ1MIX_INPUT_1_VOLUME 0x881
581#define ARIZONA_EQ1MIX_INPUT_2_SOURCE 0x882
582#define ARIZONA_EQ1MIX_INPUT_2_VOLUME 0x883
583#define ARIZONA_EQ1MIX_INPUT_3_SOURCE 0x884
584#define ARIZONA_EQ1MIX_INPUT_3_VOLUME 0x885
585#define ARIZONA_EQ1MIX_INPUT_4_SOURCE 0x886
586#define ARIZONA_EQ1MIX_INPUT_4_VOLUME 0x887
587#define ARIZONA_EQ2MIX_INPUT_1_SOURCE 0x888
588#define ARIZONA_EQ2MIX_INPUT_1_VOLUME 0x889
589#define ARIZONA_EQ2MIX_INPUT_2_SOURCE 0x88A
590#define ARIZONA_EQ2MIX_INPUT_2_VOLUME 0x88B
591#define ARIZONA_EQ2MIX_INPUT_3_SOURCE 0x88C
592#define ARIZONA_EQ2MIX_INPUT_3_VOLUME 0x88D
593#define ARIZONA_EQ2MIX_INPUT_4_SOURCE 0x88E
594#define ARIZONA_EQ2MIX_INPUT_4_VOLUME 0x88F
595#define ARIZONA_EQ3MIX_INPUT_1_SOURCE 0x890
596#define ARIZONA_EQ3MIX_INPUT_1_VOLUME 0x891
597#define ARIZONA_EQ3MIX_INPUT_2_SOURCE 0x892
598#define ARIZONA_EQ3MIX_INPUT_2_VOLUME 0x893
599#define ARIZONA_EQ3MIX_INPUT_3_SOURCE 0x894
600#define ARIZONA_EQ3MIX_INPUT_3_VOLUME 0x895
601#define ARIZONA_EQ3MIX_INPUT_4_SOURCE 0x896
602#define ARIZONA_EQ3MIX_INPUT_4_VOLUME 0x897
603#define ARIZONA_EQ4MIX_INPUT_1_SOURCE 0x898
604#define ARIZONA_EQ4MIX_INPUT_1_VOLUME 0x899
605#define ARIZONA_EQ4MIX_INPUT_2_SOURCE 0x89A
606#define ARIZONA_EQ4MIX_INPUT_2_VOLUME 0x89B
607#define ARIZONA_EQ4MIX_INPUT_3_SOURCE 0x89C
608#define ARIZONA_EQ4MIX_INPUT_3_VOLUME 0x89D
609#define ARIZONA_EQ4MIX_INPUT_4_SOURCE 0x89E
610#define ARIZONA_EQ4MIX_INPUT_4_VOLUME 0x89F
611#define ARIZONA_DRC1LMIX_INPUT_1_SOURCE 0x8C0
612#define ARIZONA_DRC1LMIX_INPUT_1_VOLUME 0x8C1
613#define ARIZONA_DRC1LMIX_INPUT_2_SOURCE 0x8C2
614#define ARIZONA_DRC1LMIX_INPUT_2_VOLUME 0x8C3
615#define ARIZONA_DRC1LMIX_INPUT_3_SOURCE 0x8C4
616#define ARIZONA_DRC1LMIX_INPUT_3_VOLUME 0x8C5
617#define ARIZONA_DRC1LMIX_INPUT_4_SOURCE 0x8C6
618#define ARIZONA_DRC1LMIX_INPUT_4_VOLUME 0x8C7
619#define ARIZONA_DRC1RMIX_INPUT_1_SOURCE 0x8C8
620#define ARIZONA_DRC1RMIX_INPUT_1_VOLUME 0x8C9
621#define ARIZONA_DRC1RMIX_INPUT_2_SOURCE 0x8CA
622#define ARIZONA_DRC1RMIX_INPUT_2_VOLUME 0x8CB
623#define ARIZONA_DRC1RMIX_INPUT_3_SOURCE 0x8CC
624#define ARIZONA_DRC1RMIX_INPUT_3_VOLUME 0x8CD
625#define ARIZONA_DRC1RMIX_INPUT_4_SOURCE 0x8CE
626#define ARIZONA_DRC1RMIX_INPUT_4_VOLUME 0x8CF
627#define ARIZONA_DRC2LMIX_INPUT_1_SOURCE 0x8D0
628#define ARIZONA_DRC2LMIX_INPUT_1_VOLUME 0x8D1
629#define ARIZONA_DRC2LMIX_INPUT_2_SOURCE 0x8D2
630#define ARIZONA_DRC2LMIX_INPUT_2_VOLUME 0x8D3
631#define ARIZONA_DRC2LMIX_INPUT_3_SOURCE 0x8D4
632#define ARIZONA_DRC2LMIX_INPUT_3_VOLUME 0x8D5
633#define ARIZONA_DRC2LMIX_INPUT_4_SOURCE 0x8D6
634#define ARIZONA_DRC2LMIX_INPUT_4_VOLUME 0x8D7
635#define ARIZONA_DRC2RMIX_INPUT_1_SOURCE 0x8D8
636#define ARIZONA_DRC2RMIX_INPUT_1_VOLUME 0x8D9
637#define ARIZONA_DRC2RMIX_INPUT_2_SOURCE 0x8DA
638#define ARIZONA_DRC2RMIX_INPUT_2_VOLUME 0x8DB
639#define ARIZONA_DRC2RMIX_INPUT_3_SOURCE 0x8DC
640#define ARIZONA_DRC2RMIX_INPUT_3_VOLUME 0x8DD
641#define ARIZONA_DRC2RMIX_INPUT_4_SOURCE 0x8DE
642#define ARIZONA_DRC2RMIX_INPUT_4_VOLUME 0x8DF
643#define ARIZONA_HPLP1MIX_INPUT_1_SOURCE 0x900
644#define ARIZONA_HPLP1MIX_INPUT_1_VOLUME 0x901
645#define ARIZONA_HPLP1MIX_INPUT_2_SOURCE 0x902
646#define ARIZONA_HPLP1MIX_INPUT_2_VOLUME 0x903
647#define ARIZONA_HPLP1MIX_INPUT_3_SOURCE 0x904
648#define ARIZONA_HPLP1MIX_INPUT_3_VOLUME 0x905
649#define ARIZONA_HPLP1MIX_INPUT_4_SOURCE 0x906
650#define ARIZONA_HPLP1MIX_INPUT_4_VOLUME 0x907
651#define ARIZONA_HPLP2MIX_INPUT_1_SOURCE 0x908
652#define ARIZONA_HPLP2MIX_INPUT_1_VOLUME 0x909
653#define ARIZONA_HPLP2MIX_INPUT_2_SOURCE 0x90A
654#define ARIZONA_HPLP2MIX_INPUT_2_VOLUME 0x90B
655#define ARIZONA_HPLP2MIX_INPUT_3_SOURCE 0x90C
656#define ARIZONA_HPLP2MIX_INPUT_3_VOLUME 0x90D
657#define ARIZONA_HPLP2MIX_INPUT_4_SOURCE 0x90E
658#define ARIZONA_HPLP2MIX_INPUT_4_VOLUME 0x90F
659#define ARIZONA_HPLP3MIX_INPUT_1_SOURCE 0x910
660#define ARIZONA_HPLP3MIX_INPUT_1_VOLUME 0x911
661#define ARIZONA_HPLP3MIX_INPUT_2_SOURCE 0x912
662#define ARIZONA_HPLP3MIX_INPUT_2_VOLUME 0x913
663#define ARIZONA_HPLP3MIX_INPUT_3_SOURCE 0x914
664#define ARIZONA_HPLP3MIX_INPUT_3_VOLUME 0x915
665#define ARIZONA_HPLP3MIX_INPUT_4_SOURCE 0x916
666#define ARIZONA_HPLP3MIX_INPUT_4_VOLUME 0x917
667#define ARIZONA_HPLP4MIX_INPUT_1_SOURCE 0x918
668#define ARIZONA_HPLP4MIX_INPUT_1_VOLUME 0x919
669#define ARIZONA_HPLP4MIX_INPUT_2_SOURCE 0x91A
670#define ARIZONA_HPLP4MIX_INPUT_2_VOLUME 0x91B
671#define ARIZONA_HPLP4MIX_INPUT_3_SOURCE 0x91C
672#define ARIZONA_HPLP4MIX_INPUT_3_VOLUME 0x91D
673#define ARIZONA_HPLP4MIX_INPUT_4_SOURCE 0x91E
674#define ARIZONA_HPLP4MIX_INPUT_4_VOLUME 0x91F
675#define ARIZONA_DSP1LMIX_INPUT_1_SOURCE 0x940
676#define ARIZONA_DSP1LMIX_INPUT_1_VOLUME 0x941
677#define ARIZONA_DSP1LMIX_INPUT_2_SOURCE 0x942
678#define ARIZONA_DSP1LMIX_INPUT_2_VOLUME 0x943
679#define ARIZONA_DSP1LMIX_INPUT_3_SOURCE 0x944
680#define ARIZONA_DSP1LMIX_INPUT_3_VOLUME 0x945
681#define ARIZONA_DSP1LMIX_INPUT_4_SOURCE 0x946
682#define ARIZONA_DSP1LMIX_INPUT_4_VOLUME 0x947
683#define ARIZONA_DSP1RMIX_INPUT_1_SOURCE 0x948
684#define ARIZONA_DSP1RMIX_INPUT_1_VOLUME 0x949
685#define ARIZONA_DSP1RMIX_INPUT_2_SOURCE 0x94A
686#define ARIZONA_DSP1RMIX_INPUT_2_VOLUME 0x94B
687#define ARIZONA_DSP1RMIX_INPUT_3_SOURCE 0x94C
688#define ARIZONA_DSP1RMIX_INPUT_3_VOLUME 0x94D
689#define ARIZONA_DSP1RMIX_INPUT_4_SOURCE 0x94E
690#define ARIZONA_DSP1RMIX_INPUT_4_VOLUME 0x94F
691#define ARIZONA_DSP1AUX1MIX_INPUT_1_SOURCE 0x950
692#define ARIZONA_DSP1AUX2MIX_INPUT_1_SOURCE 0x958
693#define ARIZONA_DSP1AUX3MIX_INPUT_1_SOURCE 0x960
694#define ARIZONA_DSP1AUX4MIX_INPUT_1_SOURCE 0x968
695#define ARIZONA_DSP1AUX5MIX_INPUT_1_SOURCE 0x970
696#define ARIZONA_DSP1AUX6MIX_INPUT_1_SOURCE 0x978
697#define ARIZONA_DSP2LMIX_INPUT_1_SOURCE 0x980
698#define ARIZONA_DSP2LMIX_INPUT_1_VOLUME 0x981
699#define ARIZONA_DSP2LMIX_INPUT_2_SOURCE 0x982
700#define ARIZONA_DSP2LMIX_INPUT_2_VOLUME 0x983
701#define ARIZONA_DSP2LMIX_INPUT_3_SOURCE 0x984
702#define ARIZONA_DSP2LMIX_INPUT_3_VOLUME 0x985
703#define ARIZONA_DSP2LMIX_INPUT_4_SOURCE 0x986
704#define ARIZONA_DSP2LMIX_INPUT_4_VOLUME 0x987
705#define ARIZONA_DSP2RMIX_INPUT_1_SOURCE 0x988
706#define ARIZONA_DSP2RMIX_INPUT_1_VOLUME 0x989
707#define ARIZONA_DSP2RMIX_INPUT_2_SOURCE 0x98A
708#define ARIZONA_DSP2RMIX_INPUT_2_VOLUME 0x98B
709#define ARIZONA_DSP2RMIX_INPUT_3_SOURCE 0x98C
710#define ARIZONA_DSP2RMIX_INPUT_3_VOLUME 0x98D
711#define ARIZONA_DSP2RMIX_INPUT_4_SOURCE 0x98E
712#define ARIZONA_DSP2RMIX_INPUT_4_VOLUME 0x98F
713#define ARIZONA_DSP2AUX1MIX_INPUT_1_SOURCE 0x990
714#define ARIZONA_DSP2AUX2MIX_INPUT_1_SOURCE 0x998
715#define ARIZONA_DSP2AUX3MIX_INPUT_1_SOURCE 0x9A0
716#define ARIZONA_DSP2AUX4MIX_INPUT_1_SOURCE 0x9A8
717#define ARIZONA_DSP2AUX5MIX_INPUT_1_SOURCE 0x9B0
718#define ARIZONA_DSP2AUX6MIX_INPUT_1_SOURCE 0x9B8
719#define ARIZONA_DSP3LMIX_INPUT_1_SOURCE 0x9C0
720#define ARIZONA_DSP3LMIX_INPUT_1_VOLUME 0x9C1
721#define ARIZONA_DSP3LMIX_INPUT_2_SOURCE 0x9C2
722#define ARIZONA_DSP3LMIX_INPUT_2_VOLUME 0x9C3
723#define ARIZONA_DSP3LMIX_INPUT_3_SOURCE 0x9C4
724#define ARIZONA_DSP3LMIX_INPUT_3_VOLUME 0x9C5
725#define ARIZONA_DSP3LMIX_INPUT_4_SOURCE 0x9C6
726#define ARIZONA_DSP3LMIX_INPUT_4_VOLUME 0x9C7
727#define ARIZONA_DSP3RMIX_INPUT_1_SOURCE 0x9C8
728#define ARIZONA_DSP3RMIX_INPUT_1_VOLUME 0x9C9
729#define ARIZONA_DSP3RMIX_INPUT_2_SOURCE 0x9CA
730#define ARIZONA_DSP3RMIX_INPUT_2_VOLUME 0x9CB
731#define ARIZONA_DSP3RMIX_INPUT_3_SOURCE 0x9CC
732#define ARIZONA_DSP3RMIX_INPUT_3_VOLUME 0x9CD
733#define ARIZONA_DSP3RMIX_INPUT_4_SOURCE 0x9CE
734#define ARIZONA_DSP3RMIX_INPUT_4_VOLUME 0x9CF
735#define ARIZONA_DSP3AUX1MIX_INPUT_1_SOURCE 0x9D0
736#define ARIZONA_DSP3AUX2MIX_INPUT_1_SOURCE 0x9D8
737#define ARIZONA_DSP3AUX3MIX_INPUT_1_SOURCE 0x9E0
738#define ARIZONA_DSP3AUX4MIX_INPUT_1_SOURCE 0x9E8
739#define ARIZONA_DSP3AUX5MIX_INPUT_1_SOURCE 0x9F0
740#define ARIZONA_DSP3AUX6MIX_INPUT_1_SOURCE 0x9F8
741#define ARIZONA_DSP4LMIX_INPUT_1_SOURCE 0xA00
742#define ARIZONA_DSP4LMIX_INPUT_1_VOLUME 0xA01
743#define ARIZONA_DSP4LMIX_INPUT_2_SOURCE 0xA02
744#define ARIZONA_DSP4LMIX_INPUT_2_VOLUME 0xA03
745#define ARIZONA_DSP4LMIX_INPUT_3_SOURCE 0xA04
746#define ARIZONA_DSP4LMIX_INPUT_3_VOLUME 0xA05
747#define ARIZONA_DSP4LMIX_INPUT_4_SOURCE 0xA06
748#define ARIZONA_DSP4LMIX_INPUT_4_VOLUME 0xA07
749#define ARIZONA_DSP4RMIX_INPUT_1_SOURCE 0xA08
750#define ARIZONA_DSP4RMIX_INPUT_1_VOLUME 0xA09
751#define ARIZONA_DSP4RMIX_INPUT_2_SOURCE 0xA0A
752#define ARIZONA_DSP4RMIX_INPUT_2_VOLUME 0xA0B
753#define ARIZONA_DSP4RMIX_INPUT_3_SOURCE 0xA0C
754#define ARIZONA_DSP4RMIX_INPUT_3_VOLUME 0xA0D
755#define ARIZONA_DSP4RMIX_INPUT_4_SOURCE 0xA0E
756#define ARIZONA_DSP4RMIX_INPUT_4_VOLUME 0xA0F
757#define ARIZONA_DSP4AUX1MIX_INPUT_1_SOURCE 0xA10
758#define ARIZONA_DSP4AUX2MIX_INPUT_1_SOURCE 0xA18
759#define ARIZONA_DSP4AUX3MIX_INPUT_1_SOURCE 0xA20
760#define ARIZONA_DSP4AUX4MIX_INPUT_1_SOURCE 0xA28
761#define ARIZONA_DSP4AUX5MIX_INPUT_1_SOURCE 0xA30
762#define ARIZONA_DSP4AUX6MIX_INPUT_1_SOURCE 0xA38
763#define ARIZONA_ASRC1LMIX_INPUT_1_SOURCE 0xA80
764#define ARIZONA_ASRC1RMIX_INPUT_1_SOURCE 0xA88
765#define ARIZONA_ASRC2LMIX_INPUT_1_SOURCE 0xA90
766#define ARIZONA_ASRC2RMIX_INPUT_1_SOURCE 0xA98
767#define ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE 0xB00
768#define ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE 0xB08
769#define ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE 0xB10
770#define ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE 0xB18
771#define ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE 0xB20
772#define ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE 0xB28
773#define ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE 0xB30
774#define ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE 0xB38
775#define ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE 0xB40
776#define ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE 0xB48
777#define ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE 0xB60
778#define ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE 0xB68
779#define ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE 0xB30
780#define ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE 0xB38
781#define ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE 0xB40
782#define ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE 0xB48
783#define ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE 0xB50
784#define ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE 0xB58
785#define ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE 0xB60
786#define ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE 0xB68
787#define ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE 0xB70
788#define ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE 0xB78
789#define ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE 0xB80
790#define ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE 0xB88
791#define ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE 0xB90
792#define ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE 0xB98
793#define ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE 0xBA0
794#define ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE 0xBA8
795#define ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE 0xBB0
796#define ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE 0xBB8
797#define ARIZONA_GPIO1_CTRL 0xC00
798#define ARIZONA_GPIO2_CTRL 0xC01
799#define ARIZONA_GPIO3_CTRL 0xC02
800#define ARIZONA_GPIO4_CTRL 0xC03
801#define ARIZONA_GPIO5_CTRL 0xC04
802#define ARIZONA_IRQ_CTRL_1 0xC0F
803#define ARIZONA_GPIO_DEBOUNCE_CONFIG 0xC10
804#define ARIZONA_MISC_PAD_CTRL_1 0xC20
805#define ARIZONA_MISC_PAD_CTRL_2 0xC21
806#define ARIZONA_MISC_PAD_CTRL_3 0xC22
807#define ARIZONA_MISC_PAD_CTRL_4 0xC23
808#define ARIZONA_MISC_PAD_CTRL_5 0xC24
809#define ARIZONA_MISC_PAD_CTRL_6 0xC25
810#define ARIZONA_MISC_PAD_CTRL_7 0xC30
811#define ARIZONA_MISC_PAD_CTRL_8 0xC31
812#define ARIZONA_MISC_PAD_CTRL_9 0xC32
813#define ARIZONA_MISC_PAD_CTRL_10 0xC33
814#define ARIZONA_MISC_PAD_CTRL_11 0xC34
815#define ARIZONA_MISC_PAD_CTRL_12 0xC35
816#define ARIZONA_MISC_PAD_CTRL_13 0xC36
817#define ARIZONA_MISC_PAD_CTRL_14 0xC37
818#define ARIZONA_MISC_PAD_CTRL_15 0xC38
819#define ARIZONA_MISC_PAD_CTRL_16 0xC39
820#define ARIZONA_MISC_PAD_CTRL_17 0xC3A
821#define ARIZONA_MISC_PAD_CTRL_18 0xC3B
822#define ARIZONA_INTERRUPT_STATUS_1 0xD00
823#define ARIZONA_INTERRUPT_STATUS_2 0xD01
824#define ARIZONA_INTERRUPT_STATUS_3 0xD02
825#define ARIZONA_INTERRUPT_STATUS_4 0xD03
826#define ARIZONA_INTERRUPT_STATUS_5 0xD04
827#define ARIZONA_INTERRUPT_STATUS_1_MASK 0xD08
828#define ARIZONA_INTERRUPT_STATUS_2_MASK 0xD09
829#define ARIZONA_INTERRUPT_STATUS_3_MASK 0xD0A
830#define ARIZONA_INTERRUPT_STATUS_4_MASK 0xD0B
831#define ARIZONA_INTERRUPT_STATUS_5_MASK 0xD0C
832#define ARIZONA_INTERRUPT_CONTROL 0xD0F
833#define ARIZONA_IRQ2_STATUS_1 0xD10
834#define ARIZONA_IRQ2_STATUS_2 0xD11
835#define ARIZONA_IRQ2_STATUS_3 0xD12
836#define ARIZONA_IRQ2_STATUS_4 0xD13
837#define ARIZONA_IRQ2_STATUS_5 0xD14
838#define ARIZONA_IRQ2_STATUS_1_MASK 0xD18
839#define ARIZONA_IRQ2_STATUS_2_MASK 0xD19
840#define ARIZONA_IRQ2_STATUS_3_MASK 0xD1A
841#define ARIZONA_IRQ2_STATUS_4_MASK 0xD1B
842#define ARIZONA_IRQ2_STATUS_5_MASK 0xD1C
843#define ARIZONA_IRQ2_CONTROL 0xD1F
844#define ARIZONA_INTERRUPT_RAW_STATUS_2 0xD20
845#define ARIZONA_INTERRUPT_RAW_STATUS_3 0xD21
846#define ARIZONA_INTERRUPT_RAW_STATUS_4 0xD22
847#define ARIZONA_INTERRUPT_RAW_STATUS_5 0xD23
848#define ARIZONA_INTERRUPT_RAW_STATUS_6 0xD24
849#define ARIZONA_INTERRUPT_RAW_STATUS_7 0xD25
850#define ARIZONA_INTERRUPT_RAW_STATUS_8 0xD26
851#define ARIZONA_IRQ_PIN_STATUS 0xD40
852#define ARIZONA_ADSP2_IRQ0 0xD41
853#define ARIZONA_AOD_WKUP_AND_TRIG 0xD50
854#define ARIZONA_AOD_IRQ1 0xD51
855#define ARIZONA_AOD_IRQ2 0xD52
856#define ARIZONA_AOD_IRQ_MASK_IRQ1 0xD53
857#define ARIZONA_AOD_IRQ_MASK_IRQ2 0xD54
858#define ARIZONA_AOD_IRQ_RAW_STATUS 0xD55
859#define ARIZONA_JACK_DETECT_DEBOUNCE 0xD56
860#define ARIZONA_FX_CTRL1 0xE00
861#define ARIZONA_FX_CTRL2 0xE01
862#define ARIZONA_EQ1_1 0xE10
863#define ARIZONA_EQ1_2 0xE11
864#define ARIZONA_EQ1_3 0xE12
865#define ARIZONA_EQ1_4 0xE13
866#define ARIZONA_EQ1_5 0xE14
867#define ARIZONA_EQ1_6 0xE15
868#define ARIZONA_EQ1_7 0xE16
869#define ARIZONA_EQ1_8 0xE17
870#define ARIZONA_EQ1_9 0xE18
871#define ARIZONA_EQ1_10 0xE19
872#define ARIZONA_EQ1_11 0xE1A
873#define ARIZONA_EQ1_12 0xE1B
874#define ARIZONA_EQ1_13 0xE1C
875#define ARIZONA_EQ1_14 0xE1D
876#define ARIZONA_EQ1_15 0xE1E
877#define ARIZONA_EQ1_16 0xE1F
878#define ARIZONA_EQ1_17 0xE20
879#define ARIZONA_EQ1_18 0xE21
880#define ARIZONA_EQ1_19 0xE22
881#define ARIZONA_EQ1_20 0xE23
882#define ARIZONA_EQ1_21 0xE24
883#define ARIZONA_EQ2_1 0xE26
884#define ARIZONA_EQ2_2 0xE27
885#define ARIZONA_EQ2_3 0xE28
886#define ARIZONA_EQ2_4 0xE29
887#define ARIZONA_EQ2_5 0xE2A
888#define ARIZONA_EQ2_6 0xE2B
889#define ARIZONA_EQ2_7 0xE2C
890#define ARIZONA_EQ2_8 0xE2D
891#define ARIZONA_EQ2_9 0xE2E
892#define ARIZONA_EQ2_10 0xE2F
893#define ARIZONA_EQ2_11 0xE30
894#define ARIZONA_EQ2_12 0xE31
895#define ARIZONA_EQ2_13 0xE32
896#define ARIZONA_EQ2_14 0xE33
897#define ARIZONA_EQ2_15 0xE34
898#define ARIZONA_EQ2_16 0xE35
899#define ARIZONA_EQ2_17 0xE36
900#define ARIZONA_EQ2_18 0xE37
901#define ARIZONA_EQ2_19 0xE38
902#define ARIZONA_EQ2_20 0xE39
903#define ARIZONA_EQ2_21 0xE3A
904#define ARIZONA_EQ3_1 0xE3C
905#define ARIZONA_EQ3_2 0xE3D
906#define ARIZONA_EQ3_3 0xE3E
907#define ARIZONA_EQ3_4 0xE3F
908#define ARIZONA_EQ3_5 0xE40
909#define ARIZONA_EQ3_6 0xE41
910#define ARIZONA_EQ3_7 0xE42
911#define ARIZONA_EQ3_8 0xE43
912#define ARIZONA_EQ3_9 0xE44
913#define ARIZONA_EQ3_10 0xE45
914#define ARIZONA_EQ3_11 0xE46
915#define ARIZONA_EQ3_12 0xE47
916#define ARIZONA_EQ3_13 0xE48
917#define ARIZONA_EQ3_14 0xE49
918#define ARIZONA_EQ3_15 0xE4A
919#define ARIZONA_EQ3_16 0xE4B
920#define ARIZONA_EQ3_17 0xE4C
921#define ARIZONA_EQ3_18 0xE4D
922#define ARIZONA_EQ3_19 0xE4E
923#define ARIZONA_EQ3_20 0xE4F
924#define ARIZONA_EQ3_21 0xE50
925#define ARIZONA_EQ4_1 0xE52
926#define ARIZONA_EQ4_2 0xE53
927#define ARIZONA_EQ4_3 0xE54
928#define ARIZONA_EQ4_4 0xE55
929#define ARIZONA_EQ4_5 0xE56
930#define ARIZONA_EQ4_6 0xE57
931#define ARIZONA_EQ4_7 0xE58
932#define ARIZONA_EQ4_8 0xE59
933#define ARIZONA_EQ4_9 0xE5A
934#define ARIZONA_EQ4_10 0xE5B
935#define ARIZONA_EQ4_11 0xE5C
936#define ARIZONA_EQ4_12 0xE5D
937#define ARIZONA_EQ4_13 0xE5E
938#define ARIZONA_EQ4_14 0xE5F
939#define ARIZONA_EQ4_15 0xE60
940#define ARIZONA_EQ4_16 0xE61
941#define ARIZONA_EQ4_17 0xE62
942#define ARIZONA_EQ4_18 0xE63
943#define ARIZONA_EQ4_19 0xE64
944#define ARIZONA_EQ4_20 0xE65
945#define ARIZONA_EQ4_21 0xE66
946#define ARIZONA_DRC1_CTRL1 0xE80
947#define ARIZONA_DRC1_CTRL2 0xE81
948#define ARIZONA_DRC1_CTRL3 0xE82
949#define ARIZONA_DRC1_CTRL4 0xE83
950#define ARIZONA_DRC1_CTRL5 0xE84
951#define ARIZONA_DRC2_CTRL1 0xE89
952#define ARIZONA_DRC2_CTRL2 0xE8A
953#define ARIZONA_DRC2_CTRL3 0xE8B
954#define ARIZONA_DRC2_CTRL4 0xE8C
955#define ARIZONA_DRC2_CTRL5 0xE8D
956#define ARIZONA_HPLPF1_1 0xEC0
957#define ARIZONA_HPLPF1_2 0xEC1
958#define ARIZONA_HPLPF2_1 0xEC4
959#define ARIZONA_HPLPF2_2 0xEC5
960#define ARIZONA_HPLPF3_1 0xEC8
961#define ARIZONA_HPLPF3_2 0xEC9
962#define ARIZONA_HPLPF4_1 0xECC
963#define ARIZONA_HPLPF4_2 0xECD
964#define ARIZONA_ASRC_ENABLE 0xEE0
965#define ARIZONA_ASRC_STATUS 0xEE1
966#define ARIZONA_ASRC_RATE1 0xEE2
967#define ARIZONA_ASRC_RATE2 0xEE3
968#define ARIZONA_ISRC_1_CTRL_1 0xEF0
969#define ARIZONA_ISRC_1_CTRL_2 0xEF1
970#define ARIZONA_ISRC_1_CTRL_3 0xEF2
971#define ARIZONA_ISRC_2_CTRL_1 0xEF3
972#define ARIZONA_ISRC_2_CTRL_2 0xEF4
973#define ARIZONA_ISRC_2_CTRL_3 0xEF5
974#define ARIZONA_ISRC_3_CTRL_1 0xEF6
975#define ARIZONA_ISRC_3_CTRL_2 0xEF7
976#define ARIZONA_ISRC_3_CTRL_3 0xEF8
977#define ARIZONA_CLOCK_CONTROL 0xF00
978#define ARIZONA_ANC_SRC 0xF01
979#define ARIZONA_DSP_STATUS 0xF02
980#define ARIZONA_DSP1_CONTROL_1 0x1100
981#define ARIZONA_DSP1_CLOCKING_1 0x1101
982#define ARIZONA_DSP1_STATUS_1 0x1104
983#define ARIZONA_DSP1_STATUS_2 0x1105
984#define ARIZONA_DSP1_STATUS_3 0x1106
985#define ARIZONA_DSP2_CONTROL_1 0x1200
986#define ARIZONA_DSP2_CLOCKING_1 0x1201
987#define ARIZONA_DSP2_STATUS_1 0x1204
988#define ARIZONA_DSP2_STATUS_2 0x1205
989#define ARIZONA_DSP3_CONTROL_1 0x1300
990#define ARIZONA_DSP3_CLOCKING_1 0x1301
991#define ARIZONA_DSP3_STATUS_1 0x1304
992#define ARIZONA_DSP3_STATUS_2 0x1305
993#define ARIZONA_DSP4_CONTROL_1 0x1400
994#define ARIZONA_DSP4_CLOCKING_1 0x1401
995#define ARIZONA_DSP4_STATUS_1 0x1404
996#define ARIZONA_DSP4_STATUS_2 0x1405
997
998/*
999 * Field Definitions.
1000 */
1001
1002/*
1003 * R0 (0x00) - software reset
1004 */
1005#define ARIZONA_SW_RST_DEV_ID1_MASK 0xFFFF /* SW_RST_DEV_ID1 - [15:0] */
1006#define ARIZONA_SW_RST_DEV_ID1_SHIFT 0 /* SW_RST_DEV_ID1 - [15:0] */
1007#define ARIZONA_SW_RST_DEV_ID1_WIDTH 16 /* SW_RST_DEV_ID1 - [15:0] */
1008
1009/*
1010 * R1 (0x01) - Device Revision
1011 */
1012#define ARIZONA_DEVICE_REVISION_MASK 0x00FF /* DEVICE_REVISION - [7:0] */
1013#define ARIZONA_DEVICE_REVISION_SHIFT 0 /* DEVICE_REVISION - [7:0] */
1014#define ARIZONA_DEVICE_REVISION_WIDTH 8 /* DEVICE_REVISION - [7:0] */
1015
1016/*
1017 * R8 (0x08) - Ctrl IF SPI CFG 1
1018 */
1019#define ARIZONA_SPI_CFG 0x0010 /* SPI_CFG */
1020#define ARIZONA_SPI_CFG_MASK 0x0010 /* SPI_CFG */
1021#define ARIZONA_SPI_CFG_SHIFT 4 /* SPI_CFG */
1022#define ARIZONA_SPI_CFG_WIDTH 1 /* SPI_CFG */
1023#define ARIZONA_SPI_4WIRE 0x0008 /* SPI_4WIRE */
1024#define ARIZONA_SPI_4WIRE_MASK 0x0008 /* SPI_4WIRE */
1025#define ARIZONA_SPI_4WIRE_SHIFT 3 /* SPI_4WIRE */
1026#define ARIZONA_SPI_4WIRE_WIDTH 1 /* SPI_4WIRE */
1027#define ARIZONA_SPI_AUTO_INC_MASK 0x0003 /* SPI_AUTO_INC - [1:0] */
1028#define ARIZONA_SPI_AUTO_INC_SHIFT 0 /* SPI_AUTO_INC - [1:0] */
1029#define ARIZONA_SPI_AUTO_INC_WIDTH 2 /* SPI_AUTO_INC - [1:0] */
1030
1031/*
1032 * R9 (0x09) - Ctrl IF I2C1 CFG 1
1033 */
1034#define ARIZONA_I2C1_AUTO_INC_MASK 0x0003 /* I2C1_AUTO_INC - [1:0] */
1035#define ARIZONA_I2C1_AUTO_INC_SHIFT 0 /* I2C1_AUTO_INC - [1:0] */
1036#define ARIZONA_I2C1_AUTO_INC_WIDTH 2 /* I2C1_AUTO_INC - [1:0] */
1037
1038/*
1039 * R13 (0x0D) - Ctrl IF Status 1
1040 */
1041#define ARIZONA_I2C1_BUSY 0x0020 /* I2C1_BUSY */
1042#define ARIZONA_I2C1_BUSY_MASK 0x0020 /* I2C1_BUSY */
1043#define ARIZONA_I2C1_BUSY_SHIFT 5 /* I2C1_BUSY */
1044#define ARIZONA_I2C1_BUSY_WIDTH 1 /* I2C1_BUSY */
1045#define ARIZONA_SPI_BUSY 0x0010 /* SPI_BUSY */
1046#define ARIZONA_SPI_BUSY_MASK 0x0010 /* SPI_BUSY */
1047#define ARIZONA_SPI_BUSY_SHIFT 4 /* SPI_BUSY */
1048#define ARIZONA_SPI_BUSY_WIDTH 1 /* SPI_BUSY */
1049
1050/*
1051 * R22 (0x16) - Write Sequencer Ctrl 0
1052 */
1053#define ARIZONA_WSEQ_ABORT 0x0800 /* WSEQ_ABORT */
1054#define ARIZONA_WSEQ_ABORT_MASK 0x0800 /* WSEQ_ABORT */
1055#define ARIZONA_WSEQ_ABORT_SHIFT 11 /* WSEQ_ABORT */
1056#define ARIZONA_WSEQ_ABORT_WIDTH 1 /* WSEQ_ABORT */
1057#define ARIZONA_WSEQ_START 0x0400 /* WSEQ_START */
1058#define ARIZONA_WSEQ_START_MASK 0x0400 /* WSEQ_START */
1059#define ARIZONA_WSEQ_START_SHIFT 10 /* WSEQ_START */
1060#define ARIZONA_WSEQ_START_WIDTH 1 /* WSEQ_START */
1061#define ARIZONA_WSEQ_ENA 0x0200 /* WSEQ_ENA */
1062#define ARIZONA_WSEQ_ENA_MASK 0x0200 /* WSEQ_ENA */
1063#define ARIZONA_WSEQ_ENA_SHIFT 9 /* WSEQ_ENA */
1064#define ARIZONA_WSEQ_ENA_WIDTH 1 /* WSEQ_ENA */
1065#define ARIZONA_WSEQ_START_INDEX_MASK 0x01FF /* WSEQ_START_INDEX - [8:0] */
1066#define ARIZONA_WSEQ_START_INDEX_SHIFT 0 /* WSEQ_START_INDEX - [8:0] */
1067#define ARIZONA_WSEQ_START_INDEX_WIDTH 9 /* WSEQ_START_INDEX - [8:0] */
1068
1069/*
1070 * R23 (0x17) - Write Sequencer Ctrl 1
1071 */
1072#define ARIZONA_WSEQ_BUSY 0x0200 /* WSEQ_BUSY */
1073#define ARIZONA_WSEQ_BUSY_MASK 0x0200 /* WSEQ_BUSY */
1074#define ARIZONA_WSEQ_BUSY_SHIFT 9 /* WSEQ_BUSY */
1075#define ARIZONA_WSEQ_BUSY_WIDTH 1 /* WSEQ_BUSY */
1076#define ARIZONA_WSEQ_CURRENT_INDEX_MASK 0x01FF /* WSEQ_CURRENT_INDEX - [8:0] */
1077#define ARIZONA_WSEQ_CURRENT_INDEX_SHIFT 0 /* WSEQ_CURRENT_INDEX - [8:0] */
1078#define ARIZONA_WSEQ_CURRENT_INDEX_WIDTH 9 /* WSEQ_CURRENT_INDEX - [8:0] */
1079
1080/*
1081 * R24 (0x18) - Write Sequencer Ctrl 2
1082 */
1083#define ARIZONA_LOAD_DEFAULTS 0x0002 /* LOAD_DEFAULTS */
1084#define ARIZONA_LOAD_DEFAULTS_MASK 0x0002 /* LOAD_DEFAULTS */
1085#define ARIZONA_LOAD_DEFAULTS_SHIFT 1 /* LOAD_DEFAULTS */
1086#define ARIZONA_LOAD_DEFAULTS_WIDTH 1 /* LOAD_DEFAULTS */
1087#define ARIZONA_WSEQ_LOAD_MEM 0x0001 /* WSEQ_LOAD_MEM */
1088#define ARIZONA_WSEQ_LOAD_MEM_MASK 0x0001 /* WSEQ_LOAD_MEM */
1089#define ARIZONA_WSEQ_LOAD_MEM_SHIFT 0 /* WSEQ_LOAD_MEM */
1090#define ARIZONA_WSEQ_LOAD_MEM_WIDTH 1 /* WSEQ_LOAD_MEM */
1091
1092/*
1093 * R26 (0x1A) - Write Sequencer PROM
1094 */
1095#define ARIZONA_WSEQ_OTP_WRITE 0x0001 /* WSEQ_OTP_WRITE */
1096#define ARIZONA_WSEQ_OTP_WRITE_MASK 0x0001 /* WSEQ_OTP_WRITE */
1097#define ARIZONA_WSEQ_OTP_WRITE_SHIFT 0 /* WSEQ_OTP_WRITE */
1098#define ARIZONA_WSEQ_OTP_WRITE_WIDTH 1 /* WSEQ_OTP_WRITE */
1099
1100/*
1101 * R32 (0x20) - Tone Generator 1
1102 */
1103#define ARIZONA_TONE_RATE_MASK 0x7800 /* TONE_RATE - [14:11] */
1104#define ARIZONA_TONE_RATE_SHIFT 11 /* TONE_RATE - [14:11] */
1105#define ARIZONA_TONE_RATE_WIDTH 4 /* TONE_RATE - [14:11] */
1106#define ARIZONA_TONE_OFFSET_MASK 0x0300 /* TONE_OFFSET - [9:8] */
1107#define ARIZONA_TONE_OFFSET_SHIFT 8 /* TONE_OFFSET - [9:8] */
1108#define ARIZONA_TONE_OFFSET_WIDTH 2 /* TONE_OFFSET - [9:8] */
1109#define ARIZONA_TONE2_OVD 0x0020 /* TONE2_OVD */
1110#define ARIZONA_TONE2_OVD_MASK 0x0020 /* TONE2_OVD */
1111#define ARIZONA_TONE2_OVD_SHIFT 5 /* TONE2_OVD */
1112#define ARIZONA_TONE2_OVD_WIDTH 1 /* TONE2_OVD */
1113#define ARIZONA_TONE1_OVD 0x0010 /* TONE1_OVD */
1114#define ARIZONA_TONE1_OVD_MASK 0x0010 /* TONE1_OVD */
1115#define ARIZONA_TONE1_OVD_SHIFT 4 /* TONE1_OVD */
1116#define ARIZONA_TONE1_OVD_WIDTH 1 /* TONE1_OVD */
1117#define ARIZONA_TONE2_ENA 0x0002 /* TONE2_ENA */
1118#define ARIZONA_TONE2_ENA_MASK 0x0002 /* TONE2_ENA */
1119#define ARIZONA_TONE2_ENA_SHIFT 1 /* TONE2_ENA */
1120#define ARIZONA_TONE2_ENA_WIDTH 1 /* TONE2_ENA */
1121#define ARIZONA_TONE1_ENA 0x0001 /* TONE1_ENA */
1122#define ARIZONA_TONE1_ENA_MASK 0x0001 /* TONE1_ENA */
1123#define ARIZONA_TONE1_ENA_SHIFT 0 /* TONE1_ENA */
1124#define ARIZONA_TONE1_ENA_WIDTH 1 /* TONE1_ENA */
1125
1126/*
1127 * R33 (0x21) - Tone Generator 2
1128 */
1129#define ARIZONA_TONE1_LVL_0_MASK 0xFFFF /* TONE1_LVL - [15:0] */
1130#define ARIZONA_TONE1_LVL_0_SHIFT 0 /* TONE1_LVL - [15:0] */
1131#define ARIZONA_TONE1_LVL_0_WIDTH 16 /* TONE1_LVL - [15:0] */
1132
1133/*
1134 * R34 (0x22) - Tone Generator 3
1135 */
1136#define ARIZONA_TONE1_LVL_MASK 0x00FF /* TONE1_LVL - [7:0] */
1137#define ARIZONA_TONE1_LVL_SHIFT 0 /* TONE1_LVL - [7:0] */
1138#define ARIZONA_TONE1_LVL_WIDTH 8 /* TONE1_LVL - [7:0] */
1139
1140/*
1141 * R35 (0x23) - Tone Generator 4
1142 */
1143#define ARIZONA_TONE2_LVL_0_MASK 0xFFFF /* TONE2_LVL - [15:0] */
1144#define ARIZONA_TONE2_LVL_0_SHIFT 0 /* TONE2_LVL - [15:0] */
1145#define ARIZONA_TONE2_LVL_0_WIDTH 16 /* TONE2_LVL - [15:0] */
1146
1147/*
1148 * R36 (0x24) - Tone Generator 5
1149 */
1150#define ARIZONA_TONE2_LVL_MASK 0x00FF /* TONE2_LVL - [7:0] */
1151#define ARIZONA_TONE2_LVL_SHIFT 0 /* TONE2_LVL - [7:0] */
1152#define ARIZONA_TONE2_LVL_WIDTH 8 /* TONE2_LVL - [7:0] */
1153
1154/*
1155 * R48 (0x30) - PWM Drive 1
1156 */
1157#define ARIZONA_PWM_RATE_MASK 0x7800 /* PWM_RATE - [14:11] */
1158#define ARIZONA_PWM_RATE_SHIFT 11 /* PWM_RATE - [14:11] */
1159#define ARIZONA_PWM_RATE_WIDTH 4 /* PWM_RATE - [14:11] */
1160#define ARIZONA_PWM_CLK_SEL_MASK 0x0700 /* PWM_CLK_SEL - [10:8] */
1161#define ARIZONA_PWM_CLK_SEL_SHIFT 8 /* PWM_CLK_SEL - [10:8] */
1162#define ARIZONA_PWM_CLK_SEL_WIDTH 3 /* PWM_CLK_SEL - [10:8] */
1163#define ARIZONA_PWM2_OVD 0x0020 /* PWM2_OVD */
1164#define ARIZONA_PWM2_OVD_MASK 0x0020 /* PWM2_OVD */
1165#define ARIZONA_PWM2_OVD_SHIFT 5 /* PWM2_OVD */
1166#define ARIZONA_PWM2_OVD_WIDTH 1 /* PWM2_OVD */
1167#define ARIZONA_PWM1_OVD 0x0010 /* PWM1_OVD */
1168#define ARIZONA_PWM1_OVD_MASK 0x0010 /* PWM1_OVD */
1169#define ARIZONA_PWM1_OVD_SHIFT 4 /* PWM1_OVD */
1170#define ARIZONA_PWM1_OVD_WIDTH 1 /* PWM1_OVD */
1171#define ARIZONA_PWM2_ENA 0x0002 /* PWM2_ENA */
1172#define ARIZONA_PWM2_ENA_MASK 0x0002 /* PWM2_ENA */
1173#define ARIZONA_PWM2_ENA_SHIFT 1 /* PWM2_ENA */
1174#define ARIZONA_PWM2_ENA_WIDTH 1 /* PWM2_ENA */
1175#define ARIZONA_PWM1_ENA 0x0001 /* PWM1_ENA */
1176#define ARIZONA_PWM1_ENA_MASK 0x0001 /* PWM1_ENA */
1177#define ARIZONA_PWM1_ENA_SHIFT 0 /* PWM1_ENA */
1178#define ARIZONA_PWM1_ENA_WIDTH 1 /* PWM1_ENA */
1179
1180/*
1181 * R49 (0x31) - PWM Drive 2
1182 */
1183#define ARIZONA_PWM1_LVL_MASK 0x03FF /* PWM1_LVL - [9:0] */
1184#define ARIZONA_PWM1_LVL_SHIFT 0 /* PWM1_LVL - [9:0] */
1185#define ARIZONA_PWM1_LVL_WIDTH 10 /* PWM1_LVL - [9:0] */
1186
1187/*
1188 * R50 (0x32) - PWM Drive 3
1189 */
1190#define ARIZONA_PWM2_LVL_MASK 0x03FF /* PWM2_LVL - [9:0] */
1191#define ARIZONA_PWM2_LVL_SHIFT 0 /* PWM2_LVL - [9:0] */
1192#define ARIZONA_PWM2_LVL_WIDTH 10 /* PWM2_LVL - [9:0] */
1193
1194/*
1195 * R64 (0x40) - Wake control
1196 */
1197#define ARIZONA_WKUP_GP5_FALL 0x0020 /* WKUP_GP5_FALL */
1198#define ARIZONA_WKUP_GP5_FALL_MASK 0x0020 /* WKUP_GP5_FALL */
1199#define ARIZONA_WKUP_GP5_FALL_SHIFT 5 /* WKUP_GP5_FALL */
1200#define ARIZONA_WKUP_GP5_FALL_WIDTH 1 /* WKUP_GP5_FALL */
1201#define ARIZONA_WKUP_GP5_RISE 0x0010 /* WKUP_GP5_RISE */
1202#define ARIZONA_WKUP_GP5_RISE_MASK 0x0010 /* WKUP_GP5_RISE */
1203#define ARIZONA_WKUP_GP5_RISE_SHIFT 4 /* WKUP_GP5_RISE */
1204#define ARIZONA_WKUP_GP5_RISE_WIDTH 1 /* WKUP_GP5_RISE */
1205#define ARIZONA_WKUP_JD1_FALL 0x0008 /* WKUP_JD1_FALL */
1206#define ARIZONA_WKUP_JD1_FALL_MASK 0x0008 /* WKUP_JD1_FALL */
1207#define ARIZONA_WKUP_JD1_FALL_SHIFT 3 /* WKUP_JD1_FALL */
1208#define ARIZONA_WKUP_JD1_FALL_WIDTH 1 /* WKUP_JD1_FALL */
1209#define ARIZONA_WKUP_JD1_RISE 0x0004 /* WKUP_JD1_RISE */
1210#define ARIZONA_WKUP_JD1_RISE_MASK 0x0004 /* WKUP_JD1_RISE */
1211#define ARIZONA_WKUP_JD1_RISE_SHIFT 2 /* WKUP_JD1_RISE */
1212#define ARIZONA_WKUP_JD1_RISE_WIDTH 1 /* WKUP_JD1_RISE */
1213#define ARIZONA_WKUP_JD2_FALL 0x0002 /* WKUP_JD2_FALL */
1214#define ARIZONA_WKUP_JD2_FALL_MASK 0x0002 /* WKUP_JD2_FALL */
1215#define ARIZONA_WKUP_JD2_FALL_SHIFT 1 /* WKUP_JD2_FALL */
1216#define ARIZONA_WKUP_JD2_FALL_WIDTH 1 /* WKUP_JD2_FALL */
1217#define ARIZONA_WKUP_JD2_RISE 0x0001 /* WKUP_JD2_RISE */
1218#define ARIZONA_WKUP_JD2_RISE_MASK 0x0001 /* WKUP_JD2_RISE */
1219#define ARIZONA_WKUP_JD2_RISE_SHIFT 0 /* WKUP_JD2_RISE */
1220#define ARIZONA_WKUP_JD2_RISE_WIDTH 1 /* WKUP_JD2_RISE */
1221
1222/*
1223 * R65 (0x41) - Sequence control
1224 */
1225#define ARIZONA_WSEQ_ENA_GP5_FALL 0x0020 /* WSEQ_ENA_GP5_FALL */
1226#define ARIZONA_WSEQ_ENA_GP5_FALL_MASK 0x0020 /* WSEQ_ENA_GP5_FALL */
1227#define ARIZONA_WSEQ_ENA_GP5_FALL_SHIFT 5 /* WSEQ_ENA_GP5_FALL */
1228#define ARIZONA_WSEQ_ENA_GP5_FALL_WIDTH 1 /* WSEQ_ENA_GP5_FALL */
1229#define ARIZONA_WSEQ_ENA_GP5_RISE 0x0010 /* WSEQ_ENA_GP5_RISE */
1230#define ARIZONA_WSEQ_ENA_GP5_RISE_MASK 0x0010 /* WSEQ_ENA_GP5_RISE */
1231#define ARIZONA_WSEQ_ENA_GP5_RISE_SHIFT 4 /* WSEQ_ENA_GP5_RISE */
1232#define ARIZONA_WSEQ_ENA_GP5_RISE_WIDTH 1 /* WSEQ_ENA_GP5_RISE */
1233#define ARIZONA_WSEQ_ENA_JD1_FALL 0x0008 /* WSEQ_ENA_JD1_FALL */
1234#define ARIZONA_WSEQ_ENA_JD1_FALL_MASK 0x0008 /* WSEQ_ENA_JD1_FALL */
1235#define ARIZONA_WSEQ_ENA_JD1_FALL_SHIFT 3 /* WSEQ_ENA_JD1_FALL */
1236#define ARIZONA_WSEQ_ENA_JD1_FALL_WIDTH 1 /* WSEQ_ENA_JD1_FALL */
1237#define ARIZONA_WSEQ_ENA_JD1_RISE 0x0004 /* WSEQ_ENA_JD1_RISE */
1238#define ARIZONA_WSEQ_ENA_JD1_RISE_MASK 0x0004 /* WSEQ_ENA_JD1_RISE */
1239#define ARIZONA_WSEQ_ENA_JD1_RISE_SHIFT 2 /* WSEQ_ENA_JD1_RISE */
1240#define ARIZONA_WSEQ_ENA_JD1_RISE_WIDTH 1 /* WSEQ_ENA_JD1_RISE */
1241#define ARIZONA_WSEQ_ENA_JD2_FALL 0x0002 /* WSEQ_ENA_JD2_FALL */
1242#define ARIZONA_WSEQ_ENA_JD2_FALL_MASK 0x0002 /* WSEQ_ENA_JD2_FALL */
1243#define ARIZONA_WSEQ_ENA_JD2_FALL_SHIFT 1 /* WSEQ_ENA_JD2_FALL */
1244#define ARIZONA_WSEQ_ENA_JD2_FALL_WIDTH 1 /* WSEQ_ENA_JD2_FALL */
1245#define ARIZONA_WSEQ_ENA_JD2_RISE 0x0001 /* WSEQ_ENA_JD2_RISE */
1246#define ARIZONA_WSEQ_ENA_JD2_RISE_MASK 0x0001 /* WSEQ_ENA_JD2_RISE */
1247#define ARIZONA_WSEQ_ENA_JD2_RISE_SHIFT 0 /* WSEQ_ENA_JD2_RISE */
1248#define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH 1 /* WSEQ_ENA_JD2_RISE */
1249
1250/*
1251 * R97 (0x61) - Sample Rate Sequence Select 1
1252 */
1253#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */
1254#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */
1255#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */
1256
1257/*
1258 * R98 (0x62) - Sample Rate Sequence Select 2
1259 */
1260#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR - [8:0] */
1261#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR - [8:0] */
1262#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR - [8:0] */
1263
1264/*
1265 * R99 (0x63) - Sample Rate Sequence Select 3
1266 */
1267#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR - [8:0] */
1268#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR - [8:0] */
1269#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR - [8:0] */
1270
1271/*
1272 * R100 (0x64) - Sample Rate Sequence Select 4
1273 */
1274#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR - [8:0] */
1275#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR - [8:0] */
1276#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR - [8:0] */
1277
1278/*
1279 * R104 (0x68) - Always On Triggers Sequence Select 1
1280 */
1281#define ARIZONA_WSEQ_GP5_RISE_SEQ_ADDR_MASK 0x01FF /* WSEQ_GP5_RISE_SEQ_ADDR - [8:0] */
1282#define ARIZONA_WSEQ_GP5_RISE_SEQ_ADDR_SHIFT 0 /* WSEQ_GP5_RISE_SEQ_ADDR - [8:0] */
1283#define ARIZONA_WSEQ_GP5_RISE_SEQ_ADDR_WIDTH 9 /* WSEQ_GP5_RISE_SEQ_ADDR - [8:0] */
1284
1285/*
1286 * R105 (0x69) - Always On Triggers Sequence Select 2
1287 */
1288#define ARIZONA_WSEQ_GP5_FALL_SEQ_ADDR_MASK 0x01FF /* WSEQ_GP5_FALL_SEQ_ADDR - [8:0] */
1289#define ARIZONA_WSEQ_GP5_FALL_SEQ_ADDR_SHIFT 0 /* WSEQ_GP5_FALL_SEQ_ADDR - [8:0] */
1290#define ARIZONA_WSEQ_GP5_FALL_SEQ_ADDR_WIDTH 9 /* WSEQ_GP5_FALL_SEQ_ADDR - [8:0] */
1291
1292/*
1293 * R106 (0x6A) - Always On Triggers Sequence Select 3
1294 */
1295#define ARIZONA_WSEQ_JD1_RISE_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD1_RISE_SEQ_ADDR - [8:0] */
1296#define ARIZONA_WSEQ_JD1_RISE_SEQ_ADDR_SHIFT 0 /* WSEQ_JD1_RISE_SEQ_ADDR - [8:0] */
1297#define ARIZONA_WSEQ_JD1_RISE_SEQ_ADDR_WIDTH 9 /* WSEQ_JD1_RISE_SEQ_ADDR - [8:0] */
1298
1299/*
1300 * R107 (0x6B) - Always On Triggers Sequence Select 4
1301 */
1302#define ARIZONA_WSEQ_JD1_FALL_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD1_FALL_SEQ_ADDR - [8:0] */
1303#define ARIZONA_WSEQ_JD1_FALL_SEQ_ADDR_SHIFT 0 /* WSEQ_JD1_FALL_SEQ_ADDR - [8:0] */
1304#define ARIZONA_WSEQ_JD1_FALL_SEQ_ADDR_WIDTH 9 /* WSEQ_JD1_FALL_SEQ_ADDR - [8:0] */
1305
1306/*
1307 * R108 (0x6C) - Always On Triggers Sequence Select 5
1308 */
1309#define ARIZONA_WSEQ_JD2_RISE_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD2_RISE_SEQ_ADDR - [8:0] */
1310#define ARIZONA_WSEQ_JD2_RISE_SEQ_ADDR_SHIFT 0 /* WSEQ_JD2_RISE_SEQ_ADDR - [8:0] */
1311#define ARIZONA_WSEQ_JD2_RISE_SEQ_ADDR_WIDTH 9 /* WSEQ_JD2_RISE_SEQ_ADDR - [8:0] */
1312
1313/*
1314 * R109 (0x6D) - Always On Triggers Sequence Select 6
1315 */
1316#define ARIZONA_WSEQ_JD2_FALL_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD2_FALL_SEQ_ADDR - [8:0] */
1317#define ARIZONA_WSEQ_JD2_FALL_SEQ_ADDR_SHIFT 0 /* WSEQ_JD2_FALL_SEQ_ADDR - [8:0] */
1318#define ARIZONA_WSEQ_JD2_FALL_SEQ_ADDR_WIDTH 9 /* WSEQ_JD2_FALL_SEQ_ADDR - [8:0] */
1319
1320/*
1321 * R112 (0x70) - Comfort Noise Generator
1322 */
1323#define ARIZONA_NOISE_GEN_RATE_MASK 0x7800 /* NOISE_GEN_RATE - [14:11] */
1324#define ARIZONA_NOISE_GEN_RATE_SHIFT 11 /* NOISE_GEN_RATE - [14:11] */
1325#define ARIZONA_NOISE_GEN_RATE_WIDTH 4 /* NOISE_GEN_RATE - [14:11] */
1326#define ARIZONA_NOISE_GEN_ENA 0x0020 /* NOISE_GEN_ENA */
1327#define ARIZONA_NOISE_GEN_ENA_MASK 0x0020 /* NOISE_GEN_ENA */
1328#define ARIZONA_NOISE_GEN_ENA_SHIFT 5 /* NOISE_GEN_ENA */
1329#define ARIZONA_NOISE_GEN_ENA_WIDTH 1 /* NOISE_GEN_ENA */
1330#define ARIZONA_NOISE_GEN_GAIN_MASK 0x001F /* NOISE_GEN_GAIN - [4:0] */
1331#define ARIZONA_NOISE_GEN_GAIN_SHIFT 0 /* NOISE_GEN_GAIN - [4:0] */
1332#define ARIZONA_NOISE_GEN_GAIN_WIDTH 5 /* NOISE_GEN_GAIN - [4:0] */
1333
1334/*
1335 * R144 (0x90) - Haptics Control 1
1336 */
1337#define ARIZONA_HAP_RATE_MASK 0x7800 /* HAP_RATE - [14:11] */
1338#define ARIZONA_HAP_RATE_SHIFT 11 /* HAP_RATE - [14:11] */
1339#define ARIZONA_HAP_RATE_WIDTH 4 /* HAP_RATE - [14:11] */
1340#define ARIZONA_ONESHOT_TRIG 0x0010 /* ONESHOT_TRIG */
1341#define ARIZONA_ONESHOT_TRIG_MASK 0x0010 /* ONESHOT_TRIG */
1342#define ARIZONA_ONESHOT_TRIG_SHIFT 4 /* ONESHOT_TRIG */
1343#define ARIZONA_ONESHOT_TRIG_WIDTH 1 /* ONESHOT_TRIG */
1344#define ARIZONA_HAP_CTRL_MASK 0x000C /* HAP_CTRL - [3:2] */
1345#define ARIZONA_HAP_CTRL_SHIFT 2 /* HAP_CTRL - [3:2] */
1346#define ARIZONA_HAP_CTRL_WIDTH 2 /* HAP_CTRL - [3:2] */
1347#define ARIZONA_HAP_ACT 0x0002 /* HAP_ACT */
1348#define ARIZONA_HAP_ACT_MASK 0x0002 /* HAP_ACT */
1349#define ARIZONA_HAP_ACT_SHIFT 1 /* HAP_ACT */
1350#define ARIZONA_HAP_ACT_WIDTH 1 /* HAP_ACT */
1351
1352/*
1353 * R145 (0x91) - Haptics Control 2
1354 */
1355#define ARIZONA_LRA_FREQ_MASK 0x7FFF /* LRA_FREQ - [14:0] */
1356#define ARIZONA_LRA_FREQ_SHIFT 0 /* LRA_FREQ - [14:0] */
1357#define ARIZONA_LRA_FREQ_WIDTH 15 /* LRA_FREQ - [14:0] */
1358
1359/*
1360 * R146 (0x92) - Haptics phase 1 intensity
1361 */
1362#define ARIZONA_PHASE1_INTENSITY_MASK 0x00FF /* PHASE1_INTENSITY - [7:0] */
1363#define ARIZONA_PHASE1_INTENSITY_SHIFT 0 /* PHASE1_INTENSITY - [7:0] */
1364#define ARIZONA_PHASE1_INTENSITY_WIDTH 8 /* PHASE1_INTENSITY - [7:0] */
1365
1366/*
1367 * R147 (0x93) - Haptics phase 1 duration
1368 */
1369#define ARIZONA_PHASE1_DURATION_MASK 0x01FF /* PHASE1_DURATION - [8:0] */
1370#define ARIZONA_PHASE1_DURATION_SHIFT 0 /* PHASE1_DURATION - [8:0] */
1371#define ARIZONA_PHASE1_DURATION_WIDTH 9 /* PHASE1_DURATION - [8:0] */
1372
1373/*
1374 * R148 (0x94) - Haptics phase 2 intensity
1375 */
1376#define ARIZONA_PHASE2_INTENSITY_MASK 0x00FF /* PHASE2_INTENSITY - [7:0] */
1377#define ARIZONA_PHASE2_INTENSITY_SHIFT 0 /* PHASE2_INTENSITY - [7:0] */
1378#define ARIZONA_PHASE2_INTENSITY_WIDTH 8 /* PHASE2_INTENSITY - [7:0] */
1379
1380/*
1381 * R149 (0x95) - Haptics phase 2 duration
1382 */
1383#define ARIZONA_PHASE2_DURATION_MASK 0x07FF /* PHASE2_DURATION - [10:0] */
1384#define ARIZONA_PHASE2_DURATION_SHIFT 0 /* PHASE2_DURATION - [10:0] */
1385#define ARIZONA_PHASE2_DURATION_WIDTH 11 /* PHASE2_DURATION - [10:0] */
1386
1387/*
1388 * R150 (0x96) - Haptics phase 3 intensity
1389 */
1390#define ARIZONA_PHASE3_INTENSITY_MASK 0x00FF /* PHASE3_INTENSITY - [7:0] */
1391#define ARIZONA_PHASE3_INTENSITY_SHIFT 0 /* PHASE3_INTENSITY - [7:0] */
1392#define ARIZONA_PHASE3_INTENSITY_WIDTH 8 /* PHASE3_INTENSITY - [7:0] */
1393
1394/*
1395 * R151 (0x97) - Haptics phase 3 duration
1396 */
1397#define ARIZONA_PHASE3_DURATION_MASK 0x01FF /* PHASE3_DURATION - [8:0] */
1398#define ARIZONA_PHASE3_DURATION_SHIFT 0 /* PHASE3_DURATION - [8:0] */
1399#define ARIZONA_PHASE3_DURATION_WIDTH 9 /* PHASE3_DURATION - [8:0] */
1400
1401/*
1402 * R152 (0x98) - Haptics Status
1403 */
1404#define ARIZONA_ONESHOT_STS 0x0001 /* ONESHOT_STS */
1405#define ARIZONA_ONESHOT_STS_MASK 0x0001 /* ONESHOT_STS */
1406#define ARIZONA_ONESHOT_STS_SHIFT 0 /* ONESHOT_STS */
1407#define ARIZONA_ONESHOT_STS_WIDTH 1 /* ONESHOT_STS */
1408
1409/*
1410 * R256 (0x100) - Clock 32k 1
1411 */
1412#define ARIZONA_CLK_32K_ENA 0x0040 /* CLK_32K_ENA */
1413#define ARIZONA_CLK_32K_ENA_MASK 0x0040 /* CLK_32K_ENA */
1414#define ARIZONA_CLK_32K_ENA_SHIFT 6 /* CLK_32K_ENA */
1415#define ARIZONA_CLK_32K_ENA_WIDTH 1 /* CLK_32K_ENA */
1416#define ARIZONA_CLK_32K_SRC_MASK 0x0003 /* CLK_32K_SRC - [1:0] */
1417#define ARIZONA_CLK_32K_SRC_SHIFT 0 /* CLK_32K_SRC - [1:0] */
1418#define ARIZONA_CLK_32K_SRC_WIDTH 2 /* CLK_32K_SRC - [1:0] */
1419
1420/*
1421 * R257 (0x101) - System Clock 1
1422 */
1423#define ARIZONA_SYSCLK_FRAC 0x8000 /* SYSCLK_FRAC */
1424#define ARIZONA_SYSCLK_FRAC_MASK 0x8000 /* SYSCLK_FRAC */
1425#define ARIZONA_SYSCLK_FRAC_SHIFT 15 /* SYSCLK_FRAC */
1426#define ARIZONA_SYSCLK_FRAC_WIDTH 1 /* SYSCLK_FRAC */
1427#define ARIZONA_SYSCLK_FREQ_MASK 0x0700 /* SYSCLK_FREQ - [10:8] */
1428#define ARIZONA_SYSCLK_FREQ_SHIFT 8 /* SYSCLK_FREQ - [10:8] */
1429#define ARIZONA_SYSCLK_FREQ_WIDTH 3 /* SYSCLK_FREQ - [10:8] */
1430#define ARIZONA_SYSCLK_ENA 0x0040 /* SYSCLK_ENA */
1431#define ARIZONA_SYSCLK_ENA_MASK 0x0040 /* SYSCLK_ENA */
1432#define ARIZONA_SYSCLK_ENA_SHIFT 6 /* SYSCLK_ENA */
1433#define ARIZONA_SYSCLK_ENA_WIDTH 1 /* SYSCLK_ENA */
1434#define ARIZONA_SYSCLK_SRC_MASK 0x000F /* SYSCLK_SRC - [3:0] */
1435#define ARIZONA_SYSCLK_SRC_SHIFT 0 /* SYSCLK_SRC - [3:0] */
1436#define ARIZONA_SYSCLK_SRC_WIDTH 4 /* SYSCLK_SRC - [3:0] */
1437
1438/*
1439 * R258 (0x102) - Sample rate 1
1440 */
1441#define ARIZONA_SAMPLE_RATE_1_MASK 0x001F /* SAMPLE_RATE_1 - [4:0] */
1442#define ARIZONA_SAMPLE_RATE_1_SHIFT 0 /* SAMPLE_RATE_1 - [4:0] */
1443#define ARIZONA_SAMPLE_RATE_1_WIDTH 5 /* SAMPLE_RATE_1 - [4:0] */
1444
1445/*
1446 * R259 (0x103) - Sample rate 2
1447 */
1448#define ARIZONA_SAMPLE_RATE_2_MASK 0x001F /* SAMPLE_RATE_2 - [4:0] */
1449#define ARIZONA_SAMPLE_RATE_2_SHIFT 0 /* SAMPLE_RATE_2 - [4:0] */
1450#define ARIZONA_SAMPLE_RATE_2_WIDTH 5 /* SAMPLE_RATE_2 - [4:0] */
1451
1452/*
1453 * R260 (0x104) - Sample rate 3
1454 */
1455#define ARIZONA_SAMPLE_RATE_3_MASK 0x001F /* SAMPLE_RATE_3 - [4:0] */
1456#define ARIZONA_SAMPLE_RATE_3_SHIFT 0 /* SAMPLE_RATE_3 - [4:0] */
1457#define ARIZONA_SAMPLE_RATE_3_WIDTH 5 /* SAMPLE_RATE_3 - [4:0] */
1458
1459/*
1460 * R266 (0x10A) - Sample rate 1 status
1461 */
1462#define ARIZONA_SAMPLE_RATE_1_STS_MASK 0x001F /* SAMPLE_RATE_1_STS - [4:0] */
1463#define ARIZONA_SAMPLE_RATE_1_STS_SHIFT 0 /* SAMPLE_RATE_1_STS - [4:0] */
1464#define ARIZONA_SAMPLE_RATE_1_STS_WIDTH 5 /* SAMPLE_RATE_1_STS - [4:0] */
1465
1466/*
1467 * R267 (0x10B) - Sample rate 2 status
1468 */
1469#define ARIZONA_SAMPLE_RATE_2_STS_MASK 0x001F /* SAMPLE_RATE_2_STS - [4:0] */
1470#define ARIZONA_SAMPLE_RATE_2_STS_SHIFT 0 /* SAMPLE_RATE_2_STS - [4:0] */
1471#define ARIZONA_SAMPLE_RATE_2_STS_WIDTH 5 /* SAMPLE_RATE_2_STS - [4:0] */
1472
1473/*
1474 * R268 (0x10C) - Sample rate 3 status
1475 */
1476#define ARIZONA_SAMPLE_RATE_3_STS_MASK 0x001F /* SAMPLE_RATE_3_STS - [4:0] */
1477#define ARIZONA_SAMPLE_RATE_3_STS_SHIFT 0 /* SAMPLE_RATE_3_STS - [4:0] */
1478#define ARIZONA_SAMPLE_RATE_3_STS_WIDTH 5 /* SAMPLE_RATE_3_STS - [4:0] */
1479
1480/*
1481 * R274 (0x112) - Async clock 1
1482 */
1483#define ARIZONA_ASYNC_CLK_FREQ_MASK 0x0700 /* ASYNC_CLK_FREQ - [10:8] */
1484#define ARIZONA_ASYNC_CLK_FREQ_SHIFT 8 /* ASYNC_CLK_FREQ - [10:8] */
1485#define ARIZONA_ASYNC_CLK_FREQ_WIDTH 3 /* ASYNC_CLK_FREQ - [10:8] */
1486#define ARIZONA_ASYNC_CLK_ENA 0x0040 /* ASYNC_CLK_ENA */
1487#define ARIZONA_ASYNC_CLK_ENA_MASK 0x0040 /* ASYNC_CLK_ENA */
1488#define ARIZONA_ASYNC_CLK_ENA_SHIFT 6 /* ASYNC_CLK_ENA */
1489#define ARIZONA_ASYNC_CLK_ENA_WIDTH 1 /* ASYNC_CLK_ENA */
1490#define ARIZONA_ASYNC_CLK_SRC_MASK 0x000F /* ASYNC_CLK_SRC - [3:0] */
1491#define ARIZONA_ASYNC_CLK_SRC_SHIFT 0 /* ASYNC_CLK_SRC - [3:0] */
1492#define ARIZONA_ASYNC_CLK_SRC_WIDTH 4 /* ASYNC_CLK_SRC - [3:0] */
1493
1494/*
1495 * R275 (0x113) - Async sample rate 1
1496 */
1497#define ARIZONA_ASYNC_SAMPLE_RATE_MASK 0x001F /* ASYNC_SAMPLE_RATE - [4:0] */
1498#define ARIZONA_ASYNC_SAMPLE_RATE_SHIFT 0 /* ASYNC_SAMPLE_RATE - [4:0] */
1499#define ARIZONA_ASYNC_SAMPLE_RATE_WIDTH 5 /* ASYNC_SAMPLE_RATE - [4:0] */
1500
1501/*
1502 * R283 (0x11B) - Async sample rate 1 status
1503 */
1504#define ARIZONA_ASYNC_SAMPLE_RATE_STS_MASK 0x001F /* ASYNC_SAMPLE_RATE_STS - [4:0] */
1505#define ARIZONA_ASYNC_SAMPLE_RATE_STS_SHIFT 0 /* ASYNC_SAMPLE_RATE_STS - [4:0] */
1506#define ARIZONA_ASYNC_SAMPLE_RATE_STS_WIDTH 5 /* ASYNC_SAMPLE_RATE_STS - [4:0] */
1507
1508/*
1509 * R329 (0x149) - Output system clock
1510 */
1511#define ARIZONA_OPCLK_ENA 0x8000 /* OPCLK_ENA */
1512#define ARIZONA_OPCLK_ENA_MASK 0x8000 /* OPCLK_ENA */
1513#define ARIZONA_OPCLK_ENA_SHIFT 15 /* OPCLK_ENA */
1514#define ARIZONA_OPCLK_ENA_WIDTH 1 /* OPCLK_ENA */
1515#define ARIZONA_OPCLK_DIV_MASK 0x00F8 /* OPCLK_DIV - [7:3] */
1516#define ARIZONA_OPCLK_DIV_SHIFT 3 /* OPCLK_DIV - [7:3] */
1517#define ARIZONA_OPCLK_DIV_WIDTH 5 /* OPCLK_DIV - [7:3] */
1518#define ARIZONA_OPCLK_SEL_MASK 0x0007 /* OPCLK_SEL - [2:0] */
1519#define ARIZONA_OPCLK_SEL_SHIFT 0 /* OPCLK_SEL - [2:0] */
1520#define ARIZONA_OPCLK_SEL_WIDTH 3 /* OPCLK_SEL - [2:0] */
1521
1522/*
1523 * R330 (0x14A) - Output async clock
1524 */
1525#define ARIZONA_OPCLK_ASYNC_ENA 0x8000 /* OPCLK_ASYNC_ENA */
1526#define ARIZONA_OPCLK_ASYNC_ENA_MASK 0x8000 /* OPCLK_ASYNC_ENA */
1527#define ARIZONA_OPCLK_ASYNC_ENA_SHIFT 15 /* OPCLK_ASYNC_ENA */
1528#define ARIZONA_OPCLK_ASYNC_ENA_WIDTH 1 /* OPCLK_ASYNC_ENA */
1529#define ARIZONA_OPCLK_ASYNC_DIV_MASK 0x00F8 /* OPCLK_ASYNC_DIV - [7:3] */
1530#define ARIZONA_OPCLK_ASYNC_DIV_SHIFT 3 /* OPCLK_ASYNC_DIV - [7:3] */
1531#define ARIZONA_OPCLK_ASYNC_DIV_WIDTH 5 /* OPCLK_ASYNC_DIV - [7:3] */
1532#define ARIZONA_OPCLK_ASYNC_SEL_MASK 0x0007 /* OPCLK_ASYNC_SEL - [2:0] */
1533#define ARIZONA_OPCLK_ASYNC_SEL_SHIFT 0 /* OPCLK_ASYNC_SEL - [2:0] */
1534#define ARIZONA_OPCLK_ASYNC_SEL_WIDTH 3 /* OPCLK_ASYNC_SEL - [2:0] */
1535
1536/*
1537 * R338 (0x152) - Rate Estimator 1
1538 */
1539#define ARIZONA_TRIG_ON_STARTUP 0x0010 /* TRIG_ON_STARTUP */
1540#define ARIZONA_TRIG_ON_STARTUP_MASK 0x0010 /* TRIG_ON_STARTUP */
1541#define ARIZONA_TRIG_ON_STARTUP_SHIFT 4 /* TRIG_ON_STARTUP */
1542#define ARIZONA_TRIG_ON_STARTUP_WIDTH 1 /* TRIG_ON_STARTUP */
1543#define ARIZONA_LRCLK_SRC_MASK 0x000E /* LRCLK_SRC - [3:1] */
1544#define ARIZONA_LRCLK_SRC_SHIFT 1 /* LRCLK_SRC - [3:1] */
1545#define ARIZONA_LRCLK_SRC_WIDTH 3 /* LRCLK_SRC - [3:1] */
1546#define ARIZONA_RATE_EST_ENA 0x0001 /* RATE_EST_ENA */
1547#define ARIZONA_RATE_EST_ENA_MASK 0x0001 /* RATE_EST_ENA */
1548#define ARIZONA_RATE_EST_ENA_SHIFT 0 /* RATE_EST_ENA */
1549#define ARIZONA_RATE_EST_ENA_WIDTH 1 /* RATE_EST_ENA */
1550
1551/*
1552 * R339 (0x153) - Rate Estimator 2
1553 */
1554#define ARIZONA_SAMPLE_RATE_DETECT_A_MASK 0x001F /* SAMPLE_RATE_DETECT_A - [4:0] */
1555#define ARIZONA_SAMPLE_RATE_DETECT_A_SHIFT 0 /* SAMPLE_RATE_DETECT_A - [4:0] */
1556#define ARIZONA_SAMPLE_RATE_DETECT_A_WIDTH 5 /* SAMPLE_RATE_DETECT_A - [4:0] */
1557
1558/*
1559 * R340 (0x154) - Rate Estimator 3
1560 */
1561#define ARIZONA_SAMPLE_RATE_DETECT_B_MASK 0x001F /* SAMPLE_RATE_DETECT_B - [4:0] */
1562#define ARIZONA_SAMPLE_RATE_DETECT_B_SHIFT 0 /* SAMPLE_RATE_DETECT_B - [4:0] */
1563#define ARIZONA_SAMPLE_RATE_DETECT_B_WIDTH 5 /* SAMPLE_RATE_DETECT_B - [4:0] */
1564
1565/*
1566 * R341 (0x155) - Rate Estimator 4
1567 */
1568#define ARIZONA_SAMPLE_RATE_DETECT_C_MASK 0x001F /* SAMPLE_RATE_DETECT_C - [4:0] */
1569#define ARIZONA_SAMPLE_RATE_DETECT_C_SHIFT 0 /* SAMPLE_RATE_DETECT_C - [4:0] */
1570#define ARIZONA_SAMPLE_RATE_DETECT_C_WIDTH 5 /* SAMPLE_RATE_DETECT_C - [4:0] */
1571
1572/*
1573 * R342 (0x156) - Rate Estimator 5
1574 */
1575#define ARIZONA_SAMPLE_RATE_DETECT_D_MASK 0x001F /* SAMPLE_RATE_DETECT_D - [4:0] */
1576#define ARIZONA_SAMPLE_RATE_DETECT_D_SHIFT 0 /* SAMPLE_RATE_DETECT_D - [4:0] */
1577#define ARIZONA_SAMPLE_RATE_DETECT_D_WIDTH 5 /* SAMPLE_RATE_DETECT_D - [4:0] */
1578
1579/*
1580 * R353 (0x161) - Dynamic Frequency Scaling 1
1581 */
1582#define ARIZONA_SUBSYS_MAX_FREQ 0x0001 /* SUBSYS_MAX_FREQ */
1583#define ARIZONA_SUBSYS_MAX_FREQ_SHIFT 0 /* SUBSYS_MAX_FREQ */
1584#define ARIZONA_SUBSYS_MAX_FREQ_WIDTH 1 /* SUBSYS_MAX_FREQ */
1585
1586/*
1587 * R369 (0x171) - FLL1 Control 1
1588 */
1589#define ARIZONA_FLL1_FREERUN 0x0002 /* FLL1_FREERUN */
1590#define ARIZONA_FLL1_FREERUN_MASK 0x0002 /* FLL1_FREERUN */
1591#define ARIZONA_FLL1_FREERUN_SHIFT 1 /* FLL1_FREERUN */
1592#define ARIZONA_FLL1_FREERUN_WIDTH 1 /* FLL1_FREERUN */
1593#define ARIZONA_FLL1_ENA 0x0001 /* FLL1_ENA */
1594#define ARIZONA_FLL1_ENA_MASK 0x0001 /* FLL1_ENA */
1595#define ARIZONA_FLL1_ENA_SHIFT 0 /* FLL1_ENA */
1596#define ARIZONA_FLL1_ENA_WIDTH 1 /* FLL1_ENA */
1597
1598/*
1599 * R370 (0x172) - FLL1 Control 2
1600 */
1601#define ARIZONA_FLL1_CTRL_UPD 0x8000 /* FLL1_CTRL_UPD */
1602#define ARIZONA_FLL1_CTRL_UPD_MASK 0x8000 /* FLL1_CTRL_UPD */
1603#define ARIZONA_FLL1_CTRL_UPD_SHIFT 15 /* FLL1_CTRL_UPD */
1604#define ARIZONA_FLL1_CTRL_UPD_WIDTH 1 /* FLL1_CTRL_UPD */
1605#define ARIZONA_FLL1_N_MASK 0x03FF /* FLL1_N - [9:0] */
1606#define ARIZONA_FLL1_N_SHIFT 0 /* FLL1_N - [9:0] */
1607#define ARIZONA_FLL1_N_WIDTH 10 /* FLL1_N - [9:0] */
1608
1609/*
1610 * R371 (0x173) - FLL1 Control 3
1611 */
1612#define ARIZONA_FLL1_THETA_MASK 0xFFFF /* FLL1_THETA - [15:0] */
1613#define ARIZONA_FLL1_THETA_SHIFT 0 /* FLL1_THETA - [15:0] */
1614#define ARIZONA_FLL1_THETA_WIDTH 16 /* FLL1_THETA - [15:0] */
1615
1616/*
1617 * R372 (0x174) - FLL1 Control 4
1618 */
1619#define ARIZONA_FLL1_LAMBDA_MASK 0xFFFF /* FLL1_LAMBDA - [15:0] */
1620#define ARIZONA_FLL1_LAMBDA_SHIFT 0 /* FLL1_LAMBDA - [15:0] */
1621#define ARIZONA_FLL1_LAMBDA_WIDTH 16 /* FLL1_LAMBDA - [15:0] */
1622
1623/*
1624 * R373 (0x175) - FLL1 Control 5
1625 */
1626#define ARIZONA_FLL1_FRATIO_MASK 0x0700 /* FLL1_FRATIO - [10:8] */
1627#define ARIZONA_FLL1_FRATIO_SHIFT 8 /* FLL1_FRATIO - [10:8] */
1628#define ARIZONA_FLL1_FRATIO_WIDTH 3 /* FLL1_FRATIO - [10:8] */
1629#define ARIZONA_FLL1_OUTDIV_MASK 0x000E /* FLL1_OUTDIV - [3:1] */
1630#define ARIZONA_FLL1_OUTDIV_SHIFT 1 /* FLL1_OUTDIV - [3:1] */
1631#define ARIZONA_FLL1_OUTDIV_WIDTH 3 /* FLL1_OUTDIV - [3:1] */
1632
1633/*
1634 * R374 (0x176) - FLL1 Control 6
1635 */
1636#define ARIZONA_FLL1_CLK_REF_DIV_MASK 0x00C0 /* FLL1_CLK_REF_DIV - [7:6] */
1637#define ARIZONA_FLL1_CLK_REF_DIV_SHIFT 6 /* FLL1_CLK_REF_DIV - [7:6] */
1638#define ARIZONA_FLL1_CLK_REF_DIV_WIDTH 2 /* FLL1_CLK_REF_DIV - [7:6] */
1639#define ARIZONA_FLL1_CLK_REF_SRC_MASK 0x000F /* FLL1_CLK_REF_SRC - [3:0] */
1640#define ARIZONA_FLL1_CLK_REF_SRC_SHIFT 0 /* FLL1_CLK_REF_SRC - [3:0] */
1641#define ARIZONA_FLL1_CLK_REF_SRC_WIDTH 4 /* FLL1_CLK_REF_SRC - [3:0] */
1642
1643/*
1644 * R375 (0x177) - FLL1 Loop Filter Test 1
1645 */
1646#define ARIZONA_FLL1_FRC_INTEG_UPD 0x8000 /* FLL1_FRC_INTEG_UPD */
1647#define ARIZONA_FLL1_FRC_INTEG_UPD_MASK 0x8000 /* FLL1_FRC_INTEG_UPD */
1648#define ARIZONA_FLL1_FRC_INTEG_UPD_SHIFT 15 /* FLL1_FRC_INTEG_UPD */
1649#define ARIZONA_FLL1_FRC_INTEG_UPD_WIDTH 1 /* FLL1_FRC_INTEG_UPD */
1650#define ARIZONA_FLL1_FRC_INTEG_VAL_MASK 0x0FFF /* FLL1_FRC_INTEG_VAL - [11:0] */
1651#define ARIZONA_FLL1_FRC_INTEG_VAL_SHIFT 0 /* FLL1_FRC_INTEG_VAL - [11:0] */
1652#define ARIZONA_FLL1_FRC_INTEG_VAL_WIDTH 12 /* FLL1_FRC_INTEG_VAL - [11:0] */
1653
1654/*
1655 * R385 (0x181) - FLL1 Synchroniser 1
1656 */
1657#define ARIZONA_FLL1_SYNC_ENA 0x0001 /* FLL1_SYNC_ENA */
1658#define ARIZONA_FLL1_SYNC_ENA_MASK 0x0001 /* FLL1_SYNC_ENA */
1659#define ARIZONA_FLL1_SYNC_ENA_SHIFT 0 /* FLL1_SYNC_ENA */
1660#define ARIZONA_FLL1_SYNC_ENA_WIDTH 1 /* FLL1_SYNC_ENA */
1661
1662/*
1663 * R386 (0x182) - FLL1 Synchroniser 2
1664 */
1665#define ARIZONA_FLL1_SYNC_N_MASK 0x03FF /* FLL1_SYNC_N - [9:0] */
1666#define ARIZONA_FLL1_SYNC_N_SHIFT 0 /* FLL1_SYNC_N - [9:0] */
1667#define ARIZONA_FLL1_SYNC_N_WIDTH 10 /* FLL1_SYNC_N - [9:0] */
1668
1669/*
1670 * R387 (0x183) - FLL1 Synchroniser 3
1671 */
1672#define ARIZONA_FLL1_SYNC_THETA_MASK 0xFFFF /* FLL1_SYNC_THETA - [15:0] */
1673#define ARIZONA_FLL1_SYNC_THETA_SHIFT 0 /* FLL1_SYNC_THETA - [15:0] */
1674#define ARIZONA_FLL1_SYNC_THETA_WIDTH 16 /* FLL1_SYNC_THETA - [15:0] */
1675
1676/*
1677 * R388 (0x184) - FLL1 Synchroniser 4
1678 */
1679#define ARIZONA_FLL1_SYNC_LAMBDA_MASK 0xFFFF /* FLL1_SYNC_LAMBDA - [15:0] */
1680#define ARIZONA_FLL1_SYNC_LAMBDA_SHIFT 0 /* FLL1_SYNC_LAMBDA - [15:0] */
1681#define ARIZONA_FLL1_SYNC_LAMBDA_WIDTH 16 /* FLL1_SYNC_LAMBDA - [15:0] */
1682
1683/*
1684 * R389 (0x185) - FLL1 Synchroniser 5
1685 */
1686#define ARIZONA_FLL1_SYNC_FRATIO_MASK 0x0700 /* FLL1_SYNC_FRATIO - [10:8] */
1687#define ARIZONA_FLL1_SYNC_FRATIO_SHIFT 8 /* FLL1_SYNC_FRATIO - [10:8] */
1688#define ARIZONA_FLL1_SYNC_FRATIO_WIDTH 3 /* FLL1_SYNC_FRATIO - [10:8] */
1689
1690/*
1691 * R390 (0x186) - FLL1 Synchroniser 6
1692 */
1693#define ARIZONA_FLL1_CLK_SYNC_DIV_MASK 0x00C0 /* FLL1_CLK_SYNC_DIV - [7:6] */
1694#define ARIZONA_FLL1_CLK_SYNC_DIV_SHIFT 6 /* FLL1_CLK_SYNC_DIV - [7:6] */
1695#define ARIZONA_FLL1_CLK_SYNC_DIV_WIDTH 2 /* FLL1_CLK_SYNC_DIV - [7:6] */
1696#define ARIZONA_FLL1_CLK_SYNC_SRC_MASK 0x000F /* FLL1_CLK_SYNC_SRC - [3:0] */
1697#define ARIZONA_FLL1_CLK_SYNC_SRC_SHIFT 0 /* FLL1_CLK_SYNC_SRC - [3:0] */
1698#define ARIZONA_FLL1_CLK_SYNC_SRC_WIDTH 4 /* FLL1_CLK_SYNC_SRC - [3:0] */
1699
1700/*
1701 * R393 (0x189) - FLL1 Spread Spectrum
1702 */
1703#define ARIZONA_FLL1_SS_AMPL_MASK 0x0030 /* FLL1_SS_AMPL - [5:4] */
1704#define ARIZONA_FLL1_SS_AMPL_SHIFT 4 /* FLL1_SS_AMPL - [5:4] */
1705#define ARIZONA_FLL1_SS_AMPL_WIDTH 2 /* FLL1_SS_AMPL - [5:4] */
1706#define ARIZONA_FLL1_SS_FREQ_MASK 0x000C /* FLL1_SS_FREQ - [3:2] */
1707#define ARIZONA_FLL1_SS_FREQ_SHIFT 2 /* FLL1_SS_FREQ - [3:2] */
1708#define ARIZONA_FLL1_SS_FREQ_WIDTH 2 /* FLL1_SS_FREQ - [3:2] */
1709#define ARIZONA_FLL1_SS_SEL_MASK 0x0003 /* FLL1_SS_SEL - [1:0] */
1710#define ARIZONA_FLL1_SS_SEL_SHIFT 0 /* FLL1_SS_SEL - [1:0] */
1711#define ARIZONA_FLL1_SS_SEL_WIDTH 2 /* FLL1_SS_SEL - [1:0] */
1712
1713/*
1714 * R394 (0x18A) - FLL1 GPIO Clock
1715 */
1716#define ARIZONA_FLL1_GPDIV_MASK 0x00FE /* FLL1_GPDIV - [7:1] */
1717#define ARIZONA_FLL1_GPDIV_SHIFT 1 /* FLL1_GPDIV - [7:1] */
1718#define ARIZONA_FLL1_GPDIV_WIDTH 7 /* FLL1_GPDIV - [7:1] */
1719#define ARIZONA_FLL1_GPDIV_ENA 0x0001 /* FLL1_GPDIV_ENA */
1720#define ARIZONA_FLL1_GPDIV_ENA_MASK 0x0001 /* FLL1_GPDIV_ENA */
1721#define ARIZONA_FLL1_GPDIV_ENA_SHIFT 0 /* FLL1_GPDIV_ENA */
1722#define ARIZONA_FLL1_GPDIV_ENA_WIDTH 1 /* FLL1_GPDIV_ENA */
1723
1724/*
1725 * R401 (0x191) - FLL2 Control 1
1726 */
1727#define ARIZONA_FLL2_FREERUN 0x0002 /* FLL2_FREERUN */
1728#define ARIZONA_FLL2_FREERUN_MASK 0x0002 /* FLL2_FREERUN */
1729#define ARIZONA_FLL2_FREERUN_SHIFT 1 /* FLL2_FREERUN */
1730#define ARIZONA_FLL2_FREERUN_WIDTH 1 /* FLL2_FREERUN */
1731#define ARIZONA_FLL2_ENA 0x0001 /* FLL2_ENA */
1732#define ARIZONA_FLL2_ENA_MASK 0x0001 /* FLL2_ENA */
1733#define ARIZONA_FLL2_ENA_SHIFT 0 /* FLL2_ENA */
1734#define ARIZONA_FLL2_ENA_WIDTH 1 /* FLL2_ENA */
1735
1736/*
1737 * R402 (0x192) - FLL2 Control 2
1738 */
1739#define ARIZONA_FLL2_CTRL_UPD 0x8000 /* FLL2_CTRL_UPD */
1740#define ARIZONA_FLL2_CTRL_UPD_MASK 0x8000 /* FLL2_CTRL_UPD */
1741#define ARIZONA_FLL2_CTRL_UPD_SHIFT 15 /* FLL2_CTRL_UPD */
1742#define ARIZONA_FLL2_CTRL_UPD_WIDTH 1 /* FLL2_CTRL_UPD */
1743#define ARIZONA_FLL2_N_MASK 0x03FF /* FLL2_N - [9:0] */
1744#define ARIZONA_FLL2_N_SHIFT 0 /* FLL2_N - [9:0] */
1745#define ARIZONA_FLL2_N_WIDTH 10 /* FLL2_N - [9:0] */
1746
1747/*
1748 * R403 (0x193) - FLL2 Control 3
1749 */
1750#define ARIZONA_FLL2_THETA_MASK 0xFFFF /* FLL2_THETA - [15:0] */
1751#define ARIZONA_FLL2_THETA_SHIFT 0 /* FLL2_THETA - [15:0] */
1752#define ARIZONA_FLL2_THETA_WIDTH 16 /* FLL2_THETA - [15:0] */
1753
1754/*
1755 * R404 (0x194) - FLL2 Control 4
1756 */
1757#define ARIZONA_FLL2_LAMBDA_MASK 0xFFFF /* FLL2_LAMBDA - [15:0] */
1758#define ARIZONA_FLL2_LAMBDA_SHIFT 0 /* FLL2_LAMBDA - [15:0] */
1759#define ARIZONA_FLL2_LAMBDA_WIDTH 16 /* FLL2_LAMBDA - [15:0] */
1760
1761/*
1762 * R405 (0x195) - FLL2 Control 5
1763 */
1764#define ARIZONA_FLL2_FRATIO_MASK 0x0700 /* FLL2_FRATIO - [10:8] */
1765#define ARIZONA_FLL2_FRATIO_SHIFT 8 /* FLL2_FRATIO - [10:8] */
1766#define ARIZONA_FLL2_FRATIO_WIDTH 3 /* FLL2_FRATIO - [10:8] */
1767#define ARIZONA_FLL2_OUTDIV_MASK 0x000E /* FLL2_OUTDIV - [3:1] */
1768#define ARIZONA_FLL2_OUTDIV_SHIFT 1 /* FLL2_OUTDIV - [3:1] */
1769#define ARIZONA_FLL2_OUTDIV_WIDTH 3 /* FLL2_OUTDIV - [3:1] */
1770
1771/*
1772 * R406 (0x196) - FLL2 Control 6
1773 */
1774#define ARIZONA_FLL2_CLK_REF_DIV_MASK 0x00C0 /* FLL2_CLK_REF_DIV - [7:6] */
1775#define ARIZONA_FLL2_CLK_REF_DIV_SHIFT 6 /* FLL2_CLK_REF_DIV - [7:6] */
1776#define ARIZONA_FLL2_CLK_REF_DIV_WIDTH 2 /* FLL2_CLK_REF_DIV - [7:6] */
1777#define ARIZONA_FLL2_CLK_REF_SRC_MASK 0x000F /* FLL2_CLK_REF_SRC - [3:0] */
1778#define ARIZONA_FLL2_CLK_REF_SRC_SHIFT 0 /* FLL2_CLK_REF_SRC - [3:0] */
1779#define ARIZONA_FLL2_CLK_REF_SRC_WIDTH 4 /* FLL2_CLK_REF_SRC - [3:0] */
1780
1781/*
1782 * R407 (0x197) - FLL2 Loop Filter Test 1
1783 */
1784#define ARIZONA_FLL2_FRC_INTEG_UPD 0x8000 /* FLL2_FRC_INTEG_UPD */
1785#define ARIZONA_FLL2_FRC_INTEG_UPD_MASK 0x8000 /* FLL2_FRC_INTEG_UPD */
1786#define ARIZONA_FLL2_FRC_INTEG_UPD_SHIFT 15 /* FLL2_FRC_INTEG_UPD */
1787#define ARIZONA_FLL2_FRC_INTEG_UPD_WIDTH 1 /* FLL2_FRC_INTEG_UPD */
1788#define ARIZONA_FLL2_FRC_INTEG_VAL_MASK 0x0FFF /* FLL2_FRC_INTEG_VAL - [11:0] */
1789#define ARIZONA_FLL2_FRC_INTEG_VAL_SHIFT 0 /* FLL2_FRC_INTEG_VAL - [11:0] */
1790#define ARIZONA_FLL2_FRC_INTEG_VAL_WIDTH 12 /* FLL2_FRC_INTEG_VAL - [11:0] */
1791
1792/*
1793 * R417 (0x1A1) - FLL2 Synchroniser 1
1794 */
1795#define ARIZONA_FLL2_SYNC_ENA 0x0001 /* FLL2_SYNC_ENA */
1796#define ARIZONA_FLL2_SYNC_ENA_MASK 0x0001 /* FLL2_SYNC_ENA */
1797#define ARIZONA_FLL2_SYNC_ENA_SHIFT 0 /* FLL2_SYNC_ENA */
1798#define ARIZONA_FLL2_SYNC_ENA_WIDTH 1 /* FLL2_SYNC_ENA */
1799
1800/*
1801 * R418 (0x1A2) - FLL2 Synchroniser 2
1802 */
1803#define ARIZONA_FLL2_SYNC_N_MASK 0x03FF /* FLL2_SYNC_N - [9:0] */
1804#define ARIZONA_FLL2_SYNC_N_SHIFT 0 /* FLL2_SYNC_N - [9:0] */
1805#define ARIZONA_FLL2_SYNC_N_WIDTH 10 /* FLL2_SYNC_N - [9:0] */
1806
1807/*
1808 * R419 (0x1A3) - FLL2 Synchroniser 3
1809 */
1810#define ARIZONA_FLL2_SYNC_THETA_MASK 0xFFFF /* FLL2_SYNC_THETA - [15:0] */
1811#define ARIZONA_FLL2_SYNC_THETA_SHIFT 0 /* FLL2_SYNC_THETA - [15:0] */
1812#define ARIZONA_FLL2_SYNC_THETA_WIDTH 16 /* FLL2_SYNC_THETA - [15:0] */
1813
1814/*
1815 * R420 (0x1A4) - FLL2 Synchroniser 4
1816 */
1817#define ARIZONA_FLL2_SYNC_LAMBDA_MASK 0xFFFF /* FLL2_SYNC_LAMBDA - [15:0] */
1818#define ARIZONA_FLL2_SYNC_LAMBDA_SHIFT 0 /* FLL2_SYNC_LAMBDA - [15:0] */
1819#define ARIZONA_FLL2_SYNC_LAMBDA_WIDTH 16 /* FLL2_SYNC_LAMBDA - [15:0] */
1820
1821/*
1822 * R421 (0x1A5) - FLL2 Synchroniser 5
1823 */
1824#define ARIZONA_FLL2_SYNC_FRATIO_MASK 0x0700 /* FLL2_SYNC_FRATIO - [10:8] */
1825#define ARIZONA_FLL2_SYNC_FRATIO_SHIFT 8 /* FLL2_SYNC_FRATIO - [10:8] */
1826#define ARIZONA_FLL2_SYNC_FRATIO_WIDTH 3 /* FLL2_SYNC_FRATIO - [10:8] */
1827
1828/*
1829 * R422 (0x1A6) - FLL2 Synchroniser 6
1830 */
1831#define ARIZONA_FLL2_CLK_SYNC_DIV_MASK 0x00C0 /* FLL2_CLK_SYNC_DIV - [7:6] */
1832#define ARIZONA_FLL2_CLK_SYNC_DIV_SHIFT 6 /* FLL2_CLK_SYNC_DIV - [7:6] */
1833#define ARIZONA_FLL2_CLK_SYNC_DIV_WIDTH 2 /* FLL2_CLK_SYNC_DIV - [7:6] */
1834#define ARIZONA_FLL2_CLK_SYNC_SRC_MASK 0x000F /* FLL2_CLK_SYNC_SRC - [3:0] */
1835#define ARIZONA_FLL2_CLK_SYNC_SRC_SHIFT 0 /* FLL2_CLK_SYNC_SRC - [3:0] */
1836#define ARIZONA_FLL2_CLK_SYNC_SRC_WIDTH 4 /* FLL2_CLK_SYNC_SRC - [3:0] */
1837
1838/*
1839 * R425 (0x1A9) - FLL2 Spread Spectrum
1840 */
1841#define ARIZONA_FLL2_SS_AMPL_MASK 0x0030 /* FLL2_SS_AMPL - [5:4] */
1842#define ARIZONA_FLL2_SS_AMPL_SHIFT 4 /* FLL2_SS_AMPL - [5:4] */
1843#define ARIZONA_FLL2_SS_AMPL_WIDTH 2 /* FLL2_SS_AMPL - [5:4] */
1844#define ARIZONA_FLL2_SS_FREQ_MASK 0x000C /* FLL2_SS_FREQ - [3:2] */
1845#define ARIZONA_FLL2_SS_FREQ_SHIFT 2 /* FLL2_SS_FREQ - [3:2] */
1846#define ARIZONA_FLL2_SS_FREQ_WIDTH 2 /* FLL2_SS_FREQ - [3:2] */
1847#define ARIZONA_FLL2_SS_SEL_MASK 0x0003 /* FLL2_SS_SEL - [1:0] */
1848#define ARIZONA_FLL2_SS_SEL_SHIFT 0 /* FLL2_SS_SEL - [1:0] */
1849#define ARIZONA_FLL2_SS_SEL_WIDTH 2 /* FLL2_SS_SEL - [1:0] */
1850
1851/*
1852 * R426 (0x1AA) - FLL2 GPIO Clock
1853 */
1854#define ARIZONA_FLL2_GPDIV_MASK 0x00FE /* FLL2_GPDIV - [7:1] */
1855#define ARIZONA_FLL2_GPDIV_SHIFT 1 /* FLL2_GPDIV - [7:1] */
1856#define ARIZONA_FLL2_GPDIV_WIDTH 7 /* FLL2_GPDIV - [7:1] */
1857#define ARIZONA_FLL2_GPDIV_ENA 0x0001 /* FLL2_GPDIV_ENA */
1858#define ARIZONA_FLL2_GPDIV_ENA_MASK 0x0001 /* FLL2_GPDIV_ENA */
1859#define ARIZONA_FLL2_GPDIV_ENA_SHIFT 0 /* FLL2_GPDIV_ENA */
1860#define ARIZONA_FLL2_GPDIV_ENA_WIDTH 1 /* FLL2_GPDIV_ENA */
1861
1862/*
1863 * R512 (0x200) - Mic Charge Pump 1
1864 */
1865#define ARIZONA_CPMIC_DISCH 0x0004 /* CPMIC_DISCH */
1866#define ARIZONA_CPMIC_DISCH_MASK 0x0004 /* CPMIC_DISCH */
1867#define ARIZONA_CPMIC_DISCH_SHIFT 2 /* CPMIC_DISCH */
1868#define ARIZONA_CPMIC_DISCH_WIDTH 1 /* CPMIC_DISCH */
1869#define ARIZONA_CPMIC_BYPASS 0x0002 /* CPMIC_BYPASS */
1870#define ARIZONA_CPMIC_BYPASS_MASK 0x0002 /* CPMIC_BYPASS */
1871#define ARIZONA_CPMIC_BYPASS_SHIFT 1 /* CPMIC_BYPASS */
1872#define ARIZONA_CPMIC_BYPASS_WIDTH 1 /* CPMIC_BYPASS */
1873#define ARIZONA_CPMIC_ENA 0x0001 /* CPMIC_ENA */
1874#define ARIZONA_CPMIC_ENA_MASK 0x0001 /* CPMIC_ENA */
1875#define ARIZONA_CPMIC_ENA_SHIFT 0 /* CPMIC_ENA */
1876#define ARIZONA_CPMIC_ENA_WIDTH 1 /* CPMIC_ENA */
1877
1878/*
1879 * R528 (0x210) - LDO1 Control 1
1880 */
1881#define ARIZONA_LDO1_VSEL_MASK 0x07E0 /* LDO1_VSEL - [10:5] */
1882#define ARIZONA_LDO1_VSEL_SHIFT 5 /* LDO1_VSEL - [10:5] */
1883#define ARIZONA_LDO1_VSEL_WIDTH 6 /* LDO1_VSEL - [10:5] */
1884#define ARIZONA_LDO1_FAST 0x0010 /* LDO1_FAST */
1885#define ARIZONA_LDO1_FAST_MASK 0x0010 /* LDO1_FAST */
1886#define ARIZONA_LDO1_FAST_SHIFT 4 /* LDO1_FAST */
1887#define ARIZONA_LDO1_FAST_WIDTH 1 /* LDO1_FAST */
1888#define ARIZONA_LDO1_DISCH 0x0004 /* LDO1_DISCH */
1889#define ARIZONA_LDO1_DISCH_MASK 0x0004 /* LDO1_DISCH */
1890#define ARIZONA_LDO1_DISCH_SHIFT 2 /* LDO1_DISCH */
1891#define ARIZONA_LDO1_DISCH_WIDTH 1 /* LDO1_DISCH */
1892#define ARIZONA_LDO1_BYPASS 0x0002 /* LDO1_BYPASS */
1893#define ARIZONA_LDO1_BYPASS_MASK 0x0002 /* LDO1_BYPASS */
1894#define ARIZONA_LDO1_BYPASS_SHIFT 1 /* LDO1_BYPASS */
1895#define ARIZONA_LDO1_BYPASS_WIDTH 1 /* LDO1_BYPASS */
1896#define ARIZONA_LDO1_ENA 0x0001 /* LDO1_ENA */
1897#define ARIZONA_LDO1_ENA_MASK 0x0001 /* LDO1_ENA */
1898#define ARIZONA_LDO1_ENA_SHIFT 0 /* LDO1_ENA */
1899#define ARIZONA_LDO1_ENA_WIDTH 1 /* LDO1_ENA */
1900
1901/*
1902 * R530 (0x212) - LDO1 Control 2
1903 */
1904#define ARIZONA_LDO1_HI_PWR 0x0001 /* LDO1_HI_PWR */
1905#define ARIZONA_LDO1_HI_PWR_SHIFT 0 /* LDO1_HI_PWR */
1906#define ARIZONA_LDO1_HI_PWR_WIDTH 1 /* LDO1_HI_PWR */
1907
1908/*
1909 * R531 (0x213) - LDO2 Control 1
1910 */
1911#define ARIZONA_LDO2_VSEL_MASK 0x07E0 /* LDO2_VSEL - [10:5] */
1912#define ARIZONA_LDO2_VSEL_SHIFT 5 /* LDO2_VSEL - [10:5] */
1913#define ARIZONA_LDO2_VSEL_WIDTH 6 /* LDO2_VSEL - [10:5] */
1914#define ARIZONA_LDO2_FAST 0x0010 /* LDO2_FAST */
1915#define ARIZONA_LDO2_FAST_MASK 0x0010 /* LDO2_FAST */
1916#define ARIZONA_LDO2_FAST_SHIFT 4 /* LDO2_FAST */
1917#define ARIZONA_LDO2_FAST_WIDTH 1 /* LDO2_FAST */
1918#define ARIZONA_LDO2_DISCH 0x0004 /* LDO2_DISCH */
1919#define ARIZONA_LDO2_DISCH_MASK 0x0004 /* LDO2_DISCH */
1920#define ARIZONA_LDO2_DISCH_SHIFT 2 /* LDO2_DISCH */
1921#define ARIZONA_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */
1922#define ARIZONA_LDO2_BYPASS 0x0002 /* LDO2_BYPASS */
1923#define ARIZONA_LDO2_BYPASS_MASK 0x0002 /* LDO2_BYPASS */
1924#define ARIZONA_LDO2_BYPASS_SHIFT 1 /* LDO2_BYPASS */
1925#define ARIZONA_LDO2_BYPASS_WIDTH 1 /* LDO2_BYPASS */
1926#define ARIZONA_LDO2_ENA 0x0001 /* LDO2_ENA */
1927#define ARIZONA_LDO2_ENA_MASK 0x0001 /* LDO2_ENA */
1928#define ARIZONA_LDO2_ENA_SHIFT 0 /* LDO2_ENA */
1929#define ARIZONA_LDO2_ENA_WIDTH 1 /* LDO2_ENA */
1930
1931/*
1932 * R536 (0x218) - Mic Bias Ctrl 1
1933 */
1934#define ARIZONA_MICB1_EXT_CAP 0x8000 /* MICB1_EXT_CAP */
1935#define ARIZONA_MICB1_EXT_CAP_MASK 0x8000 /* MICB1_EXT_CAP */
1936#define ARIZONA_MICB1_EXT_CAP_SHIFT 15 /* MICB1_EXT_CAP */
1937#define ARIZONA_MICB1_EXT_CAP_WIDTH 1 /* MICB1_EXT_CAP */
1938#define ARIZONA_MICB1_LVL_MASK 0x01E0 /* MICB1_LVL - [8:5] */
1939#define ARIZONA_MICB1_LVL_SHIFT 5 /* MICB1_LVL - [8:5] */
1940#define ARIZONA_MICB1_LVL_WIDTH 4 /* MICB1_LVL - [8:5] */
1941#define ARIZONA_MICB1_FAST 0x0010 /* MICB1_FAST */
1942#define ARIZONA_MICB1_FAST_MASK 0x0010 /* MICB1_FAST */
1943#define ARIZONA_MICB1_FAST_SHIFT 4 /* MICB1_FAST */
1944#define ARIZONA_MICB1_FAST_WIDTH 1 /* MICB1_FAST */
1945#define ARIZONA_MICB1_RATE 0x0008 /* MICB1_RATE */
1946#define ARIZONA_MICB1_RATE_MASK 0x0008 /* MICB1_RATE */
1947#define ARIZONA_MICB1_RATE_SHIFT 3 /* MICB1_RATE */
1948#define ARIZONA_MICB1_RATE_WIDTH 1 /* MICB1_RATE */
1949#define ARIZONA_MICB1_DISCH 0x0004 /* MICB1_DISCH */
1950#define ARIZONA_MICB1_DISCH_MASK 0x0004 /* MICB1_DISCH */
1951#define ARIZONA_MICB1_DISCH_SHIFT 2 /* MICB1_DISCH */
1952#define ARIZONA_MICB1_DISCH_WIDTH 1 /* MICB1_DISCH */
1953#define ARIZONA_MICB1_BYPASS 0x0002 /* MICB1_BYPASS */
1954#define ARIZONA_MICB1_BYPASS_MASK 0x0002 /* MICB1_BYPASS */
1955#define ARIZONA_MICB1_BYPASS_SHIFT 1 /* MICB1_BYPASS */
1956#define ARIZONA_MICB1_BYPASS_WIDTH 1 /* MICB1_BYPASS */
1957#define ARIZONA_MICB1_ENA 0x0001 /* MICB1_ENA */
1958#define ARIZONA_MICB1_ENA_MASK 0x0001 /* MICB1_ENA */
1959#define ARIZONA_MICB1_ENA_SHIFT 0 /* MICB1_ENA */
1960#define ARIZONA_MICB1_ENA_WIDTH 1 /* MICB1_ENA */
1961
1962/*
1963 * R537 (0x219) - Mic Bias Ctrl 2
1964 */
1965#define ARIZONA_MICB2_EXT_CAP 0x8000 /* MICB2_EXT_CAP */
1966#define ARIZONA_MICB2_EXT_CAP_MASK 0x8000 /* MICB2_EXT_CAP */
1967#define ARIZONA_MICB2_EXT_CAP_SHIFT 15 /* MICB2_EXT_CAP */
1968#define ARIZONA_MICB2_EXT_CAP_WIDTH 1 /* MICB2_EXT_CAP */
1969#define ARIZONA_MICB2_LVL_MASK 0x01E0 /* MICB2_LVL - [8:5] */
1970#define ARIZONA_MICB2_LVL_SHIFT 5 /* MICB2_LVL - [8:5] */
1971#define ARIZONA_MICB2_LVL_WIDTH 4 /* MICB2_LVL - [8:5] */
1972#define ARIZONA_MICB2_FAST 0x0010 /* MICB2_FAST */
1973#define ARIZONA_MICB2_FAST_MASK 0x0010 /* MICB2_FAST */
1974#define ARIZONA_MICB2_FAST_SHIFT 4 /* MICB2_FAST */
1975#define ARIZONA_MICB2_FAST_WIDTH 1 /* MICB2_FAST */
1976#define ARIZONA_MICB2_RATE 0x0008 /* MICB2_RATE */
1977#define ARIZONA_MICB2_RATE_MASK 0x0008 /* MICB2_RATE */
1978#define ARIZONA_MICB2_RATE_SHIFT 3 /* MICB2_RATE */
1979#define ARIZONA_MICB2_RATE_WIDTH 1 /* MICB2_RATE */
1980#define ARIZONA_MICB2_DISCH 0x0004 /* MICB2_DISCH */
1981#define ARIZONA_MICB2_DISCH_MASK 0x0004 /* MICB2_DISCH */
1982#define ARIZONA_MICB2_DISCH_SHIFT 2 /* MICB2_DISCH */
1983#define ARIZONA_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */
1984#define ARIZONA_MICB2_BYPASS 0x0002 /* MICB2_BYPASS */
1985#define ARIZONA_MICB2_BYPASS_MASK 0x0002 /* MICB2_BYPASS */
1986#define ARIZONA_MICB2_BYPASS_SHIFT 1 /* MICB2_BYPASS */
1987#define ARIZONA_MICB2_BYPASS_WIDTH 1 /* MICB2_BYPASS */
1988#define ARIZONA_MICB2_ENA 0x0001 /* MICB2_ENA */
1989#define ARIZONA_MICB2_ENA_MASK 0x0001 /* MICB2_ENA */
1990#define ARIZONA_MICB2_ENA_SHIFT 0 /* MICB2_ENA */
1991#define ARIZONA_MICB2_ENA_WIDTH 1 /* MICB2_ENA */
1992
1993/*
1994 * R538 (0x21A) - Mic Bias Ctrl 3
1995 */
1996#define ARIZONA_MICB3_EXT_CAP 0x8000 /* MICB3_EXT_CAP */
1997#define ARIZONA_MICB3_EXT_CAP_MASK 0x8000 /* MICB3_EXT_CAP */
1998#define ARIZONA_MICB3_EXT_CAP_SHIFT 15 /* MICB3_EXT_CAP */
1999#define ARIZONA_MICB3_EXT_CAP_WIDTH 1 /* MICB3_EXT_CAP */
2000#define ARIZONA_MICB3_LVL_MASK 0x01E0 /* MICB3_LVL - [8:5] */
2001#define ARIZONA_MICB3_LVL_SHIFT 5 /* MICB3_LVL - [8:5] */
2002#define ARIZONA_MICB3_LVL_WIDTH 4 /* MICB3_LVL - [8:5] */
2003#define ARIZONA_MICB3_FAST 0x0010 /* MICB3_FAST */
2004#define ARIZONA_MICB3_FAST_MASK 0x0010 /* MICB3_FAST */
2005#define ARIZONA_MICB3_FAST_SHIFT 4 /* MICB3_FAST */
2006#define ARIZONA_MICB3_FAST_WIDTH 1 /* MICB3_FAST */
2007#define ARIZONA_MICB3_RATE 0x0008 /* MICB3_RATE */
2008#define ARIZONA_MICB3_RATE_MASK 0x0008 /* MICB3_RATE */
2009#define ARIZONA_MICB3_RATE_SHIFT 3 /* MICB3_RATE */
2010#define ARIZONA_MICB3_RATE_WIDTH 1 /* MICB3_RATE */
2011#define ARIZONA_MICB3_DISCH 0x0004 /* MICB3_DISCH */
2012#define ARIZONA_MICB3_DISCH_MASK 0x0004 /* MICB3_DISCH */
2013#define ARIZONA_MICB3_DISCH_SHIFT 2 /* MICB3_DISCH */
2014#define ARIZONA_MICB3_DISCH_WIDTH 1 /* MICB3_DISCH */
2015#define ARIZONA_MICB3_BYPASS 0x0002 /* MICB3_BYPASS */
2016#define ARIZONA_MICB3_BYPASS_MASK 0x0002 /* MICB3_BYPASS */
2017#define ARIZONA_MICB3_BYPASS_SHIFT 1 /* MICB3_BYPASS */
2018#define ARIZONA_MICB3_BYPASS_WIDTH 1 /* MICB3_BYPASS */
2019#define ARIZONA_MICB3_ENA 0x0001 /* MICB3_ENA */
2020#define ARIZONA_MICB3_ENA_MASK 0x0001 /* MICB3_ENA */
2021#define ARIZONA_MICB3_ENA_SHIFT 0 /* MICB3_ENA */
2022#define ARIZONA_MICB3_ENA_WIDTH 1 /* MICB3_ENA */
2023
2024/*
2025 * R659 (0x293) - Accessory Detect Mode 1
2026 */
2027#define ARIZONA_ACCDET_SRC 0x2000 /* ACCDET_SRC */
2028#define ARIZONA_ACCDET_SRC_MASK 0x2000 /* ACCDET_SRC */
2029#define ARIZONA_ACCDET_SRC_SHIFT 13 /* ACCDET_SRC */
2030#define ARIZONA_ACCDET_SRC_WIDTH 1 /* ACCDET_SRC */
2031#define ARIZONA_ACCDET_MODE_MASK 0x0003 /* ACCDET_MODE - [1:0] */
2032#define ARIZONA_ACCDET_MODE_SHIFT 0 /* ACCDET_MODE - [1:0] */
2033#define ARIZONA_ACCDET_MODE_WIDTH 2 /* ACCDET_MODE - [1:0] */
2034
2035/*
2036 * R667 (0x29B) - Headphone Detect 1
2037 */
2038#define ARIZONA_HP_STEP_SIZE 0x0100 /* HP_STEP_SIZE */
2039#define ARIZONA_HP_STEP_SIZE_MASK 0x0100 /* HP_STEP_SIZE */
2040#define ARIZONA_HP_STEP_SIZE_SHIFT 8 /* HP_STEP_SIZE */
2041#define ARIZONA_HP_STEP_SIZE_WIDTH 1 /* HP_STEP_SIZE */
2042#define ARIZONA_HP_HOLDTIME_MASK 0x00E0 /* HP_HOLDTIME - [7:5] */
2043#define ARIZONA_HP_HOLDTIME_SHIFT 5 /* HP_HOLDTIME - [7:5] */
2044#define ARIZONA_HP_HOLDTIME_WIDTH 3 /* HP_HOLDTIME - [7:5] */
2045#define ARIZONA_HP_CLK_DIV_MASK 0x0018 /* HP_CLK_DIV - [4:3] */
2046#define ARIZONA_HP_CLK_DIV_SHIFT 3 /* HP_CLK_DIV - [4:3] */
2047#define ARIZONA_HP_CLK_DIV_WIDTH 2 /* HP_CLK_DIV - [4:3] */
2048#define ARIZONA_HP_IDAC_STEER 0x0004 /* HP_IDAC_STEER */
2049#define ARIZONA_HP_IDAC_STEER_MASK 0x0004 /* HP_IDAC_STEER */
2050#define ARIZONA_HP_IDAC_STEER_SHIFT 2 /* HP_IDAC_STEER */
2051#define ARIZONA_HP_IDAC_STEER_WIDTH 1 /* HP_IDAC_STEER */
2052#define ARIZONA_HP_RATE 0x0002 /* HP_RATE */
2053#define ARIZONA_HP_RATE_MASK 0x0002 /* HP_RATE */
2054#define ARIZONA_HP_RATE_SHIFT 1 /* HP_RATE */
2055#define ARIZONA_HP_RATE_WIDTH 1 /* HP_RATE */
2056#define ARIZONA_HP_POLL 0x0001 /* HP_POLL */
2057#define ARIZONA_HP_POLL_MASK 0x0001 /* HP_POLL */
2058#define ARIZONA_HP_POLL_SHIFT 0 /* HP_POLL */
2059#define ARIZONA_HP_POLL_WIDTH 1 /* HP_POLL */
2060
2061/*
2062 * R668 (0x29C) - Headphone Detect 2
2063 */
2064#define ARIZONA_HP_DONE 0x0080 /* HP_DONE */
2065#define ARIZONA_HP_DONE_MASK 0x0080 /* HP_DONE */
2066#define ARIZONA_HP_DONE_SHIFT 7 /* HP_DONE */
2067#define ARIZONA_HP_DONE_WIDTH 1 /* HP_DONE */
2068#define ARIZONA_HP_LVL_MASK 0x007F /* HP_LVL - [6:0] */
2069#define ARIZONA_HP_LVL_SHIFT 0 /* HP_LVL - [6:0] */
2070#define ARIZONA_HP_LVL_WIDTH 7 /* HP_LVL - [6:0] */
2071
2072/*
2073 * R675 (0x2A3) - Mic Detect 1
2074 */
2075#define ARIZONA_MICD_BIAS_STARTTIME_MASK 0xF000 /* MICD_BIAS_STARTTIME - [15:12] */
2076#define ARIZONA_MICD_BIAS_STARTTIME_SHIFT 12 /* MICD_BIAS_STARTTIME - [15:12] */
2077#define ARIZONA_MICD_BIAS_STARTTIME_WIDTH 4 /* MICD_BIAS_STARTTIME - [15:12] */
2078#define ARIZONA_MICD_RATE_MASK 0x0F00 /* MICD_RATE - [11:8] */
2079#define ARIZONA_MICD_RATE_SHIFT 8 /* MICD_RATE - [11:8] */
2080#define ARIZONA_MICD_RATE_WIDTH 4 /* MICD_RATE - [11:8] */
2081#define ARIZONA_MICD_BIAS_SRC_MASK 0x0030 /* MICD_BIAS_SRC - [5:4] */
2082#define ARIZONA_MICD_BIAS_SRC_SHIFT 4 /* MICD_BIAS_SRC - [5:4] */
2083#define ARIZONA_MICD_BIAS_SRC_WIDTH 2 /* MICD_BIAS_SRC - [5:4] */
2084#define ARIZONA_MICD_DBTIME 0x0002 /* MICD_DBTIME */
2085#define ARIZONA_MICD_DBTIME_MASK 0x0002 /* MICD_DBTIME */
2086#define ARIZONA_MICD_DBTIME_SHIFT 1 /* MICD_DBTIME */
2087#define ARIZONA_MICD_DBTIME_WIDTH 1 /* MICD_DBTIME */
2088#define ARIZONA_MICD_ENA 0x0001 /* MICD_ENA */
2089#define ARIZONA_MICD_ENA_MASK 0x0001 /* MICD_ENA */
2090#define ARIZONA_MICD_ENA_SHIFT 0 /* MICD_ENA */
2091#define ARIZONA_MICD_ENA_WIDTH 1 /* MICD_ENA */
2092
2093/*
2094 * R676 (0x2A4) - Mic Detect 2
2095 */
2096#define ARIZONA_MICD_LVL_SEL_MASK 0x00FF /* MICD_LVL_SEL - [7:0] */
2097#define ARIZONA_MICD_LVL_SEL_SHIFT 0 /* MICD_LVL_SEL - [7:0] */
2098#define ARIZONA_MICD_LVL_SEL_WIDTH 8 /* MICD_LVL_SEL - [7:0] */
2099
2100/*
2101 * R677 (0x2A5) - Mic Detect 3
2102 */
2103#define ARIZONA_MICD_LVL_MASK 0x07FC /* MICD_LVL - [10:2] */
2104#define ARIZONA_MICD_LVL_SHIFT 2 /* MICD_LVL - [10:2] */
2105#define ARIZONA_MICD_LVL_WIDTH 9 /* MICD_LVL - [10:2] */
2106#define ARIZONA_MICD_VALID 0x0002 /* MICD_VALID */
2107#define ARIZONA_MICD_VALID_MASK 0x0002 /* MICD_VALID */
2108#define ARIZONA_MICD_VALID_SHIFT 1 /* MICD_VALID */
2109#define ARIZONA_MICD_VALID_WIDTH 1 /* MICD_VALID */
2110#define ARIZONA_MICD_STS 0x0001 /* MICD_STS */
2111#define ARIZONA_MICD_STS_MASK 0x0001 /* MICD_STS */
2112#define ARIZONA_MICD_STS_SHIFT 0 /* MICD_STS */
2113#define ARIZONA_MICD_STS_WIDTH 1 /* MICD_STS */
2114
2115/*
2116 * R707 (0x2C3) - Mic noise mix control 1
2117 */
2118#define ARIZONA_MICMUTE_RATE_MASK 0x7800 /* MICMUTE_RATE - [14:11] */
2119#define ARIZONA_MICMUTE_RATE_SHIFT 11 /* MICMUTE_RATE - [14:11] */
2120#define ARIZONA_MICMUTE_RATE_WIDTH 4 /* MICMUTE_RATE - [14:11] */
2121#define ARIZONA_MICMUTE_MIX_ENA 0x0040 /* MICMUTE_MIX_ENA */
2122#define ARIZONA_MICMUTE_MIX_ENA_MASK 0x0040 /* MICMUTE_MIX_ENA */
2123#define ARIZONA_MICMUTE_MIX_ENA_SHIFT 6 /* MICMUTE_MIX_ENA */
2124#define ARIZONA_MICMUTE_MIX_ENA_WIDTH 1 /* MICMUTE_MIX_ENA */
2125
2126/*
2127 * R715 (0x2CB) - Isolation control
2128 */
2129#define ARIZONA_ISOLATE_DCVDD1 0x0001 /* ISOLATE_DCVDD1 */
2130#define ARIZONA_ISOLATE_DCVDD1_MASK 0x0001 /* ISOLATE_DCVDD1 */
2131#define ARIZONA_ISOLATE_DCVDD1_SHIFT 0 /* ISOLATE_DCVDD1 */
2132#define ARIZONA_ISOLATE_DCVDD1_WIDTH 1 /* ISOLATE_DCVDD1 */
2133
2134/*
2135 * R723 (0x2D3) - Jack detect analogue
2136 */
2137#define ARIZONA_JD2_ENA 0x0002 /* JD2_ENA */
2138#define ARIZONA_JD2_ENA_MASK 0x0002 /* JD2_ENA */
2139#define ARIZONA_JD2_ENA_SHIFT 1 /* JD2_ENA */
2140#define ARIZONA_JD2_ENA_WIDTH 1 /* JD2_ENA */
2141#define ARIZONA_JD1_ENA 0x0001 /* JD1_ENA */
2142#define ARIZONA_JD1_ENA_MASK 0x0001 /* JD1_ENA */
2143#define ARIZONA_JD1_ENA_SHIFT 0 /* JD1_ENA */
2144#define ARIZONA_JD1_ENA_WIDTH 1 /* JD1_ENA */
2145
2146/*
2147 * R768 (0x300) - Input Enables
2148 */
2149#define ARIZONA_IN4L_ENA 0x0080 /* IN4L_ENA */
2150#define ARIZONA_IN4L_ENA_MASK 0x0080 /* IN4L_ENA */
2151#define ARIZONA_IN4L_ENA_SHIFT 7 /* IN4L_ENA */
2152#define ARIZONA_IN4L_ENA_WIDTH 1 /* IN4L_ENA */
2153#define ARIZONA_IN4R_ENA 0x0040 /* IN4R_ENA */
2154#define ARIZONA_IN4R_ENA_MASK 0x0040 /* IN4R_ENA */
2155#define ARIZONA_IN4R_ENA_SHIFT 6 /* IN4R_ENA */
2156#define ARIZONA_IN4R_ENA_WIDTH 1 /* IN4R_ENA */
2157#define ARIZONA_IN3L_ENA 0x0020 /* IN3L_ENA */
2158#define ARIZONA_IN3L_ENA_MASK 0x0020 /* IN3L_ENA */
2159#define ARIZONA_IN3L_ENA_SHIFT 5 /* IN3L_ENA */
2160#define ARIZONA_IN3L_ENA_WIDTH 1 /* IN3L_ENA */
2161#define ARIZONA_IN3R_ENA 0x0010 /* IN3R_ENA */
2162#define ARIZONA_IN3R_ENA_MASK 0x0010 /* IN3R_ENA */
2163#define ARIZONA_IN3R_ENA_SHIFT 4 /* IN3R_ENA */
2164#define ARIZONA_IN3R_ENA_WIDTH 1 /* IN3R_ENA */
2165#define ARIZONA_IN2L_ENA 0x0008 /* IN2L_ENA */
2166#define ARIZONA_IN2L_ENA_MASK 0x0008 /* IN2L_ENA */
2167#define ARIZONA_IN2L_ENA_SHIFT 3 /* IN2L_ENA */
2168#define ARIZONA_IN2L_ENA_WIDTH 1 /* IN2L_ENA */
2169#define ARIZONA_IN2R_ENA 0x0004 /* IN2R_ENA */
2170#define ARIZONA_IN2R_ENA_MASK 0x0004 /* IN2R_ENA */
2171#define ARIZONA_IN2R_ENA_SHIFT 2 /* IN2R_ENA */
2172#define ARIZONA_IN2R_ENA_WIDTH 1 /* IN2R_ENA */
2173#define ARIZONA_IN1L_ENA 0x0002 /* IN1L_ENA */
2174#define ARIZONA_IN1L_ENA_MASK 0x0002 /* IN1L_ENA */
2175#define ARIZONA_IN1L_ENA_SHIFT 1 /* IN1L_ENA */
2176#define ARIZONA_IN1L_ENA_WIDTH 1 /* IN1L_ENA */
2177#define ARIZONA_IN1R_ENA 0x0001 /* IN1R_ENA */
2178#define ARIZONA_IN1R_ENA_MASK 0x0001 /* IN1R_ENA */
2179#define ARIZONA_IN1R_ENA_SHIFT 0 /* IN1R_ENA */
2180#define ARIZONA_IN1R_ENA_WIDTH 1 /* IN1R_ENA */
2181
2182/*
2183 * R776 (0x308) - Input Rate
2184 */
2185#define ARIZONA_IN_RATE_MASK 0x7800 /* IN_RATE - [14:11] */
2186#define ARIZONA_IN_RATE_SHIFT 11 /* IN_RATE - [14:11] */
2187#define ARIZONA_IN_RATE_WIDTH 4 /* IN_RATE - [14:11] */
2188
2189/*
2190 * R777 (0x309) - Input Volume Ramp
2191 */
2192#define ARIZONA_IN_VD_RAMP_MASK 0x0070 /* IN_VD_RAMP - [6:4] */
2193#define ARIZONA_IN_VD_RAMP_SHIFT 4 /* IN_VD_RAMP - [6:4] */
2194#define ARIZONA_IN_VD_RAMP_WIDTH 3 /* IN_VD_RAMP - [6:4] */
2195#define ARIZONA_IN_VI_RAMP_MASK 0x0007 /* IN_VI_RAMP - [2:0] */
2196#define ARIZONA_IN_VI_RAMP_SHIFT 0 /* IN_VI_RAMP - [2:0] */
2197#define ARIZONA_IN_VI_RAMP_WIDTH 3 /* IN_VI_RAMP - [2:0] */
2198
2199/*
2200 * R784 (0x310) - IN1L Control
2201 */
2202#define ARIZONA_IN1_OSR_MASK 0x6000 /* IN1_OSR - [14:13] */
2203#define ARIZONA_IN1_OSR_SHIFT 13 /* IN1_OSR - [14:13] */
2204#define ARIZONA_IN1_OSR_WIDTH 2 /* IN1_OSR - [14:13] */
2205#define ARIZONA_IN1_DMIC_SUP_MASK 0x1800 /* IN1_DMIC_SUP - [12:11] */
2206#define ARIZONA_IN1_DMIC_SUP_SHIFT 11 /* IN1_DMIC_SUP - [12:11] */
2207#define ARIZONA_IN1_DMIC_SUP_WIDTH 2 /* IN1_DMIC_SUP - [12:11] */
2208#define ARIZONA_IN1_MODE_MASK 0x0600 /* IN1_MODE - [10:9] */
2209#define ARIZONA_IN1_MODE_SHIFT 9 /* IN1_MODE - [10:9] */
2210#define ARIZONA_IN1_MODE_WIDTH 2 /* IN1_MODE - [10:9] */
2211#define ARIZONA_IN1L_PGA_VOL_MASK 0x00FE /* IN1L_PGA_VOL - [7:1] */
2212#define ARIZONA_IN1L_PGA_VOL_SHIFT 1 /* IN1L_PGA_VOL - [7:1] */
2213#define ARIZONA_IN1L_PGA_VOL_WIDTH 7 /* IN1L_PGA_VOL - [7:1] */
2214
2215/*
2216 * R785 (0x311) - ADC Digital Volume 1L
2217 */
2218#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2219#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2220#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2221#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2222#define ARIZONA_IN1L_MUTE 0x0100 /* IN1L_MUTE */
2223#define ARIZONA_IN1L_MUTE_MASK 0x0100 /* IN1L_MUTE */
2224#define ARIZONA_IN1L_MUTE_SHIFT 8 /* IN1L_MUTE */
2225#define ARIZONA_IN1L_MUTE_WIDTH 1 /* IN1L_MUTE */
2226#define ARIZONA_IN1L_DIG_VOL_MASK 0x00FF /* IN1L_DIG_VOL - [7:0] */
2227#define ARIZONA_IN1L_DIG_VOL_SHIFT 0 /* IN1L_DIG_VOL - [7:0] */
2228#define ARIZONA_IN1L_DIG_VOL_WIDTH 8 /* IN1L_DIG_VOL - [7:0] */
2229
2230/*
2231 * R786 (0x312) - DMIC1L Control
2232 */
2233#define ARIZONA_IN1_DMICL_DLY_MASK 0x003F /* IN1_DMICL_DLY - [5:0] */
2234#define ARIZONA_IN1_DMICL_DLY_SHIFT 0 /* IN1_DMICL_DLY - [5:0] */
2235#define ARIZONA_IN1_DMICL_DLY_WIDTH 6 /* IN1_DMICL_DLY - [5:0] */
2236
2237/*
2238 * R788 (0x314) - IN1R Control
2239 */
2240#define ARIZONA_IN1R_PGA_VOL_MASK 0x00FE /* IN1R_PGA_VOL - [7:1] */
2241#define ARIZONA_IN1R_PGA_VOL_SHIFT 1 /* IN1R_PGA_VOL - [7:1] */
2242#define ARIZONA_IN1R_PGA_VOL_WIDTH 7 /* IN1R_PGA_VOL - [7:1] */
2243
2244/*
2245 * R789 (0x315) - ADC Digital Volume 1R
2246 */
2247#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2248#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2249#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2250#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2251#define ARIZONA_IN1R_MUTE 0x0100 /* IN1R_MUTE */
2252#define ARIZONA_IN1R_MUTE_MASK 0x0100 /* IN1R_MUTE */
2253#define ARIZONA_IN1R_MUTE_SHIFT 8 /* IN1R_MUTE */
2254#define ARIZONA_IN1R_MUTE_WIDTH 1 /* IN1R_MUTE */
2255#define ARIZONA_IN1R_DIG_VOL_MASK 0x00FF /* IN1R_DIG_VOL - [7:0] */
2256#define ARIZONA_IN1R_DIG_VOL_SHIFT 0 /* IN1R_DIG_VOL - [7:0] */
2257#define ARIZONA_IN1R_DIG_VOL_WIDTH 8 /* IN1R_DIG_VOL - [7:0] */
2258
2259/*
2260 * R790 (0x316) - DMIC1R Control
2261 */
2262#define ARIZONA_IN1_DMICR_DLY_MASK 0x003F /* IN1_DMICR_DLY - [5:0] */
2263#define ARIZONA_IN1_DMICR_DLY_SHIFT 0 /* IN1_DMICR_DLY - [5:0] */
2264#define ARIZONA_IN1_DMICR_DLY_WIDTH 6 /* IN1_DMICR_DLY - [5:0] */
2265
2266/*
2267 * R792 (0x318) - IN2L Control
2268 */
2269#define ARIZONA_IN2_OSR_MASK 0x6000 /* IN2_OSR - [14:13] */
2270#define ARIZONA_IN2_OSR_SHIFT 13 /* IN2_OSR - [14:13] */
2271#define ARIZONA_IN2_OSR_WIDTH 2 /* IN2_OSR - [14:13] */
2272#define ARIZONA_IN2_DMIC_SUP_MASK 0x1800 /* IN2_DMIC_SUP - [12:11] */
2273#define ARIZONA_IN2_DMIC_SUP_SHIFT 11 /* IN2_DMIC_SUP - [12:11] */
2274#define ARIZONA_IN2_DMIC_SUP_WIDTH 2 /* IN2_DMIC_SUP - [12:11] */
2275#define ARIZONA_IN2_MODE_MASK 0x0600 /* IN2_MODE - [10:9] */
2276#define ARIZONA_IN2_MODE_SHIFT 9 /* IN2_MODE - [10:9] */
2277#define ARIZONA_IN2_MODE_WIDTH 2 /* IN2_MODE - [10:9] */
2278#define ARIZONA_IN2L_PGA_VOL_MASK 0x00FE /* IN2L_PGA_VOL - [7:1] */
2279#define ARIZONA_IN2L_PGA_VOL_SHIFT 1 /* IN2L_PGA_VOL - [7:1] */
2280#define ARIZONA_IN2L_PGA_VOL_WIDTH 7 /* IN2L_PGA_VOL - [7:1] */
2281
2282/*
2283 * R793 (0x319) - ADC Digital Volume 2L
2284 */
2285#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2286#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2287#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2288#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2289#define ARIZONA_IN2L_MUTE 0x0100 /* IN2L_MUTE */
2290#define ARIZONA_IN2L_MUTE_MASK 0x0100 /* IN2L_MUTE */
2291#define ARIZONA_IN2L_MUTE_SHIFT 8 /* IN2L_MUTE */
2292#define ARIZONA_IN2L_MUTE_WIDTH 1 /* IN2L_MUTE */
2293#define ARIZONA_IN2L_DIG_VOL_MASK 0x00FF /* IN2L_DIG_VOL - [7:0] */
2294#define ARIZONA_IN2L_DIG_VOL_SHIFT 0 /* IN2L_DIG_VOL - [7:0] */
2295#define ARIZONA_IN2L_DIG_VOL_WIDTH 8 /* IN2L_DIG_VOL - [7:0] */
2296
2297/*
2298 * R794 (0x31A) - DMIC2L Control
2299 */
2300#define ARIZONA_IN2_DMICL_DLY_MASK 0x003F /* IN2_DMICL_DLY - [5:0] */
2301#define ARIZONA_IN2_DMICL_DLY_SHIFT 0 /* IN2_DMICL_DLY - [5:0] */
2302#define ARIZONA_IN2_DMICL_DLY_WIDTH 6 /* IN2_DMICL_DLY - [5:0] */
2303
2304/*
2305 * R796 (0x31C) - IN2R Control
2306 */
2307#define ARIZONA_IN2R_PGA_VOL_MASK 0x00FE /* IN2R_PGA_VOL - [7:1] */
2308#define ARIZONA_IN2R_PGA_VOL_SHIFT 1 /* IN2R_PGA_VOL - [7:1] */
2309#define ARIZONA_IN2R_PGA_VOL_WIDTH 7 /* IN2R_PGA_VOL - [7:1] */
2310
2311/*
2312 * R797 (0x31D) - ADC Digital Volume 2R
2313 */
2314#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2315#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2316#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2317#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2318#define ARIZONA_IN2R_MUTE 0x0100 /* IN2R_MUTE */
2319#define ARIZONA_IN2R_MUTE_MASK 0x0100 /* IN2R_MUTE */
2320#define ARIZONA_IN2R_MUTE_SHIFT 8 /* IN2R_MUTE */
2321#define ARIZONA_IN2R_MUTE_WIDTH 1 /* IN2R_MUTE */
2322#define ARIZONA_IN2R_DIG_VOL_MASK 0x00FF /* IN2R_DIG_VOL - [7:0] */
2323#define ARIZONA_IN2R_DIG_VOL_SHIFT 0 /* IN2R_DIG_VOL - [7:0] */
2324#define ARIZONA_IN2R_DIG_VOL_WIDTH 8 /* IN2R_DIG_VOL - [7:0] */
2325
2326/*
2327 * R798 (0x31E) - DMIC2R Control
2328 */
2329#define ARIZONA_IN2_DMICR_DLY_MASK 0x003F /* IN2_DMICR_DLY - [5:0] */
2330#define ARIZONA_IN2_DMICR_DLY_SHIFT 0 /* IN2_DMICR_DLY - [5:0] */
2331#define ARIZONA_IN2_DMICR_DLY_WIDTH 6 /* IN2_DMICR_DLY - [5:0] */
2332
2333/*
2334 * R800 (0x320) - IN3L Control
2335 */
2336#define ARIZONA_IN3_OSR_MASK 0x6000 /* IN3_OSR - [14:13] */
2337#define ARIZONA_IN3_OSR_SHIFT 13 /* IN3_OSR - [14:13] */
2338#define ARIZONA_IN3_OSR_WIDTH 2 /* IN3_OSR - [14:13] */
2339#define ARIZONA_IN3_DMIC_SUP_MASK 0x1800 /* IN3_DMIC_SUP - [12:11] */
2340#define ARIZONA_IN3_DMIC_SUP_SHIFT 11 /* IN3_DMIC_SUP - [12:11] */
2341#define ARIZONA_IN3_DMIC_SUP_WIDTH 2 /* IN3_DMIC_SUP - [12:11] */
2342#define ARIZONA_IN3_MODE_MASK 0x0600 /* IN3_MODE - [10:9] */
2343#define ARIZONA_IN3_MODE_SHIFT 9 /* IN3_MODE - [10:9] */
2344#define ARIZONA_IN3_MODE_WIDTH 2 /* IN3_MODE - [10:9] */
2345#define ARIZONA_IN3L_PGA_VOL_MASK 0x00FE /* IN3L_PGA_VOL - [7:1] */
2346#define ARIZONA_IN3L_PGA_VOL_SHIFT 1 /* IN3L_PGA_VOL - [7:1] */
2347#define ARIZONA_IN3L_PGA_VOL_WIDTH 7 /* IN3L_PGA_VOL - [7:1] */
2348
2349/*
2350 * R801 (0x321) - ADC Digital Volume 3L
2351 */
2352#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2353#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2354#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2355#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2356#define ARIZONA_IN3L_MUTE 0x0100 /* IN3L_MUTE */
2357#define ARIZONA_IN3L_MUTE_MASK 0x0100 /* IN3L_MUTE */
2358#define ARIZONA_IN3L_MUTE_SHIFT 8 /* IN3L_MUTE */
2359#define ARIZONA_IN3L_MUTE_WIDTH 1 /* IN3L_MUTE */
2360#define ARIZONA_IN3L_DIG_VOL_MASK 0x00FF /* IN3L_DIG_VOL - [7:0] */
2361#define ARIZONA_IN3L_DIG_VOL_SHIFT 0 /* IN3L_DIG_VOL - [7:0] */
2362#define ARIZONA_IN3L_DIG_VOL_WIDTH 8 /* IN3L_DIG_VOL - [7:0] */
2363
2364/*
2365 * R802 (0x322) - DMIC3L Control
2366 */
2367#define ARIZONA_IN3_DMICL_DLY_MASK 0x003F /* IN3_DMICL_DLY - [5:0] */
2368#define ARIZONA_IN3_DMICL_DLY_SHIFT 0 /* IN3_DMICL_DLY - [5:0] */
2369#define ARIZONA_IN3_DMICL_DLY_WIDTH 6 /* IN3_DMICL_DLY - [5:0] */
2370
2371/*
2372 * R804 (0x324) - IN3R Control
2373 */
2374#define ARIZONA_IN3R_PGA_VOL_MASK 0x00FE /* IN3R_PGA_VOL - [7:1] */
2375#define ARIZONA_IN3R_PGA_VOL_SHIFT 1 /* IN3R_PGA_VOL - [7:1] */
2376#define ARIZONA_IN3R_PGA_VOL_WIDTH 7 /* IN3R_PGA_VOL - [7:1] */
2377
2378/*
2379 * R805 (0x325) - ADC Digital Volume 3R
2380 */
2381#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2382#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2383#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2384#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2385#define ARIZONA_IN3R_MUTE 0x0100 /* IN3R_MUTE */
2386#define ARIZONA_IN3R_MUTE_MASK 0x0100 /* IN3R_MUTE */
2387#define ARIZONA_IN3R_MUTE_SHIFT 8 /* IN3R_MUTE */
2388#define ARIZONA_IN3R_MUTE_WIDTH 1 /* IN3R_MUTE */
2389#define ARIZONA_IN3R_DIG_VOL_MASK 0x00FF /* IN3R_DIG_VOL - [7:0] */
2390#define ARIZONA_IN3R_DIG_VOL_SHIFT 0 /* IN3R_DIG_VOL - [7:0] */
2391#define ARIZONA_IN3R_DIG_VOL_WIDTH 8 /* IN3R_DIG_VOL - [7:0] */
2392
2393/*
2394 * R806 (0x326) - DMIC3R Control
2395 */
2396#define ARIZONA_IN3_DMICR_DLY_MASK 0x003F /* IN3_DMICR_DLY - [5:0] */
2397#define ARIZONA_IN3_DMICR_DLY_SHIFT 0 /* IN3_DMICR_DLY - [5:0] */
2398#define ARIZONA_IN3_DMICR_DLY_WIDTH 6 /* IN3_DMICR_DLY - [5:0] */
2399
2400/*
2401 * R808 (0x328) - IN4 Control
2402 */
2403#define ARIZONA_IN4_OSR_MASK 0x6000 /* IN4_OSR - [14:13] */
2404#define ARIZONA_IN4_OSR_SHIFT 13 /* IN4_OSR - [14:13] */
2405#define ARIZONA_IN4_OSR_WIDTH 2 /* IN4_OSR - [14:13] */
2406#define ARIZONA_IN4_DMIC_SUP_MASK 0x1800 /* IN4_DMIC_SUP - [12:11] */
2407#define ARIZONA_IN4_DMIC_SUP_SHIFT 11 /* IN4_DMIC_SUP - [12:11] */
2408#define ARIZONA_IN4_DMIC_SUP_WIDTH 2 /* IN4_DMIC_SUP - [12:11] */
2409
2410/*
2411 * R809 (0x329) - ADC Digital Volume 4L
2412 */
2413#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2414#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2415#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2416#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2417#define ARIZONA_IN4L_MUTE 0x0100 /* IN4L_MUTE */
2418#define ARIZONA_IN4L_MUTE_MASK 0x0100 /* IN4L_MUTE */
2419#define ARIZONA_IN4L_MUTE_SHIFT 8 /* IN4L_MUTE */
2420#define ARIZONA_IN4L_MUTE_WIDTH 1 /* IN4L_MUTE */
2421#define ARIZONA_IN4L_DIG_VOL_MASK 0x00FF /* IN4L_DIG_VOL - [7:0] */
2422#define ARIZONA_IN4L_DIG_VOL_SHIFT 0 /* IN4L_DIG_VOL - [7:0] */
2423#define ARIZONA_IN4L_DIG_VOL_WIDTH 8 /* IN4L_DIG_VOL - [7:0] */
2424
2425/*
2426 * R810 (0x32A) - DMIC4L Control
2427 */
2428#define ARIZONA_IN4L_DMIC_DLY_MASK 0x003F /* IN4L_DMIC_DLY - [5:0] */
2429#define ARIZONA_IN4L_DMIC_DLY_SHIFT 0 /* IN4L_DMIC_DLY - [5:0] */
2430#define ARIZONA_IN4L_DMIC_DLY_WIDTH 6 /* IN4L_DMIC_DLY - [5:0] */
2431
2432/*
2433 * R813 (0x32D) - ADC Digital Volume 4R
2434 */
2435#define ARIZONA_IN_VU 0x0200 /* IN_VU */
2436#define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */
2437#define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */
2438#define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */
2439#define ARIZONA_IN4R_MUTE 0x0100 /* IN4R_MUTE */
2440#define ARIZONA_IN4R_MUTE_MASK 0x0100 /* IN4R_MUTE */
2441#define ARIZONA_IN4R_MUTE_SHIFT 8 /* IN4R_MUTE */
2442#define ARIZONA_IN4R_MUTE_WIDTH 1 /* IN4R_MUTE */
2443#define ARIZONA_IN4R_DIG_VOL_MASK 0x00FF /* IN4R_DIG_VOL - [7:0] */
2444#define ARIZONA_IN4R_DIG_VOL_SHIFT 0 /* IN4R_DIG_VOL - [7:0] */
2445#define ARIZONA_IN4R_DIG_VOL_WIDTH 8 /* IN4R_DIG_VOL - [7:0] */
2446
2447/*
2448 * R814 (0x32E) - DMIC4R Control
2449 */
2450#define ARIZONA_IN4R_DMIC_DLY_MASK 0x003F /* IN4R_DMIC_DLY - [5:0] */
2451#define ARIZONA_IN4R_DMIC_DLY_SHIFT 0 /* IN4R_DMIC_DLY - [5:0] */
2452#define ARIZONA_IN4R_DMIC_DLY_WIDTH 6 /* IN4R_DMIC_DLY - [5:0] */
2453
2454/*
2455 * R1024 (0x400) - Output Enables 1
2456 */
2457#define ARIZONA_OUT6L_ENA 0x0800 /* OUT6L_ENA */
2458#define ARIZONA_OUT6L_ENA_MASK 0x0800 /* OUT6L_ENA */
2459#define ARIZONA_OUT6L_ENA_SHIFT 11 /* OUT6L_ENA */
2460#define ARIZONA_OUT6L_ENA_WIDTH 1 /* OUT6L_ENA */
2461#define ARIZONA_OUT6R_ENA 0x0400 /* OUT6R_ENA */
2462#define ARIZONA_OUT6R_ENA_MASK 0x0400 /* OUT6R_ENA */
2463#define ARIZONA_OUT6R_ENA_SHIFT 10 /* OUT6R_ENA */
2464#define ARIZONA_OUT6R_ENA_WIDTH 1 /* OUT6R_ENA */
2465#define ARIZONA_OUT5L_ENA 0x0200 /* OUT5L_ENA */
2466#define ARIZONA_OUT5L_ENA_MASK 0x0200 /* OUT5L_ENA */
2467#define ARIZONA_OUT5L_ENA_SHIFT 9 /* OUT5L_ENA */
2468#define ARIZONA_OUT5L_ENA_WIDTH 1 /* OUT5L_ENA */
2469#define ARIZONA_OUT5R_ENA 0x0100 /* OUT5R_ENA */
2470#define ARIZONA_OUT5R_ENA_MASK 0x0100 /* OUT5R_ENA */
2471#define ARIZONA_OUT5R_ENA_SHIFT 8 /* OUT5R_ENA */
2472#define ARIZONA_OUT5R_ENA_WIDTH 1 /* OUT5R_ENA */
2473#define ARIZONA_OUT4L_ENA 0x0080 /* OUT4L_ENA */
2474#define ARIZONA_OUT4L_ENA_MASK 0x0080 /* OUT4L_ENA */
2475#define ARIZONA_OUT4L_ENA_SHIFT 7 /* OUT4L_ENA */
2476#define ARIZONA_OUT4L_ENA_WIDTH 1 /* OUT4L_ENA */
2477#define ARIZONA_OUT4R_ENA 0x0040 /* OUT4R_ENA */
2478#define ARIZONA_OUT4R_ENA_MASK 0x0040 /* OUT4R_ENA */
2479#define ARIZONA_OUT4R_ENA_SHIFT 6 /* OUT4R_ENA */
2480#define ARIZONA_OUT4R_ENA_WIDTH 1 /* OUT4R_ENA */
2481#define ARIZONA_OUT3L_ENA 0x0020 /* OUT3L_ENA */
2482#define ARIZONA_OUT3L_ENA_MASK 0x0020 /* OUT3L_ENA */
2483#define ARIZONA_OUT3L_ENA_SHIFT 5 /* OUT3L_ENA */
2484#define ARIZONA_OUT3L_ENA_WIDTH 1 /* OUT3L_ENA */
2485#define ARIZONA_OUT3R_ENA 0x0010 /* OUT3R_ENA */
2486#define ARIZONA_OUT3R_ENA_MASK 0x0010 /* OUT3R_ENA */
2487#define ARIZONA_OUT3R_ENA_SHIFT 4 /* OUT3R_ENA */
2488#define ARIZONA_OUT3R_ENA_WIDTH 1 /* OUT3R_ENA */
2489#define ARIZONA_OUT2L_ENA 0x0008 /* OUT2L_ENA */
2490#define ARIZONA_OUT2L_ENA_MASK 0x0008 /* OUT2L_ENA */
2491#define ARIZONA_OUT2L_ENA_SHIFT 3 /* OUT2L_ENA */
2492#define ARIZONA_OUT2L_ENA_WIDTH 1 /* OUT2L_ENA */
2493#define ARIZONA_OUT2R_ENA 0x0004 /* OUT2R_ENA */
2494#define ARIZONA_OUT2R_ENA_MASK 0x0004 /* OUT2R_ENA */
2495#define ARIZONA_OUT2R_ENA_SHIFT 2 /* OUT2R_ENA */
2496#define ARIZONA_OUT2R_ENA_WIDTH 1 /* OUT2R_ENA */
2497#define ARIZONA_OUT1L_ENA 0x0002 /* OUT1L_ENA */
2498#define ARIZONA_OUT1L_ENA_MASK 0x0002 /* OUT1L_ENA */
2499#define ARIZONA_OUT1L_ENA_SHIFT 1 /* OUT1L_ENA */
2500#define ARIZONA_OUT1L_ENA_WIDTH 1 /* OUT1L_ENA */
2501#define ARIZONA_OUT1R_ENA 0x0001 /* OUT1R_ENA */
2502#define ARIZONA_OUT1R_ENA_MASK 0x0001 /* OUT1R_ENA */
2503#define ARIZONA_OUT1R_ENA_SHIFT 0 /* OUT1R_ENA */
2504#define ARIZONA_OUT1R_ENA_WIDTH 1 /* OUT1R_ENA */
2505
2506/*
2507 * R1025 (0x401) - Output Status 1
2508 */
2509#define ARIZONA_OUT6L_ENA_STS 0x0800 /* OUT6L_ENA_STS */
2510#define ARIZONA_OUT6L_ENA_STS_MASK 0x0800 /* OUT6L_ENA_STS */
2511#define ARIZONA_OUT6L_ENA_STS_SHIFT 11 /* OUT6L_ENA_STS */
2512#define ARIZONA_OUT6L_ENA_STS_WIDTH 1 /* OUT6L_ENA_STS */
2513#define ARIZONA_OUT6R_ENA_STS 0x0400 /* OUT6R_ENA_STS */
2514#define ARIZONA_OUT6R_ENA_STS_MASK 0x0400 /* OUT6R_ENA_STS */
2515#define ARIZONA_OUT6R_ENA_STS_SHIFT 10 /* OUT6R_ENA_STS */
2516#define ARIZONA_OUT6R_ENA_STS_WIDTH 1 /* OUT6R_ENA_STS */
2517#define ARIZONA_OUT5L_ENA_STS 0x0200 /* OUT5L_ENA_STS */
2518#define ARIZONA_OUT5L_ENA_STS_MASK 0x0200 /* OUT5L_ENA_STS */
2519#define ARIZONA_OUT5L_ENA_STS_SHIFT 9 /* OUT5L_ENA_STS */
2520#define ARIZONA_OUT5L_ENA_STS_WIDTH 1 /* OUT5L_ENA_STS */
2521#define ARIZONA_OUT5R_ENA_STS 0x0100 /* OUT5R_ENA_STS */
2522#define ARIZONA_OUT5R_ENA_STS_MASK 0x0100 /* OUT5R_ENA_STS */
2523#define ARIZONA_OUT5R_ENA_STS_SHIFT 8 /* OUT5R_ENA_STS */
2524#define ARIZONA_OUT5R_ENA_STS_WIDTH 1 /* OUT5R_ENA_STS */
2525#define ARIZONA_OUT4L_ENA_STS 0x0080 /* OUT4L_ENA_STS */
2526#define ARIZONA_OUT4L_ENA_STS_MASK 0x0080 /* OUT4L_ENA_STS */
2527#define ARIZONA_OUT4L_ENA_STS_SHIFT 7 /* OUT4L_ENA_STS */
2528#define ARIZONA_OUT4L_ENA_STS_WIDTH 1 /* OUT4L_ENA_STS */
2529#define ARIZONA_OUT4R_ENA_STS 0x0040 /* OUT4R_ENA_STS */
2530#define ARIZONA_OUT4R_ENA_STS_MASK 0x0040 /* OUT4R_ENA_STS */
2531#define ARIZONA_OUT4R_ENA_STS_SHIFT 6 /* OUT4R_ENA_STS */
2532#define ARIZONA_OUT4R_ENA_STS_WIDTH 1 /* OUT4R_ENA_STS */
2533
2534/*
2535 * R1032 (0x408) - Output Rate 1
2536 */
2537#define ARIZONA_OUT_RATE_MASK 0x7800 /* OUT_RATE - [14:11] */
2538#define ARIZONA_OUT_RATE_SHIFT 11 /* OUT_RATE - [14:11] */
2539#define ARIZONA_OUT_RATE_WIDTH 4 /* OUT_RATE - [14:11] */
2540
2541/*
2542 * R1033 (0x409) - Output Volume Ramp
2543 */
2544#define ARIZONA_OUT_VD_RAMP_MASK 0x0070 /* OUT_VD_RAMP - [6:4] */
2545#define ARIZONA_OUT_VD_RAMP_SHIFT 4 /* OUT_VD_RAMP - [6:4] */
2546#define ARIZONA_OUT_VD_RAMP_WIDTH 3 /* OUT_VD_RAMP - [6:4] */
2547#define ARIZONA_OUT_VI_RAMP_MASK 0x0007 /* OUT_VI_RAMP - [2:0] */
2548#define ARIZONA_OUT_VI_RAMP_SHIFT 0 /* OUT_VI_RAMP - [2:0] */
2549#define ARIZONA_OUT_VI_RAMP_WIDTH 3 /* OUT_VI_RAMP - [2:0] */
2550
2551/*
2552 * R1040 (0x410) - Output Path Config 1L
2553 */
2554#define ARIZONA_OUT1_LP_MODE 0x8000 /* OUT1_LP_MODE */
2555#define ARIZONA_OUT1_LP_MODE_MASK 0x8000 /* OUT1_LP_MODE */
2556#define ARIZONA_OUT1_LP_MODE_SHIFT 15 /* OUT1_LP_MODE */
2557#define ARIZONA_OUT1_LP_MODE_WIDTH 1 /* OUT1_LP_MODE */
2558#define ARIZONA_OUT1_OSR 0x2000 /* OUT1_OSR */
2559#define ARIZONA_OUT1_OSR_MASK 0x2000 /* OUT1_OSR */
2560#define ARIZONA_OUT1_OSR_SHIFT 13 /* OUT1_OSR */
2561#define ARIZONA_OUT1_OSR_WIDTH 1 /* OUT1_OSR */
2562#define ARIZONA_OUT1_MONO 0x1000 /* OUT1_MONO */
2563#define ARIZONA_OUT1_MONO_MASK 0x1000 /* OUT1_MONO */
2564#define ARIZONA_OUT1_MONO_SHIFT 12 /* OUT1_MONO */
2565#define ARIZONA_OUT1_MONO_WIDTH 1 /* OUT1_MONO */
2566#define ARIZONA_OUT1L_ANC_SRC_MASK 0x0C00 /* OUT1L_ANC_SRC - [11:10] */
2567#define ARIZONA_OUT1L_ANC_SRC_SHIFT 10 /* OUT1L_ANC_SRC - [11:10] */
2568#define ARIZONA_OUT1L_ANC_SRC_WIDTH 2 /* OUT1L_ANC_SRC - [11:10] */
2569#define ARIZONA_OUT1L_PGA_VOL_MASK 0x00FE /* OUT1L_PGA_VOL - [7:1] */
2570#define ARIZONA_OUT1L_PGA_VOL_SHIFT 1 /* OUT1L_PGA_VOL - [7:1] */
2571#define ARIZONA_OUT1L_PGA_VOL_WIDTH 7 /* OUT1L_PGA_VOL - [7:1] */
2572
2573/*
2574 * R1041 (0x411) - DAC Digital Volume 1L
2575 */
2576#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2577#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2578#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2579#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2580#define ARIZONA_OUT1L_MUTE 0x0100 /* OUT1L_MUTE */
2581#define ARIZONA_OUT1L_MUTE_MASK 0x0100 /* OUT1L_MUTE */
2582#define ARIZONA_OUT1L_MUTE_SHIFT 8 /* OUT1L_MUTE */
2583#define ARIZONA_OUT1L_MUTE_WIDTH 1 /* OUT1L_MUTE */
2584#define ARIZONA_OUT1L_VOL_MASK 0x00FF /* OUT1L_VOL - [7:0] */
2585#define ARIZONA_OUT1L_VOL_SHIFT 0 /* OUT1L_VOL - [7:0] */
2586#define ARIZONA_OUT1L_VOL_WIDTH 8 /* OUT1L_VOL - [7:0] */
2587
2588/*
2589 * R1042 (0x412) - DAC Volume Limit 1L
2590 */
2591#define ARIZONA_OUT1L_VOL_LIM_MASK 0x00FF /* OUT1L_VOL_LIM - [7:0] */
2592#define ARIZONA_OUT1L_VOL_LIM_SHIFT 0 /* OUT1L_VOL_LIM - [7:0] */
2593#define ARIZONA_OUT1L_VOL_LIM_WIDTH 8 /* OUT1L_VOL_LIM - [7:0] */
2594
2595/*
2596 * R1043 (0x413) - Noise Gate Select 1L
2597 */
2598#define ARIZONA_OUT1L_NGATE_SRC_MASK 0x0FFF /* OUT1L_NGATE_SRC - [11:0] */
2599#define ARIZONA_OUT1L_NGATE_SRC_SHIFT 0 /* OUT1L_NGATE_SRC - [11:0] */
2600#define ARIZONA_OUT1L_NGATE_SRC_WIDTH 12 /* OUT1L_NGATE_SRC - [11:0] */
2601
2602/*
2603 * R1044 (0x414) - Output Path Config 1R
2604 */
2605#define ARIZONA_OUT1R_ANC_SRC_MASK 0x0C00 /* OUT1R_ANC_SRC - [11:10] */
2606#define ARIZONA_OUT1R_ANC_SRC_SHIFT 10 /* OUT1R_ANC_SRC - [11:10] */
2607#define ARIZONA_OUT1R_ANC_SRC_WIDTH 2 /* OUT1R_ANC_SRC - [11:10] */
2608#define ARIZONA_OUT1R_PGA_VOL_MASK 0x00FE /* OUT1R_PGA_VOL - [7:1] */
2609#define ARIZONA_OUT1R_PGA_VOL_SHIFT 1 /* OUT1R_PGA_VOL - [7:1] */
2610#define ARIZONA_OUT1R_PGA_VOL_WIDTH 7 /* OUT1R_PGA_VOL - [7:1] */
2611
2612/*
2613 * R1045 (0x415) - DAC Digital Volume 1R
2614 */
2615#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2616#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2617#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2618#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2619#define ARIZONA_OUT1R_MUTE 0x0100 /* OUT1R_MUTE */
2620#define ARIZONA_OUT1R_MUTE_MASK 0x0100 /* OUT1R_MUTE */
2621#define ARIZONA_OUT1R_MUTE_SHIFT 8 /* OUT1R_MUTE */
2622#define ARIZONA_OUT1R_MUTE_WIDTH 1 /* OUT1R_MUTE */
2623#define ARIZONA_OUT1R_VOL_MASK 0x00FF /* OUT1R_VOL - [7:0] */
2624#define ARIZONA_OUT1R_VOL_SHIFT 0 /* OUT1R_VOL - [7:0] */
2625#define ARIZONA_OUT1R_VOL_WIDTH 8 /* OUT1R_VOL - [7:0] */
2626
2627/*
2628 * R1046 (0x416) - DAC Volume Limit 1R
2629 */
2630#define ARIZONA_OUT1R_VOL_LIM_MASK 0x00FF /* OUT1R_VOL_LIM - [7:0] */
2631#define ARIZONA_OUT1R_VOL_LIM_SHIFT 0 /* OUT1R_VOL_LIM - [7:0] */
2632#define ARIZONA_OUT1R_VOL_LIM_WIDTH 8 /* OUT1R_VOL_LIM - [7:0] */
2633
2634/*
2635 * R1047 (0x417) - Noise Gate Select 1R
2636 */
2637#define ARIZONA_OUT1R_NGATE_SRC_MASK 0x0FFF /* OUT1R_NGATE_SRC - [11:0] */
2638#define ARIZONA_OUT1R_NGATE_SRC_SHIFT 0 /* OUT1R_NGATE_SRC - [11:0] */
2639#define ARIZONA_OUT1R_NGATE_SRC_WIDTH 12 /* OUT1R_NGATE_SRC - [11:0] */
2640
2641/*
2642 * R1048 (0x418) - Output Path Config 2L
2643 */
2644#define ARIZONA_OUT2_LP_MODE 0x8000 /* OUT2_LP_MODE */
2645#define ARIZONA_OUT2_LP_MODE_MASK 0x8000 /* OUT2_LP_MODE */
2646#define ARIZONA_OUT2_LP_MODE_SHIFT 15 /* OUT2_LP_MODE */
2647#define ARIZONA_OUT2_LP_MODE_WIDTH 1 /* OUT2_LP_MODE */
2648#define ARIZONA_OUT2_OSR 0x2000 /* OUT2_OSR */
2649#define ARIZONA_OUT2_OSR_MASK 0x2000 /* OUT2_OSR */
2650#define ARIZONA_OUT2_OSR_SHIFT 13 /* OUT2_OSR */
2651#define ARIZONA_OUT2_OSR_WIDTH 1 /* OUT2_OSR */
2652#define ARIZONA_OUT2_MONO 0x1000 /* OUT2_MONO */
2653#define ARIZONA_OUT2_MONO_MASK 0x1000 /* OUT2_MONO */
2654#define ARIZONA_OUT2_MONO_SHIFT 12 /* OUT2_MONO */
2655#define ARIZONA_OUT2_MONO_WIDTH 1 /* OUT2_MONO */
2656#define ARIZONA_OUT2L_ANC_SRC_MASK 0x0C00 /* OUT2L_ANC_SRC - [11:10] */
2657#define ARIZONA_OUT2L_ANC_SRC_SHIFT 10 /* OUT2L_ANC_SRC - [11:10] */
2658#define ARIZONA_OUT2L_ANC_SRC_WIDTH 2 /* OUT2L_ANC_SRC - [11:10] */
2659#define ARIZONA_OUT2L_PGA_VOL_MASK 0x00FE /* OUT2L_PGA_VOL - [7:1] */
2660#define ARIZONA_OUT2L_PGA_VOL_SHIFT 1 /* OUT2L_PGA_VOL - [7:1] */
2661#define ARIZONA_OUT2L_PGA_VOL_WIDTH 7 /* OUT2L_PGA_VOL - [7:1] */
2662
2663/*
2664 * R1049 (0x419) - DAC Digital Volume 2L
2665 */
2666#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2667#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2668#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2669#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2670#define ARIZONA_OUT2L_MUTE 0x0100 /* OUT2L_MUTE */
2671#define ARIZONA_OUT2L_MUTE_MASK 0x0100 /* OUT2L_MUTE */
2672#define ARIZONA_OUT2L_MUTE_SHIFT 8 /* OUT2L_MUTE */
2673#define ARIZONA_OUT2L_MUTE_WIDTH 1 /* OUT2L_MUTE */
2674#define ARIZONA_OUT2L_VOL_MASK 0x00FF /* OUT2L_VOL - [7:0] */
2675#define ARIZONA_OUT2L_VOL_SHIFT 0 /* OUT2L_VOL - [7:0] */
2676#define ARIZONA_OUT2L_VOL_WIDTH 8 /* OUT2L_VOL - [7:0] */
2677
2678/*
2679 * R1050 (0x41A) - DAC Volume Limit 2L
2680 */
2681#define ARIZONA_OUT2L_VOL_LIM_MASK 0x00FF /* OUT2L_VOL_LIM - [7:0] */
2682#define ARIZONA_OUT2L_VOL_LIM_SHIFT 0 /* OUT2L_VOL_LIM - [7:0] */
2683#define ARIZONA_OUT2L_VOL_LIM_WIDTH 8 /* OUT2L_VOL_LIM - [7:0] */
2684
2685/*
2686 * R1051 (0x41B) - Noise Gate Select 2L
2687 */
2688#define ARIZONA_OUT2L_NGATE_SRC_MASK 0x0FFF /* OUT2L_NGATE_SRC - [11:0] */
2689#define ARIZONA_OUT2L_NGATE_SRC_SHIFT 0 /* OUT2L_NGATE_SRC - [11:0] */
2690#define ARIZONA_OUT2L_NGATE_SRC_WIDTH 12 /* OUT2L_NGATE_SRC - [11:0] */
2691
2692/*
2693 * R1052 (0x41C) - Output Path Config 2R
2694 */
2695#define ARIZONA_OUT2R_ANC_SRC_MASK 0x0C00 /* OUT2R_ANC_SRC - [11:10] */
2696#define ARIZONA_OUT2R_ANC_SRC_SHIFT 10 /* OUT2R_ANC_SRC - [11:10] */
2697#define ARIZONA_OUT2R_ANC_SRC_WIDTH 2 /* OUT2R_ANC_SRC - [11:10] */
2698#define ARIZONA_OUT2R_PGA_VOL_MASK 0x00FE /* OUT2R_PGA_VOL - [7:1] */
2699#define ARIZONA_OUT2R_PGA_VOL_SHIFT 1 /* OUT2R_PGA_VOL - [7:1] */
2700#define ARIZONA_OUT2R_PGA_VOL_WIDTH 7 /* OUT2R_PGA_VOL - [7:1] */
2701
2702/*
2703 * R1053 (0x41D) - DAC Digital Volume 2R
2704 */
2705#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2706#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2707#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2708#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2709#define ARIZONA_OUT2R_MUTE 0x0100 /* OUT2R_MUTE */
2710#define ARIZONA_OUT2R_MUTE_MASK 0x0100 /* OUT2R_MUTE */
2711#define ARIZONA_OUT2R_MUTE_SHIFT 8 /* OUT2R_MUTE */
2712#define ARIZONA_OUT2R_MUTE_WIDTH 1 /* OUT2R_MUTE */
2713#define ARIZONA_OUT2R_VOL_MASK 0x00FF /* OUT2R_VOL - [7:0] */
2714#define ARIZONA_OUT2R_VOL_SHIFT 0 /* OUT2R_VOL - [7:0] */
2715#define ARIZONA_OUT2R_VOL_WIDTH 8 /* OUT2R_VOL - [7:0] */
2716
2717/*
2718 * R1054 (0x41E) - DAC Volume Limit 2R
2719 */
2720#define ARIZONA_OUT2R_VOL_LIM_MASK 0x00FF /* OUT2R_VOL_LIM - [7:0] */
2721#define ARIZONA_OUT2R_VOL_LIM_SHIFT 0 /* OUT2R_VOL_LIM - [7:0] */
2722#define ARIZONA_OUT2R_VOL_LIM_WIDTH 8 /* OUT2R_VOL_LIM - [7:0] */
2723
2724/*
2725 * R1055 (0x41F) - Noise Gate Select 2R
2726 */
2727#define ARIZONA_OUT2R_NGATE_SRC_MASK 0x0FFF /* OUT2R_NGATE_SRC - [11:0] */
2728#define ARIZONA_OUT2R_NGATE_SRC_SHIFT 0 /* OUT2R_NGATE_SRC - [11:0] */
2729#define ARIZONA_OUT2R_NGATE_SRC_WIDTH 12 /* OUT2R_NGATE_SRC - [11:0] */
2730
2731/*
2732 * R1056 (0x420) - Output Path Config 3L
2733 */
2734#define ARIZONA_OUT3_LP_MODE 0x8000 /* OUT3_LP_MODE */
2735#define ARIZONA_OUT3_LP_MODE_MASK 0x8000 /* OUT3_LP_MODE */
2736#define ARIZONA_OUT3_LP_MODE_SHIFT 15 /* OUT3_LP_MODE */
2737#define ARIZONA_OUT3_LP_MODE_WIDTH 1 /* OUT3_LP_MODE */
2738#define ARIZONA_OUT3_OSR 0x2000 /* OUT3_OSR */
2739#define ARIZONA_OUT3_OSR_MASK 0x2000 /* OUT3_OSR */
2740#define ARIZONA_OUT3_OSR_SHIFT 13 /* OUT3_OSR */
2741#define ARIZONA_OUT3_OSR_WIDTH 1 /* OUT3_OSR */
2742#define ARIZONA_OUT3_MONO 0x1000 /* OUT3_MONO */
2743#define ARIZONA_OUT3_MONO_MASK 0x1000 /* OUT3_MONO */
2744#define ARIZONA_OUT3_MONO_SHIFT 12 /* OUT3_MONO */
2745#define ARIZONA_OUT3_MONO_WIDTH 1 /* OUT3_MONO */
2746#define ARIZONA_OUT3L_ANC_SRC_MASK 0x0C00 /* OUT3L_ANC_SRC - [11:10] */
2747#define ARIZONA_OUT3L_ANC_SRC_SHIFT 10 /* OUT3L_ANC_SRC - [11:10] */
2748#define ARIZONA_OUT3L_ANC_SRC_WIDTH 2 /* OUT3L_ANC_SRC - [11:10] */
2749#define ARIZONA_OUT3L_PGA_VOL_MASK 0x00FE /* OUT3L_PGA_VOL - [7:1] */
2750#define ARIZONA_OUT3L_PGA_VOL_SHIFT 1 /* OUT3L_PGA_VOL - [7:1] */
2751#define ARIZONA_OUT3L_PGA_VOL_WIDTH 7 /* OUT3L_PGA_VOL - [7:1] */
2752
2753/*
2754 * R1057 (0x421) - DAC Digital Volume 3L
2755 */
2756#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2757#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2758#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2759#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2760#define ARIZONA_OUT3L_MUTE 0x0100 /* OUT3L_MUTE */
2761#define ARIZONA_OUT3L_MUTE_MASK 0x0100 /* OUT3L_MUTE */
2762#define ARIZONA_OUT3L_MUTE_SHIFT 8 /* OUT3L_MUTE */
2763#define ARIZONA_OUT3L_MUTE_WIDTH 1 /* OUT3L_MUTE */
2764#define ARIZONA_OUT3L_VOL_MASK 0x00FF /* OUT3L_VOL - [7:0] */
2765#define ARIZONA_OUT3L_VOL_SHIFT 0 /* OUT3L_VOL - [7:0] */
2766#define ARIZONA_OUT3L_VOL_WIDTH 8 /* OUT3L_VOL - [7:0] */
2767
2768/*
2769 * R1058 (0x422) - DAC Volume Limit 3L
2770 */
2771#define ARIZONA_OUT3L_VOL_LIM_MASK 0x00FF /* OUT3L_VOL_LIM - [7:0] */
2772#define ARIZONA_OUT3L_VOL_LIM_SHIFT 0 /* OUT3L_VOL_LIM - [7:0] */
2773#define ARIZONA_OUT3L_VOL_LIM_WIDTH 8 /* OUT3L_VOL_LIM - [7:0] */
2774
2775/*
2776 * R1059 (0x423) - Noise Gate Select 3L
2777 */
2778#define ARIZONA_OUT3_NGATE_SRC_MASK 0x0FFF /* OUT3_NGATE_SRC - [11:0] */
2779#define ARIZONA_OUT3_NGATE_SRC_SHIFT 0 /* OUT3_NGATE_SRC - [11:0] */
2780#define ARIZONA_OUT3_NGATE_SRC_WIDTH 12 /* OUT3_NGATE_SRC - [11:0] */
2781
2782/*
2783 * R1060 (0x424) - Output Path Config 3R
2784 */
2785#define ARIZONA_OUT3R_PGA_VOL_MASK 0x00FE /* OUT3R_PGA_VOL - [7:1] */
2786#define ARIZONA_OUT3R_PGA_VOL_SHIFT 1 /* OUT3R_PGA_VOL - [7:1] */
2787#define ARIZONA_OUT3R_PGA_VOL_WIDTH 7 /* OUT3R_PGA_VOL - [7:1] */
2788
2789/*
2790 * R1061 (0x425) - DAC Digital Volume 3R
2791 */
2792#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2793#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2794#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2795#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2796#define ARIZONA_OUT3R_MUTE 0x0100 /* OUT3R_MUTE */
2797#define ARIZONA_OUT3R_MUTE_MASK 0x0100 /* OUT3R_MUTE */
2798#define ARIZONA_OUT3R_MUTE_SHIFT 8 /* OUT3R_MUTE */
2799#define ARIZONA_OUT3R_MUTE_WIDTH 1 /* OUT3R_MUTE */
2800#define ARIZONA_OUT3R_VOL_MASK 0x00FF /* OUT3R_VOL - [7:0] */
2801#define ARIZONA_OUT3R_VOL_SHIFT 0 /* OUT3R_VOL - [7:0] */
2802#define ARIZONA_OUT3R_VOL_WIDTH 8 /* OUT3R_VOL - [7:0] */
2803
2804/*
2805 * R1062 (0x426) - DAC Volume Limit 3R
2806 */
2807#define ARIZONA_OUT3R_ANC_SRC_MASK 0x0C00 /* OUT3R_ANC_SRC - [11:10] */
2808#define ARIZONA_OUT3R_ANC_SRC_SHIFT 10 /* OUT3R_ANC_SRC - [11:10] */
2809#define ARIZONA_OUT3R_ANC_SRC_WIDTH 2 /* OUT3R_ANC_SRC - [11:10] */
2810#define ARIZONA_OUT3R_VOL_LIM_MASK 0x00FF /* OUT3R_VOL_LIM - [7:0] */
2811#define ARIZONA_OUT3R_VOL_LIM_SHIFT 0 /* OUT3R_VOL_LIM - [7:0] */
2812#define ARIZONA_OUT3R_VOL_LIM_WIDTH 8 /* OUT3R_VOL_LIM - [7:0] */
2813
2814/*
2815 * R1064 (0x428) - Output Path Config 4L
2816 */
2817#define ARIZONA_OUT4_OSR 0x2000 /* OUT4_OSR */
2818#define ARIZONA_OUT4_OSR_MASK 0x2000 /* OUT4_OSR */
2819#define ARIZONA_OUT4_OSR_SHIFT 13 /* OUT4_OSR */
2820#define ARIZONA_OUT4_OSR_WIDTH 1 /* OUT4_OSR */
2821#define ARIZONA_OUT4L_ANC_SRC_MASK 0x0C00 /* OUT4L_ANC_SRC - [11:10] */
2822#define ARIZONA_OUT4L_ANC_SRC_SHIFT 10 /* OUT4L_ANC_SRC - [11:10] */
2823#define ARIZONA_OUT4L_ANC_SRC_WIDTH 2 /* OUT4L_ANC_SRC - [11:10] */
2824
2825/*
2826 * R1065 (0x429) - DAC Digital Volume 4L
2827 */
2828#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2829#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2830#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2831#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2832#define ARIZONA_OUT4L_MUTE 0x0100 /* OUT4L_MUTE */
2833#define ARIZONA_OUT4L_MUTE_MASK 0x0100 /* OUT4L_MUTE */
2834#define ARIZONA_OUT4L_MUTE_SHIFT 8 /* OUT4L_MUTE */
2835#define ARIZONA_OUT4L_MUTE_WIDTH 1 /* OUT4L_MUTE */
2836#define ARIZONA_OUT4L_VOL_MASK 0x00FF /* OUT4L_VOL - [7:0] */
2837#define ARIZONA_OUT4L_VOL_SHIFT 0 /* OUT4L_VOL - [7:0] */
2838#define ARIZONA_OUT4L_VOL_WIDTH 8 /* OUT4L_VOL - [7:0] */
2839
2840/*
2841 * R1066 (0x42A) - Out Volume 4L
2842 */
2843#define ARIZONA_OUT4L_VOL_LIM_MASK 0x00FF /* OUT4L_VOL_LIM - [7:0] */
2844#define ARIZONA_OUT4L_VOL_LIM_SHIFT 0 /* OUT4L_VOL_LIM - [7:0] */
2845#define ARIZONA_OUT4L_VOL_LIM_WIDTH 8 /* OUT4L_VOL_LIM - [7:0] */
2846
2847/*
2848 * R1067 (0x42B) - Noise Gate Select 4L
2849 */
2850#define ARIZONA_OUT4L_NGATE_SRC_MASK 0x0FFF /* OUT4L_NGATE_SRC - [11:0] */
2851#define ARIZONA_OUT4L_NGATE_SRC_SHIFT 0 /* OUT4L_NGATE_SRC - [11:0] */
2852#define ARIZONA_OUT4L_NGATE_SRC_WIDTH 12 /* OUT4L_NGATE_SRC - [11:0] */
2853
2854/*
2855 * R1068 (0x42C) - Output Path Config 4R
2856 */
2857#define ARIZONA_OUT4R_ANC_SRC_MASK 0x0C00 /* OUT4R_ANC_SRC - [11:10] */
2858#define ARIZONA_OUT4R_ANC_SRC_SHIFT 10 /* OUT4R_ANC_SRC - [11:10] */
2859#define ARIZONA_OUT4R_ANC_SRC_WIDTH 2 /* OUT4R_ANC_SRC - [11:10] */
2860
2861/*
2862 * R1069 (0x42D) - DAC Digital Volume 4R
2863 */
2864#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2865#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2866#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2867#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2868#define ARIZONA_OUT4R_MUTE 0x0100 /* OUT4R_MUTE */
2869#define ARIZONA_OUT4R_MUTE_MASK 0x0100 /* OUT4R_MUTE */
2870#define ARIZONA_OUT4R_MUTE_SHIFT 8 /* OUT4R_MUTE */
2871#define ARIZONA_OUT4R_MUTE_WIDTH 1 /* OUT4R_MUTE */
2872#define ARIZONA_OUT4R_VOL_MASK 0x00FF /* OUT4R_VOL - [7:0] */
2873#define ARIZONA_OUT4R_VOL_SHIFT 0 /* OUT4R_VOL - [7:0] */
2874#define ARIZONA_OUT4R_VOL_WIDTH 8 /* OUT4R_VOL - [7:0] */
2875
2876/*
2877 * R1070 (0x42E) - Out Volume 4R
2878 */
2879#define ARIZONA_OUT4R_VOL_LIM_MASK 0x00FF /* OUT4R_VOL_LIM - [7:0] */
2880#define ARIZONA_OUT4R_VOL_LIM_SHIFT 0 /* OUT4R_VOL_LIM - [7:0] */
2881#define ARIZONA_OUT4R_VOL_LIM_WIDTH 8 /* OUT4R_VOL_LIM - [7:0] */
2882
2883/*
2884 * R1071 (0x42F) - Noise Gate Select 4R
2885 */
2886#define ARIZONA_OUT4R_NGATE_SRC_MASK 0x0FFF /* OUT4R_NGATE_SRC - [11:0] */
2887#define ARIZONA_OUT4R_NGATE_SRC_SHIFT 0 /* OUT4R_NGATE_SRC - [11:0] */
2888#define ARIZONA_OUT4R_NGATE_SRC_WIDTH 12 /* OUT4R_NGATE_SRC - [11:0] */
2889
2890/*
2891 * R1072 (0x430) - Output Path Config 5L
2892 */
2893#define ARIZONA_OUT5_OSR 0x2000 /* OUT5_OSR */
2894#define ARIZONA_OUT5_OSR_MASK 0x2000 /* OUT5_OSR */
2895#define ARIZONA_OUT5_OSR_SHIFT 13 /* OUT5_OSR */
2896#define ARIZONA_OUT5_OSR_WIDTH 1 /* OUT5_OSR */
2897#define ARIZONA_OUT5L_ANC_SRC_MASK 0x0C00 /* OUT5L_ANC_SRC - [11:10] */
2898#define ARIZONA_OUT5L_ANC_SRC_SHIFT 10 /* OUT5L_ANC_SRC - [11:10] */
2899#define ARIZONA_OUT5L_ANC_SRC_WIDTH 2 /* OUT5L_ANC_SRC - [11:10] */
2900
2901/*
2902 * R1073 (0x431) - DAC Digital Volume 5L
2903 */
2904#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2905#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2906#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2907#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2908#define ARIZONA_OUT5L_MUTE 0x0100 /* OUT5L_MUTE */
2909#define ARIZONA_OUT5L_MUTE_MASK 0x0100 /* OUT5L_MUTE */
2910#define ARIZONA_OUT5L_MUTE_SHIFT 8 /* OUT5L_MUTE */
2911#define ARIZONA_OUT5L_MUTE_WIDTH 1 /* OUT5L_MUTE */
2912#define ARIZONA_OUT5L_VOL_MASK 0x00FF /* OUT5L_VOL - [7:0] */
2913#define ARIZONA_OUT5L_VOL_SHIFT 0 /* OUT5L_VOL - [7:0] */
2914#define ARIZONA_OUT5L_VOL_WIDTH 8 /* OUT5L_VOL - [7:0] */
2915
2916/*
2917 * R1074 (0x432) - DAC Volume Limit 5L
2918 */
2919#define ARIZONA_OUT5L_VOL_LIM_MASK 0x00FF /* OUT5L_VOL_LIM - [7:0] */
2920#define ARIZONA_OUT5L_VOL_LIM_SHIFT 0 /* OUT5L_VOL_LIM - [7:0] */
2921#define ARIZONA_OUT5L_VOL_LIM_WIDTH 8 /* OUT5L_VOL_LIM - [7:0] */
2922
2923/*
2924 * R1075 (0x433) - Noise Gate Select 5L
2925 */
2926#define ARIZONA_OUT5L_NGATE_SRC_MASK 0x0FFF /* OUT5L_NGATE_SRC - [11:0] */
2927#define ARIZONA_OUT5L_NGATE_SRC_SHIFT 0 /* OUT5L_NGATE_SRC - [11:0] */
2928#define ARIZONA_OUT5L_NGATE_SRC_WIDTH 12 /* OUT5L_NGATE_SRC - [11:0] */
2929
2930/*
2931 * R1076 (0x434) - Output Path Config 5R
2932 */
2933#define ARIZONA_OUT5R_ANC_SRC_MASK 0x0C00 /* OUT5R_ANC_SRC - [11:10] */
2934#define ARIZONA_OUT5R_ANC_SRC_SHIFT 10 /* OUT5R_ANC_SRC - [11:10] */
2935#define ARIZONA_OUT5R_ANC_SRC_WIDTH 2 /* OUT5R_ANC_SRC - [11:10] */
2936
2937/*
2938 * R1077 (0x435) - DAC Digital Volume 5R
2939 */
2940#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2941#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2942#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2943#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2944#define ARIZONA_OUT5R_MUTE 0x0100 /* OUT5R_MUTE */
2945#define ARIZONA_OUT5R_MUTE_MASK 0x0100 /* OUT5R_MUTE */
2946#define ARIZONA_OUT5R_MUTE_SHIFT 8 /* OUT5R_MUTE */
2947#define ARIZONA_OUT5R_MUTE_WIDTH 1 /* OUT5R_MUTE */
2948#define ARIZONA_OUT5R_VOL_MASK 0x00FF /* OUT5R_VOL - [7:0] */
2949#define ARIZONA_OUT5R_VOL_SHIFT 0 /* OUT5R_VOL - [7:0] */
2950#define ARIZONA_OUT5R_VOL_WIDTH 8 /* OUT5R_VOL - [7:0] */
2951
2952/*
2953 * R1078 (0x436) - DAC Volume Limit 5R
2954 */
2955#define ARIZONA_OUT5R_VOL_LIM_MASK 0x00FF /* OUT5R_VOL_LIM - [7:0] */
2956#define ARIZONA_OUT5R_VOL_LIM_SHIFT 0 /* OUT5R_VOL_LIM - [7:0] */
2957#define ARIZONA_OUT5R_VOL_LIM_WIDTH 8 /* OUT5R_VOL_LIM - [7:0] */
2958
2959/*
2960 * R1079 (0x437) - Noise Gate Select 5R
2961 */
2962#define ARIZONA_OUT5R_NGATE_SRC_MASK 0x0FFF /* OUT5R_NGATE_SRC - [11:0] */
2963#define ARIZONA_OUT5R_NGATE_SRC_SHIFT 0 /* OUT5R_NGATE_SRC - [11:0] */
2964#define ARIZONA_OUT5R_NGATE_SRC_WIDTH 12 /* OUT5R_NGATE_SRC - [11:0] */
2965
2966/*
2967 * R1080 (0x438) - Output Path Config 6L
2968 */
2969#define ARIZONA_OUT6_OSR 0x2000 /* OUT6_OSR */
2970#define ARIZONA_OUT6_OSR_MASK 0x2000 /* OUT6_OSR */
2971#define ARIZONA_OUT6_OSR_SHIFT 13 /* OUT6_OSR */
2972#define ARIZONA_OUT6_OSR_WIDTH 1 /* OUT6_OSR */
2973#define ARIZONA_OUT6L_ANC_SRC_MASK 0x0C00 /* OUT6L_ANC_SRC - [11:10] */
2974#define ARIZONA_OUT6L_ANC_SRC_SHIFT 10 /* OUT6L_ANC_SRC - [11:10] */
2975#define ARIZONA_OUT6L_ANC_SRC_WIDTH 2 /* OUT6L_ANC_SRC - [11:10] */
2976
2977/*
2978 * R1081 (0x439) - DAC Digital Volume 6L
2979 */
2980#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
2981#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
2982#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
2983#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
2984#define ARIZONA_OUT6L_MUTE 0x0100 /* OUT6L_MUTE */
2985#define ARIZONA_OUT6L_MUTE_MASK 0x0100 /* OUT6L_MUTE */
2986#define ARIZONA_OUT6L_MUTE_SHIFT 8 /* OUT6L_MUTE */
2987#define ARIZONA_OUT6L_MUTE_WIDTH 1 /* OUT6L_MUTE */
2988#define ARIZONA_OUT6L_VOL_MASK 0x00FF /* OUT6L_VOL - [7:0] */
2989#define ARIZONA_OUT6L_VOL_SHIFT 0 /* OUT6L_VOL - [7:0] */
2990#define ARIZONA_OUT6L_VOL_WIDTH 8 /* OUT6L_VOL - [7:0] */
2991
2992/*
2993 * R1082 (0x43A) - DAC Volume Limit 6L
2994 */
2995#define ARIZONA_OUT6L_VOL_LIM_MASK 0x00FF /* OUT6L_VOL_LIM - [7:0] */
2996#define ARIZONA_OUT6L_VOL_LIM_SHIFT 0 /* OUT6L_VOL_LIM - [7:0] */
2997#define ARIZONA_OUT6L_VOL_LIM_WIDTH 8 /* OUT6L_VOL_LIM - [7:0] */
2998
2999/*
3000 * R1083 (0x43B) - Noise Gate Select 6L
3001 */
3002#define ARIZONA_OUT6L_NGATE_SRC_MASK 0x0FFF /* OUT6L_NGATE_SRC - [11:0] */
3003#define ARIZONA_OUT6L_NGATE_SRC_SHIFT 0 /* OUT6L_NGATE_SRC - [11:0] */
3004#define ARIZONA_OUT6L_NGATE_SRC_WIDTH 12 /* OUT6L_NGATE_SRC - [11:0] */
3005
3006/*
3007 * R1084 (0x43C) - Output Path Config 6R
3008 */
3009#define ARIZONA_OUT6R_ANC_SRC_MASK 0x0C00 /* OUT6R_ANC_SRC - [11:10] */
3010#define ARIZONA_OUT6R_ANC_SRC_SHIFT 10 /* OUT6R_ANC_SRC - [11:10] */
3011#define ARIZONA_OUT6R_ANC_SRC_WIDTH 2 /* OUT6R_ANC_SRC - [11:10] */
3012
3013/*
3014 * R1085 (0x43D) - DAC Digital Volume 6R
3015 */
3016#define ARIZONA_OUT_VU 0x0200 /* OUT_VU */
3017#define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */
3018#define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */
3019#define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */
3020#define ARIZONA_OUT6R_MUTE 0x0100 /* OUT6R_MUTE */
3021#define ARIZONA_OUT6R_MUTE_MASK 0x0100 /* OUT6R_MUTE */
3022#define ARIZONA_OUT6R_MUTE_SHIFT 8 /* OUT6R_MUTE */
3023#define ARIZONA_OUT6R_MUTE_WIDTH 1 /* OUT6R_MUTE */
3024#define ARIZONA_OUT6R_VOL_MASK 0x00FF /* OUT6R_VOL - [7:0] */
3025#define ARIZONA_OUT6R_VOL_SHIFT 0 /* OUT6R_VOL - [7:0] */
3026#define ARIZONA_OUT6R_VOL_WIDTH 8 /* OUT6R_VOL - [7:0] */
3027
3028/*
3029 * R1086 (0x43E) - DAC Volume Limit 6R
3030 */
3031#define ARIZONA_OUT6R_VOL_LIM_MASK 0x00FF /* OUT6R_VOL_LIM - [7:0] */
3032#define ARIZONA_OUT6R_VOL_LIM_SHIFT 0 /* OUT6R_VOL_LIM - [7:0] */
3033#define ARIZONA_OUT6R_VOL_LIM_WIDTH 8 /* OUT6R_VOL_LIM - [7:0] */
3034
3035/*
3036 * R1087 (0x43F) - Noise Gate Select 6R
3037 */
3038#define ARIZONA_OUT6R_NGATE_SRC_MASK 0x0FFF /* OUT6R_NGATE_SRC - [11:0] */
3039#define ARIZONA_OUT6R_NGATE_SRC_SHIFT 0 /* OUT6R_NGATE_SRC - [11:0] */
3040#define ARIZONA_OUT6R_NGATE_SRC_WIDTH 12 /* OUT6R_NGATE_SRC - [11:0] */
3041
3042/*
3043 * R1104 (0x450) - DAC AEC Control 1
3044 */
3045#define ARIZONA_AEC_LOOPBACK_SRC_MASK 0x003C /* AEC_LOOPBACK_SRC - [5:2] */
3046#define ARIZONA_AEC_LOOPBACK_SRC_SHIFT 2 /* AEC_LOOPBACK_SRC - [5:2] */
3047#define ARIZONA_AEC_LOOPBACK_SRC_WIDTH 4 /* AEC_LOOPBACK_SRC - [5:2] */
3048#define ARIZONA_AEC_ENA_STS 0x0002 /* AEC_ENA_STS */
3049#define ARIZONA_AEC_ENA_STS_MASK 0x0002 /* AEC_ENA_STS */
3050#define ARIZONA_AEC_ENA_STS_SHIFT 1 /* AEC_ENA_STS */
3051#define ARIZONA_AEC_ENA_STS_WIDTH 1 /* AEC_ENA_STS */
3052#define ARIZONA_AEC_LOOPBACK_ENA 0x0001 /* AEC_LOOPBACK_ENA */
3053#define ARIZONA_AEC_LOOPBACK_ENA_MASK 0x0001 /* AEC_LOOPBACK_ENA */
3054#define ARIZONA_AEC_LOOPBACK_ENA_SHIFT 0 /* AEC_LOOPBACK_ENA */
3055#define ARIZONA_AEC_LOOPBACK_ENA_WIDTH 1 /* AEC_LOOPBACK_ENA */
3056
3057/*
3058 * R1112 (0x458) - Noise Gate Control
3059 */
3060#define ARIZONA_NGATE_HOLD_MASK 0x0030 /* NGATE_HOLD - [5:4] */
3061#define ARIZONA_NGATE_HOLD_SHIFT 4 /* NGATE_HOLD - [5:4] */
3062#define ARIZONA_NGATE_HOLD_WIDTH 2 /* NGATE_HOLD - [5:4] */
3063#define ARIZONA_NGATE_THR_MASK 0x000E /* NGATE_THR - [3:1] */
3064#define ARIZONA_NGATE_THR_SHIFT 1 /* NGATE_THR - [3:1] */
3065#define ARIZONA_NGATE_THR_WIDTH 3 /* NGATE_THR - [3:1] */
3066#define ARIZONA_NGATE_ENA 0x0001 /* NGATE_ENA */
3067#define ARIZONA_NGATE_ENA_MASK 0x0001 /* NGATE_ENA */
3068#define ARIZONA_NGATE_ENA_SHIFT 0 /* NGATE_ENA */
3069#define ARIZONA_NGATE_ENA_WIDTH 1 /* NGATE_ENA */
3070
3071/*
3072 * R1168 (0x490) - PDM SPK1 CTRL 1
3073 */
3074#define ARIZONA_SPK1R_MUTE 0x2000 /* SPK1R_MUTE */
3075#define ARIZONA_SPK1R_MUTE_MASK 0x2000 /* SPK1R_MUTE */
3076#define ARIZONA_SPK1R_MUTE_SHIFT 13 /* SPK1R_MUTE */
3077#define ARIZONA_SPK1R_MUTE_WIDTH 1 /* SPK1R_MUTE */
3078#define ARIZONA_SPK1L_MUTE 0x1000 /* SPK1L_MUTE */
3079#define ARIZONA_SPK1L_MUTE_MASK 0x1000 /* SPK1L_MUTE */
3080#define ARIZONA_SPK1L_MUTE_SHIFT 12 /* SPK1L_MUTE */
3081#define ARIZONA_SPK1L_MUTE_WIDTH 1 /* SPK1L_MUTE */
3082#define ARIZONA_SPK1_MUTE_ENDIAN 0x0100 /* SPK1_MUTE_ENDIAN */
3083#define ARIZONA_SPK1_MUTE_ENDIAN_MASK 0x0100 /* SPK1_MUTE_ENDIAN */
3084#define ARIZONA_SPK1_MUTE_ENDIAN_SHIFT 8 /* SPK1_MUTE_ENDIAN */
3085#define ARIZONA_SPK1_MUTE_ENDIAN_WIDTH 1 /* SPK1_MUTE_ENDIAN */
3086#define ARIZONA_SPK1_MUTE_SEQ1_MASK 0x00FF /* SPK1_MUTE_SEQ1 - [7:0] */
3087#define ARIZONA_SPK1_MUTE_SEQ1_SHIFT 0 /* SPK1_MUTE_SEQ1 - [7:0] */
3088#define ARIZONA_SPK1_MUTE_SEQ1_WIDTH 8 /* SPK1_MUTE_SEQ1 - [7:0] */
3089
3090/*
3091 * R1169 (0x491) - PDM SPK1 CTRL 2
3092 */
3093#define ARIZONA_SPK1_FMT 0x0001 /* SPK1_FMT */
3094#define ARIZONA_SPK1_FMT_MASK 0x0001 /* SPK1_FMT */
3095#define ARIZONA_SPK1_FMT_SHIFT 0 /* SPK1_FMT */
3096#define ARIZONA_SPK1_FMT_WIDTH 1 /* SPK1_FMT */
3097
3098/*
3099 * R1170 (0x492) - PDM SPK2 CTRL 1
3100 */
3101#define ARIZONA_SPK2R_MUTE 0x2000 /* SPK2R_MUTE */
3102#define ARIZONA_SPK2R_MUTE_MASK 0x2000 /* SPK2R_MUTE */
3103#define ARIZONA_SPK2R_MUTE_SHIFT 13 /* SPK2R_MUTE */
3104#define ARIZONA_SPK2R_MUTE_WIDTH 1 /* SPK2R_MUTE */
3105#define ARIZONA_SPK2L_MUTE 0x1000 /* SPK2L_MUTE */
3106#define ARIZONA_SPK2L_MUTE_MASK 0x1000 /* SPK2L_MUTE */
3107#define ARIZONA_SPK2L_MUTE_SHIFT 12 /* SPK2L_MUTE */
3108#define ARIZONA_SPK2L_MUTE_WIDTH 1 /* SPK2L_MUTE */
3109#define ARIZONA_SPK2_MUTE_ENDIAN 0x0100 /* SPK2_MUTE_ENDIAN */
3110#define ARIZONA_SPK2_MUTE_ENDIAN_MASK 0x0100 /* SPK2_MUTE_ENDIAN */
3111#define ARIZONA_SPK2_MUTE_ENDIAN_SHIFT 8 /* SPK2_MUTE_ENDIAN */
3112#define ARIZONA_SPK2_MUTE_ENDIAN_WIDTH 1 /* SPK2_MUTE_ENDIAN */
3113#define ARIZONA_SPK2_MUTE_SEQ_MASK 0x00FF /* SPK2_MUTE_SEQ - [7:0] */
3114#define ARIZONA_SPK2_MUTE_SEQ_SHIFT 0 /* SPK2_MUTE_SEQ - [7:0] */
3115#define ARIZONA_SPK2_MUTE_SEQ_WIDTH 8 /* SPK2_MUTE_SEQ - [7:0] */
3116
3117/*
3118 * R1171 (0x493) - PDM SPK2 CTRL 2
3119 */
3120#define ARIZONA_SPK2_FMT 0x0001 /* SPK2_FMT */
3121#define ARIZONA_SPK2_FMT_MASK 0x0001 /* SPK2_FMT */
3122#define ARIZONA_SPK2_FMT_SHIFT 0 /* SPK2_FMT */
3123#define ARIZONA_SPK2_FMT_WIDTH 1 /* SPK2_FMT */
3124
3125/*
3126 * R1244 (0x4DC) - DAC comp 1
3127 */
3128#define ARIZONA_OUT_COMP_COEFF_MASK 0xFFFF /* OUT_COMP_COEFF - [15:0] */
3129#define ARIZONA_OUT_COMP_COEFF_SHIFT 0 /* OUT_COMP_COEFF - [15:0] */
3130#define ARIZONA_OUT_COMP_COEFF_WIDTH 16 /* OUT_COMP_COEFF - [15:0] */
3131
3132/*
3133 * R1245 (0x4DD) - DAC comp 2
3134 */
3135#define ARIZONA_OUT_COMP_COEFF_1 0x0002 /* OUT_COMP_COEFF */
3136#define ARIZONA_OUT_COMP_COEFF_1_MASK 0x0002 /* OUT_COMP_COEFF */
3137#define ARIZONA_OUT_COMP_COEFF_1_SHIFT 1 /* OUT_COMP_COEFF */
3138#define ARIZONA_OUT_COMP_COEFF_1_WIDTH 1 /* OUT_COMP_COEFF */
3139#define ARIZONA_OUT_COMP_COEFF_SEL 0x0001 /* OUT_COMP_COEFF_SEL */
3140#define ARIZONA_OUT_COMP_COEFF_SEL_MASK 0x0001 /* OUT_COMP_COEFF_SEL */
3141#define ARIZONA_OUT_COMP_COEFF_SEL_SHIFT 0 /* OUT_COMP_COEFF_SEL */
3142#define ARIZONA_OUT_COMP_COEFF_SEL_WIDTH 1 /* OUT_COMP_COEFF_SEL */
3143
3144/*
3145 * R1246 (0x4DE) - DAC comp 3
3146 */
3147#define ARIZONA_AEC_COMP_COEFF_MASK 0xFFFF /* AEC_COMP_COEFF - [15:0] */
3148#define ARIZONA_AEC_COMP_COEFF_SHIFT 0 /* AEC_COMP_COEFF - [15:0] */
3149#define ARIZONA_AEC_COMP_COEFF_WIDTH 16 /* AEC_COMP_COEFF - [15:0] */
3150
3151/*
3152 * R1247 (0x4DF) - DAC comp 4
3153 */
3154#define ARIZONA_AEC_COMP_COEFF_1 0x0002 /* AEC_COMP_COEFF */
3155#define ARIZONA_AEC_COMP_COEFF_1_MASK 0x0002 /* AEC_COMP_COEFF */
3156#define ARIZONA_AEC_COMP_COEFF_1_SHIFT 1 /* AEC_COMP_COEFF */
3157#define ARIZONA_AEC_COMP_COEFF_1_WIDTH 1 /* AEC_COMP_COEFF */
3158#define ARIZONA_AEC_COMP_COEFF_SEL 0x0001 /* AEC_COMP_COEFF_SEL */
3159#define ARIZONA_AEC_COMP_COEFF_SEL_MASK 0x0001 /* AEC_COMP_COEFF_SEL */
3160#define ARIZONA_AEC_COMP_COEFF_SEL_SHIFT 0 /* AEC_COMP_COEFF_SEL */
3161#define ARIZONA_AEC_COMP_COEFF_SEL_WIDTH 1 /* AEC_COMP_COEFF_SEL */
3162
3163/*
3164 * R1280 (0x500) - AIF1 BCLK Ctrl
3165 */
3166#define ARIZONA_AIF1_BCLK_INV 0x0080 /* AIF1_BCLK_INV */
3167#define ARIZONA_AIF1_BCLK_INV_MASK 0x0080 /* AIF1_BCLK_INV */
3168#define ARIZONA_AIF1_BCLK_INV_SHIFT 7 /* AIF1_BCLK_INV */
3169#define ARIZONA_AIF1_BCLK_INV_WIDTH 1 /* AIF1_BCLK_INV */
3170#define ARIZONA_AIF1_BCLK_FRC 0x0040 /* AIF1_BCLK_FRC */
3171#define ARIZONA_AIF1_BCLK_FRC_MASK 0x0040 /* AIF1_BCLK_FRC */
3172#define ARIZONA_AIF1_BCLK_FRC_SHIFT 6 /* AIF1_BCLK_FRC */
3173#define ARIZONA_AIF1_BCLK_FRC_WIDTH 1 /* AIF1_BCLK_FRC */
3174#define ARIZONA_AIF1_BCLK_MSTR 0x0020 /* AIF1_BCLK_MSTR */
3175#define ARIZONA_AIF1_BCLK_MSTR_MASK 0x0020 /* AIF1_BCLK_MSTR */
3176#define ARIZONA_AIF1_BCLK_MSTR_SHIFT 5 /* AIF1_BCLK_MSTR */
3177#define ARIZONA_AIF1_BCLK_MSTR_WIDTH 1 /* AIF1_BCLK_MSTR */
3178#define ARIZONA_AIF1_BCLK_FREQ_MASK 0x001F /* AIF1_BCLK_FREQ - [4:0] */
3179#define ARIZONA_AIF1_BCLK_FREQ_SHIFT 0 /* AIF1_BCLK_FREQ - [4:0] */
3180#define ARIZONA_AIF1_BCLK_FREQ_WIDTH 5 /* AIF1_BCLK_FREQ - [4:0] */
3181
3182/*
3183 * R1281 (0x501) - AIF1 Tx Pin Ctrl
3184 */
3185#define ARIZONA_AIF1TX_DAT_TRI 0x0020 /* AIF1TX_DAT_TRI */
3186#define ARIZONA_AIF1TX_DAT_TRI_MASK 0x0020 /* AIF1TX_DAT_TRI */
3187#define ARIZONA_AIF1TX_DAT_TRI_SHIFT 5 /* AIF1TX_DAT_TRI */
3188#define ARIZONA_AIF1TX_DAT_TRI_WIDTH 1 /* AIF1TX_DAT_TRI */
3189#define ARIZONA_AIF1TX_LRCLK_SRC 0x0008 /* AIF1TX_LRCLK_SRC */
3190#define ARIZONA_AIF1TX_LRCLK_SRC_MASK 0x0008 /* AIF1TX_LRCLK_SRC */
3191#define ARIZONA_AIF1TX_LRCLK_SRC_SHIFT 3 /* AIF1TX_LRCLK_SRC */
3192#define ARIZONA_AIF1TX_LRCLK_SRC_WIDTH 1 /* AIF1TX_LRCLK_SRC */
3193#define ARIZONA_AIF1TX_LRCLK_INV 0x0004 /* AIF1TX_LRCLK_INV */
3194#define ARIZONA_AIF1TX_LRCLK_INV_MASK 0x0004 /* AIF1TX_LRCLK_INV */
3195#define ARIZONA_AIF1TX_LRCLK_INV_SHIFT 2 /* AIF1TX_LRCLK_INV */
3196#define ARIZONA_AIF1TX_LRCLK_INV_WIDTH 1 /* AIF1TX_LRCLK_INV */
3197#define ARIZONA_AIF1TX_LRCLK_FRC 0x0002 /* AIF1TX_LRCLK_FRC */
3198#define ARIZONA_AIF1TX_LRCLK_FRC_MASK 0x0002 /* AIF1TX_LRCLK_FRC */
3199#define ARIZONA_AIF1TX_LRCLK_FRC_SHIFT 1 /* AIF1TX_LRCLK_FRC */
3200#define ARIZONA_AIF1TX_LRCLK_FRC_WIDTH 1 /* AIF1TX_LRCLK_FRC */
3201#define ARIZONA_AIF1TX_LRCLK_MSTR 0x0001 /* AIF1TX_LRCLK_MSTR */
3202#define ARIZONA_AIF1TX_LRCLK_MSTR_MASK 0x0001 /* AIF1TX_LRCLK_MSTR */
3203#define ARIZONA_AIF1TX_LRCLK_MSTR_SHIFT 0 /* AIF1TX_LRCLK_MSTR */
3204#define ARIZONA_AIF1TX_LRCLK_MSTR_WIDTH 1 /* AIF1TX_LRCLK_MSTR */
3205
3206/*
3207 * R1282 (0x502) - AIF1 Rx Pin Ctrl
3208 */
3209#define ARIZONA_AIF1RX_LRCLK_INV 0x0004 /* AIF1RX_LRCLK_INV */
3210#define ARIZONA_AIF1RX_LRCLK_INV_MASK 0x0004 /* AIF1RX_LRCLK_INV */
3211#define ARIZONA_AIF1RX_LRCLK_INV_SHIFT 2 /* AIF1RX_LRCLK_INV */
3212#define ARIZONA_AIF1RX_LRCLK_INV_WIDTH 1 /* AIF1RX_LRCLK_INV */
3213#define ARIZONA_AIF1RX_LRCLK_FRC 0x0002 /* AIF1RX_LRCLK_FRC */
3214#define ARIZONA_AIF1RX_LRCLK_FRC_MASK 0x0002 /* AIF1RX_LRCLK_FRC */
3215#define ARIZONA_AIF1RX_LRCLK_FRC_SHIFT 1 /* AIF1RX_LRCLK_FRC */
3216#define ARIZONA_AIF1RX_LRCLK_FRC_WIDTH 1 /* AIF1RX_LRCLK_FRC */
3217#define ARIZONA_AIF1RX_LRCLK_MSTR 0x0001 /* AIF1RX_LRCLK_MSTR */
3218#define ARIZONA_AIF1RX_LRCLK_MSTR_MASK 0x0001 /* AIF1RX_LRCLK_MSTR */
3219#define ARIZONA_AIF1RX_LRCLK_MSTR_SHIFT 0 /* AIF1RX_LRCLK_MSTR */
3220#define ARIZONA_AIF1RX_LRCLK_MSTR_WIDTH 1 /* AIF1RX_LRCLK_MSTR */
3221
3222/*
3223 * R1283 (0x503) - AIF1 Rate Ctrl
3224 */
3225#define ARIZONA_AIF1_RATE_MASK 0x7800 /* AIF1_RATE - [14:11] */
3226#define ARIZONA_AIF1_RATE_SHIFT 11 /* AIF1_RATE - [14:11] */
3227#define ARIZONA_AIF1_RATE_WIDTH 4 /* AIF1_RATE - [14:11] */
3228#define ARIZONA_AIF1_TRI 0x0040 /* AIF1_TRI */
3229#define ARIZONA_AIF1_TRI_MASK 0x0040 /* AIF1_TRI */
3230#define ARIZONA_AIF1_TRI_SHIFT 6 /* AIF1_TRI */
3231#define ARIZONA_AIF1_TRI_WIDTH 1 /* AIF1_TRI */
3232
3233/*
3234 * R1284 (0x504) - AIF1 Format
3235 */
3236#define ARIZONA_AIF1_FMT_MASK 0x0007 /* AIF1_FMT - [2:0] */
3237#define ARIZONA_AIF1_FMT_SHIFT 0 /* AIF1_FMT - [2:0] */
3238#define ARIZONA_AIF1_FMT_WIDTH 3 /* AIF1_FMT - [2:0] */
3239
3240/*
3241 * R1285 (0x505) - AIF1 Tx BCLK Rate
3242 */
3243#define ARIZONA_AIF1TX_BCPF_MASK 0x1FFF /* AIF1TX_BCPF - [12:0] */
3244#define ARIZONA_AIF1TX_BCPF_SHIFT 0 /* AIF1TX_BCPF - [12:0] */
3245#define ARIZONA_AIF1TX_BCPF_WIDTH 13 /* AIF1TX_BCPF - [12:0] */
3246
3247/*
3248 * R1286 (0x506) - AIF1 Rx BCLK Rate
3249 */
3250#define ARIZONA_AIF1RX_BCPF_MASK 0x1FFF /* AIF1RX_BCPF - [12:0] */
3251#define ARIZONA_AIF1RX_BCPF_SHIFT 0 /* AIF1RX_BCPF - [12:0] */
3252#define ARIZONA_AIF1RX_BCPF_WIDTH 13 /* AIF1RX_BCPF - [12:0] */
3253
3254/*
3255 * R1287 (0x507) - AIF1 Frame Ctrl 1
3256 */
3257#define ARIZONA_AIF1TX_WL_MASK 0x3F00 /* AIF1TX_WL - [13:8] */
3258#define ARIZONA_AIF1TX_WL_SHIFT 8 /* AIF1TX_WL - [13:8] */
3259#define ARIZONA_AIF1TX_WL_WIDTH 6 /* AIF1TX_WL - [13:8] */
3260#define ARIZONA_AIF1TX_SLOT_LEN_MASK 0x00FF /* AIF1TX_SLOT_LEN - [7:0] */
3261#define ARIZONA_AIF1TX_SLOT_LEN_SHIFT 0 /* AIF1TX_SLOT_LEN - [7:0] */
3262#define ARIZONA_AIF1TX_SLOT_LEN_WIDTH 8 /* AIF1TX_SLOT_LEN - [7:0] */
3263
3264/*
3265 * R1288 (0x508) - AIF1 Frame Ctrl 2
3266 */
3267#define ARIZONA_AIF1RX_WL_MASK 0x3F00 /* AIF1RX_WL - [13:8] */
3268#define ARIZONA_AIF1RX_WL_SHIFT 8 /* AIF1RX_WL - [13:8] */
3269#define ARIZONA_AIF1RX_WL_WIDTH 6 /* AIF1RX_WL - [13:8] */
3270#define ARIZONA_AIF1RX_SLOT_LEN_MASK 0x00FF /* AIF1RX_SLOT_LEN - [7:0] */
3271#define ARIZONA_AIF1RX_SLOT_LEN_SHIFT 0 /* AIF1RX_SLOT_LEN - [7:0] */
3272#define ARIZONA_AIF1RX_SLOT_LEN_WIDTH 8 /* AIF1RX_SLOT_LEN - [7:0] */
3273
3274/*
3275 * R1289 (0x509) - AIF1 Frame Ctrl 3
3276 */
3277#define ARIZONA_AIF1TX1_SLOT_MASK 0x003F /* AIF1TX1_SLOT - [5:0] */
3278#define ARIZONA_AIF1TX1_SLOT_SHIFT 0 /* AIF1TX1_SLOT - [5:0] */
3279#define ARIZONA_AIF1TX1_SLOT_WIDTH 6 /* AIF1TX1_SLOT - [5:0] */
3280
3281/*
3282 * R1290 (0x50A) - AIF1 Frame Ctrl 4
3283 */
3284#define ARIZONA_AIF1TX2_SLOT_MASK 0x003F /* AIF1TX2_SLOT - [5:0] */
3285#define ARIZONA_AIF1TX2_SLOT_SHIFT 0 /* AIF1TX2_SLOT - [5:0] */
3286#define ARIZONA_AIF1TX2_SLOT_WIDTH 6 /* AIF1TX2_SLOT - [5:0] */
3287
3288/*
3289 * R1291 (0x50B) - AIF1 Frame Ctrl 5
3290 */
3291#define ARIZONA_AIF1TX3_SLOT_MASK 0x003F /* AIF1TX3_SLOT - [5:0] */
3292#define ARIZONA_AIF1TX3_SLOT_SHIFT 0 /* AIF1TX3_SLOT - [5:0] */
3293#define ARIZONA_AIF1TX3_SLOT_WIDTH 6 /* AIF1TX3_SLOT - [5:0] */
3294
3295/*
3296 * R1292 (0x50C) - AIF1 Frame Ctrl 6
3297 */
3298#define ARIZONA_AIF1TX4_SLOT_MASK 0x003F /* AIF1TX4_SLOT - [5:0] */
3299#define ARIZONA_AIF1TX4_SLOT_SHIFT 0 /* AIF1TX4_SLOT - [5:0] */
3300#define ARIZONA_AIF1TX4_SLOT_WIDTH 6 /* AIF1TX4_SLOT - [5:0] */
3301
3302/*
3303 * R1293 (0x50D) - AIF1 Frame Ctrl 7
3304 */
3305#define ARIZONA_AIF1TX5_SLOT_MASK 0x003F /* AIF1TX5_SLOT - [5:0] */
3306#define ARIZONA_AIF1TX5_SLOT_SHIFT 0 /* AIF1TX5_SLOT - [5:0] */
3307#define ARIZONA_AIF1TX5_SLOT_WIDTH 6 /* AIF1TX5_SLOT - [5:0] */
3308
3309/*
3310 * R1294 (0x50E) - AIF1 Frame Ctrl 8
3311 */
3312#define ARIZONA_AIF1TX6_SLOT_MASK 0x003F /* AIF1TX6_SLOT - [5:0] */
3313#define ARIZONA_AIF1TX6_SLOT_SHIFT 0 /* AIF1TX6_SLOT - [5:0] */
3314#define ARIZONA_AIF1TX6_SLOT_WIDTH 6 /* AIF1TX6_SLOT - [5:0] */
3315
3316/*
3317 * R1295 (0x50F) - AIF1 Frame Ctrl 9
3318 */
3319#define ARIZONA_AIF1TX7_SLOT_MASK 0x003F /* AIF1TX7_SLOT - [5:0] */
3320#define ARIZONA_AIF1TX7_SLOT_SHIFT 0 /* AIF1TX7_SLOT - [5:0] */
3321#define ARIZONA_AIF1TX7_SLOT_WIDTH 6 /* AIF1TX7_SLOT - [5:0] */
3322
3323/*
3324 * R1296 (0x510) - AIF1 Frame Ctrl 10
3325 */
3326#define ARIZONA_AIF1TX8_SLOT_MASK 0x003F /* AIF1TX8_SLOT - [5:0] */
3327#define ARIZONA_AIF1TX8_SLOT_SHIFT 0 /* AIF1TX8_SLOT - [5:0] */
3328#define ARIZONA_AIF1TX8_SLOT_WIDTH 6 /* AIF1TX8_SLOT - [5:0] */
3329
3330/*
3331 * R1297 (0x511) - AIF1 Frame Ctrl 11
3332 */
3333#define ARIZONA_AIF1RX1_SLOT_MASK 0x003F /* AIF1RX1_SLOT - [5:0] */
3334#define ARIZONA_AIF1RX1_SLOT_SHIFT 0 /* AIF1RX1_SLOT - [5:0] */
3335#define ARIZONA_AIF1RX1_SLOT_WIDTH 6 /* AIF1RX1_SLOT - [5:0] */
3336
3337/*
3338 * R1298 (0x512) - AIF1 Frame Ctrl 12
3339 */
3340#define ARIZONA_AIF1RX2_SLOT_MASK 0x003F /* AIF1RX2_SLOT - [5:0] */
3341#define ARIZONA_AIF1RX2_SLOT_SHIFT 0 /* AIF1RX2_SLOT - [5:0] */
3342#define ARIZONA_AIF1RX2_SLOT_WIDTH 6 /* AIF1RX2_SLOT - [5:0] */
3343
3344/*
3345 * R1299 (0x513) - AIF1 Frame Ctrl 13
3346 */
3347#define ARIZONA_AIF1RX3_SLOT_MASK 0x003F /* AIF1RX3_SLOT - [5:0] */
3348#define ARIZONA_AIF1RX3_SLOT_SHIFT 0 /* AIF1RX3_SLOT - [5:0] */
3349#define ARIZONA_AIF1RX3_SLOT_WIDTH 6 /* AIF1RX3_SLOT - [5:0] */
3350
3351/*
3352 * R1300 (0x514) - AIF1 Frame Ctrl 14
3353 */
3354#define ARIZONA_AIF1RX4_SLOT_MASK 0x003F /* AIF1RX4_SLOT - [5:0] */
3355#define ARIZONA_AIF1RX4_SLOT_SHIFT 0 /* AIF1RX4_SLOT - [5:0] */
3356#define ARIZONA_AIF1RX4_SLOT_WIDTH 6 /* AIF1RX4_SLOT - [5:0] */
3357
3358/*
3359 * R1301 (0x515) - AIF1 Frame Ctrl 15
3360 */
3361#define ARIZONA_AIF1RX5_SLOT_MASK 0x003F /* AIF1RX5_SLOT - [5:0] */
3362#define ARIZONA_AIF1RX5_SLOT_SHIFT 0 /* AIF1RX5_SLOT - [5:0] */
3363#define ARIZONA_AIF1RX5_SLOT_WIDTH 6 /* AIF1RX5_SLOT - [5:0] */
3364
3365/*
3366 * R1302 (0x516) - AIF1 Frame Ctrl 16
3367 */
3368#define ARIZONA_AIF1RX6_SLOT_MASK 0x003F /* AIF1RX6_SLOT - [5:0] */
3369#define ARIZONA_AIF1RX6_SLOT_SHIFT 0 /* AIF1RX6_SLOT - [5:0] */
3370#define ARIZONA_AIF1RX6_SLOT_WIDTH 6 /* AIF1RX6_SLOT - [5:0] */
3371
3372/*
3373 * R1303 (0x517) - AIF1 Frame Ctrl 17
3374 */
3375#define ARIZONA_AIF1RX7_SLOT_MASK 0x003F /* AIF1RX7_SLOT - [5:0] */
3376#define ARIZONA_AIF1RX7_SLOT_SHIFT 0 /* AIF1RX7_SLOT - [5:0] */
3377#define ARIZONA_AIF1RX7_SLOT_WIDTH 6 /* AIF1RX7_SLOT - [5:0] */
3378
3379/*
3380 * R1304 (0x518) - AIF1 Frame Ctrl 18
3381 */
3382#define ARIZONA_AIF1RX8_SLOT_MASK 0x003F /* AIF1RX8_SLOT - [5:0] */
3383#define ARIZONA_AIF1RX8_SLOT_SHIFT 0 /* AIF1RX8_SLOT - [5:0] */
3384#define ARIZONA_AIF1RX8_SLOT_WIDTH 6 /* AIF1RX8_SLOT - [5:0] */
3385
3386/*
3387 * R1305 (0x519) - AIF1 Tx Enables
3388 */
3389#define ARIZONA_AIF1TX8_ENA 0x0080 /* AIF1TX8_ENA */
3390#define ARIZONA_AIF1TX8_ENA_MASK 0x0080 /* AIF1TX8_ENA */
3391#define ARIZONA_AIF1TX8_ENA_SHIFT 7 /* AIF1TX8_ENA */
3392#define ARIZONA_AIF1TX8_ENA_WIDTH 1 /* AIF1TX8_ENA */
3393#define ARIZONA_AIF1TX7_ENA 0x0040 /* AIF1TX7_ENA */
3394#define ARIZONA_AIF1TX7_ENA_MASK 0x0040 /* AIF1TX7_ENA */
3395#define ARIZONA_AIF1TX7_ENA_SHIFT 6 /* AIF1TX7_ENA */
3396#define ARIZONA_AIF1TX7_ENA_WIDTH 1 /* AIF1TX7_ENA */
3397#define ARIZONA_AIF1TX6_ENA 0x0020 /* AIF1TX6_ENA */
3398#define ARIZONA_AIF1TX6_ENA_MASK 0x0020 /* AIF1TX6_ENA */
3399#define ARIZONA_AIF1TX6_ENA_SHIFT 5 /* AIF1TX6_ENA */
3400#define ARIZONA_AIF1TX6_ENA_WIDTH 1 /* AIF1TX6_ENA */
3401#define ARIZONA_AIF1TX5_ENA 0x0010 /* AIF1TX5_ENA */
3402#define ARIZONA_AIF1TX5_ENA_MASK 0x0010 /* AIF1TX5_ENA */
3403#define ARIZONA_AIF1TX5_ENA_SHIFT 4 /* AIF1TX5_ENA */
3404#define ARIZONA_AIF1TX5_ENA_WIDTH 1 /* AIF1TX5_ENA */
3405#define ARIZONA_AIF1TX4_ENA 0x0008 /* AIF1TX4_ENA */
3406#define ARIZONA_AIF1TX4_ENA_MASK 0x0008 /* AIF1TX4_ENA */
3407#define ARIZONA_AIF1TX4_ENA_SHIFT 3 /* AIF1TX4_ENA */
3408#define ARIZONA_AIF1TX4_ENA_WIDTH 1 /* AIF1TX4_ENA */
3409#define ARIZONA_AIF1TX3_ENA 0x0004 /* AIF1TX3_ENA */
3410#define ARIZONA_AIF1TX3_ENA_MASK 0x0004 /* AIF1TX3_ENA */
3411#define ARIZONA_AIF1TX3_ENA_SHIFT 2 /* AIF1TX3_ENA */
3412#define ARIZONA_AIF1TX3_ENA_WIDTH 1 /* AIF1TX3_ENA */
3413#define ARIZONA_AIF1TX2_ENA 0x0002 /* AIF1TX2_ENA */
3414#define ARIZONA_AIF1TX2_ENA_MASK 0x0002 /* AIF1TX2_ENA */
3415#define ARIZONA_AIF1TX2_ENA_SHIFT 1 /* AIF1TX2_ENA */
3416#define ARIZONA_AIF1TX2_ENA_WIDTH 1 /* AIF1TX2_ENA */
3417#define ARIZONA_AIF1TX1_ENA 0x0001 /* AIF1TX1_ENA */
3418#define ARIZONA_AIF1TX1_ENA_MASK 0x0001 /* AIF1TX1_ENA */
3419#define ARIZONA_AIF1TX1_ENA_SHIFT 0 /* AIF1TX1_ENA */
3420#define ARIZONA_AIF1TX1_ENA_WIDTH 1 /* AIF1TX1_ENA */
3421
3422/*
3423 * R1306 (0x51A) - AIF1 Rx Enables
3424 */
3425#define ARIZONA_AIF1RX8_ENA 0x0080 /* AIF1RX8_ENA */
3426#define ARIZONA_AIF1RX8_ENA_MASK 0x0080 /* AIF1RX8_ENA */
3427#define ARIZONA_AIF1RX8_ENA_SHIFT 7 /* AIF1RX8_ENA */
3428#define ARIZONA_AIF1RX8_ENA_WIDTH 1 /* AIF1RX8_ENA */
3429#define ARIZONA_AIF1RX7_ENA 0x0040 /* AIF1RX7_ENA */
3430#define ARIZONA_AIF1RX7_ENA_MASK 0x0040 /* AIF1RX7_ENA */
3431#define ARIZONA_AIF1RX7_ENA_SHIFT 6 /* AIF1RX7_ENA */
3432#define ARIZONA_AIF1RX7_ENA_WIDTH 1 /* AIF1RX7_ENA */
3433#define ARIZONA_AIF1RX6_ENA 0x0020 /* AIF1RX6_ENA */
3434#define ARIZONA_AIF1RX6_ENA_MASK 0x0020 /* AIF1RX6_ENA */
3435#define ARIZONA_AIF1RX6_ENA_SHIFT 5 /* AIF1RX6_ENA */
3436#define ARIZONA_AIF1RX6_ENA_WIDTH 1 /* AIF1RX6_ENA */
3437#define ARIZONA_AIF1RX5_ENA 0x0010 /* AIF1RX5_ENA */
3438#define ARIZONA_AIF1RX5_ENA_MASK 0x0010 /* AIF1RX5_ENA */
3439#define ARIZONA_AIF1RX5_ENA_SHIFT 4 /* AIF1RX5_ENA */
3440#define ARIZONA_AIF1RX5_ENA_WIDTH 1 /* AIF1RX5_ENA */
3441#define ARIZONA_AIF1RX4_ENA 0x0008 /* AIF1RX4_ENA */
3442#define ARIZONA_AIF1RX4_ENA_MASK 0x0008 /* AIF1RX4_ENA */
3443#define ARIZONA_AIF1RX4_ENA_SHIFT 3 /* AIF1RX4_ENA */
3444#define ARIZONA_AIF1RX4_ENA_WIDTH 1 /* AIF1RX4_ENA */
3445#define ARIZONA_AIF1RX3_ENA 0x0004 /* AIF1RX3_ENA */
3446#define ARIZONA_AIF1RX3_ENA_MASK 0x0004 /* AIF1RX3_ENA */
3447#define ARIZONA_AIF1RX3_ENA_SHIFT 2 /* AIF1RX3_ENA */
3448#define ARIZONA_AIF1RX3_ENA_WIDTH 1 /* AIF1RX3_ENA */
3449#define ARIZONA_AIF1RX2_ENA 0x0002 /* AIF1RX2_ENA */
3450#define ARIZONA_AIF1RX2_ENA_MASK 0x0002 /* AIF1RX2_ENA */
3451#define ARIZONA_AIF1RX2_ENA_SHIFT 1 /* AIF1RX2_ENA */
3452#define ARIZONA_AIF1RX2_ENA_WIDTH 1 /* AIF1RX2_ENA */
3453#define ARIZONA_AIF1RX1_ENA 0x0001 /* AIF1RX1_ENA */
3454#define ARIZONA_AIF1RX1_ENA_MASK 0x0001 /* AIF1RX1_ENA */
3455#define ARIZONA_AIF1RX1_ENA_SHIFT 0 /* AIF1RX1_ENA */
3456#define ARIZONA_AIF1RX1_ENA_WIDTH 1 /* AIF1RX1_ENA */
3457
3458/*
3459 * R1307 (0x51B) - AIF1 Force Write
3460 */
3461#define ARIZONA_AIF1_FRC_WR 0x0001 /* AIF1_FRC_WR */
3462#define ARIZONA_AIF1_FRC_WR_MASK 0x0001 /* AIF1_FRC_WR */
3463#define ARIZONA_AIF1_FRC_WR_SHIFT 0 /* AIF1_FRC_WR */
3464#define ARIZONA_AIF1_FRC_WR_WIDTH 1 /* AIF1_FRC_WR */
3465
3466/*
3467 * R1344 (0x540) - AIF2 BCLK Ctrl
3468 */
3469#define ARIZONA_AIF2_BCLK_INV 0x0080 /* AIF2_BCLK_INV */
3470#define ARIZONA_AIF2_BCLK_INV_MASK 0x0080 /* AIF2_BCLK_INV */
3471#define ARIZONA_AIF2_BCLK_INV_SHIFT 7 /* AIF2_BCLK_INV */
3472#define ARIZONA_AIF2_BCLK_INV_WIDTH 1 /* AIF2_BCLK_INV */
3473#define ARIZONA_AIF2_BCLK_FRC 0x0040 /* AIF2_BCLK_FRC */
3474#define ARIZONA_AIF2_BCLK_FRC_MASK 0x0040 /* AIF2_BCLK_FRC */
3475#define ARIZONA_AIF2_BCLK_FRC_SHIFT 6 /* AIF2_BCLK_FRC */
3476#define ARIZONA_AIF2_BCLK_FRC_WIDTH 1 /* AIF2_BCLK_FRC */
3477#define ARIZONA_AIF2_BCLK_MSTR 0x0020 /* AIF2_BCLK_MSTR */
3478#define ARIZONA_AIF2_BCLK_MSTR_MASK 0x0020 /* AIF2_BCLK_MSTR */
3479#define ARIZONA_AIF2_BCLK_MSTR_SHIFT 5 /* AIF2_BCLK_MSTR */
3480#define ARIZONA_AIF2_BCLK_MSTR_WIDTH 1 /* AIF2_BCLK_MSTR */
3481#define ARIZONA_AIF2_BCLK_FREQ_MASK 0x001F /* AIF2_BCLK_FREQ - [4:0] */
3482#define ARIZONA_AIF2_BCLK_FREQ_SHIFT 0 /* AIF2_BCLK_FREQ - [4:0] */
3483#define ARIZONA_AIF2_BCLK_FREQ_WIDTH 5 /* AIF2_BCLK_FREQ - [4:0] */
3484
3485/*
3486 * R1345 (0x541) - AIF2 Tx Pin Ctrl
3487 */
3488#define ARIZONA_AIF2TX_DAT_TRI 0x0020 /* AIF2TX_DAT_TRI */
3489#define ARIZONA_AIF2TX_DAT_TRI_MASK 0x0020 /* AIF2TX_DAT_TRI */
3490#define ARIZONA_AIF2TX_DAT_TRI_SHIFT 5 /* AIF2TX_DAT_TRI */
3491#define ARIZONA_AIF2TX_DAT_TRI_WIDTH 1 /* AIF2TX_DAT_TRI */
3492#define ARIZONA_AIF2TX_LRCLK_SRC 0x0008 /* AIF2TX_LRCLK_SRC */
3493#define ARIZONA_AIF2TX_LRCLK_SRC_MASK 0x0008 /* AIF2TX_LRCLK_SRC */
3494#define ARIZONA_AIF2TX_LRCLK_SRC_SHIFT 3 /* AIF2TX_LRCLK_SRC */
3495#define ARIZONA_AIF2TX_LRCLK_SRC_WIDTH 1 /* AIF2TX_LRCLK_SRC */
3496#define ARIZONA_AIF2TX_LRCLK_INV 0x0004 /* AIF2TX_LRCLK_INV */
3497#define ARIZONA_AIF2TX_LRCLK_INV_MASK 0x0004 /* AIF2TX_LRCLK_INV */
3498#define ARIZONA_AIF2TX_LRCLK_INV_SHIFT 2 /* AIF2TX_LRCLK_INV */
3499#define ARIZONA_AIF2TX_LRCLK_INV_WIDTH 1 /* AIF2TX_LRCLK_INV */
3500#define ARIZONA_AIF2TX_LRCLK_FRC 0x0002 /* AIF2TX_LRCLK_FRC */
3501#define ARIZONA_AIF2TX_LRCLK_FRC_MASK 0x0002 /* AIF2TX_LRCLK_FRC */
3502#define ARIZONA_AIF2TX_LRCLK_FRC_SHIFT 1 /* AIF2TX_LRCLK_FRC */
3503#define ARIZONA_AIF2TX_LRCLK_FRC_WIDTH 1 /* AIF2TX_LRCLK_FRC */
3504#define ARIZONA_AIF2TX_LRCLK_MSTR 0x0001 /* AIF2TX_LRCLK_MSTR */
3505#define ARIZONA_AIF2TX_LRCLK_MSTR_MASK 0x0001 /* AIF2TX_LRCLK_MSTR */
3506#define ARIZONA_AIF2TX_LRCLK_MSTR_SHIFT 0 /* AIF2TX_LRCLK_MSTR */
3507#define ARIZONA_AIF2TX_LRCLK_MSTR_WIDTH 1 /* AIF2TX_LRCLK_MSTR */
3508
3509/*
3510 * R1346 (0x542) - AIF2 Rx Pin Ctrl
3511 */
3512#define ARIZONA_AIF2RX_LRCLK_INV 0x0004 /* AIF2RX_LRCLK_INV */
3513#define ARIZONA_AIF2RX_LRCLK_INV_MASK 0x0004 /* AIF2RX_LRCLK_INV */
3514#define ARIZONA_AIF2RX_LRCLK_INV_SHIFT 2 /* AIF2RX_LRCLK_INV */
3515#define ARIZONA_AIF2RX_LRCLK_INV_WIDTH 1 /* AIF2RX_LRCLK_INV */
3516#define ARIZONA_AIF2RX_LRCLK_FRC 0x0002 /* AIF2RX_LRCLK_FRC */
3517#define ARIZONA_AIF2RX_LRCLK_FRC_MASK 0x0002 /* AIF2RX_LRCLK_FRC */
3518#define ARIZONA_AIF2RX_LRCLK_FRC_SHIFT 1 /* AIF2RX_LRCLK_FRC */
3519#define ARIZONA_AIF2RX_LRCLK_FRC_WIDTH 1 /* AIF2RX_LRCLK_FRC */
3520#define ARIZONA_AIF2RX_LRCLK_MSTR 0x0001 /* AIF2RX_LRCLK_MSTR */
3521#define ARIZONA_AIF2RX_LRCLK_MSTR_MASK 0x0001 /* AIF2RX_LRCLK_MSTR */
3522#define ARIZONA_AIF2RX_LRCLK_MSTR_SHIFT 0 /* AIF2RX_LRCLK_MSTR */
3523#define ARIZONA_AIF2RX_LRCLK_MSTR_WIDTH 1 /* AIF2RX_LRCLK_MSTR */
3524
3525/*
3526 * R1347 (0x543) - AIF2 Rate Ctrl
3527 */
3528#define ARIZONA_AIF2_RATE_MASK 0x7800 /* AIF2_RATE - [14:11] */
3529#define ARIZONA_AIF2_RATE_SHIFT 11 /* AIF2_RATE - [14:11] */
3530#define ARIZONA_AIF2_RATE_WIDTH 4 /* AIF2_RATE - [14:11] */
3531#define ARIZONA_AIF2_TRI 0x0040 /* AIF2_TRI */
3532#define ARIZONA_AIF2_TRI_MASK 0x0040 /* AIF2_TRI */
3533#define ARIZONA_AIF2_TRI_SHIFT 6 /* AIF2_TRI */
3534#define ARIZONA_AIF2_TRI_WIDTH 1 /* AIF2_TRI */
3535
3536/*
3537 * R1348 (0x544) - AIF2 Format
3538 */
3539#define ARIZONA_AIF2_FMT_MASK 0x0007 /* AIF2_FMT - [2:0] */
3540#define ARIZONA_AIF2_FMT_SHIFT 0 /* AIF2_FMT - [2:0] */
3541#define ARIZONA_AIF2_FMT_WIDTH 3 /* AIF2_FMT - [2:0] */
3542
3543/*
3544 * R1349 (0x545) - AIF2 Tx BCLK Rate
3545 */
3546#define ARIZONA_AIF2TX_BCPF_MASK 0x1FFF /* AIF2TX_BCPF - [12:0] */
3547#define ARIZONA_AIF2TX_BCPF_SHIFT 0 /* AIF2TX_BCPF - [12:0] */
3548#define ARIZONA_AIF2TX_BCPF_WIDTH 13 /* AIF2TX_BCPF - [12:0] */
3549
3550/*
3551 * R1350 (0x546) - AIF2 Rx BCLK Rate
3552 */
3553#define ARIZONA_AIF2RX_BCPF_MASK 0x1FFF /* AIF2RX_BCPF - [12:0] */
3554#define ARIZONA_AIF2RX_BCPF_SHIFT 0 /* AIF2RX_BCPF - [12:0] */
3555#define ARIZONA_AIF2RX_BCPF_WIDTH 13 /* AIF2RX_BCPF - [12:0] */
3556
3557/*
3558 * R1351 (0x547) - AIF2 Frame Ctrl 1
3559 */
3560#define ARIZONA_AIF2TX_WL_MASK 0x3F00 /* AIF2TX_WL - [13:8] */
3561#define ARIZONA_AIF2TX_WL_SHIFT 8 /* AIF2TX_WL - [13:8] */
3562#define ARIZONA_AIF2TX_WL_WIDTH 6 /* AIF2TX_WL - [13:8] */
3563#define ARIZONA_AIF2TX_SLOT_LEN_MASK 0x00FF /* AIF2TX_SLOT_LEN - [7:0] */
3564#define ARIZONA_AIF2TX_SLOT_LEN_SHIFT 0 /* AIF2TX_SLOT_LEN - [7:0] */
3565#define ARIZONA_AIF2TX_SLOT_LEN_WIDTH 8 /* AIF2TX_SLOT_LEN - [7:0] */
3566
3567/*
3568 * R1352 (0x548) - AIF2 Frame Ctrl 2
3569 */
3570#define ARIZONA_AIF2RX_WL_MASK 0x3F00 /* AIF2RX_WL - [13:8] */
3571#define ARIZONA_AIF2RX_WL_SHIFT 8 /* AIF2RX_WL - [13:8] */
3572#define ARIZONA_AIF2RX_WL_WIDTH 6 /* AIF2RX_WL - [13:8] */
3573#define ARIZONA_AIF2RX_SLOT_LEN_MASK 0x00FF /* AIF2RX_SLOT_LEN - [7:0] */
3574#define ARIZONA_AIF2RX_SLOT_LEN_SHIFT 0 /* AIF2RX_SLOT_LEN - [7:0] */
3575#define ARIZONA_AIF2RX_SLOT_LEN_WIDTH 8 /* AIF2RX_SLOT_LEN - [7:0] */
3576
3577/*
3578 * R1353 (0x549) - AIF2 Frame Ctrl 3
3579 */
3580#define ARIZONA_AIF2TX1_SLOT_MASK 0x003F /* AIF2TX1_SLOT - [5:0] */
3581#define ARIZONA_AIF2TX1_SLOT_SHIFT 0 /* AIF2TX1_SLOT - [5:0] */
3582#define ARIZONA_AIF2TX1_SLOT_WIDTH 6 /* AIF2TX1_SLOT - [5:0] */
3583
3584/*
3585 * R1354 (0x54A) - AIF2 Frame Ctrl 4
3586 */
3587#define ARIZONA_AIF2TX2_SLOT_MASK 0x003F /* AIF2TX2_SLOT - [5:0] */
3588#define ARIZONA_AIF2TX2_SLOT_SHIFT 0 /* AIF2TX2_SLOT - [5:0] */
3589#define ARIZONA_AIF2TX2_SLOT_WIDTH 6 /* AIF2TX2_SLOT - [5:0] */
3590
3591/*
3592 * R1361 (0x551) - AIF2 Frame Ctrl 11
3593 */
3594#define ARIZONA_AIF2RX1_SLOT_MASK 0x003F /* AIF2RX1_SLOT - [5:0] */
3595#define ARIZONA_AIF2RX1_SLOT_SHIFT 0 /* AIF2RX1_SLOT - [5:0] */
3596#define ARIZONA_AIF2RX1_SLOT_WIDTH 6 /* AIF2RX1_SLOT - [5:0] */
3597
3598/*
3599 * R1362 (0x552) - AIF2 Frame Ctrl 12
3600 */
3601#define ARIZONA_AIF2RX2_SLOT_MASK 0x003F /* AIF2RX2_SLOT - [5:0] */
3602#define ARIZONA_AIF2RX2_SLOT_SHIFT 0 /* AIF2RX2_SLOT - [5:0] */
3603#define ARIZONA_AIF2RX2_SLOT_WIDTH 6 /* AIF2RX2_SLOT - [5:0] */
3604
3605/*
3606 * R1369 (0x559) - AIF2 Tx Enables
3607 */
3608#define ARIZONA_AIF2TX2_ENA 0x0002 /* AIF2TX2_ENA */
3609#define ARIZONA_AIF2TX2_ENA_MASK 0x0002 /* AIF2TX2_ENA */
3610#define ARIZONA_AIF2TX2_ENA_SHIFT 1 /* AIF2TX2_ENA */
3611#define ARIZONA_AIF2TX2_ENA_WIDTH 1 /* AIF2TX2_ENA */
3612#define ARIZONA_AIF2TX1_ENA 0x0001 /* AIF2TX1_ENA */
3613#define ARIZONA_AIF2TX1_ENA_MASK 0x0001 /* AIF2TX1_ENA */
3614#define ARIZONA_AIF2TX1_ENA_SHIFT 0 /* AIF2TX1_ENA */
3615#define ARIZONA_AIF2TX1_ENA_WIDTH 1 /* AIF2TX1_ENA */
3616
3617/*
3618 * R1370 (0x55A) - AIF2 Rx Enables
3619 */
3620#define ARIZONA_AIF2RX2_ENA 0x0002 /* AIF2RX2_ENA */
3621#define ARIZONA_AIF2RX2_ENA_MASK 0x0002 /* AIF2RX2_ENA */
3622#define ARIZONA_AIF2RX2_ENA_SHIFT 1 /* AIF2RX2_ENA */
3623#define ARIZONA_AIF2RX2_ENA_WIDTH 1 /* AIF2RX2_ENA */
3624#define ARIZONA_AIF2RX1_ENA 0x0001 /* AIF2RX1_ENA */
3625#define ARIZONA_AIF2RX1_ENA_MASK 0x0001 /* AIF2RX1_ENA */
3626#define ARIZONA_AIF2RX1_ENA_SHIFT 0 /* AIF2RX1_ENA */
3627#define ARIZONA_AIF2RX1_ENA_WIDTH 1 /* AIF2RX1_ENA */
3628
3629/*
3630 * R1371 (0x55B) - AIF2 Force Write
3631 */
3632#define ARIZONA_AIF2_FRC_WR 0x0001 /* AIF2_FRC_WR */
3633#define ARIZONA_AIF2_FRC_WR_MASK 0x0001 /* AIF2_FRC_WR */
3634#define ARIZONA_AIF2_FRC_WR_SHIFT 0 /* AIF2_FRC_WR */
3635#define ARIZONA_AIF2_FRC_WR_WIDTH 1 /* AIF2_FRC_WR */
3636
3637/*
3638 * R1408 (0x580) - AIF3 BCLK Ctrl
3639 */
3640#define ARIZONA_AIF3_BCLK_INV 0x0080 /* AIF3_BCLK_INV */
3641#define ARIZONA_AIF3_BCLK_INV_MASK 0x0080 /* AIF3_BCLK_INV */
3642#define ARIZONA_AIF3_BCLK_INV_SHIFT 7 /* AIF3_BCLK_INV */
3643#define ARIZONA_AIF3_BCLK_INV_WIDTH 1 /* AIF3_BCLK_INV */
3644#define ARIZONA_AIF3_BCLK_FRC 0x0040 /* AIF3_BCLK_FRC */
3645#define ARIZONA_AIF3_BCLK_FRC_MASK 0x0040 /* AIF3_BCLK_FRC */
3646#define ARIZONA_AIF3_BCLK_FRC_SHIFT 6 /* AIF3_BCLK_FRC */
3647#define ARIZONA_AIF3_BCLK_FRC_WIDTH 1 /* AIF3_BCLK_FRC */
3648#define ARIZONA_AIF3_BCLK_MSTR 0x0020 /* AIF3_BCLK_MSTR */
3649#define ARIZONA_AIF3_BCLK_MSTR_MASK 0x0020 /* AIF3_BCLK_MSTR */
3650#define ARIZONA_AIF3_BCLK_MSTR_SHIFT 5 /* AIF3_BCLK_MSTR */
3651#define ARIZONA_AIF3_BCLK_MSTR_WIDTH 1 /* AIF3_BCLK_MSTR */
3652#define ARIZONA_AIF3_BCLK_FREQ_MASK 0x001F /* AIF3_BCLK_FREQ - [4:0] */
3653#define ARIZONA_AIF3_BCLK_FREQ_SHIFT 0 /* AIF3_BCLK_FREQ - [4:0] */
3654#define ARIZONA_AIF3_BCLK_FREQ_WIDTH 5 /* AIF3_BCLK_FREQ - [4:0] */
3655
3656/*
3657 * R1409 (0x581) - AIF3 Tx Pin Ctrl
3658 */
3659#define ARIZONA_AIF3TX_DAT_TRI 0x0020 /* AIF3TX_DAT_TRI */
3660#define ARIZONA_AIF3TX_DAT_TRI_MASK 0x0020 /* AIF3TX_DAT_TRI */
3661#define ARIZONA_AIF3TX_DAT_TRI_SHIFT 5 /* AIF3TX_DAT_TRI */
3662#define ARIZONA_AIF3TX_DAT_TRI_WIDTH 1 /* AIF3TX_DAT_TRI */
3663#define ARIZONA_AIF3TX_LRCLK_SRC 0x0008 /* AIF3TX_LRCLK_SRC */
3664#define ARIZONA_AIF3TX_LRCLK_SRC_MASK 0x0008 /* AIF3TX_LRCLK_SRC */
3665#define ARIZONA_AIF3TX_LRCLK_SRC_SHIFT 3 /* AIF3TX_LRCLK_SRC */
3666#define ARIZONA_AIF3TX_LRCLK_SRC_WIDTH 1 /* AIF3TX_LRCLK_SRC */
3667#define ARIZONA_AIF3TX_LRCLK_INV 0x0004 /* AIF3TX_LRCLK_INV */
3668#define ARIZONA_AIF3TX_LRCLK_INV_MASK 0x0004 /* AIF3TX_LRCLK_INV */
3669#define ARIZONA_AIF3TX_LRCLK_INV_SHIFT 2 /* AIF3TX_LRCLK_INV */
3670#define ARIZONA_AIF3TX_LRCLK_INV_WIDTH 1 /* AIF3TX_LRCLK_INV */
3671#define ARIZONA_AIF3TX_LRCLK_FRC 0x0002 /* AIF3TX_LRCLK_FRC */
3672#define ARIZONA_AIF3TX_LRCLK_FRC_MASK 0x0002 /* AIF3TX_LRCLK_FRC */
3673#define ARIZONA_AIF3TX_LRCLK_FRC_SHIFT 1 /* AIF3TX_LRCLK_FRC */
3674#define ARIZONA_AIF3TX_LRCLK_FRC_WIDTH 1 /* AIF3TX_LRCLK_FRC */
3675#define ARIZONA_AIF3TX_LRCLK_MSTR 0x0001 /* AIF3TX_LRCLK_MSTR */
3676#define ARIZONA_AIF3TX_LRCLK_MSTR_MASK 0x0001 /* AIF3TX_LRCLK_MSTR */
3677#define ARIZONA_AIF3TX_LRCLK_MSTR_SHIFT 0 /* AIF3TX_LRCLK_MSTR */
3678#define ARIZONA_AIF3TX_LRCLK_MSTR_WIDTH 1 /* AIF3TX_LRCLK_MSTR */
3679
3680/*
3681 * R1410 (0x582) - AIF3 Rx Pin Ctrl
3682 */
3683#define ARIZONA_AIF3RX_LRCLK_INV 0x0004 /* AIF3RX_LRCLK_INV */
3684#define ARIZONA_AIF3RX_LRCLK_INV_MASK 0x0004 /* AIF3RX_LRCLK_INV */
3685#define ARIZONA_AIF3RX_LRCLK_INV_SHIFT 2 /* AIF3RX_LRCLK_INV */
3686#define ARIZONA_AIF3RX_LRCLK_INV_WIDTH 1 /* AIF3RX_LRCLK_INV */
3687#define ARIZONA_AIF3RX_LRCLK_FRC 0x0002 /* AIF3RX_LRCLK_FRC */
3688#define ARIZONA_AIF3RX_LRCLK_FRC_MASK 0x0002 /* AIF3RX_LRCLK_FRC */
3689#define ARIZONA_AIF3RX_LRCLK_FRC_SHIFT 1 /* AIF3RX_LRCLK_FRC */
3690#define ARIZONA_AIF3RX_LRCLK_FRC_WIDTH 1 /* AIF3RX_LRCLK_FRC */
3691#define ARIZONA_AIF3RX_LRCLK_MSTR 0x0001 /* AIF3RX_LRCLK_MSTR */
3692#define ARIZONA_AIF3RX_LRCLK_MSTR_MASK 0x0001 /* AIF3RX_LRCLK_MSTR */
3693#define ARIZONA_AIF3RX_LRCLK_MSTR_SHIFT 0 /* AIF3RX_LRCLK_MSTR */
3694#define ARIZONA_AIF3RX_LRCLK_MSTR_WIDTH 1 /* AIF3RX_LRCLK_MSTR */
3695
3696/*
3697 * R1411 (0x583) - AIF3 Rate Ctrl
3698 */
3699#define ARIZONA_AIF3_RATE_MASK 0x7800 /* AIF3_RATE - [14:11] */
3700#define ARIZONA_AIF3_RATE_SHIFT 11 /* AIF3_RATE - [14:11] */
3701#define ARIZONA_AIF3_RATE_WIDTH 4 /* AIF3_RATE - [14:11] */
3702#define ARIZONA_AIF3_TRI 0x0040 /* AIF3_TRI */
3703#define ARIZONA_AIF3_TRI_MASK 0x0040 /* AIF3_TRI */
3704#define ARIZONA_AIF3_TRI_SHIFT 6 /* AIF3_TRI */
3705#define ARIZONA_AIF3_TRI_WIDTH 1 /* AIF3_TRI */
3706
3707/*
3708 * R1412 (0x584) - AIF3 Format
3709 */
3710#define ARIZONA_AIF3_FMT_MASK 0x0007 /* AIF3_FMT - [2:0] */
3711#define ARIZONA_AIF3_FMT_SHIFT 0 /* AIF3_FMT - [2:0] */
3712#define ARIZONA_AIF3_FMT_WIDTH 3 /* AIF3_FMT - [2:0] */
3713
3714/*
3715 * R1413 (0x585) - AIF3 Tx BCLK Rate
3716 */
3717#define ARIZONA_AIF3TX_BCPF_MASK 0x1FFF /* AIF3TX_BCPF - [12:0] */
3718#define ARIZONA_AIF3TX_BCPF_SHIFT 0 /* AIF3TX_BCPF - [12:0] */
3719#define ARIZONA_AIF3TX_BCPF_WIDTH 13 /* AIF3TX_BCPF - [12:0] */
3720
3721/*
3722 * R1414 (0x586) - AIF3 Rx BCLK Rate
3723 */
3724#define ARIZONA_AIF3RX_BCPF_MASK 0x1FFF /* AIF3RX_BCPF - [12:0] */
3725#define ARIZONA_AIF3RX_BCPF_SHIFT 0 /* AIF3RX_BCPF - [12:0] */
3726#define ARIZONA_AIF3RX_BCPF_WIDTH 13 /* AIF3RX_BCPF - [12:0] */
3727
3728/*
3729 * R1415 (0x587) - AIF3 Frame Ctrl 1
3730 */
3731#define ARIZONA_AIF3TX_WL_MASK 0x3F00 /* AIF3TX_WL - [13:8] */
3732#define ARIZONA_AIF3TX_WL_SHIFT 8 /* AIF3TX_WL - [13:8] */
3733#define ARIZONA_AIF3TX_WL_WIDTH 6 /* AIF3TX_WL - [13:8] */
3734#define ARIZONA_AIF3TX_SLOT_LEN_MASK 0x00FF /* AIF3TX_SLOT_LEN - [7:0] */
3735#define ARIZONA_AIF3TX_SLOT_LEN_SHIFT 0 /* AIF3TX_SLOT_LEN - [7:0] */
3736#define ARIZONA_AIF3TX_SLOT_LEN_WIDTH 8 /* AIF3TX_SLOT_LEN - [7:0] */
3737
3738/*
3739 * R1416 (0x588) - AIF3 Frame Ctrl 2
3740 */
3741#define ARIZONA_AIF3RX_WL_MASK 0x3F00 /* AIF3RX_WL - [13:8] */
3742#define ARIZONA_AIF3RX_WL_SHIFT 8 /* AIF3RX_WL - [13:8] */
3743#define ARIZONA_AIF3RX_WL_WIDTH 6 /* AIF3RX_WL - [13:8] */
3744#define ARIZONA_AIF3RX_SLOT_LEN_MASK 0x00FF /* AIF3RX_SLOT_LEN - [7:0] */
3745#define ARIZONA_AIF3RX_SLOT_LEN_SHIFT 0 /* AIF3RX_SLOT_LEN - [7:0] */
3746#define ARIZONA_AIF3RX_SLOT_LEN_WIDTH 8 /* AIF3RX_SLOT_LEN - [7:0] */
3747
3748/*
3749 * R1417 (0x589) - AIF3 Frame Ctrl 3
3750 */
3751#define ARIZONA_AIF3TX1_SLOT_MASK 0x003F /* AIF3TX1_SLOT - [5:0] */
3752#define ARIZONA_AIF3TX1_SLOT_SHIFT 0 /* AIF3TX1_SLOT - [5:0] */
3753#define ARIZONA_AIF3TX1_SLOT_WIDTH 6 /* AIF3TX1_SLOT - [5:0] */
3754
3755/*
3756 * R1418 (0x58A) - AIF3 Frame Ctrl 4
3757 */
3758#define ARIZONA_AIF3TX2_SLOT_MASK 0x003F /* AIF3TX2_SLOT - [5:0] */
3759#define ARIZONA_AIF3TX2_SLOT_SHIFT 0 /* AIF3TX2_SLOT - [5:0] */
3760#define ARIZONA_AIF3TX2_SLOT_WIDTH 6 /* AIF3TX2_SLOT - [5:0] */
3761
3762/*
3763 * R1425 (0x591) - AIF3 Frame Ctrl 11
3764 */
3765#define ARIZONA_AIF3RX1_SLOT_MASK 0x003F /* AIF3RX1_SLOT - [5:0] */
3766#define ARIZONA_AIF3RX1_SLOT_SHIFT 0 /* AIF3RX1_SLOT - [5:0] */
3767#define ARIZONA_AIF3RX1_SLOT_WIDTH 6 /* AIF3RX1_SLOT - [5:0] */
3768
3769/*
3770 * R1426 (0x592) - AIF3 Frame Ctrl 12
3771 */
3772#define ARIZONA_AIF3RX2_SLOT_MASK 0x003F /* AIF3RX2_SLOT - [5:0] */
3773#define ARIZONA_AIF3RX2_SLOT_SHIFT 0 /* AIF3RX2_SLOT - [5:0] */
3774#define ARIZONA_AIF3RX2_SLOT_WIDTH 6 /* AIF3RX2_SLOT - [5:0] */
3775
3776/*
3777 * R1433 (0x599) - AIF3 Tx Enables
3778 */
3779#define ARIZONA_AIF3TX2_ENA 0x0002 /* AIF3TX2_ENA */
3780#define ARIZONA_AIF3TX2_ENA_MASK 0x0002 /* AIF3TX2_ENA */
3781#define ARIZONA_AIF3TX2_ENA_SHIFT 1 /* AIF3TX2_ENA */
3782#define ARIZONA_AIF3TX2_ENA_WIDTH 1 /* AIF3TX2_ENA */
3783#define ARIZONA_AIF3TX1_ENA 0x0001 /* AIF3TX1_ENA */
3784#define ARIZONA_AIF3TX1_ENA_MASK 0x0001 /* AIF3TX1_ENA */
3785#define ARIZONA_AIF3TX1_ENA_SHIFT 0 /* AIF3TX1_ENA */
3786#define ARIZONA_AIF3TX1_ENA_WIDTH 1 /* AIF3TX1_ENA */
3787
3788/*
3789 * R1434 (0x59A) - AIF3 Rx Enables
3790 */
3791#define ARIZONA_AIF3RX2_ENA 0x0002 /* AIF3RX2_ENA */
3792#define ARIZONA_AIF3RX2_ENA_MASK 0x0002 /* AIF3RX2_ENA */
3793#define ARIZONA_AIF3RX2_ENA_SHIFT 1 /* AIF3RX2_ENA */
3794#define ARIZONA_AIF3RX2_ENA_WIDTH 1 /* AIF3RX2_ENA */
3795#define ARIZONA_AIF3RX1_ENA 0x0001 /* AIF3RX1_ENA */
3796#define ARIZONA_AIF3RX1_ENA_MASK 0x0001 /* AIF3RX1_ENA */
3797#define ARIZONA_AIF3RX1_ENA_SHIFT 0 /* AIF3RX1_ENA */
3798#define ARIZONA_AIF3RX1_ENA_WIDTH 1 /* AIF3RX1_ENA */
3799
3800/*
3801 * R1435 (0x59B) - AIF3 Force Write
3802 */
3803#define ARIZONA_AIF3_FRC_WR 0x0001 /* AIF3_FRC_WR */
3804#define ARIZONA_AIF3_FRC_WR_MASK 0x0001 /* AIF3_FRC_WR */
3805#define ARIZONA_AIF3_FRC_WR_SHIFT 0 /* AIF3_FRC_WR */
3806#define ARIZONA_AIF3_FRC_WR_WIDTH 1 /* AIF3_FRC_WR */
3807
3808/*
3809 * R1507 (0x5E3) - SLIMbus Framer Ref Gear
3810 */
3811#define ARIZONA_SLIMCLK_SRC 0x0010 /* SLIMCLK_SRC */
3812#define ARIZONA_SLIMCLK_SRC_MASK 0x0010 /* SLIMCLK_SRC */
3813#define ARIZONA_SLIMCLK_SRC_SHIFT 4 /* SLIMCLK_SRC */
3814#define ARIZONA_SLIMCLK_SRC_WIDTH 1 /* SLIMCLK_SRC */
3815#define ARIZONA_FRAMER_REF_GEAR_MASK 0x000F /* FRAMER_REF_GEAR - [3:0] */
3816#define ARIZONA_FRAMER_REF_GEAR_SHIFT 0 /* FRAMER_REF_GEAR - [3:0] */
3817#define ARIZONA_FRAMER_REF_GEAR_WIDTH 4 /* FRAMER_REF_GEAR - [3:0] */
3818
3819/*
3820 * R1509 (0x5E5) - SLIMbus Rates 1
3821 */
3822#define ARIZONA_SLIMRX2_RATE_MASK 0x7800 /* SLIMRX2_RATE - [14:11] */
3823#define ARIZONA_SLIMRX2_RATE_SHIFT 11 /* SLIMRX2_RATE - [14:11] */
3824#define ARIZONA_SLIMRX2_RATE_WIDTH 4 /* SLIMRX2_RATE - [14:11] */
3825#define ARIZONA_SLIMRX1_RATE_MASK 0x0078 /* SLIMRX1_RATE - [6:3] */
3826#define ARIZONA_SLIMRX1_RATE_SHIFT 3 /* SLIMRX1_RATE - [6:3] */
3827#define ARIZONA_SLIMRX1_RATE_WIDTH 4 /* SLIMRX1_RATE - [6:3] */
3828
3829/*
3830 * R1510 (0x5E6) - SLIMbus Rates 2
3831 */
3832#define ARIZONA_SLIMRX4_RATE_MASK 0x7800 /* SLIMRX4_RATE - [14:11] */
3833#define ARIZONA_SLIMRX4_RATE_SHIFT 11 /* SLIMRX4_RATE - [14:11] */
3834#define ARIZONA_SLIMRX4_RATE_WIDTH 4 /* SLIMRX4_RATE - [14:11] */
3835#define ARIZONA_SLIMRX3_RATE_MASK 0x0078 /* SLIMRX3_RATE - [6:3] */
3836#define ARIZONA_SLIMRX3_RATE_SHIFT 3 /* SLIMRX3_RATE - [6:3] */
3837#define ARIZONA_SLIMRX3_RATE_WIDTH 4 /* SLIMRX3_RATE - [6:3] */
3838
3839/*
3840 * R1511 (0x5E7) - SLIMbus Rates 3
3841 */
3842#define ARIZONA_SLIMRX6_RATE_MASK 0x7800 /* SLIMRX6_RATE - [14:11] */
3843#define ARIZONA_SLIMRX6_RATE_SHIFT 11 /* SLIMRX6_RATE - [14:11] */
3844#define ARIZONA_SLIMRX6_RATE_WIDTH 4 /* SLIMRX6_RATE - [14:11] */
3845#define ARIZONA_SLIMRX5_RATE_MASK 0x0078 /* SLIMRX5_RATE - [6:3] */
3846#define ARIZONA_SLIMRX5_RATE_SHIFT 3 /* SLIMRX5_RATE - [6:3] */
3847#define ARIZONA_SLIMRX5_RATE_WIDTH 4 /* SLIMRX5_RATE - [6:3] */
3848
3849/*
3850 * R1512 (0x5E8) - SLIMbus Rates 4
3851 */
3852#define ARIZONA_SLIMRX8_RATE_MASK 0x7800 /* SLIMRX8_RATE - [14:11] */
3853#define ARIZONA_SLIMRX8_RATE_SHIFT 11 /* SLIMRX8_RATE - [14:11] */
3854#define ARIZONA_SLIMRX8_RATE_WIDTH 4 /* SLIMRX8_RATE - [14:11] */
3855#define ARIZONA_SLIMRX7_RATE_MASK 0x0078 /* SLIMRX7_RATE - [6:3] */
3856#define ARIZONA_SLIMRX7_RATE_SHIFT 3 /* SLIMRX7_RATE - [6:3] */
3857#define ARIZONA_SLIMRX7_RATE_WIDTH 4 /* SLIMRX7_RATE - [6:3] */
3858
3859/*
3860 * R1513 (0x5E9) - SLIMbus Rates 5
3861 */
3862#define ARIZONA_SLIMTX2_RATE_MASK 0x7800 /* SLIMTX2_RATE - [14:11] */
3863#define ARIZONA_SLIMTX2_RATE_SHIFT 11 /* SLIMTX2_RATE - [14:11] */
3864#define ARIZONA_SLIMTX2_RATE_WIDTH 4 /* SLIMTX2_RATE - [14:11] */
3865#define ARIZONA_SLIMTX1_RATE_MASK 0x0078 /* SLIMTX1_RATE - [6:3] */
3866#define ARIZONA_SLIMTX1_RATE_SHIFT 3 /* SLIMTX1_RATE - [6:3] */
3867#define ARIZONA_SLIMTX1_RATE_WIDTH 4 /* SLIMTX1_RATE - [6:3] */
3868
3869/*
3870 * R1514 (0x5EA) - SLIMbus Rates 6
3871 */
3872#define ARIZONA_SLIMTX4_RATE_MASK 0x7800 /* SLIMTX4_RATE - [14:11] */
3873#define ARIZONA_SLIMTX4_RATE_SHIFT 11 /* SLIMTX4_RATE - [14:11] */
3874#define ARIZONA_SLIMTX4_RATE_WIDTH 4 /* SLIMTX4_RATE - [14:11] */
3875#define ARIZONA_SLIMTX3_RATE_MASK 0x0078 /* SLIMTX3_RATE - [6:3] */
3876#define ARIZONA_SLIMTX3_RATE_SHIFT 3 /* SLIMTX3_RATE - [6:3] */
3877#define ARIZONA_SLIMTX3_RATE_WIDTH 4 /* SLIMTX3_RATE - [6:3] */
3878
3879/*
3880 * R1515 (0x5EB) - SLIMbus Rates 7
3881 */
3882#define ARIZONA_SLIMTX6_RATE_MASK 0x7800 /* SLIMTX6_RATE - [14:11] */
3883#define ARIZONA_SLIMTX6_RATE_SHIFT 11 /* SLIMTX6_RATE - [14:11] */
3884#define ARIZONA_SLIMTX6_RATE_WIDTH 4 /* SLIMTX6_RATE - [14:11] */
3885#define ARIZONA_SLIMTX5_RATE_MASK 0x0078 /* SLIMTX5_RATE - [6:3] */
3886#define ARIZONA_SLIMTX5_RATE_SHIFT 3 /* SLIMTX5_RATE - [6:3] */
3887#define ARIZONA_SLIMTX5_RATE_WIDTH 4 /* SLIMTX5_RATE - [6:3] */
3888
3889/*
3890 * R1516 (0x5EC) - SLIMbus Rates 8
3891 */
3892#define ARIZONA_SLIMTX8_RATE_MASK 0x7800 /* SLIMTX8_RATE - [14:11] */
3893#define ARIZONA_SLIMTX8_RATE_SHIFT 11 /* SLIMTX8_RATE - [14:11] */
3894#define ARIZONA_SLIMTX8_RATE_WIDTH 4 /* SLIMTX8_RATE - [14:11] */
3895#define ARIZONA_SLIMTX7_RATE_MASK 0x0078 /* SLIMTX7_RATE - [6:3] */
3896#define ARIZONA_SLIMTX7_RATE_SHIFT 3 /* SLIMTX7_RATE - [6:3] */
3897#define ARIZONA_SLIMTX7_RATE_WIDTH 4 /* SLIMTX7_RATE - [6:3] */
3898
3899/*
3900 * R1525 (0x5F5) - SLIMbus RX Channel Enable
3901 */
3902#define ARIZONA_SLIMRX8_ENA 0x0080 /* SLIMRX8_ENA */
3903#define ARIZONA_SLIMRX8_ENA_MASK 0x0080 /* SLIMRX8_ENA */
3904#define ARIZONA_SLIMRX8_ENA_SHIFT 7 /* SLIMRX8_ENA */
3905#define ARIZONA_SLIMRX8_ENA_WIDTH 1 /* SLIMRX8_ENA */
3906#define ARIZONA_SLIMRX7_ENA 0x0040 /* SLIMRX7_ENA */
3907#define ARIZONA_SLIMRX7_ENA_MASK 0x0040 /* SLIMRX7_ENA */
3908#define ARIZONA_SLIMRX7_ENA_SHIFT 6 /* SLIMRX7_ENA */
3909#define ARIZONA_SLIMRX7_ENA_WIDTH 1 /* SLIMRX7_ENA */
3910#define ARIZONA_SLIMRX6_ENA 0x0020 /* SLIMRX6_ENA */
3911#define ARIZONA_SLIMRX6_ENA_MASK 0x0020 /* SLIMRX6_ENA */
3912#define ARIZONA_SLIMRX6_ENA_SHIFT 5 /* SLIMRX6_ENA */
3913#define ARIZONA_SLIMRX6_ENA_WIDTH 1 /* SLIMRX6_ENA */
3914#define ARIZONA_SLIMRX5_ENA 0x0010 /* SLIMRX5_ENA */
3915#define ARIZONA_SLIMRX5_ENA_MASK 0x0010 /* SLIMRX5_ENA */
3916#define ARIZONA_SLIMRX5_ENA_SHIFT 4 /* SLIMRX5_ENA */
3917#define ARIZONA_SLIMRX5_ENA_WIDTH 1 /* SLIMRX5_ENA */
3918#define ARIZONA_SLIMRX4_ENA 0x0008 /* SLIMRX4_ENA */
3919#define ARIZONA_SLIMRX4_ENA_MASK 0x0008 /* SLIMRX4_ENA */
3920#define ARIZONA_SLIMRX4_ENA_SHIFT 3 /* SLIMRX4_ENA */
3921#define ARIZONA_SLIMRX4_ENA_WIDTH 1 /* SLIMRX4_ENA */
3922#define ARIZONA_SLIMRX3_ENA 0x0004 /* SLIMRX3_ENA */
3923#define ARIZONA_SLIMRX3_ENA_MASK 0x0004 /* SLIMRX3_ENA */
3924#define ARIZONA_SLIMRX3_ENA_SHIFT 2 /* SLIMRX3_ENA */
3925#define ARIZONA_SLIMRX3_ENA_WIDTH 1 /* SLIMRX3_ENA */
3926#define ARIZONA_SLIMRX2_ENA 0x0002 /* SLIMRX2_ENA */
3927#define ARIZONA_SLIMRX2_ENA_MASK 0x0002 /* SLIMRX2_ENA */
3928#define ARIZONA_SLIMRX2_ENA_SHIFT 1 /* SLIMRX2_ENA */
3929#define ARIZONA_SLIMRX2_ENA_WIDTH 1 /* SLIMRX2_ENA */
3930#define ARIZONA_SLIMRX1_ENA 0x0001 /* SLIMRX1_ENA */
3931#define ARIZONA_SLIMRX1_ENA_MASK 0x0001 /* SLIMRX1_ENA */
3932#define ARIZONA_SLIMRX1_ENA_SHIFT 0 /* SLIMRX1_ENA */
3933#define ARIZONA_SLIMRX1_ENA_WIDTH 1 /* SLIMRX1_ENA */
3934
3935/*
3936 * R1526 (0x5F6) - SLIMbus TX Channel Enable
3937 */
3938#define ARIZONA_SLIMTX8_ENA 0x0080 /* SLIMTX8_ENA */
3939#define ARIZONA_SLIMTX8_ENA_MASK 0x0080 /* SLIMTX8_ENA */
3940#define ARIZONA_SLIMTX8_ENA_SHIFT 7 /* SLIMTX8_ENA */
3941#define ARIZONA_SLIMTX8_ENA_WIDTH 1 /* SLIMTX8_ENA */
3942#define ARIZONA_SLIMTX7_ENA 0x0040 /* SLIMTX7_ENA */
3943#define ARIZONA_SLIMTX7_ENA_MASK 0x0040 /* SLIMTX7_ENA */
3944#define ARIZONA_SLIMTX7_ENA_SHIFT 6 /* SLIMTX7_ENA */
3945#define ARIZONA_SLIMTX7_ENA_WIDTH 1 /* SLIMTX7_ENA */
3946#define ARIZONA_SLIMTX6_ENA 0x0020 /* SLIMTX6_ENA */
3947#define ARIZONA_SLIMTX6_ENA_MASK 0x0020 /* SLIMTX6_ENA */
3948#define ARIZONA_SLIMTX6_ENA_SHIFT 5 /* SLIMTX6_ENA */
3949#define ARIZONA_SLIMTX6_ENA_WIDTH 1 /* SLIMTX6_ENA */
3950#define ARIZONA_SLIMTX5_ENA 0x0010 /* SLIMTX5_ENA */
3951#define ARIZONA_SLIMTX5_ENA_MASK 0x0010 /* SLIMTX5_ENA */
3952#define ARIZONA_SLIMTX5_ENA_SHIFT 4 /* SLIMTX5_ENA */
3953#define ARIZONA_SLIMTX5_ENA_WIDTH 1 /* SLIMTX5_ENA */
3954#define ARIZONA_SLIMTX4_ENA 0x0008 /* SLIMTX4_ENA */
3955#define ARIZONA_SLIMTX4_ENA_MASK 0x0008 /* SLIMTX4_ENA */
3956#define ARIZONA_SLIMTX4_ENA_SHIFT 3 /* SLIMTX4_ENA */
3957#define ARIZONA_SLIMTX4_ENA_WIDTH 1 /* SLIMTX4_ENA */
3958#define ARIZONA_SLIMTX3_ENA 0x0004 /* SLIMTX3_ENA */
3959#define ARIZONA_SLIMTX3_ENA_MASK 0x0004 /* SLIMTX3_ENA */
3960#define ARIZONA_SLIMTX3_ENA_SHIFT 2 /* SLIMTX3_ENA */
3961#define ARIZONA_SLIMTX3_ENA_WIDTH 1 /* SLIMTX3_ENA */
3962#define ARIZONA_SLIMTX2_ENA 0x0002 /* SLIMTX2_ENA */
3963#define ARIZONA_SLIMTX2_ENA_MASK 0x0002 /* SLIMTX2_ENA */
3964#define ARIZONA_SLIMTX2_ENA_SHIFT 1 /* SLIMTX2_ENA */
3965#define ARIZONA_SLIMTX2_ENA_WIDTH 1 /* SLIMTX2_ENA */
3966#define ARIZONA_SLIMTX1_ENA 0x0001 /* SLIMTX1_ENA */
3967#define ARIZONA_SLIMTX1_ENA_MASK 0x0001 /* SLIMTX1_ENA */
3968#define ARIZONA_SLIMTX1_ENA_SHIFT 0 /* SLIMTX1_ENA */
3969#define ARIZONA_SLIMTX1_ENA_WIDTH 1 /* SLIMTX1_ENA */
3970
3971/*
3972 * R1527 (0x5F7) - SLIMbus RX Port Status
3973 */
3974#define ARIZONA_SLIMRX8_PORT_STS 0x0080 /* SLIMRX8_PORT_STS */
3975#define ARIZONA_SLIMRX8_PORT_STS_MASK 0x0080 /* SLIMRX8_PORT_STS */
3976#define ARIZONA_SLIMRX8_PORT_STS_SHIFT 7 /* SLIMRX8_PORT_STS */
3977#define ARIZONA_SLIMRX8_PORT_STS_WIDTH 1 /* SLIMRX8_PORT_STS */
3978#define ARIZONA_SLIMRX7_PORT_STS 0x0040 /* SLIMRX7_PORT_STS */
3979#define ARIZONA_SLIMRX7_PORT_STS_MASK 0x0040 /* SLIMRX7_PORT_STS */
3980#define ARIZONA_SLIMRX7_PORT_STS_SHIFT 6 /* SLIMRX7_PORT_STS */
3981#define ARIZONA_SLIMRX7_PORT_STS_WIDTH 1 /* SLIMRX7_PORT_STS */
3982#define ARIZONA_SLIMRX6_PORT_STS 0x0020 /* SLIMRX6_PORT_STS */
3983#define ARIZONA_SLIMRX6_PORT_STS_MASK 0x0020 /* SLIMRX6_PORT_STS */
3984#define ARIZONA_SLIMRX6_PORT_STS_SHIFT 5 /* SLIMRX6_PORT_STS */
3985#define ARIZONA_SLIMRX6_PORT_STS_WIDTH 1 /* SLIMRX6_PORT_STS */
3986#define ARIZONA_SLIMRX5_PORT_STS 0x0010 /* SLIMRX5_PORT_STS */
3987#define ARIZONA_SLIMRX5_PORT_STS_MASK 0x0010 /* SLIMRX5_PORT_STS */
3988#define ARIZONA_SLIMRX5_PORT_STS_SHIFT 4 /* SLIMRX5_PORT_STS */
3989#define ARIZONA_SLIMRX5_PORT_STS_WIDTH 1 /* SLIMRX5_PORT_STS */
3990#define ARIZONA_SLIMRX4_PORT_STS 0x0008 /* SLIMRX4_PORT_STS */
3991#define ARIZONA_SLIMRX4_PORT_STS_MASK 0x0008 /* SLIMRX4_PORT_STS */
3992#define ARIZONA_SLIMRX4_PORT_STS_SHIFT 3 /* SLIMRX4_PORT_STS */
3993#define ARIZONA_SLIMRX4_PORT_STS_WIDTH 1 /* SLIMRX4_PORT_STS */
3994#define ARIZONA_SLIMRX3_PORT_STS 0x0004 /* SLIMRX3_PORT_STS */
3995#define ARIZONA_SLIMRX3_PORT_STS_MASK 0x0004 /* SLIMRX3_PORT_STS */
3996#define ARIZONA_SLIMRX3_PORT_STS_SHIFT 2 /* SLIMRX3_PORT_STS */
3997#define ARIZONA_SLIMRX3_PORT_STS_WIDTH 1 /* SLIMRX3_PORT_STS */
3998#define ARIZONA_SLIMRX2_PORT_STS 0x0002 /* SLIMRX2_PORT_STS */
3999#define ARIZONA_SLIMRX2_PORT_STS_MASK 0x0002 /* SLIMRX2_PORT_STS */
4000#define ARIZONA_SLIMRX2_PORT_STS_SHIFT 1 /* SLIMRX2_PORT_STS */
4001#define ARIZONA_SLIMRX2_PORT_STS_WIDTH 1 /* SLIMRX2_PORT_STS */
4002#define ARIZONA_SLIMRX1_PORT_STS 0x0001 /* SLIMRX1_PORT_STS */
4003#define ARIZONA_SLIMRX1_PORT_STS_MASK 0x0001 /* SLIMRX1_PORT_STS */
4004#define ARIZONA_SLIMRX1_PORT_STS_SHIFT 0 /* SLIMRX1_PORT_STS */
4005#define ARIZONA_SLIMRX1_PORT_STS_WIDTH 1 /* SLIMRX1_PORT_STS */
4006
4007/*
4008 * R1528 (0x5F8) - SLIMbus TX Port Status
4009 */
4010#define ARIZONA_SLIMTX8_PORT_STS 0x0080 /* SLIMTX8_PORT_STS */
4011#define ARIZONA_SLIMTX8_PORT_STS_MASK 0x0080 /* SLIMTX8_PORT_STS */
4012#define ARIZONA_SLIMTX8_PORT_STS_SHIFT 7 /* SLIMTX8_PORT_STS */
4013#define ARIZONA_SLIMTX8_PORT_STS_WIDTH 1 /* SLIMTX8_PORT_STS */
4014#define ARIZONA_SLIMTX7_PORT_STS 0x0040 /* SLIMTX7_PORT_STS */
4015#define ARIZONA_SLIMTX7_PORT_STS_MASK 0x0040 /* SLIMTX7_PORT_STS */
4016#define ARIZONA_SLIMTX7_PORT_STS_SHIFT 6 /* SLIMTX7_PORT_STS */
4017#define ARIZONA_SLIMTX7_PORT_STS_WIDTH 1 /* SLIMTX7_PORT_STS */
4018#define ARIZONA_SLIMTX6_PORT_STS 0x0020 /* SLIMTX6_PORT_STS */
4019#define ARIZONA_SLIMTX6_PORT_STS_MASK 0x0020 /* SLIMTX6_PORT_STS */
4020#define ARIZONA_SLIMTX6_PORT_STS_SHIFT 5 /* SLIMTX6_PORT_STS */
4021#define ARIZONA_SLIMTX6_PORT_STS_WIDTH 1 /* SLIMTX6_PORT_STS */
4022#define ARIZONA_SLIMTX5_PORT_STS 0x0010 /* SLIMTX5_PORT_STS */
4023#define ARIZONA_SLIMTX5_PORT_STS_MASK 0x0010 /* SLIMTX5_PORT_STS */
4024#define ARIZONA_SLIMTX5_PORT_STS_SHIFT 4 /* SLIMTX5_PORT_STS */
4025#define ARIZONA_SLIMTX5_PORT_STS_WIDTH 1 /* SLIMTX5_PORT_STS */
4026#define ARIZONA_SLIMTX4_PORT_STS 0x0008 /* SLIMTX4_PORT_STS */
4027#define ARIZONA_SLIMTX4_PORT_STS_MASK 0x0008 /* SLIMTX4_PORT_STS */
4028#define ARIZONA_SLIMTX4_PORT_STS_SHIFT 3 /* SLIMTX4_PORT_STS */
4029#define ARIZONA_SLIMTX4_PORT_STS_WIDTH 1 /* SLIMTX4_PORT_STS */
4030#define ARIZONA_SLIMTX3_PORT_STS 0x0004 /* SLIMTX3_PORT_STS */
4031#define ARIZONA_SLIMTX3_PORT_STS_MASK 0x0004 /* SLIMTX3_PORT_STS */
4032#define ARIZONA_SLIMTX3_PORT_STS_SHIFT 2 /* SLIMTX3_PORT_STS */
4033#define ARIZONA_SLIMTX3_PORT_STS_WIDTH 1 /* SLIMTX3_PORT_STS */
4034#define ARIZONA_SLIMTX2_PORT_STS 0x0002 /* SLIMTX2_PORT_STS */
4035#define ARIZONA_SLIMTX2_PORT_STS_MASK 0x0002 /* SLIMTX2_PORT_STS */
4036#define ARIZONA_SLIMTX2_PORT_STS_SHIFT 1 /* SLIMTX2_PORT_STS */
4037#define ARIZONA_SLIMTX2_PORT_STS_WIDTH 1 /* SLIMTX2_PORT_STS */
4038#define ARIZONA_SLIMTX1_PORT_STS 0x0001 /* SLIMTX1_PORT_STS */
4039#define ARIZONA_SLIMTX1_PORT_STS_MASK 0x0001 /* SLIMTX1_PORT_STS */
4040#define ARIZONA_SLIMTX1_PORT_STS_SHIFT 0 /* SLIMTX1_PORT_STS */
4041#define ARIZONA_SLIMTX1_PORT_STS_WIDTH 1 /* SLIMTX1_PORT_STS */
4042
4043/*
4044 * R3087 (0xC0F) - IRQ CTRL 1
4045 */
4046#define ARIZONA_IRQ_POL 0x0400 /* IRQ_POL */
4047#define ARIZONA_IRQ_POL_MASK 0x0400 /* IRQ_POL */
4048#define ARIZONA_IRQ_POL_SHIFT 10 /* IRQ_POL */
4049#define ARIZONA_IRQ_POL_WIDTH 1 /* IRQ_POL */
4050#define ARIZONA_IRQ_OP_CFG 0x0200 /* IRQ_OP_CFG */
4051#define ARIZONA_IRQ_OP_CFG_MASK 0x0200 /* IRQ_OP_CFG */
4052#define ARIZONA_IRQ_OP_CFG_SHIFT 9 /* IRQ_OP_CFG */
4053#define ARIZONA_IRQ_OP_CFG_WIDTH 1 /* IRQ_OP_CFG */
4054
4055/*
4056 * R3088 (0xC10) - GPIO Debounce Config
4057 */
4058#define ARIZONA_GP_DBTIME_MASK 0xF000 /* GP_DBTIME - [15:12] */
4059#define ARIZONA_GP_DBTIME_SHIFT 12 /* GP_DBTIME - [15:12] */
4060#define ARIZONA_GP_DBTIME_WIDTH 4 /* GP_DBTIME - [15:12] */
4061
4062/*
4063 * R3104 (0xC20) - Misc Pad Ctrl 1
4064 */
4065#define ARIZONA_LDO1ENA_PD 0x8000 /* LDO1ENA_PD */
4066#define ARIZONA_LDO1ENA_PD_MASK 0x8000 /* LDO1ENA_PD */
4067#define ARIZONA_LDO1ENA_PD_SHIFT 15 /* LDO1ENA_PD */
4068#define ARIZONA_LDO1ENA_PD_WIDTH 1 /* LDO1ENA_PD */
4069#define ARIZONA_MCLK2_PD 0x2000 /* MCLK2_PD */
4070#define ARIZONA_MCLK2_PD_MASK 0x2000 /* MCLK2_PD */
4071#define ARIZONA_MCLK2_PD_SHIFT 13 /* MCLK2_PD */
4072#define ARIZONA_MCLK2_PD_WIDTH 1 /* MCLK2_PD */
4073#define ARIZONA_RSTB_PU 0x0002 /* RSTB_PU */
4074#define ARIZONA_RSTB_PU_MASK 0x0002 /* RSTB_PU */
4075#define ARIZONA_RSTB_PU_SHIFT 1 /* RSTB_PU */
4076#define ARIZONA_RSTB_PU_WIDTH 1 /* RSTB_PU */
4077
4078/*
4079 * R3105 (0xC21) - Misc Pad Ctrl 2
4080 */
4081#define ARIZONA_MCLK1_PD 0x1000 /* MCLK1_PD */
4082#define ARIZONA_MCLK1_PD_MASK 0x1000 /* MCLK1_PD */
4083#define ARIZONA_MCLK1_PD_SHIFT 12 /* MCLK1_PD */
4084#define ARIZONA_MCLK1_PD_WIDTH 1 /* MCLK1_PD */
4085#define ARIZONA_MICD_PD 0x0100 /* MICD_PD */
4086#define ARIZONA_MICD_PD_MASK 0x0100 /* MICD_PD */
4087#define ARIZONA_MICD_PD_SHIFT 8 /* MICD_PD */
4088#define ARIZONA_MICD_PD_WIDTH 1 /* MICD_PD */
4089#define ARIZONA_ADDR_PD 0x0001 /* ADDR_PD */
4090#define ARIZONA_ADDR_PD_MASK 0x0001 /* ADDR_PD */
4091#define ARIZONA_ADDR_PD_SHIFT 0 /* ADDR_PD */
4092#define ARIZONA_ADDR_PD_WIDTH 1 /* ADDR_PD */
4093
4094/*
4095 * R3106 (0xC22) - Misc Pad Ctrl 3
4096 */
4097#define ARIZONA_DMICDAT4_PD 0x0008 /* DMICDAT4_PD */
4098#define ARIZONA_DMICDAT4_PD_MASK 0x0008 /* DMICDAT4_PD */
4099#define ARIZONA_DMICDAT4_PD_SHIFT 3 /* DMICDAT4_PD */
4100#define ARIZONA_DMICDAT4_PD_WIDTH 1 /* DMICDAT4_PD */
4101#define ARIZONA_DMICDAT3_PD 0x0004 /* DMICDAT3_PD */
4102#define ARIZONA_DMICDAT3_PD_MASK 0x0004 /* DMICDAT3_PD */
4103#define ARIZONA_DMICDAT3_PD_SHIFT 2 /* DMICDAT3_PD */
4104#define ARIZONA_DMICDAT3_PD_WIDTH 1 /* DMICDAT3_PD */
4105#define ARIZONA_DMICDAT2_PD 0x0002 /* DMICDAT2_PD */
4106#define ARIZONA_DMICDAT2_PD_MASK 0x0002 /* DMICDAT2_PD */
4107#define ARIZONA_DMICDAT2_PD_SHIFT 1 /* DMICDAT2_PD */
4108#define ARIZONA_DMICDAT2_PD_WIDTH 1 /* DMICDAT2_PD */
4109#define ARIZONA_DMICDAT1_PD 0x0001 /* DMICDAT1_PD */
4110#define ARIZONA_DMICDAT1_PD_MASK 0x0001 /* DMICDAT1_PD */
4111#define ARIZONA_DMICDAT1_PD_SHIFT 0 /* DMICDAT1_PD */
4112#define ARIZONA_DMICDAT1_PD_WIDTH 1 /* DMICDAT1_PD */
4113
4114/*
4115 * R3107 (0xC23) - Misc Pad Ctrl 4
4116 */
4117#define ARIZONA_AIF1RXLRCLK_PU 0x0020 /* AIF1RXLRCLK_PU */
4118#define ARIZONA_AIF1RXLRCLK_PU_MASK 0x0020 /* AIF1RXLRCLK_PU */
4119#define ARIZONA_AIF1RXLRCLK_PU_SHIFT 5 /* AIF1RXLRCLK_PU */
4120#define ARIZONA_AIF1RXLRCLK_PU_WIDTH 1 /* AIF1RXLRCLK_PU */
4121#define ARIZONA_AIF1RXLRCLK_PD 0x0010 /* AIF1RXLRCLK_PD */
4122#define ARIZONA_AIF1RXLRCLK_PD_MASK 0x0010 /* AIF1RXLRCLK_PD */
4123#define ARIZONA_AIF1RXLRCLK_PD_SHIFT 4 /* AIF1RXLRCLK_PD */
4124#define ARIZONA_AIF1RXLRCLK_PD_WIDTH 1 /* AIF1RXLRCLK_PD */
4125#define ARIZONA_AIF1BCLK_PU 0x0008 /* AIF1BCLK_PU */
4126#define ARIZONA_AIF1BCLK_PU_MASK 0x0008 /* AIF1BCLK_PU */
4127#define ARIZONA_AIF1BCLK_PU_SHIFT 3 /* AIF1BCLK_PU */
4128#define ARIZONA_AIF1BCLK_PU_WIDTH 1 /* AIF1BCLK_PU */
4129#define ARIZONA_AIF1BCLK_PD 0x0004 /* AIF1BCLK_PD */
4130#define ARIZONA_AIF1BCLK_PD_MASK 0x0004 /* AIF1BCLK_PD */
4131#define ARIZONA_AIF1BCLK_PD_SHIFT 2 /* AIF1BCLK_PD */
4132#define ARIZONA_AIF1BCLK_PD_WIDTH 1 /* AIF1BCLK_PD */
4133#define ARIZONA_AIF1RXDAT_PU 0x0002 /* AIF1RXDAT_PU */
4134#define ARIZONA_AIF1RXDAT_PU_MASK 0x0002 /* AIF1RXDAT_PU */
4135#define ARIZONA_AIF1RXDAT_PU_SHIFT 1 /* AIF1RXDAT_PU */
4136#define ARIZONA_AIF1RXDAT_PU_WIDTH 1 /* AIF1RXDAT_PU */
4137#define ARIZONA_AIF1RXDAT_PD 0x0001 /* AIF1RXDAT_PD */
4138#define ARIZONA_AIF1RXDAT_PD_MASK 0x0001 /* AIF1RXDAT_PD */
4139#define ARIZONA_AIF1RXDAT_PD_SHIFT 0 /* AIF1RXDAT_PD */
4140#define ARIZONA_AIF1RXDAT_PD_WIDTH 1 /* AIF1RXDAT_PD */
4141
4142/*
4143 * R3108 (0xC24) - Misc Pad Ctrl 5
4144 */
4145#define ARIZONA_AIF2RXLRCLK_PU 0x0020 /* AIF2RXLRCLK_PU */
4146#define ARIZONA_AIF2RXLRCLK_PU_MASK 0x0020 /* AIF2RXLRCLK_PU */
4147#define ARIZONA_AIF2RXLRCLK_PU_SHIFT 5 /* AIF2RXLRCLK_PU */
4148#define ARIZONA_AIF2RXLRCLK_PU_WIDTH 1 /* AIF2RXLRCLK_PU */
4149#define ARIZONA_AIF2RXLRCLK_PD 0x0010 /* AIF2RXLRCLK_PD */
4150#define ARIZONA_AIF2RXLRCLK_PD_MASK 0x0010 /* AIF2RXLRCLK_PD */
4151#define ARIZONA_AIF2RXLRCLK_PD_SHIFT 4 /* AIF2RXLRCLK_PD */
4152#define ARIZONA_AIF2RXLRCLK_PD_WIDTH 1 /* AIF2RXLRCLK_PD */
4153#define ARIZONA_AIF2BCLK_PU 0x0008 /* AIF2BCLK_PU */
4154#define ARIZONA_AIF2BCLK_PU_MASK 0x0008 /* AIF2BCLK_PU */
4155#define ARIZONA_AIF2BCLK_PU_SHIFT 3 /* AIF2BCLK_PU */
4156#define ARIZONA_AIF2BCLK_PU_WIDTH 1 /* AIF2BCLK_PU */
4157#define ARIZONA_AIF2BCLK_PD 0x0004 /* AIF2BCLK_PD */
4158#define ARIZONA_AIF2BCLK_PD_MASK 0x0004 /* AIF2BCLK_PD */
4159#define ARIZONA_AIF2BCLK_PD_SHIFT 2 /* AIF2BCLK_PD */
4160#define ARIZONA_AIF2BCLK_PD_WIDTH 1 /* AIF2BCLK_PD */
4161#define ARIZONA_AIF2RXDAT_PU 0x0002 /* AIF2RXDAT_PU */
4162#define ARIZONA_AIF2RXDAT_PU_MASK 0x0002 /* AIF2RXDAT_PU */
4163#define ARIZONA_AIF2RXDAT_PU_SHIFT 1 /* AIF2RXDAT_PU */
4164#define ARIZONA_AIF2RXDAT_PU_WIDTH 1 /* AIF2RXDAT_PU */
4165#define ARIZONA_AIF2RXDAT_PD 0x0001 /* AIF2RXDAT_PD */
4166#define ARIZONA_AIF2RXDAT_PD_MASK 0x0001 /* AIF2RXDAT_PD */
4167#define ARIZONA_AIF2RXDAT_PD_SHIFT 0 /* AIF2RXDAT_PD */
4168#define ARIZONA_AIF2RXDAT_PD_WIDTH 1 /* AIF2RXDAT_PD */
4169
4170/*
4171 * R3109 (0xC25) - Misc Pad Ctrl 6
4172 */
4173#define ARIZONA_AIF3RXLRCLK_PU 0x0020 /* AIF3RXLRCLK_PU */
4174#define ARIZONA_AIF3RXLRCLK_PU_MASK 0x0020 /* AIF3RXLRCLK_PU */
4175#define ARIZONA_AIF3RXLRCLK_PU_SHIFT 5 /* AIF3RXLRCLK_PU */
4176#define ARIZONA_AIF3RXLRCLK_PU_WIDTH 1 /* AIF3RXLRCLK_PU */
4177#define ARIZONA_AIF3RXLRCLK_PD 0x0010 /* AIF3RXLRCLK_PD */
4178#define ARIZONA_AIF3RXLRCLK_PD_MASK 0x0010 /* AIF3RXLRCLK_PD */
4179#define ARIZONA_AIF3RXLRCLK_PD_SHIFT 4 /* AIF3RXLRCLK_PD */
4180#define ARIZONA_AIF3RXLRCLK_PD_WIDTH 1 /* AIF3RXLRCLK_PD */
4181#define ARIZONA_AIF3BCLK_PU 0x0008 /* AIF3BCLK_PU */
4182#define ARIZONA_AIF3BCLK_PU_MASK 0x0008 /* AIF3BCLK_PU */
4183#define ARIZONA_AIF3BCLK_PU_SHIFT 3 /* AIF3BCLK_PU */
4184#define ARIZONA_AIF3BCLK_PU_WIDTH 1 /* AIF3BCLK_PU */
4185#define ARIZONA_AIF3BCLK_PD 0x0004 /* AIF3BCLK_PD */
4186#define ARIZONA_AIF3BCLK_PD_MASK 0x0004 /* AIF3BCLK_PD */
4187#define ARIZONA_AIF3BCLK_PD_SHIFT 2 /* AIF3BCLK_PD */
4188#define ARIZONA_AIF3BCLK_PD_WIDTH 1 /* AIF3BCLK_PD */
4189#define ARIZONA_AIF3RXDAT_PU 0x0002 /* AIF3RXDAT_PU */
4190#define ARIZONA_AIF3RXDAT_PU_MASK 0x0002 /* AIF3RXDAT_PU */
4191#define ARIZONA_AIF3RXDAT_PU_SHIFT 1 /* AIF3RXDAT_PU */
4192#define ARIZONA_AIF3RXDAT_PU_WIDTH 1 /* AIF3RXDAT_PU */
4193#define ARIZONA_AIF3RXDAT_PD 0x0001 /* AIF3RXDAT_PD */
4194#define ARIZONA_AIF3RXDAT_PD_MASK 0x0001 /* AIF3RXDAT_PD */
4195#define ARIZONA_AIF3RXDAT_PD_SHIFT 0 /* AIF3RXDAT_PD */
4196#define ARIZONA_AIF3RXDAT_PD_WIDTH 1 /* AIF3RXDAT_PD */
4197
4198/*
4199 * R3328 (0xD00) - Interrupt Status 1
4200 */
4201#define ARIZONA_GP4_EINT1 0x0008 /* GP4_EINT1 */
4202#define ARIZONA_GP4_EINT1_MASK 0x0008 /* GP4_EINT1 */
4203#define ARIZONA_GP4_EINT1_SHIFT 3 /* GP4_EINT1 */
4204#define ARIZONA_GP4_EINT1_WIDTH 1 /* GP4_EINT1 */
4205#define ARIZONA_GP3_EINT1 0x0004 /* GP3_EINT1 */
4206#define ARIZONA_GP3_EINT1_MASK 0x0004 /* GP3_EINT1 */
4207#define ARIZONA_GP3_EINT1_SHIFT 2 /* GP3_EINT1 */
4208#define ARIZONA_GP3_EINT1_WIDTH 1 /* GP3_EINT1 */
4209#define ARIZONA_GP2_EINT1 0x0002 /* GP2_EINT1 */
4210#define ARIZONA_GP2_EINT1_MASK 0x0002 /* GP2_EINT1 */
4211#define ARIZONA_GP2_EINT1_SHIFT 1 /* GP2_EINT1 */
4212#define ARIZONA_GP2_EINT1_WIDTH 1 /* GP2_EINT1 */
4213#define ARIZONA_GP1_EINT1 0x0001 /* GP1_EINT1 */
4214#define ARIZONA_GP1_EINT1_MASK 0x0001 /* GP1_EINT1 */
4215#define ARIZONA_GP1_EINT1_SHIFT 0 /* GP1_EINT1 */
4216#define ARIZONA_GP1_EINT1_WIDTH 1 /* GP1_EINT1 */
4217
4218/*
4219 * R3329 (0xD01) - Interrupt Status 2
4220 */
4221#define ARIZONA_DSP4_RAM_RDY_EINT1 0x0800 /* DSP4_RAM_RDY_EINT1 */
4222#define ARIZONA_DSP4_RAM_RDY_EINT1_MASK 0x0800 /* DSP4_RAM_RDY_EINT1 */
4223#define ARIZONA_DSP4_RAM_RDY_EINT1_SHIFT 11 /* DSP4_RAM_RDY_EINT1 */
4224#define ARIZONA_DSP4_RAM_RDY_EINT1_WIDTH 1 /* DSP4_RAM_RDY_EINT1 */
4225#define ARIZONA_DSP3_RAM_RDY_EINT1 0x0400 /* DSP3_RAM_RDY_EINT1 */
4226#define ARIZONA_DSP3_RAM_RDY_EINT1_MASK 0x0400 /* DSP3_RAM_RDY_EINT1 */
4227#define ARIZONA_DSP3_RAM_RDY_EINT1_SHIFT 10 /* DSP3_RAM_RDY_EINT1 */
4228#define ARIZONA_DSP3_RAM_RDY_EINT1_WIDTH 1 /* DSP3_RAM_RDY_EINT1 */
4229#define ARIZONA_DSP2_RAM_RDY_EINT1 0x0200 /* DSP2_RAM_RDY_EINT1 */
4230#define ARIZONA_DSP2_RAM_RDY_EINT1_MASK 0x0200 /* DSP2_RAM_RDY_EINT1 */
4231#define ARIZONA_DSP2_RAM_RDY_EINT1_SHIFT 9 /* DSP2_RAM_RDY_EINT1 */
4232#define ARIZONA_DSP2_RAM_RDY_EINT1_WIDTH 1 /* DSP2_RAM_RDY_EINT1 */
4233#define ARIZONA_DSP1_RAM_RDY_EINT1 0x0100 /* DSP1_RAM_RDY_EINT1 */
4234#define ARIZONA_DSP1_RAM_RDY_EINT1_MASK 0x0100 /* DSP1_RAM_RDY_EINT1 */
4235#define ARIZONA_DSP1_RAM_RDY_EINT1_SHIFT 8 /* DSP1_RAM_RDY_EINT1 */
4236#define ARIZONA_DSP1_RAM_RDY_EINT1_WIDTH 1 /* DSP1_RAM_RDY_EINT1 */
4237#define ARIZONA_DSP_IRQ8_EINT1 0x0080 /* DSP_IRQ8_EINT1 */
4238#define ARIZONA_DSP_IRQ8_EINT1_MASK 0x0080 /* DSP_IRQ8_EINT1 */
4239#define ARIZONA_DSP_IRQ8_EINT1_SHIFT 7 /* DSP_IRQ8_EINT1 */
4240#define ARIZONA_DSP_IRQ8_EINT1_WIDTH 1 /* DSP_IRQ8_EINT1 */
4241#define ARIZONA_DSP_IRQ7_EINT1 0x0040 /* DSP_IRQ7_EINT1 */
4242#define ARIZONA_DSP_IRQ7_EINT1_MASK 0x0040 /* DSP_IRQ7_EINT1 */
4243#define ARIZONA_DSP_IRQ7_EINT1_SHIFT 6 /* DSP_IRQ7_EINT1 */
4244#define ARIZONA_DSP_IRQ7_EINT1_WIDTH 1 /* DSP_IRQ7_EINT1 */
4245#define ARIZONA_DSP_IRQ6_EINT1 0x0020 /* DSP_IRQ6_EINT1 */
4246#define ARIZONA_DSP_IRQ6_EINT1_MASK 0x0020 /* DSP_IRQ6_EINT1 */
4247#define ARIZONA_DSP_IRQ6_EINT1_SHIFT 5 /* DSP_IRQ6_EINT1 */
4248#define ARIZONA_DSP_IRQ6_EINT1_WIDTH 1 /* DSP_IRQ6_EINT1 */
4249#define ARIZONA_DSP_IRQ5_EINT1 0x0010 /* DSP_IRQ5_EINT1 */
4250#define ARIZONA_DSP_IRQ5_EINT1_MASK 0x0010 /* DSP_IRQ5_EINT1 */
4251#define ARIZONA_DSP_IRQ5_EINT1_SHIFT 4 /* DSP_IRQ5_EINT1 */
4252#define ARIZONA_DSP_IRQ5_EINT1_WIDTH 1 /* DSP_IRQ5_EINT1 */
4253#define ARIZONA_DSP_IRQ4_EINT1 0x0008 /* DSP_IRQ4_EINT1 */
4254#define ARIZONA_DSP_IRQ4_EINT1_MASK 0x0008 /* DSP_IRQ4_EINT1 */
4255#define ARIZONA_DSP_IRQ4_EINT1_SHIFT 3 /* DSP_IRQ4_EINT1 */
4256#define ARIZONA_DSP_IRQ4_EINT1_WIDTH 1 /* DSP_IRQ4_EINT1 */
4257#define ARIZONA_DSP_IRQ3_EINT1 0x0004 /* DSP_IRQ3_EINT1 */
4258#define ARIZONA_DSP_IRQ3_EINT1_MASK 0x0004 /* DSP_IRQ3_EINT1 */
4259#define ARIZONA_DSP_IRQ3_EINT1_SHIFT 2 /* DSP_IRQ3_EINT1 */
4260#define ARIZONA_DSP_IRQ3_EINT1_WIDTH 1 /* DSP_IRQ3_EINT1 */
4261#define ARIZONA_DSP_IRQ2_EINT1 0x0002 /* DSP_IRQ2_EINT1 */
4262#define ARIZONA_DSP_IRQ2_EINT1_MASK 0x0002 /* DSP_IRQ2_EINT1 */
4263#define ARIZONA_DSP_IRQ2_EINT1_SHIFT 1 /* DSP_IRQ2_EINT1 */
4264#define ARIZONA_DSP_IRQ2_EINT1_WIDTH 1 /* DSP_IRQ2_EINT1 */
4265#define ARIZONA_DSP_IRQ1_EINT1 0x0001 /* DSP_IRQ1_EINT1 */
4266#define ARIZONA_DSP_IRQ1_EINT1_MASK 0x0001 /* DSP_IRQ1_EINT1 */
4267#define ARIZONA_DSP_IRQ1_EINT1_SHIFT 0 /* DSP_IRQ1_EINT1 */
4268#define ARIZONA_DSP_IRQ1_EINT1_WIDTH 1 /* DSP_IRQ1_EINT1 */
4269
4270/*
4271 * R3330 (0xD02) - Interrupt Status 3
4272 */
4273#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1 0x8000 /* SPK_SHUTDOWN_WARN_EINT1 */
4274#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_MASK 0x8000 /* SPK_SHUTDOWN_WARN_EINT1 */
4275#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_SHIFT 15 /* SPK_SHUTDOWN_WARN_EINT1 */
4276#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_WARN_EINT1 */
4277#define ARIZONA_SPK_SHUTDOWN_EINT1 0x4000 /* SPK_SHUTDOWN_EINT1 */
4278#define ARIZONA_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* SPK_SHUTDOWN_EINT1 */
4279#define ARIZONA_SPK_SHUTDOWN_EINT1_SHIFT 14 /* SPK_SHUTDOWN_EINT1 */
4280#define ARIZONA_SPK_SHUTDOWN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_EINT1 */
4281#define ARIZONA_HPDET_EINT1 0x2000 /* HPDET_EINT1 */
4282#define ARIZONA_HPDET_EINT1_MASK 0x2000 /* HPDET_EINT1 */
4283#define ARIZONA_HPDET_EINT1_SHIFT 13 /* HPDET_EINT1 */
4284#define ARIZONA_HPDET_EINT1_WIDTH 1 /* HPDET_EINT1 */
4285#define ARIZONA_MICDET_EINT1 0x1000 /* MICDET_EINT1 */
4286#define ARIZONA_MICDET_EINT1_MASK 0x1000 /* MICDET_EINT1 */
4287#define ARIZONA_MICDET_EINT1_SHIFT 12 /* MICDET_EINT1 */
4288#define ARIZONA_MICDET_EINT1_WIDTH 1 /* MICDET_EINT1 */
4289#define ARIZONA_WSEQ_DONE_EINT1 0x0800 /* WSEQ_DONE_EINT1 */
4290#define ARIZONA_WSEQ_DONE_EINT1_MASK 0x0800 /* WSEQ_DONE_EINT1 */
4291#define ARIZONA_WSEQ_DONE_EINT1_SHIFT 11 /* WSEQ_DONE_EINT1 */
4292#define ARIZONA_WSEQ_DONE_EINT1_WIDTH 1 /* WSEQ_DONE_EINT1 */
4293#define ARIZONA_DRC2_SIG_DET_EINT1 0x0400 /* DRC2_SIG_DET_EINT1 */
4294#define ARIZONA_DRC2_SIG_DET_EINT1_MASK 0x0400 /* DRC2_SIG_DET_EINT1 */
4295#define ARIZONA_DRC2_SIG_DET_EINT1_SHIFT 10 /* DRC2_SIG_DET_EINT1 */
4296#define ARIZONA_DRC2_SIG_DET_EINT1_WIDTH 1 /* DRC2_SIG_DET_EINT1 */
4297#define ARIZONA_DRC1_SIG_DET_EINT1 0x0200 /* DRC1_SIG_DET_EINT1 */
4298#define ARIZONA_DRC1_SIG_DET_EINT1_MASK 0x0200 /* DRC1_SIG_DET_EINT1 */
4299#define ARIZONA_DRC1_SIG_DET_EINT1_SHIFT 9 /* DRC1_SIG_DET_EINT1 */
4300#define ARIZONA_DRC1_SIG_DET_EINT1_WIDTH 1 /* DRC1_SIG_DET_EINT1 */
4301#define ARIZONA_ASRC2_LOCK_EINT1 0x0100 /* ASRC2_LOCK_EINT1 */
4302#define ARIZONA_ASRC2_LOCK_EINT1_MASK 0x0100 /* ASRC2_LOCK_EINT1 */
4303#define ARIZONA_ASRC2_LOCK_EINT1_SHIFT 8 /* ASRC2_LOCK_EINT1 */
4304#define ARIZONA_ASRC2_LOCK_EINT1_WIDTH 1 /* ASRC2_LOCK_EINT1 */
4305#define ARIZONA_ASRC1_LOCK_EINT1 0x0080 /* ASRC1_LOCK_EINT1 */
4306#define ARIZONA_ASRC1_LOCK_EINT1_MASK 0x0080 /* ASRC1_LOCK_EINT1 */
4307#define ARIZONA_ASRC1_LOCK_EINT1_SHIFT 7 /* ASRC1_LOCK_EINT1 */
4308#define ARIZONA_ASRC1_LOCK_EINT1_WIDTH 1 /* ASRC1_LOCK_EINT1 */
4309#define ARIZONA_UNDERCLOCKED_EINT1 0x0040 /* UNDERCLOCKED_EINT1 */
4310#define ARIZONA_UNDERCLOCKED_EINT1_MASK 0x0040 /* UNDERCLOCKED_EINT1 */
4311#define ARIZONA_UNDERCLOCKED_EINT1_SHIFT 6 /* UNDERCLOCKED_EINT1 */
4312#define ARIZONA_UNDERCLOCKED_EINT1_WIDTH 1 /* UNDERCLOCKED_EINT1 */
4313#define ARIZONA_OVERCLOCKED_EINT1 0x0020 /* OVERCLOCKED_EINT1 */
4314#define ARIZONA_OVERCLOCKED_EINT1_MASK 0x0020 /* OVERCLOCKED_EINT1 */
4315#define ARIZONA_OVERCLOCKED_EINT1_SHIFT 5 /* OVERCLOCKED_EINT1 */
4316#define ARIZONA_OVERCLOCKED_EINT1_WIDTH 1 /* OVERCLOCKED_EINT1 */
4317#define ARIZONA_FLL2_LOCK_EINT1 0x0008 /* FLL2_LOCK_EINT1 */
4318#define ARIZONA_FLL2_LOCK_EINT1_MASK 0x0008 /* FLL2_LOCK_EINT1 */
4319#define ARIZONA_FLL2_LOCK_EINT1_SHIFT 3 /* FLL2_LOCK_EINT1 */
4320#define ARIZONA_FLL2_LOCK_EINT1_WIDTH 1 /* FLL2_LOCK_EINT1 */
4321#define ARIZONA_FLL1_LOCK_EINT1 0x0004 /* FLL1_LOCK_EINT1 */
4322#define ARIZONA_FLL1_LOCK_EINT1_MASK 0x0004 /* FLL1_LOCK_EINT1 */
4323#define ARIZONA_FLL1_LOCK_EINT1_SHIFT 2 /* FLL1_LOCK_EINT1 */
4324#define ARIZONA_FLL1_LOCK_EINT1_WIDTH 1 /* FLL1_LOCK_EINT1 */
4325#define ARIZONA_CLKGEN_ERR_EINT1 0x0002 /* CLKGEN_ERR_EINT1 */
4326#define ARIZONA_CLKGEN_ERR_EINT1_MASK 0x0002 /* CLKGEN_ERR_EINT1 */
4327#define ARIZONA_CLKGEN_ERR_EINT1_SHIFT 1 /* CLKGEN_ERR_EINT1 */
4328#define ARIZONA_CLKGEN_ERR_EINT1_WIDTH 1 /* CLKGEN_ERR_EINT1 */
4329#define ARIZONA_CLKGEN_ERR_ASYNC_EINT1 0x0001 /* CLKGEN_ERR_ASYNC_EINT1 */
4330#define ARIZONA_CLKGEN_ERR_ASYNC_EINT1_MASK 0x0001 /* CLKGEN_ERR_ASYNC_EINT1 */
4331#define ARIZONA_CLKGEN_ERR_ASYNC_EINT1_SHIFT 0 /* CLKGEN_ERR_ASYNC_EINT1 */
4332#define ARIZONA_CLKGEN_ERR_ASYNC_EINT1_WIDTH 1 /* CLKGEN_ERR_ASYNC_EINT1 */
4333
4334/*
4335 * R3331 (0xD03) - Interrupt Status 4
4336 */
4337#define ARIZONA_ASRC_CFG_ERR_EINT1 0x8000 /* ASRC_CFG_ERR_EINT1 */
4338#define ARIZONA_ASRC_CFG_ERR_EINT1_MASK 0x8000 /* ASRC_CFG_ERR_EINT1 */
4339#define ARIZONA_ASRC_CFG_ERR_EINT1_SHIFT 15 /* ASRC_CFG_ERR_EINT1 */
4340#define ARIZONA_ASRC_CFG_ERR_EINT1_WIDTH 1 /* ASRC_CFG_ERR_EINT1 */
4341#define ARIZONA_AIF3_ERR_EINT1 0x4000 /* AIF3_ERR_EINT1 */
4342#define ARIZONA_AIF3_ERR_EINT1_MASK 0x4000 /* AIF3_ERR_EINT1 */
4343#define ARIZONA_AIF3_ERR_EINT1_SHIFT 14 /* AIF3_ERR_EINT1 */
4344#define ARIZONA_AIF3_ERR_EINT1_WIDTH 1 /* AIF3_ERR_EINT1 */
4345#define ARIZONA_AIF2_ERR_EINT1 0x2000 /* AIF2_ERR_EINT1 */
4346#define ARIZONA_AIF2_ERR_EINT1_MASK 0x2000 /* AIF2_ERR_EINT1 */
4347#define ARIZONA_AIF2_ERR_EINT1_SHIFT 13 /* AIF2_ERR_EINT1 */
4348#define ARIZONA_AIF2_ERR_EINT1_WIDTH 1 /* AIF2_ERR_EINT1 */
4349#define ARIZONA_AIF1_ERR_EINT1 0x1000 /* AIF1_ERR_EINT1 */
4350#define ARIZONA_AIF1_ERR_EINT1_MASK 0x1000 /* AIF1_ERR_EINT1 */
4351#define ARIZONA_AIF1_ERR_EINT1_SHIFT 12 /* AIF1_ERR_EINT1 */
4352#define ARIZONA_AIF1_ERR_EINT1_WIDTH 1 /* AIF1_ERR_EINT1 */
4353#define ARIZONA_CTRLIF_ERR_EINT1 0x0800 /* CTRLIF_ERR_EINT1 */
4354#define ARIZONA_CTRLIF_ERR_EINT1_MASK 0x0800 /* CTRLIF_ERR_EINT1 */
4355#define ARIZONA_CTRLIF_ERR_EINT1_SHIFT 11 /* CTRLIF_ERR_EINT1 */
4356#define ARIZONA_CTRLIF_ERR_EINT1_WIDTH 1 /* CTRLIF_ERR_EINT1 */
4357#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1 0x0400 /* MIXER_DROPPED_SAMPLE_EINT1 */
4358#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1_MASK 0x0400 /* MIXER_DROPPED_SAMPLE_EINT1 */
4359#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1_SHIFT 10 /* MIXER_DROPPED_SAMPLE_EINT1 */
4360#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1_WIDTH 1 /* MIXER_DROPPED_SAMPLE_EINT1 */
4361#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1 0x0200 /* ASYNC_CLK_ENA_LOW_EINT1 */
4362#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1_MASK 0x0200 /* ASYNC_CLK_ENA_LOW_EINT1 */
4363#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1_SHIFT 9 /* ASYNC_CLK_ENA_LOW_EINT1 */
4364#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1_WIDTH 1 /* ASYNC_CLK_ENA_LOW_EINT1 */
4365#define ARIZONA_SYSCLK_ENA_LOW_EINT1 0x0100 /* SYSCLK_ENA_LOW_EINT1 */
4366#define ARIZONA_SYSCLK_ENA_LOW_EINT1_MASK 0x0100 /* SYSCLK_ENA_LOW_EINT1 */
4367#define ARIZONA_SYSCLK_ENA_LOW_EINT1_SHIFT 8 /* SYSCLK_ENA_LOW_EINT1 */
4368#define ARIZONA_SYSCLK_ENA_LOW_EINT1_WIDTH 1 /* SYSCLK_ENA_LOW_EINT1 */
4369#define ARIZONA_ISRC1_CFG_ERR_EINT1 0x0080 /* ISRC1_CFG_ERR_EINT1 */
4370#define ARIZONA_ISRC1_CFG_ERR_EINT1_MASK 0x0080 /* ISRC1_CFG_ERR_EINT1 */
4371#define ARIZONA_ISRC1_CFG_ERR_EINT1_SHIFT 7 /* ISRC1_CFG_ERR_EINT1 */
4372#define ARIZONA_ISRC1_CFG_ERR_EINT1_WIDTH 1 /* ISRC1_CFG_ERR_EINT1 */
4373#define ARIZONA_ISRC2_CFG_ERR_EINT1 0x0040 /* ISRC2_CFG_ERR_EINT1 */
4374#define ARIZONA_ISRC2_CFG_ERR_EINT1_MASK 0x0040 /* ISRC2_CFG_ERR_EINT1 */
4375#define ARIZONA_ISRC2_CFG_ERR_EINT1_SHIFT 6 /* ISRC2_CFG_ERR_EINT1 */
4376#define ARIZONA_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* ISRC2_CFG_ERR_EINT1 */
4377
4378/*
4379 * R3332 (0xD04) - Interrupt Status 5
4380 */
4381#define ARIZONA_BOOT_DONE_EINT1 0x0100 /* BOOT_DONE_EINT1 */
4382#define ARIZONA_BOOT_DONE_EINT1_MASK 0x0100 /* BOOT_DONE_EINT1 */
4383#define ARIZONA_BOOT_DONE_EINT1_SHIFT 8 /* BOOT_DONE_EINT1 */
4384#define ARIZONA_BOOT_DONE_EINT1_WIDTH 1 /* BOOT_DONE_EINT1 */
4385#define ARIZONA_DCS_DAC_DONE_EINT1 0x0080 /* DCS_DAC_DONE_EINT1 */
4386#define ARIZONA_DCS_DAC_DONE_EINT1_MASK 0x0080 /* DCS_DAC_DONE_EINT1 */
4387#define ARIZONA_DCS_DAC_DONE_EINT1_SHIFT 7 /* DCS_DAC_DONE_EINT1 */
4388#define ARIZONA_DCS_DAC_DONE_EINT1_WIDTH 1 /* DCS_DAC_DONE_EINT1 */
4389#define ARIZONA_DCS_HP_DONE_EINT1 0x0040 /* DCS_HP_DONE_EINT1 */
4390#define ARIZONA_DCS_HP_DONE_EINT1_MASK 0x0040 /* DCS_HP_DONE_EINT1 */
4391#define ARIZONA_DCS_HP_DONE_EINT1_SHIFT 6 /* DCS_HP_DONE_EINT1 */
4392#define ARIZONA_DCS_HP_DONE_EINT1_WIDTH 1 /* DCS_HP_DONE_EINT1 */
4393#define ARIZONA_FLL2_CLOCK_OK_EINT1 0x0002 /* FLL2_CLOCK_OK_EINT1 */
4394#define ARIZONA_FLL2_CLOCK_OK_EINT1_MASK 0x0002 /* FLL2_CLOCK_OK_EINT1 */
4395#define ARIZONA_FLL2_CLOCK_OK_EINT1_SHIFT 1 /* FLL2_CLOCK_OK_EINT1 */
4396#define ARIZONA_FLL2_CLOCK_OK_EINT1_WIDTH 1 /* FLL2_CLOCK_OK_EINT1 */
4397#define ARIZONA_FLL1_CLOCK_OK_EINT1 0x0001 /* FLL1_CLOCK_OK_EINT1 */
4398#define ARIZONA_FLL1_CLOCK_OK_EINT1_MASK 0x0001 /* FLL1_CLOCK_OK_EINT1 */
4399#define ARIZONA_FLL1_CLOCK_OK_EINT1_SHIFT 0 /* FLL1_CLOCK_OK_EINT1 */
4400#define ARIZONA_FLL1_CLOCK_OK_EINT1_WIDTH 1 /* FLL1_CLOCK_OK_EINT1 */
4401
4402/*
4403 * R3336 (0xD08) - Interrupt Status 1 Mask
4404 */
4405#define ARIZONA_IM_GP4_EINT1 0x0008 /* IM_GP4_EINT1 */
4406#define ARIZONA_IM_GP4_EINT1_MASK 0x0008 /* IM_GP4_EINT1 */
4407#define ARIZONA_IM_GP4_EINT1_SHIFT 3 /* IM_GP4_EINT1 */
4408#define ARIZONA_IM_GP4_EINT1_WIDTH 1 /* IM_GP4_EINT1 */
4409#define ARIZONA_IM_GP3_EINT1 0x0004 /* IM_GP3_EINT1 */
4410#define ARIZONA_IM_GP3_EINT1_MASK 0x0004 /* IM_GP3_EINT1 */
4411#define ARIZONA_IM_GP3_EINT1_SHIFT 2 /* IM_GP3_EINT1 */
4412#define ARIZONA_IM_GP3_EINT1_WIDTH 1 /* IM_GP3_EINT1 */
4413#define ARIZONA_IM_GP2_EINT1 0x0002 /* IM_GP2_EINT1 */
4414#define ARIZONA_IM_GP2_EINT1_MASK 0x0002 /* IM_GP2_EINT1 */
4415#define ARIZONA_IM_GP2_EINT1_SHIFT 1 /* IM_GP2_EINT1 */
4416#define ARIZONA_IM_GP2_EINT1_WIDTH 1 /* IM_GP2_EINT1 */
4417#define ARIZONA_IM_GP1_EINT1 0x0001 /* IM_GP1_EINT1 */
4418#define ARIZONA_IM_GP1_EINT1_MASK 0x0001 /* IM_GP1_EINT1 */
4419#define ARIZONA_IM_GP1_EINT1_SHIFT 0 /* IM_GP1_EINT1 */
4420#define ARIZONA_IM_GP1_EINT1_WIDTH 1 /* IM_GP1_EINT1 */
4421
4422/*
4423 * R3337 (0xD09) - Interrupt Status 2 Mask
4424 */
4425#define ARIZONA_IM_DSP1_RAM_RDY_EINT1 0x0100 /* IM_DSP1_RAM_RDY_EINT1 */
4426#define ARIZONA_IM_DSP1_RAM_RDY_EINT1_MASK 0x0100 /* IM_DSP1_RAM_RDY_EINT1 */
4427#define ARIZONA_IM_DSP1_RAM_RDY_EINT1_SHIFT 8 /* IM_DSP1_RAM_RDY_EINT1 */
4428#define ARIZONA_IM_DSP1_RAM_RDY_EINT1_WIDTH 1 /* IM_DSP1_RAM_RDY_EINT1 */
4429#define ARIZONA_IM_DSP_IRQ2_EINT1 0x0002 /* IM_DSP_IRQ2_EINT1 */
4430#define ARIZONA_IM_DSP_IRQ2_EINT1_MASK 0x0002 /* IM_DSP_IRQ2_EINT1 */
4431#define ARIZONA_IM_DSP_IRQ2_EINT1_SHIFT 1 /* IM_DSP_IRQ2_EINT1 */
4432#define ARIZONA_IM_DSP_IRQ2_EINT1_WIDTH 1 /* IM_DSP_IRQ2_EINT1 */
4433#define ARIZONA_IM_DSP_IRQ1_EINT1 0x0001 /* IM_DSP_IRQ1_EINT1 */
4434#define ARIZONA_IM_DSP_IRQ1_EINT1_MASK 0x0001 /* IM_DSP_IRQ1_EINT1 */
4435#define ARIZONA_IM_DSP_IRQ1_EINT1_SHIFT 0 /* IM_DSP_IRQ1_EINT1 */
4436#define ARIZONA_IM_DSP_IRQ1_EINT1_WIDTH 1 /* IM_DSP_IRQ1_EINT1 */
4437
4438/*
4439 * R3338 (0xD0A) - Interrupt Status 3 Mask
4440 */
4441#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
4442#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_MASK 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
4443#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_SHIFT 15 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
4444#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
4445#define ARIZONA_IM_SPK_SHUTDOWN_EINT1 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */
4446#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */
4447#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT1 */
4448#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT1 */
4449#define ARIZONA_IM_HPDET_EINT1 0x2000 /* IM_HPDET_EINT1 */
4450#define ARIZONA_IM_HPDET_EINT1_MASK 0x2000 /* IM_HPDET_EINT1 */
4451#define ARIZONA_IM_HPDET_EINT1_SHIFT 13 /* IM_HPDET_EINT1 */
4452#define ARIZONA_IM_HPDET_EINT1_WIDTH 1 /* IM_HPDET_EINT1 */
4453#define ARIZONA_IM_MICDET_EINT1 0x1000 /* IM_MICDET_EINT1 */
4454#define ARIZONA_IM_MICDET_EINT1_MASK 0x1000 /* IM_MICDET_EINT1 */
4455#define ARIZONA_IM_MICDET_EINT1_SHIFT 12 /* IM_MICDET_EINT1 */
4456#define ARIZONA_IM_MICDET_EINT1_WIDTH 1 /* IM_MICDET_EINT1 */
4457#define ARIZONA_IM_WSEQ_DONE_EINT1 0x0800 /* IM_WSEQ_DONE_EINT1 */
4458#define ARIZONA_IM_WSEQ_DONE_EINT1_MASK 0x0800 /* IM_WSEQ_DONE_EINT1 */
4459#define ARIZONA_IM_WSEQ_DONE_EINT1_SHIFT 11 /* IM_WSEQ_DONE_EINT1 */
4460#define ARIZONA_IM_WSEQ_DONE_EINT1_WIDTH 1 /* IM_WSEQ_DONE_EINT1 */
4461#define ARIZONA_IM_DRC2_SIG_DET_EINT1 0x0400 /* IM_DRC2_SIG_DET_EINT1 */
4462#define ARIZONA_IM_DRC2_SIG_DET_EINT1_MASK 0x0400 /* IM_DRC2_SIG_DET_EINT1 */
4463#define ARIZONA_IM_DRC2_SIG_DET_EINT1_SHIFT 10 /* IM_DRC2_SIG_DET_EINT1 */
4464#define ARIZONA_IM_DRC2_SIG_DET_EINT1_WIDTH 1 /* IM_DRC2_SIG_DET_EINT1 */
4465#define ARIZONA_IM_DRC1_SIG_DET_EINT1 0x0200 /* IM_DRC1_SIG_DET_EINT1 */
4466#define ARIZONA_IM_DRC1_SIG_DET_EINT1_MASK 0x0200 /* IM_DRC1_SIG_DET_EINT1 */
4467#define ARIZONA_IM_DRC1_SIG_DET_EINT1_SHIFT 9 /* IM_DRC1_SIG_DET_EINT1 */
4468#define ARIZONA_IM_DRC1_SIG_DET_EINT1_WIDTH 1 /* IM_DRC1_SIG_DET_EINT1 */
4469#define ARIZONA_IM_ASRC2_LOCK_EINT1 0x0100 /* IM_ASRC2_LOCK_EINT1 */
4470#define ARIZONA_IM_ASRC2_LOCK_EINT1_MASK 0x0100 /* IM_ASRC2_LOCK_EINT1 */
4471#define ARIZONA_IM_ASRC2_LOCK_EINT1_SHIFT 8 /* IM_ASRC2_LOCK_EINT1 */
4472#define ARIZONA_IM_ASRC2_LOCK_EINT1_WIDTH 1 /* IM_ASRC2_LOCK_EINT1 */
4473#define ARIZONA_IM_ASRC1_LOCK_EINT1 0x0080 /* IM_ASRC1_LOCK_EINT1 */
4474#define ARIZONA_IM_ASRC1_LOCK_EINT1_MASK 0x0080 /* IM_ASRC1_LOCK_EINT1 */
4475#define ARIZONA_IM_ASRC1_LOCK_EINT1_SHIFT 7 /* IM_ASRC1_LOCK_EINT1 */
4476#define ARIZONA_IM_ASRC1_LOCK_EINT1_WIDTH 1 /* IM_ASRC1_LOCK_EINT1 */
4477#define ARIZONA_IM_UNDERCLOCKED_EINT1 0x0040 /* IM_UNDERCLOCKED_EINT1 */
4478#define ARIZONA_IM_UNDERCLOCKED_EINT1_MASK 0x0040 /* IM_UNDERCLOCKED_EINT1 */
4479#define ARIZONA_IM_UNDERCLOCKED_EINT1_SHIFT 6 /* IM_UNDERCLOCKED_EINT1 */
4480#define ARIZONA_IM_UNDERCLOCKED_EINT1_WIDTH 1 /* IM_UNDERCLOCKED_EINT1 */
4481#define ARIZONA_IM_OVERCLOCKED_EINT1 0x0020 /* IM_OVERCLOCKED_EINT1 */
4482#define ARIZONA_IM_OVERCLOCKED_EINT1_MASK 0x0020 /* IM_OVERCLOCKED_EINT1 */
4483#define ARIZONA_IM_OVERCLOCKED_EINT1_SHIFT 5 /* IM_OVERCLOCKED_EINT1 */
4484#define ARIZONA_IM_OVERCLOCKED_EINT1_WIDTH 1 /* IM_OVERCLOCKED_EINT1 */
4485#define ARIZONA_IM_FLL2_LOCK_EINT1 0x0008 /* IM_FLL2_LOCK_EINT1 */
4486#define ARIZONA_IM_FLL2_LOCK_EINT1_MASK 0x0008 /* IM_FLL2_LOCK_EINT1 */
4487#define ARIZONA_IM_FLL2_LOCK_EINT1_SHIFT 3 /* IM_FLL2_LOCK_EINT1 */
4488#define ARIZONA_IM_FLL2_LOCK_EINT1_WIDTH 1 /* IM_FLL2_LOCK_EINT1 */
4489#define ARIZONA_IM_FLL1_LOCK_EINT1 0x0004 /* IM_FLL1_LOCK_EINT1 */
4490#define ARIZONA_IM_FLL1_LOCK_EINT1_MASK 0x0004 /* IM_FLL1_LOCK_EINT1 */
4491#define ARIZONA_IM_FLL1_LOCK_EINT1_SHIFT 2 /* IM_FLL1_LOCK_EINT1 */
4492#define ARIZONA_IM_FLL1_LOCK_EINT1_WIDTH 1 /* IM_FLL1_LOCK_EINT1 */
4493#define ARIZONA_IM_CLKGEN_ERR_EINT1 0x0002 /* IM_CLKGEN_ERR_EINT1 */
4494#define ARIZONA_IM_CLKGEN_ERR_EINT1_MASK 0x0002 /* IM_CLKGEN_ERR_EINT1 */
4495#define ARIZONA_IM_CLKGEN_ERR_EINT1_SHIFT 1 /* IM_CLKGEN_ERR_EINT1 */
4496#define ARIZONA_IM_CLKGEN_ERR_EINT1_WIDTH 1 /* IM_CLKGEN_ERR_EINT1 */
4497#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT1 */
4498#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1_MASK 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT1 */
4499#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1_SHIFT 0 /* IM_CLKGEN_ERR_ASYNC_EINT1 */
4500#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1_WIDTH 1 /* IM_CLKGEN_ERR_ASYNC_EINT1 */
4501
4502/*
4503 * R3339 (0xD0B) - Interrupt Status 4 Mask
4504 */
4505#define ARIZONA_IM_ASRC_CFG_ERR_EINT1 0x8000 /* IM_ASRC_CFG_ERR_EINT1 */
4506#define ARIZONA_IM_ASRC_CFG_ERR_EINT1_MASK 0x8000 /* IM_ASRC_CFG_ERR_EINT1 */
4507#define ARIZONA_IM_ASRC_CFG_ERR_EINT1_SHIFT 15 /* IM_ASRC_CFG_ERR_EINT1 */
4508#define ARIZONA_IM_ASRC_CFG_ERR_EINT1_WIDTH 1 /* IM_ASRC_CFG_ERR_EINT1 */
4509#define ARIZONA_IM_AIF3_ERR_EINT1 0x4000 /* IM_AIF3_ERR_EINT1 */
4510#define ARIZONA_IM_AIF3_ERR_EINT1_MASK 0x4000 /* IM_AIF3_ERR_EINT1 */
4511#define ARIZONA_IM_AIF3_ERR_EINT1_SHIFT 14 /* IM_AIF3_ERR_EINT1 */
4512#define ARIZONA_IM_AIF3_ERR_EINT1_WIDTH 1 /* IM_AIF3_ERR_EINT1 */
4513#define ARIZONA_IM_AIF2_ERR_EINT1 0x2000 /* IM_AIF2_ERR_EINT1 */
4514#define ARIZONA_IM_AIF2_ERR_EINT1_MASK 0x2000 /* IM_AIF2_ERR_EINT1 */
4515#define ARIZONA_IM_AIF2_ERR_EINT1_SHIFT 13 /* IM_AIF2_ERR_EINT1 */
4516#define ARIZONA_IM_AIF2_ERR_EINT1_WIDTH 1 /* IM_AIF2_ERR_EINT1 */
4517#define ARIZONA_IM_AIF1_ERR_EINT1 0x1000 /* IM_AIF1_ERR_EINT1 */
4518#define ARIZONA_IM_AIF1_ERR_EINT1_MASK 0x1000 /* IM_AIF1_ERR_EINT1 */
4519#define ARIZONA_IM_AIF1_ERR_EINT1_SHIFT 12 /* IM_AIF1_ERR_EINT1 */
4520#define ARIZONA_IM_AIF1_ERR_EINT1_WIDTH 1 /* IM_AIF1_ERR_EINT1 */
4521#define ARIZONA_IM_CTRLIF_ERR_EINT1 0x0800 /* IM_CTRLIF_ERR_EINT1 */
4522#define ARIZONA_IM_CTRLIF_ERR_EINT1_MASK 0x0800 /* IM_CTRLIF_ERR_EINT1 */
4523#define ARIZONA_IM_CTRLIF_ERR_EINT1_SHIFT 11 /* IM_CTRLIF_ERR_EINT1 */
4524#define ARIZONA_IM_CTRLIF_ERR_EINT1_WIDTH 1 /* IM_CTRLIF_ERR_EINT1 */
4525#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
4526#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1_MASK 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
4527#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1_SHIFT 10 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
4528#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1_WIDTH 1 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
4529#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
4530#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1_MASK 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
4531#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1_SHIFT 9 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
4532#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1_WIDTH 1 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
4533#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1 0x0100 /* IM_SYSCLK_ENA_LOW_EINT1 */
4534#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1_MASK 0x0100 /* IM_SYSCLK_ENA_LOW_EINT1 */
4535#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1_SHIFT 8 /* IM_SYSCLK_ENA_LOW_EINT1 */
4536#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1_WIDTH 1 /* IM_SYSCLK_ENA_LOW_EINT1 */
4537#define ARIZONA_IM_ISRC1_CFG_ERR_EINT1 0x0080 /* IM_ISRC1_CFG_ERR_EINT1 */
4538#define ARIZONA_IM_ISRC1_CFG_ERR_EINT1_MASK 0x0080 /* IM_ISRC1_CFG_ERR_EINT1 */
4539#define ARIZONA_IM_ISRC1_CFG_ERR_EINT1_SHIFT 7 /* IM_ISRC1_CFG_ERR_EINT1 */
4540#define ARIZONA_IM_ISRC1_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC1_CFG_ERR_EINT1 */
4541#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1 0x0040 /* IM_ISRC2_CFG_ERR_EINT1 */
4542#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_MASK 0x0040 /* IM_ISRC2_CFG_ERR_EINT1 */
4543#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_SHIFT 6 /* IM_ISRC2_CFG_ERR_EINT1 */
4544#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT1 */
4545
4546/*
4547 * R3340 (0xD0C) - Interrupt Status 5 Mask
4548 */
4549#define ARIZONA_IM_BOOT_DONE_EINT1 0x0100 /* IM_BOOT_DONE_EINT1 */
4550#define ARIZONA_IM_BOOT_DONE_EINT1_MASK 0x0100 /* IM_BOOT_DONE_EINT1 */
4551#define ARIZONA_IM_BOOT_DONE_EINT1_SHIFT 8 /* IM_BOOT_DONE_EINT1 */
4552#define ARIZONA_IM_BOOT_DONE_EINT1_WIDTH 1 /* IM_BOOT_DONE_EINT1 */
4553#define ARIZONA_IM_DCS_DAC_DONE_EINT1 0x0080 /* IM_DCS_DAC_DONE_EINT1 */
4554#define ARIZONA_IM_DCS_DAC_DONE_EINT1_MASK 0x0080 /* IM_DCS_DAC_DONE_EINT1 */
4555#define ARIZONA_IM_DCS_DAC_DONE_EINT1_SHIFT 7 /* IM_DCS_DAC_DONE_EINT1 */
4556#define ARIZONA_IM_DCS_DAC_DONE_EINT1_WIDTH 1 /* IM_DCS_DAC_DONE_EINT1 */
4557#define ARIZONA_IM_DCS_HP_DONE_EINT1 0x0040 /* IM_DCS_HP_DONE_EINT1 */
4558#define ARIZONA_IM_DCS_HP_DONE_EINT1_MASK 0x0040 /* IM_DCS_HP_DONE_EINT1 */
4559#define ARIZONA_IM_DCS_HP_DONE_EINT1_SHIFT 6 /* IM_DCS_HP_DONE_EINT1 */
4560#define ARIZONA_IM_DCS_HP_DONE_EINT1_WIDTH 1 /* IM_DCS_HP_DONE_EINT1 */
4561#define ARIZONA_IM_FLL2_CLOCK_OK_EINT1 0x0002 /* IM_FLL2_CLOCK_OK_EINT1 */
4562#define ARIZONA_IM_FLL2_CLOCK_OK_EINT1_MASK 0x0002 /* IM_FLL2_CLOCK_OK_EINT1 */
4563#define ARIZONA_IM_FLL2_CLOCK_OK_EINT1_SHIFT 1 /* IM_FLL2_CLOCK_OK_EINT1 */
4564#define ARIZONA_IM_FLL2_CLOCK_OK_EINT1_WIDTH 1 /* IM_FLL2_CLOCK_OK_EINT1 */
4565#define ARIZONA_IM_FLL1_CLOCK_OK_EINT1 0x0001 /* IM_FLL1_CLOCK_OK_EINT1 */
4566#define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_MASK 0x0001 /* IM_FLL1_CLOCK_OK_EINT1 */
4567#define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_SHIFT 0 /* IM_FLL1_CLOCK_OK_EINT1 */
4568#define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_WIDTH 1 /* IM_FLL1_CLOCK_OK_EINT1 */
4569
4570/*
4571 * R3343 (0xD0F) - Interrupt Control
4572 */
4573#define ARIZONA_IM_IRQ1 0x0001 /* IM_IRQ1 */
4574#define ARIZONA_IM_IRQ1_MASK 0x0001 /* IM_IRQ1 */
4575#define ARIZONA_IM_IRQ1_SHIFT 0 /* IM_IRQ1 */
4576#define ARIZONA_IM_IRQ1_WIDTH 1 /* IM_IRQ1 */
4577
4578/*
4579 * R3344 (0xD10) - IRQ2 Status 1
4580 */
4581#define ARIZONA_GP4_EINT2 0x0008 /* GP4_EINT2 */
4582#define ARIZONA_GP4_EINT2_MASK 0x0008 /* GP4_EINT2 */
4583#define ARIZONA_GP4_EINT2_SHIFT 3 /* GP4_EINT2 */
4584#define ARIZONA_GP4_EINT2_WIDTH 1 /* GP4_EINT2 */
4585#define ARIZONA_GP3_EINT2 0x0004 /* GP3_EINT2 */
4586#define ARIZONA_GP3_EINT2_MASK 0x0004 /* GP3_EINT2 */
4587#define ARIZONA_GP3_EINT2_SHIFT 2 /* GP3_EINT2 */
4588#define ARIZONA_GP3_EINT2_WIDTH 1 /* GP3_EINT2 */
4589#define ARIZONA_GP2_EINT2 0x0002 /* GP2_EINT2 */
4590#define ARIZONA_GP2_EINT2_MASK 0x0002 /* GP2_EINT2 */
4591#define ARIZONA_GP2_EINT2_SHIFT 1 /* GP2_EINT2 */
4592#define ARIZONA_GP2_EINT2_WIDTH 1 /* GP2_EINT2 */
4593#define ARIZONA_GP1_EINT2 0x0001 /* GP1_EINT2 */
4594#define ARIZONA_GP1_EINT2_MASK 0x0001 /* GP1_EINT2 */
4595#define ARIZONA_GP1_EINT2_SHIFT 0 /* GP1_EINT2 */
4596#define ARIZONA_GP1_EINT2_WIDTH 1 /* GP1_EINT2 */
4597
4598/*
4599 * R3345 (0xD11) - IRQ2 Status 2
4600 */
4601#define ARIZONA_DSP1_RAM_RDY_EINT2 0x0100 /* DSP1_RAM_RDY_EINT2 */
4602#define ARIZONA_DSP1_RAM_RDY_EINT2_MASK 0x0100 /* DSP1_RAM_RDY_EINT2 */
4603#define ARIZONA_DSP1_RAM_RDY_EINT2_SHIFT 8 /* DSP1_RAM_RDY_EINT2 */
4604#define ARIZONA_DSP1_RAM_RDY_EINT2_WIDTH 1 /* DSP1_RAM_RDY_EINT2 */
4605#define ARIZONA_DSP_IRQ2_EINT2 0x0002 /* DSP_IRQ2_EINT2 */
4606#define ARIZONA_DSP_IRQ2_EINT2_MASK 0x0002 /* DSP_IRQ2_EINT2 */
4607#define ARIZONA_DSP_IRQ2_EINT2_SHIFT 1 /* DSP_IRQ2_EINT2 */
4608#define ARIZONA_DSP_IRQ2_EINT2_WIDTH 1 /* DSP_IRQ2_EINT2 */
4609#define ARIZONA_DSP_IRQ1_EINT2 0x0001 /* DSP_IRQ1_EINT2 */
4610#define ARIZONA_DSP_IRQ1_EINT2_MASK 0x0001 /* DSP_IRQ1_EINT2 */
4611#define ARIZONA_DSP_IRQ1_EINT2_SHIFT 0 /* DSP_IRQ1_EINT2 */
4612#define ARIZONA_DSP_IRQ1_EINT2_WIDTH 1 /* DSP_IRQ1_EINT2 */
4613
4614/*
4615 * R3346 (0xD12) - IRQ2 Status 3
4616 */
4617#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2 0x8000 /* SPK_SHUTDOWN_WARN_EINT2 */
4618#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_MASK 0x8000 /* SPK_SHUTDOWN_WARN_EINT2 */
4619#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_SHIFT 15 /* SPK_SHUTDOWN_WARN_EINT2 */
4620#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_WARN_EINT2 */
4621#define ARIZONA_SPK_SHUTDOWN_EINT2 0x4000 /* SPK_SHUTDOWN_EINT2 */
4622#define ARIZONA_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* SPK_SHUTDOWN_EINT2 */
4623#define ARIZONA_SPK_SHUTDOWN_EINT2_SHIFT 14 /* SPK_SHUTDOWN_EINT2 */
4624#define ARIZONA_SPK_SHUTDOWN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_EINT2 */
4625#define ARIZONA_HPDET_EINT2 0x2000 /* HPDET_EINT2 */
4626#define ARIZONA_HPDET_EINT2_MASK 0x2000 /* HPDET_EINT2 */
4627#define ARIZONA_HPDET_EINT2_SHIFT 13 /* HPDET_EINT2 */
4628#define ARIZONA_HPDET_EINT2_WIDTH 1 /* HPDET_EINT2 */
4629#define ARIZONA_MICDET_EINT2 0x1000 /* MICDET_EINT2 */
4630#define ARIZONA_MICDET_EINT2_MASK 0x1000 /* MICDET_EINT2 */
4631#define ARIZONA_MICDET_EINT2_SHIFT 12 /* MICDET_EINT2 */
4632#define ARIZONA_MICDET_EINT2_WIDTH 1 /* MICDET_EINT2 */
4633#define ARIZONA_WSEQ_DONE_EINT2 0x0800 /* WSEQ_DONE_EINT2 */
4634#define ARIZONA_WSEQ_DONE_EINT2_MASK 0x0800 /* WSEQ_DONE_EINT2 */
4635#define ARIZONA_WSEQ_DONE_EINT2_SHIFT 11 /* WSEQ_DONE_EINT2 */
4636#define ARIZONA_WSEQ_DONE_EINT2_WIDTH 1 /* WSEQ_DONE_EINT2 */
4637#define ARIZONA_DRC2_SIG_DET_EINT2 0x0400 /* DRC2_SIG_DET_EINT2 */
4638#define ARIZONA_DRC2_SIG_DET_EINT2_MASK 0x0400 /* DRC2_SIG_DET_EINT2 */
4639#define ARIZONA_DRC2_SIG_DET_EINT2_SHIFT 10 /* DRC2_SIG_DET_EINT2 */
4640#define ARIZONA_DRC2_SIG_DET_EINT2_WIDTH 1 /* DRC2_SIG_DET_EINT2 */
4641#define ARIZONA_DRC1_SIG_DET_EINT2 0x0200 /* DRC1_SIG_DET_EINT2 */
4642#define ARIZONA_DRC1_SIG_DET_EINT2_MASK 0x0200 /* DRC1_SIG_DET_EINT2 */
4643#define ARIZONA_DRC1_SIG_DET_EINT2_SHIFT 9 /* DRC1_SIG_DET_EINT2 */
4644#define ARIZONA_DRC1_SIG_DET_EINT2_WIDTH 1 /* DRC1_SIG_DET_EINT2 */
4645#define ARIZONA_ASRC2_LOCK_EINT2 0x0100 /* ASRC2_LOCK_EINT2 */
4646#define ARIZONA_ASRC2_LOCK_EINT2_MASK 0x0100 /* ASRC2_LOCK_EINT2 */
4647#define ARIZONA_ASRC2_LOCK_EINT2_SHIFT 8 /* ASRC2_LOCK_EINT2 */
4648#define ARIZONA_ASRC2_LOCK_EINT2_WIDTH 1 /* ASRC2_LOCK_EINT2 */
4649#define ARIZONA_ASRC1_LOCK_EINT2 0x0080 /* ASRC1_LOCK_EINT2 */
4650#define ARIZONA_ASRC1_LOCK_EINT2_MASK 0x0080 /* ASRC1_LOCK_EINT2 */
4651#define ARIZONA_ASRC1_LOCK_EINT2_SHIFT 7 /* ASRC1_LOCK_EINT2 */
4652#define ARIZONA_ASRC1_LOCK_EINT2_WIDTH 1 /* ASRC1_LOCK_EINT2 */
4653#define ARIZONA_UNDERCLOCKED_EINT2 0x0040 /* UNDERCLOCKED_EINT2 */
4654#define ARIZONA_UNDERCLOCKED_EINT2_MASK 0x0040 /* UNDERCLOCKED_EINT2 */
4655#define ARIZONA_UNDERCLOCKED_EINT2_SHIFT 6 /* UNDERCLOCKED_EINT2 */
4656#define ARIZONA_UNDERCLOCKED_EINT2_WIDTH 1 /* UNDERCLOCKED_EINT2 */
4657#define ARIZONA_OVERCLOCKED_EINT2 0x0020 /* OVERCLOCKED_EINT2 */
4658#define ARIZONA_OVERCLOCKED_EINT2_MASK 0x0020 /* OVERCLOCKED_EINT2 */
4659#define ARIZONA_OVERCLOCKED_EINT2_SHIFT 5 /* OVERCLOCKED_EINT2 */
4660#define ARIZONA_OVERCLOCKED_EINT2_WIDTH 1 /* OVERCLOCKED_EINT2 */
4661#define ARIZONA_FLL2_LOCK_EINT2 0x0008 /* FLL2_LOCK_EINT2 */
4662#define ARIZONA_FLL2_LOCK_EINT2_MASK 0x0008 /* FLL2_LOCK_EINT2 */
4663#define ARIZONA_FLL2_LOCK_EINT2_SHIFT 3 /* FLL2_LOCK_EINT2 */
4664#define ARIZONA_FLL2_LOCK_EINT2_WIDTH 1 /* FLL2_LOCK_EINT2 */
4665#define ARIZONA_FLL1_LOCK_EINT2 0x0004 /* FLL1_LOCK_EINT2 */
4666#define ARIZONA_FLL1_LOCK_EINT2_MASK 0x0004 /* FLL1_LOCK_EINT2 */
4667#define ARIZONA_FLL1_LOCK_EINT2_SHIFT 2 /* FLL1_LOCK_EINT2 */
4668#define ARIZONA_FLL1_LOCK_EINT2_WIDTH 1 /* FLL1_LOCK_EINT2 */
4669#define ARIZONA_CLKGEN_ERR_EINT2 0x0002 /* CLKGEN_ERR_EINT2 */
4670#define ARIZONA_CLKGEN_ERR_EINT2_MASK 0x0002 /* CLKGEN_ERR_EINT2 */
4671#define ARIZONA_CLKGEN_ERR_EINT2_SHIFT 1 /* CLKGEN_ERR_EINT2 */
4672#define ARIZONA_CLKGEN_ERR_EINT2_WIDTH 1 /* CLKGEN_ERR_EINT2 */
4673#define ARIZONA_CLKGEN_ERR_ASYNC_EINT2 0x0001 /* CLKGEN_ERR_ASYNC_EINT2 */
4674#define ARIZONA_CLKGEN_ERR_ASYNC_EINT2_MASK 0x0001 /* CLKGEN_ERR_ASYNC_EINT2 */
4675#define ARIZONA_CLKGEN_ERR_ASYNC_EINT2_SHIFT 0 /* CLKGEN_ERR_ASYNC_EINT2 */
4676#define ARIZONA_CLKGEN_ERR_ASYNC_EINT2_WIDTH 1 /* CLKGEN_ERR_ASYNC_EINT2 */
4677
4678/*
4679 * R3347 (0xD13) - IRQ2 Status 4
4680 */
4681#define ARIZONA_ASRC_CFG_ERR_EINT2 0x8000 /* ASRC_CFG_ERR_EINT2 */
4682#define ARIZONA_ASRC_CFG_ERR_EINT2_MASK 0x8000 /* ASRC_CFG_ERR_EINT2 */
4683#define ARIZONA_ASRC_CFG_ERR_EINT2_SHIFT 15 /* ASRC_CFG_ERR_EINT2 */
4684#define ARIZONA_ASRC_CFG_ERR_EINT2_WIDTH 1 /* ASRC_CFG_ERR_EINT2 */
4685#define ARIZONA_AIF3_ERR_EINT2 0x4000 /* AIF3_ERR_EINT2 */
4686#define ARIZONA_AIF3_ERR_EINT2_MASK 0x4000 /* AIF3_ERR_EINT2 */
4687#define ARIZONA_AIF3_ERR_EINT2_SHIFT 14 /* AIF3_ERR_EINT2 */
4688#define ARIZONA_AIF3_ERR_EINT2_WIDTH 1 /* AIF3_ERR_EINT2 */
4689#define ARIZONA_AIF2_ERR_EINT2 0x2000 /* AIF2_ERR_EINT2 */
4690#define ARIZONA_AIF2_ERR_EINT2_MASK 0x2000 /* AIF2_ERR_EINT2 */
4691#define ARIZONA_AIF2_ERR_EINT2_SHIFT 13 /* AIF2_ERR_EINT2 */
4692#define ARIZONA_AIF2_ERR_EINT2_WIDTH 1 /* AIF2_ERR_EINT2 */
4693#define ARIZONA_AIF1_ERR_EINT2 0x1000 /* AIF1_ERR_EINT2 */
4694#define ARIZONA_AIF1_ERR_EINT2_MASK 0x1000 /* AIF1_ERR_EINT2 */
4695#define ARIZONA_AIF1_ERR_EINT2_SHIFT 12 /* AIF1_ERR_EINT2 */
4696#define ARIZONA_AIF1_ERR_EINT2_WIDTH 1 /* AIF1_ERR_EINT2 */
4697#define ARIZONA_CTRLIF_ERR_EINT2 0x0800 /* CTRLIF_ERR_EINT2 */
4698#define ARIZONA_CTRLIF_ERR_EINT2_MASK 0x0800 /* CTRLIF_ERR_EINT2 */
4699#define ARIZONA_CTRLIF_ERR_EINT2_SHIFT 11 /* CTRLIF_ERR_EINT2 */
4700#define ARIZONA_CTRLIF_ERR_EINT2_WIDTH 1 /* CTRLIF_ERR_EINT2 */
4701#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2 0x0400 /* MIXER_DROPPED_SAMPLE_EINT2 */
4702#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2_MASK 0x0400 /* MIXER_DROPPED_SAMPLE_EINT2 */
4703#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2_SHIFT 10 /* MIXER_DROPPED_SAMPLE_EINT2 */
4704#define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2_WIDTH 1 /* MIXER_DROPPED_SAMPLE_EINT2 */
4705#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2 0x0200 /* ASYNC_CLK_ENA_LOW_EINT2 */
4706#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2_MASK 0x0200 /* ASYNC_CLK_ENA_LOW_EINT2 */
4707#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2_SHIFT 9 /* ASYNC_CLK_ENA_LOW_EINT2 */
4708#define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2_WIDTH 1 /* ASYNC_CLK_ENA_LOW_EINT2 */
4709#define ARIZONA_SYSCLK_ENA_LOW_EINT2 0x0100 /* SYSCLK_ENA_LOW_EINT2 */
4710#define ARIZONA_SYSCLK_ENA_LOW_EINT2_MASK 0x0100 /* SYSCLK_ENA_LOW_EINT2 */
4711#define ARIZONA_SYSCLK_ENA_LOW_EINT2_SHIFT 8 /* SYSCLK_ENA_LOW_EINT2 */
4712#define ARIZONA_SYSCLK_ENA_LOW_EINT2_WIDTH 1 /* SYSCLK_ENA_LOW_EINT2 */
4713#define ARIZONA_ISRC1_CFG_ERR_EINT2 0x0080 /* ISRC1_CFG_ERR_EINT2 */
4714#define ARIZONA_ISRC1_CFG_ERR_EINT2_MASK 0x0080 /* ISRC1_CFG_ERR_EINT2 */
4715#define ARIZONA_ISRC1_CFG_ERR_EINT2_SHIFT 7 /* ISRC1_CFG_ERR_EINT2 */
4716#define ARIZONA_ISRC1_CFG_ERR_EINT2_WIDTH 1 /* ISRC1_CFG_ERR_EINT2 */
4717#define ARIZONA_ISRC2_CFG_ERR_EINT2 0x0040 /* ISRC2_CFG_ERR_EINT2 */
4718#define ARIZONA_ISRC2_CFG_ERR_EINT2_MASK 0x0040 /* ISRC2_CFG_ERR_EINT2 */
4719#define ARIZONA_ISRC2_CFG_ERR_EINT2_SHIFT 6 /* ISRC2_CFG_ERR_EINT2 */
4720#define ARIZONA_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* ISRC2_CFG_ERR_EINT2 */
4721
4722/*
4723 * R3348 (0xD14) - IRQ2 Status 5
4724 */
4725#define ARIZONA_BOOT_DONE_EINT2 0x0100 /* BOOT_DONE_EINT2 */
4726#define ARIZONA_BOOT_DONE_EINT2_MASK 0x0100 /* BOOT_DONE_EINT2 */
4727#define ARIZONA_BOOT_DONE_EINT2_SHIFT 8 /* BOOT_DONE_EINT2 */
4728#define ARIZONA_BOOT_DONE_EINT2_WIDTH 1 /* BOOT_DONE_EINT2 */
4729#define ARIZONA_DCS_DAC_DONE_EINT2 0x0080 /* DCS_DAC_DONE_EINT2 */
4730#define ARIZONA_DCS_DAC_DONE_EINT2_MASK 0x0080 /* DCS_DAC_DONE_EINT2 */
4731#define ARIZONA_DCS_DAC_DONE_EINT2_SHIFT 7 /* DCS_DAC_DONE_EINT2 */
4732#define ARIZONA_DCS_DAC_DONE_EINT2_WIDTH 1 /* DCS_DAC_DONE_EINT2 */
4733#define ARIZONA_DCS_HP_DONE_EINT2 0x0040 /* DCS_HP_DONE_EINT2 */
4734#define ARIZONA_DCS_HP_DONE_EINT2_MASK 0x0040 /* DCS_HP_DONE_EINT2 */
4735#define ARIZONA_DCS_HP_DONE_EINT2_SHIFT 6 /* DCS_HP_DONE_EINT2 */
4736#define ARIZONA_DCS_HP_DONE_EINT2_WIDTH 1 /* DCS_HP_DONE_EINT2 */
4737#define ARIZONA_FLL2_CLOCK_OK_EINT2 0x0002 /* FLL2_CLOCK_OK_EINT2 */
4738#define ARIZONA_FLL2_CLOCK_OK_EINT2_MASK 0x0002 /* FLL2_CLOCK_OK_EINT2 */
4739#define ARIZONA_FLL2_CLOCK_OK_EINT2_SHIFT 1 /* FLL2_CLOCK_OK_EINT2 */
4740#define ARIZONA_FLL2_CLOCK_OK_EINT2_WIDTH 1 /* FLL2_CLOCK_OK_EINT2 */
4741#define ARIZONA_FLL1_CLOCK_OK_EINT2 0x0001 /* FLL1_CLOCK_OK_EINT2 */
4742#define ARIZONA_FLL1_CLOCK_OK_EINT2_MASK 0x0001 /* FLL1_CLOCK_OK_EINT2 */
4743#define ARIZONA_FLL1_CLOCK_OK_EINT2_SHIFT 0 /* FLL1_CLOCK_OK_EINT2 */
4744#define ARIZONA_FLL1_CLOCK_OK_EINT2_WIDTH 1 /* FLL1_CLOCK_OK_EINT2 */
4745
4746/*
4747 * R3352 (0xD18) - IRQ2 Status 1 Mask
4748 */
4749#define ARIZONA_IM_GP4_EINT2 0x0008 /* IM_GP4_EINT2 */
4750#define ARIZONA_IM_GP4_EINT2_MASK 0x0008 /* IM_GP4_EINT2 */
4751#define ARIZONA_IM_GP4_EINT2_SHIFT 3 /* IM_GP4_EINT2 */
4752#define ARIZONA_IM_GP4_EINT2_WIDTH 1 /* IM_GP4_EINT2 */
4753#define ARIZONA_IM_GP3_EINT2 0x0004 /* IM_GP3_EINT2 */
4754#define ARIZONA_IM_GP3_EINT2_MASK 0x0004 /* IM_GP3_EINT2 */
4755#define ARIZONA_IM_GP3_EINT2_SHIFT 2 /* IM_GP3_EINT2 */
4756#define ARIZONA_IM_GP3_EINT2_WIDTH 1 /* IM_GP3_EINT2 */
4757#define ARIZONA_IM_GP2_EINT2 0x0002 /* IM_GP2_EINT2 */
4758#define ARIZONA_IM_GP2_EINT2_MASK 0x0002 /* IM_GP2_EINT2 */
4759#define ARIZONA_IM_GP2_EINT2_SHIFT 1 /* IM_GP2_EINT2 */
4760#define ARIZONA_IM_GP2_EINT2_WIDTH 1 /* IM_GP2_EINT2 */
4761#define ARIZONA_IM_GP1_EINT2 0x0001 /* IM_GP1_EINT2 */
4762#define ARIZONA_IM_GP1_EINT2_MASK 0x0001 /* IM_GP1_EINT2 */
4763#define ARIZONA_IM_GP1_EINT2_SHIFT 0 /* IM_GP1_EINT2 */
4764#define ARIZONA_IM_GP1_EINT2_WIDTH 1 /* IM_GP1_EINT2 */
4765
4766/*
4767 * R3353 (0xD19) - IRQ2 Status 2 Mask
4768 */
4769#define ARIZONA_IM_DSP1_RAM_RDY_EINT2 0x0100 /* IM_DSP1_RAM_RDY_EINT2 */
4770#define ARIZONA_IM_DSP1_RAM_RDY_EINT2_MASK 0x0100 /* IM_DSP1_RAM_RDY_EINT2 */
4771#define ARIZONA_IM_DSP1_RAM_RDY_EINT2_SHIFT 8 /* IM_DSP1_RAM_RDY_EINT2 */
4772#define ARIZONA_IM_DSP1_RAM_RDY_EINT2_WIDTH 1 /* IM_DSP1_RAM_RDY_EINT2 */
4773#define ARIZONA_IM_DSP_IRQ2_EINT2 0x0002 /* IM_DSP_IRQ2_EINT2 */
4774#define ARIZONA_IM_DSP_IRQ2_EINT2_MASK 0x0002 /* IM_DSP_IRQ2_EINT2 */
4775#define ARIZONA_IM_DSP_IRQ2_EINT2_SHIFT 1 /* IM_DSP_IRQ2_EINT2 */
4776#define ARIZONA_IM_DSP_IRQ2_EINT2_WIDTH 1 /* IM_DSP_IRQ2_EINT2 */
4777#define ARIZONA_IM_DSP_IRQ1_EINT2 0x0001 /* IM_DSP_IRQ1_EINT2 */
4778#define ARIZONA_IM_DSP_IRQ1_EINT2_MASK 0x0001 /* IM_DSP_IRQ1_EINT2 */
4779#define ARIZONA_IM_DSP_IRQ1_EINT2_SHIFT 0 /* IM_DSP_IRQ1_EINT2 */
4780#define ARIZONA_IM_DSP_IRQ1_EINT2_WIDTH 1 /* IM_DSP_IRQ1_EINT2 */
4781
4782/*
4783 * R3354 (0xD1A) - IRQ2 Status 3 Mask
4784 */
4785#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
4786#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_MASK 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
4787#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_SHIFT 15 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
4788#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
4789#define ARIZONA_IM_SPK_SHUTDOWN_EINT2 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */
4790#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */
4791#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT2 */
4792#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT2 */
4793#define ARIZONA_IM_HPDET_EINT2 0x2000 /* IM_HPDET_EINT2 */
4794#define ARIZONA_IM_HPDET_EINT2_MASK 0x2000 /* IM_HPDET_EINT2 */
4795#define ARIZONA_IM_HPDET_EINT2_SHIFT 13 /* IM_HPDET_EINT2 */
4796#define ARIZONA_IM_HPDET_EINT2_WIDTH 1 /* IM_HPDET_EINT2 */
4797#define ARIZONA_IM_MICDET_EINT2 0x1000 /* IM_MICDET_EINT2 */
4798#define ARIZONA_IM_MICDET_EINT2_MASK 0x1000 /* IM_MICDET_EINT2 */
4799#define ARIZONA_IM_MICDET_EINT2_SHIFT 12 /* IM_MICDET_EINT2 */
4800#define ARIZONA_IM_MICDET_EINT2_WIDTH 1 /* IM_MICDET_EINT2 */
4801#define ARIZONA_IM_WSEQ_DONE_EINT2 0x0800 /* IM_WSEQ_DONE_EINT2 */
4802#define ARIZONA_IM_WSEQ_DONE_EINT2_MASK 0x0800 /* IM_WSEQ_DONE_EINT2 */
4803#define ARIZONA_IM_WSEQ_DONE_EINT2_SHIFT 11 /* IM_WSEQ_DONE_EINT2 */
4804#define ARIZONA_IM_WSEQ_DONE_EINT2_WIDTH 1 /* IM_WSEQ_DONE_EINT2 */
4805#define ARIZONA_IM_DRC2_SIG_DET_EINT2 0x0400 /* IM_DRC2_SIG_DET_EINT2 */
4806#define ARIZONA_IM_DRC2_SIG_DET_EINT2_MASK 0x0400 /* IM_DRC2_SIG_DET_EINT2 */
4807#define ARIZONA_IM_DRC2_SIG_DET_EINT2_SHIFT 10 /* IM_DRC2_SIG_DET_EINT2 */
4808#define ARIZONA_IM_DRC2_SIG_DET_EINT2_WIDTH 1 /* IM_DRC2_SIG_DET_EINT2 */
4809#define ARIZONA_IM_DRC1_SIG_DET_EINT2 0x0200 /* IM_DRC1_SIG_DET_EINT2 */
4810#define ARIZONA_IM_DRC1_SIG_DET_EINT2_MASK 0x0200 /* IM_DRC1_SIG_DET_EINT2 */
4811#define ARIZONA_IM_DRC1_SIG_DET_EINT2_SHIFT 9 /* IM_DRC1_SIG_DET_EINT2 */
4812#define ARIZONA_IM_DRC1_SIG_DET_EINT2_WIDTH 1 /* IM_DRC1_SIG_DET_EINT2 */
4813#define ARIZONA_IM_ASRC2_LOCK_EINT2 0x0100 /* IM_ASRC2_LOCK_EINT2 */
4814#define ARIZONA_IM_ASRC2_LOCK_EINT2_MASK 0x0100 /* IM_ASRC2_LOCK_EINT2 */
4815#define ARIZONA_IM_ASRC2_LOCK_EINT2_SHIFT 8 /* IM_ASRC2_LOCK_EINT2 */
4816#define ARIZONA_IM_ASRC2_LOCK_EINT2_WIDTH 1 /* IM_ASRC2_LOCK_EINT2 */
4817#define ARIZONA_IM_ASRC1_LOCK_EINT2 0x0080 /* IM_ASRC1_LOCK_EINT2 */
4818#define ARIZONA_IM_ASRC1_LOCK_EINT2_MASK 0x0080 /* IM_ASRC1_LOCK_EINT2 */
4819#define ARIZONA_IM_ASRC1_LOCK_EINT2_SHIFT 7 /* IM_ASRC1_LOCK_EINT2 */
4820#define ARIZONA_IM_ASRC1_LOCK_EINT2_WIDTH 1 /* IM_ASRC1_LOCK_EINT2 */
4821#define ARIZONA_IM_UNDERCLOCKED_EINT2 0x0040 /* IM_UNDERCLOCKED_EINT2 */
4822#define ARIZONA_IM_UNDERCLOCKED_EINT2_MASK 0x0040 /* IM_UNDERCLOCKED_EINT2 */
4823#define ARIZONA_IM_UNDERCLOCKED_EINT2_SHIFT 6 /* IM_UNDERCLOCKED_EINT2 */
4824#define ARIZONA_IM_UNDERCLOCKED_EINT2_WIDTH 1 /* IM_UNDERCLOCKED_EINT2 */
4825#define ARIZONA_IM_OVERCLOCKED_EINT2 0x0020 /* IM_OVERCLOCKED_EINT2 */
4826#define ARIZONA_IM_OVERCLOCKED_EINT2_MASK 0x0020 /* IM_OVERCLOCKED_EINT2 */
4827#define ARIZONA_IM_OVERCLOCKED_EINT2_SHIFT 5 /* IM_OVERCLOCKED_EINT2 */
4828#define ARIZONA_IM_OVERCLOCKED_EINT2_WIDTH 1 /* IM_OVERCLOCKED_EINT2 */
4829#define ARIZONA_IM_FLL2_LOCK_EINT2 0x0008 /* IM_FLL2_LOCK_EINT2 */
4830#define ARIZONA_IM_FLL2_LOCK_EINT2_MASK 0x0008 /* IM_FLL2_LOCK_EINT2 */
4831#define ARIZONA_IM_FLL2_LOCK_EINT2_SHIFT 3 /* IM_FLL2_LOCK_EINT2 */
4832#define ARIZONA_IM_FLL2_LOCK_EINT2_WIDTH 1 /* IM_FLL2_LOCK_EINT2 */
4833#define ARIZONA_IM_FLL1_LOCK_EINT2 0x0004 /* IM_FLL1_LOCK_EINT2 */
4834#define ARIZONA_IM_FLL1_LOCK_EINT2_MASK 0x0004 /* IM_FLL1_LOCK_EINT2 */
4835#define ARIZONA_IM_FLL1_LOCK_EINT2_SHIFT 2 /* IM_FLL1_LOCK_EINT2 */
4836#define ARIZONA_IM_FLL1_LOCK_EINT2_WIDTH 1 /* IM_FLL1_LOCK_EINT2 */
4837#define ARIZONA_IM_CLKGEN_ERR_EINT2 0x0002 /* IM_CLKGEN_ERR_EINT2 */
4838#define ARIZONA_IM_CLKGEN_ERR_EINT2_MASK 0x0002 /* IM_CLKGEN_ERR_EINT2 */
4839#define ARIZONA_IM_CLKGEN_ERR_EINT2_SHIFT 1 /* IM_CLKGEN_ERR_EINT2 */
4840#define ARIZONA_IM_CLKGEN_ERR_EINT2_WIDTH 1 /* IM_CLKGEN_ERR_EINT2 */
4841#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT2 */
4842#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2_MASK 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT2 */
4843#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2_SHIFT 0 /* IM_CLKGEN_ERR_ASYNC_EINT2 */
4844#define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2_WIDTH 1 /* IM_CLKGEN_ERR_ASYNC_EINT2 */
4845
4846/*
4847 * R3355 (0xD1B) - IRQ2 Status 4 Mask
4848 */
4849#define ARIZONA_IM_ASRC_CFG_ERR_EINT2 0x8000 /* IM_ASRC_CFG_ERR_EINT2 */
4850#define ARIZONA_IM_ASRC_CFG_ERR_EINT2_MASK 0x8000 /* IM_ASRC_CFG_ERR_EINT2 */
4851#define ARIZONA_IM_ASRC_CFG_ERR_EINT2_SHIFT 15 /* IM_ASRC_CFG_ERR_EINT2 */
4852#define ARIZONA_IM_ASRC_CFG_ERR_EINT2_WIDTH 1 /* IM_ASRC_CFG_ERR_EINT2 */
4853#define ARIZONA_IM_AIF3_ERR_EINT2 0x4000 /* IM_AIF3_ERR_EINT2 */
4854#define ARIZONA_IM_AIF3_ERR_EINT2_MASK 0x4000 /* IM_AIF3_ERR_EINT2 */
4855#define ARIZONA_IM_AIF3_ERR_EINT2_SHIFT 14 /* IM_AIF3_ERR_EINT2 */
4856#define ARIZONA_IM_AIF3_ERR_EINT2_WIDTH 1 /* IM_AIF3_ERR_EINT2 */
4857#define ARIZONA_IM_AIF2_ERR_EINT2 0x2000 /* IM_AIF2_ERR_EINT2 */
4858#define ARIZONA_IM_AIF2_ERR_EINT2_MASK 0x2000 /* IM_AIF2_ERR_EINT2 */
4859#define ARIZONA_IM_AIF2_ERR_EINT2_SHIFT 13 /* IM_AIF2_ERR_EINT2 */
4860#define ARIZONA_IM_AIF2_ERR_EINT2_WIDTH 1 /* IM_AIF2_ERR_EINT2 */
4861#define ARIZONA_IM_AIF1_ERR_EINT2 0x1000 /* IM_AIF1_ERR_EINT2 */
4862#define ARIZONA_IM_AIF1_ERR_EINT2_MASK 0x1000 /* IM_AIF1_ERR_EINT2 */
4863#define ARIZONA_IM_AIF1_ERR_EINT2_SHIFT 12 /* IM_AIF1_ERR_EINT2 */
4864#define ARIZONA_IM_AIF1_ERR_EINT2_WIDTH 1 /* IM_AIF1_ERR_EINT2 */
4865#define ARIZONA_IM_CTRLIF_ERR_EINT2 0x0800 /* IM_CTRLIF_ERR_EINT2 */
4866#define ARIZONA_IM_CTRLIF_ERR_EINT2_MASK 0x0800 /* IM_CTRLIF_ERR_EINT2 */
4867#define ARIZONA_IM_CTRLIF_ERR_EINT2_SHIFT 11 /* IM_CTRLIF_ERR_EINT2 */
4868#define ARIZONA_IM_CTRLIF_ERR_EINT2_WIDTH 1 /* IM_CTRLIF_ERR_EINT2 */
4869#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
4870#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2_MASK 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
4871#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2_SHIFT 10 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
4872#define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2_WIDTH 1 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
4873#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
4874#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2_MASK 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
4875#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2_SHIFT 9 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
4876#define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2_WIDTH 1 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
4877#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2 0x0100 /* IM_SYSCLK_ENA_LOW_EINT2 */
4878#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2_MASK 0x0100 /* IM_SYSCLK_ENA_LOW_EINT2 */
4879#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2_SHIFT 8 /* IM_SYSCLK_ENA_LOW_EINT2 */
4880#define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2_WIDTH 1 /* IM_SYSCLK_ENA_LOW_EINT2 */
4881#define ARIZONA_IM_ISRC1_CFG_ERR_EINT2 0x0080 /* IM_ISRC1_CFG_ERR_EINT2 */
4882#define ARIZONA_IM_ISRC1_CFG_ERR_EINT2_MASK 0x0080 /* IM_ISRC1_CFG_ERR_EINT2 */
4883#define ARIZONA_IM_ISRC1_CFG_ERR_EINT2_SHIFT 7 /* IM_ISRC1_CFG_ERR_EINT2 */
4884#define ARIZONA_IM_ISRC1_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC1_CFG_ERR_EINT2 */
4885#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2 0x0040 /* IM_ISRC2_CFG_ERR_EINT2 */
4886#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_MASK 0x0040 /* IM_ISRC2_CFG_ERR_EINT2 */
4887#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_SHIFT 6 /* IM_ISRC2_CFG_ERR_EINT2 */
4888#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT2 */
4889
4890/*
4891 * R3356 (0xD1C) - IRQ2 Status 5 Mask
4892 */
4893
4894#define ARIZONA_IM_BOOT_DONE_EINT2 0x0100 /* IM_BOOT_DONE_EINT2 */
4895#define ARIZONA_IM_BOOT_DONE_EINT2_MASK 0x0100 /* IM_BOOT_DONE_EINT2 */
4896#define ARIZONA_IM_BOOT_DONE_EINT2_SHIFT 8 /* IM_BOOT_DONE_EINT2 */
4897#define ARIZONA_IM_BOOT_DONE_EINT2_WIDTH 1 /* IM_BOOT_DONE_EINT2 */
4898#define ARIZONA_IM_DCS_DAC_DONE_EINT2 0x0080 /* IM_DCS_DAC_DONE_EINT2 */
4899#define ARIZONA_IM_DCS_DAC_DONE_EINT2_MASK 0x0080 /* IM_DCS_DAC_DONE_EINT2 */
4900#define ARIZONA_IM_DCS_DAC_DONE_EINT2_SHIFT 7 /* IM_DCS_DAC_DONE_EINT2 */
4901#define ARIZONA_IM_DCS_DAC_DONE_EINT2_WIDTH 1 /* IM_DCS_DAC_DONE_EINT2 */
4902#define ARIZONA_IM_DCS_HP_DONE_EINT2 0x0040 /* IM_DCS_HP_DONE_EINT2 */
4903#define ARIZONA_IM_DCS_HP_DONE_EINT2_MASK 0x0040 /* IM_DCS_HP_DONE_EINT2 */
4904#define ARIZONA_IM_DCS_HP_DONE_EINT2_SHIFT 6 /* IM_DCS_HP_DONE_EINT2 */
4905#define ARIZONA_IM_DCS_HP_DONE_EINT2_WIDTH 1 /* IM_DCS_HP_DONE_EINT2 */
4906#define ARIZONA_IM_FLL2_CLOCK_OK_EINT2 0x0002 /* IM_FLL2_CLOCK_OK_EINT2 */
4907#define ARIZONA_IM_FLL2_CLOCK_OK_EINT2_MASK 0x0002 /* IM_FLL2_CLOCK_OK_EINT2 */
4908#define ARIZONA_IM_FLL2_CLOCK_OK_EINT2_SHIFT 1 /* IM_FLL2_CLOCK_OK_EINT2 */
4909#define ARIZONA_IM_FLL2_CLOCK_OK_EINT2_WIDTH 1 /* IM_FLL2_CLOCK_OK_EINT2 */
4910#define ARIZONA_IM_FLL1_CLOCK_OK_EINT2 0x0001 /* IM_FLL1_CLOCK_OK_EINT2 */
4911#define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_MASK 0x0001 /* IM_FLL1_CLOCK_OK_EINT2 */
4912#define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_SHIFT 0 /* IM_FLL1_CLOCK_OK_EINT2 */
4913#define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_WIDTH 1 /* IM_FLL1_CLOCK_OK_EINT2 */
4914
4915/*
4916 * R3359 (0xD1F) - IRQ2 Control
4917 */
4918#define ARIZONA_IM_IRQ2 0x0001 /* IM_IRQ2 */
4919#define ARIZONA_IM_IRQ2_MASK 0x0001 /* IM_IRQ2 */
4920#define ARIZONA_IM_IRQ2_SHIFT 0 /* IM_IRQ2 */
4921#define ARIZONA_IM_IRQ2_WIDTH 1 /* IM_IRQ2 */
4922
4923/*
4924 * R3360 (0xD20) - Interrupt Raw Status 2
4925 */
4926#define ARIZONA_DSP1_RAM_RDY_STS 0x0100 /* DSP1_RAM_RDY_STS */
4927#define ARIZONA_DSP1_RAM_RDY_STS_MASK 0x0100 /* DSP1_RAM_RDY_STS */
4928#define ARIZONA_DSP1_RAM_RDY_STS_SHIFT 8 /* DSP1_RAM_RDY_STS */
4929#define ARIZONA_DSP1_RAM_RDY_STS_WIDTH 1 /* DSP1_RAM_RDY_STS */
4930#define ARIZONA_DSP_IRQ2_STS 0x0002 /* DSP_IRQ2_STS */
4931#define ARIZONA_DSP_IRQ2_STS_MASK 0x0002 /* DSP_IRQ2_STS */
4932#define ARIZONA_DSP_IRQ2_STS_SHIFT 1 /* DSP_IRQ2_STS */
4933#define ARIZONA_DSP_IRQ2_STS_WIDTH 1 /* DSP_IRQ2_STS */
4934#define ARIZONA_DSP_IRQ1_STS 0x0001 /* DSP_IRQ1_STS */
4935#define ARIZONA_DSP_IRQ1_STS_MASK 0x0001 /* DSP_IRQ1_STS */
4936#define ARIZONA_DSP_IRQ1_STS_SHIFT 0 /* DSP_IRQ1_STS */
4937#define ARIZONA_DSP_IRQ1_STS_WIDTH 1 /* DSP_IRQ1_STS */
4938
4939/*
4940 * R3361 (0xD21) - Interrupt Raw Status 3
4941 */
4942#define ARIZONA_SPK_SHUTDOWN_WARN_STS 0x8000 /* SPK_SHUTDOWN_WARN_STS */
4943#define ARIZONA_SPK_SHUTDOWN_WARN_STS_MASK 0x8000 /* SPK_SHUTDOWN_WARN_STS */
4944#define ARIZONA_SPK_SHUTDOWN_WARN_STS_SHIFT 15 /* SPK_SHUTDOWN_WARN_STS */
4945#define ARIZONA_SPK_SHUTDOWN_WARN_STS_WIDTH 1 /* SPK_SHUTDOWN_WARN_STS */
4946#define ARIZONA_SPK_SHUTDOWN_STS 0x4000 /* SPK_SHUTDOWN_STS */
4947#define ARIZONA_SPK_SHUTDOWN_STS_MASK 0x4000 /* SPK_SHUTDOWN_STS */
4948#define ARIZONA_SPK_SHUTDOWN_STS_SHIFT 14 /* SPK_SHUTDOWN_STS */
4949#define ARIZONA_SPK_SHUTDOWN_STS_WIDTH 1 /* SPK_SHUTDOWN_STS */
4950#define ARIZONA_HPDET_STS 0x2000 /* HPDET_STS */
4951#define ARIZONA_HPDET_STS_MASK 0x2000 /* HPDET_STS */
4952#define ARIZONA_HPDET_STS_SHIFT 13 /* HPDET_STS */
4953#define ARIZONA_HPDET_STS_WIDTH 1 /* HPDET_STS */
4954#define ARIZONA_MICDET_STS 0x1000 /* MICDET_STS */
4955#define ARIZONA_MICDET_STS_MASK 0x1000 /* MICDET_STS */
4956#define ARIZONA_MICDET_STS_SHIFT 12 /* MICDET_STS */
4957#define ARIZONA_MICDET_STS_WIDTH 1 /* MICDET_STS */
4958#define ARIZONA_WSEQ_DONE_STS 0x0800 /* WSEQ_DONE_STS */
4959#define ARIZONA_WSEQ_DONE_STS_MASK 0x0800 /* WSEQ_DONE_STS */
4960#define ARIZONA_WSEQ_DONE_STS_SHIFT 11 /* WSEQ_DONE_STS */
4961#define ARIZONA_WSEQ_DONE_STS_WIDTH 1 /* WSEQ_DONE_STS */
4962#define ARIZONA_DRC2_SIG_DET_STS 0x0400 /* DRC2_SIG_DET_STS */
4963#define ARIZONA_DRC2_SIG_DET_STS_MASK 0x0400 /* DRC2_SIG_DET_STS */
4964#define ARIZONA_DRC2_SIG_DET_STS_SHIFT 10 /* DRC2_SIG_DET_STS */
4965#define ARIZONA_DRC2_SIG_DET_STS_WIDTH 1 /* DRC2_SIG_DET_STS */
4966#define ARIZONA_DRC1_SIG_DET_STS 0x0200 /* DRC1_SIG_DET_STS */
4967#define ARIZONA_DRC1_SIG_DET_STS_MASK 0x0200 /* DRC1_SIG_DET_STS */
4968#define ARIZONA_DRC1_SIG_DET_STS_SHIFT 9 /* DRC1_SIG_DET_STS */
4969#define ARIZONA_DRC1_SIG_DET_STS_WIDTH 1 /* DRC1_SIG_DET_STS */
4970#define ARIZONA_ASRC2_LOCK_STS 0x0100 /* ASRC2_LOCK_STS */
4971#define ARIZONA_ASRC2_LOCK_STS_MASK 0x0100 /* ASRC2_LOCK_STS */
4972#define ARIZONA_ASRC2_LOCK_STS_SHIFT 8 /* ASRC2_LOCK_STS */
4973#define ARIZONA_ASRC2_LOCK_STS_WIDTH 1 /* ASRC2_LOCK_STS */
4974#define ARIZONA_ASRC1_LOCK_STS 0x0080 /* ASRC1_LOCK_STS */
4975#define ARIZONA_ASRC1_LOCK_STS_MASK 0x0080 /* ASRC1_LOCK_STS */
4976#define ARIZONA_ASRC1_LOCK_STS_SHIFT 7 /* ASRC1_LOCK_STS */
4977#define ARIZONA_ASRC1_LOCK_STS_WIDTH 1 /* ASRC1_LOCK_STS */
4978#define ARIZONA_UNDERCLOCKED_STS 0x0040 /* UNDERCLOCKED_STS */
4979#define ARIZONA_UNDERCLOCKED_STS_MASK 0x0040 /* UNDERCLOCKED_STS */
4980#define ARIZONA_UNDERCLOCKED_STS_SHIFT 6 /* UNDERCLOCKED_STS */
4981#define ARIZONA_UNDERCLOCKED_STS_WIDTH 1 /* UNDERCLOCKED_STS */
4982#define ARIZONA_OVERCLOCKED_STS 0x0020 /* OVERCLOCKED_STS */
4983#define ARIZONA_OVERCLOCKED_STS_MASK 0x0020 /* OVERCLOCKED_STS */
4984#define ARIZONA_OVERCLOCKED_STS_SHIFT 5 /* OVERCLOCKED_STS */
4985#define ARIZONA_OVERCLOCKED_STS_WIDTH 1 /* OVERCLOCKED_STS */
4986#define ARIZONA_FLL2_LOCK_STS 0x0008 /* FLL2_LOCK_STS */
4987#define ARIZONA_FLL2_LOCK_STS_MASK 0x0008 /* FLL2_LOCK_STS */
4988#define ARIZONA_FLL2_LOCK_STS_SHIFT 3 /* FLL2_LOCK_STS */
4989#define ARIZONA_FLL2_LOCK_STS_WIDTH 1 /* FLL2_LOCK_STS */
4990#define ARIZONA_FLL1_LOCK_STS 0x0004 /* FLL1_LOCK_STS */
4991#define ARIZONA_FLL1_LOCK_STS_MASK 0x0004 /* FLL1_LOCK_STS */
4992#define ARIZONA_FLL1_LOCK_STS_SHIFT 2 /* FLL1_LOCK_STS */
4993#define ARIZONA_FLL1_LOCK_STS_WIDTH 1 /* FLL1_LOCK_STS */
4994#define ARIZONA_CLKGEN_ERR_STS 0x0002 /* CLKGEN_ERR_STS */
4995#define ARIZONA_CLKGEN_ERR_STS_MASK 0x0002 /* CLKGEN_ERR_STS */
4996#define ARIZONA_CLKGEN_ERR_STS_SHIFT 1 /* CLKGEN_ERR_STS */
4997#define ARIZONA_CLKGEN_ERR_STS_WIDTH 1 /* CLKGEN_ERR_STS */
4998#define ARIZONA_CLKGEN_ERR_ASYNC_STS 0x0001 /* CLKGEN_ERR_ASYNC_STS */
4999#define ARIZONA_CLKGEN_ERR_ASYNC_STS_MASK 0x0001 /* CLKGEN_ERR_ASYNC_STS */
5000#define ARIZONA_CLKGEN_ERR_ASYNC_STS_SHIFT 0 /* CLKGEN_ERR_ASYNC_STS */
5001#define ARIZONA_CLKGEN_ERR_ASYNC_STS_WIDTH 1 /* CLKGEN_ERR_ASYNC_STS */
5002
5003/*
5004 * R3362 (0xD22) - Interrupt Raw Status 4
5005 */
5006#define ARIZONA_ASRC_CFG_ERR_STS 0x8000 /* ASRC_CFG_ERR_STS */
5007#define ARIZONA_ASRC_CFG_ERR_STS_MASK 0x8000 /* ASRC_CFG_ERR_STS */
5008#define ARIZONA_ASRC_CFG_ERR_STS_SHIFT 15 /* ASRC_CFG_ERR_STS */
5009#define ARIZONA_ASRC_CFG_ERR_STS_WIDTH 1 /* ASRC_CFG_ERR_STS */
5010#define ARIZONA_AIF3_ERR_STS 0x4000 /* AIF3_ERR_STS */
5011#define ARIZONA_AIF3_ERR_STS_MASK 0x4000 /* AIF3_ERR_STS */
5012#define ARIZONA_AIF3_ERR_STS_SHIFT 14 /* AIF3_ERR_STS */
5013#define ARIZONA_AIF3_ERR_STS_WIDTH 1 /* AIF3_ERR_STS */
5014#define ARIZONA_AIF2_ERR_STS 0x2000 /* AIF2_ERR_STS */
5015#define ARIZONA_AIF2_ERR_STS_MASK 0x2000 /* AIF2_ERR_STS */
5016#define ARIZONA_AIF2_ERR_STS_SHIFT 13 /* AIF2_ERR_STS */
5017#define ARIZONA_AIF2_ERR_STS_WIDTH 1 /* AIF2_ERR_STS */
5018#define ARIZONA_AIF1_ERR_STS 0x1000 /* AIF1_ERR_STS */
5019#define ARIZONA_AIF1_ERR_STS_MASK 0x1000 /* AIF1_ERR_STS */
5020#define ARIZONA_AIF1_ERR_STS_SHIFT 12 /* AIF1_ERR_STS */
5021#define ARIZONA_AIF1_ERR_STS_WIDTH 1 /* AIF1_ERR_STS */
5022#define ARIZONA_CTRLIF_ERR_STS 0x0800 /* CTRLIF_ERR_STS */
5023#define ARIZONA_CTRLIF_ERR_STS_MASK 0x0800 /* CTRLIF_ERR_STS */
5024#define ARIZONA_CTRLIF_ERR_STS_SHIFT 11 /* CTRLIF_ERR_STS */
5025#define ARIZONA_CTRLIF_ERR_STS_WIDTH 1 /* CTRLIF_ERR_STS */
5026#define ARIZONA_MIXER_DROPPED_SAMPLE_STS 0x0400 /* MIXER_DROPPED_SAMPLE_STS */
5027#define ARIZONA_MIXER_DROPPED_SAMPLE_STS_MASK 0x0400 /* MIXER_DROPPED_SAMPLE_STS */
5028#define ARIZONA_MIXER_DROPPED_SAMPLE_STS_SHIFT 10 /* MIXER_DROPPED_SAMPLE_STS */
5029#define ARIZONA_MIXER_DROPPED_SAMPLE_STS_WIDTH 1 /* MIXER_DROPPED_SAMPLE_STS */
5030#define ARIZONA_ASYNC_CLK_ENA_LOW_STS 0x0200 /* ASYNC_CLK_ENA_LOW_STS */
5031#define ARIZONA_ASYNC_CLK_ENA_LOW_STS_MASK 0x0200 /* ASYNC_CLK_ENA_LOW_STS */
5032#define ARIZONA_ASYNC_CLK_ENA_LOW_STS_SHIFT 9 /* ASYNC_CLK_ENA_LOW_STS */
5033#define ARIZONA_ASYNC_CLK_ENA_LOW_STS_WIDTH 1 /* ASYNC_CLK_ENA_LOW_STS */
5034#define ARIZONA_SYSCLK_ENA_LOW_STS 0x0100 /* SYSCLK_ENA_LOW_STS */
5035#define ARIZONA_SYSCLK_ENA_LOW_STS_MASK 0x0100 /* SYSCLK_ENA_LOW_STS */
5036#define ARIZONA_SYSCLK_ENA_LOW_STS_SHIFT 8 /* SYSCLK_ENA_LOW_STS */
5037#define ARIZONA_SYSCLK_ENA_LOW_STS_WIDTH 1 /* SYSCLK_ENA_LOW_STS */
5038#define ARIZONA_ISRC1_CFG_ERR_STS 0x0080 /* ISRC1_CFG_ERR_STS */
5039#define ARIZONA_ISRC1_CFG_ERR_STS_MASK 0x0080 /* ISRC1_CFG_ERR_STS */
5040#define ARIZONA_ISRC1_CFG_ERR_STS_SHIFT 7 /* ISRC1_CFG_ERR_STS */
5041#define ARIZONA_ISRC1_CFG_ERR_STS_WIDTH 1 /* ISRC1_CFG_ERR_STS */
5042#define ARIZONA_ISRC2_CFG_ERR_STS 0x0040 /* ISRC2_CFG_ERR_STS */
5043#define ARIZONA_ISRC2_CFG_ERR_STS_MASK 0x0040 /* ISRC2_CFG_ERR_STS */
5044#define ARIZONA_ISRC2_CFG_ERR_STS_SHIFT 6 /* ISRC2_CFG_ERR_STS */
5045#define ARIZONA_ISRC2_CFG_ERR_STS_WIDTH 1 /* ISRC2_CFG_ERR_STS */
5046
5047/*
5048 * R3363 (0xD23) - Interrupt Raw Status 5
5049 */
5050#define ARIZONA_BOOT_DONE_STS 0x0100 /* BOOT_DONE_STS */
5051#define ARIZONA_BOOT_DONE_STS_MASK 0x0100 /* BOOT_DONE_STS */
5052#define ARIZONA_BOOT_DONE_STS_SHIFT 8 /* BOOT_DONE_STS */
5053#define ARIZONA_BOOT_DONE_STS_WIDTH 1 /* BOOT_DONE_STS */
5054#define ARIZONA_DCS_DAC_DONE_STS 0x0080 /* DCS_DAC_DONE_STS */
5055#define ARIZONA_DCS_DAC_DONE_STS_MASK 0x0080 /* DCS_DAC_DONE_STS */
5056#define ARIZONA_DCS_DAC_DONE_STS_SHIFT 7 /* DCS_DAC_DONE_STS */
5057#define ARIZONA_DCS_DAC_DONE_STS_WIDTH 1 /* DCS_DAC_DONE_STS */
5058#define ARIZONA_DCS_HP_DONE_STS 0x0040 /* DCS_HP_DONE_STS */
5059#define ARIZONA_DCS_HP_DONE_STS_MASK 0x0040 /* DCS_HP_DONE_STS */
5060#define ARIZONA_DCS_HP_DONE_STS_SHIFT 6 /* DCS_HP_DONE_STS */
5061#define ARIZONA_DCS_HP_DONE_STS_WIDTH 1 /* DCS_HP_DONE_STS */
5062#define ARIZONA_FLL2_CLOCK_OK_STS 0x0002 /* FLL2_CLOCK_OK_STS */
5063#define ARIZONA_FLL2_CLOCK_OK_STS_MASK 0x0002 /* FLL2_CLOCK_OK_STS */
5064#define ARIZONA_FLL2_CLOCK_OK_STS_SHIFT 1 /* FLL2_CLOCK_OK_STS */
5065#define ARIZONA_FLL2_CLOCK_OK_STS_WIDTH 1 /* FLL2_CLOCK_OK_STS */
5066#define ARIZONA_FLL1_CLOCK_OK_STS 0x0001 /* FLL1_CLOCK_OK_STS */
5067#define ARIZONA_FLL1_CLOCK_OK_STS_MASK 0x0001 /* FLL1_CLOCK_OK_STS */
5068#define ARIZONA_FLL1_CLOCK_OK_STS_SHIFT 0 /* FLL1_CLOCK_OK_STS */
5069#define ARIZONA_FLL1_CLOCK_OK_STS_WIDTH 1 /* FLL1_CLOCK_OK_STS */
5070
5071/*
5072 * R3364 (0xD24) - Interrupt Raw Status 6
5073 */
5074#define ARIZONA_PWM_OVERCLOCKED_STS 0x2000 /* PWM_OVERCLOCKED_STS */
5075#define ARIZONA_PWM_OVERCLOCKED_STS_MASK 0x2000 /* PWM_OVERCLOCKED_STS */
5076#define ARIZONA_PWM_OVERCLOCKED_STS_SHIFT 13 /* PWM_OVERCLOCKED_STS */
5077#define ARIZONA_PWM_OVERCLOCKED_STS_WIDTH 1 /* PWM_OVERCLOCKED_STS */
5078#define ARIZONA_FX_CORE_OVERCLOCKED_STS 0x1000 /* FX_CORE_OVERCLOCKED_STS */
5079#define ARIZONA_FX_CORE_OVERCLOCKED_STS_MASK 0x1000 /* FX_CORE_OVERCLOCKED_STS */
5080#define ARIZONA_FX_CORE_OVERCLOCKED_STS_SHIFT 12 /* FX_CORE_OVERCLOCKED_STS */
5081#define ARIZONA_FX_CORE_OVERCLOCKED_STS_WIDTH 1 /* FX_CORE_OVERCLOCKED_STS */
5082#define ARIZONA_DAC_SYS_OVERCLOCKED_STS 0x0400 /* DAC_SYS_OVERCLOCKED_STS */
5083#define ARIZONA_DAC_SYS_OVERCLOCKED_STS_MASK 0x0400 /* DAC_SYS_OVERCLOCKED_STS */
5084#define ARIZONA_DAC_SYS_OVERCLOCKED_STS_SHIFT 10 /* DAC_SYS_OVERCLOCKED_STS */
5085#define ARIZONA_DAC_SYS_OVERCLOCKED_STS_WIDTH 1 /* DAC_SYS_OVERCLOCKED_STS */
5086#define ARIZONA_DAC_WARP_OVERCLOCKED_STS 0x0200 /* DAC_WARP_OVERCLOCKED_STS */
5087#define ARIZONA_DAC_WARP_OVERCLOCKED_STS_MASK 0x0200 /* DAC_WARP_OVERCLOCKED_STS */
5088#define ARIZONA_DAC_WARP_OVERCLOCKED_STS_SHIFT 9 /* DAC_WARP_OVERCLOCKED_STS */
5089#define ARIZONA_DAC_WARP_OVERCLOCKED_STS_WIDTH 1 /* DAC_WARP_OVERCLOCKED_STS */
5090#define ARIZONA_ADC_OVERCLOCKED_STS 0x0100 /* ADC_OVERCLOCKED_STS */
5091#define ARIZONA_ADC_OVERCLOCKED_STS_MASK 0x0100 /* ADC_OVERCLOCKED_STS */
5092#define ARIZONA_ADC_OVERCLOCKED_STS_SHIFT 8 /* ADC_OVERCLOCKED_STS */
5093#define ARIZONA_ADC_OVERCLOCKED_STS_WIDTH 1 /* ADC_OVERCLOCKED_STS */
5094#define ARIZONA_MIXER_OVERCLOCKED_STS 0x0080 /* MIXER_OVERCLOCKED_STS */
5095#define ARIZONA_MIXER_OVERCLOCKED_STS_MASK 0x0080 /* MIXER_OVERCLOCKED_STS */
5096#define ARIZONA_MIXER_OVERCLOCKED_STS_SHIFT 7 /* MIXER_OVERCLOCKED_STS */
5097#define ARIZONA_MIXER_OVERCLOCKED_STS_WIDTH 1 /* MIXER_OVERCLOCKED_STS */
5098#define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS 0x0040 /* AIF3_ASYNC_OVERCLOCKED_STS */
5099#define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS_MASK 0x0040 /* AIF3_ASYNC_OVERCLOCKED_STS */
5100#define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS_SHIFT 6 /* AIF3_ASYNC_OVERCLOCKED_STS */
5101#define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF3_ASYNC_OVERCLOCKED_STS */
5102#define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS 0x0020 /* AIF2_ASYNC_OVERCLOCKED_STS */
5103#define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS_MASK 0x0020 /* AIF2_ASYNC_OVERCLOCKED_STS */
5104#define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS_SHIFT 5 /* AIF2_ASYNC_OVERCLOCKED_STS */
5105#define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF2_ASYNC_OVERCLOCKED_STS */
5106#define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS 0x0010 /* AIF1_ASYNC_OVERCLOCKED_STS */
5107#define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS_MASK 0x0010 /* AIF1_ASYNC_OVERCLOCKED_STS */
5108#define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS_SHIFT 4 /* AIF1_ASYNC_OVERCLOCKED_STS */
5109#define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF1_ASYNC_OVERCLOCKED_STS */
5110#define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS 0x0008 /* AIF3_SYNC_OVERCLOCKED_STS */
5111#define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS_MASK 0x0008 /* AIF3_SYNC_OVERCLOCKED_STS */
5112#define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS_SHIFT 3 /* AIF3_SYNC_OVERCLOCKED_STS */
5113#define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF3_SYNC_OVERCLOCKED_STS */
5114#define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS 0x0004 /* AIF2_SYNC_OVERCLOCKED_STS */
5115#define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS_MASK 0x0004 /* AIF2_SYNC_OVERCLOCKED_STS */
5116#define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS_SHIFT 2 /* AIF2_SYNC_OVERCLOCKED_STS */
5117#define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF2_SYNC_OVERCLOCKED_STS */
5118#define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS 0x0002 /* AIF1_SYNC_OVERCLOCKED_STS */
5119#define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS_MASK 0x0002 /* AIF1_SYNC_OVERCLOCKED_STS */
5120#define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS_SHIFT 1 /* AIF1_SYNC_OVERCLOCKED_STS */
5121#define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF1_SYNC_OVERCLOCKED_STS */
5122#define ARIZONA_PAD_CTRL_OVERCLOCKED_STS 0x0001 /* PAD_CTRL_OVERCLOCKED_STS */
5123#define ARIZONA_PAD_CTRL_OVERCLOCKED_STS_MASK 0x0001 /* PAD_CTRL_OVERCLOCKED_STS */
5124#define ARIZONA_PAD_CTRL_OVERCLOCKED_STS_SHIFT 0 /* PAD_CTRL_OVERCLOCKED_STS */
5125#define ARIZONA_PAD_CTRL_OVERCLOCKED_STS_WIDTH 1 /* PAD_CTRL_OVERCLOCKED_STS */
5126
5127/*
5128 * R3365 (0xD25) - Interrupt Raw Status 7
5129 */
5130#define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS 0x8000 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */
5131#define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS_MASK 0x8000 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */
5132#define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS_SHIFT 15 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */
5133#define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS_WIDTH 1 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */
5134#define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS 0x4000 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */
5135#define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS_MASK 0x4000 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */
5136#define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS_SHIFT 14 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */
5137#define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */
5138#define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS 0x2000 /* SLIMBUS_SYNC_OVERCLOCKED_STS */
5139#define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS_MASK 0x2000 /* SLIMBUS_SYNC_OVERCLOCKED_STS */
5140#define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS_SHIFT 13 /* SLIMBUS_SYNC_OVERCLOCKED_STS */
5141#define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS_WIDTH 1 /* SLIMBUS_SYNC_OVERCLOCKED_STS */
5142#define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS 0x1000 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */
5143#define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS_MASK 0x1000 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */
5144#define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS_SHIFT 12 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */
5145#define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS_WIDTH 1 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */
5146#define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS 0x0800 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */
5147#define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS_MASK 0x0800 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */
5148#define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS_SHIFT 11 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */
5149#define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS_WIDTH 1 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */
5150#define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS 0x0400 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */
5151#define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS_MASK 0x0400 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */
5152#define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS_SHIFT 10 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */
5153#define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS_WIDTH 1 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */
5154#define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS 0x0200 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */
5155#define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS_MASK 0x0200 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */
5156#define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS_SHIFT 9 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */
5157#define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS_WIDTH 1 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */
5158#define ARIZONA_ADSP2_1_OVERCLOCKED_STS 0x0008 /* ADSP2_1_OVERCLOCKED_STS */
5159#define ARIZONA_ADSP2_1_OVERCLOCKED_STS_MASK 0x0008 /* ADSP2_1_OVERCLOCKED_STS */
5160#define ARIZONA_ADSP2_1_OVERCLOCKED_STS_SHIFT 3 /* ADSP2_1_OVERCLOCKED_STS */
5161#define ARIZONA_ADSP2_1_OVERCLOCKED_STS_WIDTH 1 /* ADSP2_1_OVERCLOCKED_STS */
5162#define ARIZONA_ISRC2_OVERCLOCKED_STS 0x0002 /* ISRC2_OVERCLOCKED_STS */
5163#define ARIZONA_ISRC2_OVERCLOCKED_STS_MASK 0x0002 /* ISRC2_OVERCLOCKED_STS */
5164#define ARIZONA_ISRC2_OVERCLOCKED_STS_SHIFT 1 /* ISRC2_OVERCLOCKED_STS */
5165#define ARIZONA_ISRC2_OVERCLOCKED_STS_WIDTH 1 /* ISRC2_OVERCLOCKED_STS */
5166#define ARIZONA_ISRC1_OVERCLOCKED_STS 0x0001 /* ISRC1_OVERCLOCKED_STS */
5167#define ARIZONA_ISRC1_OVERCLOCKED_STS_MASK 0x0001 /* ISRC1_OVERCLOCKED_STS */
5168#define ARIZONA_ISRC1_OVERCLOCKED_STS_SHIFT 0 /* ISRC1_OVERCLOCKED_STS */
5169#define ARIZONA_ISRC1_OVERCLOCKED_STS_WIDTH 1 /* ISRC1_OVERCLOCKED_STS */
5170
5171/*
5172 * R3366 (0xD26) - Interrupt Raw Status 8
5173 */
5174#define ARIZONA_AIF3_UNDERCLOCKED_STS 0x0400 /* AIF3_UNDERCLOCKED_STS */
5175#define ARIZONA_AIF3_UNDERCLOCKED_STS_MASK 0x0400 /* AIF3_UNDERCLOCKED_STS */
5176#define ARIZONA_AIF3_UNDERCLOCKED_STS_SHIFT 10 /* AIF3_UNDERCLOCKED_STS */
5177#define ARIZONA_AIF3_UNDERCLOCKED_STS_WIDTH 1 /* AIF3_UNDERCLOCKED_STS */
5178#define ARIZONA_AIF2_UNDERCLOCKED_STS 0x0200 /* AIF2_UNDERCLOCKED_STS */
5179#define ARIZONA_AIF2_UNDERCLOCKED_STS_MASK 0x0200 /* AIF2_UNDERCLOCKED_STS */
5180#define ARIZONA_AIF2_UNDERCLOCKED_STS_SHIFT 9 /* AIF2_UNDERCLOCKED_STS */
5181#define ARIZONA_AIF2_UNDERCLOCKED_STS_WIDTH 1 /* AIF2_UNDERCLOCKED_STS */
5182#define ARIZONA_AIF1_UNDERCLOCKED_STS 0x0100 /* AIF1_UNDERCLOCKED_STS */
5183#define ARIZONA_AIF1_UNDERCLOCKED_STS_MASK 0x0100 /* AIF1_UNDERCLOCKED_STS */
5184#define ARIZONA_AIF1_UNDERCLOCKED_STS_SHIFT 8 /* AIF1_UNDERCLOCKED_STS */
5185#define ARIZONA_AIF1_UNDERCLOCKED_STS_WIDTH 1 /* AIF1_UNDERCLOCKED_STS */
5186#define ARIZONA_ISRC2_UNDERCLOCKED_STS 0x0040 /* ISRC2_UNDERCLOCKED_STS */
5187#define ARIZONA_ISRC2_UNDERCLOCKED_STS_MASK 0x0040 /* ISRC2_UNDERCLOCKED_STS */
5188#define ARIZONA_ISRC2_UNDERCLOCKED_STS_SHIFT 6 /* ISRC2_UNDERCLOCKED_STS */
5189#define ARIZONA_ISRC2_UNDERCLOCKED_STS_WIDTH 1 /* ISRC2_UNDERCLOCKED_STS */
5190#define ARIZONA_ISRC1_UNDERCLOCKED_STS 0x0020 /* ISRC1_UNDERCLOCKED_STS */
5191#define ARIZONA_ISRC1_UNDERCLOCKED_STS_MASK 0x0020 /* ISRC1_UNDERCLOCKED_STS */
5192#define ARIZONA_ISRC1_UNDERCLOCKED_STS_SHIFT 5 /* ISRC1_UNDERCLOCKED_STS */
5193#define ARIZONA_ISRC1_UNDERCLOCKED_STS_WIDTH 1 /* ISRC1_UNDERCLOCKED_STS */
5194#define ARIZONA_FX_UNDERCLOCKED_STS 0x0010 /* FX_UNDERCLOCKED_STS */
5195#define ARIZONA_FX_UNDERCLOCKED_STS_MASK 0x0010 /* FX_UNDERCLOCKED_STS */
5196#define ARIZONA_FX_UNDERCLOCKED_STS_SHIFT 4 /* FX_UNDERCLOCKED_STS */
5197#define ARIZONA_FX_UNDERCLOCKED_STS_WIDTH 1 /* FX_UNDERCLOCKED_STS */
5198#define ARIZONA_ASRC_UNDERCLOCKED_STS 0x0008 /* ASRC_UNDERCLOCKED_STS */
5199#define ARIZONA_ASRC_UNDERCLOCKED_STS_MASK 0x0008 /* ASRC_UNDERCLOCKED_STS */
5200#define ARIZONA_ASRC_UNDERCLOCKED_STS_SHIFT 3 /* ASRC_UNDERCLOCKED_STS */
5201#define ARIZONA_ASRC_UNDERCLOCKED_STS_WIDTH 1 /* ASRC_UNDERCLOCKED_STS */
5202#define ARIZONA_DAC_UNDERCLOCKED_STS 0x0004 /* DAC_UNDERCLOCKED_STS */
5203#define ARIZONA_DAC_UNDERCLOCKED_STS_MASK 0x0004 /* DAC_UNDERCLOCKED_STS */
5204#define ARIZONA_DAC_UNDERCLOCKED_STS_SHIFT 2 /* DAC_UNDERCLOCKED_STS */
5205#define ARIZONA_DAC_UNDERCLOCKED_STS_WIDTH 1 /* DAC_UNDERCLOCKED_STS */
5206#define ARIZONA_ADC_UNDERCLOCKED_STS 0x0002 /* ADC_UNDERCLOCKED_STS */
5207#define ARIZONA_ADC_UNDERCLOCKED_STS_MASK 0x0002 /* ADC_UNDERCLOCKED_STS */
5208#define ARIZONA_ADC_UNDERCLOCKED_STS_SHIFT 1 /* ADC_UNDERCLOCKED_STS */
5209#define ARIZONA_ADC_UNDERCLOCKED_STS_WIDTH 1 /* ADC_UNDERCLOCKED_STS */
5210#define ARIZONA_MIXER_UNDERCLOCKED_STS 0x0001 /* MIXER_UNDERCLOCKED_STS */
5211#define ARIZONA_MIXER_UNDERCLOCKED_STS_MASK 0x0001 /* MIXER_UNDERCLOCKED_STS */
5212#define ARIZONA_MIXER_UNDERCLOCKED_STS_SHIFT 0 /* MIXER_UNDERCLOCKED_STS */
5213#define ARIZONA_MIXER_UNDERCLOCKED_STS_WIDTH 1 /* MIXER_UNDERCLOCKED_STS */
5214
5215/*
5216 * R3392 (0xD40) - IRQ Pin Status
5217 */
5218#define ARIZONA_IRQ2_STS 0x0002 /* IRQ2_STS */
5219#define ARIZONA_IRQ2_STS_MASK 0x0002 /* IRQ2_STS */
5220#define ARIZONA_IRQ2_STS_SHIFT 1 /* IRQ2_STS */
5221#define ARIZONA_IRQ2_STS_WIDTH 1 /* IRQ2_STS */
5222#define ARIZONA_IRQ1_STS 0x0001 /* IRQ1_STS */
5223#define ARIZONA_IRQ1_STS_MASK 0x0001 /* IRQ1_STS */
5224#define ARIZONA_IRQ1_STS_SHIFT 0 /* IRQ1_STS */
5225#define ARIZONA_IRQ1_STS_WIDTH 1 /* IRQ1_STS */
5226
5227/*
5228 * R3393 (0xD41) - ADSP2 IRQ0
5229 */
5230#define ARIZONA_DSP_IRQ2 0x0002 /* DSP_IRQ2 */
5231#define ARIZONA_DSP_IRQ2_MASK 0x0002 /* DSP_IRQ2 */
5232#define ARIZONA_DSP_IRQ2_SHIFT 1 /* DSP_IRQ2 */
5233#define ARIZONA_DSP_IRQ2_WIDTH 1 /* DSP_IRQ2 */
5234#define ARIZONA_DSP_IRQ1 0x0001 /* DSP_IRQ1 */
5235#define ARIZONA_DSP_IRQ1_MASK 0x0001 /* DSP_IRQ1 */
5236#define ARIZONA_DSP_IRQ1_SHIFT 0 /* DSP_IRQ1 */
5237#define ARIZONA_DSP_IRQ1_WIDTH 1 /* DSP_IRQ1 */
5238
5239/*
5240 * R3408 (0xD50) - AOD wkup and trig
5241 */
5242#define ARIZONA_GP5_FALL_TRIG_STS 0x0020 /* GP5_FALL_TRIG_STS */
5243#define ARIZONA_GP5_FALL_TRIG_STS_MASK 0x0020 /* GP5_FALL_TRIG_STS */
5244#define ARIZONA_GP5_FALL_TRIG_STS_SHIFT 5 /* GP5_FALL_TRIG_STS */
5245#define ARIZONA_GP5_FALL_TRIG_STS_WIDTH 1 /* GP5_FALL_TRIG_STS */
5246#define ARIZONA_GP5_RISE_TRIG_STS 0x0010 /* GP5_RISE_TRIG_STS */
5247#define ARIZONA_GP5_RISE_TRIG_STS_MASK 0x0010 /* GP5_RISE_TRIG_STS */
5248#define ARIZONA_GP5_RISE_TRIG_STS_SHIFT 4 /* GP5_RISE_TRIG_STS */
5249#define ARIZONA_GP5_RISE_TRIG_STS_WIDTH 1 /* GP5_RISE_TRIG_STS */
5250#define ARIZONA_JD1_FALL_TRIG_STS 0x0008 /* JD1_FALL_TRIG_STS */
5251#define ARIZONA_JD1_FALL_TRIG_STS_MASK 0x0008 /* JD1_FALL_TRIG_STS */
5252#define ARIZONA_JD1_FALL_TRIG_STS_SHIFT 3 /* JD1_FALL_TRIG_STS */
5253#define ARIZONA_JD1_FALL_TRIG_STS_WIDTH 1 /* JD1_FALL_TRIG_STS */
5254#define ARIZONA_JD1_RISE_TRIG_STS 0x0004 /* JD1_RISE_TRIG_STS */
5255#define ARIZONA_JD1_RISE_TRIG_STS_MASK 0x0004 /* JD1_RISE_TRIG_STS */
5256#define ARIZONA_JD1_RISE_TRIG_STS_SHIFT 2 /* JD1_RISE_TRIG_STS */
5257#define ARIZONA_JD1_RISE_TRIG_STS_WIDTH 1 /* JD1_RISE_TRIG_STS */
5258#define ARIZONA_JD2_FALL_TRIG_STS 0x0002 /* JD2_FALL_TRIG_STS */
5259#define ARIZONA_JD2_FALL_TRIG_STS_MASK 0x0002 /* JD2_FALL_TRIG_STS */
5260#define ARIZONA_JD2_FALL_TRIG_STS_SHIFT 1 /* JD2_FALL_TRIG_STS */
5261#define ARIZONA_JD2_FALL_TRIG_STS_WIDTH 1 /* JD2_FALL_TRIG_STS */
5262#define ARIZONA_JD2_RISE_TRIG_STS 0x0001 /* JD2_RISE_TRIG_STS */
5263#define ARIZONA_JD2_RISE_TRIG_STS_MASK 0x0001 /* JD2_RISE_TRIG_STS */
5264#define ARIZONA_JD2_RISE_TRIG_STS_SHIFT 0 /* JD2_RISE_TRIG_STS */
5265#define ARIZONA_JD2_RISE_TRIG_STS_WIDTH 1 /* JD2_RISE_TRIG_STS */
5266
5267/*
5268 * R3409 (0xD51) - AOD IRQ1
5269 */
5270#define ARIZONA_GP5_FALL_EINT1 0x0020 /* GP5_FALL_EINT1 */
5271#define ARIZONA_GP5_FALL_EINT1_MASK 0x0020 /* GP5_FALL_EINT1 */
5272#define ARIZONA_GP5_FALL_EINT1_SHIFT 5 /* GP5_FALL_EINT1 */
5273#define ARIZONA_GP5_FALL_EINT1_WIDTH 1 /* GP5_FALL_EINT1 */
5274#define ARIZONA_GP5_RISE_EINT1 0x0010 /* GP5_RISE_EINT1 */
5275#define ARIZONA_GP5_RISE_EINT1_MASK 0x0010 /* GP5_RISE_EINT1 */
5276#define ARIZONA_GP5_RISE_EINT1_SHIFT 4 /* GP5_RISE_EINT1 */
5277#define ARIZONA_GP5_RISE_EINT1_WIDTH 1 /* GP5_RISE_EINT1 */
5278#define ARIZONA_JD1_FALL_EINT1 0x0008 /* JD1_FALL_EINT1 */
5279#define ARIZONA_JD1_FALL_EINT1_MASK 0x0008 /* JD1_FALL_EINT1 */
5280#define ARIZONA_JD1_FALL_EINT1_SHIFT 3 /* JD1_FALL_EINT1 */
5281#define ARIZONA_JD1_FALL_EINT1_WIDTH 1 /* JD1_FALL_EINT1 */
5282#define ARIZONA_JD1_RISE_EINT1 0x0004 /* JD1_RISE_EINT1 */
5283#define ARIZONA_JD1_RISE_EINT1_MASK 0x0004 /* JD1_RISE_EINT1 */
5284#define ARIZONA_JD1_RISE_EINT1_SHIFT 2 /* JD1_RISE_EINT1 */
5285#define ARIZONA_JD1_RISE_EINT1_WIDTH 1 /* JD1_RISE_EINT1 */
5286#define ARIZONA_JD2_FALL_EINT1 0x0002 /* JD2_FALL_EINT1 */
5287#define ARIZONA_JD2_FALL_EINT1_MASK 0x0002 /* JD2_FALL_EINT1 */
5288#define ARIZONA_JD2_FALL_EINT1_SHIFT 1 /* JD2_FALL_EINT1 */
5289#define ARIZONA_JD2_FALL_EINT1_WIDTH 1 /* JD2_FALL_EINT1 */
5290#define ARIZONA_JD2_RISE_EINT1 0x0001 /* JD2_RISE_EINT1 */
5291#define ARIZONA_JD2_RISE_EINT1_MASK 0x0001 /* JD2_RISE_EINT1 */
5292#define ARIZONA_JD2_RISE_EINT1_SHIFT 0 /* JD2_RISE_EINT1 */
5293#define ARIZONA_JD2_RISE_EINT1_WIDTH 1 /* JD2_RISE_EINT1 */
5294
5295/*
5296 * R3410 (0xD52) - AOD IRQ2
5297 */
5298#define ARIZONA_GP5_FALL_EINT2 0x0020 /* GP5_FALL_EINT2 */
5299#define ARIZONA_GP5_FALL_EINT2_MASK 0x0020 /* GP5_FALL_EINT2 */
5300#define ARIZONA_GP5_FALL_EINT2_SHIFT 5 /* GP5_FALL_EINT2 */
5301#define ARIZONA_GP5_FALL_EINT2_WIDTH 1 /* GP5_FALL_EINT2 */
5302#define ARIZONA_GP5_RISE_EINT2 0x0010 /* GP5_RISE_EINT2 */
5303#define ARIZONA_GP5_RISE_EINT2_MASK 0x0010 /* GP5_RISE_EINT2 */
5304#define ARIZONA_GP5_RISE_EINT2_SHIFT 4 /* GP5_RISE_EINT2 */
5305#define ARIZONA_GP5_RISE_EINT2_WIDTH 1 /* GP5_RISE_EINT2 */
5306#define ARIZONA_JD1_FALL_EINT2 0x0008 /* JD1_FALL_EINT2 */
5307#define ARIZONA_JD1_FALL_EINT2_MASK 0x0008 /* JD1_FALL_EINT2 */
5308#define ARIZONA_JD1_FALL_EINT2_SHIFT 3 /* JD1_FALL_EINT2 */
5309#define ARIZONA_JD1_FALL_EINT2_WIDTH 1 /* JD1_FALL_EINT2 */
5310#define ARIZONA_JD1_RISE_EINT2 0x0004 /* JD1_RISE_EINT2 */
5311#define ARIZONA_JD1_RISE_EINT2_MASK 0x0004 /* JD1_RISE_EINT2 */
5312#define ARIZONA_JD1_RISE_EINT2_SHIFT 2 /* JD1_RISE_EINT2 */
5313#define ARIZONA_JD1_RISE_EINT2_WIDTH 1 /* JD1_RISE_EINT2 */
5314#define ARIZONA_JD2_FALL_EINT2 0x0002 /* JD2_FALL_EINT2 */
5315#define ARIZONA_JD2_FALL_EINT2_MASK 0x0002 /* JD2_FALL_EINT2 */
5316#define ARIZONA_JD2_FALL_EINT2_SHIFT 1 /* JD2_FALL_EINT2 */
5317#define ARIZONA_JD2_FALL_EINT2_WIDTH 1 /* JD2_FALL_EINT2 */
5318#define ARIZONA_JD2_RISE_EINT2 0x0001 /* JD2_RISE_EINT2 */
5319#define ARIZONA_JD2_RISE_EINT2_MASK 0x0001 /* JD2_RISE_EINT2 */
5320#define ARIZONA_JD2_RISE_EINT2_SHIFT 0 /* JD2_RISE_EINT2 */
5321#define ARIZONA_JD2_RISE_EINT2_WIDTH 1 /* JD2_RISE_EINT2 */
5322
5323/*
5324 * R3411 (0xD53) - AOD IRQ Mask IRQ1
5325 */
5326#define ARIZONA_IM_GP5_FALL_EINT1 0x0020 /* IM_GP5_FALL_EINT1 */
5327#define ARIZONA_IM_GP5_FALL_EINT1_MASK 0x0020 /* IM_GP5_FALL_EINT1 */
5328#define ARIZONA_IM_GP5_FALL_EINT1_SHIFT 5 /* IM_GP5_FALL_EINT1 */
5329#define ARIZONA_IM_GP5_FALL_EINT1_WIDTH 1 /* IM_GP5_FALL_EINT1 */
5330#define ARIZONA_IM_GP5_RISE_EINT1 0x0010 /* IM_GP5_RISE_EINT1 */
5331#define ARIZONA_IM_GP5_RISE_EINT1_MASK 0x0010 /* IM_GP5_RISE_EINT1 */
5332#define ARIZONA_IM_GP5_RISE_EINT1_SHIFT 4 /* IM_GP5_RISE_EINT1 */
5333#define ARIZONA_IM_GP5_RISE_EINT1_WIDTH 1 /* IM_GP5_RISE_EINT1 */
5334#define ARIZONA_IM_JD1_FALL_EINT1 0x0008 /* IM_JD1_FALL_EINT1 */
5335#define ARIZONA_IM_JD1_FALL_EINT1_MASK 0x0008 /* IM_JD1_FALL_EINT1 */
5336#define ARIZONA_IM_JD1_FALL_EINT1_SHIFT 3 /* IM_JD1_FALL_EINT1 */
5337#define ARIZONA_IM_JD1_FALL_EINT1_WIDTH 1 /* IM_JD1_FALL_EINT1 */
5338#define ARIZONA_IM_JD1_RISE_EINT1 0x0004 /* IM_JD1_RISE_EINT1 */
5339#define ARIZONA_IM_JD1_RISE_EINT1_MASK 0x0004 /* IM_JD1_RISE_EINT1 */
5340#define ARIZONA_IM_JD1_RISE_EINT1_SHIFT 2 /* IM_JD1_RISE_EINT1 */
5341#define ARIZONA_IM_JD1_RISE_EINT1_WIDTH 1 /* IM_JD1_RISE_EINT1 */
5342#define ARIZONA_IM_JD2_FALL_EINT1 0x0002 /* IM_JD2_FALL_EINT1 */
5343#define ARIZONA_IM_JD2_FALL_EINT1_MASK 0x0002 /* IM_JD2_FALL_EINT1 */
5344#define ARIZONA_IM_JD2_FALL_EINT1_SHIFT 1 /* IM_JD2_FALL_EINT1 */
5345#define ARIZONA_IM_JD2_FALL_EINT1_WIDTH 1 /* IM_JD2_FALL_EINT1 */
5346#define ARIZONA_IM_JD2_RISE_EINT1 0x0001 /* IM_JD2_RISE_EINT1 */
5347#define ARIZONA_IM_JD2_RISE_EINT1_MASK 0x0001 /* IM_JD2_RISE_EINT1 */
5348#define ARIZONA_IM_JD2_RISE_EINT1_SHIFT 0 /* IM_JD2_RISE_EINT1 */
5349#define ARIZONA_IM_JD2_RISE_EINT1_WIDTH 1 /* IM_JD2_RISE_EINT1 */
5350
5351/*
5352 * R3412 (0xD54) - AOD IRQ Mask IRQ2
5353 */
5354#define ARIZONA_IM_GP5_FALL_EINT2 0x0020 /* IM_GP5_FALL_EINT2 */
5355#define ARIZONA_IM_GP5_FALL_EINT2_MASK 0x0020 /* IM_GP5_FALL_EINT2 */
5356#define ARIZONA_IM_GP5_FALL_EINT2_SHIFT 5 /* IM_GP5_FALL_EINT2 */
5357#define ARIZONA_IM_GP5_FALL_EINT2_WIDTH 1 /* IM_GP5_FALL_EINT2 */
5358#define ARIZONA_IM_GP5_RISE_EINT2 0x0010 /* IM_GP5_RISE_EINT2 */
5359#define ARIZONA_IM_GP5_RISE_EINT2_MASK 0x0010 /* IM_GP5_RISE_EINT2 */
5360#define ARIZONA_IM_GP5_RISE_EINT2_SHIFT 4 /* IM_GP5_RISE_EINT2 */
5361#define ARIZONA_IM_GP5_RISE_EINT2_WIDTH 1 /* IM_GP5_RISE_EINT2 */
5362#define ARIZONA_IM_JD1_FALL_EINT2 0x0008 /* IM_JD1_FALL_EINT2 */
5363#define ARIZONA_IM_JD1_FALL_EINT2_MASK 0x0008 /* IM_JD1_FALL_EINT2 */
5364#define ARIZONA_IM_JD1_FALL_EINT2_SHIFT 3 /* IM_JD1_FALL_EINT2 */
5365#define ARIZONA_IM_JD1_FALL_EINT2_WIDTH 1 /* IM_JD1_FALL_EINT2 */
5366#define ARIZONA_IM_JD1_RISE_EINT2 0x0004 /* IM_JD1_RISE_EINT2 */
5367#define ARIZONA_IM_JD1_RISE_EINT2_MASK 0x0004 /* IM_JD1_RISE_EINT2 */
5368#define ARIZONA_IM_JD1_RISE_EINT2_SHIFT 2 /* IM_JD1_RISE_EINT2 */
5369#define ARIZONA_IM_JD1_RISE_EINT2_WIDTH 1 /* IM_JD1_RISE_EINT2 */
5370#define ARIZONA_IM_JD2_FALL_EINT2 0x0002 /* IM_JD2_FALL_EINT2 */
5371#define ARIZONA_IM_JD2_FALL_EINT2_MASK 0x0002 /* IM_JD2_FALL_EINT2 */
5372#define ARIZONA_IM_JD2_FALL_EINT2_SHIFT 1 /* IM_JD2_FALL_EINT2 */
5373#define ARIZONA_IM_JD2_FALL_EINT2_WIDTH 1 /* IM_JD2_FALL_EINT2 */
5374#define ARIZONA_IM_JD2_RISE_EINT2 0x0001 /* IM_JD2_RISE_EINT2 */
5375#define ARIZONA_IM_JD2_RISE_EINT2_MASK 0x0001 /* IM_JD2_RISE_EINT2 */
5376#define ARIZONA_IM_JD2_RISE_EINT2_SHIFT 0 /* IM_JD2_RISE_EINT2 */
5377#define ARIZONA_IM_JD2_RISE_EINT2_WIDTH 1 /* IM_JD2_RISE_EINT2 */
5378
5379/*
5380 * R3413 (0xD55) - AOD IRQ Raw Status
5381 */
5382#define ARIZONA_GP5_STS 0x0004 /* GP5_STS */
5383#define ARIZONA_GP5_STS_MASK 0x0004 /* GP5_STS */
5384#define ARIZONA_GP5_STS_SHIFT 2 /* GP5_STS */
5385#define ARIZONA_GP5_STS_WIDTH 1 /* GP5_STS */
5386#define ARIZONA_JD2_STS 0x0002 /* JD2_STS */
5387#define ARIZONA_JD2_STS_MASK 0x0002 /* JD2_STS */
5388#define ARIZONA_JD2_STS_SHIFT 1 /* JD2_STS */
5389#define ARIZONA_JD2_STS_WIDTH 1 /* JD2_STS */
5390#define ARIZONA_JD1_STS 0x0001 /* JD1_STS */
5391#define ARIZONA_JD1_STS_MASK 0x0001 /* JD1_STS */
5392#define ARIZONA_JD1_STS_SHIFT 0 /* JD1_STS */
5393#define ARIZONA_JD1_STS_WIDTH 1 /* JD1_STS */
5394
5395/*
5396 * R3414 (0xD56) - Jack detect debounce
5397 */
5398#define ARIZONA_JD2_DB 0x0002 /* JD2_DB */
5399#define ARIZONA_JD2_DB_MASK 0x0002 /* JD2_DB */
5400#define ARIZONA_JD2_DB_SHIFT 1 /* JD2_DB */
5401#define ARIZONA_JD2_DB_WIDTH 1 /* JD2_DB */
5402#define ARIZONA_JD1_DB 0x0001 /* JD1_DB */
5403#define ARIZONA_JD1_DB_MASK 0x0001 /* JD1_DB */
5404#define ARIZONA_JD1_DB_SHIFT 0 /* JD1_DB */
5405#define ARIZONA_JD1_DB_WIDTH 1 /* JD1_DB */
5406
5407/*
5408 * R3584 (0xE00) - FX_Ctrl1
5409 */
5410#define ARIZONA_FX_RATE_MASK 0x7800 /* FX_RATE - [14:11] */
5411#define ARIZONA_FX_RATE_SHIFT 11 /* FX_RATE - [14:11] */
5412#define ARIZONA_FX_RATE_WIDTH 4 /* FX_RATE - [14:11] */
5413
5414/*
5415 * R3585 (0xE01) - FX_Ctrl2
5416 */
5417#define ARIZONA_FX_STS_MASK 0xFFF0 /* FX_STS - [15:4] */
5418#define ARIZONA_FX_STS_SHIFT 4 /* FX_STS - [15:4] */
5419#define ARIZONA_FX_STS_WIDTH 12 /* FX_STS - [15:4] */
5420
5421/*
5422 * R3600 (0xE10) - EQ1_1
5423 */
5424#define ARIZONA_EQ1_B1_GAIN_MASK 0xF800 /* EQ1_B1_GAIN - [15:11] */
5425#define ARIZONA_EQ1_B1_GAIN_SHIFT 11 /* EQ1_B1_GAIN - [15:11] */
5426#define ARIZONA_EQ1_B1_GAIN_WIDTH 5 /* EQ1_B1_GAIN - [15:11] */
5427#define ARIZONA_EQ1_B2_GAIN_MASK 0x07C0 /* EQ1_B2_GAIN - [10:6] */
5428#define ARIZONA_EQ1_B2_GAIN_SHIFT 6 /* EQ1_B2_GAIN - [10:6] */
5429#define ARIZONA_EQ1_B2_GAIN_WIDTH 5 /* EQ1_B2_GAIN - [10:6] */
5430#define ARIZONA_EQ1_B3_GAIN_MASK 0x003E /* EQ1_B3_GAIN - [5:1] */
5431#define ARIZONA_EQ1_B3_GAIN_SHIFT 1 /* EQ1_B3_GAIN - [5:1] */
5432#define ARIZONA_EQ1_B3_GAIN_WIDTH 5 /* EQ1_B3_GAIN - [5:1] */
5433#define ARIZONA_EQ1_ENA 0x0001 /* EQ1_ENA */
5434#define ARIZONA_EQ1_ENA_MASK 0x0001 /* EQ1_ENA */
5435#define ARIZONA_EQ1_ENA_SHIFT 0 /* EQ1_ENA */
5436#define ARIZONA_EQ1_ENA_WIDTH 1 /* EQ1_ENA */
5437
5438/*
5439 * R3601 (0xE11) - EQ1_2
5440 */
5441#define ARIZONA_EQ1_B4_GAIN_MASK 0xF800 /* EQ1_B4_GAIN - [15:11] */
5442#define ARIZONA_EQ1_B4_GAIN_SHIFT 11 /* EQ1_B4_GAIN - [15:11] */
5443#define ARIZONA_EQ1_B4_GAIN_WIDTH 5 /* EQ1_B4_GAIN - [15:11] */
5444#define ARIZONA_EQ1_B5_GAIN_MASK 0x07C0 /* EQ1_B5_GAIN - [10:6] */
5445#define ARIZONA_EQ1_B5_GAIN_SHIFT 6 /* EQ1_B5_GAIN - [10:6] */
5446#define ARIZONA_EQ1_B5_GAIN_WIDTH 5 /* EQ1_B5_GAIN - [10:6] */
5447#define ARIZONA_EQ1_B1_MODE 0x0001 /* EQ1_B1_MODE */
5448#define ARIZONA_EQ1_B1_MODE_MASK 0x0001 /* EQ1_B1_MODE */
5449#define ARIZONA_EQ1_B1_MODE_SHIFT 0 /* EQ1_B1_MODE */
5450#define ARIZONA_EQ1_B1_MODE_WIDTH 1 /* EQ1_B1_MODE */
5451
5452/*
5453 * R3602 (0xE12) - EQ1_3
5454 */
5455#define ARIZONA_EQ1_B1_A_MASK 0xFFFF /* EQ1_B1_A - [15:0] */
5456#define ARIZONA_EQ1_B1_A_SHIFT 0 /* EQ1_B1_A - [15:0] */
5457#define ARIZONA_EQ1_B1_A_WIDTH 16 /* EQ1_B1_A - [15:0] */
5458
5459/*
5460 * R3603 (0xE13) - EQ1_4
5461 */
5462#define ARIZONA_EQ1_B1_B_MASK 0xFFFF /* EQ1_B1_B - [15:0] */
5463#define ARIZONA_EQ1_B1_B_SHIFT 0 /* EQ1_B1_B - [15:0] */
5464#define ARIZONA_EQ1_B1_B_WIDTH 16 /* EQ1_B1_B - [15:0] */
5465
5466/*
5467 * R3604 (0xE14) - EQ1_5
5468 */
5469#define ARIZONA_EQ1_B1_PG_MASK 0xFFFF /* EQ1_B1_PG - [15:0] */
5470#define ARIZONA_EQ1_B1_PG_SHIFT 0 /* EQ1_B1_PG - [15:0] */
5471#define ARIZONA_EQ1_B1_PG_WIDTH 16 /* EQ1_B1_PG - [15:0] */
5472
5473/*
5474 * R3605 (0xE15) - EQ1_6
5475 */
5476#define ARIZONA_EQ1_B2_A_MASK 0xFFFF /* EQ1_B2_A - [15:0] */
5477#define ARIZONA_EQ1_B2_A_SHIFT 0 /* EQ1_B2_A - [15:0] */
5478#define ARIZONA_EQ1_B2_A_WIDTH 16 /* EQ1_B2_A - [15:0] */
5479
5480/*
5481 * R3606 (0xE16) - EQ1_7
5482 */
5483#define ARIZONA_EQ1_B2_B_MASK 0xFFFF /* EQ1_B2_B - [15:0] */
5484#define ARIZONA_EQ1_B2_B_SHIFT 0 /* EQ1_B2_B - [15:0] */
5485#define ARIZONA_EQ1_B2_B_WIDTH 16 /* EQ1_B2_B - [15:0] */
5486
5487/*
5488 * R3607 (0xE17) - EQ1_8
5489 */
5490#define ARIZONA_EQ1_B2_C_MASK 0xFFFF /* EQ1_B2_C - [15:0] */
5491#define ARIZONA_EQ1_B2_C_SHIFT 0 /* EQ1_B2_C - [15:0] */
5492#define ARIZONA_EQ1_B2_C_WIDTH 16 /* EQ1_B2_C - [15:0] */
5493
5494/*
5495 * R3608 (0xE18) - EQ1_9
5496 */
5497#define ARIZONA_EQ1_B2_PG_MASK 0xFFFF /* EQ1_B2_PG - [15:0] */
5498#define ARIZONA_EQ1_B2_PG_SHIFT 0 /* EQ1_B2_PG - [15:0] */
5499#define ARIZONA_EQ1_B2_PG_WIDTH 16 /* EQ1_B2_PG - [15:0] */
5500
5501/*
5502 * R3609 (0xE19) - EQ1_10
5503 */
5504#define ARIZONA_EQ1_B3_A_MASK 0xFFFF /* EQ1_B3_A - [15:0] */
5505#define ARIZONA_EQ1_B3_A_SHIFT 0 /* EQ1_B3_A - [15:0] */
5506#define ARIZONA_EQ1_B3_A_WIDTH 16 /* EQ1_B3_A - [15:0] */
5507
5508/*
5509 * R3610 (0xE1A) - EQ1_11
5510 */
5511#define ARIZONA_EQ1_B3_B_MASK 0xFFFF /* EQ1_B3_B - [15:0] */
5512#define ARIZONA_EQ1_B3_B_SHIFT 0 /* EQ1_B3_B - [15:0] */
5513#define ARIZONA_EQ1_B3_B_WIDTH 16 /* EQ1_B3_B - [15:0] */
5514
5515/*
5516 * R3611 (0xE1B) - EQ1_12
5517 */
5518#define ARIZONA_EQ1_B3_C_MASK 0xFFFF /* EQ1_B3_C - [15:0] */
5519#define ARIZONA_EQ1_B3_C_SHIFT 0 /* EQ1_B3_C - [15:0] */
5520#define ARIZONA_EQ1_B3_C_WIDTH 16 /* EQ1_B3_C - [15:0] */
5521
5522/*
5523 * R3612 (0xE1C) - EQ1_13
5524 */
5525#define ARIZONA_EQ1_B3_PG_MASK 0xFFFF /* EQ1_B3_PG - [15:0] */
5526#define ARIZONA_EQ1_B3_PG_SHIFT 0 /* EQ1_B3_PG - [15:0] */
5527#define ARIZONA_EQ1_B3_PG_WIDTH 16 /* EQ1_B3_PG - [15:0] */
5528
5529/*
5530 * R3613 (0xE1D) - EQ1_14
5531 */
5532#define ARIZONA_EQ1_B4_A_MASK 0xFFFF /* EQ1_B4_A - [15:0] */
5533#define ARIZONA_EQ1_B4_A_SHIFT 0 /* EQ1_B4_A - [15:0] */
5534#define ARIZONA_EQ1_B4_A_WIDTH 16 /* EQ1_B4_A - [15:0] */
5535
5536/*
5537 * R3614 (0xE1E) - EQ1_15
5538 */
5539#define ARIZONA_EQ1_B4_B_MASK 0xFFFF /* EQ1_B4_B - [15:0] */
5540#define ARIZONA_EQ1_B4_B_SHIFT 0 /* EQ1_B4_B - [15:0] */
5541#define ARIZONA_EQ1_B4_B_WIDTH 16 /* EQ1_B4_B - [15:0] */
5542
5543/*
5544 * R3615 (0xE1F) - EQ1_16
5545 */
5546#define ARIZONA_EQ1_B4_C_MASK 0xFFFF /* EQ1_B4_C - [15:0] */
5547#define ARIZONA_EQ1_B4_C_SHIFT 0 /* EQ1_B4_C - [15:0] */
5548#define ARIZONA_EQ1_B4_C_WIDTH 16 /* EQ1_B4_C - [15:0] */
5549
5550/*
5551 * R3616 (0xE20) - EQ1_17
5552 */
5553#define ARIZONA_EQ1_B4_PG_MASK 0xFFFF /* EQ1_B4_PG - [15:0] */
5554#define ARIZONA_EQ1_B4_PG_SHIFT 0 /* EQ1_B4_PG - [15:0] */
5555#define ARIZONA_EQ1_B4_PG_WIDTH 16 /* EQ1_B4_PG - [15:0] */
5556
5557/*
5558 * R3617 (0xE21) - EQ1_18
5559 */
5560#define ARIZONA_EQ1_B5_A_MASK 0xFFFF /* EQ1_B5_A - [15:0] */
5561#define ARIZONA_EQ1_B5_A_SHIFT 0 /* EQ1_B5_A - [15:0] */
5562#define ARIZONA_EQ1_B5_A_WIDTH 16 /* EQ1_B5_A - [15:0] */
5563
5564/*
5565 * R3618 (0xE22) - EQ1_19
5566 */
5567#define ARIZONA_EQ1_B5_B_MASK 0xFFFF /* EQ1_B5_B - [15:0] */
5568#define ARIZONA_EQ1_B5_B_SHIFT 0 /* EQ1_B5_B - [15:0] */
5569#define ARIZONA_EQ1_B5_B_WIDTH 16 /* EQ1_B5_B - [15:0] */
5570
5571/*
5572 * R3619 (0xE23) - EQ1_20
5573 */
5574#define ARIZONA_EQ1_B5_PG_MASK 0xFFFF /* EQ1_B5_PG - [15:0] */
5575#define ARIZONA_EQ1_B5_PG_SHIFT 0 /* EQ1_B5_PG - [15:0] */
5576#define ARIZONA_EQ1_B5_PG_WIDTH 16 /* EQ1_B5_PG - [15:0] */
5577
5578/*
5579 * R3620 (0xE24) - EQ1_21
5580 */
5581#define ARIZONA_EQ1_B1_C_MASK 0xFFFF /* EQ1_B1_C - [15:0] */
5582#define ARIZONA_EQ1_B1_C_SHIFT 0 /* EQ1_B1_C - [15:0] */
5583#define ARIZONA_EQ1_B1_C_WIDTH 16 /* EQ1_B1_C - [15:0] */
5584
5585/*
5586 * R3622 (0xE26) - EQ2_1
5587 */
5588#define ARIZONA_EQ2_B1_GAIN_MASK 0xF800 /* EQ2_B1_GAIN - [15:11] */
5589#define ARIZONA_EQ2_B1_GAIN_SHIFT 11 /* EQ2_B1_GAIN - [15:11] */
5590#define ARIZONA_EQ2_B1_GAIN_WIDTH 5 /* EQ2_B1_GAIN - [15:11] */
5591#define ARIZONA_EQ2_B2_GAIN_MASK 0x07C0 /* EQ2_B2_GAIN - [10:6] */
5592#define ARIZONA_EQ2_B2_GAIN_SHIFT 6 /* EQ2_B2_GAIN - [10:6] */
5593#define ARIZONA_EQ2_B2_GAIN_WIDTH 5 /* EQ2_B2_GAIN - [10:6] */
5594#define ARIZONA_EQ2_B3_GAIN_MASK 0x003E /* EQ2_B3_GAIN - [5:1] */
5595#define ARIZONA_EQ2_B3_GAIN_SHIFT 1 /* EQ2_B3_GAIN - [5:1] */
5596#define ARIZONA_EQ2_B3_GAIN_WIDTH 5 /* EQ2_B3_GAIN - [5:1] */
5597#define ARIZONA_EQ2_ENA 0x0001 /* EQ2_ENA */
5598#define ARIZONA_EQ2_ENA_MASK 0x0001 /* EQ2_ENA */
5599#define ARIZONA_EQ2_ENA_SHIFT 0 /* EQ2_ENA */
5600#define ARIZONA_EQ2_ENA_WIDTH 1 /* EQ2_ENA */
5601
5602/*
5603 * R3623 (0xE27) - EQ2_2
5604 */
5605#define ARIZONA_EQ2_B4_GAIN_MASK 0xF800 /* EQ2_B4_GAIN - [15:11] */
5606#define ARIZONA_EQ2_B4_GAIN_SHIFT 11 /* EQ2_B4_GAIN - [15:11] */
5607#define ARIZONA_EQ2_B4_GAIN_WIDTH 5 /* EQ2_B4_GAIN - [15:11] */
5608#define ARIZONA_EQ2_B5_GAIN_MASK 0x07C0 /* EQ2_B5_GAIN - [10:6] */
5609#define ARIZONA_EQ2_B5_GAIN_SHIFT 6 /* EQ2_B5_GAIN - [10:6] */
5610#define ARIZONA_EQ2_B5_GAIN_WIDTH 5 /* EQ2_B5_GAIN - [10:6] */
5611#define ARIZONA_EQ2_B1_MODE 0x0001 /* EQ2_B1_MODE */
5612#define ARIZONA_EQ2_B1_MODE_MASK 0x0001 /* EQ2_B1_MODE */
5613#define ARIZONA_EQ2_B1_MODE_SHIFT 0 /* EQ2_B1_MODE */
5614#define ARIZONA_EQ2_B1_MODE_WIDTH 1 /* EQ2_B1_MODE */
5615
5616/*
5617 * R3624 (0xE28) - EQ2_3
5618 */
5619#define ARIZONA_EQ2_B1_A_MASK 0xFFFF /* EQ2_B1_A - [15:0] */
5620#define ARIZONA_EQ2_B1_A_SHIFT 0 /* EQ2_B1_A - [15:0] */
5621#define ARIZONA_EQ2_B1_A_WIDTH 16 /* EQ2_B1_A - [15:0] */
5622
5623/*
5624 * R3625 (0xE29) - EQ2_4
5625 */
5626#define ARIZONA_EQ2_B1_B_MASK 0xFFFF /* EQ2_B1_B - [15:0] */
5627#define ARIZONA_EQ2_B1_B_SHIFT 0 /* EQ2_B1_B - [15:0] */
5628#define ARIZONA_EQ2_B1_B_WIDTH 16 /* EQ2_B1_B - [15:0] */
5629
5630/*
5631 * R3626 (0xE2A) - EQ2_5
5632 */
5633#define ARIZONA_EQ2_B1_PG_MASK 0xFFFF /* EQ2_B1_PG - [15:0] */
5634#define ARIZONA_EQ2_B1_PG_SHIFT 0 /* EQ2_B1_PG - [15:0] */
5635#define ARIZONA_EQ2_B1_PG_WIDTH 16 /* EQ2_B1_PG - [15:0] */
5636
5637/*
5638 * R3627 (0xE2B) - EQ2_6
5639 */
5640#define ARIZONA_EQ2_B2_A_MASK 0xFFFF /* EQ2_B2_A - [15:0] */
5641#define ARIZONA_EQ2_B2_A_SHIFT 0 /* EQ2_B2_A - [15:0] */
5642#define ARIZONA_EQ2_B2_A_WIDTH 16 /* EQ2_B2_A - [15:0] */
5643
5644/*
5645 * R3628 (0xE2C) - EQ2_7
5646 */
5647#define ARIZONA_EQ2_B2_B_MASK 0xFFFF /* EQ2_B2_B - [15:0] */
5648#define ARIZONA_EQ2_B2_B_SHIFT 0 /* EQ2_B2_B - [15:0] */
5649#define ARIZONA_EQ2_B2_B_WIDTH 16 /* EQ2_B2_B - [15:0] */
5650
5651/*
5652 * R3629 (0xE2D) - EQ2_8
5653 */
5654#define ARIZONA_EQ2_B2_C_MASK 0xFFFF /* EQ2_B2_C - [15:0] */
5655#define ARIZONA_EQ2_B2_C_SHIFT 0 /* EQ2_B2_C - [15:0] */
5656#define ARIZONA_EQ2_B2_C_WIDTH 16 /* EQ2_B2_C - [15:0] */
5657
5658/*
5659 * R3630 (0xE2E) - EQ2_9
5660 */
5661#define ARIZONA_EQ2_B2_PG_MASK 0xFFFF /* EQ2_B2_PG - [15:0] */
5662#define ARIZONA_EQ2_B2_PG_SHIFT 0 /* EQ2_B2_PG - [15:0] */
5663#define ARIZONA_EQ2_B2_PG_WIDTH 16 /* EQ2_B2_PG - [15:0] */
5664
5665/*
5666 * R3631 (0xE2F) - EQ2_10
5667 */
5668#define ARIZONA_EQ2_B3_A_MASK 0xFFFF /* EQ2_B3_A - [15:0] */
5669#define ARIZONA_EQ2_B3_A_SHIFT 0 /* EQ2_B3_A - [15:0] */
5670#define ARIZONA_EQ2_B3_A_WIDTH 16 /* EQ2_B3_A - [15:0] */
5671
5672/*
5673 * R3632 (0xE30) - EQ2_11
5674 */
5675#define ARIZONA_EQ2_B3_B_MASK 0xFFFF /* EQ2_B3_B - [15:0] */
5676#define ARIZONA_EQ2_B3_B_SHIFT 0 /* EQ2_B3_B - [15:0] */
5677#define ARIZONA_EQ2_B3_B_WIDTH 16 /* EQ2_B3_B - [15:0] */
5678
5679/*
5680 * R3633 (0xE31) - EQ2_12
5681 */
5682#define ARIZONA_EQ2_B3_C_MASK 0xFFFF /* EQ2_B3_C - [15:0] */
5683#define ARIZONA_EQ2_B3_C_SHIFT 0 /* EQ2_B3_C - [15:0] */
5684#define ARIZONA_EQ2_B3_C_WIDTH 16 /* EQ2_B3_C - [15:0] */
5685
5686/*
5687 * R3634 (0xE32) - EQ2_13
5688 */
5689#define ARIZONA_EQ2_B3_PG_MASK 0xFFFF /* EQ2_B3_PG - [15:0] */
5690#define ARIZONA_EQ2_B3_PG_SHIFT 0 /* EQ2_B3_PG - [15:0] */
5691#define ARIZONA_EQ2_B3_PG_WIDTH 16 /* EQ2_B3_PG - [15:0] */
5692
5693/*
5694 * R3635 (0xE33) - EQ2_14
5695 */
5696#define ARIZONA_EQ2_B4_A_MASK 0xFFFF /* EQ2_B4_A - [15:0] */
5697#define ARIZONA_EQ2_B4_A_SHIFT 0 /* EQ2_B4_A - [15:0] */
5698#define ARIZONA_EQ2_B4_A_WIDTH 16 /* EQ2_B4_A - [15:0] */
5699
5700/*
5701 * R3636 (0xE34) - EQ2_15
5702 */
5703#define ARIZONA_EQ2_B4_B_MASK 0xFFFF /* EQ2_B4_B - [15:0] */
5704#define ARIZONA_EQ2_B4_B_SHIFT 0 /* EQ2_B4_B - [15:0] */
5705#define ARIZONA_EQ2_B4_B_WIDTH 16 /* EQ2_B4_B - [15:0] */
5706
5707/*
5708 * R3637 (0xE35) - EQ2_16
5709 */
5710#define ARIZONA_EQ2_B4_C_MASK 0xFFFF /* EQ2_B4_C - [15:0] */
5711#define ARIZONA_EQ2_B4_C_SHIFT 0 /* EQ2_B4_C - [15:0] */
5712#define ARIZONA_EQ2_B4_C_WIDTH 16 /* EQ2_B4_C - [15:0] */
5713
5714/*
5715 * R3638 (0xE36) - EQ2_17
5716 */
5717#define ARIZONA_EQ2_B4_PG_MASK 0xFFFF /* EQ2_B4_PG - [15:0] */
5718#define ARIZONA_EQ2_B4_PG_SHIFT 0 /* EQ2_B4_PG - [15:0] */
5719#define ARIZONA_EQ2_B4_PG_WIDTH 16 /* EQ2_B4_PG - [15:0] */
5720
5721/*
5722 * R3639 (0xE37) - EQ2_18
5723 */
5724#define ARIZONA_EQ2_B5_A_MASK 0xFFFF /* EQ2_B5_A - [15:0] */
5725#define ARIZONA_EQ2_B5_A_SHIFT 0 /* EQ2_B5_A - [15:0] */
5726#define ARIZONA_EQ2_B5_A_WIDTH 16 /* EQ2_B5_A - [15:0] */
5727
5728/*
5729 * R3640 (0xE38) - EQ2_19
5730 */
5731#define ARIZONA_EQ2_B5_B_MASK 0xFFFF /* EQ2_B5_B - [15:0] */
5732#define ARIZONA_EQ2_B5_B_SHIFT 0 /* EQ2_B5_B - [15:0] */
5733#define ARIZONA_EQ2_B5_B_WIDTH 16 /* EQ2_B5_B - [15:0] */
5734
5735/*
5736 * R3641 (0xE39) - EQ2_20
5737 */
5738#define ARIZONA_EQ2_B5_PG_MASK 0xFFFF /* EQ2_B5_PG - [15:0] */
5739#define ARIZONA_EQ2_B5_PG_SHIFT 0 /* EQ2_B5_PG - [15:0] */
5740#define ARIZONA_EQ2_B5_PG_WIDTH 16 /* EQ2_B5_PG - [15:0] */
5741
5742/*
5743 * R3642 (0xE3A) - EQ2_21
5744 */
5745#define ARIZONA_EQ2_B1_C_MASK 0xFFFF /* EQ2_B1_C - [15:0] */
5746#define ARIZONA_EQ2_B1_C_SHIFT 0 /* EQ2_B1_C - [15:0] */
5747#define ARIZONA_EQ2_B1_C_WIDTH 16 /* EQ2_B1_C - [15:0] */
5748
5749/*
5750 * R3644 (0xE3C) - EQ3_1
5751 */
5752#define ARIZONA_EQ3_B1_GAIN_MASK 0xF800 /* EQ3_B1_GAIN - [15:11] */
5753#define ARIZONA_EQ3_B1_GAIN_SHIFT 11 /* EQ3_B1_GAIN - [15:11] */
5754#define ARIZONA_EQ3_B1_GAIN_WIDTH 5 /* EQ3_B1_GAIN - [15:11] */
5755#define ARIZONA_EQ3_B2_GAIN_MASK 0x07C0 /* EQ3_B2_GAIN - [10:6] */
5756#define ARIZONA_EQ3_B2_GAIN_SHIFT 6 /* EQ3_B2_GAIN - [10:6] */
5757#define ARIZONA_EQ3_B2_GAIN_WIDTH 5 /* EQ3_B2_GAIN - [10:6] */
5758#define ARIZONA_EQ3_B3_GAIN_MASK 0x003E /* EQ3_B3_GAIN - [5:1] */
5759#define ARIZONA_EQ3_B3_GAIN_SHIFT 1 /* EQ3_B3_GAIN - [5:1] */
5760#define ARIZONA_EQ3_B3_GAIN_WIDTH 5 /* EQ3_B3_GAIN - [5:1] */
5761#define ARIZONA_EQ3_ENA 0x0001 /* EQ3_ENA */
5762#define ARIZONA_EQ3_ENA_MASK 0x0001 /* EQ3_ENA */
5763#define ARIZONA_EQ3_ENA_SHIFT 0 /* EQ3_ENA */
5764#define ARIZONA_EQ3_ENA_WIDTH 1 /* EQ3_ENA */
5765
5766/*
5767 * R3645 (0xE3D) - EQ3_2
5768 */
5769#define ARIZONA_EQ3_B4_GAIN_MASK 0xF800 /* EQ3_B4_GAIN - [15:11] */
5770#define ARIZONA_EQ3_B4_GAIN_SHIFT 11 /* EQ3_B4_GAIN - [15:11] */
5771#define ARIZONA_EQ3_B4_GAIN_WIDTH 5 /* EQ3_B4_GAIN - [15:11] */
5772#define ARIZONA_EQ3_B5_GAIN_MASK 0x07C0 /* EQ3_B5_GAIN - [10:6] */
5773#define ARIZONA_EQ3_B5_GAIN_SHIFT 6 /* EQ3_B5_GAIN - [10:6] */
5774#define ARIZONA_EQ3_B5_GAIN_WIDTH 5 /* EQ3_B5_GAIN - [10:6] */
5775#define ARIZONA_EQ3_B1_MODE 0x0001 /* EQ3_B1_MODE */
5776#define ARIZONA_EQ3_B1_MODE_MASK 0x0001 /* EQ3_B1_MODE */
5777#define ARIZONA_EQ3_B1_MODE_SHIFT 0 /* EQ3_B1_MODE */
5778#define ARIZONA_EQ3_B1_MODE_WIDTH 1 /* EQ3_B1_MODE */
5779
5780/*
5781 * R3646 (0xE3E) - EQ3_3
5782 */
5783#define ARIZONA_EQ3_B1_A_MASK 0xFFFF /* EQ3_B1_A - [15:0] */
5784#define ARIZONA_EQ3_B1_A_SHIFT 0 /* EQ3_B1_A - [15:0] */
5785#define ARIZONA_EQ3_B1_A_WIDTH 16 /* EQ3_B1_A - [15:0] */
5786
5787/*
5788 * R3647 (0xE3F) - EQ3_4
5789 */
5790#define ARIZONA_EQ3_B1_B_MASK 0xFFFF /* EQ3_B1_B - [15:0] */
5791#define ARIZONA_EQ3_B1_B_SHIFT 0 /* EQ3_B1_B - [15:0] */
5792#define ARIZONA_EQ3_B1_B_WIDTH 16 /* EQ3_B1_B - [15:0] */
5793
5794/*
5795 * R3648 (0xE40) - EQ3_5
5796 */
5797#define ARIZONA_EQ3_B1_PG_MASK 0xFFFF /* EQ3_B1_PG - [15:0] */
5798#define ARIZONA_EQ3_B1_PG_SHIFT 0 /* EQ3_B1_PG - [15:0] */
5799#define ARIZONA_EQ3_B1_PG_WIDTH 16 /* EQ3_B1_PG - [15:0] */
5800
5801/*
5802 * R3649 (0xE41) - EQ3_6
5803 */
5804#define ARIZONA_EQ3_B2_A_MASK 0xFFFF /* EQ3_B2_A - [15:0] */
5805#define ARIZONA_EQ3_B2_A_SHIFT 0 /* EQ3_B2_A - [15:0] */
5806#define ARIZONA_EQ3_B2_A_WIDTH 16 /* EQ3_B2_A - [15:0] */
5807
5808/*
5809 * R3650 (0xE42) - EQ3_7
5810 */
5811#define ARIZONA_EQ3_B2_B_MASK 0xFFFF /* EQ3_B2_B - [15:0] */
5812#define ARIZONA_EQ3_B2_B_SHIFT 0 /* EQ3_B2_B - [15:0] */
5813#define ARIZONA_EQ3_B2_B_WIDTH 16 /* EQ3_B2_B - [15:0] */
5814
5815/*
5816 * R3651 (0xE43) - EQ3_8
5817 */
5818#define ARIZONA_EQ3_B2_C_MASK 0xFFFF /* EQ3_B2_C - [15:0] */
5819#define ARIZONA_EQ3_B2_C_SHIFT 0 /* EQ3_B2_C - [15:0] */
5820#define ARIZONA_EQ3_B2_C_WIDTH 16 /* EQ3_B2_C - [15:0] */
5821
5822/*
5823 * R3652 (0xE44) - EQ3_9
5824 */
5825#define ARIZONA_EQ3_B2_PG_MASK 0xFFFF /* EQ3_B2_PG - [15:0] */
5826#define ARIZONA_EQ3_B2_PG_SHIFT 0 /* EQ3_B2_PG - [15:0] */
5827#define ARIZONA_EQ3_B2_PG_WIDTH 16 /* EQ3_B2_PG - [15:0] */
5828
5829/*
5830 * R3653 (0xE45) - EQ3_10
5831 */
5832#define ARIZONA_EQ3_B3_A_MASK 0xFFFF /* EQ3_B3_A - [15:0] */
5833#define ARIZONA_EQ3_B3_A_SHIFT 0 /* EQ3_B3_A - [15:0] */
5834#define ARIZONA_EQ3_B3_A_WIDTH 16 /* EQ3_B3_A - [15:0] */
5835
5836/*
5837 * R3654 (0xE46) - EQ3_11
5838 */
5839#define ARIZONA_EQ3_B3_B_MASK 0xFFFF /* EQ3_B3_B - [15:0] */
5840#define ARIZONA_EQ3_B3_B_SHIFT 0 /* EQ3_B3_B - [15:0] */
5841#define ARIZONA_EQ3_B3_B_WIDTH 16 /* EQ3_B3_B - [15:0] */
5842
5843/*
5844 * R3655 (0xE47) - EQ3_12
5845 */
5846#define ARIZONA_EQ3_B3_C_MASK 0xFFFF /* EQ3_B3_C - [15:0] */
5847#define ARIZONA_EQ3_B3_C_SHIFT 0 /* EQ3_B3_C - [15:0] */
5848#define ARIZONA_EQ3_B3_C_WIDTH 16 /* EQ3_B3_C - [15:0] */
5849
5850/*
5851 * R3656 (0xE48) - EQ3_13
5852 */
5853#define ARIZONA_EQ3_B3_PG_MASK 0xFFFF /* EQ3_B3_PG - [15:0] */
5854#define ARIZONA_EQ3_B3_PG_SHIFT 0 /* EQ3_B3_PG - [15:0] */
5855#define ARIZONA_EQ3_B3_PG_WIDTH 16 /* EQ3_B3_PG - [15:0] */
5856
5857/*
5858 * R3657 (0xE49) - EQ3_14
5859 */
5860#define ARIZONA_EQ3_B4_A_MASK 0xFFFF /* EQ3_B4_A - [15:0] */
5861#define ARIZONA_EQ3_B4_A_SHIFT 0 /* EQ3_B4_A - [15:0] */
5862#define ARIZONA_EQ3_B4_A_WIDTH 16 /* EQ3_B4_A - [15:0] */
5863
5864/*
5865 * R3658 (0xE4A) - EQ3_15
5866 */
5867#define ARIZONA_EQ3_B4_B_MASK 0xFFFF /* EQ3_B4_B - [15:0] */
5868#define ARIZONA_EQ3_B4_B_SHIFT 0 /* EQ3_B4_B - [15:0] */
5869#define ARIZONA_EQ3_B4_B_WIDTH 16 /* EQ3_B4_B - [15:0] */
5870
5871/*
5872 * R3659 (0xE4B) - EQ3_16
5873 */
5874#define ARIZONA_EQ3_B4_C_MASK 0xFFFF /* EQ3_B4_C - [15:0] */
5875#define ARIZONA_EQ3_B4_C_SHIFT 0 /* EQ3_B4_C - [15:0] */
5876#define ARIZONA_EQ3_B4_C_WIDTH 16 /* EQ3_B4_C - [15:0] */
5877
5878/*
5879 * R3660 (0xE4C) - EQ3_17
5880 */
5881#define ARIZONA_EQ3_B4_PG_MASK 0xFFFF /* EQ3_B4_PG - [15:0] */
5882#define ARIZONA_EQ3_B4_PG_SHIFT 0 /* EQ3_B4_PG - [15:0] */
5883#define ARIZONA_EQ3_B4_PG_WIDTH 16 /* EQ3_B4_PG - [15:0] */
5884
5885/*
5886 * R3661 (0xE4D) - EQ3_18
5887 */
5888#define ARIZONA_EQ3_B5_A_MASK 0xFFFF /* EQ3_B5_A - [15:0] */
5889#define ARIZONA_EQ3_B5_A_SHIFT 0 /* EQ3_B5_A - [15:0] */
5890#define ARIZONA_EQ3_B5_A_WIDTH 16 /* EQ3_B5_A - [15:0] */
5891
5892/*
5893 * R3662 (0xE4E) - EQ3_19
5894 */
5895#define ARIZONA_EQ3_B5_B_MASK 0xFFFF /* EQ3_B5_B - [15:0] */
5896#define ARIZONA_EQ3_B5_B_SHIFT 0 /* EQ3_B5_B - [15:0] */
5897#define ARIZONA_EQ3_B5_B_WIDTH 16 /* EQ3_B5_B - [15:0] */
5898
5899/*
5900 * R3663 (0xE4F) - EQ3_20
5901 */
5902#define ARIZONA_EQ3_B5_PG_MASK 0xFFFF /* EQ3_B5_PG - [15:0] */
5903#define ARIZONA_EQ3_B5_PG_SHIFT 0 /* EQ3_B5_PG - [15:0] */
5904#define ARIZONA_EQ3_B5_PG_WIDTH 16 /* EQ3_B5_PG - [15:0] */
5905
5906/*
5907 * R3664 (0xE50) - EQ3_21
5908 */
5909#define ARIZONA_EQ3_B1_C_MASK 0xFFFF /* EQ3_B1_C - [15:0] */
5910#define ARIZONA_EQ3_B1_C_SHIFT 0 /* EQ3_B1_C - [15:0] */
5911#define ARIZONA_EQ3_B1_C_WIDTH 16 /* EQ3_B1_C - [15:0] */
5912
5913/*
5914 * R3666 (0xE52) - EQ4_1
5915 */
5916#define ARIZONA_EQ4_B1_GAIN_MASK 0xF800 /* EQ4_B1_GAIN - [15:11] */
5917#define ARIZONA_EQ4_B1_GAIN_SHIFT 11 /* EQ4_B1_GAIN - [15:11] */
5918#define ARIZONA_EQ4_B1_GAIN_WIDTH 5 /* EQ4_B1_GAIN - [15:11] */
5919#define ARIZONA_EQ4_B2_GAIN_MASK 0x07C0 /* EQ4_B2_GAIN - [10:6] */
5920#define ARIZONA_EQ4_B2_GAIN_SHIFT 6 /* EQ4_B2_GAIN - [10:6] */
5921#define ARIZONA_EQ4_B2_GAIN_WIDTH 5 /* EQ4_B2_GAIN - [10:6] */
5922#define ARIZONA_EQ4_B3_GAIN_MASK 0x003E /* EQ4_B3_GAIN - [5:1] */
5923#define ARIZONA_EQ4_B3_GAIN_SHIFT 1 /* EQ4_B3_GAIN - [5:1] */
5924#define ARIZONA_EQ4_B3_GAIN_WIDTH 5 /* EQ4_B3_GAIN - [5:1] */
5925#define ARIZONA_EQ4_ENA 0x0001 /* EQ4_ENA */
5926#define ARIZONA_EQ4_ENA_MASK 0x0001 /* EQ4_ENA */
5927#define ARIZONA_EQ4_ENA_SHIFT 0 /* EQ4_ENA */
5928#define ARIZONA_EQ4_ENA_WIDTH 1 /* EQ4_ENA */
5929
5930/*
5931 * R3667 (0xE53) - EQ4_2
5932 */
5933#define ARIZONA_EQ4_B4_GAIN_MASK 0xF800 /* EQ4_B4_GAIN - [15:11] */
5934#define ARIZONA_EQ4_B4_GAIN_SHIFT 11 /* EQ4_B4_GAIN - [15:11] */
5935#define ARIZONA_EQ4_B4_GAIN_WIDTH 5 /* EQ4_B4_GAIN - [15:11] */
5936#define ARIZONA_EQ4_B5_GAIN_MASK 0x07C0 /* EQ4_B5_GAIN - [10:6] */
5937#define ARIZONA_EQ4_B5_GAIN_SHIFT 6 /* EQ4_B5_GAIN - [10:6] */
5938#define ARIZONA_EQ4_B5_GAIN_WIDTH 5 /* EQ4_B5_GAIN - [10:6] */
5939#define ARIZONA_EQ4_B1_MODE 0x0001 /* EQ4_B1_MODE */
5940#define ARIZONA_EQ4_B1_MODE_MASK 0x0001 /* EQ4_B1_MODE */
5941#define ARIZONA_EQ4_B1_MODE_SHIFT 0 /* EQ4_B1_MODE */
5942#define ARIZONA_EQ4_B1_MODE_WIDTH 1 /* EQ4_B1_MODE */
5943
5944/*
5945 * R3668 (0xE54) - EQ4_3
5946 */
5947#define ARIZONA_EQ4_B1_A_MASK 0xFFFF /* EQ4_B1_A - [15:0] */
5948#define ARIZONA_EQ4_B1_A_SHIFT 0 /* EQ4_B1_A - [15:0] */
5949#define ARIZONA_EQ4_B1_A_WIDTH 16 /* EQ4_B1_A - [15:0] */
5950
5951/*
5952 * R3669 (0xE55) - EQ4_4
5953 */
5954#define ARIZONA_EQ4_B1_B_MASK 0xFFFF /* EQ4_B1_B - [15:0] */
5955#define ARIZONA_EQ4_B1_B_SHIFT 0 /* EQ4_B1_B - [15:0] */
5956#define ARIZONA_EQ4_B1_B_WIDTH 16 /* EQ4_B1_B - [15:0] */
5957
5958/*
5959 * R3670 (0xE56) - EQ4_5
5960 */
5961#define ARIZONA_EQ4_B1_PG_MASK 0xFFFF /* EQ4_B1_PG - [15:0] */
5962#define ARIZONA_EQ4_B1_PG_SHIFT 0 /* EQ4_B1_PG - [15:0] */
5963#define ARIZONA_EQ4_B1_PG_WIDTH 16 /* EQ4_B1_PG - [15:0] */
5964
5965/*
5966 * R3671 (0xE57) - EQ4_6
5967 */
5968#define ARIZONA_EQ4_B2_A_MASK 0xFFFF /* EQ4_B2_A - [15:0] */
5969#define ARIZONA_EQ4_B2_A_SHIFT 0 /* EQ4_B2_A - [15:0] */
5970#define ARIZONA_EQ4_B2_A_WIDTH 16 /* EQ4_B2_A - [15:0] */
5971
5972/*
5973 * R3672 (0xE58) - EQ4_7
5974 */
5975#define ARIZONA_EQ4_B2_B_MASK 0xFFFF /* EQ4_B2_B - [15:0] */
5976#define ARIZONA_EQ4_B2_B_SHIFT 0 /* EQ4_B2_B - [15:0] */
5977#define ARIZONA_EQ4_B2_B_WIDTH 16 /* EQ4_B2_B - [15:0] */
5978
5979/*
5980 * R3673 (0xE59) - EQ4_8
5981 */
5982#define ARIZONA_EQ4_B2_C_MASK 0xFFFF /* EQ4_B2_C - [15:0] */
5983#define ARIZONA_EQ4_B2_C_SHIFT 0 /* EQ4_B2_C - [15:0] */
5984#define ARIZONA_EQ4_B2_C_WIDTH 16 /* EQ4_B2_C - [15:0] */
5985
5986/*
5987 * R3674 (0xE5A) - EQ4_9
5988 */
5989#define ARIZONA_EQ4_B2_PG_MASK 0xFFFF /* EQ4_B2_PG - [15:0] */
5990#define ARIZONA_EQ4_B2_PG_SHIFT 0 /* EQ4_B2_PG - [15:0] */
5991#define ARIZONA_EQ4_B2_PG_WIDTH 16 /* EQ4_B2_PG - [15:0] */
5992
5993/*
5994 * R3675 (0xE5B) - EQ4_10
5995 */
5996#define ARIZONA_EQ4_B3_A_MASK 0xFFFF /* EQ4_B3_A - [15:0] */
5997#define ARIZONA_EQ4_B3_A_SHIFT 0 /* EQ4_B3_A - [15:0] */
5998#define ARIZONA_EQ4_B3_A_WIDTH 16 /* EQ4_B3_A - [15:0] */
5999
6000/*
6001 * R3676 (0xE5C) - EQ4_11
6002 */
6003#define ARIZONA_EQ4_B3_B_MASK 0xFFFF /* EQ4_B3_B - [15:0] */
6004#define ARIZONA_EQ4_B3_B_SHIFT 0 /* EQ4_B3_B - [15:0] */
6005#define ARIZONA_EQ4_B3_B_WIDTH 16 /* EQ4_B3_B - [15:0] */
6006
6007/*
6008 * R3677 (0xE5D) - EQ4_12
6009 */
6010#define ARIZONA_EQ4_B3_C_MASK 0xFFFF /* EQ4_B3_C - [15:0] */
6011#define ARIZONA_EQ4_B3_C_SHIFT 0 /* EQ4_B3_C - [15:0] */
6012#define ARIZONA_EQ4_B3_C_WIDTH 16 /* EQ4_B3_C - [15:0] */
6013
6014/*
6015 * R3678 (0xE5E) - EQ4_13
6016 */
6017#define ARIZONA_EQ4_B3_PG_MASK 0xFFFF /* EQ4_B3_PG - [15:0] */
6018#define ARIZONA_EQ4_B3_PG_SHIFT 0 /* EQ4_B3_PG - [15:0] */
6019#define ARIZONA_EQ4_B3_PG_WIDTH 16 /* EQ4_B3_PG - [15:0] */
6020
6021/*
6022 * R3679 (0xE5F) - EQ4_14
6023 */
6024#define ARIZONA_EQ4_B4_A_MASK 0xFFFF /* EQ4_B4_A - [15:0] */
6025#define ARIZONA_EQ4_B4_A_SHIFT 0 /* EQ4_B4_A - [15:0] */
6026#define ARIZONA_EQ4_B4_A_WIDTH 16 /* EQ4_B4_A - [15:0] */
6027
6028/*
6029 * R3680 (0xE60) - EQ4_15
6030 */
6031#define ARIZONA_EQ4_B4_B_MASK 0xFFFF /* EQ4_B4_B - [15:0] */
6032#define ARIZONA_EQ4_B4_B_SHIFT 0 /* EQ4_B4_B - [15:0] */
6033#define ARIZONA_EQ4_B4_B_WIDTH 16 /* EQ4_B4_B - [15:0] */
6034
6035/*
6036 * R3681 (0xE61) - EQ4_16
6037 */
6038#define ARIZONA_EQ4_B4_C_MASK 0xFFFF /* EQ4_B4_C - [15:0] */
6039#define ARIZONA_EQ4_B4_C_SHIFT 0 /* EQ4_B4_C - [15:0] */
6040#define ARIZONA_EQ4_B4_C_WIDTH 16 /* EQ4_B4_C - [15:0] */
6041
6042/*
6043 * R3682 (0xE62) - EQ4_17
6044 */
6045#define ARIZONA_EQ4_B4_PG_MASK 0xFFFF /* EQ4_B4_PG - [15:0] */
6046#define ARIZONA_EQ4_B4_PG_SHIFT 0 /* EQ4_B4_PG - [15:0] */
6047#define ARIZONA_EQ4_B4_PG_WIDTH 16 /* EQ4_B4_PG - [15:0] */
6048
6049/*
6050 * R3683 (0xE63) - EQ4_18
6051 */
6052#define ARIZONA_EQ4_B5_A_MASK 0xFFFF /* EQ4_B5_A - [15:0] */
6053#define ARIZONA_EQ4_B5_A_SHIFT 0 /* EQ4_B5_A - [15:0] */
6054#define ARIZONA_EQ4_B5_A_WIDTH 16 /* EQ4_B5_A - [15:0] */
6055
6056/*
6057 * R3684 (0xE64) - EQ4_19
6058 */
6059#define ARIZONA_EQ4_B5_B_MASK 0xFFFF /* EQ4_B5_B - [15:0] */
6060#define ARIZONA_EQ4_B5_B_SHIFT 0 /* EQ4_B5_B - [15:0] */
6061#define ARIZONA_EQ4_B5_B_WIDTH 16 /* EQ4_B5_B - [15:0] */
6062
6063/*
6064 * R3685 (0xE65) - EQ4_20
6065 */
6066#define ARIZONA_EQ4_B5_PG_MASK 0xFFFF /* EQ4_B5_PG - [15:0] */
6067#define ARIZONA_EQ4_B5_PG_SHIFT 0 /* EQ4_B5_PG - [15:0] */
6068#define ARIZONA_EQ4_B5_PG_WIDTH 16 /* EQ4_B5_PG - [15:0] */
6069
6070/*
6071 * R3686 (0xE66) - EQ4_21
6072 */
6073#define ARIZONA_EQ4_B1_C_MASK 0xFFFF /* EQ4_B1_C - [15:0] */
6074#define ARIZONA_EQ4_B1_C_SHIFT 0 /* EQ4_B1_C - [15:0] */
6075#define ARIZONA_EQ4_B1_C_WIDTH 16 /* EQ4_B1_C - [15:0] */
6076
6077/*
6078 * R3712 (0xE80) - DRC1 ctrl1
6079 */
6080#define ARIZONA_DRC1_SIG_DET_RMS_MASK 0xF800 /* DRC1_SIG_DET_RMS - [15:11] */
6081#define ARIZONA_DRC1_SIG_DET_RMS_SHIFT 11 /* DRC1_SIG_DET_RMS - [15:11] */
6082#define ARIZONA_DRC1_SIG_DET_RMS_WIDTH 5 /* DRC1_SIG_DET_RMS - [15:11] */
6083#define ARIZONA_DRC1_SIG_DET_PK_MASK 0x0600 /* DRC1_SIG_DET_PK - [10:9] */
6084#define ARIZONA_DRC1_SIG_DET_PK_SHIFT 9 /* DRC1_SIG_DET_PK - [10:9] */
6085#define ARIZONA_DRC1_SIG_DET_PK_WIDTH 2 /* DRC1_SIG_DET_PK - [10:9] */
6086#define ARIZONA_DRC1_NG_ENA 0x0100 /* DRC1_NG_ENA */
6087#define ARIZONA_DRC1_NG_ENA_MASK 0x0100 /* DRC1_NG_ENA */
6088#define ARIZONA_DRC1_NG_ENA_SHIFT 8 /* DRC1_NG_ENA */
6089#define ARIZONA_DRC1_NG_ENA_WIDTH 1 /* DRC1_NG_ENA */
6090#define ARIZONA_DRC1_SIG_DET_MODE 0x0080 /* DRC1_SIG_DET_MODE */
6091#define ARIZONA_DRC1_SIG_DET_MODE_MASK 0x0080 /* DRC1_SIG_DET_MODE */
6092#define ARIZONA_DRC1_SIG_DET_MODE_SHIFT 7 /* DRC1_SIG_DET_MODE */
6093#define ARIZONA_DRC1_SIG_DET_MODE_WIDTH 1 /* DRC1_SIG_DET_MODE */
6094#define ARIZONA_DRC1_SIG_DET 0x0040 /* DRC1_SIG_DET */
6095#define ARIZONA_DRC1_SIG_DET_MASK 0x0040 /* DRC1_SIG_DET */
6096#define ARIZONA_DRC1_SIG_DET_SHIFT 6 /* DRC1_SIG_DET */
6097#define ARIZONA_DRC1_SIG_DET_WIDTH 1 /* DRC1_SIG_DET */
6098#define ARIZONA_DRC1_KNEE2_OP_ENA 0x0020 /* DRC1_KNEE2_OP_ENA */
6099#define ARIZONA_DRC1_KNEE2_OP_ENA_MASK 0x0020 /* DRC1_KNEE2_OP_ENA */
6100#define ARIZONA_DRC1_KNEE2_OP_ENA_SHIFT 5 /* DRC1_KNEE2_OP_ENA */
6101#define ARIZONA_DRC1_KNEE2_OP_ENA_WIDTH 1 /* DRC1_KNEE2_OP_ENA */
6102#define ARIZONA_DRC1_QR 0x0010 /* DRC1_QR */
6103#define ARIZONA_DRC1_QR_MASK 0x0010 /* DRC1_QR */
6104#define ARIZONA_DRC1_QR_SHIFT 4 /* DRC1_QR */
6105#define ARIZONA_DRC1_QR_WIDTH 1 /* DRC1_QR */
6106#define ARIZONA_DRC1_ANTICLIP 0x0008 /* DRC1_ANTICLIP */
6107#define ARIZONA_DRC1_ANTICLIP_MASK 0x0008 /* DRC1_ANTICLIP */
6108#define ARIZONA_DRC1_ANTICLIP_SHIFT 3 /* DRC1_ANTICLIP */
6109#define ARIZONA_DRC1_ANTICLIP_WIDTH 1 /* DRC1_ANTICLIP */
6110#define ARIZONA_DRC1L_ENA 0x0002 /* DRC1L_ENA */
6111#define ARIZONA_DRC1L_ENA_MASK 0x0002 /* DRC1L_ENA */
6112#define ARIZONA_DRC1L_ENA_SHIFT 1 /* DRC1L_ENA */
6113#define ARIZONA_DRC1L_ENA_WIDTH 1 /* DRC1L_ENA */
6114#define ARIZONA_DRC1R_ENA 0x0001 /* DRC1R_ENA */
6115#define ARIZONA_DRC1R_ENA_MASK 0x0001 /* DRC1R_ENA */
6116#define ARIZONA_DRC1R_ENA_SHIFT 0 /* DRC1R_ENA */
6117#define ARIZONA_DRC1R_ENA_WIDTH 1 /* DRC1R_ENA */
6118
6119/*
6120 * R3713 (0xE81) - DRC1 ctrl2
6121 */
6122#define ARIZONA_DRC1_ATK_MASK 0x1E00 /* DRC1_ATK - [12:9] */
6123#define ARIZONA_DRC1_ATK_SHIFT 9 /* DRC1_ATK - [12:9] */
6124#define ARIZONA_DRC1_ATK_WIDTH 4 /* DRC1_ATK - [12:9] */
6125#define ARIZONA_DRC1_DCY_MASK 0x01E0 /* DRC1_DCY - [8:5] */
6126#define ARIZONA_DRC1_DCY_SHIFT 5 /* DRC1_DCY - [8:5] */
6127#define ARIZONA_DRC1_DCY_WIDTH 4 /* DRC1_DCY - [8:5] */
6128#define ARIZONA_DRC1_MINGAIN_MASK 0x001C /* DRC1_MINGAIN - [4:2] */
6129#define ARIZONA_DRC1_MINGAIN_SHIFT 2 /* DRC1_MINGAIN - [4:2] */
6130#define ARIZONA_DRC1_MINGAIN_WIDTH 3 /* DRC1_MINGAIN - [4:2] */
6131#define ARIZONA_DRC1_MAXGAIN_MASK 0x0003 /* DRC1_MAXGAIN - [1:0] */
6132#define ARIZONA_DRC1_MAXGAIN_SHIFT 0 /* DRC1_MAXGAIN - [1:0] */
6133#define ARIZONA_DRC1_MAXGAIN_WIDTH 2 /* DRC1_MAXGAIN - [1:0] */
6134
6135/*
6136 * R3714 (0xE82) - DRC1 ctrl3
6137 */
6138#define ARIZONA_DRC1_NG_MINGAIN_MASK 0xF000 /* DRC1_NG_MINGAIN - [15:12] */
6139#define ARIZONA_DRC1_NG_MINGAIN_SHIFT 12 /* DRC1_NG_MINGAIN - [15:12] */
6140#define ARIZONA_DRC1_NG_MINGAIN_WIDTH 4 /* DRC1_NG_MINGAIN - [15:12] */
6141#define ARIZONA_DRC1_NG_EXP_MASK 0x0C00 /* DRC1_NG_EXP - [11:10] */
6142#define ARIZONA_DRC1_NG_EXP_SHIFT 10 /* DRC1_NG_EXP - [11:10] */
6143#define ARIZONA_DRC1_NG_EXP_WIDTH 2 /* DRC1_NG_EXP - [11:10] */
6144#define ARIZONA_DRC1_QR_THR_MASK 0x0300 /* DRC1_QR_THR - [9:8] */
6145#define ARIZONA_DRC1_QR_THR_SHIFT 8 /* DRC1_QR_THR - [9:8] */
6146#define ARIZONA_DRC1_QR_THR_WIDTH 2 /* DRC1_QR_THR - [9:8] */
6147#define ARIZONA_DRC1_QR_DCY_MASK 0x00C0 /* DRC1_QR_DCY - [7:6] */
6148#define ARIZONA_DRC1_QR_DCY_SHIFT 6 /* DRC1_QR_DCY - [7:6] */
6149#define ARIZONA_DRC1_QR_DCY_WIDTH 2 /* DRC1_QR_DCY - [7:6] */
6150#define ARIZONA_DRC1_HI_COMP_MASK 0x0038 /* DRC1_HI_COMP - [5:3] */
6151#define ARIZONA_DRC1_HI_COMP_SHIFT 3 /* DRC1_HI_COMP - [5:3] */
6152#define ARIZONA_DRC1_HI_COMP_WIDTH 3 /* DRC1_HI_COMP - [5:3] */
6153#define ARIZONA_DRC1_LO_COMP_MASK 0x0007 /* DRC1_LO_COMP - [2:0] */
6154#define ARIZONA_DRC1_LO_COMP_SHIFT 0 /* DRC1_LO_COMP - [2:0] */
6155#define ARIZONA_DRC1_LO_COMP_WIDTH 3 /* DRC1_LO_COMP - [2:0] */
6156
6157/*
6158 * R3715 (0xE83) - DRC1 ctrl4
6159 */
6160#define ARIZONA_DRC1_KNEE_IP_MASK 0x07E0 /* DRC1_KNEE_IP - [10:5] */
6161#define ARIZONA_DRC1_KNEE_IP_SHIFT 5 /* DRC1_KNEE_IP - [10:5] */
6162#define ARIZONA_DRC1_KNEE_IP_WIDTH 6 /* DRC1_KNEE_IP - [10:5] */
6163#define ARIZONA_DRC1_KNEE_OP_MASK 0x001F /* DRC1_KNEE_OP - [4:0] */
6164#define ARIZONA_DRC1_KNEE_OP_SHIFT 0 /* DRC1_KNEE_OP - [4:0] */
6165#define ARIZONA_DRC1_KNEE_OP_WIDTH 5 /* DRC1_KNEE_OP - [4:0] */
6166
6167/*
6168 * R3716 (0xE84) - DRC1 ctrl5
6169 */
6170#define ARIZONA_DRC1_KNEE2_IP_MASK 0x03E0 /* DRC1_KNEE2_IP - [9:5] */
6171#define ARIZONA_DRC1_KNEE2_IP_SHIFT 5 /* DRC1_KNEE2_IP - [9:5] */
6172#define ARIZONA_DRC1_KNEE2_IP_WIDTH 5 /* DRC1_KNEE2_IP - [9:5] */
6173#define ARIZONA_DRC1_KNEE2_OP_MASK 0x001F /* DRC1_KNEE2_OP - [4:0] */
6174#define ARIZONA_DRC1_KNEE2_OP_SHIFT 0 /* DRC1_KNEE2_OP - [4:0] */
6175#define ARIZONA_DRC1_KNEE2_OP_WIDTH 5 /* DRC1_KNEE2_OP - [4:0] */
6176
6177/*
6178 * R3721 (0xE89) - DRC2 ctrl1
6179 */
6180#define ARIZONA_DRC2_SIG_DET_RMS_MASK 0xF800 /* DRC2_SIG_DET_RMS - [15:11] */
6181#define ARIZONA_DRC2_SIG_DET_RMS_SHIFT 11 /* DRC2_SIG_DET_RMS - [15:11] */
6182#define ARIZONA_DRC2_SIG_DET_RMS_WIDTH 5 /* DRC2_SIG_DET_RMS - [15:11] */
6183#define ARIZONA_DRC2_SIG_DET_PK_MASK 0x0600 /* DRC2_SIG_DET_PK - [10:9] */
6184#define ARIZONA_DRC2_SIG_DET_PK_SHIFT 9 /* DRC2_SIG_DET_PK - [10:9] */
6185#define ARIZONA_DRC2_SIG_DET_PK_WIDTH 2 /* DRC2_SIG_DET_PK - [10:9] */
6186#define ARIZONA_DRC2_NG_ENA 0x0100 /* DRC2_NG_ENA */
6187#define ARIZONA_DRC2_NG_ENA_MASK 0x0100 /* DRC2_NG_ENA */
6188#define ARIZONA_DRC2_NG_ENA_SHIFT 8 /* DRC2_NG_ENA */
6189#define ARIZONA_DRC2_NG_ENA_WIDTH 1 /* DRC2_NG_ENA */
6190#define ARIZONA_DRC2_SIG_DET_MODE 0x0080 /* DRC2_SIG_DET_MODE */
6191#define ARIZONA_DRC2_SIG_DET_MODE_MASK 0x0080 /* DRC2_SIG_DET_MODE */
6192#define ARIZONA_DRC2_SIG_DET_MODE_SHIFT 7 /* DRC2_SIG_DET_MODE */
6193#define ARIZONA_DRC2_SIG_DET_MODE_WIDTH 1 /* DRC2_SIG_DET_MODE */
6194#define ARIZONA_DRC2_SIG_DET 0x0040 /* DRC2_SIG_DET */
6195#define ARIZONA_DRC2_SIG_DET_MASK 0x0040 /* DRC2_SIG_DET */
6196#define ARIZONA_DRC2_SIG_DET_SHIFT 6 /* DRC2_SIG_DET */
6197#define ARIZONA_DRC2_SIG_DET_WIDTH 1 /* DRC2_SIG_DET */
6198#define ARIZONA_DRC2_KNEE2_OP_ENA 0x0020 /* DRC2_KNEE2_OP_ENA */
6199#define ARIZONA_DRC2_KNEE2_OP_ENA_MASK 0x0020 /* DRC2_KNEE2_OP_ENA */
6200#define ARIZONA_DRC2_KNEE2_OP_ENA_SHIFT 5 /* DRC2_KNEE2_OP_ENA */
6201#define ARIZONA_DRC2_KNEE2_OP_ENA_WIDTH 1 /* DRC2_KNEE2_OP_ENA */
6202#define ARIZONA_DRC2_QR 0x0010 /* DRC2_QR */
6203#define ARIZONA_DRC2_QR_MASK 0x0010 /* DRC2_QR */
6204#define ARIZONA_DRC2_QR_SHIFT 4 /* DRC2_QR */
6205#define ARIZONA_DRC2_QR_WIDTH 1 /* DRC2_QR */
6206#define ARIZONA_DRC2_ANTICLIP 0x0008 /* DRC2_ANTICLIP */
6207#define ARIZONA_DRC2_ANTICLIP_MASK 0x0008 /* DRC2_ANTICLIP */
6208#define ARIZONA_DRC2_ANTICLIP_SHIFT 3 /* DRC2_ANTICLIP */
6209#define ARIZONA_DRC2_ANTICLIP_WIDTH 1 /* DRC2_ANTICLIP */
6210#define ARIZONA_DRC2L_ENA 0x0002 /* DRC2L_ENA */
6211#define ARIZONA_DRC2L_ENA_MASK 0x0002 /* DRC2L_ENA */
6212#define ARIZONA_DRC2L_ENA_SHIFT 1 /* DRC2L_ENA */
6213#define ARIZONA_DRC2L_ENA_WIDTH 1 /* DRC2L_ENA */
6214#define ARIZONA_DRC2R_ENA 0x0001 /* DRC2R_ENA */
6215#define ARIZONA_DRC2R_ENA_MASK 0x0001 /* DRC2R_ENA */
6216#define ARIZONA_DRC2R_ENA_SHIFT 0 /* DRC2R_ENA */
6217#define ARIZONA_DRC2R_ENA_WIDTH 1 /* DRC2R_ENA */
6218
6219/*
6220 * R3722 (0xE8A) - DRC2 ctrl2
6221 */
6222#define ARIZONA_DRC2_ATK_MASK 0x1E00 /* DRC2_ATK - [12:9] */
6223#define ARIZONA_DRC2_ATK_SHIFT 9 /* DRC2_ATK - [12:9] */
6224#define ARIZONA_DRC2_ATK_WIDTH 4 /* DRC2_ATK - [12:9] */
6225#define ARIZONA_DRC2_DCY_MASK 0x01E0 /* DRC2_DCY - [8:5] */
6226#define ARIZONA_DRC2_DCY_SHIFT 5 /* DRC2_DCY - [8:5] */
6227#define ARIZONA_DRC2_DCY_WIDTH 4 /* DRC2_DCY - [8:5] */
6228#define ARIZONA_DRC2_MINGAIN_MASK 0x001C /* DRC2_MINGAIN - [4:2] */
6229#define ARIZONA_DRC2_MINGAIN_SHIFT 2 /* DRC2_MINGAIN - [4:2] */
6230#define ARIZONA_DRC2_MINGAIN_WIDTH 3 /* DRC2_MINGAIN - [4:2] */
6231#define ARIZONA_DRC2_MAXGAIN_MASK 0x0003 /* DRC2_MAXGAIN - [1:0] */
6232#define ARIZONA_DRC2_MAXGAIN_SHIFT 0 /* DRC2_MAXGAIN - [1:0] */
6233#define ARIZONA_DRC2_MAXGAIN_WIDTH 2 /* DRC2_MAXGAIN - [1:0] */
6234
6235/*
6236 * R3723 (0xE8B) - DRC2 ctrl3
6237 */
6238#define ARIZONA_DRC2_NG_MINGAIN_MASK 0xF000 /* DRC2_NG_MINGAIN - [15:12] */
6239#define ARIZONA_DRC2_NG_MINGAIN_SHIFT 12 /* DRC2_NG_MINGAIN - [15:12] */
6240#define ARIZONA_DRC2_NG_MINGAIN_WIDTH 4 /* DRC2_NG_MINGAIN - [15:12] */
6241#define ARIZONA_DRC2_NG_EXP_MASK 0x0C00 /* DRC2_NG_EXP - [11:10] */
6242#define ARIZONA_DRC2_NG_EXP_SHIFT 10 /* DRC2_NG_EXP - [11:10] */
6243#define ARIZONA_DRC2_NG_EXP_WIDTH 2 /* DRC2_NG_EXP - [11:10] */
6244#define ARIZONA_DRC2_QR_THR_MASK 0x0300 /* DRC2_QR_THR - [9:8] */
6245#define ARIZONA_DRC2_QR_THR_SHIFT 8 /* DRC2_QR_THR - [9:8] */
6246#define ARIZONA_DRC2_QR_THR_WIDTH 2 /* DRC2_QR_THR - [9:8] */
6247#define ARIZONA_DRC2_QR_DCY_MASK 0x00C0 /* DRC2_QR_DCY - [7:6] */
6248#define ARIZONA_DRC2_QR_DCY_SHIFT 6 /* DRC2_QR_DCY - [7:6] */
6249#define ARIZONA_DRC2_QR_DCY_WIDTH 2 /* DRC2_QR_DCY - [7:6] */
6250#define ARIZONA_DRC2_HI_COMP_MASK 0x0038 /* DRC2_HI_COMP - [5:3] */
6251#define ARIZONA_DRC2_HI_COMP_SHIFT 3 /* DRC2_HI_COMP - [5:3] */
6252#define ARIZONA_DRC2_HI_COMP_WIDTH 3 /* DRC2_HI_COMP - [5:3] */
6253#define ARIZONA_DRC2_LO_COMP_MASK 0x0007 /* DRC2_LO_COMP - [2:0] */
6254#define ARIZONA_DRC2_LO_COMP_SHIFT 0 /* DRC2_LO_COMP - [2:0] */
6255#define ARIZONA_DRC2_LO_COMP_WIDTH 3 /* DRC2_LO_COMP - [2:0] */
6256
6257/*
6258 * R3724 (0xE8C) - DRC2 ctrl4
6259 */
6260#define ARIZONA_DRC2_KNEE_IP_MASK 0x07E0 /* DRC2_KNEE_IP - [10:5] */
6261#define ARIZONA_DRC2_KNEE_IP_SHIFT 5 /* DRC2_KNEE_IP - [10:5] */
6262#define ARIZONA_DRC2_KNEE_IP_WIDTH 6 /* DRC2_KNEE_IP - [10:5] */
6263#define ARIZONA_DRC2_KNEE_OP_MASK 0x001F /* DRC2_KNEE_OP - [4:0] */
6264#define ARIZONA_DRC2_KNEE_OP_SHIFT 0 /* DRC2_KNEE_OP - [4:0] */
6265#define ARIZONA_DRC2_KNEE_OP_WIDTH 5 /* DRC2_KNEE_OP - [4:0] */
6266
6267/*
6268 * R3725 (0xE8D) - DRC2 ctrl5
6269 */
6270#define ARIZONA_DRC2_KNEE2_IP_MASK 0x03E0 /* DRC2_KNEE2_IP - [9:5] */
6271#define ARIZONA_DRC2_KNEE2_IP_SHIFT 5 /* DRC2_KNEE2_IP - [9:5] */
6272#define ARIZONA_DRC2_KNEE2_IP_WIDTH 5 /* DRC2_KNEE2_IP - [9:5] */
6273#define ARIZONA_DRC2_KNEE2_OP_MASK 0x001F /* DRC2_KNEE2_OP - [4:0] */
6274#define ARIZONA_DRC2_KNEE2_OP_SHIFT 0 /* DRC2_KNEE2_OP - [4:0] */
6275#define ARIZONA_DRC2_KNEE2_OP_WIDTH 5 /* DRC2_KNEE2_OP - [4:0] */
6276
6277/*
6278 * R3776 (0xEC0) - HPLPF1_1
6279 */
6280#define ARIZONA_LHPF1_MODE 0x0002 /* LHPF1_MODE */
6281#define ARIZONA_LHPF1_MODE_MASK 0x0002 /* LHPF1_MODE */
6282#define ARIZONA_LHPF1_MODE_SHIFT 1 /* LHPF1_MODE */
6283#define ARIZONA_LHPF1_MODE_WIDTH 1 /* LHPF1_MODE */
6284#define ARIZONA_LHPF1_ENA 0x0001 /* LHPF1_ENA */
6285#define ARIZONA_LHPF1_ENA_MASK 0x0001 /* LHPF1_ENA */
6286#define ARIZONA_LHPF1_ENA_SHIFT 0 /* LHPF1_ENA */
6287#define ARIZONA_LHPF1_ENA_WIDTH 1 /* LHPF1_ENA */
6288
6289/*
6290 * R3777 (0xEC1) - HPLPF1_2
6291 */
6292#define ARIZONA_LHPF1_COEFF_MASK 0xFFFF /* LHPF1_COEFF - [15:0] */
6293#define ARIZONA_LHPF1_COEFF_SHIFT 0 /* LHPF1_COEFF - [15:0] */
6294#define ARIZONA_LHPF1_COEFF_WIDTH 16 /* LHPF1_COEFF - [15:0] */
6295
6296/*
6297 * R3780 (0xEC4) - HPLPF2_1
6298 */
6299#define ARIZONA_LHPF2_MODE 0x0002 /* LHPF2_MODE */
6300#define ARIZONA_LHPF2_MODE_MASK 0x0002 /* LHPF2_MODE */
6301#define ARIZONA_LHPF2_MODE_SHIFT 1 /* LHPF2_MODE */
6302#define ARIZONA_LHPF2_MODE_WIDTH 1 /* LHPF2_MODE */
6303#define ARIZONA_LHPF2_ENA 0x0001 /* LHPF2_ENA */
6304#define ARIZONA_LHPF2_ENA_MASK 0x0001 /* LHPF2_ENA */
6305#define ARIZONA_LHPF2_ENA_SHIFT 0 /* LHPF2_ENA */
6306#define ARIZONA_LHPF2_ENA_WIDTH 1 /* LHPF2_ENA */
6307
6308/*
6309 * R3781 (0xEC5) - HPLPF2_2
6310 */
6311#define ARIZONA_LHPF2_COEFF_MASK 0xFFFF /* LHPF2_COEFF - [15:0] */
6312#define ARIZONA_LHPF2_COEFF_SHIFT 0 /* LHPF2_COEFF - [15:0] */
6313#define ARIZONA_LHPF2_COEFF_WIDTH 16 /* LHPF2_COEFF - [15:0] */
6314
6315/*
6316 * R3784 (0xEC8) - HPLPF3_1
6317 */
6318#define ARIZONA_LHPF3_MODE 0x0002 /* LHPF3_MODE */
6319#define ARIZONA_LHPF3_MODE_MASK 0x0002 /* LHPF3_MODE */
6320#define ARIZONA_LHPF3_MODE_SHIFT 1 /* LHPF3_MODE */
6321#define ARIZONA_LHPF3_MODE_WIDTH 1 /* LHPF3_MODE */
6322#define ARIZONA_LHPF3_ENA 0x0001 /* LHPF3_ENA */
6323#define ARIZONA_LHPF3_ENA_MASK 0x0001 /* LHPF3_ENA */
6324#define ARIZONA_LHPF3_ENA_SHIFT 0 /* LHPF3_ENA */
6325#define ARIZONA_LHPF3_ENA_WIDTH 1 /* LHPF3_ENA */
6326
6327/*
6328 * R3785 (0xEC9) - HPLPF3_2
6329 */
6330#define ARIZONA_LHPF3_COEFF_MASK 0xFFFF /* LHPF3_COEFF - [15:0] */
6331#define ARIZONA_LHPF3_COEFF_SHIFT 0 /* LHPF3_COEFF - [15:0] */
6332#define ARIZONA_LHPF3_COEFF_WIDTH 16 /* LHPF3_COEFF - [15:0] */
6333
6334/*
6335 * R3788 (0xECC) - HPLPF4_1
6336 */
6337#define ARIZONA_LHPF4_MODE 0x0002 /* LHPF4_MODE */
6338#define ARIZONA_LHPF4_MODE_MASK 0x0002 /* LHPF4_MODE */
6339#define ARIZONA_LHPF4_MODE_SHIFT 1 /* LHPF4_MODE */
6340#define ARIZONA_LHPF4_MODE_WIDTH 1 /* LHPF4_MODE */
6341#define ARIZONA_LHPF4_ENA 0x0001 /* LHPF4_ENA */
6342#define ARIZONA_LHPF4_ENA_MASK 0x0001 /* LHPF4_ENA */
6343#define ARIZONA_LHPF4_ENA_SHIFT 0 /* LHPF4_ENA */
6344#define ARIZONA_LHPF4_ENA_WIDTH 1 /* LHPF4_ENA */
6345
6346/*
6347 * R3789 (0xECD) - HPLPF4_2
6348 */
6349#define ARIZONA_LHPF4_COEFF_MASK 0xFFFF /* LHPF4_COEFF - [15:0] */
6350#define ARIZONA_LHPF4_COEFF_SHIFT 0 /* LHPF4_COEFF - [15:0] */
6351#define ARIZONA_LHPF4_COEFF_WIDTH 16 /* LHPF4_COEFF - [15:0] */
6352
6353/*
6354 * R3808 (0xEE0) - ASRC_ENABLE
6355 */
6356#define ARIZONA_ASRC2L_ENA 0x0008 /* ASRC2L_ENA */
6357#define ARIZONA_ASRC2L_ENA_MASK 0x0008 /* ASRC2L_ENA */
6358#define ARIZONA_ASRC2L_ENA_SHIFT 3 /* ASRC2L_ENA */
6359#define ARIZONA_ASRC2L_ENA_WIDTH 1 /* ASRC2L_ENA */
6360#define ARIZONA_ASRC2R_ENA 0x0004 /* ASRC2R_ENA */
6361#define ARIZONA_ASRC2R_ENA_MASK 0x0004 /* ASRC2R_ENA */
6362#define ARIZONA_ASRC2R_ENA_SHIFT 2 /* ASRC2R_ENA */
6363#define ARIZONA_ASRC2R_ENA_WIDTH 1 /* ASRC2R_ENA */
6364#define ARIZONA_ASRC1L_ENA 0x0002 /* ASRC1L_ENA */
6365#define ARIZONA_ASRC1L_ENA_MASK 0x0002 /* ASRC1L_ENA */
6366#define ARIZONA_ASRC1L_ENA_SHIFT 1 /* ASRC1L_ENA */
6367#define ARIZONA_ASRC1L_ENA_WIDTH 1 /* ASRC1L_ENA */
6368#define ARIZONA_ASRC1R_ENA 0x0001 /* ASRC1R_ENA */
6369#define ARIZONA_ASRC1R_ENA_MASK 0x0001 /* ASRC1R_ENA */
6370#define ARIZONA_ASRC1R_ENA_SHIFT 0 /* ASRC1R_ENA */
6371#define ARIZONA_ASRC1R_ENA_WIDTH 1 /* ASRC1R_ENA */
6372
6373/*
6374 * R3810 (0xEE2) - ASRC_RATE1
6375 */
6376#define ARIZONA_ASRC_RATE1_MASK 0x7800 /* ASRC_RATE1 - [14:11] */
6377#define ARIZONA_ASRC_RATE1_SHIFT 11 /* ASRC_RATE1 - [14:11] */
6378#define ARIZONA_ASRC_RATE1_WIDTH 4 /* ASRC_RATE1 - [14:11] */
6379
6380/*
6381 * R3811 (0xEE3) - ASRC_RATE2
6382 */
6383#define ARIZONA_ASRC_RATE2_MASK 0x7800 /* ASRC_RATE2 - [14:11] */
6384#define ARIZONA_ASRC_RATE2_SHIFT 11 /* ASRC_RATE2 - [14:11] */
6385#define ARIZONA_ASRC_RATE2_WIDTH 4 /* ASRC_RATE2 - [14:11] */
6386
6387/*
6388 * R3824 (0xEF0) - ISRC 1 CTRL 1
6389 */
6390#define ARIZONA_ISRC1_FSH_MASK 0x7800 /* ISRC1_FSH - [14:11] */
6391#define ARIZONA_ISRC1_FSH_SHIFT 11 /* ISRC1_FSH - [14:11] */
6392#define ARIZONA_ISRC1_FSH_WIDTH 4 /* ISRC1_FSH - [14:11] */
6393#define ARIZONA_ISRC1_CLK_SEL_MASK 0x0700 /* ISRC1_CLK_SEL - [10:8] */
6394#define ARIZONA_ISRC1_CLK_SEL_SHIFT 8 /* ISRC1_CLK_SEL - [10:8] */
6395#define ARIZONA_ISRC1_CLK_SEL_WIDTH 3 /* ISRC1_CLK_SEL - [10:8] */
6396
6397/*
6398 * R3825 (0xEF1) - ISRC 1 CTRL 2
6399 */
6400#define ARIZONA_ISRC1_FSL_MASK 0x7800 /* ISRC1_FSL - [14:11] */
6401#define ARIZONA_ISRC1_FSL_SHIFT 11 /* ISRC1_FSL - [14:11] */
6402#define ARIZONA_ISRC1_FSL_WIDTH 4 /* ISRC1_FSL - [14:11] */
6403
6404/*
6405 * R3826 (0xEF2) - ISRC 1 CTRL 3
6406 */
6407#define ARIZONA_ISRC1_INT0_ENA 0x8000 /* ISRC1_INT0_ENA */
6408#define ARIZONA_ISRC1_INT0_ENA_MASK 0x8000 /* ISRC1_INT0_ENA */
6409#define ARIZONA_ISRC1_INT0_ENA_SHIFT 15 /* ISRC1_INT0_ENA */
6410#define ARIZONA_ISRC1_INT0_ENA_WIDTH 1 /* ISRC1_INT0_ENA */
6411#define ARIZONA_ISRC1_INT1_ENA 0x4000 /* ISRC1_INT1_ENA */
6412#define ARIZONA_ISRC1_INT1_ENA_MASK 0x4000 /* ISRC1_INT1_ENA */
6413#define ARIZONA_ISRC1_INT1_ENA_SHIFT 14 /* ISRC1_INT1_ENA */
6414#define ARIZONA_ISRC1_INT1_ENA_WIDTH 1 /* ISRC1_INT1_ENA */
6415#define ARIZONA_ISRC1_INT2_ENA 0x2000 /* ISRC1_INT2_ENA */
6416#define ARIZONA_ISRC1_INT2_ENA_MASK 0x2000 /* ISRC1_INT2_ENA */
6417#define ARIZONA_ISRC1_INT2_ENA_SHIFT 13 /* ISRC1_INT2_ENA */
6418#define ARIZONA_ISRC1_INT2_ENA_WIDTH 1 /* ISRC1_INT2_ENA */
6419#define ARIZONA_ISRC1_INT3_ENA 0x1000 /* ISRC1_INT3_ENA */
6420#define ARIZONA_ISRC1_INT3_ENA_MASK 0x1000 /* ISRC1_INT3_ENA */
6421#define ARIZONA_ISRC1_INT3_ENA_SHIFT 12 /* ISRC1_INT3_ENA */
6422#define ARIZONA_ISRC1_INT3_ENA_WIDTH 1 /* ISRC1_INT3_ENA */
6423#define ARIZONA_ISRC1_DEC0_ENA 0x0200 /* ISRC1_DEC0_ENA */
6424#define ARIZONA_ISRC1_DEC0_ENA_MASK 0x0200 /* ISRC1_DEC0_ENA */
6425#define ARIZONA_ISRC1_DEC0_ENA_SHIFT 9 /* ISRC1_DEC0_ENA */
6426#define ARIZONA_ISRC1_DEC0_ENA_WIDTH 1 /* ISRC1_DEC0_ENA */
6427#define ARIZONA_ISRC1_DEC1_ENA 0x0100 /* ISRC1_DEC1_ENA */
6428#define ARIZONA_ISRC1_DEC1_ENA_MASK 0x0100 /* ISRC1_DEC1_ENA */
6429#define ARIZONA_ISRC1_DEC1_ENA_SHIFT 8 /* ISRC1_DEC1_ENA */
6430#define ARIZONA_ISRC1_DEC1_ENA_WIDTH 1 /* ISRC1_DEC1_ENA */
6431#define ARIZONA_ISRC1_DEC2_ENA 0x0080 /* ISRC1_DEC2_ENA */
6432#define ARIZONA_ISRC1_DEC2_ENA_MASK 0x0080 /* ISRC1_DEC2_ENA */
6433#define ARIZONA_ISRC1_DEC2_ENA_SHIFT 7 /* ISRC1_DEC2_ENA */
6434#define ARIZONA_ISRC1_DEC2_ENA_WIDTH 1 /* ISRC1_DEC2_ENA */
6435#define ARIZONA_ISRC1_DEC3_ENA 0x0040 /* ISRC1_DEC3_ENA */
6436#define ARIZONA_ISRC1_DEC3_ENA_MASK 0x0040 /* ISRC1_DEC3_ENA */
6437#define ARIZONA_ISRC1_DEC3_ENA_SHIFT 6 /* ISRC1_DEC3_ENA */
6438#define ARIZONA_ISRC1_DEC3_ENA_WIDTH 1 /* ISRC1_DEC3_ENA */
6439#define ARIZONA_ISRC1_NOTCH_ENA 0x0001 /* ISRC1_NOTCH_ENA */
6440#define ARIZONA_ISRC1_NOTCH_ENA_MASK 0x0001 /* ISRC1_NOTCH_ENA */
6441#define ARIZONA_ISRC1_NOTCH_ENA_SHIFT 0 /* ISRC1_NOTCH_ENA */
6442#define ARIZONA_ISRC1_NOTCH_ENA_WIDTH 1 /* ISRC1_NOTCH_ENA */
6443
6444/*
6445 * R3827 (0xEF3) - ISRC 2 CTRL 1
6446 */
6447#define ARIZONA_ISRC2_FSH_MASK 0x7800 /* ISRC2_FSH - [14:11] */
6448#define ARIZONA_ISRC2_FSH_SHIFT 11 /* ISRC2_FSH - [14:11] */
6449#define ARIZONA_ISRC2_FSH_WIDTH 4 /* ISRC2_FSH - [14:11] */
6450#define ARIZONA_ISRC2_CLK_SEL_MASK 0x0700 /* ISRC2_CLK_SEL - [10:8] */
6451#define ARIZONA_ISRC2_CLK_SEL_SHIFT 8 /* ISRC2_CLK_SEL - [10:8] */
6452#define ARIZONA_ISRC2_CLK_SEL_WIDTH 3 /* ISRC2_CLK_SEL - [10:8] */
6453
6454/*
6455 * R3828 (0xEF4) - ISRC 2 CTRL 2
6456 */
6457#define ARIZONA_ISRC2_FSL_MASK 0x7800 /* ISRC2_FSL - [14:11] */
6458#define ARIZONA_ISRC2_FSL_SHIFT 11 /* ISRC2_FSL - [14:11] */
6459#define ARIZONA_ISRC2_FSL_WIDTH 4 /* ISRC2_FSL - [14:11] */
6460
6461/*
6462 * R3829 (0xEF5) - ISRC 2 CTRL 3
6463 */
6464#define ARIZONA_ISRC2_INT0_ENA 0x8000 /* ISRC2_INT0_ENA */
6465#define ARIZONA_ISRC2_INT0_ENA_MASK 0x8000 /* ISRC2_INT0_ENA */
6466#define ARIZONA_ISRC2_INT0_ENA_SHIFT 15 /* ISRC2_INT0_ENA */
6467#define ARIZONA_ISRC2_INT0_ENA_WIDTH 1 /* ISRC2_INT0_ENA */
6468#define ARIZONA_ISRC2_INT1_ENA 0x4000 /* ISRC2_INT1_ENA */
6469#define ARIZONA_ISRC2_INT1_ENA_MASK 0x4000 /* ISRC2_INT1_ENA */
6470#define ARIZONA_ISRC2_INT1_ENA_SHIFT 14 /* ISRC2_INT1_ENA */
6471#define ARIZONA_ISRC2_INT1_ENA_WIDTH 1 /* ISRC2_INT1_ENA */
6472#define ARIZONA_ISRC2_INT2_ENA 0x2000 /* ISRC2_INT2_ENA */
6473#define ARIZONA_ISRC2_INT2_ENA_MASK 0x2000 /* ISRC2_INT2_ENA */
6474#define ARIZONA_ISRC2_INT2_ENA_SHIFT 13 /* ISRC2_INT2_ENA */
6475#define ARIZONA_ISRC2_INT2_ENA_WIDTH 1 /* ISRC2_INT2_ENA */
6476#define ARIZONA_ISRC2_INT3_ENA 0x1000 /* ISRC2_INT3_ENA */
6477#define ARIZONA_ISRC2_INT3_ENA_MASK 0x1000 /* ISRC2_INT3_ENA */
6478#define ARIZONA_ISRC2_INT3_ENA_SHIFT 12 /* ISRC2_INT3_ENA */
6479#define ARIZONA_ISRC2_INT3_ENA_WIDTH 1 /* ISRC2_INT3_ENA */
6480#define ARIZONA_ISRC2_DEC0_ENA 0x0200 /* ISRC2_DEC0_ENA */
6481#define ARIZONA_ISRC2_DEC0_ENA_MASK 0x0200 /* ISRC2_DEC0_ENA */
6482#define ARIZONA_ISRC2_DEC0_ENA_SHIFT 9 /* ISRC2_DEC0_ENA */
6483#define ARIZONA_ISRC2_DEC0_ENA_WIDTH 1 /* ISRC2_DEC0_ENA */
6484#define ARIZONA_ISRC2_DEC1_ENA 0x0100 /* ISRC2_DEC1_ENA */
6485#define ARIZONA_ISRC2_DEC1_ENA_MASK 0x0100 /* ISRC2_DEC1_ENA */
6486#define ARIZONA_ISRC2_DEC1_ENA_SHIFT 8 /* ISRC2_DEC1_ENA */
6487#define ARIZONA_ISRC2_DEC1_ENA_WIDTH 1 /* ISRC2_DEC1_ENA */
6488#define ARIZONA_ISRC2_DEC2_ENA 0x0080 /* ISRC2_DEC2_ENA */
6489#define ARIZONA_ISRC2_DEC2_ENA_MASK 0x0080 /* ISRC2_DEC2_ENA */
6490#define ARIZONA_ISRC2_DEC2_ENA_SHIFT 7 /* ISRC2_DEC2_ENA */
6491#define ARIZONA_ISRC2_DEC2_ENA_WIDTH 1 /* ISRC2_DEC2_ENA */
6492#define ARIZONA_ISRC2_DEC3_ENA 0x0040 /* ISRC2_DEC3_ENA */
6493#define ARIZONA_ISRC2_DEC3_ENA_MASK 0x0040 /* ISRC2_DEC3_ENA */
6494#define ARIZONA_ISRC2_DEC3_ENA_SHIFT 6 /* ISRC2_DEC3_ENA */
6495#define ARIZONA_ISRC2_DEC3_ENA_WIDTH 1 /* ISRC2_DEC3_ENA */
6496#define ARIZONA_ISRC2_NOTCH_ENA 0x0001 /* ISRC2_NOTCH_ENA */
6497#define ARIZONA_ISRC2_NOTCH_ENA_MASK 0x0001 /* ISRC2_NOTCH_ENA */
6498#define ARIZONA_ISRC2_NOTCH_ENA_SHIFT 0 /* ISRC2_NOTCH_ENA */
6499#define ARIZONA_ISRC2_NOTCH_ENA_WIDTH 1 /* ISRC2_NOTCH_ENA */
6500
6501/*
6502 * R3830 (0xEF6) - ISRC 3 CTRL 1
6503 */
6504#define ARIZONA_ISRC3_FSH_MASK 0x7800 /* ISRC3_FSH - [14:11] */
6505#define ARIZONA_ISRC3_FSH_SHIFT 11 /* ISRC3_FSH - [14:11] */
6506#define ARIZONA_ISRC3_FSH_WIDTH 4 /* ISRC3_FSH - [14:11] */
6507#define ARIZONA_ISRC3_CLK_SEL_MASK 0x0700 /* ISRC3_CLK_SEL - [10:8] */
6508#define ARIZONA_ISRC3_CLK_SEL_SHIFT 8 /* ISRC3_CLK_SEL - [10:8] */
6509#define ARIZONA_ISRC3_CLK_SEL_WIDTH 3 /* ISRC3_CLK_SEL - [10:8] */
6510
6511/*
6512 * R3831 (0xEF7) - ISRC 3 CTRL 2
6513 */
6514#define ARIZONA_ISRC3_FSL_MASK 0x7800 /* ISRC3_FSL - [14:11] */
6515#define ARIZONA_ISRC3_FSL_SHIFT 11 /* ISRC3_FSL - [14:11] */
6516#define ARIZONA_ISRC3_FSL_WIDTH 4 /* ISRC3_FSL - [14:11] */
6517
6518/*
6519 * R3832 (0xEF8) - ISRC 3 CTRL 3
6520 */
6521#define ARIZONA_ISRC3_INT0_ENA 0x8000 /* ISRC3_INT0_ENA */
6522#define ARIZONA_ISRC3_INT0_ENA_MASK 0x8000 /* ISRC3_INT0_ENA */
6523#define ARIZONA_ISRC3_INT0_ENA_SHIFT 15 /* ISRC3_INT0_ENA */
6524#define ARIZONA_ISRC3_INT0_ENA_WIDTH 1 /* ISRC3_INT0_ENA */
6525#define ARIZONA_ISRC3_INT1_ENA 0x4000 /* ISRC3_INT1_ENA */
6526#define ARIZONA_ISRC3_INT1_ENA_MASK 0x4000 /* ISRC3_INT1_ENA */
6527#define ARIZONA_ISRC3_INT1_ENA_SHIFT 14 /* ISRC3_INT1_ENA */
6528#define ARIZONA_ISRC3_INT1_ENA_WIDTH 1 /* ISRC3_INT1_ENA */
6529#define ARIZONA_ISRC3_INT2_ENA 0x2000 /* ISRC3_INT2_ENA */
6530#define ARIZONA_ISRC3_INT2_ENA_MASK 0x2000 /* ISRC3_INT2_ENA */
6531#define ARIZONA_ISRC3_INT2_ENA_SHIFT 13 /* ISRC3_INT2_ENA */
6532#define ARIZONA_ISRC3_INT2_ENA_WIDTH 1 /* ISRC3_INT2_ENA */
6533#define ARIZONA_ISRC3_INT3_ENA 0x1000 /* ISRC3_INT3_ENA */
6534#define ARIZONA_ISRC3_INT3_ENA_MASK 0x1000 /* ISRC3_INT3_ENA */
6535#define ARIZONA_ISRC3_INT3_ENA_SHIFT 12 /* ISRC3_INT3_ENA */
6536#define ARIZONA_ISRC3_INT3_ENA_WIDTH 1 /* ISRC3_INT3_ENA */
6537#define ARIZONA_ISRC3_DEC0_ENA 0x0200 /* ISRC3_DEC0_ENA */
6538#define ARIZONA_ISRC3_DEC0_ENA_MASK 0x0200 /* ISRC3_DEC0_ENA */
6539#define ARIZONA_ISRC3_DEC0_ENA_SHIFT 9 /* ISRC3_DEC0_ENA */
6540#define ARIZONA_ISRC3_DEC0_ENA_WIDTH 1 /* ISRC3_DEC0_ENA */
6541#define ARIZONA_ISRC3_DEC1_ENA 0x0100 /* ISRC3_DEC1_ENA */
6542#define ARIZONA_ISRC3_DEC1_ENA_MASK 0x0100 /* ISRC3_DEC1_ENA */
6543#define ARIZONA_ISRC3_DEC1_ENA_SHIFT 8 /* ISRC3_DEC1_ENA */
6544#define ARIZONA_ISRC3_DEC1_ENA_WIDTH 1 /* ISRC3_DEC1_ENA */
6545#define ARIZONA_ISRC3_DEC2_ENA 0x0080 /* ISRC3_DEC2_ENA */
6546#define ARIZONA_ISRC3_DEC2_ENA_MASK 0x0080 /* ISRC3_DEC2_ENA */
6547#define ARIZONA_ISRC3_DEC2_ENA_SHIFT 7 /* ISRC3_DEC2_ENA */
6548#define ARIZONA_ISRC3_DEC2_ENA_WIDTH 1 /* ISRC3_DEC2_ENA */
6549#define ARIZONA_ISRC3_DEC3_ENA 0x0040 /* ISRC3_DEC3_ENA */
6550#define ARIZONA_ISRC3_DEC3_ENA_MASK 0x0040 /* ISRC3_DEC3_ENA */
6551#define ARIZONA_ISRC3_DEC3_ENA_SHIFT 6 /* ISRC3_DEC3_ENA */
6552#define ARIZONA_ISRC3_DEC3_ENA_WIDTH 1 /* ISRC3_DEC3_ENA */
6553#define ARIZONA_ISRC3_NOTCH_ENA 0x0001 /* ISRC3_NOTCH_ENA */
6554#define ARIZONA_ISRC3_NOTCH_ENA_MASK 0x0001 /* ISRC3_NOTCH_ENA */
6555#define ARIZONA_ISRC3_NOTCH_ENA_SHIFT 0 /* ISRC3_NOTCH_ENA */
6556#define ARIZONA_ISRC3_NOTCH_ENA_WIDTH 1 /* ISRC3_NOTCH_ENA */
6557
6558/*
6559 * R4352 (0x1100) - DSP1 Control 1
6560 */
6561#define ARIZONA_DSP1_RATE_MASK 0x7800 /* DSP1_RATE - [14:11] */
6562#define ARIZONA_DSP1_RATE_SHIFT 11 /* DSP1_RATE - [14:11] */
6563#define ARIZONA_DSP1_RATE_WIDTH 4 /* DSP1_RATE - [14:11] */
6564#define ARIZONA_DSP1_MEM_ENA 0x0010 /* DSP1_MEM_ENA */
6565#define ARIZONA_DSP1_MEM_ENA_MASK 0x0010 /* DSP1_MEM_ENA */
6566#define ARIZONA_DSP1_MEM_ENA_SHIFT 4 /* DSP1_MEM_ENA */
6567#define ARIZONA_DSP1_MEM_ENA_WIDTH 1 /* DSP1_MEM_ENA */
6568#define ARIZONA_DSP1_SYS_ENA 0x0004 /* DSP1_SYS_ENA */
6569#define ARIZONA_DSP1_SYS_ENA_MASK 0x0004 /* DSP1_SYS_ENA */
6570#define ARIZONA_DSP1_SYS_ENA_SHIFT 2 /* DSP1_SYS_ENA */
6571#define ARIZONA_DSP1_SYS_ENA_WIDTH 1 /* DSP1_SYS_ENA */
6572#define ARIZONA_DSP1_CORE_ENA 0x0002 /* DSP1_CORE_ENA */
6573#define ARIZONA_DSP1_CORE_ENA_MASK 0x0002 /* DSP1_CORE_ENA */
6574#define ARIZONA_DSP1_CORE_ENA_SHIFT 1 /* DSP1_CORE_ENA */
6575#define ARIZONA_DSP1_CORE_ENA_WIDTH 1 /* DSP1_CORE_ENA */
6576#define ARIZONA_DSP1_START 0x0001 /* DSP1_START */
6577#define ARIZONA_DSP1_START_MASK 0x0001 /* DSP1_START */
6578#define ARIZONA_DSP1_START_SHIFT 0 /* DSP1_START */
6579#define ARIZONA_DSP1_START_WIDTH 1 /* DSP1_START */
6580
6581/*
6582 * R4353 (0x1101) - DSP1 Clocking 1
6583 */
6584#define ARIZONA_DSP1_CLK_SEL_MASK 0x0007 /* DSP1_CLK_SEL - [2:0] */
6585#define ARIZONA_DSP1_CLK_SEL_SHIFT 0 /* DSP1_CLK_SEL - [2:0] */
6586#define ARIZONA_DSP1_CLK_SEL_WIDTH 3 /* DSP1_CLK_SEL - [2:0] */
6587
6588/*
6589 * R4356 (0x1104) - DSP1 Status 1
6590 */
6591#define ARIZONA_DSP1_RAM_RDY 0x0001 /* DSP1_RAM_RDY */
6592#define ARIZONA_DSP1_RAM_RDY_MASK 0x0001 /* DSP1_RAM_RDY */
6593#define ARIZONA_DSP1_RAM_RDY_SHIFT 0 /* DSP1_RAM_RDY */
6594#define ARIZONA_DSP1_RAM_RDY_WIDTH 1 /* DSP1_RAM_RDY */
6595
6596/*
6597 * R4357 (0x1105) - DSP1 Status 2
6598 */
6599#define ARIZONA_DSP1_PING_FULL 0x8000 /* DSP1_PING_FULL */
6600#define ARIZONA_DSP1_PING_FULL_MASK 0x8000 /* DSP1_PING_FULL */
6601#define ARIZONA_DSP1_PING_FULL_SHIFT 15 /* DSP1_PING_FULL */
6602#define ARIZONA_DSP1_PING_FULL_WIDTH 1 /* DSP1_PING_FULL */
6603#define ARIZONA_DSP1_PONG_FULL 0x4000 /* DSP1_PONG_FULL */
6604#define ARIZONA_DSP1_PONG_FULL_MASK 0x4000 /* DSP1_PONG_FULL */
6605#define ARIZONA_DSP1_PONG_FULL_SHIFT 14 /* DSP1_PONG_FULL */
6606#define ARIZONA_DSP1_PONG_FULL_WIDTH 1 /* DSP1_PONG_FULL */
6607#define ARIZONA_DSP1_WDMA_ACTIVE_CHANNELS_MASK 0x00FF /* DSP1_WDMA_ACTIVE_CHANNELS - [7:0] */
6608#define ARIZONA_DSP1_WDMA_ACTIVE_CHANNELS_SHIFT 0 /* DSP1_WDMA_ACTIVE_CHANNELS - [7:0] */
6609#define ARIZONA_DSP1_WDMA_ACTIVE_CHANNELS_WIDTH 8 /* DSP1_WDMA_ACTIVE_CHANNELS - [7:0] */
6610
6611#endif
diff --git a/include/linux/mfd/as3711.h b/include/linux/mfd/as3711.h
deleted file mode 100644
index 38452ce1e89..00000000000
--- a/include/linux/mfd/as3711.h
+++ /dev/null
@@ -1,126 +0,0 @@
1/*
2 * AS3711 PMIC MFC driver header
3 *
4 * Copyright (C) 2012 Renesas Electronics Corporation
5 * Author: Guennadi Liakhovetski, <g.liakhovetski@gmx.de>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the version 2 of the GNU General Public License as
9 * published by the Free Software Foundation
10 */
11
12#ifndef MFD_AS3711_H
13#define MFD_AS3711_H
14
15/*
16 * Client data
17 */
18
19/* Register addresses */
20#define AS3711_SD_1_VOLTAGE 0 /* Digital Step-Down */
21#define AS3711_SD_2_VOLTAGE 1
22#define AS3711_SD_3_VOLTAGE 2
23#define AS3711_SD_4_VOLTAGE 3
24#define AS3711_LDO_1_VOLTAGE 4 /* Analog LDO */
25#define AS3711_LDO_2_VOLTAGE 5
26#define AS3711_LDO_3_VOLTAGE 6 /* Digital LDO */
27#define AS3711_LDO_4_VOLTAGE 7
28#define AS3711_LDO_5_VOLTAGE 8
29#define AS3711_LDO_6_VOLTAGE 9
30#define AS3711_LDO_7_VOLTAGE 0xa
31#define AS3711_LDO_8_VOLTAGE 0xb
32#define AS3711_SD_CONTROL 0x10
33#define AS3711_GPIO_SIGNAL_OUT 0x20
34#define AS3711_GPIO_SIGNAL_IN 0x21
35#define AS3711_SD_CONTROL_1 0x30
36#define AS3711_SD_CONTROL_2 0x31
37#define AS3711_CURR_CONTROL 0x40
38#define AS3711_CURR1_VALUE 0x43
39#define AS3711_CURR2_VALUE 0x44
40#define AS3711_CURR3_VALUE 0x45
41#define AS3711_STEPUP_CONTROL_1 0x50
42#define AS3711_STEPUP_CONTROL_2 0x51
43#define AS3711_STEPUP_CONTROL_4 0x53
44#define AS3711_STEPUP_CONTROL_5 0x54
45#define AS3711_REG_STATUS 0x73
46#define AS3711_INTERRUPT_STATUS_1 0x77
47#define AS3711_INTERRUPT_STATUS_2 0x78
48#define AS3711_INTERRUPT_STATUS_3 0x79
49#define AS3711_CHARGER_STATUS_1 0x86
50#define AS3711_CHARGER_STATUS_2 0x87
51#define AS3711_ASIC_ID_1 0x90
52#define AS3711_ASIC_ID_2 0x91
53
54#define AS3711_MAX_REGS 0x92
55
56/* Regulators */
57enum {
58 AS3711_REGULATOR_SD_1,
59 AS3711_REGULATOR_SD_2,
60 AS3711_REGULATOR_SD_3,
61 AS3711_REGULATOR_SD_4,
62 AS3711_REGULATOR_LDO_1,
63 AS3711_REGULATOR_LDO_2,
64 AS3711_REGULATOR_LDO_3,
65 AS3711_REGULATOR_LDO_4,
66 AS3711_REGULATOR_LDO_5,
67 AS3711_REGULATOR_LDO_6,
68 AS3711_REGULATOR_LDO_7,
69 AS3711_REGULATOR_LDO_8,
70
71 AS3711_REGULATOR_MAX,
72};
73
74struct device;
75struct regmap;
76
77struct as3711 {
78 struct device *dev;
79 struct regmap *regmap;
80};
81
82#define AS3711_MAX_STEPDOWN 4
83#define AS3711_MAX_STEPUP 2
84#define AS3711_MAX_LDO 8
85
86enum as3711_su2_feedback {
87 AS3711_SU2_VOLTAGE,
88 AS3711_SU2_CURR1,
89 AS3711_SU2_CURR2,
90 AS3711_SU2_CURR3,
91 AS3711_SU2_CURR_AUTO,
92};
93
94enum as3711_su2_fbprot {
95 AS3711_SU2_LX_SD4,
96 AS3711_SU2_GPIO2,
97 AS3711_SU2_GPIO3,
98 AS3711_SU2_GPIO4,
99};
100
101/*
102 * Platform data
103 */
104
105struct as3711_regulator_pdata {
106 struct regulator_init_data *init_data[AS3711_REGULATOR_MAX];
107};
108
109struct as3711_bl_pdata {
110 const char *su1_fb;
111 int su1_max_uA;
112 const char *su2_fb;
113 int su2_max_uA;
114 enum as3711_su2_feedback su2_feedback;
115 enum as3711_su2_fbprot su2_fbprot;
116 bool su2_auto_curr1;
117 bool su2_auto_curr2;
118 bool su2_auto_curr3;
119};
120
121struct as3711_platform_data {
122 struct as3711_regulator_pdata regulator;
123 struct as3711_bl_pdata backlight;
124};
125
126#endif
diff --git a/include/linux/mfd/asic3.h b/include/linux/mfd/asic3.h
index e1148d037e7..ed793b77a1c 100644
--- a/include/linux/mfd/asic3.h
+++ b/include/linux/mfd/asic3.h
@@ -31,8 +31,6 @@ struct asic3_platform_data {
31 31
32 unsigned int gpio_base; 32 unsigned int gpio_base;
33 33
34 unsigned int clock_rate;
35
36 struct asic3_led *leds; 34 struct asic3_led *leds;
37}; 35};
38 36
@@ -140,7 +138,6 @@ struct asic3_platform_data {
140#define ASIC3_GPIOC13_nPWAIT ASIC3_CONFIG_GPIO(45, 1, 1, 0) 138#define ASIC3_GPIOC13_nPWAIT ASIC3_CONFIG_GPIO(45, 1, 1, 0)
141#define ASIC3_GPIOC14_nPIOIS16 ASIC3_CONFIG_GPIO(46, 1, 1, 0) 139#define ASIC3_GPIOC14_nPIOIS16 ASIC3_CONFIG_GPIO(46, 1, 1, 0)
142#define ASIC3_GPIOC15_nPIOR ASIC3_CONFIG_GPIO(47, 1, 0, 0) 140#define ASIC3_GPIOC15_nPIOR ASIC3_CONFIG_GPIO(47, 1, 0, 0)
143#define ASIC3_GPIOD4_CF_nCD ASIC3_CONFIG_GPIO(52, 1, 0, 0)
144#define ASIC3_GPIOD11_nCIOIS16 ASIC3_CONFIG_GPIO(59, 1, 0, 0) 141#define ASIC3_GPIOD11_nCIOIS16 ASIC3_CONFIG_GPIO(59, 1, 0, 0)
145#define ASIC3_GPIOD12_nCWAIT ASIC3_CONFIG_GPIO(60, 1, 0, 0) 142#define ASIC3_GPIOD12_nCWAIT ASIC3_CONFIG_GPIO(60, 1, 0, 0)
146#define ASIC3_GPIOD15_nPIOW ASIC3_CONFIG_GPIO(63, 1, 0, 0) 143#define ASIC3_GPIOD15_nPIOW ASIC3_CONFIG_GPIO(63, 1, 0, 0)
diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h
index cebe97ee98b..4e76163dd86 100644
--- a/include/linux/mfd/core.h
+++ b/include/linux/mfd/core.h
@@ -16,8 +16,6 @@
16 16
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18 18
19struct irq_domain;
20
21/* 19/*
22 * This struct describes the MFD part ("cell"). 20 * This struct describes the MFD part ("cell").
23 * After registration the copy of this structure will become the platform data 21 * After registration the copy of this structure will become the platform data
@@ -38,11 +36,6 @@ struct mfd_cell {
38 /* platform data passed to the sub devices drivers */ 36 /* platform data passed to the sub devices drivers */
39 void *platform_data; 37 void *platform_data;
40 size_t pdata_size; 38 size_t pdata_size;
41 /*
42 * Device Tree compatible string
43 * See: Documentation/devicetree/usage-model.txt Chapter 2.2 for details
44 */
45 const char *of_compatible;
46 39
47 /* 40 /*
48 * These resources can be specified relative to the parent device. 41 * These resources can be specified relative to the parent device.
@@ -100,7 +93,7 @@ static inline const struct mfd_cell *mfd_get_cell(struct platform_device *pdev)
100extern int mfd_add_devices(struct device *parent, int id, 93extern int mfd_add_devices(struct device *parent, int id,
101 struct mfd_cell *cells, int n_devs, 94 struct mfd_cell *cells, int n_devs,
102 struct resource *mem_base, 95 struct resource *mem_base,
103 int irq_base, struct irq_domain *irq_domain); 96 int irq_base);
104 97
105extern void mfd_remove_devices(struct device *parent); 98extern void mfd_remove_devices(struct device *parent);
106 99
diff --git a/include/linux/mfd/da9052/da9052.h b/include/linux/mfd/da9052/da9052.h
deleted file mode 100644
index 86dd93de6ff..00000000000
--- a/include/linux/mfd/da9052/da9052.h
+++ /dev/null
@@ -1,159 +0,0 @@
1/*
2 * da9052 declarations for DA9052 PMICs.
3 *
4 * Copyright(c) 2011 Dialog Semiconductor Ltd.
5 *
6 * Author: David Dajun Chen <dchen@diasemi.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 */
23
24#ifndef __MFD_DA9052_DA9052_H
25#define __MFD_DA9052_DA9052_H
26
27#include <linux/interrupt.h>
28#include <linux/regmap.h>
29#include <linux/slab.h>
30#include <linux/completion.h>
31#include <linux/list.h>
32#include <linux/mfd/core.h>
33
34#include <linux/mfd/da9052/reg.h>
35
36/* Common - HWMON Channel Definations */
37#define DA9052_ADC_VDDOUT 0
38#define DA9052_ADC_ICH 1
39#define DA9052_ADC_TBAT 2
40#define DA9052_ADC_VBAT 3
41#define DA9052_ADC_IN4 4
42#define DA9052_ADC_IN5 5
43#define DA9052_ADC_IN6 6
44#define DA9052_ADC_TSI 7
45#define DA9052_ADC_TJUNC 8
46#define DA9052_ADC_VBBAT 9
47
48#define DA9052_IRQ_DCIN 0
49#define DA9052_IRQ_VBUS 1
50#define DA9052_IRQ_DCINREM 2
51#define DA9052_IRQ_VBUSREM 3
52#define DA9052_IRQ_VDDLOW 4
53#define DA9052_IRQ_ALARM 5
54#define DA9052_IRQ_SEQRDY 6
55#define DA9052_IRQ_COMP1V2 7
56#define DA9052_IRQ_NONKEY 8
57#define DA9052_IRQ_IDFLOAT 9
58#define DA9052_IRQ_IDGND 10
59#define DA9052_IRQ_CHGEND 11
60#define DA9052_IRQ_TBAT 12
61#define DA9052_IRQ_ADC_EOM 13
62#define DA9052_IRQ_PENDOWN 14
63#define DA9052_IRQ_TSIREADY 15
64#define DA9052_IRQ_GPI0 16
65#define DA9052_IRQ_GPI1 17
66#define DA9052_IRQ_GPI2 18
67#define DA9052_IRQ_GPI3 19
68#define DA9052_IRQ_GPI4 20
69#define DA9052_IRQ_GPI5 21
70#define DA9052_IRQ_GPI6 22
71#define DA9052_IRQ_GPI7 23
72#define DA9052_IRQ_GPI8 24
73#define DA9052_IRQ_GPI9 25
74#define DA9052_IRQ_GPI10 26
75#define DA9052_IRQ_GPI11 27
76#define DA9052_IRQ_GPI12 28
77#define DA9052_IRQ_GPI13 29
78#define DA9052_IRQ_GPI14 30
79#define DA9052_IRQ_GPI15 31
80
81enum da9052_chip_id {
82 DA9052,
83 DA9053_AA,
84 DA9053_BA,
85 DA9053_BB,
86};
87
88struct da9052_pdata;
89
90struct da9052 {
91 struct device *dev;
92 struct regmap *regmap;
93
94 struct mutex auxadc_lock;
95 struct completion done;
96
97 int irq_base;
98 struct regmap_irq_chip_data *irq_data;
99 u8 chip_id;
100
101 int chip_irq;
102};
103
104/* ADC API */
105int da9052_adc_manual_read(struct da9052 *da9052, unsigned char channel);
106int da9052_adc_read_temp(struct da9052 *da9052);
107
108/* Device I/O API */
109static inline int da9052_reg_read(struct da9052 *da9052, unsigned char reg)
110{
111 int val, ret;
112
113 ret = regmap_read(da9052->regmap, reg, &val);
114 if (ret < 0)
115 return ret;
116 return val;
117}
118
119static inline int da9052_reg_write(struct da9052 *da9052, unsigned char reg,
120 unsigned char val)
121{
122 return regmap_write(da9052->regmap, reg, val);
123}
124
125static inline int da9052_group_read(struct da9052 *da9052, unsigned char reg,
126 unsigned reg_cnt, unsigned char *val)
127{
128 return regmap_bulk_read(da9052->regmap, reg, val, reg_cnt);
129}
130
131static inline int da9052_group_write(struct da9052 *da9052, unsigned char reg,
132 unsigned reg_cnt, unsigned char *val)
133{
134 return regmap_raw_write(da9052->regmap, reg, val, reg_cnt);
135}
136
137static inline int da9052_reg_update(struct da9052 *da9052, unsigned char reg,
138 unsigned char bit_mask,
139 unsigned char reg_val)
140{
141 return regmap_update_bits(da9052->regmap, reg, bit_mask, reg_val);
142}
143
144int da9052_device_init(struct da9052 *da9052, u8 chip_id);
145void da9052_device_exit(struct da9052 *da9052);
146
147extern struct regmap_config da9052_regmap_config;
148
149int da9052_irq_init(struct da9052 *da9052);
150int da9052_irq_exit(struct da9052 *da9052);
151int da9052_request_irq(struct da9052 *da9052, int irq, char *name,
152 irq_handler_t handler, void *data);
153void da9052_free_irq(struct da9052 *da9052, int irq, void *data);
154
155int da9052_enable_irq(struct da9052 *da9052, int irq);
156int da9052_disable_irq(struct da9052 *da9052, int irq);
157int da9052_disable_irq_nosync(struct da9052 *da9052, int irq);
158
159#endif /* __MFD_DA9052_DA9052_H */
diff --git a/include/linux/mfd/da9052/pdata.h b/include/linux/mfd/da9052/pdata.h
deleted file mode 100644
index 62c5c3c2992..00000000000
--- a/include/linux/mfd/da9052/pdata.h
+++ /dev/null
@@ -1,40 +0,0 @@
1/*
2 * Platform data declarations for DA9052 PMICs.
3 *
4 * Copyright(c) 2011 Dialog Semiconductor Ltd.
5 *
6 * Author: David Dajun Chen <dchen@diasemi.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 */
23
24#ifndef __MFD_DA9052_PDATA_H__
25#define __MFD_DA9052_PDATA_H__
26
27#define DA9052_MAX_REGULATORS 14
28
29struct da9052;
30
31struct da9052_pdata {
32 struct led_platform_data *pled;
33 int (*init) (struct da9052 *da9052);
34 int irq_base;
35 int gpio_base;
36 int use_for_apm;
37 struct regulator_init_data *regulators[DA9052_MAX_REGULATORS];
38};
39
40#endif
diff --git a/include/linux/mfd/da9052/reg.h b/include/linux/mfd/da9052/reg.h
deleted file mode 100644
index b97f7309d7f..00000000000
--- a/include/linux/mfd/da9052/reg.h
+++ /dev/null
@@ -1,749 +0,0 @@
1/*
2 * Register declarations for DA9052 PMICs.
3 *
4 * Copyright(c) 2011 Dialog Semiconductor Ltd.
5 *
6 * Author: David Dajun Chen <dchen@diasemi.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 */
23
24#ifndef __LINUX_MFD_DA9052_REG_H
25#define __LINUX_MFD_DA9052_REG_H
26
27/* PAGE REGISTERS */
28#define DA9052_PAGE0_CON_REG 0
29#define DA9052_PAGE1_CON_REG 128
30
31/* STATUS REGISTERS */
32#define DA9052_STATUS_A_REG 1
33#define DA9052_STATUS_B_REG 2
34#define DA9052_STATUS_C_REG 3
35#define DA9052_STATUS_D_REG 4
36
37/* EVENT REGISTERS */
38#define DA9052_EVENT_A_REG 5
39#define DA9052_EVENT_B_REG 6
40#define DA9052_EVENT_C_REG 7
41#define DA9052_EVENT_D_REG 8
42#define DA9052_FAULTLOG_REG 9
43
44/* IRQ REGISTERS */
45#define DA9052_IRQ_MASK_A_REG 10
46#define DA9052_IRQ_MASK_B_REG 11
47#define DA9052_IRQ_MASK_C_REG 12
48#define DA9052_IRQ_MASK_D_REG 13
49
50/* CONTROL REGISTERS */
51#define DA9052_CONTROL_A_REG 14
52#define DA9052_CONTROL_B_REG 15
53#define DA9052_CONTROL_C_REG 16
54#define DA9052_CONTROL_D_REG 17
55
56#define DA9052_PDDIS_REG 18
57#define DA9052_INTERFACE_REG 19
58#define DA9052_RESET_REG 20
59
60/* GPIO REGISTERS */
61#define DA9052_GPIO_0_1_REG 21
62#define DA9052_GPIO_2_3_REG 22
63#define DA9052_GPIO_4_5_REG 23
64#define DA9052_GPIO_6_7_REG 24
65#define DA9052_GPIO_14_15_REG 28
66
67/* POWER SEQUENCER CONTROL REGISTERS */
68#define DA9052_ID_0_1_REG 29
69#define DA9052_ID_2_3_REG 30
70#define DA9052_ID_4_5_REG 31
71#define DA9052_ID_6_7_REG 32
72#define DA9052_ID_8_9_REG 33
73#define DA9052_ID_10_11_REG 34
74#define DA9052_ID_12_13_REG 35
75#define DA9052_ID_14_15_REG 36
76#define DA9052_ID_16_17_REG 37
77#define DA9052_ID_18_19_REG 38
78#define DA9052_ID_20_21_REG 39
79#define DA9052_SEQ_STATUS_REG 40
80#define DA9052_SEQ_A_REG 41
81#define DA9052_SEQ_B_REG 42
82#define DA9052_SEQ_TIMER_REG 43
83
84/* LDO AND BUCK REGISTERS */
85#define DA9052_BUCKA_REG 44
86#define DA9052_BUCKB_REG 45
87#define DA9052_BUCKCORE_REG 46
88#define DA9052_BUCKPRO_REG 47
89#define DA9052_BUCKMEM_REG 48
90#define DA9052_BUCKPERI_REG 49
91#define DA9052_LDO1_REG 50
92#define DA9052_LDO2_REG 51
93#define DA9052_LDO3_REG 52
94#define DA9052_LDO4_REG 53
95#define DA9052_LDO5_REG 54
96#define DA9052_LDO6_REG 55
97#define DA9052_LDO7_REG 56
98#define DA9052_LDO8_REG 57
99#define DA9052_LDO9_REG 58
100#define DA9052_LDO10_REG 59
101#define DA9052_SUPPLY_REG 60
102#define DA9052_PULLDOWN_REG 61
103#define DA9052_CHGBUCK_REG 62
104#define DA9052_WAITCONT_REG 63
105#define DA9052_ISET_REG 64
106#define DA9052_BATCHG_REG 65
107
108/* BATTERY CONTROL REGISTRS */
109#define DA9052_CHG_CONT_REG 66
110#define DA9052_INPUT_CONT_REG 67
111#define DA9052_CHG_TIME_REG 68
112#define DA9052_BBAT_CONT_REG 69
113
114/* LED CONTROL REGISTERS */
115#define DA9052_BOOST_REG 70
116#define DA9052_LED_CONT_REG 71
117#define DA9052_LEDMIN123_REG 72
118#define DA9052_LED1_CONF_REG 73
119#define DA9052_LED2_CONF_REG 74
120#define DA9052_LED3_CONF_REG 75
121#define DA9052_LED1CONT_REG 76
122#define DA9052_LED2CONT_REG 77
123#define DA9052_LED3CONT_REG 78
124#define DA9052_LED_CONT_4_REG 79
125#define DA9052_LED_CONT_5_REG 80
126
127/* ADC CONTROL REGISTERS */
128#define DA9052_ADC_MAN_REG 81
129#define DA9052_ADC_CONT_REG 82
130#define DA9052_ADC_RES_L_REG 83
131#define DA9052_ADC_RES_H_REG 84
132#define DA9052_VDD_RES_REG 85
133#define DA9052_VDD_MON_REG 86
134
135#define DA9052_ICHG_AV_REG 87
136#define DA9052_ICHG_THD_REG 88
137#define DA9052_ICHG_END_REG 89
138#define DA9052_TBAT_RES_REG 90
139#define DA9052_TBAT_HIGHP_REG 91
140#define DA9052_TBAT_HIGHN_REG 92
141#define DA9052_TBAT_LOW_REG 93
142#define DA9052_T_OFFSET_REG 94
143
144#define DA9052_ADCIN4_RES_REG 95
145#define DA9052_AUTO4_HIGH_REG 96
146#define DA9052_AUTO4_LOW_REG 97
147#define DA9052_ADCIN5_RES_REG 98
148#define DA9052_AUTO5_HIGH_REG 99
149#define DA9052_AUTO5_LOW_REG 100
150#define DA9052_ADCIN6_RES_REG 101
151#define DA9052_AUTO6_HIGH_REG 102
152#define DA9052_AUTO6_LOW_REG 103
153
154#define DA9052_TJUNC_RES_REG 104
155
156/* TSI CONTROL REGISTERS */
157#define DA9052_TSI_CONT_A_REG 105
158#define DA9052_TSI_CONT_B_REG 106
159#define DA9052_TSI_X_MSB_REG 107
160#define DA9052_TSI_Y_MSB_REG 108
161#define DA9052_TSI_LSB_REG 109
162#define DA9052_TSI_Z_MSB_REG 110
163
164/* RTC COUNT REGISTERS */
165#define DA9052_COUNT_S_REG 111
166#define DA9052_COUNT_MI_REG 112
167#define DA9052_COUNT_H_REG 113
168#define DA9052_COUNT_D_REG 114
169#define DA9052_COUNT_MO_REG 115
170#define DA9052_COUNT_Y_REG 116
171
172/* RTC CONTROL REGISTERS */
173#define DA9052_ALARM_MI_REG 117
174#define DA9052_ALARM_H_REG 118
175#define DA9052_ALARM_D_REG 119
176#define DA9052_ALARM_MO_REG 120
177#define DA9052_ALARM_Y_REG 121
178#define DA9052_SECOND_A_REG 122
179#define DA9052_SECOND_B_REG 123
180#define DA9052_SECOND_C_REG 124
181#define DA9052_SECOND_D_REG 125
182
183/* PAGE CONFIGURATION BIT */
184#define DA9052_PAGE_CONF 0X80
185
186/* STATUS REGISTER A BITS */
187#define DA9052_STATUSA_VDATDET 0X80
188#define DA9052_STATUSA_VBUSSEL 0X40
189#define DA9052_STATUSA_DCINSEL 0X20
190#define DA9052_STATUSA_VBUSDET 0X10
191#define DA9052_STATUSA_DCINDET 0X08
192#define DA9052_STATUSA_IDGND 0X04
193#define DA9052_STATUSA_IDFLOAT 0X02
194#define DA9052_STATUSA_NONKEY 0X01
195
196/* STATUS REGISTER B BITS */
197#define DA9052_STATUSB_COMPDET 0X80
198#define DA9052_STATUSB_SEQUENCING 0X40
199#define DA9052_STATUSB_GPFB2 0X20
200#define DA9052_STATUSB_CHGTO 0X10
201#define DA9052_STATUSB_CHGEND 0X08
202#define DA9052_STATUSB_CHGLIM 0X04
203#define DA9052_STATUSB_CHGPRE 0X02
204#define DA9052_STATUSB_CHGATT 0X01
205
206/* STATUS REGISTER C BITS */
207#define DA9052_STATUSC_GPI7 0X80
208#define DA9052_STATUSC_GPI6 0X40
209#define DA9052_STATUSC_GPI5 0X20
210#define DA9052_STATUSC_GPI4 0X10
211#define DA9052_STATUSC_GPI3 0X08
212#define DA9052_STATUSC_GPI2 0X04
213#define DA9052_STATUSC_GPI1 0X02
214#define DA9052_STATUSC_GPI0 0X01
215
216/* STATUS REGISTER D BITS */
217#define DA9052_STATUSD_GPI15 0X80
218#define DA9052_STATUSD_GPI14 0X40
219#define DA9052_STATUSD_GPI13 0X20
220#define DA9052_STATUSD_GPI12 0X10
221#define DA9052_STATUSD_GPI11 0X08
222#define DA9052_STATUSD_GPI10 0X04
223#define DA9052_STATUSD_GPI9 0X02
224#define DA9052_STATUSD_GPI8 0X01
225
226/* EVENT REGISTER A BITS */
227#define DA9052_EVENTA_ECOMP1V2 0X80
228#define DA9052_EVENTA_ESEQRDY 0X40
229#define DA9052_EVENTA_EALRAM 0X20
230#define DA9052_EVENTA_EVDDLOW 0X10
231#define DA9052_EVENTA_EVBUSREM 0X08
232#define DA9052_EVENTA_EDCINREM 0X04
233#define DA9052_EVENTA_EVBUSDET 0X02
234#define DA9052_EVENTA_EDCINDET 0X01
235
236/* EVENT REGISTER B BITS */
237#define DA9052_EVENTB_ETSIREADY 0X80
238#define DA9052_EVENTB_EPENDOWN 0X40
239#define DA9052_EVENTB_EADCEOM 0X20
240#define DA9052_EVENTB_ETBAT 0X10
241#define DA9052_EVENTB_ECHGEND 0X08
242#define DA9052_EVENTB_EIDGND 0X04
243#define DA9052_EVENTB_EIDFLOAT 0X02
244#define DA9052_EVENTB_ENONKEY 0X01
245
246/* EVENT REGISTER C BITS */
247#define DA9052_EVENTC_EGPI7 0X80
248#define DA9052_EVENTC_EGPI6 0X40
249#define DA9052_EVENTC_EGPI5 0X20
250#define DA9052_EVENTC_EGPI4 0X10
251#define DA9052_EVENTC_EGPI3 0X08
252#define DA9052_EVENTC_EGPI2 0X04
253#define DA9052_EVENTC_EGPI1 0X02
254#define DA9052_EVENTC_EGPI0 0X01
255
256/* EVENT REGISTER D BITS */
257#define DA9052_EVENTD_EGPI15 0X80
258#define DA9052_EVENTD_EGPI14 0X40
259#define DA9052_EVENTD_EGPI13 0X20
260#define DA9052_EVENTD_EGPI12 0X10
261#define DA9052_EVENTD_EGPI11 0X08
262#define DA9052_EVENTD_EGPI10 0X04
263#define DA9052_EVENTD_EGPI9 0X02
264#define DA9052_EVENTD_EGPI8 0X01
265
266/* IRQ MASK REGISTERS BITS */
267#define DA9052_M_NONKEY 0X0100
268
269/* TSI EVENT REGISTERS BITS */
270#define DA9052_E_PEN_DOWN 0X4000
271#define DA9052_E_TSI_READY 0X8000
272
273/* FAULT LOG REGISTER BITS */
274#define DA9052_FAULTLOG_WAITSET 0X80
275#define DA9052_FAULTLOG_NSDSET 0X40
276#define DA9052_FAULTLOG_KEYSHUT 0X20
277#define DA9052_FAULTLOG_TEMPOVER 0X08
278#define DA9052_FAULTLOG_VDDSTART 0X04
279#define DA9052_FAULTLOG_VDDFAULT 0X02
280#define DA9052_FAULTLOG_TWDERROR 0X01
281
282/* CONTROL REGISTER A BITS */
283#define DA9052_CONTROLA_GPIV 0X80
284#define DA9052_CONTROLA_PMOTYPE 0X20
285#define DA9052_CONTROLA_PMOV 0X10
286#define DA9052_CONTROLA_PMIV 0X08
287#define DA9052_CONTROLA_PMIFV 0X08
288#define DA9052_CONTROLA_PWR1EN 0X04
289#define DA9052_CONTROLA_PWREN 0X02
290#define DA9052_CONTROLA_SYSEN 0X01
291
292/* CONTROL REGISTER B BITS */
293#define DA9052_CONTROLB_SHUTDOWN 0X80
294#define DA9052_CONTROLB_DEEPSLEEP 0X40
295#define DA9052_CONTROL_B_WRITEMODE 0X20
296#define DA9052_CONTROLB_BBATEN 0X10
297#define DA9052_CONTROLB_OTPREADEN 0X08
298#define DA9052_CONTROLB_AUTOBOOT 0X04
299#define DA9052_CONTROLB_ACTDIODE 0X02
300#define DA9052_CONTROLB_BUCKMERGE 0X01
301
302/* CONTROL REGISTER C BITS */
303#define DA9052_CONTROLC_BLINKDUR 0X80
304#define DA9052_CONTROLC_BLINKFRQ 0X60
305#define DA9052_CONTROLC_DEBOUNCING 0X1C
306#define DA9052_CONTROLC_PMFB2PIN 0X02
307#define DA9052_CONTROLC_PMFB1PIN 0X01
308
309/* CONTROL REGISTER D BITS */
310#define DA9052_CONTROLD_WATCHDOG 0X80
311#define DA9052_CONTROLD_ACCDETEN 0X40
312#define DA9052_CONTROLD_GPI1415SD 0X20
313#define DA9052_CONTROLD_NONKEYSD 0X10
314#define DA9052_CONTROLD_KEEPACTEN 0X08
315#define DA9052_CONTROLD_TWDSCALE 0X07
316
317/* POWER DOWN DISABLE REGISTER BITS */
318#define DA9052_PDDIS_PMCONTPD 0X80
319#define DA9052_PDDIS_OUT32KPD 0X40
320#define DA9052_PDDIS_CHGBBATPD 0X20
321#define DA9052_PDDIS_CHGPD 0X10
322#define DA9052_PDDIS_HS2WIREPD 0X08
323#define DA9052_PDDIS_PMIFPD 0X04
324#define DA9052_PDDIS_GPADCPD 0X02
325#define DA9052_PDDIS_GPIOPD 0X01
326
327/* CONTROL REGISTER D BITS */
328#define DA9052_INTERFACE_IFBASEADDR 0XE0
329#define DA9052_INTERFACE_NCSPOL 0X10
330#define DA9052_INTERFACE_RWPOL 0X08
331#define DA9052_INTERFACE_CPHA 0X04
332#define DA9052_INTERFACE_CPOL 0X02
333#define DA9052_INTERFACE_IFTYPE 0X01
334
335/* CONTROL REGISTER D BITS */
336#define DA9052_RESET_RESETEVENT 0XC0
337#define DA9052_RESET_RESETTIMER 0X3F
338
339/* GPIO REGISTERS */
340/* GPIO CONTROL REGISTER BITS */
341#define DA9052_GPIO_EVEN_PORT_PIN 0X03
342#define DA9052_GPIO_EVEN_PORT_TYPE 0X04
343#define DA9052_GPIO_EVEN_PORT_MODE 0X08
344
345#define DA9052_GPIO_ODD_PORT_PIN 0X30
346#define DA9052_GPIO_ODD_PORT_TYPE 0X40
347#define DA9052_GPIO_ODD_PORT_MODE 0X80
348
349/*POWER SEQUENCER REGISTER BITS */
350/* SEQ CONTROL REGISTER BITS FOR ID 0 AND 1 */
351#define DA9052_ID01_LDO1STEP 0XF0
352#define DA9052_ID01_SYSPRE 0X04
353#define DA9052_ID01_DEFSUPPLY 0X02
354#define DA9052_ID01_NRESMODE 0X01
355
356/* SEQ CONTROL REGISTER BITS FOR ID 2 AND 3 */
357#define DA9052_ID23_LDO3STEP 0XF0
358#define DA9052_ID23_LDO2STEP 0X0F
359
360/* SEQ CONTROL REGISTER BITS FOR ID 4 AND 5 */
361#define DA9052_ID45_LDO5STEP 0XF0
362#define DA9052_ID45_LDO4STEP 0X0F
363
364/* SEQ CONTROL REGISTER BITS FOR ID 6 AND 7 */
365#define DA9052_ID67_LDO7STEP 0XF0
366#define DA9052_ID67_LDO6STEP 0X0F
367
368/* SEQ CONTROL REGISTER BITS FOR ID 8 AND 9 */
369#define DA9052_ID89_LDO9STEP 0XF0
370#define DA9052_ID89_LDO8STEP 0X0F
371
372/* SEQ CONTROL REGISTER BITS FOR ID 10 AND 11 */
373#define DA9052_ID1011_PDDISSTEP 0XF0
374#define DA9052_ID1011_LDO10STEP 0X0F
375
376/* SEQ CONTROL REGISTER BITS FOR ID 12 AND 13 */
377#define DA9052_ID1213_VMEMSWSTEP 0XF0
378#define DA9052_ID1213_VPERISWSTEP 0X0F
379
380/* SEQ CONTROL REGISTER BITS FOR ID 14 AND 15 */
381#define DA9052_ID1415_BUCKPROSTEP 0XF0
382#define DA9052_ID1415_BUCKCORESTEP 0X0F
383
384/* SEQ CONTROL REGISTER BITS FOR ID 16 AND 17 */
385#define DA9052_ID1617_BUCKPERISTEP 0XF0
386#define DA9052_ID1617_BUCKMEMSTEP 0X0F
387
388/* SEQ CONTROL REGISTER BITS FOR ID 18 AND 19 */
389#define DA9052_ID1819_GPRISE2STEP 0XF0
390#define DA9052_ID1819_GPRISE1STEP 0X0F
391
392/* SEQ CONTROL REGISTER BITS FOR ID 20 AND 21 */
393#define DA9052_ID2021_GPFALL2STEP 0XF0
394#define DA9052_ID2021_GPFALL1STEP 0X0F
395
396/* POWER SEQ STATUS REGISTER BITS */
397#define DA9052_SEQSTATUS_SEQPOINTER 0XF0
398#define DA9052_SEQSTATUS_WAITSTEP 0X0F
399
400/* POWER SEQ A REGISTER BITS */
401#define DA9052_SEQA_POWEREND 0XF0
402#define DA9052_SEQA_SYSTEMEND 0X0F
403
404/* POWER SEQ B REGISTER BITS */
405#define DA9052_SEQB_PARTDOWN 0XF0
406#define DA9052_SEQB_MAXCOUNT 0X0F
407
408/* POWER SEQ TIMER REGISTER BITS */
409#define DA9052_SEQTIMER_SEQDUMMY 0XF0
410#define DA9052_SEQTIMER_SEQTIME 0X0F
411
412/*POWER SUPPLY CONTROL REGISTER BITS */
413/* BUCK REGISTER A BITS */
414#define DA9052_BUCKA_BPROILIM 0XC0
415#define DA9052_BUCKA_BPROMODE 0X30
416#define DA9052_BUCKA_BCOREILIM 0X0C
417#define DA9052_BUCKA_BCOREMODE 0X03
418
419/* BUCK REGISTER B BITS */
420#define DA9052_BUCKB_BERIILIM 0XC0
421#define DA9052_BUCKB_BPERIMODE 0X30
422#define DA9052_BUCKB_BMEMILIM 0X0C
423#define DA9052_BUCKB_BMEMMODE 0X03
424
425/* BUCKCORE REGISTER BITS */
426#define DA9052_BUCKCORE_BCORECONF 0X80
427#define DA9052_BUCKCORE_BCOREEN 0X40
428#define DA9052_BUCKCORE_VBCORE 0X3F
429
430/* BUCKPRO REGISTER BITS */
431#define DA9052_BUCKPRO_BPROCONF 0X80
432#define DA9052_BUCKPRO_BPROEN 0X40
433#define DA9052_BUCKPRO_VBPRO 0X3F
434
435/* BUCKMEM REGISTER BITS */
436#define DA9052_BUCKMEM_BMEMCONF 0X80
437#define DA9052_BUCKMEM_BMEMEN 0X40
438#define DA9052_BUCKMEM_VBMEM 0X3F
439
440/* BUCKPERI REGISTER BITS */
441#define DA9052_BUCKPERI_BPERICONF 0X80
442#define DA9052_BUCKPERI_BPERIEN 0X40
443#define DA9052_BUCKPERI_BPERIHS 0X20
444#define DA9052_BUCKPERI_VBPERI 0X1F
445
446/* LDO1 REGISTER BITS */
447#define DA9052_LDO1_LDO1CONF 0X80
448#define DA9052_LDO1_LDO1EN 0X40
449#define DA9052_LDO1_VLDO1 0X1F
450
451/* LDO2 REGISTER BITS */
452#define DA9052_LDO2_LDO2CONF 0X80
453#define DA9052_LDO2_LDO2EN 0X40
454#define DA9052_LDO2_VLDO2 0X3F
455
456/* LDO3 REGISTER BITS */
457#define DA9052_LDO3_LDO3CONF 0X80
458#define DA9052_LDO3_LDO3EN 0X40
459#define DA9052_LDO3_VLDO3 0X3F
460
461/* LDO4 REGISTER BITS */
462#define DA9052_LDO4_LDO4CONF 0X80
463#define DA9052_LDO4_LDO4EN 0X40
464#define DA9052_LDO4_VLDO4 0X3F
465
466/* LDO5 REGISTER BITS */
467#define DA9052_LDO5_LDO5CONF 0X80
468#define DA9052_LDO5_LDO5EN 0X40
469#define DA9052_LDO5_VLDO5 0X3F
470
471/* LDO6 REGISTER BITS */
472#define DA9052_LDO6_LDO6CONF 0X80
473#define DA9052_LDO6_LDO6EN 0X40
474#define DA9052_LDO6_VLDO6 0X3F
475
476/* LDO7 REGISTER BITS */
477#define DA9052_LDO7_LDO7CONF 0X80
478#define DA9052_LDO7_LDO7EN 0X40
479#define DA9052_LDO7_VLDO7 0X3F
480
481/* LDO8 REGISTER BITS */
482#define DA9052_LDO8_LDO8CONF 0X80
483#define DA9052_LDO8_LDO8EN 0X40
484#define DA9052_LDO8_VLDO8 0X3F
485
486/* LDO9 REGISTER BITS */
487#define DA9052_LDO9_LDO9CONF 0X80
488#define DA9052_LDO9_LDO9EN 0X40
489#define DA9052_LDO9_VLDO9 0X3F
490
491/* LDO10 REGISTER BITS */
492#define DA9052_LDO10_LDO10CONF 0X80
493#define DA9052_LDO10_LDO10EN 0X40
494#define DA9052_LDO10_VLDO10 0X3F
495
496/* SUPPLY REGISTER BITS */
497#define DA9052_SUPPLY_VLOCK 0X80
498#define DA9052_SUPPLY_VMEMSWEN 0X40
499#define DA9052_SUPPLY_VPERISWEN 0X20
500#define DA9052_SUPPLY_VLDO3GO 0X10
501#define DA9052_SUPPLY_VLDO2GO 0X08
502#define DA9052_SUPPLY_VBMEMGO 0X04
503#define DA9052_SUPPLY_VBPROGO 0X02
504#define DA9052_SUPPLY_VBCOREGO 0X01
505
506/* PULLDOWN REGISTER BITS */
507#define DA9052_PULLDOWN_LDO5PDDIS 0X20
508#define DA9052_PULLDOWN_LDO2PDDIS 0X10
509#define DA9052_PULLDOWN_LDO1PDDIS 0X08
510#define DA9052_PULLDOWN_MEMPDDIS 0X04
511#define DA9052_PULLDOWN_PROPDDIS 0X02
512#define DA9052_PULLDOWN_COREPDDIS 0X01
513
514/* BAT CHARGER REGISTER BITS */
515/* CHARGER BUCK REGISTER BITS */
516#define DA9052_CHGBUCK_CHGTEMP 0X80
517#define DA9052_CHGBUCK_CHGUSBILIM 0X40
518#define DA9052_CHGBUCK_CHGBUCKLP 0X20
519#define DA9052_CHGBUCK_CHGBUCKEN 0X10
520#define DA9052_CHGBUCK_ISETBUCK 0X0F
521
522/* WAIT COUNTER REGISTER BITS */
523#define DA9052_WAITCONT_WAITDIR 0X80
524#define DA9052_WAITCONT_RTCCLOCK 0X40
525#define DA9052_WAITCONT_WAITMODE 0X20
526#define DA9052_WAITCONT_EN32KOUT 0X10
527#define DA9052_WAITCONT_DELAYTIME 0X0F
528
529/* ISET CONTROL REGISTER BITS */
530#define DA9052_ISET_ISETDCIN 0XF0
531#define DA9052_ISET_ISETVBUS 0X0F
532
533/* BATTERY CHARGER CONTROL REGISTER BITS */
534#define DA9052_BATCHG_ICHGPRE 0XC0
535#define DA9052_BATCHG_ICHGBAT 0X3F
536
537/* CHARGER COUNTER REGISTER BITS */
538#define DA9052_CHG_CONT_VCHG_BAT 0XF8
539#define DA9052_CHG_CONT_TCTR 0X07
540
541/* INPUT CONTROL REGISTER BITS */
542#define DA9052_INPUT_CONT_TCTR_MODE 0X80
543#define DA9052_INPUT_CONT_VBUS_SUSP 0X10
544#define DA9052_INPUT_CONT_DCIN_SUSP 0X08
545
546/* CHARGING TIME REGISTER BITS */
547#define DA9052_CHGTIME_CHGTIME 0XFF
548
549/* BACKUP BATTERY CONTROL REGISTER BITS */
550#define DA9052_BBATCONT_BCHARGERISET 0XF0
551#define DA9052_BBATCONT_BCHARGERVSET 0X0F
552
553/* LED REGISTERS BITS */
554/* LED BOOST REGISTER BITS */
555#define DA9052_BOOST_EBFAULT 0X80
556#define DA9052_BOOST_MBFAULT 0X40
557#define DA9052_BOOST_BOOSTFRQ 0X20
558#define DA9052_BOOST_BOOSTILIM 0X10
559#define DA9052_BOOST_LED3INEN 0X08
560#define DA9052_BOOST_LED2INEN 0X04
561#define DA9052_BOOST_LED1INEN 0X02
562#define DA9052_BOOST_BOOSTEN 0X01
563
564/* LED CONTROL REGISTER BITS */
565#define DA9052_LEDCONT_SELLEDMODE 0X80
566#define DA9052_LEDCONT_LED3ICONT 0X40
567#define DA9052_LEDCONT_LED3RAMP 0X20
568#define DA9052_LEDCONT_LED3EN 0X10
569#define DA9052_LEDCONT_LED2RAMP 0X08
570#define DA9052_LEDCONT_LED2EN 0X04
571#define DA9052_LEDCONT_LED1RAMP 0X02
572#define DA9052_LEDCONT_LED1EN 0X01
573
574/* LEDMIN123 REGISTER BIT */
575#define DA9052_LEDMIN123_LEDMINCURRENT 0XFF
576
577/* LED1CONF REGISTER BIT */
578#define DA9052_LED1CONF_LED1CURRENT 0XFF
579
580/* LED2CONF REGISTER BIT */
581#define DA9052_LED2CONF_LED2CURRENT 0XFF
582
583/* LED3CONF REGISTER BIT */
584#define DA9052_LED3CONF_LED3CURRENT 0XFF
585
586/* LED COUNT REGISTER BIT */
587#define DA9052_LED_CONT_DIM 0X80
588
589/* ADC MAN REGISTERS BITS */
590#define DA9052_ADC_MAN_MAN_CONV 0X10
591#define DA9052_ADC_MAN_MUXSEL_VDDOUT 0X00
592#define DA9052_ADC_MAN_MUXSEL_ICH 0X01
593#define DA9052_ADC_MAN_MUXSEL_TBAT 0X02
594#define DA9052_ADC_MAN_MUXSEL_VBAT 0X03
595#define DA9052_ADC_MAN_MUXSEL_AD4 0X04
596#define DA9052_ADC_MAN_MUXSEL_AD5 0X05
597#define DA9052_ADC_MAN_MUXSEL_AD6 0X06
598#define DA9052_ADC_MAN_MUXSEL_VBBAT 0X09
599
600/* ADC CONTROL REGSISTERS BITS */
601#define DA9052_ADCCONT_COMP1V2EN 0X80
602#define DA9052_ADCCONT_ADCMODE 0X40
603#define DA9052_ADCCONT_TBATISRCEN 0X20
604#define DA9052_ADCCONT_AD4ISRCEN 0X10
605#define DA9052_ADCCONT_AUTOAD6EN 0X08
606#define DA9052_ADCCONT_AUTOAD5EN 0X04
607#define DA9052_ADCCONT_AUTOAD4EN 0X02
608#define DA9052_ADCCONT_AUTOVDDEN 0X01
609
610/* ADC 10 BIT MANUAL CONVERSION RESULT LOW REGISTER */
611#define DA9052_ADC_RES_LSB 0X03
612
613/* ADC 10 BIT MANUAL CONVERSION RESULT HIGH REGISTER */
614#define DA9052_ADCRESH_ADCRESMSB 0XFF
615
616/* VDD RES REGSISTER BIT*/
617#define DA9052_VDDRES_VDDOUTRES 0XFF
618
619/* VDD MON REGSISTER BIT */
620#define DA9052_VDDMON_VDDOUTMON 0XFF
621
622/* ICHG_AV REGSISTER BIT */
623#define DA9052_ICHGAV_ICHGAV 0XFF
624
625/* ICHG_THD REGSISTER BIT */
626#define DA9052_ICHGTHD_ICHGTHD 0XFF
627
628/* ICHG_END REGSISTER BIT */
629#define DA9052_ICHGEND_ICHGEND 0XFF
630
631/* TBAT_RES REGSISTER BIT */
632#define DA9052_TBATRES_TBATRES 0XFF
633
634/* TBAT_HIGHP REGSISTER BIT */
635#define DA9052_TBATHIGHP_TBATHIGHP 0XFF
636
637/* TBAT_HIGHN REGSISTER BIT */
638#define DA9052_TBATHIGHN_TBATHIGHN 0XFF
639
640/* TBAT_LOW REGSISTER BIT */
641#define DA9052_TBATLOW_TBATLOW 0XFF
642
643/* T_OFFSET REGSISTER BIT */
644#define DA9052_TOFFSET_TOFFSET 0XFF
645
646/* ADCIN4_RES REGSISTER BIT */
647#define DA9052_ADCIN4RES_ADCIN4RES 0XFF
648
649/* ADCIN4_HIGH REGSISTER BIT */
650#define DA9052_AUTO4HIGH_AUTO4HIGH 0XFF
651
652/* ADCIN4_LOW REGSISTER BIT */
653#define DA9052_AUTO4LOW_AUTO4LOW 0XFF
654
655/* ADCIN5_RES REGSISTER BIT */
656#define DA9052_ADCIN5RES_ADCIN5RES 0XFF
657
658/* ADCIN5_HIGH REGSISTER BIT */
659#define DA9052_AUTO5HIGH_AUTOHIGH 0XFF
660
661/* ADCIN5_LOW REGSISTER BIT */
662#define DA9052_AUTO5LOW_AUTO5LOW 0XFF
663
664/* ADCIN6_RES REGSISTER BIT */
665#define DA9052_ADCIN6RES_ADCIN6RES 0XFF
666
667/* ADCIN6_HIGH REGSISTER BIT */
668#define DA9052_AUTO6HIGH_AUTO6HIGH 0XFF
669
670/* ADCIN6_LOW REGSISTER BIT */
671#define DA9052_AUTO6LOW_AUTO6LOW 0XFF
672
673/* TJUNC_RES REGSISTER BIT*/
674#define DA9052_TJUNCRES_TJUNCRES 0XFF
675
676/* TSI REGISTER */
677/* TSI CONTROL REGISTER A BITS */
678#define DA9052_TSICONTA_TSIDELAY 0XC0
679#define DA9052_TSICONTA_TSISKIP 0X38
680#define DA9052_TSICONTA_TSIMODE 0X04
681#define DA9052_TSICONTA_PENDETEN 0X02
682#define DA9052_TSICONTA_AUTOTSIEN 0X01
683
684/* TSI CONTROL REGISTER B BITS */
685#define DA9052_TSICONTB_ADCREF 0X80
686#define DA9052_TSICONTB_TSIMAN 0X40
687#define DA9052_TSICONTB_TSIMUX 0X30
688#define DA9052_TSICONTB_TSISEL3 0X08
689#define DA9052_TSICONTB_TSISEL2 0X04
690#define DA9052_TSICONTB_TSISEL1 0X02
691#define DA9052_TSICONTB_TSISEL0 0X01
692
693/* TSI X CO-ORDINATE MSB RESULT REGISTER BITS */
694#define DA9052_TSIXMSB_TSIXM 0XFF
695
696/* TSI Y CO-ORDINATE MSB RESULT REGISTER BITS */
697#define DA9052_TSIYMSB_TSIYM 0XFF
698
699/* TSI CO-ORDINATE LSB RESULT REGISTER BITS */
700#define DA9052_TSILSB_PENDOWN 0X40
701#define DA9052_TSILSB_TSIZL 0X30
702#define DA9052_TSILSB_TSIYL 0X0C
703#define DA9052_TSILSB_TSIXL 0X03
704
705/* TSI Z MEASUREMENT MSB RESULT REGISTER BIT */
706#define DA9052_TSIZMSB_TSIZM 0XFF
707
708/* RTC REGISTER */
709/* RTC TIMER SECONDS REGISTER BITS */
710#define DA9052_COUNTS_MONITOR 0X40
711#define DA9052_RTC_SEC 0X3F
712
713/* RTC TIMER MINUTES REGISTER BIT */
714#define DA9052_RTC_MIN 0X3F
715
716/* RTC TIMER HOUR REGISTER BIT */
717#define DA9052_RTC_HOUR 0X1F
718
719/* RTC TIMER DAYS REGISTER BIT */
720#define DA9052_RTC_DAY 0X1F
721
722/* RTC TIMER MONTHS REGISTER BIT */
723#define DA9052_RTC_MONTH 0X0F
724
725/* RTC TIMER YEARS REGISTER BIT */
726#define DA9052_RTC_YEAR 0X3F
727
728/* RTC ALARM MINUTES REGISTER BITS */
729#define DA9052_ALARMM_I_TICK_TYPE 0X80
730#define DA9052_ALARMMI_ALARMTYPE 0X40
731
732/* RTC ALARM YEARS REGISTER BITS */
733#define DA9052_ALARM_Y_TICK_ON 0X80
734#define DA9052_ALARM_Y_ALARM_ON 0X40
735
736/* RTC SECONDS REGISTER A BITS */
737#define DA9052_SECONDA_SECONDSA 0XFF
738
739/* RTC SECONDS REGISTER B BITS */
740#define DA9052_SECONDB_SECONDSB 0XFF
741
742/* RTC SECONDS REGISTER C BITS */
743#define DA9052_SECONDC_SECONDSC 0XFF
744
745/* RTC SECONDS REGISTER D BITS */
746#define DA9052_SECONDD_SECONDSD 0XFF
747
748#endif
749/* __LINUX_MFD_DA9052_REG_H */
diff --git a/include/linux/mfd/da9055/core.h b/include/linux/mfd/da9055/core.h
deleted file mode 100644
index 956afa44599..00000000000
--- a/include/linux/mfd/da9055/core.h
+++ /dev/null
@@ -1,94 +0,0 @@
1/*
2 * da9055 declarations for DA9055 PMICs.
3 *
4 * Copyright(c) 2012 Dialog Semiconductor Ltd.
5 *
6 * Author: David Dajun Chen <dchen@diasemi.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 */
23
24#ifndef __DA9055_CORE_H
25#define __DA9055_CORE_H
26
27#include <linux/interrupt.h>
28#include <linux/regmap.h>
29
30/*
31 * PMIC IRQ
32 */
33#define DA9055_IRQ_ALARM 0x01
34#define DA9055_IRQ_TICK 0x02
35#define DA9055_IRQ_NONKEY 0x00
36#define DA9055_IRQ_REGULATOR 0x0B
37#define DA9055_IRQ_HWMON 0x03
38
39struct da9055_pdata;
40
41struct da9055 {
42 struct regmap *regmap;
43 struct regmap_irq_chip_data *irq_data;
44 struct device *dev;
45 struct i2c_client *i2c_client;
46
47 int irq_base;
48 int chip_irq;
49};
50
51/* Device I/O */
52static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg)
53{
54 int val, ret;
55
56 ret = regmap_read(da9055->regmap, reg, &val);
57 if (ret < 0)
58 return ret;
59
60 return val;
61}
62
63static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg,
64 unsigned char val)
65{
66 return regmap_write(da9055->regmap, reg, val);
67}
68
69static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg,
70 unsigned reg_cnt, unsigned char *val)
71{
72 return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt);
73}
74
75static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg,
76 unsigned reg_cnt, unsigned char *val)
77{
78 return regmap_raw_write(da9055->regmap, reg, val, reg_cnt);
79}
80
81static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg,
82 unsigned char bit_mask,
83 unsigned char reg_val)
84{
85 return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val);
86}
87
88/* Generic Device API */
89int da9055_device_init(struct da9055 *da9055);
90void da9055_device_exit(struct da9055 *da9055);
91
92extern struct regmap_config da9055_regmap_config;
93
94#endif /* __DA9055_CORE_H */
diff --git a/include/linux/mfd/da9055/pdata.h b/include/linux/mfd/da9055/pdata.h
deleted file mode 100644
index 04e092be4b0..00000000000
--- a/include/linux/mfd/da9055/pdata.h
+++ /dev/null
@@ -1,53 +0,0 @@
1/* Copyright (C) 2012 Dialog Semiconductor Ltd.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 */
9#ifndef __DA9055_PDATA_H
10#define __DA9055_PDATA_H
11
12#define DA9055_MAX_REGULATORS 8
13
14struct da9055;
15
16enum gpio_select {
17 NO_GPIO = 0,
18 GPIO_1,
19 GPIO_2
20};
21
22struct da9055_pdata {
23 int (*init) (struct da9055 *da9055);
24 int irq_base;
25 int gpio_base;
26
27 struct regulator_init_data *regulators[DA9055_MAX_REGULATORS];
28 /* Enable RTC in RESET Mode */
29 bool reset_enable;
30 /*
31 * GPI muxed pin to control
32 * regulator state A/B, 0 if not available.
33 */
34 int *gpio_ren;
35 /*
36 * GPI muxed pin to control
37 * regulator set, 0 if not available.
38 */
39 int *gpio_rsel;
40 /*
41 * Regulator mode control bits value (GPI offset) that
42 * that controls the regulator state, 0 if not available.
43 */
44 enum gpio_select *reg_ren;
45 /*
46 * Regulator mode control bits value (GPI offset) that
47 * controls the regulator set A/B, 0 if not available.
48 */
49 enum gpio_select *reg_rsel;
50 /* GPIOs to enable regulator, 0 if not available */
51 int *ena_gpio;
52};
53#endif /* __DA9055_PDATA_H */
diff --git a/include/linux/mfd/da9055/reg.h b/include/linux/mfd/da9055/reg.h
deleted file mode 100644
index 2b592e072db..00000000000
--- a/include/linux/mfd/da9055/reg.h
+++ /dev/null
@@ -1,699 +0,0 @@
1/*
2 * DA9055 declarations for DA9055 PMICs.
3 *
4 * Copyright(c) 2012 Dialog Semiconductor Ltd.
5 *
6 * Author: David Dajun Chen <dchen@diasemi.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 */
23
24#ifndef __DA9055_REG_H
25#define __DA9055_REG_H
26
27/*
28 * PMIC registers
29 */
30 /* PAGE0 */
31#define DA9055_REG_PAGE_CON 0x00
32
33/* System Control and Event Registers */
34#define DA9055_REG_STATUS_A 0x01
35#define DA9055_REG_STATUS_B 0x02
36#define DA9055_REG_FAULT_LOG 0x03
37#define DA9055_REG_EVENT_A 0x04
38#define DA9055_REG_EVENT_B 0x05
39#define DA9055_REG_EVENT_C 0x06
40#define DA9055_REG_IRQ_MASK_A 0x07
41#define DA9055_REG_IRQ_MASK_B 0x08
42#define DA9055_REG_IRQ_MASK_C 0x09
43#define DA9055_REG_CONTROL_A 0x0A
44#define DA9055_REG_CONTROL_B 0x0B
45#define DA9055_REG_CONTROL_C 0x0C
46#define DA9055_REG_CONTROL_D 0x0D
47#define DA9055_REG_CONTROL_E 0x0E
48#define DA9055_REG_PD_DIS 0x0F
49
50/* GPIO Control Registers */
51#define DA9055_REG_GPIO0_1 0x10
52#define DA9055_REG_GPIO2 0x11
53#define DA9055_REG_GPIO_MODE0_2 0x12
54
55/* Regulator Control Registers */
56#define DA9055_REG_BCORE_CONT 0x13
57#define DA9055_REG_BMEM_CONT 0x14
58#define DA9055_REG_LDO1_CONT 0x15
59#define DA9055_REG_LDO2_CONT 0x16
60#define DA9055_REG_LDO3_CONT 0x17
61#define DA9055_REG_LDO4_CONT 0x18
62#define DA9055_REG_LDO5_CONT 0x19
63#define DA9055_REG_LDO6_CONT 0x1A
64
65/* GP-ADC Control Registers */
66#define DA9055_REG_ADC_MAN 0x1B
67#define DA9055_REG_ADC_CONT 0x1C
68#define DA9055_REG_VSYS_MON 0x1D
69#define DA9055_REG_ADC_RES_L 0x1E
70#define DA9055_REG_ADC_RES_H 0x1F
71#define DA9055_REG_VSYS_RES 0x20
72#define DA9055_REG_ADCIN1_RES 0x21
73#define DA9055_REG_ADCIN2_RES 0x22
74#define DA9055_REG_ADCIN3_RES 0x23
75
76/* Sequencer Control Registers */
77#define DA9055_REG_EN_32K 0x35
78
79/* Regulator Setting Registers */
80#define DA9055_REG_BUCK_LIM 0x37
81#define DA9055_REG_BCORE_MODE 0x38
82#define DA9055_REG_VBCORE_A 0x39
83#define DA9055_REG_VBMEM_A 0x3A
84#define DA9055_REG_VLDO1_A 0x3B
85#define DA9055_REG_VLDO2_A 0x3C
86#define DA9055_REG_VLDO3_A 0x3D
87#define DA9055_REG_VLDO4_A 0x3E
88#define DA9055_REG_VLDO5_A 0x3F
89#define DA9055_REG_VLDO6_A 0x40
90#define DA9055_REG_VBCORE_B 0x41
91#define DA9055_REG_VBMEM_B 0x42
92#define DA9055_REG_VLDO1_B 0x43
93#define DA9055_REG_VLDO2_B 0x44
94#define DA9055_REG_VLDO3_B 0x45
95#define DA9055_REG_VLDO4_B 0x46
96#define DA9055_REG_VLDO5_B 0x47
97#define DA9055_REG_VLDO6_B 0x48
98
99/* GP-ADC Threshold Registers */
100#define DA9055_REG_AUTO1_HIGH 0x49
101#define DA9055_REG_AUTO1_LOW 0x4A
102#define DA9055_REG_AUTO2_HIGH 0x4B
103#define DA9055_REG_AUTO2_LOW 0x4C
104#define DA9055_REG_AUTO3_HIGH 0x4D
105#define DA9055_REG_AUTO3_LOW 0x4E
106
107/* OTP */
108#define DA9055_REG_OPT_COUNT 0x50
109#define DA9055_REG_OPT_ADDR 0x51
110#define DA9055_REG_OPT_DATA 0x52
111
112/* RTC Calendar and Alarm Registers */
113#define DA9055_REG_COUNT_S 0x53
114#define DA9055_REG_COUNT_MI 0x54
115#define DA9055_REG_COUNT_H 0x55
116#define DA9055_REG_COUNT_D 0x56
117#define DA9055_REG_COUNT_MO 0x57
118#define DA9055_REG_COUNT_Y 0x58
119#define DA9055_REG_ALARM_MI 0x59
120#define DA9055_REG_ALARM_H 0x5A
121#define DA9055_REG_ALARM_D 0x5B
122#define DA9055_REG_ALARM_MO 0x5C
123#define DA9055_REG_ALARM_Y 0x5D
124#define DA9055_REG_SECOND_A 0x5E
125#define DA9055_REG_SECOND_B 0x5F
126#define DA9055_REG_SECOND_C 0x60
127#define DA9055_REG_SECOND_D 0x61
128
129/* Customer Trim and Configuration */
130#define DA9055_REG_T_OFFSET 0x63
131#define DA9055_REG_INTERFACE 0x64
132#define DA9055_REG_CONFIG_A 0x65
133#define DA9055_REG_CONFIG_B 0x66
134#define DA9055_REG_CONFIG_C 0x67
135#define DA9055_REG_CONFIG_D 0x68
136#define DA9055_REG_CONFIG_E 0x69
137#define DA9055_REG_TRIM_CLDR 0x6F
138
139/* General Purpose Registers */
140#define DA9055_REG_GP_ID_0 0x70
141#define DA9055_REG_GP_ID_1 0x71
142#define DA9055_REG_GP_ID_2 0x72
143#define DA9055_REG_GP_ID_3 0x73
144#define DA9055_REG_GP_ID_4 0x74
145#define DA9055_REG_GP_ID_5 0x75
146#define DA9055_REG_GP_ID_6 0x76
147#define DA9055_REG_GP_ID_7 0x77
148#define DA9055_REG_GP_ID_8 0x78
149#define DA9055_REG_GP_ID_9 0x79
150#define DA9055_REG_GP_ID_10 0x7A
151#define DA9055_REG_GP_ID_11 0x7B
152#define DA9055_REG_GP_ID_12 0x7C
153#define DA9055_REG_GP_ID_13 0x7D
154#define DA9055_REG_GP_ID_14 0x7E
155#define DA9055_REG_GP_ID_15 0x7F
156#define DA9055_REG_GP_ID_16 0x80
157#define DA9055_REG_GP_ID_17 0x81
158#define DA9055_REG_GP_ID_18 0x82
159#define DA9055_REG_GP_ID_19 0x83
160
161#define DA9055_MAX_REGISTER_CNT DA9055_REG_GP_ID_19
162
163/*
164 * PMIC registers bits
165 */
166
167/* DA9055_REG_PAGE_CON (addr=0x00) */
168#define DA9055_PAGE_WRITE_MODE (0<<6)
169#define DA9055_REPEAT_WRITE_MODE (1<<6)
170
171/* DA9055_REG_STATUS_A (addr=0x01) */
172#define DA9055_NOKEY_STS 0x01
173#define DA9055_WAKE_STS 0x02
174#define DA9055_DVC_BUSY_STS 0x04
175#define DA9055_COMP1V2_STS 0x08
176#define DA9055_NJIG_STS 0x10
177#define DA9055_LDO5_LIM_STS 0x20
178#define DA9055_LDO6_LIM_STS 0x40
179
180/* DA9055_REG_STATUS_B (addr=0x02) */
181#define DA9055_GPI0_STS 0x01
182#define DA9055_GPI1_STS 0x02
183#define DA9055_GPI2_STS 0x04
184
185/* DA9055_REG_FAULT_LOG (addr=0x03) */
186#define DA9055_TWD_ERROR_FLG 0x01
187#define DA9055_POR_FLG 0x02
188#define DA9055_VDD_FAULT_FLG 0x04
189#define DA9055_VDD_START_FLG 0x08
190#define DA9055_TEMP_CRIT_FLG 0x10
191#define DA9055_KEY_RESET_FLG 0x20
192#define DA9055_WAIT_SHUT_FLG 0x80
193
194/* DA9055_REG_EVENT_A (addr=0x04) */
195#define DA9055_NOKEY_EINT 0x01
196#define DA9055_ALARM_EINT 0x02
197#define DA9055_TICK_EINT 0x04
198#define DA9055_ADC_RDY_EINT 0x08
199#define DA9055_SEQ_RDY_EINT 0x10
200#define DA9055_EVENTS_B_EINT 0x20
201#define DA9055_EVENTS_C_EINT 0x40
202
203/* DA9055_REG_EVENT_B (addr=0x05) */
204#define DA9055_E_WAKE_EINT 0x01
205#define DA9055_E_TEMP_EINT 0x02
206#define DA9055_E_COMP1V2_EINT 0x04
207#define DA9055_E_LDO_LIM_EINT 0x08
208#define DA9055_E_NJIG_EINT 0x20
209#define DA9055_E_VDD_MON_EINT 0x40
210#define DA9055_E_VDD_WARN_EINT 0x80
211
212/* DA9055_REG_EVENT_C (addr=0x06) */
213#define DA9055_E_GPI0_EINT 0x01
214#define DA9055_E_GPI1_EINT 0x02
215#define DA9055_E_GPI2_EINT 0x04
216
217/* DA9055_REG_IRQ_MASK_A (addr=0x07) */
218#define DA9055_M_NONKEY_EINT 0x01
219#define DA9055_M_ALARM_EINT 0x02
220#define DA9055_M_TICK_EINT 0x04
221#define DA9055_M_ADC_RDY_EINT 0x08
222#define DA9055_M_SEQ_RDY_EINT 0x10
223
224/* DA9055_REG_IRQ_MASK_B (addr=0x08) */
225#define DA9055_M_WAKE_EINT 0x01
226#define DA9055_M_TEMP_EINT 0x02
227#define DA9055_M_COMP_1V2_EINT 0x04
228#define DA9055_M_LDO_LIM_EINT 0x08
229#define DA9055_M_NJIG_EINT 0x20
230#define DA9055_M_VDD_MON_EINT 0x40
231#define DA9055_M_VDD_WARN_EINT 0x80
232
233/* DA9055_REG_IRQ_MASK_C (addr=0x09) */
234#define DA9055_M_GPI0_EINT 0x01
235#define DA9055_M_GPI1_EINT 0x02
236#define DA9055_M_GPI2_EINT 0x04
237
238/* DA9055_REG_CONTROL_A (addr=0xA) */
239#define DA9055_DEBOUNCING_SHIFT 0x00
240#define DA9055_DEBOUNCING_MASK 0x07
241#define DA9055_NRES_MODE_SHIFT 0x03
242#define DA9055_NRES_MODE_MASK 0x08
243#define DA9055_SLEW_RATE_SHIFT 0x04
244#define DA9055_SLEW_RATE_MASK 0x30
245#define DA9055_NOKEY_LOCK_SHIFT 0x06
246#define DA9055_NOKEY_LOCK_MASK 0x40
247
248/* DA9055_REG_CONTROL_B (addr=0xB) */
249#define DA9055_RTC_MODE_PD 0x01
250#define DA9055_RTC_MODE_SD_SHIFT 0x01
251#define DA9055_RTC_MODE_SD 0x02
252#define DA9055_RTC_EN 0x04
253#define DA9055_ECO_MODE_SHIFT 0x03
254#define DA9055_ECO_MODE_MASK 0x08
255#define DA9055_TWDSCALE_SHIFT 4
256#define DA9055_TWDSCALE_MASK 0x70
257#define DA9055_V_LOCK_SHIFT 0x07
258#define DA9055_V_LOCK_MASK 0x80
259
260/* DA9055_REG_CONTROL_C (addr=0xC) */
261#define DA9055_SYSTEM_EN_SHIFT 0x00
262#define DA9055_SYSTEM_EN_MASK 0x01
263#define DA9055_POWERN_EN_SHIFT 0x01
264#define DA9055_POWERN_EN_MASK 0x02
265#define DA9055_POWER1_EN_SHIFT 0x02
266#define DA9055_POWER1_EN_MASK 0x04
267
268/* DA9055_REG_CONTROL_D (addr=0xD) */
269#define DA9055_STANDBY_SHIFT 0x02
270#define DA9055_STANDBY_MASK 0x08
271#define DA9055_AUTO_BOOT_SHIFT 0x03
272#define DA9055_AUTO_BOOT_MASK 0x04
273
274/* DA9055_REG_CONTROL_E (addr=0xE) */
275#define DA9055_WATCHDOG_SHIFT 0x00
276#define DA9055_WATCHDOG_MASK 0x01
277#define DA9055_SHUTDOWN_SHIFT 0x01
278#define DA9055_SHUTDOWN_MASK 0x02
279#define DA9055_WAKE_UP_SHIFT 0x02
280#define DA9055_WAKE_UP_MASK 0x04
281
282/* DA9055_REG_GPIO (addr=0x10/0x11) */
283#define DA9055_GPIO0_PIN_SHIFT 0x00
284#define DA9055_GPIO0_PIN_MASK 0x03
285#define DA9055_GPIO0_TYPE_SHIFT 0x02
286#define DA9055_GPIO0_TYPE_MASK 0x04
287#define DA9055_GPIO0_WEN_SHIFT 0x03
288#define DA9055_GPIO0_WEN_MASK 0x08
289#define DA9055_GPIO1_PIN_SHIFT 0x04
290#define DA9055_GPIO1_PIN_MASK 0x30
291#define DA9055_GPIO1_TYPE_SHIFT 0x06
292#define DA9055_GPIO1_TYPE_MASK 0x40
293#define DA9055_GPIO1_WEN_SHIFT 0x07
294#define DA9055_GPIO1_WEN_MASK 0x80
295#define DA9055_GPIO2_PIN_SHIFT 0x00
296#define DA9055_GPIO2_PIN_MASK 0x30
297#define DA9055_GPIO2_TYPE_SHIFT 0x02
298#define DA9055_GPIO2_TYPE_MASK 0x04
299#define DA9055_GPIO2_WEN_SHIFT 0x03
300#define DA9055_GPIO2_WEN_MASK 0x08
301
302/* DA9055_REG_GPIO_MODE (addr=0x12) */
303#define DA9055_GPIO0_MODE_SHIFT 0x00
304#define DA9055_GPIO0_MODE_MASK 0x01
305#define DA9055_GPIO1_MODE_SHIFT 0x01
306#define DA9055_GPIO1_MODE_MASK 0x02
307#define DA9055_GPIO2_MODE_SHIFT 0x02
308#define DA9055_GPIO2_MODE_MASK 0x04
309
310/* DA9055_REG_BCORE_CONT (addr=0x13) */
311#define DA9055_BCORE_EN_SHIFT 0x00
312#define DA9055_BCORE_EN_MASK 0x01
313#define DA9055_BCORE_GPI_SHIFT 0x01
314#define DA9055_BCORE_GPI_MASK 0x02
315#define DA9055_BCORE_PD_DIS_SHIFT 0x03
316#define DA9055_BCORE_PD_DIS_MASK 0x04
317#define DA9055_VBCORE_SEL_SHIFT 0x04
318#define DA9055_SEL_REG_A 0x0
319#define DA9055_SEL_REG_B 0x10
320#define DA9055_VBCORE_SEL_MASK 0x10
321#define DA9055_V_GPI_MASK 0x60
322#define DA9055_V_GPI_SHIFT 0x05
323#define DA9055_E_GPI_MASK 0x06
324#define DA9055_E_GPI_SHIFT 0x01
325#define DA9055_VBCORE_GPI_SHIFT 0x05
326#define DA9055_VBCORE_GPI_MASK 0x60
327#define DA9055_BCORE_CONF_SHIFT 0x07
328#define DA9055_BCORE_CONF_MASK 0x80
329
330/* DA9055_REG_BMEM_CONT (addr=0x14) */
331#define DA9055_BMEM_EN_SHIFT 0x00
332#define DA9055_BMEM_EN_MASK 0x01
333#define DA9055_BMEM_GPI_SHIFT 0x01
334#define DA9055_BMEM_GPI_MASK 0x06
335#define DA9055_BMEM_PD_DIS_SHIFT 0x03
336#define DA9055_BMEM_PD_DIS_MASK 0x08
337#define DA9055_VBMEM_SEL_SHIT 0x04
338#define DA9055_VBMEM_SEL_VBMEM_A (0<<4)
339#define DA9055_VBMEM_SEL_VBMEM_B (1<<4)
340#define DA9055_VBMEM_SEL_MASK 0x10
341#define DA9055_VBMEM_GPI_SHIFT 0x05
342#define DA9055_VBMEM_GPI_MASK 0x60
343#define DA9055_BMEM_CONF_SHIFT 0x07
344#define DA9055_BMEM_CONF_MASK 0x80
345
346/* DA9055_REG_LDO_CONT (addr=0x15-0x1A) */
347#define DA9055_LDO_EN_SHIFT 0x00
348#define DA9055_LDO_EN_MASK 0x01
349#define DA9055_LDO_GPI_SHIFT 0x01
350#define DA9055_LDO_GPI_MASK 0x06
351#define DA9055_LDO_PD_DIS_SHIFT 0x03
352#define DA9055_LDO_PD_DIS_MASK 0x08
353#define DA9055_VLDO_SEL_SHIFT 0x04
354#define DA9055_VLDO_SEL_MASK 0x10
355#define DA9055_VLDO_SEL_VLDO_A 0x00
356#define DA9055_VLDO_SEL_VLDO_B 0x01
357#define DA9055_VLDO_GPI_SHIFT 0x05
358#define DA9055_VLDO_GPI_MASK 0x60
359#define DA9055_LDO_CONF_SHIFT 0x07
360#define DA9055_LDO_CONF_MASK 0x80
361#define DA9055_REGUALTOR_SET_A 0x00
362#define DA9055_REGUALTOR_SET_B 0x10
363
364/* DA9055_REG_ADC_MAN (addr=0x1B) */
365#define DA9055_ADC_MUX_SHIFT 0
366#define DA9055_ADC_MUX_MASK 0xF
367#define DA9055_ADC_MUX_VSYS 0x0
368#define DA9055_ADC_MUX_ADCIN1 0x01
369#define DA9055_ADC_MUX_ADCIN2 0x02
370#define DA9055_ADC_MUX_ADCIN3 0x03
371#define DA9055_ADC_MUX_T_SENSE 0x04
372#define DA9055_ADC_MAN_SHIFT 0x04
373#define DA9055_ADC_MAN_CONV 0x10
374#define DA9055_ADC_LSB_MASK 0X03
375#define DA9055_ADC_MODE_MASK 0x20
376#define DA9055_ADC_MODE_SHIFT 5
377#define DA9055_ADC_MODE_1MS (1<<5)
378#define DA9055_COMP1V2_EN_SHIFT 7
379
380/* DA9055_REG_ADC_CONT (addr=0x1C) */
381#define DA9055_ADC_AUTO_VSYS_EN_SHIFT 0
382#define DA9055_ADC_AUTO_AD1_EN_SHIFT 1
383#define DA9055_ADC_AUTO_AD2_EN_SHIFT 2
384#define DA9055_ADC_AUTO_AD3_EN_SHIFT 3
385#define DA9055_ADC_ISRC_EN_SHIFT 4
386#define DA9055_ADC_ADCIN1_DEB_SHIFT 5
387#define DA9055_ADC_ADCIN2_DEB_SHIFT 6
388#define DA9055_ADC_ADCIN3_DEB_SHIFT 7
389#define DA9055_AD1_ISRC_MASK 0x10
390#define DA9055_AD1_ISRC_SHIFT 4
391
392/* DA9055_REG_VSYS_MON (addr=0x1D) */
393#define DA9055_VSYS_VAL_SHIFT 0
394#define DA9055_VSYS_VAL_MASK 0xFF
395#define DA9055_VSYS_VAL_BASE 0x00
396#define DA9055_VSYS_VAL_MAX DA9055_VSYS_VAL_MASK
397#define DA9055_VSYS_VOLT_BASE 2500
398#define DA9055_VSYS_VOLT_INC 10
399#define DA9055_VSYS_STEPS 255
400#define DA9055_VSYS_VOLT_MIN 2500
401
402/* DA9044_REG_XXX_RES (addr=0x20-0x23) */
403#define DA9055_ADC_VAL_SHIFT 0
404#define DA9055_ADC_VAL_MASK 0xFF
405#define DA9055_ADC_VAL_BASE 0x00
406#define DA9055_ADC_VAL_MAX DA9055_ADC_VAL_MASK
407#define DA9055_ADC_VOLT_BASE 0
408#define DA9055_ADC_VSYS_VOLT_BASE 2500
409#define DA9055_ADC_VOLT_INC 10
410#define DA9055_ADC_VSYS_VOLT_INC 12
411#define DA9055_ADC_STEPS 255
412
413/* DA9055_REG_EN_32K (addr=0x35)*/
414#define DA9055_STARTUP_TIME_MASK 0x07
415#define DA9055_STARTUP_TIME_0S 0x0
416#define DA9055_STARTUP_TIME_0_52S 0x1
417#define DA9055_STARTUP_TIME_1S 0x2
418#define DA9055_CRYSTAL_EN 0x08
419#define DA9055_DELAY_MODE_EN 0x10
420#define DA9055_OUT_CLCK_GATED 0x20
421#define DA9055_RTC_CLOCK_GATED 0x40
422#define DA9055_EN_32KOUT_BUF 0x80
423
424/* DA9055_REG_RESET (addr=0x36) */
425/* Timer up to 31.744 ms */
426#define DA9055_RESET_TIMER_VAL_SHIFT 0
427#define DA9055_RESET_LOW_VAL_MASK 0x3F
428#define DA9055_RESET_LOW_VAL_BASE 0
429#define DA9055_RESET_LOW_VAL_MAX DA9055_RESET_LOW_VAL_MASK
430#define DA9055_RESET_US_LOW_BASE 1024 /* min val in units of us */
431#define DA9055_RESET_US_LOW_INC 1024 /* inc val in units of us */
432#define DA9055_RESET_US_LOW_STEP 30
433
434/* Timer up to 1048.576ms */
435#define DA9055_RESET_HIGH_VAL_MASK 0x3F
436#define DA9055_RESET_HIGH_VAL_BASE 0
437#define DA9055_RESET_HIGH_VAL_MAX DA9055_RESET_HIGH_VAL_MASK
438#define DA9055_RESET_US_HIGH_BASE 32768 /* min val in units of us */
439#define DA9055_RESET_US_HIGH_INC 32768 /* inv val in units of us */
440#define DA9055_RESET_US_HIGH_STEP 31
441
442/* DA9055_REG_BUCK_ILIM (addr=0x37)*/
443#define DA9055_BMEM_ILIM_SHIFT 0
444#define DA9055_ILIM_MASK 0x3
445#define DA9055_ILIM_500MA 0x0
446#define DA9055_ILIM_600MA 0x1
447#define DA9055_ILIM_700MA 0x2
448#define DA9055_ILIM_800MA 0x3
449#define DA9055_BCORE_ILIM_SHIFT 2
450
451/* DA9055_REG_BCORE_MODE (addr=0x38) */
452#define DA9055_BMEM_MODE_SHIFT 0
453#define DA9055_MODE_MASK 0x3
454#define DA9055_MODE_AB 0x0
455#define DA9055_MODE_SLEEP 0x1
456#define DA9055_MODE_SYNCHRO 0x2
457#define DA9055_MODE_AUTO 0x3
458#define DA9055_BCORE_MODE_SHIFT 2
459
460/* DA9055_REG_VBCORE_A/B (addr=0x39/0x41)*/
461#define DA9055_VBCORE_VAL_SHIFT 0
462#define DA9055_VBCORE_VAL_MASK 0x3F
463#define DA9055_VBCORE_VAL_BASE 0x09
464#define DA9055_VBCORE_VAL_MAX DA9055_VBCORE_VAL_MASK
465#define DA9055_VBCORE_VOLT_BASE 750
466#define DA9055_VBCORE_VOLT_INC 25
467#define DA9055_VBCORE_STEPS 53
468#define DA9055_VBCORE_VOLT_MIN DA9055_VBCORE_VOLT_BASE
469#define DA9055_BCORE_SL_SYNCHRO (0<<7)
470#define DA9055_BCORE_SL_SLEEP (1<<7)
471
472/* DA9055_REG_VBMEM_A/B (addr=0x3A/0x42)*/
473#define DA9055_VBMEM_VAL_SHIFT 0
474#define DA9055_VBMEM_VAL_MASK 0x3F
475#define DA9055_VBMEM_VAL_BASE 0x00
476#define DA9055_VBMEM_VAL_MAX DA9055_VBMEM_VAL_MASK
477#define DA9055_VBMEM_VOLT_BASE 925
478#define DA9055_VBMEM_VOLT_INC 25
479#define DA9055_VBMEM_STEPS 63
480#define DA9055_VBMEM_VOLT_MIN DA9055_VBMEM_VOLT_BASE
481#define DA9055_BCMEM_SL_SYNCHRO (0<<7)
482#define DA9055_BCMEM_SL_SLEEP (1<<7)
483
484
485/* DA9055_REG_VLDO (addr=0x3B-0x40/0x43-0x48)*/
486#define DA9055_VLDO_VAL_SHIFT 0
487#define DA9055_VLDO_VAL_MASK 0x3F
488#define DA9055_VLDO6_VAL_MASK 0x7F
489#define DA9055_VLDO_VAL_BASE 0x02
490#define DA9055_VLDO2_VAL_BASE 0x03
491#define DA9055_VLDO6_VAL_BASE 0x00
492#define DA9055_VLDO_VAL_MAX DA9055_VLDO_VAL_MASK
493#define DA9055_VLDO6_VAL_MAX DA9055_VLDO6_VAL_MASK
494#define DA9055_VLDO_VOLT_BASE 900
495#define DA9055_VLDO_VOLT_INC 50
496#define DA9055_VLDO6_VOLT_INC 20
497#define DA9055_VLDO_STEPS 48
498#define DA9055_VLDO5_STEPS 37
499#define DA9055_VLDO6_STEPS 120
500#define DA9055_VLDO_VOLT_MIN DA9055_VLDO_VOLT_BASE
501#define DA9055_LDO_MODE_SHIFT 7
502#define DA9055_LDO_SL_NORMAL 0
503#define DA9055_LDO_SL_SLEEP 1
504
505/* DA9055_REG_OTP_CONT (addr=0x50) */
506#define DA9055_OTP_TIM_NORMAL (0<<0)
507#define DA9055_OTP_TIM_MARGINAL (1<<0)
508#define DA9055_OTP_GP_RD_SHIFT 1
509#define DA9055_OTP_APPS_RD_SHIFT 2
510#define DA9055_PC_DONE_SHIFT 3
511#define DA9055_OTP_GP_LOCK_SHIFT 4
512#define DA9055_OTP_APPS_LOCK_SHIFT 5
513#define DA9055_OTP_CONF_LOCK_SHIFT 6
514#define DA9055_OTP_WRITE_DIS_SHIFT 7
515
516/* DA9055_REG_COUNT_S (addr=0x53) */
517#define DA9055_RTC_SEC 0x3F
518#define DA9055_RTC_MONITOR_EN 0x40
519#define DA9055_RTC_READ 0x80
520
521/* DA9055_REG_COUNT_MI (addr=0x54) */
522#define DA9055_RTC_MIN 0x3F
523
524/* DA9055_REG_COUNT_H (addr=0x55) */
525#define DA9055_RTC_HOUR 0x1F
526
527/* DA9055_REG_COUNT_D (addr=0x56) */
528#define DA9055_RTC_DAY 0x1F
529
530/* DA9055_REG_COUNT_MO (addr=0x57) */
531#define DA9055_RTC_MONTH 0x0F
532
533/* DA9055_REG_COUNT_Y (addr=0x58) */
534#define DA9055_RTC_YEAR 0x3F
535#define DA9055_RTC_YEAR_BASE 2000
536
537/* DA9055_REG_ALARM_MI (addr=0x59) */
538#define DA9055_RTC_ALM_MIN 0x3F
539#define DA9055_ALARM_STATUS_SHIFT 6
540#define DA9055_ALARM_STATUS_MASK 0x3
541#define DA9055_ALARM_STATUS_NO_ALARM 0x0
542#define DA9055_ALARM_STATUS_TICK 0x1
543#define DA9055_ALARM_STATUS_TIMER_ALARM 0x2
544#define DA9055_ALARM_STATUS_BOTH 0x3
545
546/* DA9055_REG_ALARM_H (addr=0x5A) */
547#define DA9055_RTC_ALM_HOUR 0x1F
548
549/* DA9055_REG_ALARM_D (addr=0x5B) */
550#define DA9055_RTC_ALM_DAY 0x1F
551
552/* DA9055_REG_ALARM_MO (addr=0x5C) */
553#define DA9055_RTC_ALM_MONTH 0x0F
554#define DA9055_RTC_TICK_WAKE_MASK 0x20
555#define DA9055_RTC_TICK_WAKE_SHIFT 5
556#define DA9055_RTC_TICK_TYPE 0x10
557#define DA9055_RTC_TICK_TYPE_SHIFT 0x4
558#define DA9055_RTC_TICK_SEC 0x0
559#define DA9055_RTC_TICK_MIN 0x1
560#define DA9055_ALARAM_TICK_WAKE 0x20
561
562/* DA9055_REG_ALARM_Y (addr=0x5D) */
563#define DA9055_RTC_TICK_EN 0x80
564#define DA9055_RTC_ALM_EN 0x40
565#define DA9055_RTC_TICK_ALM_MASK 0xC0
566#define DA9055_RTC_ALM_YEAR 0x3F
567
568/* DA9055_REG_TRIM_CLDR (addr=0x62) */
569#define DA9055_TRIM_32K_SHIFT 0
570#define DA9055_TRIM_32K_MASK 0x7F
571#define DA9055_TRIM_DECREMENT (1<<7)
572#define DA9055_TRIM_INCREMENT (0<<7)
573#define DA9055_TRIM_VAL_BASE 0x0
574#define DA9055_TRIM_PPM_BASE 0x0 /* min val in units of 0.1PPM */
575#define DA9055_TRIM_PPM_INC 19 /* min inc in units of 0.1PPM */
576#define DA9055_TRIM_STEPS 127
577
578/* DA9055_REG_CONFIG_A (addr=0x65) */
579#define DA9055_PM_I_V_VDDCORE (0<<0)
580#define DA9055_PM_I_V_VDD_IO (1<<0)
581#define DA9055_VDD_FAULT_TYPE_ACT_LOW (0<<1)
582#define DA9055_VDD_FAULT_TYPE_ACT_HIGH (1<<1)
583#define DA9055_PM_O_TYPE_PUSH_PULL (0<<2)
584#define DA9055_PM_O_TYPE_OPEN_DRAIN (1<<2)
585#define DA9055_IRQ_TYPE_ACT_LOW (0<<3)
586#define DA9055_IRQ_TYPE_ACT_HIGH (1<<3)
587#define DA9055_NIRQ_MODE_IMM (0<<4)
588#define DA9055_NIRQ_MODE_ACTIVE (1<<4)
589#define DA9055_GPI_V_VDDCORE (0<<5)
590#define DA9055_GPI_V_VDD_IO (1<<5)
591#define DA9055_PM_IF_V_VDDCORE (0<<6)
592#define DA9055_PM_IF_V_VDD_IO (1<<6)
593
594/* DA9055_REG_CONFIG_B (addr=0x66) */
595#define DA9055_VDD_FAULT_VAL_SHIFT 0
596#define DA9055_VDD_FAULT_VAL_MASK 0xF
597#define DA9055_VDD_FAULT_VAL_BASE 0x0
598#define DA9055_VDD_FAULT_VAL_MAX DA9055_VDD_FAULT_VAL_MASK
599#define DA9055_VDD_FAULT_VOLT_BASE 2500
600#define DA9055_VDD_FAULT_VOLT_INC 50
601#define DA9055_VDD_FAULT_STEPS 15
602
603#define DA9055_VDD_HYST_VAL_SHIFT 4
604#define DA9055_VDD_HYST_VAL_MASK 0x7
605#define DA9055_VDD_HYST_VAL_BASE 0x0
606#define DA9055_VDD_HYST_VAL_MAX DA9055_VDD_HYST_VAL_MASK
607#define DA9055_VDD_HYST_VOLT_BASE 100
608#define DA9055_VDD_HYST_VOLT_INC 50
609#define DA9055_VDD_HYST_STEPS 7
610#define DA9055_VDD_HYST_VOLT_MIN DA9055_VDD_HYST_VOLT_BASE
611
612#define DA9055_VDD_FAULT_EN_SHIFT 7
613
614/* DA9055_REG_CONFIG_C (addr=0x67) */
615#define DA9055_BCORE_CLK_INV_SHIFT 0
616#define DA9055_BMEM_CLK_INV_SHIFT 1
617#define DA9055_NFAULT_CONF_SHIFT 2
618#define DA9055_LDO_SD_SHIFT 4
619#define DA9055_LDO5_BYP_SHIFT 6
620#define DA9055_LDO6_BYP_SHIFT 7
621
622/* DA9055_REG_CONFIG_D (addr=0x68) */
623#define DA9055_NONKEY_PIN_SHIFT 0
624#define DA9055_NONKEY_PIN_MASK 0x3
625#define DA9055_NONKEY_PIN_PORT_MODE 0x0
626#define DA9055_NONKEY_PIN_KEY_MODE 0x1
627#define DA9055_NONKEY_PIN_MULTI_FUNC 0x2
628#define DA9055_NONKEY_PIN_DEDICT 0x3
629#define DA9055_NONKEY_SD_SHIFT 2
630#define DA9055_KEY_DELAY_SHIFT 3
631#define DA9055_KEY_DELAY_MASK 0x3
632#define DA9055_KEY_DELAY_4S 0x0
633#define DA9055_KEY_DELAY_6S 0x1
634#define DA9055_KEY_DELAY_8S 0x2
635#define DA9055_KEY_DELAY_10S 0x3
636
637/* DA9055_REG_CONFIG_E (addr=0x69) */
638#define DA9055_GPIO_PUPD_PULL_UP 0x0
639#define DA9055_GPIO_PUPD_OPEN_DRAIN 0x1
640#define DA9055_GPIO0_PUPD_SHIFT 0
641#define DA9055_GPIO1_PUPD_SHIFT 1
642#define DA9055_GPIO2_PUPD_SHIFT 2
643#define DA9055_UVOV_DELAY_SHIFT 4
644#define DA9055_UVOV_DELAY_MASK 0x3
645#define DA9055_RESET_DURATION_SHIFT 6
646#define DA9055_RESET_DURATION_MASK 0x3
647#define DA9055_RESET_DURATION_0MS 0x0
648#define DA9055_RESET_DURATION_100MS 0x1
649#define DA9055_RESET_DURATION_500MS 0x2
650#define DA9055_RESET_DURATION_1000MS 0x3
651
652/* DA9055_REG_MON_REG_1 (addr=0x6A) */
653#define DA9055_MON_THRES_SHIFT 0
654#define DA9055_MON_THRES_MASK 0x3
655#define DA9055_MON_RES_SHIFT 2
656#define DA9055_MON_DEB_SHIFT 3
657#define DA9055_MON_MODE_SHIFT 4
658#define DA9055_MON_MODE_MASK 0x3
659#define DA9055_START_MAX_SHIFT 6
660#define DA9055_START_MAX_MASK 0x3
661
662/* DA9055_REG_MON_REG_2 (addr=0x6B) */
663#define DA9055_LDO1_MON_EN_SHIFT 0
664#define DA9055_LDO2_MON_EN_SHIFT 1
665#define DA9055_LDO3_MON_EN_SHIFT 2
666#define DA9055_LDO4_MON_EN_SHIFT 3
667#define DA9055_LDO5_MON_EN_SHIFT 4
668#define DA9055_LDO6_MON_EN_SHIFT 5
669#define DA9055_BCORE_MON_EN_SHIFT 6
670#define DA9055_BMEM_MON_EN_SHIFT 7
671
672/* DA9055_REG_CONFIG_F (addr=0x6C) */
673#define DA9055_LDO1_DEF_SHIFT 0
674#define DA9055_LDO2_DEF_SHIFT 1
675#define DA9055_LDO3_DEF_SHIFT 2
676#define DA9055_LDO4_DEF_SHIFT 3
677#define DA9055_LDO5_DEF_SHIFT 4
678#define DA9055_LDO6_DEF_SHIFT 5
679#define DA9055_BCORE_DEF_SHIFT 6
680#define DA9055_BMEM_DEF_SHIFT 7
681
682/* DA9055_REG_MON_REG_4 (addr=0x6D) */
683#define DA9055_MON_A8_IDX_SHIFT 0
684#define DA9055_MON_A89_IDX_MASK 0x3
685#define DA9055_MON_A89_IDX_NONE 0x0
686#define DA9055_MON_A89_IDX_BUCKCORE 0x1
687#define DA9055_MON_A89_IDX_LDO3 0x2
688#define DA9055_MON_A9_IDX_SHIFT 5
689
690/* DA9055_REG_MON_REG_5 (addr=0x6E) */
691#define DA9055_MON_A10_IDX_SHIFT 0
692#define DA9055_MON_A10_IDX_MASK 0x3
693#define DA9055_MON_A10_IDX_NONE 0x0
694#define DA9055_MON_A10_IDX_LDO1 0x1
695#define DA9055_MON_A10_IDX_LDO2 0x2
696#define DA9055_MON_A10_IDX_LDO5 0x3
697#define DA9055_MON_A10_IDX_LDO6 0x4
698
699#endif /* __DA9055_REG_H */
diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h
index 6ee4247df11..917dbcab701 100644
--- a/include/linux/mfd/db8500-prcmu.h
+++ b/include/linux/mfd/db8500-prcmu.h
@@ -11,24 +11,7 @@
11#define __MFD_DB8500_PRCMU_H 11#define __MFD_DB8500_PRCMU_H
12 12
13#include <linux/interrupt.h> 13#include <linux/interrupt.h>
14#include <linux/bitops.h> 14#include <linux/notifier.h>
15
16/*
17 * Registers
18 */
19#define DB8500_PRCM_GPIOCR 0x138
20#define DB8500_PRCM_GPIOCR_DBG_UARTMOD_CMD0 BIT(0)
21#define DB8500_PRCM_GPIOCR_DBG_STM_APE_CMD BIT(9)
22#define DB8500_PRCM_GPIOCR_DBG_STM_MOD_CMD1 BIT(11)
23#define DB8500_PRCM_GPIOCR_SPI2_SELECT BIT(23)
24
25#define DB8500_PRCM_LINE_VALUE 0x170
26#define DB8500_PRCM_LINE_VALUE_HSI_CAWAKE0 BIT(3)
27
28#define DB8500_PRCM_DSI_SW_RESET 0x324
29#define DB8500_PRCM_DSI_SW_RESET_DSI0_SW_RESETN BIT(0)
30#define DB8500_PRCM_DSI_SW_RESET_DSI1_SW_RESETN BIT(1)
31#define DB8500_PRCM_DSI_SW_RESET_DSI2_SW_RESETN BIT(2)
32 15
33/* This portion previously known as <mach/prcmu-fw-defs_v1.h> */ 16/* This portion previously known as <mach/prcmu-fw-defs_v1.h> */
34 17
@@ -150,7 +133,7 @@ enum ap_pwrst {
150 * @APEXECUTE_TO_APIDLE: Power state transition from ApExecute to ApIdle 133 * @APEXECUTE_TO_APIDLE: Power state transition from ApExecute to ApIdle
151 */ 134 */
152enum ap_pwrst_trans { 135enum ap_pwrst_trans {
153 PRCMU_AP_NO_CHANGE = 0x00, 136 NO_TRANSITION = 0x00,
154 APEXECUTE_TO_APSLEEP = 0x01, 137 APEXECUTE_TO_APSLEEP = 0x01,
155 APIDLE_TO_APSLEEP = 0x02, /* To be removed */ 138 APIDLE_TO_APSLEEP = 0x02, /* To be removed */
156 PRCMU_AP_SLEEP = 0x01, 139 PRCMU_AP_SLEEP = 0x01,
@@ -163,6 +146,54 @@ enum ap_pwrst_trans {
163}; 146};
164 147
165/** 148/**
149 * enum ddr_pwrst - DDR power states definition
150 * @DDR_PWR_STATE_UNCHANGED: SDRAM and DDR controller state is unchanged
151 * @DDR_PWR_STATE_ON:
152 * @DDR_PWR_STATE_OFFLOWLAT:
153 * @DDR_PWR_STATE_OFFHIGHLAT:
154 */
155enum ddr_pwrst {
156 DDR_PWR_STATE_UNCHANGED = 0x00,
157 DDR_PWR_STATE_ON = 0x01,
158 DDR_PWR_STATE_OFFLOWLAT = 0x02,
159 DDR_PWR_STATE_OFFHIGHLAT = 0x03
160};
161
162/**
163 * enum arm_opp - ARM OPP states definition
164 * @ARM_OPP_INIT:
165 * @ARM_NO_CHANGE: The ARM operating point is unchanged
166 * @ARM_100_OPP: The new ARM operating point is arm100opp
167 * @ARM_50_OPP: The new ARM operating point is arm50opp
168 * @ARM_MAX_OPP: Operating point is "max" (more than 100)
169 * @ARM_MAX_FREQ100OPP: Set max opp if available, else 100
170 * @ARM_EXTCLK: The new ARM operating point is armExtClk
171 */
172enum arm_opp {
173 ARM_OPP_INIT = 0x00,
174 ARM_NO_CHANGE = 0x01,
175 ARM_100_OPP = 0x02,
176 ARM_50_OPP = 0x03,
177 ARM_MAX_OPP = 0x04,
178 ARM_MAX_FREQ100OPP = 0x05,
179 ARM_EXTCLK = 0x07
180};
181
182/**
183 * enum ape_opp - APE OPP states definition
184 * @APE_OPP_INIT:
185 * @APE_NO_CHANGE: The APE operating point is unchanged
186 * @APE_100_OPP: The new APE operating point is ape100opp
187 * @APE_50_OPP: 50%
188 */
189enum ape_opp {
190 APE_OPP_INIT = 0x00,
191 APE_NO_CHANGE = 0x01,
192 APE_100_OPP = 0x02,
193 APE_50_OPP = 0x03
194};
195
196/**
166 * enum hw_acc_state - State definition for hardware accelerator 197 * enum hw_acc_state - State definition for hardware accelerator
167 * @HW_NO_CHANGE: The hardware accelerator state must remain unchanged 198 * @HW_NO_CHANGE: The hardware accelerator state must remain unchanged
168 * @HW_OFF: The hardware accelerator must be switched off 199 * @HW_OFF: The hardware accelerator must be switched off
@@ -438,26 +469,122 @@ enum auto_enable {
438 469
439/* End of file previously known as prcmu-fw-defs_v1.h */ 470/* End of file previously known as prcmu-fw-defs_v1.h */
440 471
472/* PRCMU Wakeup defines */
473enum prcmu_wakeup_index {
474 PRCMU_WAKEUP_INDEX_RTC,
475 PRCMU_WAKEUP_INDEX_RTT0,
476 PRCMU_WAKEUP_INDEX_RTT1,
477 PRCMU_WAKEUP_INDEX_HSI0,
478 PRCMU_WAKEUP_INDEX_HSI1,
479 PRCMU_WAKEUP_INDEX_USB,
480 PRCMU_WAKEUP_INDEX_ABB,
481 PRCMU_WAKEUP_INDEX_ABB_FIFO,
482 PRCMU_WAKEUP_INDEX_ARM,
483 NUM_PRCMU_WAKEUP_INDICES
484};
485#define PRCMU_WAKEUP(_name) (BIT(PRCMU_WAKEUP_INDEX_##_name))
486
487/* PRCMU QoS APE OPP class */
488#define PRCMU_QOS_APE_OPP 1
489#define PRCMU_QOS_DDR_OPP 2
490#define PRCMU_QOS_DEFAULT_VALUE -1
491
441/** 492/**
442 * enum prcmu_power_status - results from set_power_state 493 * enum hw_acc_dev - enum for hw accelerators
443 * @PRCMU_SLEEP_OK: Sleep went ok 494 * @HW_ACC_SVAMMDSP: for SVAMMDSP
444 * @PRCMU_DEEP_SLEEP_OK: DeepSleep went ok 495 * @HW_ACC_SVAPIPE: for SVAPIPE
445 * @PRCMU_IDLE_OK: Idle went ok 496 * @HW_ACC_SIAMMDSP: for SIAMMDSP
446 * @PRCMU_DEEPIDLE_OK: DeepIdle went ok 497 * @HW_ACC_SIAPIPE: for SIAPIPE
447 * @PRCMU_PRCMU2ARMPENDINGIT_ER: Pending interrupt detected 498 * @HW_ACC_SGA: for SGA
448 * @PRCMU_ARMPENDINGIT_ER: Pending interrupt detected 499 * @HW_ACC_B2R2: for B2R2
500 * @HW_ACC_MCDE: for MCDE
501 * @HW_ACC_ESRAM1: for ESRAM1
502 * @HW_ACC_ESRAM2: for ESRAM2
503 * @HW_ACC_ESRAM3: for ESRAM3
504 * @HW_ACC_ESRAM4: for ESRAM4
505 * @NUM_HW_ACC: number of hardware accelerators
506 *
507 * Different hw accelerators which can be turned ON/
508 * OFF or put into retention (MMDSPs and ESRAMs).
509 * Used with EPOD API.
449 * 510 *
511 * NOTE! Deprecated, to be removed when all users switched over to use the
512 * regulator API.
450 */ 513 */
451enum prcmu_power_status { 514enum hw_acc_dev {
452 PRCMU_SLEEP_OK = 0xf3, 515 HW_ACC_SVAMMDSP,
453 PRCMU_DEEP_SLEEP_OK = 0xf6, 516 HW_ACC_SVAPIPE,
454 PRCMU_IDLE_OK = 0xf0, 517 HW_ACC_SIAMMDSP,
455 PRCMU_DEEPIDLE_OK = 0xe3, 518 HW_ACC_SIAPIPE,
456 PRCMU_PRCMU2ARMPENDINGIT_ER = 0x91, 519 HW_ACC_SGA,
457 PRCMU_ARMPENDINGIT_ER = 0x93, 520 HW_ACC_B2R2,
521 HW_ACC_MCDE,
522 HW_ACC_ESRAM1,
523 HW_ACC_ESRAM2,
524 HW_ACC_ESRAM3,
525 HW_ACC_ESRAM4,
526 NUM_HW_ACC
458}; 527};
459 528
460/* 529/*
530 * Ids for all EPODs (power domains)
531 * - EPOD_ID_SVAMMDSP: power domain for SVA MMDSP
532 * - EPOD_ID_SVAPIPE: power domain for SVA pipe
533 * - EPOD_ID_SIAMMDSP: power domain for SIA MMDSP
534 * - EPOD_ID_SIAPIPE: power domain for SIA pipe
535 * - EPOD_ID_SGA: power domain for SGA
536 * - EPOD_ID_B2R2_MCDE: power domain for B2R2 and MCDE
537 * - EPOD_ID_ESRAM12: power domain for ESRAM 1 and 2
538 * - EPOD_ID_ESRAM34: power domain for ESRAM 3 and 4
539 * - NUM_EPOD_ID: number of power domains
540 */
541#define EPOD_ID_SVAMMDSP 0
542#define EPOD_ID_SVAPIPE 1
543#define EPOD_ID_SIAMMDSP 2
544#define EPOD_ID_SIAPIPE 3
545#define EPOD_ID_SGA 4
546#define EPOD_ID_B2R2_MCDE 5
547#define EPOD_ID_ESRAM12 6
548#define EPOD_ID_ESRAM34 7
549#define NUM_EPOD_ID 8
550
551/*
552 * state definition for EPOD (power domain)
553 * - EPOD_STATE_NO_CHANGE: The EPOD should remain unchanged
554 * - EPOD_STATE_OFF: The EPOD is switched off
555 * - EPOD_STATE_RAMRET: The EPOD is switched off with its internal RAM in
556 * retention
557 * - EPOD_STATE_ON_CLK_OFF: The EPOD is switched on, clock is still off
558 * - EPOD_STATE_ON: Same as above, but with clock enabled
559 */
560#define EPOD_STATE_NO_CHANGE 0x00
561#define EPOD_STATE_OFF 0x01
562#define EPOD_STATE_RAMRET 0x02
563#define EPOD_STATE_ON_CLK_OFF 0x03
564#define EPOD_STATE_ON 0x04
565
566/*
567 * CLKOUT sources
568 */
569#define PRCMU_CLKSRC_CLK38M 0x00
570#define PRCMU_CLKSRC_ACLK 0x01
571#define PRCMU_CLKSRC_SYSCLK 0x02
572#define PRCMU_CLKSRC_LCDCLK 0x03
573#define PRCMU_CLKSRC_SDMMCCLK 0x04
574#define PRCMU_CLKSRC_TVCLK 0x05
575#define PRCMU_CLKSRC_TIMCLK 0x06
576#define PRCMU_CLKSRC_CLK009 0x07
577/* These are only valid for CLKOUT1: */
578#define PRCMU_CLKSRC_SIAMMDSPCLK 0x40
579#define PRCMU_CLKSRC_I2CCLK 0x41
580#define PRCMU_CLKSRC_MSP02CLK 0x42
581#define PRCMU_CLKSRC_ARMPLL_OBSCLK 0x43
582#define PRCMU_CLKSRC_HSIRXCLK 0x44
583#define PRCMU_CLKSRC_HSITXCLK 0x45
584#define PRCMU_CLKSRC_ARMCLKFIX 0x46
585#define PRCMU_CLKSRC_HDMICLK 0x47
586
587/*
461 * Definitions for autonomous power management configuration. 588 * Definitions for autonomous power management configuration.
462 */ 589 */
463 590
@@ -493,88 +620,126 @@ struct prcmu_auto_pm_config {
493 u8 sva_policy; 620 u8 sva_policy;
494}; 621};
495 622
496#define PRCMU_FW_PROJECT_U8500 2 623/**
497#define PRCMU_FW_PROJECT_U9500 4 624 * enum ddr_opp - DDR OPP states definition
498#define PRCMU_FW_PROJECT_U8500_C2 7 625 * @DDR_100_OPP: The new DDR operating point is ddr100opp
499#define PRCMU_FW_PROJECT_U9500_C2 11 626 * @DDR_50_OPP: The new DDR operating point is ddr50opp
500#define PRCMU_FW_PROJECT_U8520 13 627 * @DDR_25_OPP: The new DDR operating point is ddr25opp
501#define PRCMU_FW_PROJECT_U8420 14 628 */
502 629enum ddr_opp {
503struct prcmu_fw_version { 630 DDR_100_OPP = 0x00,
504 u8 project; 631 DDR_50_OPP = 0x01,
505 u8 api_version; 632 DDR_25_OPP = 0x02,
506 u8 func_version; 633};
507 u8 errata; 634
635/*
636 * Clock identifiers.
637 */
638enum prcmu_clock {
639 PRCMU_SGACLK,
640 PRCMU_UARTCLK,
641 PRCMU_MSP02CLK,
642 PRCMU_MSP1CLK,
643 PRCMU_I2CCLK,
644 PRCMU_SDMMCCLK,
645 PRCMU_SLIMCLK,
646 PRCMU_PER1CLK,
647 PRCMU_PER2CLK,
648 PRCMU_PER3CLK,
649 PRCMU_PER5CLK,
650 PRCMU_PER6CLK,
651 PRCMU_PER7CLK,
652 PRCMU_LCDCLK,
653 PRCMU_BMLCLK,
654 PRCMU_HSITXCLK,
655 PRCMU_HSIRXCLK,
656 PRCMU_HDMICLK,
657 PRCMU_APEATCLK,
658 PRCMU_APETRACECLK,
659 PRCMU_MCDECLK,
660 PRCMU_IPI2CCLK,
661 PRCMU_DSIALTCLK,
662 PRCMU_DMACLK,
663 PRCMU_B2R2CLK,
664 PRCMU_TVCLK,
665 PRCMU_SSPCLK,
666 PRCMU_RNGCLK,
667 PRCMU_UICCCLK,
668 PRCMU_NUM_REG_CLOCKS,
669 PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS,
670 PRCMU_TIMCLK,
508}; 671};
509 672
673/*
674 * Definitions for controlling ESRAM0 in deep sleep.
675 */
676#define ESRAM0_DEEP_SLEEP_STATE_OFF 1
677#define ESRAM0_DEEP_SLEEP_STATE_RET 2
678
679#ifdef CONFIG_MFD_DB8500_PRCMU
680void __init prcmu_early_init(void);
681int prcmu_set_display_clocks(void);
682int prcmu_disable_dsipll(void);
683int prcmu_enable_dsipll(void);
684#else
685static inline void __init prcmu_early_init(void) {}
686#endif
687
510#ifdef CONFIG_MFD_DB8500_PRCMU 688#ifdef CONFIG_MFD_DB8500_PRCMU
511 689
512void db8500_prcmu_early_init(void);
513int prcmu_set_rc_a2p(enum romcode_write); 690int prcmu_set_rc_a2p(enum romcode_write);
514enum romcode_read prcmu_get_rc_p2a(void); 691enum romcode_read prcmu_get_rc_p2a(void);
515enum ap_pwrst prcmu_get_xp70_current_state(void); 692enum ap_pwrst prcmu_get_xp70_current_state(void);
693int prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll);
694
695void prcmu_enable_wakeups(u32 wakeups);
696static inline void prcmu_disable_wakeups(void)
697{
698 prcmu_enable_wakeups(0);
699}
700
701void prcmu_config_abb_event_readout(u32 abb_events);
702void prcmu_get_abb_event_buffer(void __iomem **buf);
703int prcmu_set_arm_opp(u8 opp);
704int prcmu_get_arm_opp(void);
516bool prcmu_has_arm_maxopp(void); 705bool prcmu_has_arm_maxopp(void);
517struct prcmu_fw_version *prcmu_get_fw_version(void); 706bool prcmu_is_u8400(void);
707int prcmu_set_ape_opp(u8 opp);
708int prcmu_get_ape_opp(void);
709int prcmu_request_ape_opp_100_voltage(bool enable);
518int prcmu_release_usb_wakeup_state(void); 710int prcmu_release_usb_wakeup_state(void);
711int prcmu_set_ddr_opp(u8 opp);
712int prcmu_get_ddr_opp(void);
713unsigned long prcmu_qos_get_cpufreq_opp_delay(void);
714void prcmu_qos_set_cpufreq_opp_delay(unsigned long);
715/* NOTE! Use regulator framework instead */
716int prcmu_set_hwacc(u16 hw_acc_dev, u8 state);
717int prcmu_set_epod(u16 epod_id, u8 epod_state);
519void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, 718void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep,
520 struct prcmu_auto_pm_config *idle); 719 struct prcmu_auto_pm_config *idle);
521bool prcmu_is_auto_pm_enabled(void); 720bool prcmu_is_auto_pm_enabled(void);
522 721
523int prcmu_config_clkout(u8 clkout, u8 source, u8 div); 722int prcmu_config_clkout(u8 clkout, u8 source, u8 div);
723int prcmu_request_clock(u8 clock, bool enable);
524int prcmu_set_clock_divider(u8 clock, u8 divider); 724int prcmu_set_clock_divider(u8 clock, u8 divider);
525int db8500_prcmu_config_hotdog(u8 threshold); 725int prcmu_config_esram0_deep_sleep(u8 state);
526int db8500_prcmu_config_hotmon(u8 low, u8 high); 726int prcmu_config_hotdog(u8 threshold);
527int db8500_prcmu_start_temp_sense(u16 cycles32k); 727int prcmu_config_hotmon(u8 low, u8 high);
528int db8500_prcmu_stop_temp_sense(void); 728int prcmu_start_temp_sense(u16 cycles32k);
729int prcmu_stop_temp_sense(void);
529int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); 730int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
530int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); 731int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
531 732
532int prcmu_ac_wake_req(void); 733void prcmu_ac_wake_req(void);
533void prcmu_ac_sleep_req(void); 734void prcmu_ac_sleep_req(void);
534void db8500_prcmu_modem_reset(void); 735void prcmu_system_reset(u16 reset_code);
535 736void prcmu_modem_reset(void);
536int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off); 737bool prcmu_is_ac_wake_requested(void);
537int db8500_prcmu_enable_a9wdog(u8 id); 738void prcmu_enable_spi2(void);
538int db8500_prcmu_disable_a9wdog(u8 id); 739void prcmu_disable_spi2(void);
539int db8500_prcmu_kick_a9wdog(u8 id);
540int db8500_prcmu_load_a9wdog(u8 id, u32 val);
541
542void db8500_prcmu_system_reset(u16 reset_code);
543int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll);
544u8 db8500_prcmu_get_power_state_result(void);
545int db8500_prcmu_gic_decouple(void);
546int db8500_prcmu_gic_recouple(void);
547int db8500_prcmu_copy_gic_settings(void);
548bool db8500_prcmu_gic_pending_irq(void);
549bool db8500_prcmu_pending_irq(void);
550bool db8500_prcmu_is_cpu_in_wfi(int cpu);
551void db8500_prcmu_enable_wakeups(u32 wakeups);
552int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state);
553int db8500_prcmu_request_clock(u8 clock, bool enable);
554int db8500_prcmu_set_display_clocks(void);
555int db8500_prcmu_disable_dsipll(void);
556int db8500_prcmu_enable_dsipll(void);
557void db8500_prcmu_config_abb_event_readout(u32 abb_events);
558void db8500_prcmu_get_abb_event_buffer(void __iomem **buf);
559int db8500_prcmu_config_esram0_deep_sleep(u8 state);
560u16 db8500_prcmu_get_reset_code(void);
561bool db8500_prcmu_is_ac_wake_requested(void);
562int db8500_prcmu_set_arm_opp(u8 opp);
563int db8500_prcmu_get_arm_opp(void);
564int db8500_prcmu_set_ape_opp(u8 opp);
565int db8500_prcmu_get_ape_opp(void);
566int db8500_prcmu_request_ape_opp_100_voltage(bool enable);
567int db8500_prcmu_set_ddr_opp(u8 opp);
568int db8500_prcmu_get_ddr_opp(void);
569
570u32 db8500_prcmu_read(unsigned int reg);
571void db8500_prcmu_write(unsigned int reg, u32 value);
572void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value);
573 740
574#else /* !CONFIG_MFD_DB8500_PRCMU */ 741#else /* !CONFIG_MFD_DB8500_PRCMU */
575 742
576static inline void db8500_prcmu_early_init(void) {}
577
578static inline int prcmu_set_rc_a2p(enum romcode_write code) 743static inline int prcmu_set_rc_a2p(enum romcode_write code)
579{ 744{
580 return 0; 745 return 0;
@@ -590,209 +755,224 @@ static inline enum ap_pwrst prcmu_get_xp70_current_state(void)
590 return AP_EXECUTE; 755 return AP_EXECUTE;
591} 756}
592 757
593static inline bool prcmu_has_arm_maxopp(void) 758static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
759 bool keep_ap_pll)
594{ 760{
595 return false; 761 return 0;
596} 762}
597 763
598static inline struct prcmu_fw_version *prcmu_get_fw_version(void) 764static inline void prcmu_enable_wakeups(u32 wakeups) {}
599{
600 return NULL;
601}
602 765
603static inline int db8500_prcmu_set_ape_opp(u8 opp) 766static inline void prcmu_disable_wakeups(void) {}
604{
605 return 0;
606}
607 767
608static inline int db8500_prcmu_get_ape_opp(void) 768static inline void prcmu_config_abb_event_readout(u32 abb_events) {}
609{
610 return APE_100_OPP;
611}
612 769
613static inline int db8500_prcmu_request_ape_opp_100_voltage(bool enable) 770static inline int prcmu_set_arm_opp(u8 opp)
614{ 771{
615 return 0; 772 return 0;
616} 773}
617 774
618static inline int prcmu_release_usb_wakeup_state(void) 775static inline int prcmu_get_arm_opp(void)
619{ 776{
620 return 0; 777 return ARM_100_OPP;
621} 778}
622 779
623static inline int db8500_prcmu_set_ddr_opp(u8 opp) 780static bool prcmu_has_arm_maxopp(void)
624{ 781{
625 return 0; 782 return false;
626} 783}
627 784
628static inline int db8500_prcmu_get_ddr_opp(void) 785static bool prcmu_is_u8400(void)
629{ 786{
630 return DDR_100_OPP; 787 return false;
631} 788}
632 789
633static inline void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, 790static inline int prcmu_set_ape_opp(u8 opp)
634 struct prcmu_auto_pm_config *idle)
635{ 791{
792 return 0;
636} 793}
637 794
638static inline bool prcmu_is_auto_pm_enabled(void) 795static inline int prcmu_get_ape_opp(void)
639{ 796{
640 return false; 797 return APE_100_OPP;
641} 798}
642 799
643static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div) 800static inline int prcmu_request_ape_opp_100_voltage(bool enable)
644{ 801{
645 return 0; 802 return 0;
646} 803}
647 804
648static inline int prcmu_set_clock_divider(u8 clock, u8 divider) 805static inline int prcmu_release_usb_wakeup_state(void)
649{ 806{
650 return 0; 807 return 0;
651} 808}
652 809
653static inline int db8500_prcmu_config_hotdog(u8 threshold) 810static inline int prcmu_set_ddr_opp(u8 opp)
654{ 811{
655 return 0; 812 return 0;
656} 813}
657 814
658static inline int db8500_prcmu_config_hotmon(u8 low, u8 high) 815static inline int prcmu_get_ddr_opp(void)
659{ 816{
660 return 0; 817 return DDR_100_OPP;
661} 818}
662 819
663static inline int db8500_prcmu_start_temp_sense(u16 cycles32k) 820static inline unsigned long prcmu_qos_get_cpufreq_opp_delay(void)
664{ 821{
665 return 0; 822 return 0;
666} 823}
667 824
668static inline int db8500_prcmu_stop_temp_sense(void) 825static inline void prcmu_qos_set_cpufreq_opp_delay(unsigned long n) {}
826
827static inline int prcmu_set_hwacc(u16 hw_acc_dev, u8 state)
669{ 828{
670 return 0; 829 return 0;
671} 830}
672 831
673static inline int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size) 832static inline void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep,
833 struct prcmu_auto_pm_config *idle)
674{ 834{
675 return -ENOSYS;
676} 835}
677 836
678static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) 837static inline bool prcmu_is_auto_pm_enabled(void)
679{ 838{
680 return -ENOSYS; 839 return false;
681} 840}
682 841
683static inline int prcmu_ac_wake_req(void) 842static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div)
684{ 843{
685 return 0; 844 return 0;
686} 845}
687 846
688static inline void prcmu_ac_sleep_req(void) {} 847static inline int prcmu_request_clock(u8 clock, bool enable)
689
690static inline void db8500_prcmu_modem_reset(void) {}
691
692static inline void db8500_prcmu_system_reset(u16 reset_code) {}
693
694static inline int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
695 bool keep_ap_pll)
696{ 848{
697 return 0; 849 return 0;
698} 850}
699 851
700static inline u8 db8500_prcmu_get_power_state_result(void) 852static inline int prcmu_set_clock_divider(u8 clock, u8 divider)
701{ 853{
702 return 0; 854 return 0;
703} 855}
704 856
705static inline void db8500_prcmu_enable_wakeups(u32 wakeups) {} 857int prcmu_config_esram0_deep_sleep(u8 state)
706
707static inline int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state)
708{ 858{
709 return 0; 859 return 0;
710} 860}
711 861
712static inline int db8500_prcmu_request_clock(u8 clock, bool enable) 862static inline int prcmu_config_hotdog(u8 threshold)
713{ 863{
714 return 0; 864 return 0;
715} 865}
716 866
717static inline int db8500_prcmu_set_display_clocks(void) 867static inline int prcmu_config_hotmon(u8 low, u8 high)
718{ 868{
719 return 0; 869 return 0;
720} 870}
721 871
722static inline int db8500_prcmu_disable_dsipll(void) 872static inline int prcmu_start_temp_sense(u16 cycles32k)
723{ 873{
724 return 0; 874 return 0;
725} 875}
726 876
727static inline int db8500_prcmu_enable_dsipll(void) 877static inline int prcmu_stop_temp_sense(void)
728{ 878{
729 return 0; 879 return 0;
730} 880}
731 881
732static inline int db8500_prcmu_config_esram0_deep_sleep(u8 state) 882static inline int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
733{ 883{
734 return 0; 884 return -ENOSYS;
735} 885}
736 886
737static inline void db8500_prcmu_config_abb_event_readout(u32 abb_events) {} 887static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
888{
889 return -ENOSYS;
890}
891
892static inline void prcmu_ac_wake_req(void) {}
893
894static inline void prcmu_ac_sleep_req(void) {}
738 895
739static inline void db8500_prcmu_get_abb_event_buffer(void __iomem **buf) {} 896static inline void prcmu_system_reset(u16 reset_code) {}
740 897
741static inline u16 db8500_prcmu_get_reset_code(void) 898static inline void prcmu_modem_reset(void) {}
899
900static inline bool prcmu_is_ac_wake_requested(void)
742{ 901{
743 return 0; 902 return false;
744} 903}
745 904
746static inline int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off) 905#ifndef CONFIG_UX500_SOC_DB5500
906static inline int prcmu_set_display_clocks(void)
747{ 907{
748 return 0; 908 return 0;
749} 909}
750 910
751static inline int db8500_prcmu_enable_a9wdog(u8 id) 911static inline int prcmu_disable_dsipll(void)
752{ 912{
753 return 0; 913 return 0;
754} 914}
755 915
756static inline int db8500_prcmu_disable_a9wdog(u8 id) 916static inline int prcmu_enable_dsipll(void)
757{ 917{
758 return 0; 918 return 0;
759} 919}
920#endif
760 921
761static inline int db8500_prcmu_kick_a9wdog(u8 id) 922static inline int prcmu_enable_spi2(void)
762{ 923{
763 return 0; 924 return 0;
764} 925}
765 926
766static inline int db8500_prcmu_load_a9wdog(u8 id, u32 val) 927static inline int prcmu_disable_spi2(void)
767{ 928{
768 return 0; 929 return 0;
769} 930}
770 931
771static inline bool db8500_prcmu_is_ac_wake_requested(void) 932#endif /* !CONFIG_MFD_DB8500_PRCMU */
933
934#ifdef CONFIG_UX500_PRCMU_QOS_POWER
935int prcmu_qos_requirement(int pm_qos_class);
936int prcmu_qos_add_requirement(int pm_qos_class, char *name, s32 value);
937int prcmu_qos_update_requirement(int pm_qos_class, char *name, s32 new_value);
938void prcmu_qos_remove_requirement(int pm_qos_class, char *name);
939int prcmu_qos_add_notifier(int prcmu_qos_class,
940 struct notifier_block *notifier);
941int prcmu_qos_remove_notifier(int prcmu_qos_class,
942 struct notifier_block *notifier);
943#else
944static inline int prcmu_qos_requirement(int prcmu_qos_class)
772{ 945{
773 return 0; 946 return 0;
774} 947}
775 948
776static inline int db8500_prcmu_set_arm_opp(u8 opp) 949static inline int prcmu_qos_add_requirement(int prcmu_qos_class,
950 char *name, s32 value)
777{ 951{
778 return 0; 952 return 0;
779} 953}
780 954
781static inline int db8500_prcmu_get_arm_opp(void) 955static inline int prcmu_qos_update_requirement(int prcmu_qos_class,
956 char *name, s32 new_value)
782{ 957{
783 return 0; 958 return 0;
784} 959}
785 960
786static inline u32 db8500_prcmu_read(unsigned int reg) 961static inline void prcmu_qos_remove_requirement(int prcmu_qos_class, char *name)
787{ 962{
788 return 0;
789} 963}
790 964
791static inline void db8500_prcmu_write(unsigned int reg, u32 value) {} 965static inline int prcmu_qos_add_notifier(int prcmu_qos_class,
792 966 struct notifier_block *notifier)
793static inline void db8500_prcmu_write_masked(unsigned int reg, u32 mask, 967{
794 u32 value) {} 968 return 0;
969}
970static inline int prcmu_qos_remove_notifier(int prcmu_qos_class,
971 struct notifier_block *notifier)
972{
973 return 0;
974}
795 975
796#endif /* !CONFIG_MFD_DB8500_PRCMU */ 976#endif
797 977
798#endif /* __MFD_DB8500_PRCMU_H */ 978#endif /* __MFD_DB8500_PRCMU_H */
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h
deleted file mode 100644
index c202d6c4d87..00000000000
--- a/include/linux/mfd/dbx500-prcmu.h
+++ /dev/null
@@ -1,773 +0,0 @@
1/*
2 * Copyright (C) ST Ericsson SA 2011
3 *
4 * License Terms: GNU General Public License v2
5 *
6 * STE Ux500 PRCMU API
7 */
8#ifndef __MACH_PRCMU_H
9#define __MACH_PRCMU_H
10
11#include <linux/interrupt.h>
12#include <linux/notifier.h>
13#include <linux/err.h>
14
15/* PRCMU Wakeup defines */
16enum prcmu_wakeup_index {
17 PRCMU_WAKEUP_INDEX_RTC,
18 PRCMU_WAKEUP_INDEX_RTT0,
19 PRCMU_WAKEUP_INDEX_RTT1,
20 PRCMU_WAKEUP_INDEX_HSI0,
21 PRCMU_WAKEUP_INDEX_HSI1,
22 PRCMU_WAKEUP_INDEX_USB,
23 PRCMU_WAKEUP_INDEX_ABB,
24 PRCMU_WAKEUP_INDEX_ABB_FIFO,
25 PRCMU_WAKEUP_INDEX_ARM,
26 PRCMU_WAKEUP_INDEX_CD_IRQ,
27 NUM_PRCMU_WAKEUP_INDICES
28};
29#define PRCMU_WAKEUP(_name) (BIT(PRCMU_WAKEUP_INDEX_##_name))
30
31/* EPOD (power domain) IDs */
32
33/*
34 * DB8500 EPODs
35 * - EPOD_ID_SVAMMDSP: power domain for SVA MMDSP
36 * - EPOD_ID_SVAPIPE: power domain for SVA pipe
37 * - EPOD_ID_SIAMMDSP: power domain for SIA MMDSP
38 * - EPOD_ID_SIAPIPE: power domain for SIA pipe
39 * - EPOD_ID_SGA: power domain for SGA
40 * - EPOD_ID_B2R2_MCDE: power domain for B2R2 and MCDE
41 * - EPOD_ID_ESRAM12: power domain for ESRAM 1 and 2
42 * - EPOD_ID_ESRAM34: power domain for ESRAM 3 and 4
43 * - NUM_EPOD_ID: number of power domains
44 *
45 * TODO: These should be prefixed.
46 */
47#define EPOD_ID_SVAMMDSP 0
48#define EPOD_ID_SVAPIPE 1
49#define EPOD_ID_SIAMMDSP 2
50#define EPOD_ID_SIAPIPE 3
51#define EPOD_ID_SGA 4
52#define EPOD_ID_B2R2_MCDE 5
53#define EPOD_ID_ESRAM12 6
54#define EPOD_ID_ESRAM34 7
55#define NUM_EPOD_ID 8
56
57/*
58 * state definition for EPOD (power domain)
59 * - EPOD_STATE_NO_CHANGE: The EPOD should remain unchanged
60 * - EPOD_STATE_OFF: The EPOD is switched off
61 * - EPOD_STATE_RAMRET: The EPOD is switched off with its internal RAM in
62 * retention
63 * - EPOD_STATE_ON_CLK_OFF: The EPOD is switched on, clock is still off
64 * - EPOD_STATE_ON: Same as above, but with clock enabled
65 */
66#define EPOD_STATE_NO_CHANGE 0x00
67#define EPOD_STATE_OFF 0x01
68#define EPOD_STATE_RAMRET 0x02
69#define EPOD_STATE_ON_CLK_OFF 0x03
70#define EPOD_STATE_ON 0x04
71
72/*
73 * CLKOUT sources
74 */
75#define PRCMU_CLKSRC_CLK38M 0x00
76#define PRCMU_CLKSRC_ACLK 0x01
77#define PRCMU_CLKSRC_SYSCLK 0x02
78#define PRCMU_CLKSRC_LCDCLK 0x03
79#define PRCMU_CLKSRC_SDMMCCLK 0x04
80#define PRCMU_CLKSRC_TVCLK 0x05
81#define PRCMU_CLKSRC_TIMCLK 0x06
82#define PRCMU_CLKSRC_CLK009 0x07
83/* These are only valid for CLKOUT1: */
84#define PRCMU_CLKSRC_SIAMMDSPCLK 0x40
85#define PRCMU_CLKSRC_I2CCLK 0x41
86#define PRCMU_CLKSRC_MSP02CLK 0x42
87#define PRCMU_CLKSRC_ARMPLL_OBSCLK 0x43
88#define PRCMU_CLKSRC_HSIRXCLK 0x44
89#define PRCMU_CLKSRC_HSITXCLK 0x45
90#define PRCMU_CLKSRC_ARMCLKFIX 0x46
91#define PRCMU_CLKSRC_HDMICLK 0x47
92
93/*
94 * Clock identifiers.
95 */
96enum prcmu_clock {
97 PRCMU_SGACLK,
98 PRCMU_UARTCLK,
99 PRCMU_MSP02CLK,
100 PRCMU_MSP1CLK,
101 PRCMU_I2CCLK,
102 PRCMU_SDMMCCLK,
103 PRCMU_SPARE1CLK,
104 PRCMU_SLIMCLK,
105 PRCMU_PER1CLK,
106 PRCMU_PER2CLK,
107 PRCMU_PER3CLK,
108 PRCMU_PER5CLK,
109 PRCMU_PER6CLK,
110 PRCMU_PER7CLK,
111 PRCMU_LCDCLK,
112 PRCMU_BMLCLK,
113 PRCMU_HSITXCLK,
114 PRCMU_HSIRXCLK,
115 PRCMU_HDMICLK,
116 PRCMU_APEATCLK,
117 PRCMU_APETRACECLK,
118 PRCMU_MCDECLK,
119 PRCMU_IPI2CCLK,
120 PRCMU_DSIALTCLK,
121 PRCMU_DMACLK,
122 PRCMU_B2R2CLK,
123 PRCMU_TVCLK,
124 PRCMU_SSPCLK,
125 PRCMU_RNGCLK,
126 PRCMU_UICCCLK,
127 PRCMU_PWMCLK,
128 PRCMU_IRDACLK,
129 PRCMU_IRRCCLK,
130 PRCMU_SIACLK,
131 PRCMU_SVACLK,
132 PRCMU_ACLK,
133 PRCMU_NUM_REG_CLOCKS,
134 PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS,
135 PRCMU_CDCLK,
136 PRCMU_TIMCLK,
137 PRCMU_PLLSOC0,
138 PRCMU_PLLSOC1,
139 PRCMU_ARMSS,
140 PRCMU_PLLDDR,
141 PRCMU_PLLDSI,
142 PRCMU_DSI0CLK,
143 PRCMU_DSI1CLK,
144 PRCMU_DSI0ESCCLK,
145 PRCMU_DSI1ESCCLK,
146 PRCMU_DSI2ESCCLK,
147};
148
149/**
150 * enum ape_opp - APE OPP states definition
151 * @APE_OPP_INIT:
152 * @APE_NO_CHANGE: The APE operating point is unchanged
153 * @APE_100_OPP: The new APE operating point is ape100opp
154 * @APE_50_OPP: 50%
155 * @APE_50_PARTLY_25_OPP: 50%, except some clocks at 25%.
156 */
157enum ape_opp {
158 APE_OPP_INIT = 0x00,
159 APE_NO_CHANGE = 0x01,
160 APE_100_OPP = 0x02,
161 APE_50_OPP = 0x03,
162 APE_50_PARTLY_25_OPP = 0xFF,
163};
164
165/**
166 * enum arm_opp - ARM OPP states definition
167 * @ARM_OPP_INIT:
168 * @ARM_NO_CHANGE: The ARM operating point is unchanged
169 * @ARM_100_OPP: The new ARM operating point is arm100opp
170 * @ARM_50_OPP: The new ARM operating point is arm50opp
171 * @ARM_MAX_OPP: Operating point is "max" (more than 100)
172 * @ARM_MAX_FREQ100OPP: Set max opp if available, else 100
173 * @ARM_EXTCLK: The new ARM operating point is armExtClk
174 */
175enum arm_opp {
176 ARM_OPP_INIT = 0x00,
177 ARM_NO_CHANGE = 0x01,
178 ARM_100_OPP = 0x02,
179 ARM_50_OPP = 0x03,
180 ARM_MAX_OPP = 0x04,
181 ARM_MAX_FREQ100OPP = 0x05,
182 ARM_EXTCLK = 0x07
183};
184
185/**
186 * enum ddr_opp - DDR OPP states definition
187 * @DDR_100_OPP: The new DDR operating point is ddr100opp
188 * @DDR_50_OPP: The new DDR operating point is ddr50opp
189 * @DDR_25_OPP: The new DDR operating point is ddr25opp
190 */
191enum ddr_opp {
192 DDR_100_OPP = 0x00,
193 DDR_50_OPP = 0x01,
194 DDR_25_OPP = 0x02,
195};
196
197/*
198 * Definitions for controlling ESRAM0 in deep sleep.
199 */
200#define ESRAM0_DEEP_SLEEP_STATE_OFF 1
201#define ESRAM0_DEEP_SLEEP_STATE_RET 2
202
203/**
204 * enum ddr_pwrst - DDR power states definition
205 * @DDR_PWR_STATE_UNCHANGED: SDRAM and DDR controller state is unchanged
206 * @DDR_PWR_STATE_ON:
207 * @DDR_PWR_STATE_OFFLOWLAT:
208 * @DDR_PWR_STATE_OFFHIGHLAT:
209 */
210enum ddr_pwrst {
211 DDR_PWR_STATE_UNCHANGED = 0x00,
212 DDR_PWR_STATE_ON = 0x01,
213 DDR_PWR_STATE_OFFLOWLAT = 0x02,
214 DDR_PWR_STATE_OFFHIGHLAT = 0x03
215};
216
217#include <linux/mfd/db8500-prcmu.h>
218
219#if defined(CONFIG_UX500_SOC_DB8500)
220
221#include <mach/id.h>
222
223static inline void __init prcmu_early_init(void)
224{
225 return db8500_prcmu_early_init();
226}
227
228static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
229 bool keep_ap_pll)
230{
231 return db8500_prcmu_set_power_state(state, keep_ulp_clk,
232 keep_ap_pll);
233}
234
235static inline u8 prcmu_get_power_state_result(void)
236{
237 return db8500_prcmu_get_power_state_result();
238}
239
240static inline int prcmu_gic_decouple(void)
241{
242 return db8500_prcmu_gic_decouple();
243}
244
245static inline int prcmu_gic_recouple(void)
246{
247 return db8500_prcmu_gic_recouple();
248}
249
250static inline bool prcmu_gic_pending_irq(void)
251{
252 return db8500_prcmu_gic_pending_irq();
253}
254
255static inline bool prcmu_is_cpu_in_wfi(int cpu)
256{
257 return db8500_prcmu_is_cpu_in_wfi(cpu);
258}
259
260static inline int prcmu_copy_gic_settings(void)
261{
262 return db8500_prcmu_copy_gic_settings();
263}
264
265static inline bool prcmu_pending_irq(void)
266{
267 return db8500_prcmu_pending_irq();
268}
269
270static inline int prcmu_set_epod(u16 epod_id, u8 epod_state)
271{
272 return db8500_prcmu_set_epod(epod_id, epod_state);
273}
274
275static inline void prcmu_enable_wakeups(u32 wakeups)
276{
277 db8500_prcmu_enable_wakeups(wakeups);
278}
279
280static inline void prcmu_disable_wakeups(void)
281{
282 prcmu_enable_wakeups(0);
283}
284
285static inline void prcmu_config_abb_event_readout(u32 abb_events)
286{
287 db8500_prcmu_config_abb_event_readout(abb_events);
288}
289
290static inline void prcmu_get_abb_event_buffer(void __iomem **buf)
291{
292 db8500_prcmu_get_abb_event_buffer(buf);
293}
294
295int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
296int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
297int prcmu_abb_write_masked(u8 slave, u8 reg, u8 *value, u8 *mask, u8 size);
298
299int prcmu_config_clkout(u8 clkout, u8 source, u8 div);
300
301static inline int prcmu_request_clock(u8 clock, bool enable)
302{
303 return db8500_prcmu_request_clock(clock, enable);
304}
305
306unsigned long prcmu_clock_rate(u8 clock);
307long prcmu_round_clock_rate(u8 clock, unsigned long rate);
308int prcmu_set_clock_rate(u8 clock, unsigned long rate);
309
310static inline int prcmu_set_ddr_opp(u8 opp)
311{
312 return db8500_prcmu_set_ddr_opp(opp);
313}
314static inline int prcmu_get_ddr_opp(void)
315{
316 return db8500_prcmu_get_ddr_opp();
317}
318
319static inline int prcmu_set_arm_opp(u8 opp)
320{
321 return db8500_prcmu_set_arm_opp(opp);
322}
323
324static inline int prcmu_get_arm_opp(void)
325{
326 return db8500_prcmu_get_arm_opp();
327}
328
329static inline int prcmu_set_ape_opp(u8 opp)
330{
331 return db8500_prcmu_set_ape_opp(opp);
332}
333
334static inline int prcmu_get_ape_opp(void)
335{
336 return db8500_prcmu_get_ape_opp();
337}
338
339static inline int prcmu_request_ape_opp_100_voltage(bool enable)
340{
341 return db8500_prcmu_request_ape_opp_100_voltage(enable);
342}
343
344static inline void prcmu_system_reset(u16 reset_code)
345{
346 return db8500_prcmu_system_reset(reset_code);
347}
348
349static inline u16 prcmu_get_reset_code(void)
350{
351 return db8500_prcmu_get_reset_code();
352}
353
354int prcmu_ac_wake_req(void);
355void prcmu_ac_sleep_req(void);
356static inline void prcmu_modem_reset(void)
357{
358 return db8500_prcmu_modem_reset();
359}
360
361static inline bool prcmu_is_ac_wake_requested(void)
362{
363 return db8500_prcmu_is_ac_wake_requested();
364}
365
366static inline int prcmu_set_display_clocks(void)
367{
368 return db8500_prcmu_set_display_clocks();
369}
370
371static inline int prcmu_disable_dsipll(void)
372{
373 return db8500_prcmu_disable_dsipll();
374}
375
376static inline int prcmu_enable_dsipll(void)
377{
378 return db8500_prcmu_enable_dsipll();
379}
380
381static inline int prcmu_config_esram0_deep_sleep(u8 state)
382{
383 return db8500_prcmu_config_esram0_deep_sleep(state);
384}
385
386static inline int prcmu_config_hotdog(u8 threshold)
387{
388 return db8500_prcmu_config_hotdog(threshold);
389}
390
391static inline int prcmu_config_hotmon(u8 low, u8 high)
392{
393 return db8500_prcmu_config_hotmon(low, high);
394}
395
396static inline int prcmu_start_temp_sense(u16 cycles32k)
397{
398 return db8500_prcmu_start_temp_sense(cycles32k);
399}
400
401static inline int prcmu_stop_temp_sense(void)
402{
403 return db8500_prcmu_stop_temp_sense();
404}
405
406static inline u32 prcmu_read(unsigned int reg)
407{
408 return db8500_prcmu_read(reg);
409}
410
411static inline void prcmu_write(unsigned int reg, u32 value)
412{
413 db8500_prcmu_write(reg, value);
414}
415
416static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value)
417{
418 db8500_prcmu_write_masked(reg, mask, value);
419}
420
421static inline int prcmu_enable_a9wdog(u8 id)
422{
423 return db8500_prcmu_enable_a9wdog(id);
424}
425
426static inline int prcmu_disable_a9wdog(u8 id)
427{
428 return db8500_prcmu_disable_a9wdog(id);
429}
430
431static inline int prcmu_kick_a9wdog(u8 id)
432{
433 return db8500_prcmu_kick_a9wdog(id);
434}
435
436static inline int prcmu_load_a9wdog(u8 id, u32 timeout)
437{
438 return db8500_prcmu_load_a9wdog(id, timeout);
439}
440
441static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
442{
443 return db8500_prcmu_config_a9wdog(num, sleep_auto_off);
444}
445#else
446
447static inline void __init prcmu_early_init(void) {}
448
449static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
450 bool keep_ap_pll)
451{
452 return 0;
453}
454
455static inline int prcmu_set_epod(u16 epod_id, u8 epod_state)
456{
457 return 0;
458}
459
460static inline void prcmu_enable_wakeups(u32 wakeups) {}
461
462static inline void prcmu_disable_wakeups(void) {}
463
464static inline int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
465{
466 return -ENOSYS;
467}
468
469static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
470{
471 return -ENOSYS;
472}
473
474static inline int prcmu_abb_write_masked(u8 slave, u8 reg, u8 *value, u8 *mask,
475 u8 size)
476{
477 return -ENOSYS;
478}
479
480static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div)
481{
482 return 0;
483}
484
485static inline int prcmu_request_clock(u8 clock, bool enable)
486{
487 return 0;
488}
489
490static inline long prcmu_round_clock_rate(u8 clock, unsigned long rate)
491{
492 return 0;
493}
494
495static inline int prcmu_set_clock_rate(u8 clock, unsigned long rate)
496{
497 return 0;
498}
499
500static inline unsigned long prcmu_clock_rate(u8 clock)
501{
502 return 0;
503}
504
505static inline int prcmu_set_ape_opp(u8 opp)
506{
507 return 0;
508}
509
510static inline int prcmu_get_ape_opp(void)
511{
512 return APE_100_OPP;
513}
514
515static inline int prcmu_request_ape_opp_100_voltage(bool enable)
516{
517 return 0;
518}
519
520static inline int prcmu_set_arm_opp(u8 opp)
521{
522 return 0;
523}
524
525static inline int prcmu_get_arm_opp(void)
526{
527 return ARM_100_OPP;
528}
529
530static inline int prcmu_set_ddr_opp(u8 opp)
531{
532 return 0;
533}
534
535static inline int prcmu_get_ddr_opp(void)
536{
537 return DDR_100_OPP;
538}
539
540static inline void prcmu_system_reset(u16 reset_code) {}
541
542static inline u16 prcmu_get_reset_code(void)
543{
544 return 0;
545}
546
547static inline int prcmu_ac_wake_req(void)
548{
549 return 0;
550}
551
552static inline void prcmu_ac_sleep_req(void) {}
553
554static inline void prcmu_modem_reset(void) {}
555
556static inline bool prcmu_is_ac_wake_requested(void)
557{
558 return false;
559}
560
561static inline int prcmu_set_display_clocks(void)
562{
563 return 0;
564}
565
566static inline int prcmu_disable_dsipll(void)
567{
568 return 0;
569}
570
571static inline int prcmu_enable_dsipll(void)
572{
573 return 0;
574}
575
576static inline int prcmu_config_esram0_deep_sleep(u8 state)
577{
578 return 0;
579}
580
581static inline void prcmu_config_abb_event_readout(u32 abb_events) {}
582
583static inline void prcmu_get_abb_event_buffer(void __iomem **buf)
584{
585 *buf = NULL;
586}
587
588static inline int prcmu_config_hotdog(u8 threshold)
589{
590 return 0;
591}
592
593static inline int prcmu_config_hotmon(u8 low, u8 high)
594{
595 return 0;
596}
597
598static inline int prcmu_start_temp_sense(u16 cycles32k)
599{
600 return 0;
601}
602
603static inline int prcmu_stop_temp_sense(void)
604{
605 return 0;
606}
607
608static inline u32 prcmu_read(unsigned int reg)
609{
610 return 0;
611}
612
613static inline void prcmu_write(unsigned int reg, u32 value) {}
614
615static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value) {}
616
617#endif
618
619static inline void prcmu_set(unsigned int reg, u32 bits)
620{
621 prcmu_write_masked(reg, bits, bits);
622}
623
624static inline void prcmu_clear(unsigned int reg, u32 bits)
625{
626 prcmu_write_masked(reg, bits, 0);
627}
628
629#if defined(CONFIG_UX500_SOC_DB8500)
630
631/**
632 * prcmu_enable_spi2 - Enables pin muxing for SPI2 on OtherAlternateC1.
633 */
634static inline void prcmu_enable_spi2(void)
635{
636 if (cpu_is_u8500())
637 prcmu_set(DB8500_PRCM_GPIOCR, DB8500_PRCM_GPIOCR_SPI2_SELECT);
638}
639
640/**
641 * prcmu_disable_spi2 - Disables pin muxing for SPI2 on OtherAlternateC1.
642 */
643static inline void prcmu_disable_spi2(void)
644{
645 if (cpu_is_u8500())
646 prcmu_clear(DB8500_PRCM_GPIOCR, DB8500_PRCM_GPIOCR_SPI2_SELECT);
647}
648
649/**
650 * prcmu_enable_stm_mod_uart - Enables pin muxing for STMMOD
651 * and UARTMOD on OtherAlternateC3.
652 */
653static inline void prcmu_enable_stm_mod_uart(void)
654{
655 if (cpu_is_u8500()) {
656 prcmu_set(DB8500_PRCM_GPIOCR,
657 (DB8500_PRCM_GPIOCR_DBG_STM_MOD_CMD1 |
658 DB8500_PRCM_GPIOCR_DBG_UARTMOD_CMD0));
659 }
660}
661
662/**
663 * prcmu_disable_stm_mod_uart - Disables pin muxing for STMMOD
664 * and UARTMOD on OtherAlternateC3.
665 */
666static inline void prcmu_disable_stm_mod_uart(void)
667{
668 if (cpu_is_u8500()) {
669 prcmu_clear(DB8500_PRCM_GPIOCR,
670 (DB8500_PRCM_GPIOCR_DBG_STM_MOD_CMD1 |
671 DB8500_PRCM_GPIOCR_DBG_UARTMOD_CMD0));
672 }
673}
674
675/**
676 * prcmu_enable_stm_ape - Enables pin muxing for STM APE on OtherAlternateC1.
677 */
678static inline void prcmu_enable_stm_ape(void)
679{
680 if (cpu_is_u8500()) {
681 prcmu_set(DB8500_PRCM_GPIOCR,
682 DB8500_PRCM_GPIOCR_DBG_STM_APE_CMD);
683 }
684}
685
686/**
687 * prcmu_disable_stm_ape - Disables pin muxing for STM APE on OtherAlternateC1.
688 */
689static inline void prcmu_disable_stm_ape(void)
690{
691 if (cpu_is_u8500()) {
692 prcmu_clear(DB8500_PRCM_GPIOCR,
693 DB8500_PRCM_GPIOCR_DBG_STM_APE_CMD);
694 }
695}
696
697#else
698
699static inline void prcmu_enable_spi2(void) {}
700static inline void prcmu_disable_spi2(void) {}
701static inline void prcmu_enable_stm_mod_uart(void) {}
702static inline void prcmu_disable_stm_mod_uart(void) {}
703static inline void prcmu_enable_stm_ape(void) {}
704static inline void prcmu_disable_stm_ape(void) {}
705
706#endif
707
708/* PRCMU QoS APE OPP class */
709#define PRCMU_QOS_APE_OPP 1
710#define PRCMU_QOS_DDR_OPP 2
711#define PRCMU_QOS_ARM_OPP 3
712#define PRCMU_QOS_DEFAULT_VALUE -1
713
714#ifdef CONFIG_DBX500_PRCMU_QOS_POWER
715
716unsigned long prcmu_qos_get_cpufreq_opp_delay(void);
717void prcmu_qos_set_cpufreq_opp_delay(unsigned long);
718void prcmu_qos_force_opp(int, s32);
719int prcmu_qos_requirement(int pm_qos_class);
720int prcmu_qos_add_requirement(int pm_qos_class, char *name, s32 value);
721int prcmu_qos_update_requirement(int pm_qos_class, char *name, s32 new_value);
722void prcmu_qos_remove_requirement(int pm_qos_class, char *name);
723int prcmu_qos_add_notifier(int prcmu_qos_class,
724 struct notifier_block *notifier);
725int prcmu_qos_remove_notifier(int prcmu_qos_class,
726 struct notifier_block *notifier);
727
728#else
729
730static inline unsigned long prcmu_qos_get_cpufreq_opp_delay(void)
731{
732 return 0;
733}
734
735static inline void prcmu_qos_set_cpufreq_opp_delay(unsigned long n) {}
736
737static inline void prcmu_qos_force_opp(int prcmu_qos_class, s32 i) {}
738
739static inline int prcmu_qos_requirement(int prcmu_qos_class)
740{
741 return 0;
742}
743
744static inline int prcmu_qos_add_requirement(int prcmu_qos_class,
745 char *name, s32 value)
746{
747 return 0;
748}
749
750static inline int prcmu_qos_update_requirement(int prcmu_qos_class,
751 char *name, s32 new_value)
752{
753 return 0;
754}
755
756static inline void prcmu_qos_remove_requirement(int prcmu_qos_class, char *name)
757{
758}
759
760static inline int prcmu_qos_add_notifier(int prcmu_qos_class,
761 struct notifier_block *notifier)
762{
763 return 0;
764}
765static inline int prcmu_qos_remove_notifier(int prcmu_qos_class,
766 struct notifier_block *notifier)
767{
768 return 0;
769}
770
771#endif
772
773#endif /* __MACH_PRCMU_H */
diff --git a/include/linux/mfd/ezx-pcap.h b/include/linux/mfd/ezx-pcap.h
index 32a1b5cfeba..40c372165f3 100644
--- a/include/linux/mfd/ezx-pcap.h
+++ b/include/linux/mfd/ezx-pcap.h
@@ -16,7 +16,6 @@ struct pcap_subdev {
16struct pcap_platform_data { 16struct pcap_platform_data {
17 unsigned int irq_base; 17 unsigned int irq_base;
18 unsigned int config; 18 unsigned int config;
19 int gpio;
20 void (*init) (void *); /* board specific init */ 19 void (*init) (void *); /* board specific init */
21 int num_subdevs; 20 int num_subdevs;
22 struct pcap_subdev *subdevs; 21 struct pcap_subdev *subdevs;
diff --git a/include/linux/mfd/intel_msic.h b/include/linux/mfd/intel_msic.h
deleted file mode 100644
index 439a7a617bc..00000000000
--- a/include/linux/mfd/intel_msic.h
+++ /dev/null
@@ -1,456 +0,0 @@
1/*
2 * include/linux/mfd/intel_msic.h - Core interface for Intel MSIC
3 *
4 * Copyright (C) 2011, Intel Corporation
5 * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef __LINUX_MFD_INTEL_MSIC_H__
13#define __LINUX_MFD_INTEL_MSIC_H__
14
15/* ID */
16#define INTEL_MSIC_ID0 0x000 /* RO */
17#define INTEL_MSIC_ID1 0x001 /* RO */
18
19/* IRQ */
20#define INTEL_MSIC_IRQLVL1 0x002
21#define INTEL_MSIC_ADC1INT 0x003
22#define INTEL_MSIC_CCINT 0x004
23#define INTEL_MSIC_PWRSRCINT 0x005
24#define INTEL_MSIC_PWRSRCINT1 0x006
25#define INTEL_MSIC_CHRINT 0x007
26#define INTEL_MSIC_CHRINT1 0x008
27#define INTEL_MSIC_RTCIRQ 0x009
28#define INTEL_MSIC_GPIO0LVIRQ 0x00a
29#define INTEL_MSIC_GPIO1LVIRQ 0x00b
30#define INTEL_MSIC_GPIOHVIRQ 0x00c
31#define INTEL_MSIC_VRINT 0x00d
32#define INTEL_MSIC_OCAUDIO 0x00e
33#define INTEL_MSIC_ACCDET 0x00f
34#define INTEL_MSIC_RESETIRQ1 0x010
35#define INTEL_MSIC_RESETIRQ2 0x011
36#define INTEL_MSIC_MADC1INT 0x012
37#define INTEL_MSIC_MCCINT 0x013
38#define INTEL_MSIC_MPWRSRCINT 0x014
39#define INTEL_MSIC_MPWRSRCINT1 0x015
40#define INTEL_MSIC_MCHRINT 0x016
41#define INTEL_MSIC_MCHRINT1 0x017
42#define INTEL_MSIC_RTCIRQMASK 0x018
43#define INTEL_MSIC_GPIO0LVIRQMASK 0x019
44#define INTEL_MSIC_GPIO1LVIRQMASK 0x01a
45#define INTEL_MSIC_GPIOHVIRQMASK 0x01b
46#define INTEL_MSIC_VRINTMASK 0x01c
47#define INTEL_MSIC_OCAUDIOMASK 0x01d
48#define INTEL_MSIC_ACCDETMASK 0x01e
49#define INTEL_MSIC_RESETIRQ1MASK 0x01f
50#define INTEL_MSIC_RESETIRQ2MASK 0x020
51#define INTEL_MSIC_IRQLVL1MSK 0x021
52#define INTEL_MSIC_PBCONFIG 0x03e
53#define INTEL_MSIC_PBSTATUS 0x03f /* RO */
54
55/* GPIO */
56#define INTEL_MSIC_GPIO0LV7CTLO 0x040
57#define INTEL_MSIC_GPIO0LV6CTLO 0x041
58#define INTEL_MSIC_GPIO0LV5CTLO 0x042
59#define INTEL_MSIC_GPIO0LV4CTLO 0x043
60#define INTEL_MSIC_GPIO0LV3CTLO 0x044
61#define INTEL_MSIC_GPIO0LV2CTLO 0x045
62#define INTEL_MSIC_GPIO0LV1CTLO 0x046
63#define INTEL_MSIC_GPIO0LV0CTLO 0x047
64#define INTEL_MSIC_GPIO1LV7CTLOS 0x048
65#define INTEL_MSIC_GPIO1LV6CTLO 0x049
66#define INTEL_MSIC_GPIO1LV5CTLO 0x04a
67#define INTEL_MSIC_GPIO1LV4CTLO 0x04b
68#define INTEL_MSIC_GPIO1LV3CTLO 0x04c
69#define INTEL_MSIC_GPIO1LV2CTLO 0x04d
70#define INTEL_MSIC_GPIO1LV1CTLO 0x04e
71#define INTEL_MSIC_GPIO1LV0CTLO 0x04f
72#define INTEL_MSIC_GPIO0LV7CTLI 0x050
73#define INTEL_MSIC_GPIO0LV6CTLI 0x051
74#define INTEL_MSIC_GPIO0LV5CTLI 0x052
75#define INTEL_MSIC_GPIO0LV4CTLI 0x053
76#define INTEL_MSIC_GPIO0LV3CTLI 0x054
77#define INTEL_MSIC_GPIO0LV2CTLI 0x055
78#define INTEL_MSIC_GPIO0LV1CTLI 0x056
79#define INTEL_MSIC_GPIO0LV0CTLI 0x057
80#define INTEL_MSIC_GPIO1LV7CTLIS 0x058
81#define INTEL_MSIC_GPIO1LV6CTLI 0x059
82#define INTEL_MSIC_GPIO1LV5CTLI 0x05a
83#define INTEL_MSIC_GPIO1LV4CTLI 0x05b
84#define INTEL_MSIC_GPIO1LV3CTLI 0x05c
85#define INTEL_MSIC_GPIO1LV2CTLI 0x05d
86#define INTEL_MSIC_GPIO1LV1CTLI 0x05e
87#define INTEL_MSIC_GPIO1LV0CTLI 0x05f
88#define INTEL_MSIC_PWM0CLKDIV1 0x061
89#define INTEL_MSIC_PWM0CLKDIV0 0x062
90#define INTEL_MSIC_PWM1CLKDIV1 0x063
91#define INTEL_MSIC_PWM1CLKDIV0 0x064
92#define INTEL_MSIC_PWM2CLKDIV1 0x065
93#define INTEL_MSIC_PWM2CLKDIV0 0x066
94#define INTEL_MSIC_PWM0DUTYCYCLE 0x067
95#define INTEL_MSIC_PWM1DUTYCYCLE 0x068
96#define INTEL_MSIC_PWM2DUTYCYCLE 0x069
97#define INTEL_MSIC_GPIO0HV3CTLO 0x06d
98#define INTEL_MSIC_GPIO0HV2CTLO 0x06e
99#define INTEL_MSIC_GPIO0HV1CTLO 0x06f
100#define INTEL_MSIC_GPIO0HV0CTLO 0x070
101#define INTEL_MSIC_GPIO1HV3CTLO 0x071
102#define INTEL_MSIC_GPIO1HV2CTLO 0x072
103#define INTEL_MSIC_GPIO1HV1CTLO 0x073
104#define INTEL_MSIC_GPIO1HV0CTLO 0x074
105#define INTEL_MSIC_GPIO0HV3CTLI 0x075
106#define INTEL_MSIC_GPIO0HV2CTLI 0x076
107#define INTEL_MSIC_GPIO0HV1CTLI 0x077
108#define INTEL_MSIC_GPIO0HV0CTLI 0x078
109#define INTEL_MSIC_GPIO1HV3CTLI 0x079
110#define INTEL_MSIC_GPIO1HV2CTLI 0x07a
111#define INTEL_MSIC_GPIO1HV1CTLI 0x07b
112#define INTEL_MSIC_GPIO1HV0CTLI 0x07c
113
114/* SVID */
115#define INTEL_MSIC_SVIDCTRL0 0x080
116#define INTEL_MSIC_SVIDCTRL1 0x081
117#define INTEL_MSIC_SVIDCTRL2 0x082
118#define INTEL_MSIC_SVIDTXLASTPKT3 0x083 /* RO */
119#define INTEL_MSIC_SVIDTXLASTPKT2 0x084 /* RO */
120#define INTEL_MSIC_SVIDTXLASTPKT1 0x085 /* RO */
121#define INTEL_MSIC_SVIDTXLASTPKT0 0x086 /* RO */
122#define INTEL_MSIC_SVIDPKTOUTBYTE3 0x087
123#define INTEL_MSIC_SVIDPKTOUTBYTE2 0x088
124#define INTEL_MSIC_SVIDPKTOUTBYTE1 0x089
125#define INTEL_MSIC_SVIDPKTOUTBYTE0 0x08a
126#define INTEL_MSIC_SVIDRXVPDEBUG1 0x08b
127#define INTEL_MSIC_SVIDRXVPDEBUG0 0x08c
128#define INTEL_MSIC_SVIDRXLASTPKT3 0x08d /* RO */
129#define INTEL_MSIC_SVIDRXLASTPKT2 0x08e /* RO */
130#define INTEL_MSIC_SVIDRXLASTPKT1 0x08f /* RO */
131#define INTEL_MSIC_SVIDRXLASTPKT0 0x090 /* RO */
132#define INTEL_MSIC_SVIDRXCHKSTATUS3 0x091 /* RO */
133#define INTEL_MSIC_SVIDRXCHKSTATUS2 0x092 /* RO */
134#define INTEL_MSIC_SVIDRXCHKSTATUS1 0x093 /* RO */
135#define INTEL_MSIC_SVIDRXCHKSTATUS0 0x094 /* RO */
136
137/* VREG */
138#define INTEL_MSIC_VCCLATCH 0x0c0
139#define INTEL_MSIC_VNNLATCH 0x0c1
140#define INTEL_MSIC_VCCCNT 0x0c2
141#define INTEL_MSIC_SMPSRAMP 0x0c3
142#define INTEL_MSIC_VNNCNT 0x0c4
143#define INTEL_MSIC_VNNAONCNT 0x0c5
144#define INTEL_MSIC_VCC122AONCNT 0x0c6
145#define INTEL_MSIC_V180AONCNT 0x0c7
146#define INTEL_MSIC_V500CNT 0x0c8
147#define INTEL_MSIC_VIHFCNT 0x0c9
148#define INTEL_MSIC_LDORAMP1 0x0ca
149#define INTEL_MSIC_LDORAMP2 0x0cb
150#define INTEL_MSIC_VCC108AONCNT 0x0cc
151#define INTEL_MSIC_VCC108ASCNT 0x0cd
152#define INTEL_MSIC_VCC108CNT 0x0ce
153#define INTEL_MSIC_VCCA100ASCNT 0x0cf
154#define INTEL_MSIC_VCCA100CNT 0x0d0
155#define INTEL_MSIC_VCC180AONCNT 0x0d1
156#define INTEL_MSIC_VCC180CNT 0x0d2
157#define INTEL_MSIC_VCC330CNT 0x0d3
158#define INTEL_MSIC_VUSB330CNT 0x0d4
159#define INTEL_MSIC_VCCSDIOCNT 0x0d5
160#define INTEL_MSIC_VPROG1CNT 0x0d6
161#define INTEL_MSIC_VPROG2CNT 0x0d7
162#define INTEL_MSIC_VEMMCSCNT 0x0d8
163#define INTEL_MSIC_VEMMC1CNT 0x0d9
164#define INTEL_MSIC_VEMMC2CNT 0x0da
165#define INTEL_MSIC_VAUDACNT 0x0db
166#define INTEL_MSIC_VHSPCNT 0x0dc
167#define INTEL_MSIC_VHSNCNT 0x0dd
168#define INTEL_MSIC_VHDMICNT 0x0de
169#define INTEL_MSIC_VOTGCNT 0x0df
170#define INTEL_MSIC_V1P35CNT 0x0e0
171#define INTEL_MSIC_V330AONCNT 0x0e1
172
173/* RESET */
174#define INTEL_MSIC_CHIPCNTRL 0x100 /* WO */
175#define INTEL_MSIC_ERCONFIG 0x101
176
177/* BURST */
178#define INTEL_MSIC_BATCURRENTLIMIT12 0x102
179#define INTEL_MSIC_BATTIMELIMIT12 0x103
180#define INTEL_MSIC_BATTIMELIMIT3 0x104
181#define INTEL_MSIC_BATTIMEDB 0x105
182#define INTEL_MSIC_BRSTCONFIGOUTPUTS 0x106
183#define INTEL_MSIC_BRSTCONFIGACTIONS 0x107
184#define INTEL_MSIC_BURSTCONTROLSTATUS 0x108
185
186/* RTC */
187#define INTEL_MSIC_RTCB1 0x140 /* RO */
188#define INTEL_MSIC_RTCB2 0x141 /* RO */
189#define INTEL_MSIC_RTCB3 0x142 /* RO */
190#define INTEL_MSIC_RTCB4 0x143 /* RO */
191#define INTEL_MSIC_RTCOB1 0x144
192#define INTEL_MSIC_RTCOB2 0x145
193#define INTEL_MSIC_RTCOB3 0x146
194#define INTEL_MSIC_RTCOB4 0x147
195#define INTEL_MSIC_RTCAB1 0x148
196#define INTEL_MSIC_RTCAB2 0x149
197#define INTEL_MSIC_RTCAB3 0x14a
198#define INTEL_MSIC_RTCAB4 0x14b
199#define INTEL_MSIC_RTCWAB1 0x14c
200#define INTEL_MSIC_RTCWAB2 0x14d
201#define INTEL_MSIC_RTCWAB3 0x14e
202#define INTEL_MSIC_RTCWAB4 0x14f
203#define INTEL_MSIC_RTCSC1 0x150
204#define INTEL_MSIC_RTCSC2 0x151
205#define INTEL_MSIC_RTCSC3 0x152
206#define INTEL_MSIC_RTCSC4 0x153
207#define INTEL_MSIC_RTCSTATUS 0x154 /* RO */
208#define INTEL_MSIC_RTCCONFIG1 0x155
209#define INTEL_MSIC_RTCCONFIG2 0x156
210
211/* CHARGER */
212#define INTEL_MSIC_BDTIMER 0x180
213#define INTEL_MSIC_BATTRMV 0x181
214#define INTEL_MSIC_VBUSDET 0x182
215#define INTEL_MSIC_VBUSDET1 0x183
216#define INTEL_MSIC_ADPHVDET 0x184
217#define INTEL_MSIC_ADPLVDET 0x185
218#define INTEL_MSIC_ADPDETDBDM 0x186
219#define INTEL_MSIC_LOWBATTDET 0x187
220#define INTEL_MSIC_CHRCTRL 0x188
221#define INTEL_MSIC_CHRCVOLTAGE 0x189
222#define INTEL_MSIC_CHRCCURRENT 0x18a
223#define INTEL_MSIC_SPCHARGER 0x18b
224#define INTEL_MSIC_CHRTTIME 0x18c
225#define INTEL_MSIC_CHRCTRL1 0x18d
226#define INTEL_MSIC_PWRSRCLMT 0x18e
227#define INTEL_MSIC_CHRSTWDT 0x18f
228#define INTEL_MSIC_WDTWRITE 0x190 /* WO */
229#define INTEL_MSIC_CHRSAFELMT 0x191
230#define INTEL_MSIC_SPWRSRCINT 0x192 /* RO */
231#define INTEL_MSIC_SPWRSRCINT1 0x193 /* RO */
232#define INTEL_MSIC_CHRLEDPWM 0x194
233#define INTEL_MSIC_CHRLEDCTRL 0x195
234
235/* ADC */
236#define INTEL_MSIC_ADC1CNTL1 0x1c0
237#define INTEL_MSIC_ADC1CNTL2 0x1c1
238#define INTEL_MSIC_ADC1CNTL3 0x1c2
239#define INTEL_MSIC_ADC1OFFSETH 0x1c3 /* RO */
240#define INTEL_MSIC_ADC1OFFSETL 0x1c4 /* RO */
241#define INTEL_MSIC_ADC1ADDR0 0x1c5
242#define INTEL_MSIC_ADC1ADDR1 0x1c6
243#define INTEL_MSIC_ADC1ADDR2 0x1c7
244#define INTEL_MSIC_ADC1ADDR3 0x1c8
245#define INTEL_MSIC_ADC1ADDR4 0x1c9
246#define INTEL_MSIC_ADC1ADDR5 0x1ca
247#define INTEL_MSIC_ADC1ADDR6 0x1cb
248#define INTEL_MSIC_ADC1ADDR7 0x1cc
249#define INTEL_MSIC_ADC1ADDR8 0x1cd
250#define INTEL_MSIC_ADC1ADDR9 0x1ce
251#define INTEL_MSIC_ADC1ADDR10 0x1cf
252#define INTEL_MSIC_ADC1ADDR11 0x1d0
253#define INTEL_MSIC_ADC1ADDR12 0x1d1
254#define INTEL_MSIC_ADC1ADDR13 0x1d2
255#define INTEL_MSIC_ADC1ADDR14 0x1d3
256#define INTEL_MSIC_ADC1SNS0H 0x1d4 /* RO */
257#define INTEL_MSIC_ADC1SNS0L 0x1d5 /* RO */
258#define INTEL_MSIC_ADC1SNS1H 0x1d6 /* RO */
259#define INTEL_MSIC_ADC1SNS1L 0x1d7 /* RO */
260#define INTEL_MSIC_ADC1SNS2H 0x1d8 /* RO */
261#define INTEL_MSIC_ADC1SNS2L 0x1d9 /* RO */
262#define INTEL_MSIC_ADC1SNS3H 0x1da /* RO */
263#define INTEL_MSIC_ADC1SNS3L 0x1db /* RO */
264#define INTEL_MSIC_ADC1SNS4H 0x1dc /* RO */
265#define INTEL_MSIC_ADC1SNS4L 0x1dd /* RO */
266#define INTEL_MSIC_ADC1SNS5H 0x1de /* RO */
267#define INTEL_MSIC_ADC1SNS5L 0x1df /* RO */
268#define INTEL_MSIC_ADC1SNS6H 0x1e0 /* RO */
269#define INTEL_MSIC_ADC1SNS6L 0x1e1 /* RO */
270#define INTEL_MSIC_ADC1SNS7H 0x1e2 /* RO */
271#define INTEL_MSIC_ADC1SNS7L 0x1e3 /* RO */
272#define INTEL_MSIC_ADC1SNS8H 0x1e4 /* RO */
273#define INTEL_MSIC_ADC1SNS8L 0x1e5 /* RO */
274#define INTEL_MSIC_ADC1SNS9H 0x1e6 /* RO */
275#define INTEL_MSIC_ADC1SNS9L 0x1e7 /* RO */
276#define INTEL_MSIC_ADC1SNS10H 0x1e8 /* RO */
277#define INTEL_MSIC_ADC1SNS10L 0x1e9 /* RO */
278#define INTEL_MSIC_ADC1SNS11H 0x1ea /* RO */
279#define INTEL_MSIC_ADC1SNS11L 0x1eb /* RO */
280#define INTEL_MSIC_ADC1SNS12H 0x1ec /* RO */
281#define INTEL_MSIC_ADC1SNS12L 0x1ed /* RO */
282#define INTEL_MSIC_ADC1SNS13H 0x1ee /* RO */
283#define INTEL_MSIC_ADC1SNS13L 0x1ef /* RO */
284#define INTEL_MSIC_ADC1SNS14H 0x1f0 /* RO */
285#define INTEL_MSIC_ADC1SNS14L 0x1f1 /* RO */
286#define INTEL_MSIC_ADC1BV0H 0x1f2 /* RO */
287#define INTEL_MSIC_ADC1BV0L 0x1f3 /* RO */
288#define INTEL_MSIC_ADC1BV1H 0x1f4 /* RO */
289#define INTEL_MSIC_ADC1BV1L 0x1f5 /* RO */
290#define INTEL_MSIC_ADC1BV2H 0x1f6 /* RO */
291#define INTEL_MSIC_ADC1BV2L 0x1f7 /* RO */
292#define INTEL_MSIC_ADC1BV3H 0x1f8 /* RO */
293#define INTEL_MSIC_ADC1BV3L 0x1f9 /* RO */
294#define INTEL_MSIC_ADC1BI0H 0x1fa /* RO */
295#define INTEL_MSIC_ADC1BI0L 0x1fb /* RO */
296#define INTEL_MSIC_ADC1BI1H 0x1fc /* RO */
297#define INTEL_MSIC_ADC1BI1L 0x1fd /* RO */
298#define INTEL_MSIC_ADC1BI2H 0x1fe /* RO */
299#define INTEL_MSIC_ADC1BI2L 0x1ff /* RO */
300#define INTEL_MSIC_ADC1BI3H 0x200 /* RO */
301#define INTEL_MSIC_ADC1BI3L 0x201 /* RO */
302#define INTEL_MSIC_CCCNTL 0x202
303#define INTEL_MSIC_CCOFFSETH 0x203 /* RO */
304#define INTEL_MSIC_CCOFFSETL 0x204 /* RO */
305#define INTEL_MSIC_CCADCHA 0x205 /* RO */
306#define INTEL_MSIC_CCADCLA 0x206 /* RO */
307
308/* AUDIO */
309#define INTEL_MSIC_AUDPLLCTRL 0x240
310#define INTEL_MSIC_DMICBUF0123 0x241
311#define INTEL_MSIC_DMICBUF45 0x242
312#define INTEL_MSIC_DMICGPO 0x244
313#define INTEL_MSIC_DMICMUX 0x245
314#define INTEL_MSIC_DMICCLK 0x246
315#define INTEL_MSIC_MICBIAS 0x247
316#define INTEL_MSIC_ADCCONFIG 0x248
317#define INTEL_MSIC_MICAMP1 0x249
318#define INTEL_MSIC_MICAMP2 0x24a
319#define INTEL_MSIC_NOISEMUX 0x24b
320#define INTEL_MSIC_AUDIOMUX12 0x24c
321#define INTEL_MSIC_AUDIOMUX34 0x24d
322#define INTEL_MSIC_AUDIOSINC 0x24e
323#define INTEL_MSIC_AUDIOTXEN 0x24f
324#define INTEL_MSIC_HSEPRXCTRL 0x250
325#define INTEL_MSIC_IHFRXCTRL 0x251
326#define INTEL_MSIC_VOICETXVOL 0x252
327#define INTEL_MSIC_SIDETONEVOL 0x253
328#define INTEL_MSIC_MUSICSHARVOL 0x254
329#define INTEL_MSIC_VOICETXCTRL 0x255
330#define INTEL_MSIC_HSMIXER 0x256
331#define INTEL_MSIC_DACCONFIG 0x257
332#define INTEL_MSIC_SOFTMUTE 0x258
333#define INTEL_MSIC_HSLVOLCTRL 0x259
334#define INTEL_MSIC_HSRVOLCTRL 0x25a
335#define INTEL_MSIC_IHFLVOLCTRL 0x25b
336#define INTEL_MSIC_IHFRVOLCTRL 0x25c
337#define INTEL_MSIC_DRIVEREN 0x25d
338#define INTEL_MSIC_LINEOUTCTRL 0x25e
339#define INTEL_MSIC_VIB1CTRL1 0x25f
340#define INTEL_MSIC_VIB1CTRL2 0x260
341#define INTEL_MSIC_VIB1CTRL3 0x261
342#define INTEL_MSIC_VIB1SPIPCM_1 0x262
343#define INTEL_MSIC_VIB1SPIPCM_2 0x263
344#define INTEL_MSIC_VIB1CTRL5 0x264
345#define INTEL_MSIC_VIB2CTRL1 0x265
346#define INTEL_MSIC_VIB2CTRL2 0x266
347#define INTEL_MSIC_VIB2CTRL3 0x267
348#define INTEL_MSIC_VIB2SPIPCM_1 0x268
349#define INTEL_MSIC_VIB2SPIPCM_2 0x269
350#define INTEL_MSIC_VIB2CTRL5 0x26a
351#define INTEL_MSIC_BTNCTRL1 0x26b
352#define INTEL_MSIC_BTNCTRL2 0x26c
353#define INTEL_MSIC_PCM1TXSLOT01 0x26d
354#define INTEL_MSIC_PCM1TXSLOT23 0x26e
355#define INTEL_MSIC_PCM1TXSLOT45 0x26f
356#define INTEL_MSIC_PCM1RXSLOT0123 0x270
357#define INTEL_MSIC_PCM1RXSLOT045 0x271
358#define INTEL_MSIC_PCM2TXSLOT01 0x272
359#define INTEL_MSIC_PCM2TXSLOT23 0x273
360#define INTEL_MSIC_PCM2TXSLOT45 0x274
361#define INTEL_MSIC_PCM2RXSLOT01 0x275
362#define INTEL_MSIC_PCM2RXSLOT23 0x276
363#define INTEL_MSIC_PCM2RXSLOT45 0x277
364#define INTEL_MSIC_PCM1CTRL1 0x278
365#define INTEL_MSIC_PCM1CTRL2 0x279
366#define INTEL_MSIC_PCM1CTRL3 0x27a
367#define INTEL_MSIC_PCM2CTRL1 0x27b
368#define INTEL_MSIC_PCM2CTRL2 0x27c
369
370/* HDMI */
371#define INTEL_MSIC_HDMIPUEN 0x280
372#define INTEL_MSIC_HDMISTATUS 0x281 /* RO */
373
374/* Physical address of the start of the MSIC interrupt tree in SRAM */
375#define INTEL_MSIC_IRQ_PHYS_BASE 0xffff7fc0
376
377/**
378 * struct intel_msic_gpio_pdata - platform data for the MSIC GPIO driver
379 * @gpio_base: base number for the GPIOs
380 */
381struct intel_msic_gpio_pdata {
382 unsigned gpio_base;
383};
384
385/**
386 * struct intel_msic_ocd_pdata - platform data for the MSIC OCD driver
387 * @gpio: GPIO number used for OCD interrupts
388 *
389 * The MSIC MFD driver converts @gpio into an IRQ number and passes it to
390 * the OCD driver as %IORESOURCE_IRQ.
391 */
392struct intel_msic_ocd_pdata {
393 unsigned gpio;
394};
395
396/* MSIC embedded blocks (subdevices) */
397enum intel_msic_block {
398 INTEL_MSIC_BLOCK_TOUCH,
399 INTEL_MSIC_BLOCK_ADC,
400 INTEL_MSIC_BLOCK_BATTERY,
401 INTEL_MSIC_BLOCK_GPIO,
402 INTEL_MSIC_BLOCK_AUDIO,
403 INTEL_MSIC_BLOCK_HDMI,
404 INTEL_MSIC_BLOCK_THERMAL,
405 INTEL_MSIC_BLOCK_POWER_BTN,
406 INTEL_MSIC_BLOCK_OCD,
407
408 INTEL_MSIC_BLOCK_LAST,
409};
410
411/**
412 * struct intel_msic_platform_data - platform data for the MSIC driver
413 * @irq: array of interrupt numbers, one per device. If @irq is set to %0
414 * for a given block, the corresponding platform device is not
415 * created. For devices which don't have an interrupt, use %0xff
416 * (this is same as in SFI spec).
417 * @gpio: platform data for the MSIC GPIO driver
418 * @ocd: platform data for the MSIC OCD driver
419 *
420 * Once the MSIC driver is initialized, the register interface is ready to
421 * use. All the platform devices for subdevices are created after the
422 * register interface is ready so that we can guarantee its availability to
423 * the subdevice drivers.
424 *
425 * Interrupt numbers are passed to the subdevices via %IORESOURCE_IRQ
426 * resources of the created platform device.
427 */
428struct intel_msic_platform_data {
429 int irq[INTEL_MSIC_BLOCK_LAST];
430 struct intel_msic_gpio_pdata *gpio;
431 struct intel_msic_ocd_pdata *ocd;
432};
433
434struct intel_msic;
435
436extern int intel_msic_reg_read(unsigned short reg, u8 *val);
437extern int intel_msic_reg_write(unsigned short reg, u8 val);
438extern int intel_msic_reg_update(unsigned short reg, u8 val, u8 mask);
439extern int intel_msic_bulk_read(unsigned short *reg, u8 *buf, size_t count);
440extern int intel_msic_bulk_write(unsigned short *reg, u8 *buf, size_t count);
441
442/*
443 * pdev_to_intel_msic - gets an MSIC instance from the platform device
444 * @pdev: platform device pointer
445 *
446 * The client drivers need to have pointer to the MSIC instance if they
447 * want to call intel_msic_irq_read(). This macro can be used for
448 * convenience to get the MSIC pointer from @pdev where needed. This is
449 * _only_ valid for devices which are managed by the MSIC.
450 */
451#define pdev_to_intel_msic(pdev) (dev_get_drvdata(pdev->dev.parent))
452
453extern int intel_msic_irq_read(struct intel_msic *msic, unsigned short reg,
454 u8 *val);
455
456#endif /* __LINUX_MFD_INTEL_MSIC_H__ */
diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h
deleted file mode 100644
index 594bc591f25..00000000000
--- a/include/linux/mfd/lm3533.h
+++ /dev/null
@@ -1,104 +0,0 @@
1/*
2 * lm3533.h -- LM3533 interface
3 *
4 * Copyright (C) 2011-2012 Texas Instruments
5 *
6 * Author: Johan Hovold <jhovold@gmail.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 __LINUX_MFD_LM3533_H
15#define __LINUX_MFD_LM3533_H
16
17#define LM3533_ATTR_RO(_name) \
18 DEVICE_ATTR(_name, S_IRUGO, show_##_name, NULL)
19#define LM3533_ATTR_RW(_name) \
20 DEVICE_ATTR(_name, S_IRUGO | S_IWUSR , show_##_name, store_##_name)
21
22struct device;
23struct regmap;
24
25struct lm3533 {
26 struct device *dev;
27
28 struct regmap *regmap;
29
30 int gpio_hwen;
31 int irq;
32
33 unsigned have_als:1;
34 unsigned have_backlights:1;
35 unsigned have_leds:1;
36};
37
38struct lm3533_ctrlbank {
39 struct lm3533 *lm3533;
40 struct device *dev;
41 int id;
42};
43
44struct lm3533_als_platform_data {
45 unsigned pwm_mode:1; /* PWM input mode (default analog) */
46 u8 r_select; /* 1 - 127 (ignored in PWM-mode) */
47};
48
49struct lm3533_bl_platform_data {
50 char *name;
51 u16 max_current; /* 5000 - 29800 uA (800 uA step) */
52 u8 default_brightness; /* 0 - 255 */
53 u8 pwm; /* 0 - 0x3f */
54};
55
56struct lm3533_led_platform_data {
57 char *name;
58 const char *default_trigger;
59 u16 max_current; /* 5000 - 29800 uA (800 uA step) */
60 u8 pwm; /* 0 - 0x3f */
61};
62
63enum lm3533_boost_freq {
64 LM3533_BOOST_FREQ_500KHZ,
65 LM3533_BOOST_FREQ_1000KHZ,
66};
67
68enum lm3533_boost_ovp {
69 LM3533_BOOST_OVP_16V,
70 LM3533_BOOST_OVP_24V,
71 LM3533_BOOST_OVP_32V,
72 LM3533_BOOST_OVP_40V,
73};
74
75struct lm3533_platform_data {
76 int gpio_hwen;
77
78 enum lm3533_boost_ovp boost_ovp;
79 enum lm3533_boost_freq boost_freq;
80
81 struct lm3533_als_platform_data *als;
82
83 struct lm3533_bl_platform_data *backlights;
84 int num_backlights;
85
86 struct lm3533_led_platform_data *leds;
87 int num_leds;
88};
89
90extern int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb);
91extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb);
92
93extern int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 val);
94extern int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *val);
95extern int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb,
96 u16 imax);
97extern int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val);
98extern int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val);
99
100extern int lm3533_read(struct lm3533 *lm3533, u8 reg, u8 *val);
101extern int lm3533_write(struct lm3533 *lm3533, u8 reg, u8 val);
102extern int lm3533_update(struct lm3533 *lm3533, u8 reg, u8 val, u8 mask);
103
104#endif /* __LINUX_MFD_LM3533_H */
diff --git a/include/linux/mfd/lp8788-isink.h b/include/linux/mfd/lp8788-isink.h
deleted file mode 100644
index f38262d21ff..00000000000
--- a/include/linux/mfd/lp8788-isink.h
+++ /dev/null
@@ -1,52 +0,0 @@
1/*
2 * TI LP8788 MFD - common definitions for current sinks
3 *
4 * Copyright 2012 Texas Instruments
5 *
6 * Author: Milo(Woogyom) Kim <milo.kim@ti.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 */
13
14#ifndef __ISINK_LP8788_H__
15#define __ISINK_LP8788_H__
16
17/* register address */
18#define LP8788_ISINK_CTRL 0x99
19#define LP8788_ISINK12_IOUT 0x9A
20#define LP8788_ISINK3_IOUT 0x9B
21#define LP8788_ISINK1_PWM 0x9C
22#define LP8788_ISINK2_PWM 0x9D
23#define LP8788_ISINK3_PWM 0x9E
24
25/* mask bits */
26#define LP8788_ISINK1_IOUT_M 0x0F /* Addr 9Ah */
27#define LP8788_ISINK2_IOUT_M 0xF0
28#define LP8788_ISINK3_IOUT_M 0x0F /* Addr 9Bh */
29
30/* 6 bits used for PWM code : Addr 9C ~ 9Eh */
31#define LP8788_ISINK_MAX_PWM 63
32#define LP8788_ISINK_SCALE_OFFSET 3
33
34static const u8 lp8788_iout_addr[] = {
35 LP8788_ISINK12_IOUT,
36 LP8788_ISINK12_IOUT,
37 LP8788_ISINK3_IOUT,
38};
39
40static const u8 lp8788_iout_mask[] = {
41 LP8788_ISINK1_IOUT_M,
42 LP8788_ISINK2_IOUT_M,
43 LP8788_ISINK3_IOUT_M,
44};
45
46static const u8 lp8788_pwm_addr[] = {
47 LP8788_ISINK1_PWM,
48 LP8788_ISINK2_PWM,
49 LP8788_ISINK3_PWM,
50};
51
52#endif
diff --git a/include/linux/mfd/lp8788.h b/include/linux/mfd/lp8788.h
deleted file mode 100644
index 2a32b16f79c..00000000000
--- a/include/linux/mfd/lp8788.h
+++ /dev/null
@@ -1,364 +0,0 @@
1/*
2 * TI LP8788 MFD Device
3 *
4 * Copyright 2012 Texas Instruments
5 *
6 * Author: Milo(Woogyom) Kim <milo.kim@ti.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 */
13
14#ifndef __MFD_LP8788_H__
15#define __MFD_LP8788_H__
16
17#include <linux/gpio.h>
18#include <linux/irqdomain.h>
19#include <linux/regmap.h>
20
21#define LP8788_DEV_BUCK "lp8788-buck"
22#define LP8788_DEV_DLDO "lp8788-dldo"
23#define LP8788_DEV_ALDO "lp8788-aldo"
24#define LP8788_DEV_CHARGER "lp8788-charger"
25#define LP8788_DEV_RTC "lp8788-rtc"
26#define LP8788_DEV_BACKLIGHT "lp8788-backlight"
27#define LP8788_DEV_VIBRATOR "lp8788-vibrator"
28#define LP8788_DEV_KEYLED "lp8788-keyled"
29#define LP8788_DEV_ADC "lp8788-adc"
30
31#define LP8788_NUM_BUCKS 4
32#define LP8788_NUM_DLDOS 12
33#define LP8788_NUM_ALDOS 10
34#define LP8788_NUM_BUCK2_DVS 2
35
36#define LP8788_CHG_IRQ "CHG_IRQ"
37#define LP8788_PRSW_IRQ "PRSW_IRQ"
38#define LP8788_BATT_IRQ "BATT_IRQ"
39#define LP8788_ALM_IRQ "ALARM_IRQ"
40
41enum lp8788_int_id {
42 /* interrup register 1 : Addr 00h */
43 LP8788_INT_TSDL,
44 LP8788_INT_TSDH,
45 LP8788_INT_UVLO,
46 LP8788_INT_FLAGMON,
47 LP8788_INT_PWRON_TIME,
48 LP8788_INT_PWRON,
49 LP8788_INT_COMP1,
50 LP8788_INT_COMP2,
51
52 /* interrupt register 2 : Addr 01h */
53 LP8788_INT_CHG_INPUT_STATE,
54 LP8788_INT_CHG_STATE,
55 LP8788_INT_EOC,
56 LP8788_INT_CHG_RESTART,
57 LP8788_INT_RESTART_TIMEOUT,
58 LP8788_INT_FULLCHG_TIMEOUT,
59 LP8788_INT_PRECHG_TIMEOUT,
60
61 /* interrupt register 3 : Addr 02h */
62 LP8788_INT_RTC_ALARM1 = 17,
63 LP8788_INT_RTC_ALARM2,
64 LP8788_INT_ENTER_SYS_SUPPORT,
65 LP8788_INT_EXIT_SYS_SUPPORT,
66 LP8788_INT_BATT_LOW,
67 LP8788_INT_NO_BATT,
68
69 LP8788_INT_MAX = 24,
70};
71
72enum lp8788_dvs_sel {
73 DVS_SEL_V0,
74 DVS_SEL_V1,
75 DVS_SEL_V2,
76 DVS_SEL_V3,
77};
78
79enum lp8788_ext_ldo_en_id {
80 EN_ALDO1,
81 EN_ALDO234,
82 EN_ALDO5,
83 EN_ALDO7,
84 EN_DLDO7,
85 EN_DLDO911,
86 EN_LDOS_MAX,
87};
88
89enum lp8788_charger_event {
90 NO_CHARGER,
91 CHARGER_DETECTED,
92};
93
94enum lp8788_bl_ctrl_mode {
95 LP8788_BL_REGISTER_ONLY,
96 LP8788_BL_COMB_PWM_BASED, /* PWM + I2C, changed by PWM input */
97 LP8788_BL_COMB_REGISTER_BASED, /* PWM + I2C, changed by I2C */
98};
99
100enum lp8788_bl_dim_mode {
101 LP8788_DIM_EXPONENTIAL,
102 LP8788_DIM_LINEAR,
103};
104
105enum lp8788_bl_full_scale_current {
106 LP8788_FULLSCALE_5000uA,
107 LP8788_FULLSCALE_8500uA,
108 LP8788_FULLSCALE_1200uA,
109 LP8788_FULLSCALE_1550uA,
110 LP8788_FULLSCALE_1900uA,
111 LP8788_FULLSCALE_2250uA,
112 LP8788_FULLSCALE_2600uA,
113 LP8788_FULLSCALE_2950uA,
114};
115
116enum lp8788_bl_ramp_step {
117 LP8788_RAMP_8us,
118 LP8788_RAMP_1024us,
119 LP8788_RAMP_2048us,
120 LP8788_RAMP_4096us,
121 LP8788_RAMP_8192us,
122 LP8788_RAMP_16384us,
123 LP8788_RAMP_32768us,
124 LP8788_RAMP_65538us,
125};
126
127enum lp8788_bl_pwm_polarity {
128 LP8788_PWM_ACTIVE_HIGH,
129 LP8788_PWM_ACTIVE_LOW,
130};
131
132enum lp8788_isink_scale {
133 LP8788_ISINK_SCALE_100mA,
134 LP8788_ISINK_SCALE_120mA,
135};
136
137enum lp8788_isink_number {
138 LP8788_ISINK_1,
139 LP8788_ISINK_2,
140 LP8788_ISINK_3,
141};
142
143enum lp8788_alarm_sel {
144 LP8788_ALARM_1,
145 LP8788_ALARM_2,
146 LP8788_ALARM_MAX,
147};
148
149enum lp8788_adc_id {
150 LPADC_VBATT_5P5,
151 LPADC_VIN_CHG,
152 LPADC_IBATT,
153 LPADC_IC_TEMP,
154 LPADC_VBATT_6P0,
155 LPADC_VBATT_5P0,
156 LPADC_ADC1,
157 LPADC_ADC2,
158 LPADC_VDD,
159 LPADC_VCOIN,
160 LPADC_VDD_LDO,
161 LPADC_ADC3,
162 LPADC_ADC4,
163 LPADC_MAX,
164};
165
166struct lp8788;
167
168/*
169 * lp8788_buck1_dvs
170 * @gpio : gpio pin number for dvs control
171 * @vsel : dvs selector for buck v1 register
172 */
173struct lp8788_buck1_dvs {
174 int gpio;
175 enum lp8788_dvs_sel vsel;
176};
177
178/*
179 * lp8788_buck2_dvs
180 * @gpio : two gpio pin numbers are used for dvs
181 * @vsel : dvs selector for buck v2 register
182 */
183struct lp8788_buck2_dvs {
184 int gpio[LP8788_NUM_BUCK2_DVS];
185 enum lp8788_dvs_sel vsel;
186};
187
188/*
189 * struct lp8788_ldo_enable_pin
190 *
191 * Basically, all LDOs are enabled through the I2C commands.
192 * But ALDO 1 ~ 5, 7, DLDO 7, 9, 11 can be enabled by external gpio pins.
193 *
194 * @gpio : gpio number which is used for enabling ldos
195 * @init_state : initial gpio state (ex. GPIOF_OUT_INIT_LOW)
196 */
197struct lp8788_ldo_enable_pin {
198 int gpio;
199 int init_state;
200};
201
202/*
203 * struct lp8788_chg_param
204 * @addr : charging control register address (range : 0x11 ~ 0x1C)
205 * @val : charging parameter value
206 */
207struct lp8788_chg_param {
208 u8 addr;
209 u8 val;
210};
211
212/*
213 * struct lp8788_charger_platform_data
214 * @adc_vbatt : adc channel name for battery voltage
215 * @adc_batt_temp : adc channel name for battery temperature
216 * @max_vbatt_mv : used for calculating battery capacity
217 * @chg_params : initial charging parameters
218 * @num_chg_params : numbers of charging parameters
219 * @charger_event : the charger event can be reported to the platform side
220 */
221struct lp8788_charger_platform_data {
222 const char *adc_vbatt;
223 const char *adc_batt_temp;
224 unsigned int max_vbatt_mv;
225 struct lp8788_chg_param *chg_params;
226 int num_chg_params;
227 void (*charger_event) (struct lp8788 *lp,
228 enum lp8788_charger_event event);
229};
230
231/*
232 * struct lp8788_bl_pwm_data
233 * @pwm_set_intensity : set duty of pwm
234 * @pwm_get_intensity : get current duty of pwm
235 */
236struct lp8788_bl_pwm_data {
237 void (*pwm_set_intensity) (int brightness, int max_brightness);
238 int (*pwm_get_intensity) (int max_brightness);
239};
240
241/*
242 * struct lp8788_backlight_platform_data
243 * @name : backlight driver name. (default: "lcd-backlight")
244 * @initial_brightness : initial value of backlight brightness
245 * @bl_mode : brightness control by pwm or lp8788 register
246 * @dim_mode : dimming mode selection
247 * @full_scale : full scale current setting
248 * @rise_time : brightness ramp up step time
249 * @fall_time : brightness ramp down step time
250 * @pwm_pol : pwm polarity setting when bl_mode is pwm based
251 * @pwm_data : platform specific pwm generation functions
252 * only valid when bl_mode is pwm based
253 */
254struct lp8788_backlight_platform_data {
255 char *name;
256 int initial_brightness;
257 enum lp8788_bl_ctrl_mode bl_mode;
258 enum lp8788_bl_dim_mode dim_mode;
259 enum lp8788_bl_full_scale_current full_scale;
260 enum lp8788_bl_ramp_step rise_time;
261 enum lp8788_bl_ramp_step fall_time;
262 enum lp8788_bl_pwm_polarity pwm_pol;
263 struct lp8788_bl_pwm_data pwm_data;
264};
265
266/*
267 * struct lp8788_led_platform_data
268 * @name : led driver name. (default: "keyboard-backlight")
269 * @scale : current scale
270 * @num : current sink number
271 * @iout_code : current output value (Addr 9Ah ~ 9Bh)
272 */
273struct lp8788_led_platform_data {
274 char *name;
275 enum lp8788_isink_scale scale;
276 enum lp8788_isink_number num;
277 int iout_code;
278};
279
280/*
281 * struct lp8788_vib_platform_data
282 * @name : vibrator driver name
283 * @scale : current scale
284 * @num : current sink number
285 * @iout_code : current output value (Addr 9Ah ~ 9Bh)
286 * @pwm_code : PWM code value (Addr 9Ch ~ 9Eh)
287 */
288struct lp8788_vib_platform_data {
289 char *name;
290 enum lp8788_isink_scale scale;
291 enum lp8788_isink_number num;
292 int iout_code;
293 int pwm_code;
294};
295
296/*
297 * struct lp8788_platform_data
298 * @init_func : used for initializing registers
299 * before mfd driver is registered
300 * @buck_data : regulator initial data for buck
301 * @dldo_data : regulator initial data for digital ldo
302 * @aldo_data : regulator initial data for analog ldo
303 * @buck1_dvs : gpio configurations for buck1 dvs
304 * @buck2_dvs : gpio configurations for buck2 dvs
305 * @ldo_pin : gpio configurations for enabling LDOs
306 * @chg_pdata : platform data for charger driver
307 * @alarm_sel : rtc alarm selection (1 or 2)
308 * @bl_pdata : configurable data for backlight driver
309 * @led_pdata : configurable data for led driver
310 * @vib_pdata : configurable data for vibrator driver
311 * @adc_pdata : iio map data for adc driver
312 */
313struct lp8788_platform_data {
314 /* general system information */
315 int (*init_func) (struct lp8788 *lp);
316
317 /* regulators */
318 struct regulator_init_data *buck_data[LP8788_NUM_BUCKS];
319 struct regulator_init_data *dldo_data[LP8788_NUM_DLDOS];
320 struct regulator_init_data *aldo_data[LP8788_NUM_ALDOS];
321 struct lp8788_buck1_dvs *buck1_dvs;
322 struct lp8788_buck2_dvs *buck2_dvs;
323 struct lp8788_ldo_enable_pin *ldo_pin[EN_LDOS_MAX];
324
325 /* charger */
326 struct lp8788_charger_platform_data *chg_pdata;
327
328 /* rtc alarm */
329 enum lp8788_alarm_sel alarm_sel;
330
331 /* backlight */
332 struct lp8788_backlight_platform_data *bl_pdata;
333
334 /* current sinks */
335 struct lp8788_led_platform_data *led_pdata;
336 struct lp8788_vib_platform_data *vib_pdata;
337
338 /* adc iio map data */
339 struct iio_map *adc_pdata;
340};
341
342/*
343 * struct lp8788
344 * @dev : parent device pointer
345 * @regmap : used for i2c communcation on accessing registers
346 * @irqdm : interrupt domain for handling nested interrupt
347 * @irq : pin number of IRQ_N
348 * @pdata : lp8788 platform specific data
349 */
350struct lp8788 {
351 struct device *dev;
352 struct regmap *regmap;
353 struct irq_domain *irqdm;
354 int irq;
355 struct lp8788_platform_data *pdata;
356};
357
358int lp8788_irq_init(struct lp8788 *lp, int chip_irq);
359void lp8788_irq_exit(struct lp8788 *lp);
360int lp8788_read_byte(struct lp8788 *lp, u8 reg, u8 *data);
361int lp8788_read_multi_bytes(struct lp8788 *lp, u8 reg, u8 *data, size_t count);
362int lp8788_write_byte(struct lp8788 *lp, u8 reg, u8 data);
363int lp8788_update_bits(struct lp8788 *lp, u8 reg, u8 mask, u8 data);
364#endif
diff --git a/include/linux/mfd/lpc_ich.h b/include/linux/mfd/lpc_ich.h
deleted file mode 100644
index 3e1df644c40..00000000000
--- a/include/linux/mfd/lpc_ich.h
+++ /dev/null
@@ -1,49 +0,0 @@
1/*
2 * linux/drivers/mfd/lpc_ich.h
3 *
4 * Copyright (c) 2012 Extreme Engineering Solution, Inc.
5 * Author: Aaron Sierra <asierra@xes-inc.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License 2 as published
9 * by the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; see the file COPYING. If not, write to
18 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20#ifndef LPC_ICH_H
21#define LPC_ICH_H
22
23/* Watchdog resources */
24#define ICH_RES_IO_TCO 0
25#define ICH_RES_IO_SMI 1
26#define ICH_RES_MEM_OFF 2
27#define ICH_RES_MEM_GCS 0
28
29/* GPIO resources */
30#define ICH_RES_GPIO 0
31#define ICH_RES_GPE0 1
32
33/* GPIO compatibility */
34#define ICH_I3100_GPIO 0x401
35#define ICH_V5_GPIO 0x501
36#define ICH_V6_GPIO 0x601
37#define ICH_V7_GPIO 0x701
38#define ICH_V9_GPIO 0x801
39#define ICH_V10CORP_GPIO 0xa01
40#define ICH_V10CONS_GPIO 0xa11
41
42struct lpc_ich_info {
43 char name[32];
44 unsigned int iTCO_version;
45 unsigned int gpio_version;
46 u8 use_gpio;
47};
48
49#endif
diff --git a/include/linux/mfd/max77686-private.h b/include/linux/mfd/max77686-private.h
deleted file mode 100644
index d327d4971e4..00000000000
--- a/include/linux/mfd/max77686-private.h
+++ /dev/null
@@ -1,246 +0,0 @@
1/*
2 * max77686.h - Voltage regulator driver for the Maxim 77686
3 *
4 * Copyright (C) 2012 Samsung Electrnoics
5 * Chiwoong Byun <woong.byun@samsung.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#ifndef __LINUX_MFD_MAX77686_PRIV_H
23#define __LINUX_MFD_MAX77686_PRIV_H
24
25#include <linux/i2c.h>
26#include <linux/regmap.h>
27#include <linux/module.h>
28
29#define MAX77686_REG_INVALID (0xff)
30
31enum max77686_pmic_reg {
32 MAX77686_REG_DEVICE_ID = 0x00,
33 MAX77686_REG_INTSRC = 0x01,
34 MAX77686_REG_INT1 = 0x02,
35 MAX77686_REG_INT2 = 0x03,
36
37 MAX77686_REG_INT1MSK = 0x04,
38 MAX77686_REG_INT2MSK = 0x05,
39
40 MAX77686_REG_STATUS1 = 0x06,
41 MAX77686_REG_STATUS2 = 0x07,
42
43 MAX77686_REG_PWRON = 0x08,
44 MAX77686_REG_ONOFF_DELAY = 0x09,
45 MAX77686_REG_MRSTB = 0x0A,
46 /* Reserved: 0x0B-0x0F */
47
48 MAX77686_REG_BUCK1CTRL = 0x10,
49 MAX77686_REG_BUCK1OUT = 0x11,
50 MAX77686_REG_BUCK2CTRL1 = 0x12,
51 MAX77686_REG_BUCK234FREQ = 0x13,
52 MAX77686_REG_BUCK2DVS1 = 0x14,
53 MAX77686_REG_BUCK2DVS2 = 0x15,
54 MAX77686_REG_BUCK2DVS3 = 0x16,
55 MAX77686_REG_BUCK2DVS4 = 0x17,
56 MAX77686_REG_BUCK2DVS5 = 0x18,
57 MAX77686_REG_BUCK2DVS6 = 0x19,
58 MAX77686_REG_BUCK2DVS7 = 0x1A,
59 MAX77686_REG_BUCK2DVS8 = 0x1B,
60 MAX77686_REG_BUCK3CTRL1 = 0x1C,
61 /* Reserved: 0x1D */
62 MAX77686_REG_BUCK3DVS1 = 0x1E,
63 MAX77686_REG_BUCK3DVS2 = 0x1F,
64 MAX77686_REG_BUCK3DVS3 = 0x20,
65 MAX77686_REG_BUCK3DVS4 = 0x21,
66 MAX77686_REG_BUCK3DVS5 = 0x22,
67 MAX77686_REG_BUCK3DVS6 = 0x23,
68 MAX77686_REG_BUCK3DVS7 = 0x24,
69 MAX77686_REG_BUCK3DVS8 = 0x25,
70 MAX77686_REG_BUCK4CTRL1 = 0x26,
71 /* Reserved: 0x27 */
72 MAX77686_REG_BUCK4DVS1 = 0x28,
73 MAX77686_REG_BUCK4DVS2 = 0x29,
74 MAX77686_REG_BUCK4DVS3 = 0x2A,
75 MAX77686_REG_BUCK4DVS4 = 0x2B,
76 MAX77686_REG_BUCK4DVS5 = 0x2C,
77 MAX77686_REG_BUCK4DVS6 = 0x2D,
78 MAX77686_REG_BUCK4DVS7 = 0x2E,
79 MAX77686_REG_BUCK4DVS8 = 0x2F,
80 MAX77686_REG_BUCK5CTRL = 0x30,
81 MAX77686_REG_BUCK5OUT = 0x31,
82 MAX77686_REG_BUCK6CTRL = 0x32,
83 MAX77686_REG_BUCK6OUT = 0x33,
84 MAX77686_REG_BUCK7CTRL = 0x34,
85 MAX77686_REG_BUCK7OUT = 0x35,
86 MAX77686_REG_BUCK8CTRL = 0x36,
87 MAX77686_REG_BUCK8OUT = 0x37,
88 MAX77686_REG_BUCK9CTRL = 0x38,
89 MAX77686_REG_BUCK9OUT = 0x39,
90 /* Reserved: 0x3A-0x3F */
91
92 MAX77686_REG_LDO1CTRL1 = 0x40,
93 MAX77686_REG_LDO2CTRL1 = 0x41,
94 MAX77686_REG_LDO3CTRL1 = 0x42,
95 MAX77686_REG_LDO4CTRL1 = 0x43,
96 MAX77686_REG_LDO5CTRL1 = 0x44,
97 MAX77686_REG_LDO6CTRL1 = 0x45,
98 MAX77686_REG_LDO7CTRL1 = 0x46,
99 MAX77686_REG_LDO8CTRL1 = 0x47,
100 MAX77686_REG_LDO9CTRL1 = 0x48,
101 MAX77686_REG_LDO10CTRL1 = 0x49,
102 MAX77686_REG_LDO11CTRL1 = 0x4A,
103 MAX77686_REG_LDO12CTRL1 = 0x4B,
104 MAX77686_REG_LDO13CTRL1 = 0x4C,
105 MAX77686_REG_LDO14CTRL1 = 0x4D,
106 MAX77686_REG_LDO15CTRL1 = 0x4E,
107 MAX77686_REG_LDO16CTRL1 = 0x4F,
108 MAX77686_REG_LDO17CTRL1 = 0x50,
109 MAX77686_REG_LDO18CTRL1 = 0x51,
110 MAX77686_REG_LDO19CTRL1 = 0x52,
111 MAX77686_REG_LDO20CTRL1 = 0x53,
112 MAX77686_REG_LDO21CTRL1 = 0x54,
113 MAX77686_REG_LDO22CTRL1 = 0x55,
114 MAX77686_REG_LDO23CTRL1 = 0x56,
115 MAX77686_REG_LDO24CTRL1 = 0x57,
116 MAX77686_REG_LDO25CTRL1 = 0x58,
117 MAX77686_REG_LDO26CTRL1 = 0x59,
118 /* Reserved: 0x5A-0x5F */
119 MAX77686_REG_LDO1CTRL2 = 0x60,
120 MAX77686_REG_LDO2CTRL2 = 0x61,
121 MAX77686_REG_LDO3CTRL2 = 0x62,
122 MAX77686_REG_LDO4CTRL2 = 0x63,
123 MAX77686_REG_LDO5CTRL2 = 0x64,
124 MAX77686_REG_LDO6CTRL2 = 0x65,
125 MAX77686_REG_LDO7CTRL2 = 0x66,
126 MAX77686_REG_LDO8CTRL2 = 0x67,
127 MAX77686_REG_LDO9CTRL2 = 0x68,
128 MAX77686_REG_LDO10CTRL2 = 0x69,
129 MAX77686_REG_LDO11CTRL2 = 0x6A,
130 MAX77686_REG_LDO12CTRL2 = 0x6B,
131 MAX77686_REG_LDO13CTRL2 = 0x6C,
132 MAX77686_REG_LDO14CTRL2 = 0x6D,
133 MAX77686_REG_LDO15CTRL2 = 0x6E,
134 MAX77686_REG_LDO16CTRL2 = 0x6F,
135 MAX77686_REG_LDO17CTRL2 = 0x70,
136 MAX77686_REG_LDO18CTRL2 = 0x71,
137 MAX77686_REG_LDO19CTRL2 = 0x72,
138 MAX77686_REG_LDO20CTRL2 = 0x73,
139 MAX77686_REG_LDO21CTRL2 = 0x74,
140 MAX77686_REG_LDO22CTRL2 = 0x75,
141 MAX77686_REG_LDO23CTRL2 = 0x76,
142 MAX77686_REG_LDO24CTRL2 = 0x77,
143 MAX77686_REG_LDO25CTRL2 = 0x78,
144 MAX77686_REG_LDO26CTRL2 = 0x79,
145 /* Reserved: 0x7A-0x7D */
146
147 MAX77686_REG_BBAT_CHG = 0x7E,
148 MAX77686_REG_32KHZ = 0x7F,
149
150 MAX77686_REG_PMIC_END = 0x80,
151};
152
153enum max77686_rtc_reg {
154 MAX77686_RTC_INT = 0x00,
155 MAX77686_RTC_INTM = 0x01,
156 MAX77686_RTC_CONTROLM = 0x02,
157 MAX77686_RTC_CONTROL = 0x03,
158 MAX77686_RTC_UPDATE0 = 0x04,
159 /* Reserved: 0x5 */
160 MAX77686_WTSR_SMPL_CNTL = 0x06,
161 MAX77686_RTC_SEC = 0x07,
162 MAX77686_RTC_MIN = 0x08,
163 MAX77686_RTC_HOUR = 0x09,
164 MAX77686_RTC_WEEKDAY = 0x0A,
165 MAX77686_RTC_MONTH = 0x0B,
166 MAX77686_RTC_YEAR = 0x0C,
167 MAX77686_RTC_DATE = 0x0D,
168 MAX77686_ALARM1_SEC = 0x0E,
169 MAX77686_ALARM1_MIN = 0x0F,
170 MAX77686_ALARM1_HOUR = 0x10,
171 MAX77686_ALARM1_WEEKDAY = 0x11,
172 MAX77686_ALARM1_MONTH = 0x12,
173 MAX77686_ALARM1_YEAR = 0x13,
174 MAX77686_ALARM1_DATE = 0x14,
175 MAX77686_ALARM2_SEC = 0x15,
176 MAX77686_ALARM2_MIN = 0x16,
177 MAX77686_ALARM2_HOUR = 0x17,
178 MAX77686_ALARM2_WEEKDAY = 0x18,
179 MAX77686_ALARM2_MONTH = 0x19,
180 MAX77686_ALARM2_YEAR = 0x1A,
181 MAX77686_ALARM2_DATE = 0x1B,
182};
183
184#define MAX77686_IRQSRC_PMIC (0)
185#define MAX77686_IRQSRC_RTC (1 << 0)
186
187enum max77686_irq_source {
188 PMIC_INT1 = 0,
189 PMIC_INT2,
190 RTC_INT,
191
192 MAX77686_IRQ_GROUP_NR,
193};
194
195enum max77686_irq {
196 MAX77686_PMICIRQ_PWRONF,
197 MAX77686_PMICIRQ_PWRONR,
198 MAX77686_PMICIRQ_JIGONBF,
199 MAX77686_PMICIRQ_JIGONBR,
200 MAX77686_PMICIRQ_ACOKBF,
201 MAX77686_PMICIRQ_ACOKBR,
202 MAX77686_PMICIRQ_ONKEY1S,
203 MAX77686_PMICIRQ_MRSTB,
204
205 MAX77686_PMICIRQ_140C,
206 MAX77686_PMICIRQ_120C,
207
208 MAX77686_RTCIRQ_RTC60S,
209 MAX77686_RTCIRQ_RTCA1,
210 MAX77686_RTCIRQ_RTCA2,
211 MAX77686_RTCIRQ_SMPL,
212 MAX77686_RTCIRQ_RTC1S,
213 MAX77686_RTCIRQ_WTSR,
214
215 MAX77686_IRQ_NR,
216};
217
218struct max77686_dev {
219 struct device *dev;
220 struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */
221 struct i2c_client *rtc; /* slave addr 0x0c */
222
223 int type;
224
225 struct regmap *regmap; /* regmap for mfd */
226 struct regmap *rtc_regmap; /* regmap for rtc */
227
228 struct irq_domain *irq_domain;
229
230 int irq;
231 int irq_gpio;
232 bool wakeup;
233 struct mutex irqlock;
234 int irq_masks_cur[MAX77686_IRQ_GROUP_NR];
235 int irq_masks_cache[MAX77686_IRQ_GROUP_NR];
236};
237
238enum max77686_types {
239 TYPE_MAX77686,
240};
241
242extern int max77686_irq_init(struct max77686_dev *max77686);
243extern void max77686_irq_exit(struct max77686_dev *max77686);
244extern int max77686_irq_resume(struct max77686_dev *max77686);
245
246#endif /* __LINUX_MFD_MAX77686_PRIV_H */
diff --git a/include/linux/mfd/max77686.h b/include/linux/mfd/max77686.h
deleted file mode 100644
index 46c0f320ed7..00000000000
--- a/include/linux/mfd/max77686.h
+++ /dev/null
@@ -1,115 +0,0 @@
1/*
2 * max77686.h - Driver for the Maxim 77686
3 *
4 * Copyright (C) 2012 Samsung Electrnoics
5 * Chiwoong Byun <woong.byun@samsung.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 * This driver is based on max8997.h
22 *
23 * MAX77686 has PMIC, RTC devices.
24 * The devices share the same I2C bus and included in
25 * this mfd driver.
26 */
27
28#ifndef __LINUX_MFD_MAX77686_H
29#define __LINUX_MFD_MAX77686_H
30
31#include <linux/regulator/consumer.h>
32
33/* MAX77686 regulator IDs */
34enum max77686_regulators {
35 MAX77686_LDO1 = 0,
36 MAX77686_LDO2,
37 MAX77686_LDO3,
38 MAX77686_LDO4,
39 MAX77686_LDO5,
40 MAX77686_LDO6,
41 MAX77686_LDO7,
42 MAX77686_LDO8,
43 MAX77686_LDO9,
44 MAX77686_LDO10,
45 MAX77686_LDO11,
46 MAX77686_LDO12,
47 MAX77686_LDO13,
48 MAX77686_LDO14,
49 MAX77686_LDO15,
50 MAX77686_LDO16,
51 MAX77686_LDO17,
52 MAX77686_LDO18,
53 MAX77686_LDO19,
54 MAX77686_LDO20,
55 MAX77686_LDO21,
56 MAX77686_LDO22,
57 MAX77686_LDO23,
58 MAX77686_LDO24,
59 MAX77686_LDO25,
60 MAX77686_LDO26,
61 MAX77686_BUCK1,
62 MAX77686_BUCK2,
63 MAX77686_BUCK3,
64 MAX77686_BUCK4,
65 MAX77686_BUCK5,
66 MAX77686_BUCK6,
67 MAX77686_BUCK7,
68 MAX77686_BUCK8,
69 MAX77686_BUCK9,
70
71 MAX77686_REG_MAX,
72};
73
74struct max77686_regulator_data {
75 int id;
76 struct regulator_init_data *initdata;
77 struct device_node *of_node;
78};
79
80enum max77686_opmode {
81 MAX77686_OPMODE_NORMAL,
82 MAX77686_OPMODE_LP,
83 MAX77686_OPMODE_STANDBY,
84};
85
86struct max77686_opmode_data {
87 int id;
88 int mode;
89};
90
91struct max77686_platform_data {
92 /* IRQ */
93 int irq_gpio;
94 int ono;
95 int wakeup;
96
97 /* ---- PMIC ---- */
98 struct max77686_regulator_data *regulators;
99 int num_regulators;
100
101 struct max77686_opmode_data *opmode_data;
102
103 /*
104 * GPIO-DVS feature is not enabled with the current version of
105 * MAX77686 driver. Buck2/3/4_voltages[0] is used as the default
106 * voltage at probe. DVS/SELB gpios are set as OUTPUT-LOW.
107 */
108 int buck234_gpio_dvs[3]; /* GPIO of [0]DVS1, [1]DVS2, [2]DVS3 */
109 int buck234_gpio_selb[3]; /* [0]SELB2, [1]SELB3, [2]SELB4 */
110 unsigned int buck2_voltage[8]; /* buckx_voltage in uV */
111 unsigned int buck3_voltage[8];
112 unsigned int buck4_voltage[8];
113};
114
115#endif /* __LINUX_MFD_MAX77686_H */
diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h
deleted file mode 100644
index 1eeae5c0791..00000000000
--- a/include/linux/mfd/max77693-private.h
+++ /dev/null
@@ -1,226 +0,0 @@
1/*
2 * max77693-private.h - Voltage regulator driver for the Maxim 77693
3 *
4 * Copyright (C) 2012 Samsung Electrnoics
5 * SangYoung Son <hello.son@samsung.com>
6 *
7 * This program is not provided / owned by Maxim Integrated Products.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#ifndef __LINUX_MFD_MAX77693_PRIV_H
25#define __LINUX_MFD_MAX77693_PRIV_H
26
27#include <linux/i2c.h>
28
29#define MAX77693_NUM_IRQ_MUIC_REGS 3
30#define MAX77693_REG_INVALID (0xff)
31
32/* Slave addr = 0xCC: PMIC, Charger, Flash LED */
33enum max77693_pmic_reg {
34 MAX77693_LED_REG_IFLASH1 = 0x00,
35 MAX77693_LED_REG_IFLASH2 = 0x01,
36 MAX77693_LED_REG_ITORCH = 0x02,
37 MAX77693_LED_REG_ITORCHTIMER = 0x03,
38 MAX77693_LED_REG_FLASH_TIMER = 0x04,
39 MAX77693_LED_REG_FLASH_EN = 0x05,
40 MAX77693_LED_REG_MAX_FLASH1 = 0x06,
41 MAX77693_LED_REG_MAX_FLASH2 = 0x07,
42 MAX77693_LED_REG_MAX_FLASH3 = 0x08,
43 MAX77693_LED_REG_MAX_FLASH4 = 0x09,
44 MAX77693_LED_REG_VOUT_CNTL = 0x0A,
45 MAX77693_LED_REG_VOUT_FLASH1 = 0x0B,
46 MAX77693_LED_REG_VOUT_FLASH2 = 0x0C,
47 MAX77693_LED_REG_FLASH_INT = 0x0E,
48 MAX77693_LED_REG_FLASH_INT_MASK = 0x0F,
49 MAX77693_LED_REG_FLASH_INT_STATUS = 0x10,
50
51 MAX77693_PMIC_REG_PMIC_ID1 = 0x20,
52 MAX77693_PMIC_REG_PMIC_ID2 = 0x21,
53 MAX77693_PMIC_REG_INTSRC = 0x22,
54 MAX77693_PMIC_REG_INTSRC_MASK = 0x23,
55 MAX77693_PMIC_REG_TOPSYS_INT = 0x24,
56 MAX77693_PMIC_REG_TOPSYS_INT_MASK = 0x26,
57 MAX77693_PMIC_REG_TOPSYS_STAT = 0x28,
58 MAX77693_PMIC_REG_MAINCTRL1 = 0x2A,
59 MAX77693_PMIC_REG_LSCNFG = 0x2B,
60
61 MAX77693_CHG_REG_CHG_INT = 0xB0,
62 MAX77693_CHG_REG_CHG_INT_MASK = 0xB1,
63 MAX77693_CHG_REG_CHG_INT_OK = 0xB2,
64 MAX77693_CHG_REG_CHG_DETAILS_00 = 0xB3,
65 MAX77693_CHG_REG_CHG_DETAILS_01 = 0xB4,
66 MAX77693_CHG_REG_CHG_DETAILS_02 = 0xB5,
67 MAX77693_CHG_REG_CHG_DETAILS_03 = 0xB6,
68 MAX77693_CHG_REG_CHG_CNFG_00 = 0xB7,
69 MAX77693_CHG_REG_CHG_CNFG_01 = 0xB8,
70 MAX77693_CHG_REG_CHG_CNFG_02 = 0xB9,
71 MAX77693_CHG_REG_CHG_CNFG_03 = 0xBA,
72 MAX77693_CHG_REG_CHG_CNFG_04 = 0xBB,
73 MAX77693_CHG_REG_CHG_CNFG_05 = 0xBC,
74 MAX77693_CHG_REG_CHG_CNFG_06 = 0xBD,
75 MAX77693_CHG_REG_CHG_CNFG_07 = 0xBE,
76 MAX77693_CHG_REG_CHG_CNFG_08 = 0xBF,
77 MAX77693_CHG_REG_CHG_CNFG_09 = 0xC0,
78 MAX77693_CHG_REG_CHG_CNFG_10 = 0xC1,
79 MAX77693_CHG_REG_CHG_CNFG_11 = 0xC2,
80 MAX77693_CHG_REG_CHG_CNFG_12 = 0xC3,
81 MAX77693_CHG_REG_CHG_CNFG_13 = 0xC4,
82 MAX77693_CHG_REG_CHG_CNFG_14 = 0xC5,
83 MAX77693_CHG_REG_SAFEOUT_CTRL = 0xC6,
84
85 MAX77693_PMIC_REG_END,
86};
87
88/* Slave addr = 0x4A: MUIC */
89enum max77693_muic_reg {
90 MAX77693_MUIC_REG_ID = 0x00,
91 MAX77693_MUIC_REG_INT1 = 0x01,
92 MAX77693_MUIC_REG_INT2 = 0x02,
93 MAX77693_MUIC_REG_INT3 = 0x03,
94 MAX77693_MUIC_REG_STATUS1 = 0x04,
95 MAX77693_MUIC_REG_STATUS2 = 0x05,
96 MAX77693_MUIC_REG_STATUS3 = 0x06,
97 MAX77693_MUIC_REG_INTMASK1 = 0x07,
98 MAX77693_MUIC_REG_INTMASK2 = 0x08,
99 MAX77693_MUIC_REG_INTMASK3 = 0x09,
100 MAX77693_MUIC_REG_CDETCTRL1 = 0x0A,
101 MAX77693_MUIC_REG_CDETCTRL2 = 0x0B,
102 MAX77693_MUIC_REG_CTRL1 = 0x0C,
103 MAX77693_MUIC_REG_CTRL2 = 0x0D,
104 MAX77693_MUIC_REG_CTRL3 = 0x0E,
105
106 MAX77693_MUIC_REG_END,
107};
108
109/* Slave addr = 0x90: Haptic */
110enum max77693_haptic_reg {
111 MAX77693_HAPTIC_REG_STATUS = 0x00,
112 MAX77693_HAPTIC_REG_CONFIG1 = 0x01,
113 MAX77693_HAPTIC_REG_CONFIG2 = 0x02,
114 MAX77693_HAPTIC_REG_CONFIG_CHNL = 0x03,
115 MAX77693_HAPTIC_REG_CONFG_CYC1 = 0x04,
116 MAX77693_HAPTIC_REG_CONFG_CYC2 = 0x05,
117 MAX77693_HAPTIC_REG_CONFIG_PER1 = 0x06,
118 MAX77693_HAPTIC_REG_CONFIG_PER2 = 0x07,
119 MAX77693_HAPTIC_REG_CONFIG_PER3 = 0x08,
120 MAX77693_HAPTIC_REG_CONFIG_PER4 = 0x09,
121 MAX77693_HAPTIC_REG_CONFIG_DUTY1 = 0x0A,
122 MAX77693_HAPTIC_REG_CONFIG_DUTY2 = 0x0B,
123 MAX77693_HAPTIC_REG_CONFIG_PWM1 = 0x0C,
124 MAX77693_HAPTIC_REG_CONFIG_PWM2 = 0x0D,
125 MAX77693_HAPTIC_REG_CONFIG_PWM3 = 0x0E,
126 MAX77693_HAPTIC_REG_CONFIG_PWM4 = 0x0F,
127 MAX77693_HAPTIC_REG_REV = 0x10,
128
129 MAX77693_HAPTIC_REG_END,
130};
131
132enum max77693_irq_source {
133 LED_INT = 0,
134 TOPSYS_INT,
135 CHG_INT,
136 MUIC_INT1,
137 MUIC_INT2,
138 MUIC_INT3,
139
140 MAX77693_IRQ_GROUP_NR,
141};
142
143enum max77693_irq {
144 /* PMIC - FLASH */
145 MAX77693_LED_IRQ_FLED2_OPEN,
146 MAX77693_LED_IRQ_FLED2_SHORT,
147 MAX77693_LED_IRQ_FLED1_OPEN,
148 MAX77693_LED_IRQ_FLED1_SHORT,
149 MAX77693_LED_IRQ_MAX_FLASH,
150
151 /* PMIC - TOPSYS */
152 MAX77693_TOPSYS_IRQ_T120C_INT,
153 MAX77693_TOPSYS_IRQ_T140C_INT,
154 MAX77693_TOPSYS_IRQ_LOWSYS_INT,
155
156 /* PMIC - Charger */
157 MAX77693_CHG_IRQ_BYP_I,
158 MAX77693_CHG_IRQ_THM_I,
159 MAX77693_CHG_IRQ_BAT_I,
160 MAX77693_CHG_IRQ_CHG_I,
161 MAX77693_CHG_IRQ_CHGIN_I,
162
163 /* MUIC INT1 */
164 MAX77693_MUIC_IRQ_INT1_ADC,
165 MAX77693_MUIC_IRQ_INT1_ADC_LOW,
166 MAX77693_MUIC_IRQ_INT1_ADC_ERR,
167 MAX77693_MUIC_IRQ_INT1_ADC1K,
168
169 /* MUIC INT2 */
170 MAX77693_MUIC_IRQ_INT2_CHGTYP,
171 MAX77693_MUIC_IRQ_INT2_CHGDETREUN,
172 MAX77693_MUIC_IRQ_INT2_DCDTMR,
173 MAX77693_MUIC_IRQ_INT2_DXOVP,
174 MAX77693_MUIC_IRQ_INT2_VBVOLT,
175 MAX77693_MUIC_IRQ_INT2_VIDRM,
176
177 /* MUIC INT3 */
178 MAX77693_MUIC_IRQ_INT3_EOC,
179 MAX77693_MUIC_IRQ_INT3_CGMBC,
180 MAX77693_MUIC_IRQ_INT3_OVP,
181 MAX77693_MUIC_IRQ_INT3_MBCCHG_ERR,
182 MAX77693_MUIC_IRQ_INT3_CHG_ENABLED,
183 MAX77693_MUIC_IRQ_INT3_BAT_DET,
184
185 MAX77693_IRQ_NR,
186};
187
188struct max77693_dev {
189 struct device *dev;
190 struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */
191 struct i2c_client *muic; /* 0x4A , MUIC */
192 struct i2c_client *haptic; /* 0x90 , Haptic */
193
194 int type;
195
196 struct regmap *regmap;
197 struct regmap *regmap_muic;
198 struct regmap *regmap_haptic;
199
200 struct irq_domain *irq_domain;
201
202 int irq;
203 int irq_gpio;
204 bool wakeup;
205 struct mutex irqlock;
206 int irq_masks_cur[MAX77693_IRQ_GROUP_NR];
207 int irq_masks_cache[MAX77693_IRQ_GROUP_NR];
208};
209
210enum max77693_types {
211 TYPE_MAX77693,
212};
213
214extern int max77693_read_reg(struct regmap *map, u8 reg, u8 *dest);
215extern int max77693_bulk_read(struct regmap *map, u8 reg, int count,
216 u8 *buf);
217extern int max77693_write_reg(struct regmap *map, u8 reg, u8 value);
218extern int max77693_bulk_write(struct regmap *map, u8 reg, int count,
219 u8 *buf);
220extern int max77693_update_reg(struct regmap *map, u8 reg, u8 val, u8 mask);
221
222extern int max77693_irq_init(struct max77693_dev *max77686);
223extern void max77693_irq_exit(struct max77693_dev *max77686);
224extern int max77693_irq_resume(struct max77693_dev *max77686);
225
226#endif /* __LINUX_MFD_MAX77693_PRIV_H */
diff --git a/include/linux/mfd/max77693.h b/include/linux/mfd/max77693.h
deleted file mode 100644
index fe03b2d35d4..00000000000
--- a/include/linux/mfd/max77693.h
+++ /dev/null
@@ -1,49 +0,0 @@
1/*
2 * max77693.h - Driver for the Maxim 77693
3 *
4 * Copyright (C) 2012 Samsung Electrnoics
5 * SangYoung Son <hello.son@samsung.com>
6 *
7 * This program is not provided / owned by Maxim Integrated Products.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 *
23 * This driver is based on max8997.h
24 *
25 * MAX77693 has PMIC, Charger, Flash LED, Haptic, MUIC devices.
26 * The devices share the same I2C bus and included in
27 * this mfd driver.
28 */
29
30#ifndef __LINUX_MFD_MAX77693_H
31#define __LINUX_MFD_MAX77693_H
32
33struct max77693_reg_data {
34 u8 addr;
35 u8 data;
36};
37
38struct max77693_muic_platform_data {
39 struct max77693_reg_data *init_data;
40 int num_init_data;
41};
42
43struct max77693_platform_data {
44 int wakeup;
45
46 /* muic data */
47 struct max77693_muic_platform_data *muic_data;
48};
49#endif /* __LINUX_MFD_MAX77693_H */
diff --git a/include/linux/mfd/max8907.h b/include/linux/mfd/max8907.h
deleted file mode 100644
index b06f7a6a1e8..00000000000
--- a/include/linux/mfd/max8907.h
+++ /dev/null
@@ -1,252 +0,0 @@
1/*
2 * Functions to access MAX8907 power management chip.
3 *
4 * Copyright (C) 2010 Gyungoh Yoo <jack.yoo@maxim-ic.com>
5 * Copyright (C) 2012, NVIDIA CORPORATION. All rights reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef __LINUX_MFD_MAX8907_H
13#define __LINUX_MFD_MAX8907_H
14
15#include <linux/mutex.h>
16#include <linux/pm.h>
17
18#define MAX8907_GEN_I2C_ADDR (0x78 >> 1)
19#define MAX8907_ADC_I2C_ADDR (0x8e >> 1)
20#define MAX8907_RTC_I2C_ADDR (0xd0 >> 1)
21
22/* MAX8907 register map */
23#define MAX8907_REG_SYSENSEL 0x00
24#define MAX8907_REG_ON_OFF_IRQ1 0x01
25#define MAX8907_REG_ON_OFF_IRQ1_MASK 0x02
26#define MAX8907_REG_ON_OFF_STAT 0x03
27#define MAX8907_REG_SDCTL1 0x04
28#define MAX8907_REG_SDSEQCNT1 0x05
29#define MAX8907_REG_SDV1 0x06
30#define MAX8907_REG_SDCTL2 0x07
31#define MAX8907_REG_SDSEQCNT2 0x08
32#define MAX8907_REG_SDV2 0x09
33#define MAX8907_REG_SDCTL3 0x0A
34#define MAX8907_REG_SDSEQCNT3 0x0B
35#define MAX8907_REG_SDV3 0x0C
36#define MAX8907_REG_ON_OFF_IRQ2 0x0D
37#define MAX8907_REG_ON_OFF_IRQ2_MASK 0x0E
38#define MAX8907_REG_RESET_CNFG 0x0F
39#define MAX8907_REG_LDOCTL16 0x10
40#define MAX8907_REG_LDOSEQCNT16 0x11
41#define MAX8907_REG_LDO16VOUT 0x12
42#define MAX8907_REG_SDBYSEQCNT 0x13
43#define MAX8907_REG_LDOCTL17 0x14
44#define MAX8907_REG_LDOSEQCNT17 0x15
45#define MAX8907_REG_LDO17VOUT 0x16
46#define MAX8907_REG_LDOCTL1 0x18
47#define MAX8907_REG_LDOSEQCNT1 0x19
48#define MAX8907_REG_LDO1VOUT 0x1A
49#define MAX8907_REG_LDOCTL2 0x1C
50#define MAX8907_REG_LDOSEQCNT2 0x1D
51#define MAX8907_REG_LDO2VOUT 0x1E
52#define MAX8907_REG_LDOCTL3 0x20
53#define MAX8907_REG_LDOSEQCNT3 0x21
54#define MAX8907_REG_LDO3VOUT 0x22
55#define MAX8907_REG_LDOCTL4 0x24
56#define MAX8907_REG_LDOSEQCNT4 0x25
57#define MAX8907_REG_LDO4VOUT 0x26
58#define MAX8907_REG_LDOCTL5 0x28
59#define MAX8907_REG_LDOSEQCNT5 0x29
60#define MAX8907_REG_LDO5VOUT 0x2A
61#define MAX8907_REG_LDOCTL6 0x2C
62#define MAX8907_REG_LDOSEQCNT6 0x2D
63#define MAX8907_REG_LDO6VOUT 0x2E
64#define MAX8907_REG_LDOCTL7 0x30
65#define MAX8907_REG_LDOSEQCNT7 0x31
66#define MAX8907_REG_LDO7VOUT 0x32
67#define MAX8907_REG_LDOCTL8 0x34
68#define MAX8907_REG_LDOSEQCNT8 0x35
69#define MAX8907_REG_LDO8VOUT 0x36
70#define MAX8907_REG_LDOCTL9 0x38
71#define MAX8907_REG_LDOSEQCNT9 0x39
72#define MAX8907_REG_LDO9VOUT 0x3A
73#define MAX8907_REG_LDOCTL10 0x3C
74#define MAX8907_REG_LDOSEQCNT10 0x3D
75#define MAX8907_REG_LDO10VOUT 0x3E
76#define MAX8907_REG_LDOCTL11 0x40
77#define MAX8907_REG_LDOSEQCNT11 0x41
78#define MAX8907_REG_LDO11VOUT 0x42
79#define MAX8907_REG_LDOCTL12 0x44
80#define MAX8907_REG_LDOSEQCNT12 0x45
81#define MAX8907_REG_LDO12VOUT 0x46
82#define MAX8907_REG_LDOCTL13 0x48
83#define MAX8907_REG_LDOSEQCNT13 0x49
84#define MAX8907_REG_LDO13VOUT 0x4A
85#define MAX8907_REG_LDOCTL14 0x4C
86#define MAX8907_REG_LDOSEQCNT14 0x4D
87#define MAX8907_REG_LDO14VOUT 0x4E
88#define MAX8907_REG_LDOCTL15 0x50
89#define MAX8907_REG_LDOSEQCNT15 0x51
90#define MAX8907_REG_LDO15VOUT 0x52
91#define MAX8907_REG_OUT5VEN 0x54
92#define MAX8907_REG_OUT5VSEQ 0x55
93#define MAX8907_REG_OUT33VEN 0x58
94#define MAX8907_REG_OUT33VSEQ 0x59
95#define MAX8907_REG_LDOCTL19 0x5C
96#define MAX8907_REG_LDOSEQCNT19 0x5D
97#define MAX8907_REG_LDO19VOUT 0x5E
98#define MAX8907_REG_LBCNFG 0x60
99#define MAX8907_REG_SEQ1CNFG 0x64
100#define MAX8907_REG_SEQ2CNFG 0x65
101#define MAX8907_REG_SEQ3CNFG 0x66
102#define MAX8907_REG_SEQ4CNFG 0x67
103#define MAX8907_REG_SEQ5CNFG 0x68
104#define MAX8907_REG_SEQ6CNFG 0x69
105#define MAX8907_REG_SEQ7CNFG 0x6A
106#define MAX8907_REG_LDOCTL18 0x72
107#define MAX8907_REG_LDOSEQCNT18 0x73
108#define MAX8907_REG_LDO18VOUT 0x74
109#define MAX8907_REG_BBAT_CNFG 0x78
110#define MAX8907_REG_CHG_CNTL1 0x7C
111#define MAX8907_REG_CHG_CNTL2 0x7D
112#define MAX8907_REG_CHG_IRQ1 0x7E
113#define MAX8907_REG_CHG_IRQ2 0x7F
114#define MAX8907_REG_CHG_IRQ1_MASK 0x80
115#define MAX8907_REG_CHG_IRQ2_MASK 0x81
116#define MAX8907_REG_CHG_STAT 0x82
117#define MAX8907_REG_WLED_MODE_CNTL 0x84
118#define MAX8907_REG_ILED_CNTL 0x84
119#define MAX8907_REG_II1RR 0x8E
120#define MAX8907_REG_II2RR 0x8F
121#define MAX8907_REG_LDOCTL20 0x9C
122#define MAX8907_REG_LDOSEQCNT20 0x9D
123#define MAX8907_REG_LDO20VOUT 0x9E
124
125/* RTC register map */
126#define MAX8907_REG_RTC_SEC 0x00
127#define MAX8907_REG_RTC_MIN 0x01
128#define MAX8907_REG_RTC_HOURS 0x02
129#define MAX8907_REG_RTC_WEEKDAY 0x03
130#define MAX8907_REG_RTC_DATE 0x04
131#define MAX8907_REG_RTC_MONTH 0x05
132#define MAX8907_REG_RTC_YEAR1 0x06
133#define MAX8907_REG_RTC_YEAR2 0x07
134#define MAX8907_REG_ALARM0_SEC 0x08
135#define MAX8907_REG_ALARM0_MIN 0x09
136#define MAX8907_REG_ALARM0_HOURS 0x0A
137#define MAX8907_REG_ALARM0_WEEKDAY 0x0B
138#define MAX8907_REG_ALARM0_DATE 0x0C
139#define MAX8907_REG_ALARM0_MONTH 0x0D
140#define MAX8907_REG_ALARM0_YEAR1 0x0E
141#define MAX8907_REG_ALARM0_YEAR2 0x0F
142#define MAX8907_REG_ALARM1_SEC 0x10
143#define MAX8907_REG_ALARM1_MIN 0x11
144#define MAX8907_REG_ALARM1_HOURS 0x12
145#define MAX8907_REG_ALARM1_WEEKDAY 0x13
146#define MAX8907_REG_ALARM1_DATE 0x14
147#define MAX8907_REG_ALARM1_MONTH 0x15
148#define MAX8907_REG_ALARM1_YEAR1 0x16
149#define MAX8907_REG_ALARM1_YEAR2 0x17
150#define MAX8907_REG_ALARM0_CNTL 0x18
151#define MAX8907_REG_ALARM1_CNTL 0x19
152#define MAX8907_REG_RTC_STATUS 0x1A
153#define MAX8907_REG_RTC_CNTL 0x1B
154#define MAX8907_REG_RTC_IRQ 0x1C
155#define MAX8907_REG_RTC_IRQ_MASK 0x1D
156#define MAX8907_REG_MPL_CNTL 0x1E
157
158/* ADC and Touch Screen Controller register map */
159#define MAX8907_CTL 0
160#define MAX8907_SEQCNT 1
161#define MAX8907_VOUT 2
162
163/* mask bit fields */
164#define MAX8907_MASK_LDO_SEQ 0x1C
165#define MAX8907_MASK_LDO_EN 0x01
166#define MAX8907_MASK_VBBATTCV 0x03
167#define MAX8907_MASK_OUT5V_VINEN 0x10
168#define MAX8907_MASK_OUT5V_ENSRC 0x0E
169#define MAX8907_MASK_OUT5V_EN 0x01
170#define MAX8907_MASK_POWER_OFF 0x40
171
172/* Regulator IDs */
173#define MAX8907_MBATT 0
174#define MAX8907_SD1 1
175#define MAX8907_SD2 2
176#define MAX8907_SD3 3
177#define MAX8907_LDO1 4
178#define MAX8907_LDO2 5
179#define MAX8907_LDO3 6
180#define MAX8907_LDO4 7
181#define MAX8907_LDO5 8
182#define MAX8907_LDO6 9
183#define MAX8907_LDO7 10
184#define MAX8907_LDO8 11
185#define MAX8907_LDO9 12
186#define MAX8907_LDO10 13
187#define MAX8907_LDO11 14
188#define MAX8907_LDO12 15
189#define MAX8907_LDO13 16
190#define MAX8907_LDO14 17
191#define MAX8907_LDO15 18
192#define MAX8907_LDO16 19
193#define MAX8907_LDO17 20
194#define MAX8907_LDO18 21
195#define MAX8907_LDO19 22
196#define MAX8907_LDO20 23
197#define MAX8907_OUT5V 24
198#define MAX8907_OUT33V 25
199#define MAX8907_BBAT 26
200#define MAX8907_SDBY 27
201#define MAX8907_VRTC 28
202#define MAX8907_NUM_REGULATORS (MAX8907_VRTC + 1)
203
204/* IRQ definitions */
205enum {
206 MAX8907_IRQ_VCHG_DC_OVP = 0,
207 MAX8907_IRQ_VCHG_DC_F,
208 MAX8907_IRQ_VCHG_DC_R,
209 MAX8907_IRQ_VCHG_THM_OK_R,
210 MAX8907_IRQ_VCHG_THM_OK_F,
211 MAX8907_IRQ_VCHG_MBATTLOW_F,
212 MAX8907_IRQ_VCHG_MBATTLOW_R,
213 MAX8907_IRQ_VCHG_RST,
214 MAX8907_IRQ_VCHG_DONE,
215 MAX8907_IRQ_VCHG_TOPOFF,
216 MAX8907_IRQ_VCHG_TMR_FAULT,
217
218 MAX8907_IRQ_GPM_RSTIN = 0,
219 MAX8907_IRQ_GPM_MPL,
220 MAX8907_IRQ_GPM_SW_3SEC,
221 MAX8907_IRQ_GPM_EXTON_F,
222 MAX8907_IRQ_GPM_EXTON_R,
223 MAX8907_IRQ_GPM_SW_1SEC,
224 MAX8907_IRQ_GPM_SW_F,
225 MAX8907_IRQ_GPM_SW_R,
226 MAX8907_IRQ_GPM_SYSCKEN_F,
227 MAX8907_IRQ_GPM_SYSCKEN_R,
228
229 MAX8907_IRQ_RTC_ALARM1 = 0,
230 MAX8907_IRQ_RTC_ALARM0,
231};
232
233struct max8907_platform_data {
234 struct regulator_init_data *init_data[MAX8907_NUM_REGULATORS];
235 bool pm_off;
236};
237
238struct regmap_irq_chips_data;
239
240struct max8907 {
241 struct device *dev;
242 struct mutex irq_lock;
243 struct i2c_client *i2c_gen;
244 struct i2c_client *i2c_rtc;
245 struct regmap *regmap_gen;
246 struct regmap *regmap_rtc;
247 struct regmap_irq_chip_data *irqc_chg;
248 struct regmap_irq_chip_data *irqc_on_off;
249 struct regmap_irq_chip_data *irqc_rtc;
250};
251
252#endif
diff --git a/include/linux/mfd/max8925.h b/include/linux/mfd/max8925.h
index 74d8e296963..5259dfe8c58 100644
--- a/include/linux/mfd/max8925.h
+++ b/include/linux/mfd/max8925.h
@@ -158,6 +158,8 @@ enum {
158#define TSC_IRQ_MASK (0x03) 158#define TSC_IRQ_MASK (0x03)
159#define RTC_IRQ_MASK (0x0c) 159#define RTC_IRQ_MASK (0x0c)
160 160
161#define MAX8925_MAX_REGULATOR (23)
162
161#define MAX8925_NAME_SIZE (32) 163#define MAX8925_NAME_SIZE (32)
162 164
163/* IRQ definitions */ 165/* IRQ definitions */
@@ -165,6 +167,9 @@ enum {
165 MAX8925_IRQ_VCHG_DC_OVP, 167 MAX8925_IRQ_VCHG_DC_OVP,
166 MAX8925_IRQ_VCHG_DC_F, 168 MAX8925_IRQ_VCHG_DC_F,
167 MAX8925_IRQ_VCHG_DC_R, 169 MAX8925_IRQ_VCHG_DC_R,
170 MAX8925_IRQ_VCHG_USB_OVP,
171 MAX8925_IRQ_VCHG_USB_F,
172 MAX8925_IRQ_VCHG_USB_R,
168 MAX8925_IRQ_VCHG_THM_OK_R, 173 MAX8925_IRQ_VCHG_THM_OK_R,
169 MAX8925_IRQ_VCHG_THM_OK_F, 174 MAX8925_IRQ_VCHG_THM_OK_F,
170 MAX8925_IRQ_VCHG_SYSLOW_F, 175 MAX8925_IRQ_VCHG_SYSLOW_F,
@@ -201,8 +206,6 @@ struct max8925_chip {
201 int irq_base; 206 int irq_base;
202 int core_irq; 207 int core_irq;
203 int tsc_irq; 208 int tsc_irq;
204
205 unsigned int wakeup_flag;
206}; 209};
207 210
208struct max8925_backlight_pdata { 211struct max8925_backlight_pdata {
@@ -220,10 +223,6 @@ struct max8925_power_pdata {
220 unsigned batt_detect:1; 223 unsigned batt_detect:1;
221 unsigned topoff_threshold:2; 224 unsigned topoff_threshold:2;
222 unsigned fast_charge:3; /* charge current */ 225 unsigned fast_charge:3; /* charge current */
223 unsigned no_temp_support:1; /* set if no temperature detect */
224 unsigned no_insert_detect:1; /* set if no ac insert detect */
225 char **supplied_to;
226 int num_supplicants;
227}; 226};
228 227
229/* 228/*
@@ -234,29 +233,7 @@ struct max8925_platform_data {
234 struct max8925_backlight_pdata *backlight; 233 struct max8925_backlight_pdata *backlight;
235 struct max8925_touch_pdata *touch; 234 struct max8925_touch_pdata *touch;
236 struct max8925_power_pdata *power; 235 struct max8925_power_pdata *power;
237 struct regulator_init_data *sd1; 236 struct regulator_init_data *regulator[MAX8925_MAX_REGULATOR];
238 struct regulator_init_data *sd2;
239 struct regulator_init_data *sd3;
240 struct regulator_init_data *ldo1;
241 struct regulator_init_data *ldo2;
242 struct regulator_init_data *ldo3;
243 struct regulator_init_data *ldo4;
244 struct regulator_init_data *ldo5;
245 struct regulator_init_data *ldo6;
246 struct regulator_init_data *ldo7;
247 struct regulator_init_data *ldo8;
248 struct regulator_init_data *ldo9;
249 struct regulator_init_data *ldo10;
250 struct regulator_init_data *ldo11;
251 struct regulator_init_data *ldo12;
252 struct regulator_init_data *ldo13;
253 struct regulator_init_data *ldo14;
254 struct regulator_init_data *ldo15;
255 struct regulator_init_data *ldo16;
256 struct regulator_init_data *ldo17;
257 struct regulator_init_data *ldo18;
258 struct regulator_init_data *ldo19;
259 struct regulator_init_data *ldo20;
260 237
261 int irq_base; 238 int irq_base;
262 int tsc_irq; 239 int tsc_irq;
diff --git a/include/linux/mfd/max8997-private.h b/include/linux/mfd/max8997-private.h
index 6ae21bf47d6..5ff2400ad46 100644
--- a/include/linux/mfd/max8997-private.h
+++ b/include/linux/mfd/max8997-private.h
@@ -23,8 +23,6 @@
23#define __LINUX_MFD_MAX8997_PRIV_H 23#define __LINUX_MFD_MAX8997_PRIV_H
24 24
25#include <linux/i2c.h> 25#include <linux/i2c.h>
26#include <linux/export.h>
27#include <linux/irqdomain.h>
28 26
29#define MAX8997_REG_INVALID (0xff) 27#define MAX8997_REG_INVALID (0xff)
30 28
@@ -316,7 +314,6 @@ enum max8997_irq {
316#define MAX8997_NUM_GPIO 12 314#define MAX8997_NUM_GPIO 12
317struct max8997_dev { 315struct max8997_dev {
318 struct device *dev; 316 struct device *dev;
319 struct max8997_platform_data *pdata;
320 struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */ 317 struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */
321 struct i2c_client *rtc; /* slave addr 0x0c */ 318 struct i2c_client *rtc; /* slave addr 0x0c */
322 struct i2c_client *haptic; /* slave addr 0x90 */ 319 struct i2c_client *haptic; /* slave addr 0x90 */
@@ -328,7 +325,8 @@ struct max8997_dev {
328 325
329 int irq; 326 int irq;
330 int ono; 327 int ono;
331 struct irq_domain *irq_domain; 328 int irq_base;
329 bool wakeup;
332 struct mutex irqlock; 330 struct mutex irqlock;
333 int irq_masks_cur[MAX8997_IRQ_GROUP_NR]; 331 int irq_masks_cur[MAX8997_IRQ_GROUP_NR];
334 int irq_masks_cache[MAX8997_IRQ_GROUP_NR]; 332 int irq_masks_cache[MAX8997_IRQ_GROUP_NR];
diff --git a/include/linux/mfd/max8997.h b/include/linux/mfd/max8997.h
index 1d4a4fe6ac3..0bbd13dbe33 100644
--- a/include/linux/mfd/max8997.h
+++ b/include/linux/mfd/max8997.h
@@ -75,113 +75,11 @@ enum max8998_regulators {
75struct max8997_regulator_data { 75struct max8997_regulator_data {
76 int id; 76 int id;
77 struct regulator_init_data *initdata; 77 struct regulator_init_data *initdata;
78 struct device_node *reg_node;
79};
80
81enum max8997_muic_usb_type {
82 MAX8997_USB_HOST,
83 MAX8997_USB_DEVICE,
84};
85
86enum max8997_muic_charger_type {
87 MAX8997_CHARGER_TYPE_NONE = 0,
88 MAX8997_CHARGER_TYPE_USB,
89 MAX8997_CHARGER_TYPE_DOWNSTREAM_PORT,
90 MAX8997_CHARGER_TYPE_DEDICATED_CHG,
91 MAX8997_CHARGER_TYPE_500MA,
92 MAX8997_CHARGER_TYPE_1A,
93 MAX8997_CHARGER_TYPE_DEAD_BATTERY = 7,
94};
95
96struct max8997_muic_reg_data {
97 u8 addr;
98 u8 data;
99};
100
101/**
102 * struct max8997_muic_platform_data
103 * @init_data: array of max8997_muic_reg_data
104 * used for initializing registers of MAX8997 MUIC device
105 * @num_init_data: array size of init_data
106 */
107struct max8997_muic_platform_data {
108 struct max8997_muic_reg_data *init_data;
109 int num_init_data;
110};
111
112enum max8997_haptic_motor_type {
113 MAX8997_HAPTIC_ERM,
114 MAX8997_HAPTIC_LRA,
115};
116
117enum max8997_haptic_pulse_mode {
118 MAX8997_EXTERNAL_MODE,
119 MAX8997_INTERNAL_MODE,
120};
121
122enum max8997_haptic_pwm_divisor {
123 MAX8997_PWM_DIVISOR_32,
124 MAX8997_PWM_DIVISOR_64,
125 MAX8997_PWM_DIVISOR_128,
126 MAX8997_PWM_DIVISOR_256,
127};
128
129/**
130 * max8997_haptic_platform_data
131 * @pwm_channel_id: channel number of PWM device
132 * valid for MAX8997_EXTERNAL_MODE
133 * @pwm_period: period in nano second for PWM device
134 * valid for MAX8997_EXTERNAL_MODE
135 * @type: motor type
136 * @mode: pulse mode
137 * MAX8997_EXTERNAL_MODE: external PWM device is used to control motor
138 * MAX8997_INTERNAL_MODE: internal pulse generator is used to control motor
139 * @pwm_divisor: divisor for external PWM device
140 * @internal_mode_pattern: internal mode pattern for internal mode
141 * [0 - 3]: valid pattern number
142 * @pattern_cycle: the number of cycles of the waveform
143 * for the internal mode pattern
144 * [0 - 15]: available cycles
145 * @pattern_signal_period: period of the waveform for the internal mode pattern
146 * [0 - 255]: available period
147 */
148struct max8997_haptic_platform_data {
149 unsigned int pwm_channel_id;
150 unsigned int pwm_period;
151
152 enum max8997_haptic_motor_type type;
153 enum max8997_haptic_pulse_mode mode;
154 enum max8997_haptic_pwm_divisor pwm_divisor;
155
156 unsigned int internal_mode_pattern;
157 unsigned int pattern_cycle;
158 unsigned int pattern_signal_period;
159};
160
161enum max8997_led_mode {
162 MAX8997_NONE,
163 MAX8997_FLASH_MODE,
164 MAX8997_MOVIE_MODE,
165 MAX8997_FLASH_PIN_CONTROL_MODE,
166 MAX8997_MOVIE_PIN_CONTROL_MODE,
167};
168
169/**
170 * struct max8997_led_platform_data
171 * The number of LED devices for MAX8997 is two
172 * @mode: LED mode for each LED device
173 * @brightness: initial brightness for each LED device
174 * range:
175 * [0 - 31]: MAX8997_FLASH_MODE and MAX8997_FLASH_PIN_CONTROL_MODE
176 * [0 - 15]: MAX8997_MOVIE_MODE and MAX8997_MOVIE_PIN_CONTROL_MODE
177 */
178struct max8997_led_platform_data {
179 enum max8997_led_mode mode[2];
180 u8 brightness[2];
181}; 78};
182 79
183struct max8997_platform_data { 80struct max8997_platform_data {
184 /* IRQ */ 81 /* IRQ */
82 int irq_base;
185 int ono; 83 int ono;
186 int wakeup; 84 int wakeup;
187 85
@@ -215,15 +113,10 @@ struct max8997_platform_data {
215 /* charge Full Timeout */ 113 /* charge Full Timeout */
216 int timeout; /* 0 (no timeout), 5, 6, 7 hours */ 114 int timeout; /* 0 (no timeout), 5, 6, 7 hours */
217 115
218 /* ---- MUIC ---- */ 116 /* MUIC: Not implemented */
219 struct max8997_muic_platform_data *muic_pdata; 117 /* HAPTIC: Not implemented */
220
221 /* ---- HAPTIC ---- */
222 struct max8997_haptic_platform_data *haptic_pdata;
223
224 /* RTC: Not implemented */ 118 /* RTC: Not implemented */
225 /* ---- LED ---- */ 119 /* Flash: Not implemented */
226 struct max8997_led_platform_data *led_pdata;
227}; 120};
228 121
229#endif /* __LINUX_MFD_MAX8998_H */ 122#endif /* __LINUX_MFD_MAX8998_H */
diff --git a/include/linux/mfd/max8998.h b/include/linux/mfd/max8998.h
index 6823548d0c0..f4f0dfa4698 100644
--- a/include/linux/mfd/max8998.h
+++ b/include/linux/mfd/max8998.h
@@ -67,7 +67,7 @@ struct max8998_regulator_data {
67/** 67/**
68 * struct max8998_board - packages regulator init data 68 * struct max8998_board - packages regulator init data
69 * @regulators: array of defined regulators 69 * @regulators: array of defined regulators
70 * @num_regulators: number of regulators used 70 * @num_regulators: number of regultors used
71 * @irq_base: base IRQ number for max8998, required for IRQs 71 * @irq_base: base IRQ number for max8998, required for IRQs
72 * @ono: power onoff IRQ number for max8998 72 * @ono: power onoff IRQ number for max8998
73 * @buck_voltage_lock: Do NOT change the values of the following six 73 * @buck_voltage_lock: Do NOT change the values of the following six
diff --git a/include/linux/mfd/mc13783.h b/include/linux/mfd/mc13783.h
index a8eeda773a7..7d0f3d6a000 100644
--- a/include/linux/mfd/mc13783.h
+++ b/include/linux/mfd/mc13783.h
@@ -12,6 +12,117 @@
12 12
13#include <linux/mfd/mc13xxx.h> 13#include <linux/mfd/mc13xxx.h>
14 14
15struct mc13783;
16
17struct mc13xxx *mc13783_to_mc13xxx(struct mc13783 *mc13783);
18
19static inline void mc13783_lock(struct mc13783 *mc13783)
20{
21 mc13xxx_lock(mc13783_to_mc13xxx(mc13783));
22}
23
24static inline void mc13783_unlock(struct mc13783 *mc13783)
25{
26 mc13xxx_unlock(mc13783_to_mc13xxx(mc13783));
27}
28
29static inline int mc13783_reg_read(struct mc13783 *mc13783,
30 unsigned int offset, u32 *val)
31{
32 return mc13xxx_reg_read(mc13783_to_mc13xxx(mc13783), offset, val);
33}
34
35static inline int mc13783_reg_write(struct mc13783 *mc13783,
36 unsigned int offset, u32 val)
37{
38 return mc13xxx_reg_write(mc13783_to_mc13xxx(mc13783), offset, val);
39}
40
41static inline int mc13783_reg_rmw(struct mc13783 *mc13783,
42 unsigned int offset, u32 mask, u32 val)
43{
44 return mc13xxx_reg_rmw(mc13783_to_mc13xxx(mc13783), offset, mask, val);
45}
46
47static inline int mc13783_get_flags(struct mc13783 *mc13783)
48{
49 return mc13xxx_get_flags(mc13783_to_mc13xxx(mc13783));
50}
51
52static inline int mc13783_irq_request(struct mc13783 *mc13783, int irq,
53 irq_handler_t handler, const char *name, void *dev)
54{
55 return mc13xxx_irq_request(mc13783_to_mc13xxx(mc13783), irq,
56 handler, name, dev);
57}
58
59static inline int mc13783_irq_request_nounmask(struct mc13783 *mc13783, int irq,
60 irq_handler_t handler, const char *name, void *dev)
61{
62 return mc13xxx_irq_request_nounmask(mc13783_to_mc13xxx(mc13783), irq,
63 handler, name, dev);
64}
65
66static inline int mc13783_irq_free(struct mc13783 *mc13783, int irq, void *dev)
67{
68 return mc13xxx_irq_free(mc13783_to_mc13xxx(mc13783), irq, dev);
69}
70
71static inline int mc13783_irq_mask(struct mc13783 *mc13783, int irq)
72{
73 return mc13xxx_irq_mask(mc13783_to_mc13xxx(mc13783), irq);
74}
75
76static inline int mc13783_irq_unmask(struct mc13783 *mc13783, int irq)
77{
78 return mc13xxx_irq_unmask(mc13783_to_mc13xxx(mc13783), irq);
79}
80static inline int mc13783_irq_status(struct mc13783 *mc13783, int irq,
81 int *enabled, int *pending)
82{
83 return mc13xxx_irq_status(mc13783_to_mc13xxx(mc13783),
84 irq, enabled, pending);
85}
86
87static inline int mc13783_irq_ack(struct mc13783 *mc13783, int irq)
88{
89 return mc13xxx_irq_ack(mc13783_to_mc13xxx(mc13783), irq);
90}
91
92#define MC13783_ADC0 43
93#define MC13783_ADC0_ADREFEN (1 << 10)
94#define MC13783_ADC0_ADREFMODE (1 << 11)
95#define MC13783_ADC0_TSMOD0 (1 << 12)
96#define MC13783_ADC0_TSMOD1 (1 << 13)
97#define MC13783_ADC0_TSMOD2 (1 << 14)
98#define MC13783_ADC0_ADINC1 (1 << 16)
99#define MC13783_ADC0_ADINC2 (1 << 17)
100
101#define MC13783_ADC0_TSMOD_MASK (MC13783_ADC0_TSMOD0 | \
102 MC13783_ADC0_TSMOD1 | \
103 MC13783_ADC0_TSMOD2)
104
105#define mc13783_regulator_init_data mc13xxx_regulator_init_data
106#define mc13783_regulator_platform_data mc13xxx_regulator_platform_data
107#define mc13783_led_platform_data mc13xxx_led_platform_data
108#define mc13783_leds_platform_data mc13xxx_leds_platform_data
109
110#define mc13783_platform_data mc13xxx_platform_data
111#define MC13783_USE_TOUCHSCREEN MC13XXX_USE_TOUCHSCREEN
112#define MC13783_USE_CODEC MC13XXX_USE_CODEC
113#define MC13783_USE_ADC MC13XXX_USE_ADC
114#define MC13783_USE_RTC MC13XXX_USE_RTC
115#define MC13783_USE_REGULATOR MC13XXX_USE_REGULATOR
116#define MC13783_USE_LED MC13XXX_USE_LED
117
118#define MC13783_ADC_MODE_TS 1
119#define MC13783_ADC_MODE_SINGLE_CHAN 2
120#define MC13783_ADC_MODE_MULT_CHAN 3
121
122int mc13783_adc_do_conversion(struct mc13783 *mc13783, unsigned int mode,
123 unsigned int channel, unsigned int *sample);
124
125
15#define MC13783_REG_SW1A 0 126#define MC13783_REG_SW1A 0
16#define MC13783_REG_SW1B 1 127#define MC13783_REG_SW1B 1
17#define MC13783_REG_SW2A 2 128#define MC13783_REG_SW2A 2
diff --git a/include/linux/mfd/mc13xxx.h b/include/linux/mfd/mc13xxx.h
index bf070755982..c064beaaccb 100644
--- a/include/linux/mfd/mc13xxx.h
+++ b/include/linux/mfd/mc13xxx.h
@@ -37,10 +37,6 @@ int mc13xxx_irq_ack(struct mc13xxx *mc13xxx, int irq);
37 37
38int mc13xxx_get_flags(struct mc13xxx *mc13xxx); 38int mc13xxx_get_flags(struct mc13xxx *mc13xxx);
39 39
40int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx,
41 unsigned int mode, unsigned int channel,
42 u8 ato, bool atox, unsigned int *sample);
43
44#define MC13XXX_IRQ_ADCDONE 0 40#define MC13XXX_IRQ_ADCDONE 0
45#define MC13XXX_IRQ_ADCBISDONE 1 41#define MC13XXX_IRQ_ADCBISDONE 1
46#define MC13XXX_IRQ_TS 2 42#define MC13XXX_IRQ_TS 2
@@ -70,7 +66,6 @@ struct regulator_init_data;
70struct mc13xxx_regulator_init_data { 66struct mc13xxx_regulator_init_data {
71 int id; 67 int id;
72 struct regulator_init_data *init_data; 68 struct regulator_init_data *init_data;
73 struct device_node *node;
74}; 69};
75 70
76struct mc13xxx_regulator_platform_data { 71struct mc13xxx_regulator_platform_data {
@@ -142,80 +137,17 @@ struct mc13xxx_leds_platform_data {
142 char tc3_period; 137 char tc3_period;
143}; 138};
144 139
145struct mc13xxx_buttons_platform_data {
146#define MC13783_BUTTON_DBNC_0MS 0
147#define MC13783_BUTTON_DBNC_30MS 1
148#define MC13783_BUTTON_DBNC_150MS 2
149#define MC13783_BUTTON_DBNC_750MS 3
150#define MC13783_BUTTON_ENABLE (1 << 2)
151#define MC13783_BUTTON_POL_INVERT (1 << 3)
152#define MC13783_BUTTON_RESET_EN (1 << 4)
153 int b1on_flags;
154 unsigned short b1on_key;
155 int b2on_flags;
156 unsigned short b2on_key;
157 int b3on_flags;
158 unsigned short b3on_key;
159};
160
161struct mc13xxx_ts_platform_data {
162 /* Delay between Touchscreen polarization and ADC Conversion.
163 * Given in clock ticks of a 32 kHz clock which gives a granularity of
164 * about 30.5ms */
165 u8 ato;
166
167#define MC13783_TS_ATO_FIRST false
168#define MC13783_TS_ATO_EACH true
169 /* Use the ATO delay only for the first conversion or for each one */
170 bool atox;
171};
172
173enum mc13783_ssi_port {
174 MC13783_SSI1_PORT,
175 MC13783_SSI2_PORT,
176};
177
178struct mc13xxx_codec_platform_data {
179 enum mc13783_ssi_port adc_ssi_port;
180 enum mc13783_ssi_port dac_ssi_port;
181};
182
183struct mc13xxx_platform_data { 140struct mc13xxx_platform_data {
184#define MC13XXX_USE_TOUCHSCREEN (1 << 0) 141#define MC13XXX_USE_TOUCHSCREEN (1 << 0)
185#define MC13XXX_USE_CODEC (1 << 1) 142#define MC13XXX_USE_CODEC (1 << 1)
186#define MC13XXX_USE_ADC (1 << 2) 143#define MC13XXX_USE_ADC (1 << 2)
187#define MC13XXX_USE_RTC (1 << 3) 144#define MC13XXX_USE_RTC (1 << 3)
145#define MC13XXX_USE_REGULATOR (1 << 4)
146#define MC13XXX_USE_LED (1 << 5)
188 unsigned int flags; 147 unsigned int flags;
189 148
190 struct mc13xxx_regulator_platform_data regulators; 149 struct mc13xxx_regulator_platform_data regulators;
191 struct mc13xxx_leds_platform_data *leds; 150 struct mc13xxx_leds_platform_data *leds;
192 struct mc13xxx_buttons_platform_data *buttons;
193 struct mc13xxx_ts_platform_data touch;
194 struct mc13xxx_codec_platform_data *codec;
195}; 151};
196 152
197#define MC13XXX_ADC_MODE_TS 1
198#define MC13XXX_ADC_MODE_SINGLE_CHAN 2
199#define MC13XXX_ADC_MODE_MULT_CHAN 3
200
201#define MC13XXX_ADC0 43
202#define MC13XXX_ADC0_LICELLCON (1 << 0)
203#define MC13XXX_ADC0_CHRGICON (1 << 1)
204#define MC13XXX_ADC0_BATICON (1 << 2)
205#define MC13XXX_ADC0_ADREFEN (1 << 10)
206#define MC13XXX_ADC0_TSMOD0 (1 << 12)
207#define MC13XXX_ADC0_TSMOD1 (1 << 13)
208#define MC13XXX_ADC0_TSMOD2 (1 << 14)
209#define MC13XXX_ADC0_ADINC1 (1 << 16)
210#define MC13XXX_ADC0_ADINC2 (1 << 17)
211
212#define MC13XXX_ADC0_TSMOD_MASK (MC13XXX_ADC0_TSMOD0 | \
213 MC13XXX_ADC0_TSMOD1 | \
214 MC13XXX_ADC0_TSMOD2)
215
216#define MC13XXX_ADC0_CONFIG_MASK (MC13XXX_ADC0_TSMOD_MASK | \
217 MC13XXX_ADC0_LICELLCON | \
218 MC13XXX_ADC0_CHRGICON | \
219 MC13XXX_ADC0_BATICON)
220
221#endif /* ifndef __LINUX_MFD_MC13XXX_H */ 153#endif /* ifndef __LINUX_MFD_MC13XXX_H */
diff --git a/include/linux/mfd/mcp.h b/include/linux/mfd/mcp.h
index a9e8bd15767..ee496708e38 100644
--- a/include/linux/mfd/mcp.h
+++ b/include/linux/mfd/mcp.h
@@ -10,6 +10,8 @@
10#ifndef MCP_H 10#ifndef MCP_H
11#define MCP_H 11#define MCP_H
12 12
13#include <mach/dma.h>
14
13struct mcp_ops; 15struct mcp_ops;
14 16
15struct mcp { 17struct mcp {
@@ -19,7 +21,12 @@ struct mcp {
19 int use_count; 21 int use_count;
20 unsigned int sclk_rate; 22 unsigned int sclk_rate;
21 unsigned int rw_timeout; 23 unsigned int rw_timeout;
24 dma_device_t dma_audio_rd;
25 dma_device_t dma_audio_wr;
26 dma_device_t dma_telco_rd;
27 dma_device_t dma_telco_wr;
22 struct device attached_device; 28 struct device attached_device;
29 int gpio_base;
23}; 30};
24 31
25struct mcp_ops { 32struct mcp_ops {
@@ -40,14 +47,15 @@ void mcp_disable(struct mcp *);
40#define mcp_get_sclk_rate(mcp) ((mcp)->sclk_rate) 47#define mcp_get_sclk_rate(mcp) ((mcp)->sclk_rate)
41 48
42struct mcp *mcp_host_alloc(struct device *, size_t); 49struct mcp *mcp_host_alloc(struct device *, size_t);
43int mcp_host_add(struct mcp *, void *); 50int mcp_host_register(struct mcp *);
44void mcp_host_del(struct mcp *); 51void mcp_host_unregister(struct mcp *);
45void mcp_host_free(struct mcp *);
46 52
47struct mcp_driver { 53struct mcp_driver {
48 struct device_driver drv; 54 struct device_driver drv;
49 int (*probe)(struct mcp *); 55 int (*probe)(struct mcp *);
50 void (*remove)(struct mcp *); 56 void (*remove)(struct mcp *);
57 int (*suspend)(struct mcp *, pm_message_t);
58 int (*resume)(struct mcp *);
51}; 59};
52 60
53int mcp_driver_register(struct mcp_driver *); 61int mcp_driver_register(struct mcp_driver *);
@@ -56,9 +64,6 @@ void mcp_driver_unregister(struct mcp_driver *);
56#define mcp_get_drvdata(mcp) dev_get_drvdata(&(mcp)->attached_device) 64#define mcp_get_drvdata(mcp) dev_get_drvdata(&(mcp)->attached_device)
57#define mcp_set_drvdata(mcp,d) dev_set_drvdata(&(mcp)->attached_device, d) 65#define mcp_set_drvdata(mcp,d) dev_set_drvdata(&(mcp)->attached_device, d)
58 66
59static inline void *mcp_priv(struct mcp *mcp) 67#define mcp_priv(mcp) ((void *)((mcp)+1))
60{
61 return mcp + 1;
62}
63 68
64#endif 69#endif
diff --git a/include/linux/mfd/menelaus.h b/include/linux/mfd/menelaus.h
deleted file mode 100644
index f097e89134c..00000000000
--- a/include/linux/mfd/menelaus.h
+++ /dev/null
@@ -1,47 +0,0 @@
1/*
2 * Functions to access Menelaus power management chip
3 */
4
5#ifndef __ASM_ARCH_MENELAUS_H
6#define __ASM_ARCH_MENELAUS_H
7
8struct device;
9
10struct menelaus_platform_data {
11 int (* late_init)(struct device *dev);
12};
13
14extern int menelaus_register_mmc_callback(void (*callback)(void *data, u8 card_mask),
15 void *data);
16extern void menelaus_unregister_mmc_callback(void);
17extern int menelaus_set_mmc_opendrain(int slot, int enable);
18extern int menelaus_set_mmc_slot(int slot, int enable, int power, int cd_on);
19
20extern int menelaus_set_vmem(unsigned int mV);
21extern int menelaus_set_vio(unsigned int mV);
22extern int menelaus_set_vmmc(unsigned int mV);
23extern int menelaus_set_vaux(unsigned int mV);
24extern int menelaus_set_vdcdc(int dcdc, unsigned int mV);
25extern int menelaus_set_slot_sel(int enable);
26extern int menelaus_get_slot_pin_states(void);
27extern int menelaus_set_vcore_sw(unsigned int mV);
28extern int menelaus_set_vcore_hw(unsigned int roof_mV, unsigned int floor_mV);
29
30#define EN_VPLL_SLEEP (1 << 7)
31#define EN_VMMC_SLEEP (1 << 6)
32#define EN_VAUX_SLEEP (1 << 5)
33#define EN_VIO_SLEEP (1 << 4)
34#define EN_VMEM_SLEEP (1 << 3)
35#define EN_DC3_SLEEP (1 << 2)
36#define EN_DC2_SLEEP (1 << 1)
37#define EN_VC_SLEEP (1 << 0)
38
39extern int menelaus_set_regulator_sleep(int enable, u32 val);
40
41#if defined(CONFIG_ARCH_OMAP2) && defined(CONFIG_MENELAUS)
42#define omap_has_menelaus() 1
43#else
44#define omap_has_menelaus() 0
45#endif
46
47#endif
diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h
deleted file mode 100644
index 29f6616e12f..00000000000
--- a/include/linux/mfd/palmas.h
+++ /dev/null
@@ -1,2792 +0,0 @@
1/*
2 * TI Palmas
3 *
4 * Copyright 2011 Texas Instruments Inc.
5 *
6 * Author: Graeme Gregory <gg@slimlogic.co.uk>
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
15#ifndef __LINUX_MFD_PALMAS_H
16#define __LINUX_MFD_PALMAS_H
17
18#include <linux/usb/otg.h>
19#include <linux/leds.h>
20#include <linux/regmap.h>
21#include <linux/regulator/driver.h>
22
23#define PALMAS_NUM_CLIENTS 3
24
25struct palmas_pmic;
26struct palmas_gpadc;
27struct palmas_resource;
28struct palmas_usb;
29
30struct palmas {
31 struct device *dev;
32
33 struct i2c_client *i2c_clients[PALMAS_NUM_CLIENTS];
34 struct regmap *regmap[PALMAS_NUM_CLIENTS];
35
36 /* Stored chip id */
37 int id;
38
39 /* IRQ Data */
40 int irq;
41 u32 irq_mask;
42 struct mutex irq_lock;
43 struct regmap_irq_chip_data *irq_data;
44
45 /* Child Devices */
46 struct palmas_pmic *pmic;
47 struct palmas_gpadc *gpadc;
48 struct palmas_resource *resource;
49 struct palmas_usb *usb;
50
51 /* GPIO MUXing */
52 u8 gpio_muxed;
53 u8 led_muxed;
54 u8 pwm_muxed;
55};
56
57struct palmas_gpadc_platform_data {
58 /* Channel 3 current source is only enabled during conversion */
59 int ch3_current;
60
61 /* Channel 0 current source can be used for battery detection.
62 * If used for battery detection this will cause a permanent current
63 * consumption depending on current level set here.
64 */
65 int ch0_current;
66
67 /* default BAT_REMOVAL_DAT setting on device probe */
68 int bat_removal;
69
70 /* Sets the START_POLARITY bit in the RT_CTRL register */
71 int start_polarity;
72};
73
74struct palmas_reg_init {
75 /* warm_rest controls the voltage levels after a warm reset
76 *
77 * 0: reload default values from OTP on warm reset
78 * 1: maintain voltage from VSEL on warm reset
79 */
80 int warm_reset;
81
82 /* roof_floor controls whether the regulator uses the i2c style
83 * of DVS or uses the method where a GPIO or other control method is
84 * attached to the NSLEEP/ENABLE1/ENABLE2 pins
85 *
86 * For SMPS
87 *
88 * 0: i2c selection of voltage
89 * 1: pin selection of voltage.
90 *
91 * For LDO unused
92 */
93 int roof_floor;
94
95 /* sleep_mode is the mode loaded to MODE_SLEEP bits as defined in
96 * the data sheet.
97 *
98 * For SMPS
99 *
100 * 0: Off
101 * 1: AUTO
102 * 2: ECO
103 * 3: Forced PWM
104 *
105 * For LDO
106 *
107 * 0: Off
108 * 1: On
109 */
110 int mode_sleep;
111
112 /* tstep is the timestep loaded to the TSTEP register
113 *
114 * For SMPS
115 *
116 * 0: Jump (no slope control)
117 * 1: 10mV/us
118 * 2: 5mV/us
119 * 3: 2.5mV/us
120 *
121 * For LDO unused
122 */
123 int tstep;
124
125 /* voltage_sel is the bitfield loaded onto the SMPSX_VOLTAGE
126 * register. Set this is the default voltage set in OTP needs
127 * to be overridden.
128 */
129 u8 vsel;
130
131};
132
133enum palmas_regulators {
134 /* SMPS regulators */
135 PALMAS_REG_SMPS12,
136 PALMAS_REG_SMPS123,
137 PALMAS_REG_SMPS3,
138 PALMAS_REG_SMPS45,
139 PALMAS_REG_SMPS457,
140 PALMAS_REG_SMPS6,
141 PALMAS_REG_SMPS7,
142 PALMAS_REG_SMPS8,
143 PALMAS_REG_SMPS9,
144 PALMAS_REG_SMPS10,
145 /* LDO regulators */
146 PALMAS_REG_LDO1,
147 PALMAS_REG_LDO2,
148 PALMAS_REG_LDO3,
149 PALMAS_REG_LDO4,
150 PALMAS_REG_LDO5,
151 PALMAS_REG_LDO6,
152 PALMAS_REG_LDO7,
153 PALMAS_REG_LDO8,
154 PALMAS_REG_LDO9,
155 PALMAS_REG_LDOLN,
156 PALMAS_REG_LDOUSB,
157 /* Total number of regulators */
158 PALMAS_NUM_REGS,
159};
160
161struct palmas_pmic_platform_data {
162 /* An array of pointers to regulator init data indexed by regulator
163 * ID
164 */
165 struct regulator_init_data *reg_data[PALMAS_NUM_REGS];
166
167 /* An array of pointers to structures containing sleep mode and DVS
168 * configuration for regulators indexed by ID
169 */
170 struct palmas_reg_init *reg_init[PALMAS_NUM_REGS];
171
172 /* use LDO6 for vibrator control */
173 int ldo6_vibrator;
174};
175
176struct palmas_usb_platform_data {
177 /* Set this if platform wishes its own vbus control */
178 int no_control_vbus;
179
180 /* Do we enable the wakeup comparator on probe */
181 int wakeup;
182};
183
184struct palmas_resource_platform_data {
185 int regen1_mode_sleep;
186 int regen2_mode_sleep;
187 int sysen1_mode_sleep;
188 int sysen2_mode_sleep;
189
190 /* bitfield to be loaded to NSLEEP_RES_ASSIGN */
191 u8 nsleep_res;
192 /* bitfield to be loaded to NSLEEP_SMPS_ASSIGN */
193 u8 nsleep_smps;
194 /* bitfield to be loaded to NSLEEP_LDO_ASSIGN1 */
195 u8 nsleep_ldo1;
196 /* bitfield to be loaded to NSLEEP_LDO_ASSIGN2 */
197 u8 nsleep_ldo2;
198
199 /* bitfield to be loaded to ENABLE1_RES_ASSIGN */
200 u8 enable1_res;
201 /* bitfield to be loaded to ENABLE1_SMPS_ASSIGN */
202 u8 enable1_smps;
203 /* bitfield to be loaded to ENABLE1_LDO_ASSIGN1 */
204 u8 enable1_ldo1;
205 /* bitfield to be loaded to ENABLE1_LDO_ASSIGN2 */
206 u8 enable1_ldo2;
207
208 /* bitfield to be loaded to ENABLE2_RES_ASSIGN */
209 u8 enable2_res;
210 /* bitfield to be loaded to ENABLE2_SMPS_ASSIGN */
211 u8 enable2_smps;
212 /* bitfield to be loaded to ENABLE2_LDO_ASSIGN1 */
213 u8 enable2_ldo1;
214 /* bitfield to be loaded to ENABLE2_LDO_ASSIGN2 */
215 u8 enable2_ldo2;
216};
217
218struct palmas_clk_platform_data {
219 int clk32kg_mode_sleep;
220 int clk32kgaudio_mode_sleep;
221};
222
223struct palmas_platform_data {
224 int gpio_base;
225
226 /* bit value to be loaded to the POWER_CTRL register */
227 u8 power_ctrl;
228
229 /*
230 * boolean to select if we want to configure muxing here
231 * then the two value to load into the registers if true
232 */
233 int mux_from_pdata;
234 u8 pad1, pad2;
235
236 struct palmas_pmic_platform_data *pmic_pdata;
237 struct palmas_gpadc_platform_data *gpadc_pdata;
238 struct palmas_usb_platform_data *usb_pdata;
239 struct palmas_resource_platform_data *resource_pdata;
240 struct palmas_clk_platform_data *clk_pdata;
241};
242
243struct palmas_gpadc_calibration {
244 s32 gain;
245 s32 gain_error;
246 s32 offset_error;
247};
248
249struct palmas_gpadc {
250 struct device *dev;
251 struct palmas *palmas;
252
253 int ch3_current;
254 int ch0_current;
255
256 int gpadc_force;
257
258 int bat_removal;
259
260 struct mutex reading_lock;
261 struct completion irq_complete;
262
263 int eoc_sw_irq;
264
265 struct palmas_gpadc_calibration *palmas_cal_tbl;
266
267 int conv0_channel;
268 int conv1_channel;
269 int rt_channel;
270};
271
272struct palmas_gpadc_result {
273 s32 raw_code;
274 s32 corrected_code;
275 s32 result;
276};
277
278#define PALMAS_MAX_CHANNELS 16
279
280/* Define the palmas IRQ numbers */
281enum palmas_irqs {
282 /* INT1 registers */
283 PALMAS_CHARG_DET_N_VBUS_OVV_IRQ,
284 PALMAS_PWRON_IRQ,
285 PALMAS_LONG_PRESS_KEY_IRQ,
286 PALMAS_RPWRON_IRQ,
287 PALMAS_PWRDOWN_IRQ,
288 PALMAS_HOTDIE_IRQ,
289 PALMAS_VSYS_MON_IRQ,
290 PALMAS_VBAT_MON_IRQ,
291 /* INT2 registers */
292 PALMAS_RTC_ALARM_IRQ,
293 PALMAS_RTC_TIMER_IRQ,
294 PALMAS_WDT_IRQ,
295 PALMAS_BATREMOVAL_IRQ,
296 PALMAS_RESET_IN_IRQ,
297 PALMAS_FBI_BB_IRQ,
298 PALMAS_SHORT_IRQ,
299 PALMAS_VAC_ACOK_IRQ,
300 /* INT3 registers */
301 PALMAS_GPADC_AUTO_0_IRQ,
302 PALMAS_GPADC_AUTO_1_IRQ,
303 PALMAS_GPADC_EOC_SW_IRQ,
304 PALMAS_GPADC_EOC_RT_IRQ,
305 PALMAS_ID_OTG_IRQ,
306 PALMAS_ID_IRQ,
307 PALMAS_VBUS_OTG_IRQ,
308 PALMAS_VBUS_IRQ,
309 /* INT4 registers */
310 PALMAS_GPIO_0_IRQ,
311 PALMAS_GPIO_1_IRQ,
312 PALMAS_GPIO_2_IRQ,
313 PALMAS_GPIO_3_IRQ,
314 PALMAS_GPIO_4_IRQ,
315 PALMAS_GPIO_5_IRQ,
316 PALMAS_GPIO_6_IRQ,
317 PALMAS_GPIO_7_IRQ,
318 /* Total Number IRQs */
319 PALMAS_NUM_IRQ,
320};
321
322struct palmas_pmic {
323 struct palmas *palmas;
324 struct device *dev;
325 struct regulator_desc desc[PALMAS_NUM_REGS];
326 struct regulator_dev *rdev[PALMAS_NUM_REGS];
327 struct mutex mutex;
328
329 int smps123;
330 int smps457;
331
332 int range[PALMAS_REG_SMPS10];
333};
334
335struct palmas_resource {
336 struct palmas *palmas;
337 struct device *dev;
338};
339
340struct palmas_usb {
341 struct palmas *palmas;
342 struct device *dev;
343
344 /* for vbus reporting with irqs disabled */
345 spinlock_t lock;
346
347 struct regulator *vbus_reg;
348
349 /* used to set vbus, in atomic path */
350 struct work_struct set_vbus_work;
351
352 int irq1;
353 int irq2;
354 int irq3;
355 int irq4;
356
357 int vbus_enable;
358
359 u8 linkstat;
360};
361
362#define comparator_to_palmas(x) container_of((x), struct palmas_usb, comparator)
363
364enum usb_irq_events {
365 /* Wakeup events from INT3 */
366 PALMAS_USB_ID_WAKEPUP,
367 PALMAS_USB_VBUS_WAKEUP,
368
369 /* ID_OTG_EVENTS */
370 PALMAS_USB_ID_GND,
371 N_PALMAS_USB_ID_GND,
372 PALMAS_USB_ID_C,
373 N_PALMAS_USB_ID_C,
374 PALMAS_USB_ID_B,
375 N_PALMAS_USB_ID_B,
376 PALMAS_USB_ID_A,
377 N_PALMAS_USB_ID_A,
378 PALMAS_USB_ID_FLOAT,
379 N_PALMAS_USB_ID_FLOAT,
380
381 /* VBUS_OTG_EVENTS */
382 PALMAS_USB_VB_SESS_END,
383 N_PALMAS_USB_VB_SESS_END,
384 PALMAS_USB_VB_SESS_VLD,
385 N_PALMAS_USB_VB_SESS_VLD,
386 PALMAS_USB_VA_SESS_VLD,
387 N_PALMAS_USB_VA_SESS_VLD,
388 PALMAS_USB_VA_VBUS_VLD,
389 N_PALMAS_USB_VA_VBUS_VLD,
390 PALMAS_USB_VADP_SNS,
391 N_PALMAS_USB_VADP_SNS,
392 PALMAS_USB_VADP_PRB,
393 N_PALMAS_USB_VADP_PRB,
394 PALMAS_USB_VOTG_SESS_VLD,
395 N_PALMAS_USB_VOTG_SESS_VLD,
396};
397
398/* defines so we can store the mux settings */
399#define PALMAS_GPIO_0_MUXED (1 << 0)
400#define PALMAS_GPIO_1_MUXED (1 << 1)
401#define PALMAS_GPIO_2_MUXED (1 << 2)
402#define PALMAS_GPIO_3_MUXED (1 << 3)
403#define PALMAS_GPIO_4_MUXED (1 << 4)
404#define PALMAS_GPIO_5_MUXED (1 << 5)
405#define PALMAS_GPIO_6_MUXED (1 << 6)
406#define PALMAS_GPIO_7_MUXED (1 << 7)
407
408#define PALMAS_LED1_MUXED (1 << 0)
409#define PALMAS_LED2_MUXED (1 << 1)
410
411#define PALMAS_PWM1_MUXED (1 << 0)
412#define PALMAS_PWM2_MUXED (1 << 1)
413
414/* helper macro to get correct slave number */
415#define PALMAS_BASE_TO_SLAVE(x) ((x >> 8) - 1)
416#define PALMAS_BASE_TO_REG(x, y) ((x & 0xff) + y)
417
418/* Base addresses of IP blocks in Palmas */
419#define PALMAS_SMPS_DVS_BASE 0x20
420#define PALMAS_RTC_BASE 0x100
421#define PALMAS_VALIDITY_BASE 0x118
422#define PALMAS_SMPS_BASE 0x120
423#define PALMAS_LDO_BASE 0x150
424#define PALMAS_DVFS_BASE 0x180
425#define PALMAS_PMU_CONTROL_BASE 0x1A0
426#define PALMAS_RESOURCE_BASE 0x1D4
427#define PALMAS_PU_PD_OD_BASE 0x1F4
428#define PALMAS_LED_BASE 0x200
429#define PALMAS_INTERRUPT_BASE 0x210
430#define PALMAS_USB_OTG_BASE 0x250
431#define PALMAS_VIBRATOR_BASE 0x270
432#define PALMAS_GPIO_BASE 0x280
433#define PALMAS_USB_BASE 0x290
434#define PALMAS_GPADC_BASE 0x2C0
435#define PALMAS_TRIM_GPADC_BASE 0x3CD
436
437/* Registers for function RTC */
438#define PALMAS_SECONDS_REG 0x0
439#define PALMAS_MINUTES_REG 0x1
440#define PALMAS_HOURS_REG 0x2
441#define PALMAS_DAYS_REG 0x3
442#define PALMAS_MONTHS_REG 0x4
443#define PALMAS_YEARS_REG 0x5
444#define PALMAS_WEEKS_REG 0x6
445#define PALMAS_ALARM_SECONDS_REG 0x8
446#define PALMAS_ALARM_MINUTES_REG 0x9
447#define PALMAS_ALARM_HOURS_REG 0xA
448#define PALMAS_ALARM_DAYS_REG 0xB
449#define PALMAS_ALARM_MONTHS_REG 0xC
450#define PALMAS_ALARM_YEARS_REG 0xD
451#define PALMAS_RTC_CTRL_REG 0x10
452#define PALMAS_RTC_STATUS_REG 0x11
453#define PALMAS_RTC_INTERRUPTS_REG 0x12
454#define PALMAS_RTC_COMP_LSB_REG 0x13
455#define PALMAS_RTC_COMP_MSB_REG 0x14
456#define PALMAS_RTC_RES_PROG_REG 0x15
457#define PALMAS_RTC_RESET_STATUS_REG 0x16
458
459/* Bit definitions for SECONDS_REG */
460#define PALMAS_SECONDS_REG_SEC1_MASK 0x70
461#define PALMAS_SECONDS_REG_SEC1_SHIFT 4
462#define PALMAS_SECONDS_REG_SEC0_MASK 0x0f
463#define PALMAS_SECONDS_REG_SEC0_SHIFT 0
464
465/* Bit definitions for MINUTES_REG */
466#define PALMAS_MINUTES_REG_MIN1_MASK 0x70
467#define PALMAS_MINUTES_REG_MIN1_SHIFT 4
468#define PALMAS_MINUTES_REG_MIN0_MASK 0x0f
469#define PALMAS_MINUTES_REG_MIN0_SHIFT 0
470
471/* Bit definitions for HOURS_REG */
472#define PALMAS_HOURS_REG_PM_NAM 0x80
473#define PALMAS_HOURS_REG_PM_NAM_SHIFT 7
474#define PALMAS_HOURS_REG_HOUR1_MASK 0x30
475#define PALMAS_HOURS_REG_HOUR1_SHIFT 4
476#define PALMAS_HOURS_REG_HOUR0_MASK 0x0f
477#define PALMAS_HOURS_REG_HOUR0_SHIFT 0
478
479/* Bit definitions for DAYS_REG */
480#define PALMAS_DAYS_REG_DAY1_MASK 0x30
481#define PALMAS_DAYS_REG_DAY1_SHIFT 4
482#define PALMAS_DAYS_REG_DAY0_MASK 0x0f
483#define PALMAS_DAYS_REG_DAY0_SHIFT 0
484
485/* Bit definitions for MONTHS_REG */
486#define PALMAS_MONTHS_REG_MONTH1 0x10
487#define PALMAS_MONTHS_REG_MONTH1_SHIFT 4
488#define PALMAS_MONTHS_REG_MONTH0_MASK 0x0f
489#define PALMAS_MONTHS_REG_MONTH0_SHIFT 0
490
491/* Bit definitions for YEARS_REG */
492#define PALMAS_YEARS_REG_YEAR1_MASK 0xf0
493#define PALMAS_YEARS_REG_YEAR1_SHIFT 4
494#define PALMAS_YEARS_REG_YEAR0_MASK 0x0f
495#define PALMAS_YEARS_REG_YEAR0_SHIFT 0
496
497/* Bit definitions for WEEKS_REG */
498#define PALMAS_WEEKS_REG_WEEK_MASK 0x07
499#define PALMAS_WEEKS_REG_WEEK_SHIFT 0
500
501/* Bit definitions for ALARM_SECONDS_REG */
502#define PALMAS_ALARM_SECONDS_REG_ALARM_SEC1_MASK 0x70
503#define PALMAS_ALARM_SECONDS_REG_ALARM_SEC1_SHIFT 4
504#define PALMAS_ALARM_SECONDS_REG_ALARM_SEC0_MASK 0x0f
505#define PALMAS_ALARM_SECONDS_REG_ALARM_SEC0_SHIFT 0
506
507/* Bit definitions for ALARM_MINUTES_REG */
508#define PALMAS_ALARM_MINUTES_REG_ALARM_MIN1_MASK 0x70
509#define PALMAS_ALARM_MINUTES_REG_ALARM_MIN1_SHIFT 4
510#define PALMAS_ALARM_MINUTES_REG_ALARM_MIN0_MASK 0x0f
511#define PALMAS_ALARM_MINUTES_REG_ALARM_MIN0_SHIFT 0
512
513/* Bit definitions for ALARM_HOURS_REG */
514#define PALMAS_ALARM_HOURS_REG_ALARM_PM_NAM 0x80
515#define PALMAS_ALARM_HOURS_REG_ALARM_PM_NAM_SHIFT 7
516#define PALMAS_ALARM_HOURS_REG_ALARM_HOUR1_MASK 0x30
517#define PALMAS_ALARM_HOURS_REG_ALARM_HOUR1_SHIFT 4
518#define PALMAS_ALARM_HOURS_REG_ALARM_HOUR0_MASK 0x0f
519#define PALMAS_ALARM_HOURS_REG_ALARM_HOUR0_SHIFT 0
520
521/* Bit definitions for ALARM_DAYS_REG */
522#define PALMAS_ALARM_DAYS_REG_ALARM_DAY1_MASK 0x30
523#define PALMAS_ALARM_DAYS_REG_ALARM_DAY1_SHIFT 4
524#define PALMAS_ALARM_DAYS_REG_ALARM_DAY0_MASK 0x0f
525#define PALMAS_ALARM_DAYS_REG_ALARM_DAY0_SHIFT 0
526
527/* Bit definitions for ALARM_MONTHS_REG */
528#define PALMAS_ALARM_MONTHS_REG_ALARM_MONTH1 0x10
529#define PALMAS_ALARM_MONTHS_REG_ALARM_MONTH1_SHIFT 4
530#define PALMAS_ALARM_MONTHS_REG_ALARM_MONTH0_MASK 0x0f
531#define PALMAS_ALARM_MONTHS_REG_ALARM_MONTH0_SHIFT 0
532
533/* Bit definitions for ALARM_YEARS_REG */
534#define PALMAS_ALARM_YEARS_REG_ALARM_YEAR1_MASK 0xf0
535#define PALMAS_ALARM_YEARS_REG_ALARM_YEAR1_SHIFT 4
536#define PALMAS_ALARM_YEARS_REG_ALARM_YEAR0_MASK 0x0f
537#define PALMAS_ALARM_YEARS_REG_ALARM_YEAR0_SHIFT 0
538
539/* Bit definitions for RTC_CTRL_REG */
540#define PALMAS_RTC_CTRL_REG_RTC_V_OPT 0x80
541#define PALMAS_RTC_CTRL_REG_RTC_V_OPT_SHIFT 7
542#define PALMAS_RTC_CTRL_REG_GET_TIME 0x40
543#define PALMAS_RTC_CTRL_REG_GET_TIME_SHIFT 6
544#define PALMAS_RTC_CTRL_REG_SET_32_COUNTER 0x20
545#define PALMAS_RTC_CTRL_REG_SET_32_COUNTER_SHIFT 5
546#define PALMAS_RTC_CTRL_REG_TEST_MODE 0x10
547#define PALMAS_RTC_CTRL_REG_TEST_MODE_SHIFT 4
548#define PALMAS_RTC_CTRL_REG_MODE_12_24 0x08
549#define PALMAS_RTC_CTRL_REG_MODE_12_24_SHIFT 3
550#define PALMAS_RTC_CTRL_REG_AUTO_COMP 0x04
551#define PALMAS_RTC_CTRL_REG_AUTO_COMP_SHIFT 2
552#define PALMAS_RTC_CTRL_REG_ROUND_30S 0x02
553#define PALMAS_RTC_CTRL_REG_ROUND_30S_SHIFT 1
554#define PALMAS_RTC_CTRL_REG_STOP_RTC 0x01
555#define PALMAS_RTC_CTRL_REG_STOP_RTC_SHIFT 0
556
557/* Bit definitions for RTC_STATUS_REG */
558#define PALMAS_RTC_STATUS_REG_POWER_UP 0x80
559#define PALMAS_RTC_STATUS_REG_POWER_UP_SHIFT 7
560#define PALMAS_RTC_STATUS_REG_ALARM 0x40
561#define PALMAS_RTC_STATUS_REG_ALARM_SHIFT 6
562#define PALMAS_RTC_STATUS_REG_EVENT_1D 0x20
563#define PALMAS_RTC_STATUS_REG_EVENT_1D_SHIFT 5
564#define PALMAS_RTC_STATUS_REG_EVENT_1H 0x10
565#define PALMAS_RTC_STATUS_REG_EVENT_1H_SHIFT 4
566#define PALMAS_RTC_STATUS_REG_EVENT_1M 0x08
567#define PALMAS_RTC_STATUS_REG_EVENT_1M_SHIFT 3
568#define PALMAS_RTC_STATUS_REG_EVENT_1S 0x04
569#define PALMAS_RTC_STATUS_REG_EVENT_1S_SHIFT 2
570#define PALMAS_RTC_STATUS_REG_RUN 0x02
571#define PALMAS_RTC_STATUS_REG_RUN_SHIFT 1
572
573/* Bit definitions for RTC_INTERRUPTS_REG */
574#define PALMAS_RTC_INTERRUPTS_REG_IT_SLEEP_MASK_EN 0x10
575#define PALMAS_RTC_INTERRUPTS_REG_IT_SLEEP_MASK_EN_SHIFT 4
576#define PALMAS_RTC_INTERRUPTS_REG_IT_ALARM 0x08
577#define PALMAS_RTC_INTERRUPTS_REG_IT_ALARM_SHIFT 3
578#define PALMAS_RTC_INTERRUPTS_REG_IT_TIMER 0x04
579#define PALMAS_RTC_INTERRUPTS_REG_IT_TIMER_SHIFT 2
580#define PALMAS_RTC_INTERRUPTS_REG_EVERY_MASK 0x03
581#define PALMAS_RTC_INTERRUPTS_REG_EVERY_SHIFT 0
582
583/* Bit definitions for RTC_COMP_LSB_REG */
584#define PALMAS_RTC_COMP_LSB_REG_RTC_COMP_LSB_MASK 0xff
585#define PALMAS_RTC_COMP_LSB_REG_RTC_COMP_LSB_SHIFT 0
586
587/* Bit definitions for RTC_COMP_MSB_REG */
588#define PALMAS_RTC_COMP_MSB_REG_RTC_COMP_MSB_MASK 0xff
589#define PALMAS_RTC_COMP_MSB_REG_RTC_COMP_MSB_SHIFT 0
590
591/* Bit definitions for RTC_RES_PROG_REG */
592#define PALMAS_RTC_RES_PROG_REG_SW_RES_PROG_MASK 0x3f
593#define PALMAS_RTC_RES_PROG_REG_SW_RES_PROG_SHIFT 0
594
595/* Bit definitions for RTC_RESET_STATUS_REG */
596#define PALMAS_RTC_RESET_STATUS_REG_RESET_STATUS 0x01
597#define PALMAS_RTC_RESET_STATUS_REG_RESET_STATUS_SHIFT 0
598
599/* Registers for function BACKUP */
600#define PALMAS_BACKUP0 0x0
601#define PALMAS_BACKUP1 0x1
602#define PALMAS_BACKUP2 0x2
603#define PALMAS_BACKUP3 0x3
604#define PALMAS_BACKUP4 0x4
605#define PALMAS_BACKUP5 0x5
606#define PALMAS_BACKUP6 0x6
607#define PALMAS_BACKUP7 0x7
608
609/* Bit definitions for BACKUP0 */
610#define PALMAS_BACKUP0_BACKUP_MASK 0xff
611#define PALMAS_BACKUP0_BACKUP_SHIFT 0
612
613/* Bit definitions for BACKUP1 */
614#define PALMAS_BACKUP1_BACKUP_MASK 0xff
615#define PALMAS_BACKUP1_BACKUP_SHIFT 0
616
617/* Bit definitions for BACKUP2 */
618#define PALMAS_BACKUP2_BACKUP_MASK 0xff
619#define PALMAS_BACKUP2_BACKUP_SHIFT 0
620
621/* Bit definitions for BACKUP3 */
622#define PALMAS_BACKUP3_BACKUP_MASK 0xff
623#define PALMAS_BACKUP3_BACKUP_SHIFT 0
624
625/* Bit definitions for BACKUP4 */
626#define PALMAS_BACKUP4_BACKUP_MASK 0xff
627#define PALMAS_BACKUP4_BACKUP_SHIFT 0
628
629/* Bit definitions for BACKUP5 */
630#define PALMAS_BACKUP5_BACKUP_MASK 0xff
631#define PALMAS_BACKUP5_BACKUP_SHIFT 0
632
633/* Bit definitions for BACKUP6 */
634#define PALMAS_BACKUP6_BACKUP_MASK 0xff
635#define PALMAS_BACKUP6_BACKUP_SHIFT 0
636
637/* Bit definitions for BACKUP7 */
638#define PALMAS_BACKUP7_BACKUP_MASK 0xff
639#define PALMAS_BACKUP7_BACKUP_SHIFT 0
640
641/* Registers for function SMPS */
642#define PALMAS_SMPS12_CTRL 0x0
643#define PALMAS_SMPS12_TSTEP 0x1
644#define PALMAS_SMPS12_FORCE 0x2
645#define PALMAS_SMPS12_VOLTAGE 0x3
646#define PALMAS_SMPS3_CTRL 0x4
647#define PALMAS_SMPS3_VOLTAGE 0x7
648#define PALMAS_SMPS45_CTRL 0x8
649#define PALMAS_SMPS45_TSTEP 0x9
650#define PALMAS_SMPS45_FORCE 0xA
651#define PALMAS_SMPS45_VOLTAGE 0xB
652#define PALMAS_SMPS6_CTRL 0xC
653#define PALMAS_SMPS6_TSTEP 0xD
654#define PALMAS_SMPS6_FORCE 0xE
655#define PALMAS_SMPS6_VOLTAGE 0xF
656#define PALMAS_SMPS7_CTRL 0x10
657#define PALMAS_SMPS7_VOLTAGE 0x13
658#define PALMAS_SMPS8_CTRL 0x14
659#define PALMAS_SMPS8_TSTEP 0x15
660#define PALMAS_SMPS8_FORCE 0x16
661#define PALMAS_SMPS8_VOLTAGE 0x17
662#define PALMAS_SMPS9_CTRL 0x18
663#define PALMAS_SMPS9_VOLTAGE 0x1B
664#define PALMAS_SMPS10_CTRL 0x1C
665#define PALMAS_SMPS10_STATUS 0x1F
666#define PALMAS_SMPS_CTRL 0x24
667#define PALMAS_SMPS_PD_CTRL 0x25
668#define PALMAS_SMPS_DITHER_EN 0x26
669#define PALMAS_SMPS_THERMAL_EN 0x27
670#define PALMAS_SMPS_THERMAL_STATUS 0x28
671#define PALMAS_SMPS_SHORT_STATUS 0x29
672#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN 0x2A
673#define PALMAS_SMPS_POWERGOOD_MASK1 0x2B
674#define PALMAS_SMPS_POWERGOOD_MASK2 0x2C
675
676/* Bit definitions for SMPS12_CTRL */
677#define PALMAS_SMPS12_CTRL_WR_S 0x80
678#define PALMAS_SMPS12_CTRL_WR_S_SHIFT 7
679#define PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN 0x40
680#define PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN_SHIFT 6
681#define PALMAS_SMPS12_CTRL_STATUS_MASK 0x30
682#define PALMAS_SMPS12_CTRL_STATUS_SHIFT 4
683#define PALMAS_SMPS12_CTRL_MODE_SLEEP_MASK 0x0c
684#define PALMAS_SMPS12_CTRL_MODE_SLEEP_SHIFT 2
685#define PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK 0x03
686#define PALMAS_SMPS12_CTRL_MODE_ACTIVE_SHIFT 0
687
688/* Bit definitions for SMPS12_TSTEP */
689#define PALMAS_SMPS12_TSTEP_TSTEP_MASK 0x03
690#define PALMAS_SMPS12_TSTEP_TSTEP_SHIFT 0
691
692/* Bit definitions for SMPS12_FORCE */
693#define PALMAS_SMPS12_FORCE_CMD 0x80
694#define PALMAS_SMPS12_FORCE_CMD_SHIFT 7
695#define PALMAS_SMPS12_FORCE_VSEL_MASK 0x7f
696#define PALMAS_SMPS12_FORCE_VSEL_SHIFT 0
697
698/* Bit definitions for SMPS12_VOLTAGE */
699#define PALMAS_SMPS12_VOLTAGE_RANGE 0x80
700#define PALMAS_SMPS12_VOLTAGE_RANGE_SHIFT 7
701#define PALMAS_SMPS12_VOLTAGE_VSEL_MASK 0x7f
702#define PALMAS_SMPS12_VOLTAGE_VSEL_SHIFT 0
703
704/* Bit definitions for SMPS3_CTRL */
705#define PALMAS_SMPS3_CTRL_WR_S 0x80
706#define PALMAS_SMPS3_CTRL_WR_S_SHIFT 7
707#define PALMAS_SMPS3_CTRL_STATUS_MASK 0x30
708#define PALMAS_SMPS3_CTRL_STATUS_SHIFT 4
709#define PALMAS_SMPS3_CTRL_MODE_SLEEP_MASK 0x0c
710#define PALMAS_SMPS3_CTRL_MODE_SLEEP_SHIFT 2
711#define PALMAS_SMPS3_CTRL_MODE_ACTIVE_MASK 0x03
712#define PALMAS_SMPS3_CTRL_MODE_ACTIVE_SHIFT 0
713
714/* Bit definitions for SMPS3_VOLTAGE */
715#define PALMAS_SMPS3_VOLTAGE_RANGE 0x80
716#define PALMAS_SMPS3_VOLTAGE_RANGE_SHIFT 7
717#define PALMAS_SMPS3_VOLTAGE_VSEL_MASK 0x7f
718#define PALMAS_SMPS3_VOLTAGE_VSEL_SHIFT 0
719
720/* Bit definitions for SMPS45_CTRL */
721#define PALMAS_SMPS45_CTRL_WR_S 0x80
722#define PALMAS_SMPS45_CTRL_WR_S_SHIFT 7
723#define PALMAS_SMPS45_CTRL_ROOF_FLOOR_EN 0x40
724#define PALMAS_SMPS45_CTRL_ROOF_FLOOR_EN_SHIFT 6
725#define PALMAS_SMPS45_CTRL_STATUS_MASK 0x30
726#define PALMAS_SMPS45_CTRL_STATUS_SHIFT 4
727#define PALMAS_SMPS45_CTRL_MODE_SLEEP_MASK 0x0c
728#define PALMAS_SMPS45_CTRL_MODE_SLEEP_SHIFT 2
729#define PALMAS_SMPS45_CTRL_MODE_ACTIVE_MASK 0x03
730#define PALMAS_SMPS45_CTRL_MODE_ACTIVE_SHIFT 0
731
732/* Bit definitions for SMPS45_TSTEP */
733#define PALMAS_SMPS45_TSTEP_TSTEP_MASK 0x03
734#define PALMAS_SMPS45_TSTEP_TSTEP_SHIFT 0
735
736/* Bit definitions for SMPS45_FORCE */
737#define PALMAS_SMPS45_FORCE_CMD 0x80
738#define PALMAS_SMPS45_FORCE_CMD_SHIFT 7
739#define PALMAS_SMPS45_FORCE_VSEL_MASK 0x7f
740#define PALMAS_SMPS45_FORCE_VSEL_SHIFT 0
741
742/* Bit definitions for SMPS45_VOLTAGE */
743#define PALMAS_SMPS45_VOLTAGE_RANGE 0x80
744#define PALMAS_SMPS45_VOLTAGE_RANGE_SHIFT 7
745#define PALMAS_SMPS45_VOLTAGE_VSEL_MASK 0x7f
746#define PALMAS_SMPS45_VOLTAGE_VSEL_SHIFT 0
747
748/* Bit definitions for SMPS6_CTRL */
749#define PALMAS_SMPS6_CTRL_WR_S 0x80
750#define PALMAS_SMPS6_CTRL_WR_S_SHIFT 7
751#define PALMAS_SMPS6_CTRL_ROOF_FLOOR_EN 0x40
752#define PALMAS_SMPS6_CTRL_ROOF_FLOOR_EN_SHIFT 6
753#define PALMAS_SMPS6_CTRL_STATUS_MASK 0x30
754#define PALMAS_SMPS6_CTRL_STATUS_SHIFT 4
755#define PALMAS_SMPS6_CTRL_MODE_SLEEP_MASK 0x0c
756#define PALMAS_SMPS6_CTRL_MODE_SLEEP_SHIFT 2
757#define PALMAS_SMPS6_CTRL_MODE_ACTIVE_MASK 0x03
758#define PALMAS_SMPS6_CTRL_MODE_ACTIVE_SHIFT 0
759
760/* Bit definitions for SMPS6_TSTEP */
761#define PALMAS_SMPS6_TSTEP_TSTEP_MASK 0x03
762#define PALMAS_SMPS6_TSTEP_TSTEP_SHIFT 0
763
764/* Bit definitions for SMPS6_FORCE */
765#define PALMAS_SMPS6_FORCE_CMD 0x80
766#define PALMAS_SMPS6_FORCE_CMD_SHIFT 7
767#define PALMAS_SMPS6_FORCE_VSEL_MASK 0x7f
768#define PALMAS_SMPS6_FORCE_VSEL_SHIFT 0
769
770/* Bit definitions for SMPS6_VOLTAGE */
771#define PALMAS_SMPS6_VOLTAGE_RANGE 0x80
772#define PALMAS_SMPS6_VOLTAGE_RANGE_SHIFT 7
773#define PALMAS_SMPS6_VOLTAGE_VSEL_MASK 0x7f
774#define PALMAS_SMPS6_VOLTAGE_VSEL_SHIFT 0
775
776/* Bit definitions for SMPS7_CTRL */
777#define PALMAS_SMPS7_CTRL_WR_S 0x80
778#define PALMAS_SMPS7_CTRL_WR_S_SHIFT 7
779#define PALMAS_SMPS7_CTRL_STATUS_MASK 0x30
780#define PALMAS_SMPS7_CTRL_STATUS_SHIFT 4
781#define PALMAS_SMPS7_CTRL_MODE_SLEEP_MASK 0x0c
782#define PALMAS_SMPS7_CTRL_MODE_SLEEP_SHIFT 2
783#define PALMAS_SMPS7_CTRL_MODE_ACTIVE_MASK 0x03
784#define PALMAS_SMPS7_CTRL_MODE_ACTIVE_SHIFT 0
785
786/* Bit definitions for SMPS7_VOLTAGE */
787#define PALMAS_SMPS7_VOLTAGE_RANGE 0x80
788#define PALMAS_SMPS7_VOLTAGE_RANGE_SHIFT 7
789#define PALMAS_SMPS7_VOLTAGE_VSEL_MASK 0x7f
790#define PALMAS_SMPS7_VOLTAGE_VSEL_SHIFT 0
791
792/* Bit definitions for SMPS8_CTRL */
793#define PALMAS_SMPS8_CTRL_WR_S 0x80
794#define PALMAS_SMPS8_CTRL_WR_S_SHIFT 7
795#define PALMAS_SMPS8_CTRL_ROOF_FLOOR_EN 0x40
796#define PALMAS_SMPS8_CTRL_ROOF_FLOOR_EN_SHIFT 6
797#define PALMAS_SMPS8_CTRL_STATUS_MASK 0x30
798#define PALMAS_SMPS8_CTRL_STATUS_SHIFT 4
799#define PALMAS_SMPS8_CTRL_MODE_SLEEP_MASK 0x0c
800#define PALMAS_SMPS8_CTRL_MODE_SLEEP_SHIFT 2
801#define PALMAS_SMPS8_CTRL_MODE_ACTIVE_MASK 0x03
802#define PALMAS_SMPS8_CTRL_MODE_ACTIVE_SHIFT 0
803
804/* Bit definitions for SMPS8_TSTEP */
805#define PALMAS_SMPS8_TSTEP_TSTEP_MASK 0x03
806#define PALMAS_SMPS8_TSTEP_TSTEP_SHIFT 0
807
808/* Bit definitions for SMPS8_FORCE */
809#define PALMAS_SMPS8_FORCE_CMD 0x80
810#define PALMAS_SMPS8_FORCE_CMD_SHIFT 7
811#define PALMAS_SMPS8_FORCE_VSEL_MASK 0x7f
812#define PALMAS_SMPS8_FORCE_VSEL_SHIFT 0
813
814/* Bit definitions for SMPS8_VOLTAGE */
815#define PALMAS_SMPS8_VOLTAGE_RANGE 0x80
816#define PALMAS_SMPS8_VOLTAGE_RANGE_SHIFT 7
817#define PALMAS_SMPS8_VOLTAGE_VSEL_MASK 0x7f
818#define PALMAS_SMPS8_VOLTAGE_VSEL_SHIFT 0
819
820/* Bit definitions for SMPS9_CTRL */
821#define PALMAS_SMPS9_CTRL_WR_S 0x80
822#define PALMAS_SMPS9_CTRL_WR_S_SHIFT 7
823#define PALMAS_SMPS9_CTRL_STATUS_MASK 0x30
824#define PALMAS_SMPS9_CTRL_STATUS_SHIFT 4
825#define PALMAS_SMPS9_CTRL_MODE_SLEEP_MASK 0x0c
826#define PALMAS_SMPS9_CTRL_MODE_SLEEP_SHIFT 2
827#define PALMAS_SMPS9_CTRL_MODE_ACTIVE_MASK 0x03
828#define PALMAS_SMPS9_CTRL_MODE_ACTIVE_SHIFT 0
829
830/* Bit definitions for SMPS9_VOLTAGE */
831#define PALMAS_SMPS9_VOLTAGE_RANGE 0x80
832#define PALMAS_SMPS9_VOLTAGE_RANGE_SHIFT 7
833#define PALMAS_SMPS9_VOLTAGE_VSEL_MASK 0x7f
834#define PALMAS_SMPS9_VOLTAGE_VSEL_SHIFT 0
835
836/* Bit definitions for SMPS10_CTRL */
837#define PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK 0xf0
838#define PALMAS_SMPS10_CTRL_MODE_SLEEP_SHIFT 4
839#define PALMAS_SMPS10_CTRL_MODE_ACTIVE_MASK 0x0f
840#define PALMAS_SMPS10_CTRL_MODE_ACTIVE_SHIFT 0
841
842/* Bit definitions for SMPS10_STATUS */
843#define PALMAS_SMPS10_STATUS_STATUS_MASK 0x0f
844#define PALMAS_SMPS10_STATUS_STATUS_SHIFT 0
845
846/* Bit definitions for SMPS_CTRL */
847#define PALMAS_SMPS_CTRL_SMPS45_SMPS457_EN 0x20
848#define PALMAS_SMPS_CTRL_SMPS45_SMPS457_EN_SHIFT 5
849#define PALMAS_SMPS_CTRL_SMPS12_SMPS123_EN 0x10
850#define PALMAS_SMPS_CTRL_SMPS12_SMPS123_EN_SHIFT 4
851#define PALMAS_SMPS_CTRL_SMPS45_PHASE_CTRL_MASK 0x0c
852#define PALMAS_SMPS_CTRL_SMPS45_PHASE_CTRL_SHIFT 2
853#define PALMAS_SMPS_CTRL_SMPS123_PHASE_CTRL_MASK 0x03
854#define PALMAS_SMPS_CTRL_SMPS123_PHASE_CTRL_SHIFT 0
855
856/* Bit definitions for SMPS_PD_CTRL */
857#define PALMAS_SMPS_PD_CTRL_SMPS9 0x40
858#define PALMAS_SMPS_PD_CTRL_SMPS9_SHIFT 6
859#define PALMAS_SMPS_PD_CTRL_SMPS8 0x20
860#define PALMAS_SMPS_PD_CTRL_SMPS8_SHIFT 5
861#define PALMAS_SMPS_PD_CTRL_SMPS7 0x10
862#define PALMAS_SMPS_PD_CTRL_SMPS7_SHIFT 4
863#define PALMAS_SMPS_PD_CTRL_SMPS6 0x08
864#define PALMAS_SMPS_PD_CTRL_SMPS6_SHIFT 3
865#define PALMAS_SMPS_PD_CTRL_SMPS45 0x04
866#define PALMAS_SMPS_PD_CTRL_SMPS45_SHIFT 2
867#define PALMAS_SMPS_PD_CTRL_SMPS3 0x02
868#define PALMAS_SMPS_PD_CTRL_SMPS3_SHIFT 1
869#define PALMAS_SMPS_PD_CTRL_SMPS12 0x01
870#define PALMAS_SMPS_PD_CTRL_SMPS12_SHIFT 0
871
872/* Bit definitions for SMPS_THERMAL_EN */
873#define PALMAS_SMPS_THERMAL_EN_SMPS9 0x40
874#define PALMAS_SMPS_THERMAL_EN_SMPS9_SHIFT 6
875#define PALMAS_SMPS_THERMAL_EN_SMPS8 0x20
876#define PALMAS_SMPS_THERMAL_EN_SMPS8_SHIFT 5
877#define PALMAS_SMPS_THERMAL_EN_SMPS6 0x08
878#define PALMAS_SMPS_THERMAL_EN_SMPS6_SHIFT 3
879#define PALMAS_SMPS_THERMAL_EN_SMPS457 0x04
880#define PALMAS_SMPS_THERMAL_EN_SMPS457_SHIFT 2
881#define PALMAS_SMPS_THERMAL_EN_SMPS123 0x01
882#define PALMAS_SMPS_THERMAL_EN_SMPS123_SHIFT 0
883
884/* Bit definitions for SMPS_THERMAL_STATUS */
885#define PALMAS_SMPS_THERMAL_STATUS_SMPS9 0x40
886#define PALMAS_SMPS_THERMAL_STATUS_SMPS9_SHIFT 6
887#define PALMAS_SMPS_THERMAL_STATUS_SMPS8 0x20
888#define PALMAS_SMPS_THERMAL_STATUS_SMPS8_SHIFT 5
889#define PALMAS_SMPS_THERMAL_STATUS_SMPS6 0x08
890#define PALMAS_SMPS_THERMAL_STATUS_SMPS6_SHIFT 3
891#define PALMAS_SMPS_THERMAL_STATUS_SMPS457 0x04
892#define PALMAS_SMPS_THERMAL_STATUS_SMPS457_SHIFT 2
893#define PALMAS_SMPS_THERMAL_STATUS_SMPS123 0x01
894#define PALMAS_SMPS_THERMAL_STATUS_SMPS123_SHIFT 0
895
896/* Bit definitions for SMPS_SHORT_STATUS */
897#define PALMAS_SMPS_SHORT_STATUS_SMPS10 0x80
898#define PALMAS_SMPS_SHORT_STATUS_SMPS10_SHIFT 7
899#define PALMAS_SMPS_SHORT_STATUS_SMPS9 0x40
900#define PALMAS_SMPS_SHORT_STATUS_SMPS9_SHIFT 6
901#define PALMAS_SMPS_SHORT_STATUS_SMPS8 0x20
902#define PALMAS_SMPS_SHORT_STATUS_SMPS8_SHIFT 5
903#define PALMAS_SMPS_SHORT_STATUS_SMPS7 0x10
904#define PALMAS_SMPS_SHORT_STATUS_SMPS7_SHIFT 4
905#define PALMAS_SMPS_SHORT_STATUS_SMPS6 0x08
906#define PALMAS_SMPS_SHORT_STATUS_SMPS6_SHIFT 3
907#define PALMAS_SMPS_SHORT_STATUS_SMPS45 0x04
908#define PALMAS_SMPS_SHORT_STATUS_SMPS45_SHIFT 2
909#define PALMAS_SMPS_SHORT_STATUS_SMPS3 0x02
910#define PALMAS_SMPS_SHORT_STATUS_SMPS3_SHIFT 1
911#define PALMAS_SMPS_SHORT_STATUS_SMPS12 0x01
912#define PALMAS_SMPS_SHORT_STATUS_SMPS12_SHIFT 0
913
914/* Bit definitions for SMPS_NEGATIVE_CURRENT_LIMIT_EN */
915#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS9 0x40
916#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS9_SHIFT 6
917#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS8 0x20
918#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS8_SHIFT 5
919#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS7 0x10
920#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS7_SHIFT 4
921#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS6 0x08
922#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS6_SHIFT 3
923#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS45 0x04
924#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS45_SHIFT 2
925#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS3 0x02
926#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS3_SHIFT 1
927#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS12 0x01
928#define PALMAS_SMPS_NEGATIVE_CURRENT_LIMIT_EN_SMPS12_SHIFT 0
929
930/* Bit definitions for SMPS_POWERGOOD_MASK1 */
931#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS10 0x80
932#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS10_SHIFT 7
933#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS9 0x40
934#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS9_SHIFT 6
935#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS8 0x20
936#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS8_SHIFT 5
937#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS7 0x10
938#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS7_SHIFT 4
939#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS6 0x08
940#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS6_SHIFT 3
941#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS45 0x04
942#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS45_SHIFT 2
943#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS3 0x02
944#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS3_SHIFT 1
945#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS12 0x01
946#define PALMAS_SMPS_POWERGOOD_MASK1_SMPS12_SHIFT 0
947
948/* Bit definitions for SMPS_POWERGOOD_MASK2 */
949#define PALMAS_SMPS_POWERGOOD_MASK2_POWERGOOD_TYPE_SELECT 0x80
950#define PALMAS_SMPS_POWERGOOD_MASK2_POWERGOOD_TYPE_SELECT_SHIFT 7
951#define PALMAS_SMPS_POWERGOOD_MASK2_GPIO_7 0x04
952#define PALMAS_SMPS_POWERGOOD_MASK2_GPIO_7_SHIFT 2
953#define PALMAS_SMPS_POWERGOOD_MASK2_VBUS 0x02
954#define PALMAS_SMPS_POWERGOOD_MASK2_VBUS_SHIFT 1
955#define PALMAS_SMPS_POWERGOOD_MASK2_ACOK 0x01
956#define PALMAS_SMPS_POWERGOOD_MASK2_ACOK_SHIFT 0
957
958/* Registers for function LDO */
959#define PALMAS_LDO1_CTRL 0x0
960#define PALMAS_LDO1_VOLTAGE 0x1
961#define PALMAS_LDO2_CTRL 0x2
962#define PALMAS_LDO2_VOLTAGE 0x3
963#define PALMAS_LDO3_CTRL 0x4
964#define PALMAS_LDO3_VOLTAGE 0x5
965#define PALMAS_LDO4_CTRL 0x6
966#define PALMAS_LDO4_VOLTAGE 0x7
967#define PALMAS_LDO5_CTRL 0x8
968#define PALMAS_LDO5_VOLTAGE 0x9
969#define PALMAS_LDO6_CTRL 0xA
970#define PALMAS_LDO6_VOLTAGE 0xB
971#define PALMAS_LDO7_CTRL 0xC
972#define PALMAS_LDO7_VOLTAGE 0xD
973#define PALMAS_LDO8_CTRL 0xE
974#define PALMAS_LDO8_VOLTAGE 0xF
975#define PALMAS_LDO9_CTRL 0x10
976#define PALMAS_LDO9_VOLTAGE 0x11
977#define PALMAS_LDOLN_CTRL 0x12
978#define PALMAS_LDOLN_VOLTAGE 0x13
979#define PALMAS_LDOUSB_CTRL 0x14
980#define PALMAS_LDOUSB_VOLTAGE 0x15
981#define PALMAS_LDO_CTRL 0x1A
982#define PALMAS_LDO_PD_CTRL1 0x1B
983#define PALMAS_LDO_PD_CTRL2 0x1C
984#define PALMAS_LDO_SHORT_STATUS1 0x1D
985#define PALMAS_LDO_SHORT_STATUS2 0x1E
986
987/* Bit definitions for LDO1_CTRL */
988#define PALMAS_LDO1_CTRL_WR_S 0x80
989#define PALMAS_LDO1_CTRL_WR_S_SHIFT 7
990#define PALMAS_LDO1_CTRL_STATUS 0x10
991#define PALMAS_LDO1_CTRL_STATUS_SHIFT 4
992#define PALMAS_LDO1_CTRL_MODE_SLEEP 0x04
993#define PALMAS_LDO1_CTRL_MODE_SLEEP_SHIFT 2
994#define PALMAS_LDO1_CTRL_MODE_ACTIVE 0x01
995#define PALMAS_LDO1_CTRL_MODE_ACTIVE_SHIFT 0
996
997/* Bit definitions for LDO1_VOLTAGE */
998#define PALMAS_LDO1_VOLTAGE_VSEL_MASK 0x3f
999#define PALMAS_LDO1_VOLTAGE_VSEL_SHIFT 0
1000
1001/* Bit definitions for LDO2_CTRL */
1002#define PALMAS_LDO2_CTRL_WR_S 0x80
1003#define PALMAS_LDO2_CTRL_WR_S_SHIFT 7
1004#define PALMAS_LDO2_CTRL_STATUS 0x10
1005#define PALMAS_LDO2_CTRL_STATUS_SHIFT 4
1006#define PALMAS_LDO2_CTRL_MODE_SLEEP 0x04
1007#define PALMAS_LDO2_CTRL_MODE_SLEEP_SHIFT 2
1008#define PALMAS_LDO2_CTRL_MODE_ACTIVE 0x01
1009#define PALMAS_LDO2_CTRL_MODE_ACTIVE_SHIFT 0
1010
1011/* Bit definitions for LDO2_VOLTAGE */
1012#define PALMAS_LDO2_VOLTAGE_VSEL_MASK 0x3f
1013#define PALMAS_LDO2_VOLTAGE_VSEL_SHIFT 0
1014
1015/* Bit definitions for LDO3_CTRL */
1016#define PALMAS_LDO3_CTRL_WR_S 0x80
1017#define PALMAS_LDO3_CTRL_WR_S_SHIFT 7
1018#define PALMAS_LDO3_CTRL_STATUS 0x10
1019#define PALMAS_LDO3_CTRL_STATUS_SHIFT 4
1020#define PALMAS_LDO3_CTRL_MODE_SLEEP 0x04
1021#define PALMAS_LDO3_CTRL_MODE_SLEEP_SHIFT 2
1022#define PALMAS_LDO3_CTRL_MODE_ACTIVE 0x01
1023#define PALMAS_LDO3_CTRL_MODE_ACTIVE_SHIFT 0
1024
1025/* Bit definitions for LDO3_VOLTAGE */
1026#define PALMAS_LDO3_VOLTAGE_VSEL_MASK 0x3f
1027#define PALMAS_LDO3_VOLTAGE_VSEL_SHIFT 0
1028
1029/* Bit definitions for LDO4_CTRL */
1030#define PALMAS_LDO4_CTRL_WR_S 0x80
1031#define PALMAS_LDO4_CTRL_WR_S_SHIFT 7
1032#define PALMAS_LDO4_CTRL_STATUS 0x10
1033#define PALMAS_LDO4_CTRL_STATUS_SHIFT 4
1034#define PALMAS_LDO4_CTRL_MODE_SLEEP 0x04
1035#define PALMAS_LDO4_CTRL_MODE_SLEEP_SHIFT 2
1036#define PALMAS_LDO4_CTRL_MODE_ACTIVE 0x01
1037#define PALMAS_LDO4_CTRL_MODE_ACTIVE_SHIFT 0
1038
1039/* Bit definitions for LDO4_VOLTAGE */
1040#define PALMAS_LDO4_VOLTAGE_VSEL_MASK 0x3f
1041#define PALMAS_LDO4_VOLTAGE_VSEL_SHIFT 0
1042
1043/* Bit definitions for LDO5_CTRL */
1044#define PALMAS_LDO5_CTRL_WR_S 0x80
1045#define PALMAS_LDO5_CTRL_WR_S_SHIFT 7
1046#define PALMAS_LDO5_CTRL_STATUS 0x10
1047#define PALMAS_LDO5_CTRL_STATUS_SHIFT 4
1048#define PALMAS_LDO5_CTRL_MODE_SLEEP 0x04
1049#define PALMAS_LDO5_CTRL_MODE_SLEEP_SHIFT 2
1050#define PALMAS_LDO5_CTRL_MODE_ACTIVE 0x01
1051#define PALMAS_LDO5_CTRL_MODE_ACTIVE_SHIFT 0
1052
1053/* Bit definitions for LDO5_VOLTAGE */
1054#define PALMAS_LDO5_VOLTAGE_VSEL_MASK 0x3f
1055#define PALMAS_LDO5_VOLTAGE_VSEL_SHIFT 0
1056
1057/* Bit definitions for LDO6_CTRL */
1058#define PALMAS_LDO6_CTRL_WR_S 0x80
1059#define PALMAS_LDO6_CTRL_WR_S_SHIFT 7
1060#define PALMAS_LDO6_CTRL_LDO_VIB_EN 0x40
1061#define PALMAS_LDO6_CTRL_LDO_VIB_EN_SHIFT 6
1062#define PALMAS_LDO6_CTRL_STATUS 0x10
1063#define PALMAS_LDO6_CTRL_STATUS_SHIFT 4
1064#define PALMAS_LDO6_CTRL_MODE_SLEEP 0x04
1065#define PALMAS_LDO6_CTRL_MODE_SLEEP_SHIFT 2
1066#define PALMAS_LDO6_CTRL_MODE_ACTIVE 0x01
1067#define PALMAS_LDO6_CTRL_MODE_ACTIVE_SHIFT 0
1068
1069/* Bit definitions for LDO6_VOLTAGE */
1070#define PALMAS_LDO6_VOLTAGE_VSEL_MASK 0x3f
1071#define PALMAS_LDO6_VOLTAGE_VSEL_SHIFT 0
1072
1073/* Bit definitions for LDO7_CTRL */
1074#define PALMAS_LDO7_CTRL_WR_S 0x80
1075#define PALMAS_LDO7_CTRL_WR_S_SHIFT 7
1076#define PALMAS_LDO7_CTRL_STATUS 0x10
1077#define PALMAS_LDO7_CTRL_STATUS_SHIFT 4
1078#define PALMAS_LDO7_CTRL_MODE_SLEEP 0x04
1079#define PALMAS_LDO7_CTRL_MODE_SLEEP_SHIFT 2
1080#define PALMAS_LDO7_CTRL_MODE_ACTIVE 0x01
1081#define PALMAS_LDO7_CTRL_MODE_ACTIVE_SHIFT 0
1082
1083/* Bit definitions for LDO7_VOLTAGE */
1084#define PALMAS_LDO7_VOLTAGE_VSEL_MASK 0x3f
1085#define PALMAS_LDO7_VOLTAGE_VSEL_SHIFT 0
1086
1087/* Bit definitions for LDO8_CTRL */
1088#define PALMAS_LDO8_CTRL_WR_S 0x80
1089#define PALMAS_LDO8_CTRL_WR_S_SHIFT 7
1090#define PALMAS_LDO8_CTRL_LDO_TRACKING_EN 0x40
1091#define PALMAS_LDO8_CTRL_LDO_TRACKING_EN_SHIFT 6
1092#define PALMAS_LDO8_CTRL_STATUS 0x10
1093#define PALMAS_LDO8_CTRL_STATUS_SHIFT 4
1094#define PALMAS_LDO8_CTRL_MODE_SLEEP 0x04
1095#define PALMAS_LDO8_CTRL_MODE_SLEEP_SHIFT 2
1096#define PALMAS_LDO8_CTRL_MODE_ACTIVE 0x01
1097#define PALMAS_LDO8_CTRL_MODE_ACTIVE_SHIFT 0
1098
1099/* Bit definitions for LDO8_VOLTAGE */
1100#define PALMAS_LDO8_VOLTAGE_VSEL_MASK 0x3f
1101#define PALMAS_LDO8_VOLTAGE_VSEL_SHIFT 0
1102
1103/* Bit definitions for LDO9_CTRL */
1104#define PALMAS_LDO9_CTRL_WR_S 0x80
1105#define PALMAS_LDO9_CTRL_WR_S_SHIFT 7
1106#define PALMAS_LDO9_CTRL_LDO_BYPASS_EN 0x40
1107#define PALMAS_LDO9_CTRL_LDO_BYPASS_EN_SHIFT 6
1108#define PALMAS_LDO9_CTRL_STATUS 0x10
1109#define PALMAS_LDO9_CTRL_STATUS_SHIFT 4
1110#define PALMAS_LDO9_CTRL_MODE_SLEEP 0x04
1111#define PALMAS_LDO9_CTRL_MODE_SLEEP_SHIFT 2
1112#define PALMAS_LDO9_CTRL_MODE_ACTIVE 0x01
1113#define PALMAS_LDO9_CTRL_MODE_ACTIVE_SHIFT 0
1114
1115/* Bit definitions for LDO9_VOLTAGE */
1116#define PALMAS_LDO9_VOLTAGE_VSEL_MASK 0x3f
1117#define PALMAS_LDO9_VOLTAGE_VSEL_SHIFT 0
1118
1119/* Bit definitions for LDOLN_CTRL */
1120#define PALMAS_LDOLN_CTRL_WR_S 0x80
1121#define PALMAS_LDOLN_CTRL_WR_S_SHIFT 7
1122#define PALMAS_LDOLN_CTRL_STATUS 0x10
1123#define PALMAS_LDOLN_CTRL_STATUS_SHIFT 4
1124#define PALMAS_LDOLN_CTRL_MODE_SLEEP 0x04
1125#define PALMAS_LDOLN_CTRL_MODE_SLEEP_SHIFT 2
1126#define PALMAS_LDOLN_CTRL_MODE_ACTIVE 0x01
1127#define PALMAS_LDOLN_CTRL_MODE_ACTIVE_SHIFT 0
1128
1129/* Bit definitions for LDOLN_VOLTAGE */
1130#define PALMAS_LDOLN_VOLTAGE_VSEL_MASK 0x3f
1131#define PALMAS_LDOLN_VOLTAGE_VSEL_SHIFT 0
1132
1133/* Bit definitions for LDOUSB_CTRL */
1134#define PALMAS_LDOUSB_CTRL_WR_S 0x80
1135#define PALMAS_LDOUSB_CTRL_WR_S_SHIFT 7
1136#define PALMAS_LDOUSB_CTRL_STATUS 0x10
1137#define PALMAS_LDOUSB_CTRL_STATUS_SHIFT 4
1138#define PALMAS_LDOUSB_CTRL_MODE_SLEEP 0x04
1139#define PALMAS_LDOUSB_CTRL_MODE_SLEEP_SHIFT 2
1140#define PALMAS_LDOUSB_CTRL_MODE_ACTIVE 0x01
1141#define PALMAS_LDOUSB_CTRL_MODE_ACTIVE_SHIFT 0
1142
1143/* Bit definitions for LDOUSB_VOLTAGE */
1144#define PALMAS_LDOUSB_VOLTAGE_VSEL_MASK 0x3f
1145#define PALMAS_LDOUSB_VOLTAGE_VSEL_SHIFT 0
1146
1147/* Bit definitions for LDO_CTRL */
1148#define PALMAS_LDO_CTRL_LDOUSB_ON_VBUS_VSYS 0x01
1149#define PALMAS_LDO_CTRL_LDOUSB_ON_VBUS_VSYS_SHIFT 0
1150
1151/* Bit definitions for LDO_PD_CTRL1 */
1152#define PALMAS_LDO_PD_CTRL1_LDO8 0x80
1153#define PALMAS_LDO_PD_CTRL1_LDO8_SHIFT 7
1154#define PALMAS_LDO_PD_CTRL1_LDO7 0x40
1155#define PALMAS_LDO_PD_CTRL1_LDO7_SHIFT 6
1156#define PALMAS_LDO_PD_CTRL1_LDO6 0x20
1157#define PALMAS_LDO_PD_CTRL1_LDO6_SHIFT 5
1158#define PALMAS_LDO_PD_CTRL1_LDO5 0x10
1159#define PALMAS_LDO_PD_CTRL1_LDO5_SHIFT 4
1160#define PALMAS_LDO_PD_CTRL1_LDO4 0x08
1161#define PALMAS_LDO_PD_CTRL1_LDO4_SHIFT 3
1162#define PALMAS_LDO_PD_CTRL1_LDO3 0x04
1163#define PALMAS_LDO_PD_CTRL1_LDO3_SHIFT 2
1164#define PALMAS_LDO_PD_CTRL1_LDO2 0x02
1165#define PALMAS_LDO_PD_CTRL1_LDO2_SHIFT 1
1166#define PALMAS_LDO_PD_CTRL1_LDO1 0x01
1167#define PALMAS_LDO_PD_CTRL1_LDO1_SHIFT 0
1168
1169/* Bit definitions for LDO_PD_CTRL2 */
1170#define PALMAS_LDO_PD_CTRL2_LDOUSB 0x04
1171#define PALMAS_LDO_PD_CTRL2_LDOUSB_SHIFT 2
1172#define PALMAS_LDO_PD_CTRL2_LDOLN 0x02
1173#define PALMAS_LDO_PD_CTRL2_LDOLN_SHIFT 1
1174#define PALMAS_LDO_PD_CTRL2_LDO9 0x01
1175#define PALMAS_LDO_PD_CTRL2_LDO9_SHIFT 0
1176
1177/* Bit definitions for LDO_SHORT_STATUS1 */
1178#define PALMAS_LDO_SHORT_STATUS1_LDO8 0x80
1179#define PALMAS_LDO_SHORT_STATUS1_LDO8_SHIFT 7
1180#define PALMAS_LDO_SHORT_STATUS1_LDO7 0x40
1181#define PALMAS_LDO_SHORT_STATUS1_LDO7_SHIFT 6
1182#define PALMAS_LDO_SHORT_STATUS1_LDO6 0x20
1183#define PALMAS_LDO_SHORT_STATUS1_LDO6_SHIFT 5
1184#define PALMAS_LDO_SHORT_STATUS1_LDO5 0x10
1185#define PALMAS_LDO_SHORT_STATUS1_LDO5_SHIFT 4
1186#define PALMAS_LDO_SHORT_STATUS1_LDO4 0x08
1187#define PALMAS_LDO_SHORT_STATUS1_LDO4_SHIFT 3
1188#define PALMAS_LDO_SHORT_STATUS1_LDO3 0x04
1189#define PALMAS_LDO_SHORT_STATUS1_LDO3_SHIFT 2
1190#define PALMAS_LDO_SHORT_STATUS1_LDO2 0x02
1191#define PALMAS_LDO_SHORT_STATUS1_LDO2_SHIFT 1
1192#define PALMAS_LDO_SHORT_STATUS1_LDO1 0x01
1193#define PALMAS_LDO_SHORT_STATUS1_LDO1_SHIFT 0
1194
1195/* Bit definitions for LDO_SHORT_STATUS2 */
1196#define PALMAS_LDO_SHORT_STATUS2_LDOVANA 0x08
1197#define PALMAS_LDO_SHORT_STATUS2_LDOVANA_SHIFT 3
1198#define PALMAS_LDO_SHORT_STATUS2_LDOUSB 0x04
1199#define PALMAS_LDO_SHORT_STATUS2_LDOUSB_SHIFT 2
1200#define PALMAS_LDO_SHORT_STATUS2_LDOLN 0x02
1201#define PALMAS_LDO_SHORT_STATUS2_LDOLN_SHIFT 1
1202#define PALMAS_LDO_SHORT_STATUS2_LDO9 0x01
1203#define PALMAS_LDO_SHORT_STATUS2_LDO9_SHIFT 0
1204
1205/* Registers for function PMU_CONTROL */
1206#define PALMAS_DEV_CTRL 0x0
1207#define PALMAS_POWER_CTRL 0x1
1208#define PALMAS_VSYS_LO 0x2
1209#define PALMAS_VSYS_MON 0x3
1210#define PALMAS_VBAT_MON 0x4
1211#define PALMAS_WATCHDOG 0x5
1212#define PALMAS_BOOT_STATUS 0x6
1213#define PALMAS_BATTERY_BOUNCE 0x7
1214#define PALMAS_BACKUP_BATTERY_CTRL 0x8
1215#define PALMAS_LONG_PRESS_KEY 0x9
1216#define PALMAS_OSC_THERM_CTRL 0xA
1217#define PALMAS_BATDEBOUNCING 0xB
1218#define PALMAS_SWOFF_HWRST 0xF
1219#define PALMAS_SWOFF_COLDRST 0x10
1220#define PALMAS_SWOFF_STATUS 0x11
1221#define PALMAS_PMU_CONFIG 0x12
1222#define PALMAS_SPARE 0x14
1223#define PALMAS_PMU_SECONDARY_INT 0x15
1224#define PALMAS_SW_REVISION 0x17
1225#define PALMAS_EXT_CHRG_CTRL 0x18
1226#define PALMAS_PMU_SECONDARY_INT2 0x19
1227
1228/* Bit definitions for DEV_CTRL */
1229#define PALMAS_DEV_CTRL_DEV_STATUS_MASK 0x0c
1230#define PALMAS_DEV_CTRL_DEV_STATUS_SHIFT 2
1231#define PALMAS_DEV_CTRL_SW_RST 0x02
1232#define PALMAS_DEV_CTRL_SW_RST_SHIFT 1
1233#define PALMAS_DEV_CTRL_DEV_ON 0x01
1234#define PALMAS_DEV_CTRL_DEV_ON_SHIFT 0
1235
1236/* Bit definitions for POWER_CTRL */
1237#define PALMAS_POWER_CTRL_ENABLE2_MASK 0x04
1238#define PALMAS_POWER_CTRL_ENABLE2_MASK_SHIFT 2
1239#define PALMAS_POWER_CTRL_ENABLE1_MASK 0x02
1240#define PALMAS_POWER_CTRL_ENABLE1_MASK_SHIFT 1
1241#define PALMAS_POWER_CTRL_NSLEEP_MASK 0x01
1242#define PALMAS_POWER_CTRL_NSLEEP_MASK_SHIFT 0
1243
1244/* Bit definitions for VSYS_LO */
1245#define PALMAS_VSYS_LO_THRESHOLD_MASK 0x1f
1246#define PALMAS_VSYS_LO_THRESHOLD_SHIFT 0
1247
1248/* Bit definitions for VSYS_MON */
1249#define PALMAS_VSYS_MON_ENABLE 0x80
1250#define PALMAS_VSYS_MON_ENABLE_SHIFT 7
1251#define PALMAS_VSYS_MON_THRESHOLD_MASK 0x3f
1252#define PALMAS_VSYS_MON_THRESHOLD_SHIFT 0
1253
1254/* Bit definitions for VBAT_MON */
1255#define PALMAS_VBAT_MON_ENABLE 0x80
1256#define PALMAS_VBAT_MON_ENABLE_SHIFT 7
1257#define PALMAS_VBAT_MON_THRESHOLD_MASK 0x3f
1258#define PALMAS_VBAT_MON_THRESHOLD_SHIFT 0
1259
1260/* Bit definitions for WATCHDOG */
1261#define PALMAS_WATCHDOG_LOCK 0x20
1262#define PALMAS_WATCHDOG_LOCK_SHIFT 5
1263#define PALMAS_WATCHDOG_ENABLE 0x10
1264#define PALMAS_WATCHDOG_ENABLE_SHIFT 4
1265#define PALMAS_WATCHDOG_MODE 0x08
1266#define PALMAS_WATCHDOG_MODE_SHIFT 3
1267#define PALMAS_WATCHDOG_TIMER_MASK 0x07
1268#define PALMAS_WATCHDOG_TIMER_SHIFT 0
1269
1270/* Bit definitions for BOOT_STATUS */
1271#define PALMAS_BOOT_STATUS_BOOT1 0x02
1272#define PALMAS_BOOT_STATUS_BOOT1_SHIFT 1
1273#define PALMAS_BOOT_STATUS_BOOT0 0x01
1274#define PALMAS_BOOT_STATUS_BOOT0_SHIFT 0
1275
1276/* Bit definitions for BATTERY_BOUNCE */
1277#define PALMAS_BATTERY_BOUNCE_BB_DELAY_MASK 0x3f
1278#define PALMAS_BATTERY_BOUNCE_BB_DELAY_SHIFT 0
1279
1280/* Bit definitions for BACKUP_BATTERY_CTRL */
1281#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_18_15 0x80
1282#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_18_15_SHIFT 7
1283#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_EN_SLP 0x40
1284#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_EN_SLP_SHIFT 6
1285#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_EN_OFF 0x20
1286#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_EN_OFF_SHIFT 5
1287#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_PWEN 0x10
1288#define PALMAS_BACKUP_BATTERY_CTRL_VRTC_PWEN_SHIFT 4
1289#define PALMAS_BACKUP_BATTERY_CTRL_BBS_BBC_LOW_ICHRG 0x08
1290#define PALMAS_BACKUP_BATTERY_CTRL_BBS_BBC_LOW_ICHRG_SHIFT 3
1291#define PALMAS_BACKUP_BATTERY_CTRL_BB_SEL_MASK 0x06
1292#define PALMAS_BACKUP_BATTERY_CTRL_BB_SEL_SHIFT 1
1293#define PALMAS_BACKUP_BATTERY_CTRL_BB_CHG_EN 0x01
1294#define PALMAS_BACKUP_BATTERY_CTRL_BB_CHG_EN_SHIFT 0
1295
1296/* Bit definitions for LONG_PRESS_KEY */
1297#define PALMAS_LONG_PRESS_KEY_LPK_LOCK 0x80
1298#define PALMAS_LONG_PRESS_KEY_LPK_LOCK_SHIFT 7
1299#define PALMAS_LONG_PRESS_KEY_LPK_INT_CLR 0x10
1300#define PALMAS_LONG_PRESS_KEY_LPK_INT_CLR_SHIFT 4
1301#define PALMAS_LONG_PRESS_KEY_LPK_TIME_MASK 0x0c
1302#define PALMAS_LONG_PRESS_KEY_LPK_TIME_SHIFT 2
1303#define PALMAS_LONG_PRESS_KEY_PWRON_DEBOUNCE_MASK 0x03
1304#define PALMAS_LONG_PRESS_KEY_PWRON_DEBOUNCE_SHIFT 0
1305
1306/* Bit definitions for OSC_THERM_CTRL */
1307#define PALMAS_OSC_THERM_CTRL_VANA_ON_IN_SLEEP 0x80
1308#define PALMAS_OSC_THERM_CTRL_VANA_ON_IN_SLEEP_SHIFT 7
1309#define PALMAS_OSC_THERM_CTRL_INT_MASK_IN_SLEEP 0x40
1310#define PALMAS_OSC_THERM_CTRL_INT_MASK_IN_SLEEP_SHIFT 6
1311#define PALMAS_OSC_THERM_CTRL_RC15MHZ_ON_IN_SLEEP 0x20
1312#define PALMAS_OSC_THERM_CTRL_RC15MHZ_ON_IN_SLEEP_SHIFT 5
1313#define PALMAS_OSC_THERM_CTRL_THERM_OFF_IN_SLEEP 0x10
1314#define PALMAS_OSC_THERM_CTRL_THERM_OFF_IN_SLEEP_SHIFT 4
1315#define PALMAS_OSC_THERM_CTRL_THERM_HD_SEL_MASK 0x0c
1316#define PALMAS_OSC_THERM_CTRL_THERM_HD_SEL_SHIFT 2
1317#define PALMAS_OSC_THERM_CTRL_OSC_BYPASS 0x02
1318#define PALMAS_OSC_THERM_CTRL_OSC_BYPASS_SHIFT 1
1319#define PALMAS_OSC_THERM_CTRL_OSC_HPMODE 0x01
1320#define PALMAS_OSC_THERM_CTRL_OSC_HPMODE_SHIFT 0
1321
1322/* Bit definitions for BATDEBOUNCING */
1323#define PALMAS_BATDEBOUNCING_BAT_DEB_BYPASS 0x80
1324#define PALMAS_BATDEBOUNCING_BAT_DEB_BYPASS_SHIFT 7
1325#define PALMAS_BATDEBOUNCING_BINS_DEB_MASK 0x78
1326#define PALMAS_BATDEBOUNCING_BINS_DEB_SHIFT 3
1327#define PALMAS_BATDEBOUNCING_BEXT_DEB_MASK 0x07
1328#define PALMAS_BATDEBOUNCING_BEXT_DEB_SHIFT 0
1329
1330/* Bit definitions for SWOFF_HWRST */
1331#define PALMAS_SWOFF_HWRST_PWRON_LPK 0x80
1332#define PALMAS_SWOFF_HWRST_PWRON_LPK_SHIFT 7
1333#define PALMAS_SWOFF_HWRST_PWRDOWN 0x40
1334#define PALMAS_SWOFF_HWRST_PWRDOWN_SHIFT 6
1335#define PALMAS_SWOFF_HWRST_WTD 0x20
1336#define PALMAS_SWOFF_HWRST_WTD_SHIFT 5
1337#define PALMAS_SWOFF_HWRST_TSHUT 0x10
1338#define PALMAS_SWOFF_HWRST_TSHUT_SHIFT 4
1339#define PALMAS_SWOFF_HWRST_RESET_IN 0x08
1340#define PALMAS_SWOFF_HWRST_RESET_IN_SHIFT 3
1341#define PALMAS_SWOFF_HWRST_SW_RST 0x04
1342#define PALMAS_SWOFF_HWRST_SW_RST_SHIFT 2
1343#define PALMAS_SWOFF_HWRST_VSYS_LO 0x02
1344#define PALMAS_SWOFF_HWRST_VSYS_LO_SHIFT 1
1345#define PALMAS_SWOFF_HWRST_GPADC_SHUTDOWN 0x01
1346#define PALMAS_SWOFF_HWRST_GPADC_SHUTDOWN_SHIFT 0
1347
1348/* Bit definitions for SWOFF_COLDRST */
1349#define PALMAS_SWOFF_COLDRST_PWRON_LPK 0x80
1350#define PALMAS_SWOFF_COLDRST_PWRON_LPK_SHIFT 7
1351#define PALMAS_SWOFF_COLDRST_PWRDOWN 0x40
1352#define PALMAS_SWOFF_COLDRST_PWRDOWN_SHIFT 6
1353#define PALMAS_SWOFF_COLDRST_WTD 0x20
1354#define PALMAS_SWOFF_COLDRST_WTD_SHIFT 5
1355#define PALMAS_SWOFF_COLDRST_TSHUT 0x10
1356#define PALMAS_SWOFF_COLDRST_TSHUT_SHIFT 4
1357#define PALMAS_SWOFF_COLDRST_RESET_IN 0x08
1358#define PALMAS_SWOFF_COLDRST_RESET_IN_SHIFT 3
1359#define PALMAS_SWOFF_COLDRST_SW_RST 0x04
1360#define PALMAS_SWOFF_COLDRST_SW_RST_SHIFT 2
1361#define PALMAS_SWOFF_COLDRST_VSYS_LO 0x02
1362#define PALMAS_SWOFF_COLDRST_VSYS_LO_SHIFT 1
1363#define PALMAS_SWOFF_COLDRST_GPADC_SHUTDOWN 0x01
1364#define PALMAS_SWOFF_COLDRST_GPADC_SHUTDOWN_SHIFT 0
1365
1366/* Bit definitions for SWOFF_STATUS */
1367#define PALMAS_SWOFF_STATUS_PWRON_LPK 0x80
1368#define PALMAS_SWOFF_STATUS_PWRON_LPK_SHIFT 7
1369#define PALMAS_SWOFF_STATUS_PWRDOWN 0x40
1370#define PALMAS_SWOFF_STATUS_PWRDOWN_SHIFT 6
1371#define PALMAS_SWOFF_STATUS_WTD 0x20
1372#define PALMAS_SWOFF_STATUS_WTD_SHIFT 5
1373#define PALMAS_SWOFF_STATUS_TSHUT 0x10
1374#define PALMAS_SWOFF_STATUS_TSHUT_SHIFT 4
1375#define PALMAS_SWOFF_STATUS_RESET_IN 0x08
1376#define PALMAS_SWOFF_STATUS_RESET_IN_SHIFT 3
1377#define PALMAS_SWOFF_STATUS_SW_RST 0x04
1378#define PALMAS_SWOFF_STATUS_SW_RST_SHIFT 2
1379#define PALMAS_SWOFF_STATUS_VSYS_LO 0x02
1380#define PALMAS_SWOFF_STATUS_VSYS_LO_SHIFT 1
1381#define PALMAS_SWOFF_STATUS_GPADC_SHUTDOWN 0x01
1382#define PALMAS_SWOFF_STATUS_GPADC_SHUTDOWN_SHIFT 0
1383
1384/* Bit definitions for PMU_CONFIG */
1385#define PALMAS_PMU_CONFIG_MULTI_CELL_EN 0x40
1386#define PALMAS_PMU_CONFIG_MULTI_CELL_EN_SHIFT 6
1387#define PALMAS_PMU_CONFIG_SPARE_MASK 0x30
1388#define PALMAS_PMU_CONFIG_SPARE_SHIFT 4
1389#define PALMAS_PMU_CONFIG_SWOFF_DLY_MASK 0x0c
1390#define PALMAS_PMU_CONFIG_SWOFF_DLY_SHIFT 2
1391#define PALMAS_PMU_CONFIG_GATE_RESET_OUT 0x02
1392#define PALMAS_PMU_CONFIG_GATE_RESET_OUT_SHIFT 1
1393#define PALMAS_PMU_CONFIG_AUTODEVON 0x01
1394#define PALMAS_PMU_CONFIG_AUTODEVON_SHIFT 0
1395
1396/* Bit definitions for SPARE */
1397#define PALMAS_SPARE_SPARE_MASK 0xf8
1398#define PALMAS_SPARE_SPARE_SHIFT 3
1399#define PALMAS_SPARE_REGEN3_OD 0x04
1400#define PALMAS_SPARE_REGEN3_OD_SHIFT 2
1401#define PALMAS_SPARE_REGEN2_OD 0x02
1402#define PALMAS_SPARE_REGEN2_OD_SHIFT 1
1403#define PALMAS_SPARE_REGEN1_OD 0x01
1404#define PALMAS_SPARE_REGEN1_OD_SHIFT 0
1405
1406/* Bit definitions for PMU_SECONDARY_INT */
1407#define PALMAS_PMU_SECONDARY_INT_VBUS_OVV_INT_SRC 0x80
1408#define PALMAS_PMU_SECONDARY_INT_VBUS_OVV_INT_SRC_SHIFT 7
1409#define PALMAS_PMU_SECONDARY_INT_CHARG_DET_N_INT_SRC 0x40
1410#define PALMAS_PMU_SECONDARY_INT_CHARG_DET_N_INT_SRC_SHIFT 6
1411#define PALMAS_PMU_SECONDARY_INT_BB_INT_SRC 0x20
1412#define PALMAS_PMU_SECONDARY_INT_BB_INT_SRC_SHIFT 5
1413#define PALMAS_PMU_SECONDARY_INT_FBI_INT_SRC 0x10
1414#define PALMAS_PMU_SECONDARY_INT_FBI_INT_SRC_SHIFT 4
1415#define PALMAS_PMU_SECONDARY_INT_VBUS_OVV_MASK 0x08
1416#define PALMAS_PMU_SECONDARY_INT_VBUS_OVV_MASK_SHIFT 3
1417#define PALMAS_PMU_SECONDARY_INT_CHARG_DET_N_MASK 0x04
1418#define PALMAS_PMU_SECONDARY_INT_CHARG_DET_N_MASK_SHIFT 2
1419#define PALMAS_PMU_SECONDARY_INT_BB_MASK 0x02
1420#define PALMAS_PMU_SECONDARY_INT_BB_MASK_SHIFT 1
1421#define PALMAS_PMU_SECONDARY_INT_FBI_MASK 0x01
1422#define PALMAS_PMU_SECONDARY_INT_FBI_MASK_SHIFT 0
1423
1424/* Bit definitions for SW_REVISION */
1425#define PALMAS_SW_REVISION_SW_REVISION_MASK 0xff
1426#define PALMAS_SW_REVISION_SW_REVISION_SHIFT 0
1427
1428/* Bit definitions for EXT_CHRG_CTRL */
1429#define PALMAS_EXT_CHRG_CTRL_VBUS_OVV_STATUS 0x80
1430#define PALMAS_EXT_CHRG_CTRL_VBUS_OVV_STATUS_SHIFT 7
1431#define PALMAS_EXT_CHRG_CTRL_CHARG_DET_N_STATUS 0x40
1432#define PALMAS_EXT_CHRG_CTRL_CHARG_DET_N_STATUS_SHIFT 6
1433#define PALMAS_EXT_CHRG_CTRL_VSYS_DEBOUNCE_DELAY 0x08
1434#define PALMAS_EXT_CHRG_CTRL_VSYS_DEBOUNCE_DELAY_SHIFT 3
1435#define PALMAS_EXT_CHRG_CTRL_CHRG_DET_N 0x04
1436#define PALMAS_EXT_CHRG_CTRL_CHRG_DET_N_SHIFT 2
1437#define PALMAS_EXT_CHRG_CTRL_AUTO_ACA_EN 0x02
1438#define PALMAS_EXT_CHRG_CTRL_AUTO_ACA_EN_SHIFT 1
1439#define PALMAS_EXT_CHRG_CTRL_AUTO_LDOUSB_EN 0x01
1440#define PALMAS_EXT_CHRG_CTRL_AUTO_LDOUSB_EN_SHIFT 0
1441
1442/* Bit definitions for PMU_SECONDARY_INT2 */
1443#define PALMAS_PMU_SECONDARY_INT2_DVFS2_INT_SRC 0x20
1444#define PALMAS_PMU_SECONDARY_INT2_DVFS2_INT_SRC_SHIFT 5
1445#define PALMAS_PMU_SECONDARY_INT2_DVFS1_INT_SRC 0x10
1446#define PALMAS_PMU_SECONDARY_INT2_DVFS1_INT_SRC_SHIFT 4
1447#define PALMAS_PMU_SECONDARY_INT2_DVFS2_MASK 0x02
1448#define PALMAS_PMU_SECONDARY_INT2_DVFS2_MASK_SHIFT 1
1449#define PALMAS_PMU_SECONDARY_INT2_DVFS1_MASK 0x01
1450#define PALMAS_PMU_SECONDARY_INT2_DVFS1_MASK_SHIFT 0
1451
1452/* Registers for function RESOURCE */
1453#define PALMAS_CLK32KG_CTRL 0x0
1454#define PALMAS_CLK32KGAUDIO_CTRL 0x1
1455#define PALMAS_REGEN1_CTRL 0x2
1456#define PALMAS_REGEN2_CTRL 0x3
1457#define PALMAS_SYSEN1_CTRL 0x4
1458#define PALMAS_SYSEN2_CTRL 0x5
1459#define PALMAS_NSLEEP_RES_ASSIGN 0x6
1460#define PALMAS_NSLEEP_SMPS_ASSIGN 0x7
1461#define PALMAS_NSLEEP_LDO_ASSIGN1 0x8
1462#define PALMAS_NSLEEP_LDO_ASSIGN2 0x9
1463#define PALMAS_ENABLE1_RES_ASSIGN 0xA
1464#define PALMAS_ENABLE1_SMPS_ASSIGN 0xB
1465#define PALMAS_ENABLE1_LDO_ASSIGN1 0xC
1466#define PALMAS_ENABLE1_LDO_ASSIGN2 0xD
1467#define PALMAS_ENABLE2_RES_ASSIGN 0xE
1468#define PALMAS_ENABLE2_SMPS_ASSIGN 0xF
1469#define PALMAS_ENABLE2_LDO_ASSIGN1 0x10
1470#define PALMAS_ENABLE2_LDO_ASSIGN2 0x11
1471#define PALMAS_REGEN3_CTRL 0x12
1472
1473/* Bit definitions for CLK32KG_CTRL */
1474#define PALMAS_CLK32KG_CTRL_STATUS 0x10
1475#define PALMAS_CLK32KG_CTRL_STATUS_SHIFT 4
1476#define PALMAS_CLK32KG_CTRL_MODE_SLEEP 0x04
1477#define PALMAS_CLK32KG_CTRL_MODE_SLEEP_SHIFT 2
1478#define PALMAS_CLK32KG_CTRL_MODE_ACTIVE 0x01
1479#define PALMAS_CLK32KG_CTRL_MODE_ACTIVE_SHIFT 0
1480
1481/* Bit definitions for CLK32KGAUDIO_CTRL */
1482#define PALMAS_CLK32KGAUDIO_CTRL_STATUS 0x10
1483#define PALMAS_CLK32KGAUDIO_CTRL_STATUS_SHIFT 4
1484#define PALMAS_CLK32KGAUDIO_CTRL_RESERVED3 0x08
1485#define PALMAS_CLK32KGAUDIO_CTRL_RESERVED3_SHIFT 3
1486#define PALMAS_CLK32KGAUDIO_CTRL_MODE_SLEEP 0x04
1487#define PALMAS_CLK32KGAUDIO_CTRL_MODE_SLEEP_SHIFT 2
1488#define PALMAS_CLK32KGAUDIO_CTRL_MODE_ACTIVE 0x01
1489#define PALMAS_CLK32KGAUDIO_CTRL_MODE_ACTIVE_SHIFT 0
1490
1491/* Bit definitions for REGEN1_CTRL */
1492#define PALMAS_REGEN1_CTRL_STATUS 0x10
1493#define PALMAS_REGEN1_CTRL_STATUS_SHIFT 4
1494#define PALMAS_REGEN1_CTRL_MODE_SLEEP 0x04
1495#define PALMAS_REGEN1_CTRL_MODE_SLEEP_SHIFT 2
1496#define PALMAS_REGEN1_CTRL_MODE_ACTIVE 0x01
1497#define PALMAS_REGEN1_CTRL_MODE_ACTIVE_SHIFT 0
1498
1499/* Bit definitions for REGEN2_CTRL */
1500#define PALMAS_REGEN2_CTRL_STATUS 0x10
1501#define PALMAS_REGEN2_CTRL_STATUS_SHIFT 4
1502#define PALMAS_REGEN2_CTRL_MODE_SLEEP 0x04
1503#define PALMAS_REGEN2_CTRL_MODE_SLEEP_SHIFT 2
1504#define PALMAS_REGEN2_CTRL_MODE_ACTIVE 0x01
1505#define PALMAS_REGEN2_CTRL_MODE_ACTIVE_SHIFT 0
1506
1507/* Bit definitions for SYSEN1_CTRL */
1508#define PALMAS_SYSEN1_CTRL_STATUS 0x10
1509#define PALMAS_SYSEN1_CTRL_STATUS_SHIFT 4
1510#define PALMAS_SYSEN1_CTRL_MODE_SLEEP 0x04
1511#define PALMAS_SYSEN1_CTRL_MODE_SLEEP_SHIFT 2
1512#define PALMAS_SYSEN1_CTRL_MODE_ACTIVE 0x01
1513#define PALMAS_SYSEN1_CTRL_MODE_ACTIVE_SHIFT 0
1514
1515/* Bit definitions for SYSEN2_CTRL */
1516#define PALMAS_SYSEN2_CTRL_STATUS 0x10
1517#define PALMAS_SYSEN2_CTRL_STATUS_SHIFT 4
1518#define PALMAS_SYSEN2_CTRL_MODE_SLEEP 0x04
1519#define PALMAS_SYSEN2_CTRL_MODE_SLEEP_SHIFT 2
1520#define PALMAS_SYSEN2_CTRL_MODE_ACTIVE 0x01
1521#define PALMAS_SYSEN2_CTRL_MODE_ACTIVE_SHIFT 0
1522
1523/* Bit definitions for NSLEEP_RES_ASSIGN */
1524#define PALMAS_NSLEEP_RES_ASSIGN_REGEN3 0x40
1525#define PALMAS_NSLEEP_RES_ASSIGN_REGEN3_SHIFT 6
1526#define PALMAS_NSLEEP_RES_ASSIGN_CLK32KGAUDIO 0x20
1527#define PALMAS_NSLEEP_RES_ASSIGN_CLK32KGAUDIO_SHIFT 5
1528#define PALMAS_NSLEEP_RES_ASSIGN_CLK32KG 0x10
1529#define PALMAS_NSLEEP_RES_ASSIGN_CLK32KG_SHIFT 4
1530#define PALMAS_NSLEEP_RES_ASSIGN_SYSEN2 0x08
1531#define PALMAS_NSLEEP_RES_ASSIGN_SYSEN2_SHIFT 3
1532#define PALMAS_NSLEEP_RES_ASSIGN_SYSEN1 0x04
1533#define PALMAS_NSLEEP_RES_ASSIGN_SYSEN1_SHIFT 2
1534#define PALMAS_NSLEEP_RES_ASSIGN_REGEN2 0x02
1535#define PALMAS_NSLEEP_RES_ASSIGN_REGEN2_SHIFT 1
1536#define PALMAS_NSLEEP_RES_ASSIGN_REGEN1 0x01
1537#define PALMAS_NSLEEP_RES_ASSIGN_REGEN1_SHIFT 0
1538
1539/* Bit definitions for NSLEEP_SMPS_ASSIGN */
1540#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS10 0x80
1541#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS10_SHIFT 7
1542#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS9 0x40
1543#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS9_SHIFT 6
1544#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS8 0x20
1545#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS8_SHIFT 5
1546#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS7 0x10
1547#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS7_SHIFT 4
1548#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS6 0x08
1549#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS6_SHIFT 3
1550#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS45 0x04
1551#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS45_SHIFT 2
1552#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS3 0x02
1553#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS3_SHIFT 1
1554#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS12 0x01
1555#define PALMAS_NSLEEP_SMPS_ASSIGN_SMPS12_SHIFT 0
1556
1557/* Bit definitions for NSLEEP_LDO_ASSIGN1 */
1558#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO8 0x80
1559#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO8_SHIFT 7
1560#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO7 0x40
1561#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO7_SHIFT 6
1562#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO6 0x20
1563#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO6_SHIFT 5
1564#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO5 0x10
1565#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO5_SHIFT 4
1566#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO4 0x08
1567#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO4_SHIFT 3
1568#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO3 0x04
1569#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO3_SHIFT 2
1570#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO2 0x02
1571#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO2_SHIFT 1
1572#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO1 0x01
1573#define PALMAS_NSLEEP_LDO_ASSIGN1_LDO1_SHIFT 0
1574
1575/* Bit definitions for NSLEEP_LDO_ASSIGN2 */
1576#define PALMAS_NSLEEP_LDO_ASSIGN2_LDOUSB 0x04
1577#define PALMAS_NSLEEP_LDO_ASSIGN2_LDOUSB_SHIFT 2
1578#define PALMAS_NSLEEP_LDO_ASSIGN2_LDOLN 0x02
1579#define PALMAS_NSLEEP_LDO_ASSIGN2_LDOLN_SHIFT 1
1580#define PALMAS_NSLEEP_LDO_ASSIGN2_LDO9 0x01
1581#define PALMAS_NSLEEP_LDO_ASSIGN2_LDO9_SHIFT 0
1582
1583/* Bit definitions for ENABLE1_RES_ASSIGN */
1584#define PALMAS_ENABLE1_RES_ASSIGN_REGEN3 0x40
1585#define PALMAS_ENABLE1_RES_ASSIGN_REGEN3_SHIFT 6
1586#define PALMAS_ENABLE1_RES_ASSIGN_CLK32KGAUDIO 0x20
1587#define PALMAS_ENABLE1_RES_ASSIGN_CLK32KGAUDIO_SHIFT 5
1588#define PALMAS_ENABLE1_RES_ASSIGN_CLK32KG 0x10
1589#define PALMAS_ENABLE1_RES_ASSIGN_CLK32KG_SHIFT 4
1590#define PALMAS_ENABLE1_RES_ASSIGN_SYSEN2 0x08
1591#define PALMAS_ENABLE1_RES_ASSIGN_SYSEN2_SHIFT 3
1592#define PALMAS_ENABLE1_RES_ASSIGN_SYSEN1 0x04
1593#define PALMAS_ENABLE1_RES_ASSIGN_SYSEN1_SHIFT 2
1594#define PALMAS_ENABLE1_RES_ASSIGN_REGEN2 0x02
1595#define PALMAS_ENABLE1_RES_ASSIGN_REGEN2_SHIFT 1
1596#define PALMAS_ENABLE1_RES_ASSIGN_REGEN1 0x01
1597#define PALMAS_ENABLE1_RES_ASSIGN_REGEN1_SHIFT 0
1598
1599/* Bit definitions for ENABLE1_SMPS_ASSIGN */
1600#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS10 0x80
1601#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS10_SHIFT 7
1602#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS9 0x40
1603#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS9_SHIFT 6
1604#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS8 0x20
1605#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS8_SHIFT 5
1606#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS7 0x10
1607#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS7_SHIFT 4
1608#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS6 0x08
1609#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS6_SHIFT 3
1610#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS45 0x04
1611#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS45_SHIFT 2
1612#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS3 0x02
1613#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS3_SHIFT 1
1614#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS12 0x01
1615#define PALMAS_ENABLE1_SMPS_ASSIGN_SMPS12_SHIFT 0
1616
1617/* Bit definitions for ENABLE1_LDO_ASSIGN1 */
1618#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO8 0x80
1619#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO8_SHIFT 7
1620#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO7 0x40
1621#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO7_SHIFT 6
1622#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO6 0x20
1623#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO6_SHIFT 5
1624#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO5 0x10
1625#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO5_SHIFT 4
1626#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO4 0x08
1627#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO4_SHIFT 3
1628#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO3 0x04
1629#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO3_SHIFT 2
1630#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO2 0x02
1631#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO2_SHIFT 1
1632#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO1 0x01
1633#define PALMAS_ENABLE1_LDO_ASSIGN1_LDO1_SHIFT 0
1634
1635/* Bit definitions for ENABLE1_LDO_ASSIGN2 */
1636#define PALMAS_ENABLE1_LDO_ASSIGN2_LDOUSB 0x04
1637#define PALMAS_ENABLE1_LDO_ASSIGN2_LDOUSB_SHIFT 2
1638#define PALMAS_ENABLE1_LDO_ASSIGN2_LDOLN 0x02
1639#define PALMAS_ENABLE1_LDO_ASSIGN2_LDOLN_SHIFT 1
1640#define PALMAS_ENABLE1_LDO_ASSIGN2_LDO9 0x01
1641#define PALMAS_ENABLE1_LDO_ASSIGN2_LDO9_SHIFT 0
1642
1643/* Bit definitions for ENABLE2_RES_ASSIGN */
1644#define PALMAS_ENABLE2_RES_ASSIGN_REGEN3 0x40
1645#define PALMAS_ENABLE2_RES_ASSIGN_REGEN3_SHIFT 6
1646#define PALMAS_ENABLE2_RES_ASSIGN_CLK32KGAUDIO 0x20
1647#define PALMAS_ENABLE2_RES_ASSIGN_CLK32KGAUDIO_SHIFT 5
1648#define PALMAS_ENABLE2_RES_ASSIGN_CLK32KG 0x10
1649#define PALMAS_ENABLE2_RES_ASSIGN_CLK32KG_SHIFT 4
1650#define PALMAS_ENABLE2_RES_ASSIGN_SYSEN2 0x08
1651#define PALMAS_ENABLE2_RES_ASSIGN_SYSEN2_SHIFT 3
1652#define PALMAS_ENABLE2_RES_ASSIGN_SYSEN1 0x04
1653#define PALMAS_ENABLE2_RES_ASSIGN_SYSEN1_SHIFT 2
1654#define PALMAS_ENABLE2_RES_ASSIGN_REGEN2 0x02
1655#define PALMAS_ENABLE2_RES_ASSIGN_REGEN2_SHIFT 1
1656#define PALMAS_ENABLE2_RES_ASSIGN_REGEN1 0x01
1657#define PALMAS_ENABLE2_RES_ASSIGN_REGEN1_SHIFT 0
1658
1659/* Bit definitions for ENABLE2_SMPS_ASSIGN */
1660#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS10 0x80
1661#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS10_SHIFT 7
1662#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS9 0x40
1663#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS9_SHIFT 6
1664#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS8 0x20
1665#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS8_SHIFT 5
1666#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS7 0x10
1667#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS7_SHIFT 4
1668#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS6 0x08
1669#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS6_SHIFT 3
1670#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS45 0x04
1671#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS45_SHIFT 2
1672#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS3 0x02
1673#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS3_SHIFT 1
1674#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS12 0x01
1675#define PALMAS_ENABLE2_SMPS_ASSIGN_SMPS12_SHIFT 0
1676
1677/* Bit definitions for ENABLE2_LDO_ASSIGN1 */
1678#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO8 0x80
1679#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO8_SHIFT 7
1680#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO7 0x40
1681#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO7_SHIFT 6
1682#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO6 0x20
1683#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO6_SHIFT 5
1684#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO5 0x10
1685#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO5_SHIFT 4
1686#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO4 0x08
1687#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO4_SHIFT 3
1688#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO3 0x04
1689#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO3_SHIFT 2
1690#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO2 0x02
1691#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO2_SHIFT 1
1692#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO1 0x01
1693#define PALMAS_ENABLE2_LDO_ASSIGN1_LDO1_SHIFT 0
1694
1695/* Bit definitions for ENABLE2_LDO_ASSIGN2 */
1696#define PALMAS_ENABLE2_LDO_ASSIGN2_LDOUSB 0x04
1697#define PALMAS_ENABLE2_LDO_ASSIGN2_LDOUSB_SHIFT 2
1698#define PALMAS_ENABLE2_LDO_ASSIGN2_LDOLN 0x02
1699#define PALMAS_ENABLE2_LDO_ASSIGN2_LDOLN_SHIFT 1
1700#define PALMAS_ENABLE2_LDO_ASSIGN2_LDO9 0x01
1701#define PALMAS_ENABLE2_LDO_ASSIGN2_LDO9_SHIFT 0
1702
1703/* Bit definitions for REGEN3_CTRL */
1704#define PALMAS_REGEN3_CTRL_STATUS 0x10
1705#define PALMAS_REGEN3_CTRL_STATUS_SHIFT 4
1706#define PALMAS_REGEN3_CTRL_MODE_SLEEP 0x04
1707#define PALMAS_REGEN3_CTRL_MODE_SLEEP_SHIFT 2
1708#define PALMAS_REGEN3_CTRL_MODE_ACTIVE 0x01
1709#define PALMAS_REGEN3_CTRL_MODE_ACTIVE_SHIFT 0
1710
1711/* Registers for function PAD_CONTROL */
1712#define PALMAS_PU_PD_INPUT_CTRL1 0x0
1713#define PALMAS_PU_PD_INPUT_CTRL2 0x1
1714#define PALMAS_PU_PD_INPUT_CTRL3 0x2
1715#define PALMAS_OD_OUTPUT_CTRL 0x4
1716#define PALMAS_POLARITY_CTRL 0x5
1717#define PALMAS_PRIMARY_SECONDARY_PAD1 0x6
1718#define PALMAS_PRIMARY_SECONDARY_PAD2 0x7
1719#define PALMAS_I2C_SPI 0x8
1720#define PALMAS_PU_PD_INPUT_CTRL4 0x9
1721#define PALMAS_PRIMARY_SECONDARY_PAD3 0xA
1722
1723/* Bit definitions for PU_PD_INPUT_CTRL1 */
1724#define PALMAS_PU_PD_INPUT_CTRL1_RESET_IN_PD 0x40
1725#define PALMAS_PU_PD_INPUT_CTRL1_RESET_IN_PD_SHIFT 6
1726#define PALMAS_PU_PD_INPUT_CTRL1_GPADC_START_PU 0x20
1727#define PALMAS_PU_PD_INPUT_CTRL1_GPADC_START_PU_SHIFT 5
1728#define PALMAS_PU_PD_INPUT_CTRL1_GPADC_START_PD 0x10
1729#define PALMAS_PU_PD_INPUT_CTRL1_GPADC_START_PD_SHIFT 4
1730#define PALMAS_PU_PD_INPUT_CTRL1_PWRDOWN_PD 0x04
1731#define PALMAS_PU_PD_INPUT_CTRL1_PWRDOWN_PD_SHIFT 2
1732#define PALMAS_PU_PD_INPUT_CTRL1_NRESWARM_PU 0x02
1733#define PALMAS_PU_PD_INPUT_CTRL1_NRESWARM_PU_SHIFT 1
1734
1735/* Bit definitions for PU_PD_INPUT_CTRL2 */
1736#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE2_PU 0x20
1737#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE2_PU_SHIFT 5
1738#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE2_PD 0x10
1739#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE2_PD_SHIFT 4
1740#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE1_PU 0x08
1741#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE1_PU_SHIFT 3
1742#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE1_PD 0x04
1743#define PALMAS_PU_PD_INPUT_CTRL2_ENABLE1_PD_SHIFT 2
1744#define PALMAS_PU_PD_INPUT_CTRL2_NSLEEP_PU 0x02
1745#define PALMAS_PU_PD_INPUT_CTRL2_NSLEEP_PU_SHIFT 1
1746#define PALMAS_PU_PD_INPUT_CTRL2_NSLEEP_PD 0x01
1747#define PALMAS_PU_PD_INPUT_CTRL2_NSLEEP_PD_SHIFT 0
1748
1749/* Bit definitions for PU_PD_INPUT_CTRL3 */
1750#define PALMAS_PU_PD_INPUT_CTRL3_ACOK_PD 0x40
1751#define PALMAS_PU_PD_INPUT_CTRL3_ACOK_PD_SHIFT 6
1752#define PALMAS_PU_PD_INPUT_CTRL3_CHRG_DET_N_PD 0x10
1753#define PALMAS_PU_PD_INPUT_CTRL3_CHRG_DET_N_PD_SHIFT 4
1754#define PALMAS_PU_PD_INPUT_CTRL3_POWERHOLD_PD 0x04
1755#define PALMAS_PU_PD_INPUT_CTRL3_POWERHOLD_PD_SHIFT 2
1756#define PALMAS_PU_PD_INPUT_CTRL3_MSECURE_PD 0x01
1757#define PALMAS_PU_PD_INPUT_CTRL3_MSECURE_PD_SHIFT 0
1758
1759/* Bit definitions for OD_OUTPUT_CTRL */
1760#define PALMAS_OD_OUTPUT_CTRL_PWM_2_OD 0x80
1761#define PALMAS_OD_OUTPUT_CTRL_PWM_2_OD_SHIFT 7
1762#define PALMAS_OD_OUTPUT_CTRL_VBUSDET_OD 0x40
1763#define PALMAS_OD_OUTPUT_CTRL_VBUSDET_OD_SHIFT 6
1764#define PALMAS_OD_OUTPUT_CTRL_PWM_1_OD 0x20
1765#define PALMAS_OD_OUTPUT_CTRL_PWM_1_OD_SHIFT 5
1766#define PALMAS_OD_OUTPUT_CTRL_INT_OD 0x08
1767#define PALMAS_OD_OUTPUT_CTRL_INT_OD_SHIFT 3
1768
1769/* Bit definitions for POLARITY_CTRL */
1770#define PALMAS_POLARITY_CTRL_INT_POLARITY 0x80
1771#define PALMAS_POLARITY_CTRL_INT_POLARITY_SHIFT 7
1772#define PALMAS_POLARITY_CTRL_ENABLE2_POLARITY 0x40
1773#define PALMAS_POLARITY_CTRL_ENABLE2_POLARITY_SHIFT 6
1774#define PALMAS_POLARITY_CTRL_ENABLE1_POLARITY 0x20
1775#define PALMAS_POLARITY_CTRL_ENABLE1_POLARITY_SHIFT 5
1776#define PALMAS_POLARITY_CTRL_NSLEEP_POLARITY 0x10
1777#define PALMAS_POLARITY_CTRL_NSLEEP_POLARITY_SHIFT 4
1778#define PALMAS_POLARITY_CTRL_RESET_IN_POLARITY 0x08
1779#define PALMAS_POLARITY_CTRL_RESET_IN_POLARITY_SHIFT 3
1780#define PALMAS_POLARITY_CTRL_GPIO_3_CHRG_DET_N_POLARITY 0x04
1781#define PALMAS_POLARITY_CTRL_GPIO_3_CHRG_DET_N_POLARITY_SHIFT 2
1782#define PALMAS_POLARITY_CTRL_POWERGOOD_USB_PSEL_POLARITY 0x02
1783#define PALMAS_POLARITY_CTRL_POWERGOOD_USB_PSEL_POLARITY_SHIFT 1
1784#define PALMAS_POLARITY_CTRL_PWRDOWN_POLARITY 0x01
1785#define PALMAS_POLARITY_CTRL_PWRDOWN_POLARITY_SHIFT 0
1786
1787/* Bit definitions for PRIMARY_SECONDARY_PAD1 */
1788#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_3 0x80
1789#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_3_SHIFT 7
1790#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_MASK 0x60
1791#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_SHIFT 5
1792#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_MASK 0x18
1793#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_SHIFT 3
1794#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_0 0x04
1795#define PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_0_SHIFT 2
1796#define PALMAS_PRIMARY_SECONDARY_PAD1_VAC 0x02
1797#define PALMAS_PRIMARY_SECONDARY_PAD1_VAC_SHIFT 1
1798#define PALMAS_PRIMARY_SECONDARY_PAD1_POWERGOOD 0x01
1799#define PALMAS_PRIMARY_SECONDARY_PAD1_POWERGOOD_SHIFT 0
1800
1801/* Bit definitions for PRIMARY_SECONDARY_PAD2 */
1802#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK 0x30
1803#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_SHIFT 4
1804#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_6 0x08
1805#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_6_SHIFT 3
1806#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_5_MASK 0x06
1807#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_5_SHIFT 1
1808#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_4 0x01
1809#define PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_4_SHIFT 0
1810
1811/* Bit definitions for I2C_SPI */
1812#define PALMAS_I2C_SPI_I2C2OTP_EN 0x80
1813#define PALMAS_I2C_SPI_I2C2OTP_EN_SHIFT 7
1814#define PALMAS_I2C_SPI_I2C2OTP_PAGESEL 0x40
1815#define PALMAS_I2C_SPI_I2C2OTP_PAGESEL_SHIFT 6
1816#define PALMAS_I2C_SPI_ID_I2C2 0x20
1817#define PALMAS_I2C_SPI_ID_I2C2_SHIFT 5
1818#define PALMAS_I2C_SPI_I2C_SPI 0x10
1819#define PALMAS_I2C_SPI_I2C_SPI_SHIFT 4
1820#define PALMAS_I2C_SPI_ID_I2C1_MASK 0x0f
1821#define PALMAS_I2C_SPI_ID_I2C1_SHIFT 0
1822
1823/* Bit definitions for PU_PD_INPUT_CTRL4 */
1824#define PALMAS_PU_PD_INPUT_CTRL4_DVFS2_DAT_PD 0x40
1825#define PALMAS_PU_PD_INPUT_CTRL4_DVFS2_DAT_PD_SHIFT 6
1826#define PALMAS_PU_PD_INPUT_CTRL4_DVFS2_CLK_PD 0x10
1827#define PALMAS_PU_PD_INPUT_CTRL4_DVFS2_CLK_PD_SHIFT 4
1828#define PALMAS_PU_PD_INPUT_CTRL4_DVFS1_DAT_PD 0x04
1829#define PALMAS_PU_PD_INPUT_CTRL4_DVFS1_DAT_PD_SHIFT 2
1830#define PALMAS_PU_PD_INPUT_CTRL4_DVFS1_CLK_PD 0x01
1831#define PALMAS_PU_PD_INPUT_CTRL4_DVFS1_CLK_PD_SHIFT 0
1832
1833/* Bit definitions for PRIMARY_SECONDARY_PAD3 */
1834#define PALMAS_PRIMARY_SECONDARY_PAD3_DVFS2 0x02
1835#define PALMAS_PRIMARY_SECONDARY_PAD3_DVFS2_SHIFT 1
1836#define PALMAS_PRIMARY_SECONDARY_PAD3_DVFS1 0x01
1837#define PALMAS_PRIMARY_SECONDARY_PAD3_DVFS1_SHIFT 0
1838
1839/* Registers for function LED_PWM */
1840#define PALMAS_LED_PERIOD_CTRL 0x0
1841#define PALMAS_LED_CTRL 0x1
1842#define PALMAS_PWM_CTRL1 0x2
1843#define PALMAS_PWM_CTRL2 0x3
1844
1845/* Bit definitions for LED_PERIOD_CTRL */
1846#define PALMAS_LED_PERIOD_CTRL_LED_2_PERIOD_MASK 0x38
1847#define PALMAS_LED_PERIOD_CTRL_LED_2_PERIOD_SHIFT 3
1848#define PALMAS_LED_PERIOD_CTRL_LED_1_PERIOD_MASK 0x07
1849#define PALMAS_LED_PERIOD_CTRL_LED_1_PERIOD_SHIFT 0
1850
1851/* Bit definitions for LED_CTRL */
1852#define PALMAS_LED_CTRL_LED_2_SEQ 0x20
1853#define PALMAS_LED_CTRL_LED_2_SEQ_SHIFT 5
1854#define PALMAS_LED_CTRL_LED_1_SEQ 0x10
1855#define PALMAS_LED_CTRL_LED_1_SEQ_SHIFT 4
1856#define PALMAS_LED_CTRL_LED_2_ON_TIME_MASK 0x0c
1857#define PALMAS_LED_CTRL_LED_2_ON_TIME_SHIFT 2
1858#define PALMAS_LED_CTRL_LED_1_ON_TIME_MASK 0x03
1859#define PALMAS_LED_CTRL_LED_1_ON_TIME_SHIFT 0
1860
1861/* Bit definitions for PWM_CTRL1 */
1862#define PALMAS_PWM_CTRL1_PWM_FREQ_EN 0x02
1863#define PALMAS_PWM_CTRL1_PWM_FREQ_EN_SHIFT 1
1864#define PALMAS_PWM_CTRL1_PWM_FREQ_SEL 0x01
1865#define PALMAS_PWM_CTRL1_PWM_FREQ_SEL_SHIFT 0
1866
1867/* Bit definitions for PWM_CTRL2 */
1868#define PALMAS_PWM_CTRL2_PWM_DUTY_SEL_MASK 0xff
1869#define PALMAS_PWM_CTRL2_PWM_DUTY_SEL_SHIFT 0
1870
1871/* Registers for function INTERRUPT */
1872#define PALMAS_INT1_STATUS 0x0
1873#define PALMAS_INT1_MASK 0x1
1874#define PALMAS_INT1_LINE_STATE 0x2
1875#define PALMAS_INT1_EDGE_DETECT1_RESERVED 0x3
1876#define PALMAS_INT1_EDGE_DETECT2_RESERVED 0x4
1877#define PALMAS_INT2_STATUS 0x5
1878#define PALMAS_INT2_MASK 0x6
1879#define PALMAS_INT2_LINE_STATE 0x7
1880#define PALMAS_INT2_EDGE_DETECT1_RESERVED 0x8
1881#define PALMAS_INT2_EDGE_DETECT2_RESERVED 0x9
1882#define PALMAS_INT3_STATUS 0xA
1883#define PALMAS_INT3_MASK 0xB
1884#define PALMAS_INT3_LINE_STATE 0xC
1885#define PALMAS_INT3_EDGE_DETECT1_RESERVED 0xD
1886#define PALMAS_INT3_EDGE_DETECT2_RESERVED 0xE
1887#define PALMAS_INT4_STATUS 0xF
1888#define PALMAS_INT4_MASK 0x10
1889#define PALMAS_INT4_LINE_STATE 0x11
1890#define PALMAS_INT4_EDGE_DETECT1 0x12
1891#define PALMAS_INT4_EDGE_DETECT2 0x13
1892#define PALMAS_INT_CTRL 0x14
1893
1894/* Bit definitions for INT1_STATUS */
1895#define PALMAS_INT1_STATUS_VBAT_MON 0x80
1896#define PALMAS_INT1_STATUS_VBAT_MON_SHIFT 7
1897#define PALMAS_INT1_STATUS_VSYS_MON 0x40
1898#define PALMAS_INT1_STATUS_VSYS_MON_SHIFT 6
1899#define PALMAS_INT1_STATUS_HOTDIE 0x20
1900#define PALMAS_INT1_STATUS_HOTDIE_SHIFT 5
1901#define PALMAS_INT1_STATUS_PWRDOWN 0x10
1902#define PALMAS_INT1_STATUS_PWRDOWN_SHIFT 4
1903#define PALMAS_INT1_STATUS_RPWRON 0x08
1904#define PALMAS_INT1_STATUS_RPWRON_SHIFT 3
1905#define PALMAS_INT1_STATUS_LONG_PRESS_KEY 0x04
1906#define PALMAS_INT1_STATUS_LONG_PRESS_KEY_SHIFT 2
1907#define PALMAS_INT1_STATUS_PWRON 0x02
1908#define PALMAS_INT1_STATUS_PWRON_SHIFT 1
1909#define PALMAS_INT1_STATUS_CHARG_DET_N_VBUS_OVV 0x01
1910#define PALMAS_INT1_STATUS_CHARG_DET_N_VBUS_OVV_SHIFT 0
1911
1912/* Bit definitions for INT1_MASK */
1913#define PALMAS_INT1_MASK_VBAT_MON 0x80
1914#define PALMAS_INT1_MASK_VBAT_MON_SHIFT 7
1915#define PALMAS_INT1_MASK_VSYS_MON 0x40
1916#define PALMAS_INT1_MASK_VSYS_MON_SHIFT 6
1917#define PALMAS_INT1_MASK_HOTDIE 0x20
1918#define PALMAS_INT1_MASK_HOTDIE_SHIFT 5
1919#define PALMAS_INT1_MASK_PWRDOWN 0x10
1920#define PALMAS_INT1_MASK_PWRDOWN_SHIFT 4
1921#define PALMAS_INT1_MASK_RPWRON 0x08
1922#define PALMAS_INT1_MASK_RPWRON_SHIFT 3
1923#define PALMAS_INT1_MASK_LONG_PRESS_KEY 0x04
1924#define PALMAS_INT1_MASK_LONG_PRESS_KEY_SHIFT 2
1925#define PALMAS_INT1_MASK_PWRON 0x02
1926#define PALMAS_INT1_MASK_PWRON_SHIFT 1
1927#define PALMAS_INT1_MASK_CHARG_DET_N_VBUS_OVV 0x01
1928#define PALMAS_INT1_MASK_CHARG_DET_N_VBUS_OVV_SHIFT 0
1929
1930/* Bit definitions for INT1_LINE_STATE */
1931#define PALMAS_INT1_LINE_STATE_VBAT_MON 0x80
1932#define PALMAS_INT1_LINE_STATE_VBAT_MON_SHIFT 7
1933#define PALMAS_INT1_LINE_STATE_VSYS_MON 0x40
1934#define PALMAS_INT1_LINE_STATE_VSYS_MON_SHIFT 6
1935#define PALMAS_INT1_LINE_STATE_HOTDIE 0x20
1936#define PALMAS_INT1_LINE_STATE_HOTDIE_SHIFT 5
1937#define PALMAS_INT1_LINE_STATE_PWRDOWN 0x10
1938#define PALMAS_INT1_LINE_STATE_PWRDOWN_SHIFT 4
1939#define PALMAS_INT1_LINE_STATE_RPWRON 0x08
1940#define PALMAS_INT1_LINE_STATE_RPWRON_SHIFT 3
1941#define PALMAS_INT1_LINE_STATE_LONG_PRESS_KEY 0x04
1942#define PALMAS_INT1_LINE_STATE_LONG_PRESS_KEY_SHIFT 2
1943#define PALMAS_INT1_LINE_STATE_PWRON 0x02
1944#define PALMAS_INT1_LINE_STATE_PWRON_SHIFT 1
1945#define PALMAS_INT1_LINE_STATE_CHARG_DET_N_VBUS_OVV 0x01
1946#define PALMAS_INT1_LINE_STATE_CHARG_DET_N_VBUS_OVV_SHIFT 0
1947
1948/* Bit definitions for INT2_STATUS */
1949#define PALMAS_INT2_STATUS_VAC_ACOK 0x80
1950#define PALMAS_INT2_STATUS_VAC_ACOK_SHIFT 7
1951#define PALMAS_INT2_STATUS_SHORT 0x40
1952#define PALMAS_INT2_STATUS_SHORT_SHIFT 6
1953#define PALMAS_INT2_STATUS_FBI_BB 0x20
1954#define PALMAS_INT2_STATUS_FBI_BB_SHIFT 5
1955#define PALMAS_INT2_STATUS_RESET_IN 0x10
1956#define PALMAS_INT2_STATUS_RESET_IN_SHIFT 4
1957#define PALMAS_INT2_STATUS_BATREMOVAL 0x08
1958#define PALMAS_INT2_STATUS_BATREMOVAL_SHIFT 3
1959#define PALMAS_INT2_STATUS_WDT 0x04
1960#define PALMAS_INT2_STATUS_WDT_SHIFT 2
1961#define PALMAS_INT2_STATUS_RTC_TIMER 0x02
1962#define PALMAS_INT2_STATUS_RTC_TIMER_SHIFT 1
1963#define PALMAS_INT2_STATUS_RTC_ALARM 0x01
1964#define PALMAS_INT2_STATUS_RTC_ALARM_SHIFT 0
1965
1966/* Bit definitions for INT2_MASK */
1967#define PALMAS_INT2_MASK_VAC_ACOK 0x80
1968#define PALMAS_INT2_MASK_VAC_ACOK_SHIFT 7
1969#define PALMAS_INT2_MASK_SHORT 0x40
1970#define PALMAS_INT2_MASK_SHORT_SHIFT 6
1971#define PALMAS_INT2_MASK_FBI_BB 0x20
1972#define PALMAS_INT2_MASK_FBI_BB_SHIFT 5
1973#define PALMAS_INT2_MASK_RESET_IN 0x10
1974#define PALMAS_INT2_MASK_RESET_IN_SHIFT 4
1975#define PALMAS_INT2_MASK_BATREMOVAL 0x08
1976#define PALMAS_INT2_MASK_BATREMOVAL_SHIFT 3
1977#define PALMAS_INT2_MASK_WDT 0x04
1978#define PALMAS_INT2_MASK_WDT_SHIFT 2
1979#define PALMAS_INT2_MASK_RTC_TIMER 0x02
1980#define PALMAS_INT2_MASK_RTC_TIMER_SHIFT 1
1981#define PALMAS_INT2_MASK_RTC_ALARM 0x01
1982#define PALMAS_INT2_MASK_RTC_ALARM_SHIFT 0
1983
1984/* Bit definitions for INT2_LINE_STATE */
1985#define PALMAS_INT2_LINE_STATE_VAC_ACOK 0x80
1986#define PALMAS_INT2_LINE_STATE_VAC_ACOK_SHIFT 7
1987#define PALMAS_INT2_LINE_STATE_SHORT 0x40
1988#define PALMAS_INT2_LINE_STATE_SHORT_SHIFT 6
1989#define PALMAS_INT2_LINE_STATE_FBI_BB 0x20
1990#define PALMAS_INT2_LINE_STATE_FBI_BB_SHIFT 5
1991#define PALMAS_INT2_LINE_STATE_RESET_IN 0x10
1992#define PALMAS_INT2_LINE_STATE_RESET_IN_SHIFT 4
1993#define PALMAS_INT2_LINE_STATE_BATREMOVAL 0x08
1994#define PALMAS_INT2_LINE_STATE_BATREMOVAL_SHIFT 3
1995#define PALMAS_INT2_LINE_STATE_WDT 0x04
1996#define PALMAS_INT2_LINE_STATE_WDT_SHIFT 2
1997#define PALMAS_INT2_LINE_STATE_RTC_TIMER 0x02
1998#define PALMAS_INT2_LINE_STATE_RTC_TIMER_SHIFT 1
1999#define PALMAS_INT2_LINE_STATE_RTC_ALARM 0x01
2000#define PALMAS_INT2_LINE_STATE_RTC_ALARM_SHIFT 0
2001
2002/* Bit definitions for INT3_STATUS */
2003#define PALMAS_INT3_STATUS_VBUS 0x80
2004#define PALMAS_INT3_STATUS_VBUS_SHIFT 7
2005#define PALMAS_INT3_STATUS_VBUS_OTG 0x40
2006#define PALMAS_INT3_STATUS_VBUS_OTG_SHIFT 6
2007#define PALMAS_INT3_STATUS_ID 0x20
2008#define PALMAS_INT3_STATUS_ID_SHIFT 5
2009#define PALMAS_INT3_STATUS_ID_OTG 0x10
2010#define PALMAS_INT3_STATUS_ID_OTG_SHIFT 4
2011#define PALMAS_INT3_STATUS_GPADC_EOC_RT 0x08
2012#define PALMAS_INT3_STATUS_GPADC_EOC_RT_SHIFT 3
2013#define PALMAS_INT3_STATUS_GPADC_EOC_SW 0x04
2014#define PALMAS_INT3_STATUS_GPADC_EOC_SW_SHIFT 2
2015#define PALMAS_INT3_STATUS_GPADC_AUTO_1 0x02
2016#define PALMAS_INT3_STATUS_GPADC_AUTO_1_SHIFT 1
2017#define PALMAS_INT3_STATUS_GPADC_AUTO_0 0x01
2018#define PALMAS_INT3_STATUS_GPADC_AUTO_0_SHIFT 0
2019
2020/* Bit definitions for INT3_MASK */
2021#define PALMAS_INT3_MASK_VBUS 0x80
2022#define PALMAS_INT3_MASK_VBUS_SHIFT 7
2023#define PALMAS_INT3_MASK_VBUS_OTG 0x40
2024#define PALMAS_INT3_MASK_VBUS_OTG_SHIFT 6
2025#define PALMAS_INT3_MASK_ID 0x20
2026#define PALMAS_INT3_MASK_ID_SHIFT 5
2027#define PALMAS_INT3_MASK_ID_OTG 0x10
2028#define PALMAS_INT3_MASK_ID_OTG_SHIFT 4
2029#define PALMAS_INT3_MASK_GPADC_EOC_RT 0x08
2030#define PALMAS_INT3_MASK_GPADC_EOC_RT_SHIFT 3
2031#define PALMAS_INT3_MASK_GPADC_EOC_SW 0x04
2032#define PALMAS_INT3_MASK_GPADC_EOC_SW_SHIFT 2
2033#define PALMAS_INT3_MASK_GPADC_AUTO_1 0x02
2034#define PALMAS_INT3_MASK_GPADC_AUTO_1_SHIFT 1
2035#define PALMAS_INT3_MASK_GPADC_AUTO_0 0x01
2036#define PALMAS_INT3_MASK_GPADC_AUTO_0_SHIFT 0
2037
2038/* Bit definitions for INT3_LINE_STATE */
2039#define PALMAS_INT3_LINE_STATE_VBUS 0x80
2040#define PALMAS_INT3_LINE_STATE_VBUS_SHIFT 7
2041#define PALMAS_INT3_LINE_STATE_VBUS_OTG 0x40
2042#define PALMAS_INT3_LINE_STATE_VBUS_OTG_SHIFT 6
2043#define PALMAS_INT3_LINE_STATE_ID 0x20
2044#define PALMAS_INT3_LINE_STATE_ID_SHIFT 5
2045#define PALMAS_INT3_LINE_STATE_ID_OTG 0x10
2046#define PALMAS_INT3_LINE_STATE_ID_OTG_SHIFT 4
2047#define PALMAS_INT3_LINE_STATE_GPADC_EOC_RT 0x08
2048#define PALMAS_INT3_LINE_STATE_GPADC_EOC_RT_SHIFT 3
2049#define PALMAS_INT3_LINE_STATE_GPADC_EOC_SW 0x04
2050#define PALMAS_INT3_LINE_STATE_GPADC_EOC_SW_SHIFT 2
2051#define PALMAS_INT3_LINE_STATE_GPADC_AUTO_1 0x02
2052#define PALMAS_INT3_LINE_STATE_GPADC_AUTO_1_SHIFT 1
2053#define PALMAS_INT3_LINE_STATE_GPADC_AUTO_0 0x01
2054#define PALMAS_INT3_LINE_STATE_GPADC_AUTO_0_SHIFT 0
2055
2056/* Bit definitions for INT4_STATUS */
2057#define PALMAS_INT4_STATUS_GPIO_7 0x80
2058#define PALMAS_INT4_STATUS_GPIO_7_SHIFT 7
2059#define PALMAS_INT4_STATUS_GPIO_6 0x40
2060#define PALMAS_INT4_STATUS_GPIO_6_SHIFT 6
2061#define PALMAS_INT4_STATUS_GPIO_5 0x20
2062#define PALMAS_INT4_STATUS_GPIO_5_SHIFT 5
2063#define PALMAS_INT4_STATUS_GPIO_4 0x10
2064#define PALMAS_INT4_STATUS_GPIO_4_SHIFT 4
2065#define PALMAS_INT4_STATUS_GPIO_3 0x08
2066#define PALMAS_INT4_STATUS_GPIO_3_SHIFT 3
2067#define PALMAS_INT4_STATUS_GPIO_2 0x04
2068#define PALMAS_INT4_STATUS_GPIO_2_SHIFT 2
2069#define PALMAS_INT4_STATUS_GPIO_1 0x02
2070#define PALMAS_INT4_STATUS_GPIO_1_SHIFT 1
2071#define PALMAS_INT4_STATUS_GPIO_0 0x01
2072#define PALMAS_INT4_STATUS_GPIO_0_SHIFT 0
2073
2074/* Bit definitions for INT4_MASK */
2075#define PALMAS_INT4_MASK_GPIO_7 0x80
2076#define PALMAS_INT4_MASK_GPIO_7_SHIFT 7
2077#define PALMAS_INT4_MASK_GPIO_6 0x40
2078#define PALMAS_INT4_MASK_GPIO_6_SHIFT 6
2079#define PALMAS_INT4_MASK_GPIO_5 0x20
2080#define PALMAS_INT4_MASK_GPIO_5_SHIFT 5
2081#define PALMAS_INT4_MASK_GPIO_4 0x10
2082#define PALMAS_INT4_MASK_GPIO_4_SHIFT 4
2083#define PALMAS_INT4_MASK_GPIO_3 0x08
2084#define PALMAS_INT4_MASK_GPIO_3_SHIFT 3
2085#define PALMAS_INT4_MASK_GPIO_2 0x04
2086#define PALMAS_INT4_MASK_GPIO_2_SHIFT 2
2087#define PALMAS_INT4_MASK_GPIO_1 0x02
2088#define PALMAS_INT4_MASK_GPIO_1_SHIFT 1
2089#define PALMAS_INT4_MASK_GPIO_0 0x01
2090#define PALMAS_INT4_MASK_GPIO_0_SHIFT 0
2091
2092/* Bit definitions for INT4_LINE_STATE */
2093#define PALMAS_INT4_LINE_STATE_GPIO_7 0x80
2094#define PALMAS_INT4_LINE_STATE_GPIO_7_SHIFT 7
2095#define PALMAS_INT4_LINE_STATE_GPIO_6 0x40
2096#define PALMAS_INT4_LINE_STATE_GPIO_6_SHIFT 6
2097#define PALMAS_INT4_LINE_STATE_GPIO_5 0x20
2098#define PALMAS_INT4_LINE_STATE_GPIO_5_SHIFT 5
2099#define PALMAS_INT4_LINE_STATE_GPIO_4 0x10
2100#define PALMAS_INT4_LINE_STATE_GPIO_4_SHIFT 4
2101#define PALMAS_INT4_LINE_STATE_GPIO_3 0x08
2102#define PALMAS_INT4_LINE_STATE_GPIO_3_SHIFT 3
2103#define PALMAS_INT4_LINE_STATE_GPIO_2 0x04
2104#define PALMAS_INT4_LINE_STATE_GPIO_2_SHIFT 2
2105#define PALMAS_INT4_LINE_STATE_GPIO_1 0x02
2106#define PALMAS_INT4_LINE_STATE_GPIO_1_SHIFT 1
2107#define PALMAS_INT4_LINE_STATE_GPIO_0 0x01
2108#define PALMAS_INT4_LINE_STATE_GPIO_0_SHIFT 0
2109
2110/* Bit definitions for INT4_EDGE_DETECT1 */
2111#define PALMAS_INT4_EDGE_DETECT1_GPIO_3_RISING 0x80
2112#define PALMAS_INT4_EDGE_DETECT1_GPIO_3_RISING_SHIFT 7
2113#define PALMAS_INT4_EDGE_DETECT1_GPIO_3_FALLING 0x40
2114#define PALMAS_INT4_EDGE_DETECT1_GPIO_3_FALLING_SHIFT 6
2115#define PALMAS_INT4_EDGE_DETECT1_GPIO_2_RISING 0x20
2116#define PALMAS_INT4_EDGE_DETECT1_GPIO_2_RISING_SHIFT 5
2117#define PALMAS_INT4_EDGE_DETECT1_GPIO_2_FALLING 0x10
2118#define PALMAS_INT4_EDGE_DETECT1_GPIO_2_FALLING_SHIFT 4
2119#define PALMAS_INT4_EDGE_DETECT1_GPIO_1_RISING 0x08
2120#define PALMAS_INT4_EDGE_DETECT1_GPIO_1_RISING_SHIFT 3
2121#define PALMAS_INT4_EDGE_DETECT1_GPIO_1_FALLING 0x04
2122#define PALMAS_INT4_EDGE_DETECT1_GPIO_1_FALLING_SHIFT 2
2123#define PALMAS_INT4_EDGE_DETECT1_GPIO_0_RISING 0x02
2124#define PALMAS_INT4_EDGE_DETECT1_GPIO_0_RISING_SHIFT 1
2125#define PALMAS_INT4_EDGE_DETECT1_GPIO_0_FALLING 0x01
2126#define PALMAS_INT4_EDGE_DETECT1_GPIO_0_FALLING_SHIFT 0
2127
2128/* Bit definitions for INT4_EDGE_DETECT2 */
2129#define PALMAS_INT4_EDGE_DETECT2_GPIO_7_RISING 0x80
2130#define PALMAS_INT4_EDGE_DETECT2_GPIO_7_RISING_SHIFT 7
2131#define PALMAS_INT4_EDGE_DETECT2_GPIO_7_FALLING 0x40
2132#define PALMAS_INT4_EDGE_DETECT2_GPIO_7_FALLING_SHIFT 6
2133#define PALMAS_INT4_EDGE_DETECT2_GPIO_6_RISING 0x20
2134#define PALMAS_INT4_EDGE_DETECT2_GPIO_6_RISING_SHIFT 5
2135#define PALMAS_INT4_EDGE_DETECT2_GPIO_6_FALLING 0x10
2136#define PALMAS_INT4_EDGE_DETECT2_GPIO_6_FALLING_SHIFT 4
2137#define PALMAS_INT4_EDGE_DETECT2_GPIO_5_RISING 0x08
2138#define PALMAS_INT4_EDGE_DETECT2_GPIO_5_RISING_SHIFT 3
2139#define PALMAS_INT4_EDGE_DETECT2_GPIO_5_FALLING 0x04
2140#define PALMAS_INT4_EDGE_DETECT2_GPIO_5_FALLING_SHIFT 2
2141#define PALMAS_INT4_EDGE_DETECT2_GPIO_4_RISING 0x02
2142#define PALMAS_INT4_EDGE_DETECT2_GPIO_4_RISING_SHIFT 1
2143#define PALMAS_INT4_EDGE_DETECT2_GPIO_4_FALLING 0x01
2144#define PALMAS_INT4_EDGE_DETECT2_GPIO_4_FALLING_SHIFT 0
2145
2146/* Bit definitions for INT_CTRL */
2147#define PALMAS_INT_CTRL_INT_PENDING 0x04
2148#define PALMAS_INT_CTRL_INT_PENDING_SHIFT 2
2149#define PALMAS_INT_CTRL_INT_CLEAR 0x01
2150#define PALMAS_INT_CTRL_INT_CLEAR_SHIFT 0
2151
2152/* Registers for function USB_OTG */
2153#define PALMAS_USB_WAKEUP 0x3
2154#define PALMAS_USB_VBUS_CTRL_SET 0x4
2155#define PALMAS_USB_VBUS_CTRL_CLR 0x5
2156#define PALMAS_USB_ID_CTRL_SET 0x6
2157#define PALMAS_USB_ID_CTRL_CLEAR 0x7
2158#define PALMAS_USB_VBUS_INT_SRC 0x8
2159#define PALMAS_USB_VBUS_INT_LATCH_SET 0x9
2160#define PALMAS_USB_VBUS_INT_LATCH_CLR 0xA
2161#define PALMAS_USB_VBUS_INT_EN_LO_SET 0xB
2162#define PALMAS_USB_VBUS_INT_EN_LO_CLR 0xC
2163#define PALMAS_USB_VBUS_INT_EN_HI_SET 0xD
2164#define PALMAS_USB_VBUS_INT_EN_HI_CLR 0xE
2165#define PALMAS_USB_ID_INT_SRC 0xF
2166#define PALMAS_USB_ID_INT_LATCH_SET 0x10
2167#define PALMAS_USB_ID_INT_LATCH_CLR 0x11
2168#define PALMAS_USB_ID_INT_EN_LO_SET 0x12
2169#define PALMAS_USB_ID_INT_EN_LO_CLR 0x13
2170#define PALMAS_USB_ID_INT_EN_HI_SET 0x14
2171#define PALMAS_USB_ID_INT_EN_HI_CLR 0x15
2172#define PALMAS_USB_OTG_ADP_CTRL 0x16
2173#define PALMAS_USB_OTG_ADP_HIGH 0x17
2174#define PALMAS_USB_OTG_ADP_LOW 0x18
2175#define PALMAS_USB_OTG_ADP_RISE 0x19
2176#define PALMAS_USB_OTG_REVISION 0x1A
2177
2178/* Bit definitions for USB_WAKEUP */
2179#define PALMAS_USB_WAKEUP_ID_WK_UP_COMP 0x01
2180#define PALMAS_USB_WAKEUP_ID_WK_UP_COMP_SHIFT 0
2181
2182/* Bit definitions for USB_VBUS_CTRL_SET */
2183#define PALMAS_USB_VBUS_CTRL_SET_VBUS_CHRG_VSYS 0x80
2184#define PALMAS_USB_VBUS_CTRL_SET_VBUS_CHRG_VSYS_SHIFT 7
2185#define PALMAS_USB_VBUS_CTRL_SET_VBUS_DISCHRG 0x20
2186#define PALMAS_USB_VBUS_CTRL_SET_VBUS_DISCHRG_SHIFT 5
2187#define PALMAS_USB_VBUS_CTRL_SET_VBUS_IADP_SRC 0x10
2188#define PALMAS_USB_VBUS_CTRL_SET_VBUS_IADP_SRC_SHIFT 4
2189#define PALMAS_USB_VBUS_CTRL_SET_VBUS_IADP_SINK 0x08
2190#define PALMAS_USB_VBUS_CTRL_SET_VBUS_IADP_SINK_SHIFT 3
2191#define PALMAS_USB_VBUS_CTRL_SET_VBUS_ACT_COMP 0x04
2192#define PALMAS_USB_VBUS_CTRL_SET_VBUS_ACT_COMP_SHIFT 2
2193
2194/* Bit definitions for USB_VBUS_CTRL_CLR */
2195#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_CHRG_VSYS 0x80
2196#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_CHRG_VSYS_SHIFT 7
2197#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_DISCHRG 0x20
2198#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_DISCHRG_SHIFT 5
2199#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_IADP_SRC 0x10
2200#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_IADP_SRC_SHIFT 4
2201#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_IADP_SINK 0x08
2202#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_IADP_SINK_SHIFT 3
2203#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_ACT_COMP 0x04
2204#define PALMAS_USB_VBUS_CTRL_CLR_VBUS_ACT_COMP_SHIFT 2
2205
2206/* Bit definitions for USB_ID_CTRL_SET */
2207#define PALMAS_USB_ID_CTRL_SET_ID_PU_220K 0x80
2208#define PALMAS_USB_ID_CTRL_SET_ID_PU_220K_SHIFT 7
2209#define PALMAS_USB_ID_CTRL_SET_ID_PU_100K 0x40
2210#define PALMAS_USB_ID_CTRL_SET_ID_PU_100K_SHIFT 6
2211#define PALMAS_USB_ID_CTRL_SET_ID_GND_DRV 0x20
2212#define PALMAS_USB_ID_CTRL_SET_ID_GND_DRV_SHIFT 5
2213#define PALMAS_USB_ID_CTRL_SET_ID_SRC_16U 0x10
2214#define PALMAS_USB_ID_CTRL_SET_ID_SRC_16U_SHIFT 4
2215#define PALMAS_USB_ID_CTRL_SET_ID_SRC_5U 0x08
2216#define PALMAS_USB_ID_CTRL_SET_ID_SRC_5U_SHIFT 3
2217#define PALMAS_USB_ID_CTRL_SET_ID_ACT_COMP 0x04
2218#define PALMAS_USB_ID_CTRL_SET_ID_ACT_COMP_SHIFT 2
2219
2220/* Bit definitions for USB_ID_CTRL_CLEAR */
2221#define PALMAS_USB_ID_CTRL_CLEAR_ID_PU_220K 0x80
2222#define PALMAS_USB_ID_CTRL_CLEAR_ID_PU_220K_SHIFT 7
2223#define PALMAS_USB_ID_CTRL_CLEAR_ID_PU_100K 0x40
2224#define PALMAS_USB_ID_CTRL_CLEAR_ID_PU_100K_SHIFT 6
2225#define PALMAS_USB_ID_CTRL_CLEAR_ID_GND_DRV 0x20
2226#define PALMAS_USB_ID_CTRL_CLEAR_ID_GND_DRV_SHIFT 5
2227#define PALMAS_USB_ID_CTRL_CLEAR_ID_SRC_16U 0x10
2228#define PALMAS_USB_ID_CTRL_CLEAR_ID_SRC_16U_SHIFT 4
2229#define PALMAS_USB_ID_CTRL_CLEAR_ID_SRC_5U 0x08
2230#define PALMAS_USB_ID_CTRL_CLEAR_ID_SRC_5U_SHIFT 3
2231#define PALMAS_USB_ID_CTRL_CLEAR_ID_ACT_COMP 0x04
2232#define PALMAS_USB_ID_CTRL_CLEAR_ID_ACT_COMP_SHIFT 2
2233
2234/* Bit definitions for USB_VBUS_INT_SRC */
2235#define PALMAS_USB_VBUS_INT_SRC_VOTG_SESS_VLD 0x80
2236#define PALMAS_USB_VBUS_INT_SRC_VOTG_SESS_VLD_SHIFT 7
2237#define PALMAS_USB_VBUS_INT_SRC_VADP_PRB 0x40
2238#define PALMAS_USB_VBUS_INT_SRC_VADP_PRB_SHIFT 6
2239#define PALMAS_USB_VBUS_INT_SRC_VADP_SNS 0x20
2240#define PALMAS_USB_VBUS_INT_SRC_VADP_SNS_SHIFT 5
2241#define PALMAS_USB_VBUS_INT_SRC_VA_VBUS_VLD 0x08
2242#define PALMAS_USB_VBUS_INT_SRC_VA_VBUS_VLD_SHIFT 3
2243#define PALMAS_USB_VBUS_INT_SRC_VA_SESS_VLD 0x04
2244#define PALMAS_USB_VBUS_INT_SRC_VA_SESS_VLD_SHIFT 2
2245#define PALMAS_USB_VBUS_INT_SRC_VB_SESS_VLD 0x02
2246#define PALMAS_USB_VBUS_INT_SRC_VB_SESS_VLD_SHIFT 1
2247#define PALMAS_USB_VBUS_INT_SRC_VB_SESS_END 0x01
2248#define PALMAS_USB_VBUS_INT_SRC_VB_SESS_END_SHIFT 0
2249
2250/* Bit definitions for USB_VBUS_INT_LATCH_SET */
2251#define PALMAS_USB_VBUS_INT_LATCH_SET_VOTG_SESS_VLD 0x80
2252#define PALMAS_USB_VBUS_INT_LATCH_SET_VOTG_SESS_VLD_SHIFT 7
2253#define PALMAS_USB_VBUS_INT_LATCH_SET_VADP_PRB 0x40
2254#define PALMAS_USB_VBUS_INT_LATCH_SET_VADP_PRB_SHIFT 6
2255#define PALMAS_USB_VBUS_INT_LATCH_SET_VADP_SNS 0x20
2256#define PALMAS_USB_VBUS_INT_LATCH_SET_VADP_SNS_SHIFT 5
2257#define PALMAS_USB_VBUS_INT_LATCH_SET_ADP 0x10
2258#define PALMAS_USB_VBUS_INT_LATCH_SET_ADP_SHIFT 4
2259#define PALMAS_USB_VBUS_INT_LATCH_SET_VA_VBUS_VLD 0x08
2260#define PALMAS_USB_VBUS_INT_LATCH_SET_VA_VBUS_VLD_SHIFT 3
2261#define PALMAS_USB_VBUS_INT_LATCH_SET_VA_SESS_VLD 0x04
2262#define PALMAS_USB_VBUS_INT_LATCH_SET_VA_SESS_VLD_SHIFT 2
2263#define PALMAS_USB_VBUS_INT_LATCH_SET_VB_SESS_VLD 0x02
2264#define PALMAS_USB_VBUS_INT_LATCH_SET_VB_SESS_VLD_SHIFT 1
2265#define PALMAS_USB_VBUS_INT_LATCH_SET_VB_SESS_END 0x01
2266#define PALMAS_USB_VBUS_INT_LATCH_SET_VB_SESS_END_SHIFT 0
2267
2268/* Bit definitions for USB_VBUS_INT_LATCH_CLR */
2269#define PALMAS_USB_VBUS_INT_LATCH_CLR_VOTG_SESS_VLD 0x80
2270#define PALMAS_USB_VBUS_INT_LATCH_CLR_VOTG_SESS_VLD_SHIFT 7
2271#define PALMAS_USB_VBUS_INT_LATCH_CLR_VADP_PRB 0x40
2272#define PALMAS_USB_VBUS_INT_LATCH_CLR_VADP_PRB_SHIFT 6
2273#define PALMAS_USB_VBUS_INT_LATCH_CLR_VADP_SNS 0x20
2274#define PALMAS_USB_VBUS_INT_LATCH_CLR_VADP_SNS_SHIFT 5
2275#define PALMAS_USB_VBUS_INT_LATCH_CLR_ADP 0x10
2276#define PALMAS_USB_VBUS_INT_LATCH_CLR_ADP_SHIFT 4
2277#define PALMAS_USB_VBUS_INT_LATCH_CLR_VA_VBUS_VLD 0x08
2278#define PALMAS_USB_VBUS_INT_LATCH_CLR_VA_VBUS_VLD_SHIFT 3
2279#define PALMAS_USB_VBUS_INT_LATCH_CLR_VA_SESS_VLD 0x04
2280#define PALMAS_USB_VBUS_INT_LATCH_CLR_VA_SESS_VLD_SHIFT 2
2281#define PALMAS_USB_VBUS_INT_LATCH_CLR_VB_SESS_VLD 0x02
2282#define PALMAS_USB_VBUS_INT_LATCH_CLR_VB_SESS_VLD_SHIFT 1
2283#define PALMAS_USB_VBUS_INT_LATCH_CLR_VB_SESS_END 0x01
2284#define PALMAS_USB_VBUS_INT_LATCH_CLR_VB_SESS_END_SHIFT 0
2285
2286/* Bit definitions for USB_VBUS_INT_EN_LO_SET */
2287#define PALMAS_USB_VBUS_INT_EN_LO_SET_VOTG_SESS_VLD 0x80
2288#define PALMAS_USB_VBUS_INT_EN_LO_SET_VOTG_SESS_VLD_SHIFT 7
2289#define PALMAS_USB_VBUS_INT_EN_LO_SET_VADP_PRB 0x40
2290#define PALMAS_USB_VBUS_INT_EN_LO_SET_VADP_PRB_SHIFT 6
2291#define PALMAS_USB_VBUS_INT_EN_LO_SET_VADP_SNS 0x20
2292#define PALMAS_USB_VBUS_INT_EN_LO_SET_VADP_SNS_SHIFT 5
2293#define PALMAS_USB_VBUS_INT_EN_LO_SET_VA_VBUS_VLD 0x08
2294#define PALMAS_USB_VBUS_INT_EN_LO_SET_VA_VBUS_VLD_SHIFT 3
2295#define PALMAS_USB_VBUS_INT_EN_LO_SET_VA_SESS_VLD 0x04
2296#define PALMAS_USB_VBUS_INT_EN_LO_SET_VA_SESS_VLD_SHIFT 2
2297#define PALMAS_USB_VBUS_INT_EN_LO_SET_VB_SESS_VLD 0x02
2298#define PALMAS_USB_VBUS_INT_EN_LO_SET_VB_SESS_VLD_SHIFT 1
2299#define PALMAS_USB_VBUS_INT_EN_LO_SET_VB_SESS_END 0x01
2300#define PALMAS_USB_VBUS_INT_EN_LO_SET_VB_SESS_END_SHIFT 0
2301
2302/* Bit definitions for USB_VBUS_INT_EN_LO_CLR */
2303#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VOTG_SESS_VLD 0x80
2304#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VOTG_SESS_VLD_SHIFT 7
2305#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VADP_PRB 0x40
2306#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VADP_PRB_SHIFT 6
2307#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VADP_SNS 0x20
2308#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VADP_SNS_SHIFT 5
2309#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VA_VBUS_VLD 0x08
2310#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VA_VBUS_VLD_SHIFT 3
2311#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VA_SESS_VLD 0x04
2312#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VA_SESS_VLD_SHIFT 2
2313#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VB_SESS_VLD 0x02
2314#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VB_SESS_VLD_SHIFT 1
2315#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VB_SESS_END 0x01
2316#define PALMAS_USB_VBUS_INT_EN_LO_CLR_VB_SESS_END_SHIFT 0
2317
2318/* Bit definitions for USB_VBUS_INT_EN_HI_SET */
2319#define PALMAS_USB_VBUS_INT_EN_HI_SET_VOTG_SESS_VLD 0x80
2320#define PALMAS_USB_VBUS_INT_EN_HI_SET_VOTG_SESS_VLD_SHIFT 7
2321#define PALMAS_USB_VBUS_INT_EN_HI_SET_VADP_PRB 0x40
2322#define PALMAS_USB_VBUS_INT_EN_HI_SET_VADP_PRB_SHIFT 6
2323#define PALMAS_USB_VBUS_INT_EN_HI_SET_VADP_SNS 0x20
2324#define PALMAS_USB_VBUS_INT_EN_HI_SET_VADP_SNS_SHIFT 5
2325#define PALMAS_USB_VBUS_INT_EN_HI_SET_ADP 0x10
2326#define PALMAS_USB_VBUS_INT_EN_HI_SET_ADP_SHIFT 4
2327#define PALMAS_USB_VBUS_INT_EN_HI_SET_VA_VBUS_VLD 0x08
2328#define PALMAS_USB_VBUS_INT_EN_HI_SET_VA_VBUS_VLD_SHIFT 3
2329#define PALMAS_USB_VBUS_INT_EN_HI_SET_VA_SESS_VLD 0x04
2330#define PALMAS_USB_VBUS_INT_EN_HI_SET_VA_SESS_VLD_SHIFT 2
2331#define PALMAS_USB_VBUS_INT_EN_HI_SET_VB_SESS_VLD 0x02
2332#define PALMAS_USB_VBUS_INT_EN_HI_SET_VB_SESS_VLD_SHIFT 1
2333#define PALMAS_USB_VBUS_INT_EN_HI_SET_VB_SESS_END 0x01
2334#define PALMAS_USB_VBUS_INT_EN_HI_SET_VB_SESS_END_SHIFT 0
2335
2336/* Bit definitions for USB_VBUS_INT_EN_HI_CLR */
2337#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VOTG_SESS_VLD 0x80
2338#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VOTG_SESS_VLD_SHIFT 7
2339#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VADP_PRB 0x40
2340#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VADP_PRB_SHIFT 6
2341#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VADP_SNS 0x20
2342#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VADP_SNS_SHIFT 5
2343#define PALMAS_USB_VBUS_INT_EN_HI_CLR_ADP 0x10
2344#define PALMAS_USB_VBUS_INT_EN_HI_CLR_ADP_SHIFT 4
2345#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VA_VBUS_VLD 0x08
2346#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VA_VBUS_VLD_SHIFT 3
2347#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VA_SESS_VLD 0x04
2348#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VA_SESS_VLD_SHIFT 2
2349#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VB_SESS_VLD 0x02
2350#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VB_SESS_VLD_SHIFT 1
2351#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VB_SESS_END 0x01
2352#define PALMAS_USB_VBUS_INT_EN_HI_CLR_VB_SESS_END_SHIFT 0
2353
2354/* Bit definitions for USB_ID_INT_SRC */
2355#define PALMAS_USB_ID_INT_SRC_ID_FLOAT 0x10
2356#define PALMAS_USB_ID_INT_SRC_ID_FLOAT_SHIFT 4
2357#define PALMAS_USB_ID_INT_SRC_ID_A 0x08
2358#define PALMAS_USB_ID_INT_SRC_ID_A_SHIFT 3
2359#define PALMAS_USB_ID_INT_SRC_ID_B 0x04
2360#define PALMAS_USB_ID_INT_SRC_ID_B_SHIFT 2
2361#define PALMAS_USB_ID_INT_SRC_ID_C 0x02
2362#define PALMAS_USB_ID_INT_SRC_ID_C_SHIFT 1
2363#define PALMAS_USB_ID_INT_SRC_ID_GND 0x01
2364#define PALMAS_USB_ID_INT_SRC_ID_GND_SHIFT 0
2365
2366/* Bit definitions for USB_ID_INT_LATCH_SET */
2367#define PALMAS_USB_ID_INT_LATCH_SET_ID_FLOAT 0x10
2368#define PALMAS_USB_ID_INT_LATCH_SET_ID_FLOAT_SHIFT 4
2369#define PALMAS_USB_ID_INT_LATCH_SET_ID_A 0x08
2370#define PALMAS_USB_ID_INT_LATCH_SET_ID_A_SHIFT 3
2371#define PALMAS_USB_ID_INT_LATCH_SET_ID_B 0x04
2372#define PALMAS_USB_ID_INT_LATCH_SET_ID_B_SHIFT 2
2373#define PALMAS_USB_ID_INT_LATCH_SET_ID_C 0x02
2374#define PALMAS_USB_ID_INT_LATCH_SET_ID_C_SHIFT 1
2375#define PALMAS_USB_ID_INT_LATCH_SET_ID_GND 0x01
2376#define PALMAS_USB_ID_INT_LATCH_SET_ID_GND_SHIFT 0
2377
2378/* Bit definitions for USB_ID_INT_LATCH_CLR */
2379#define PALMAS_USB_ID_INT_LATCH_CLR_ID_FLOAT 0x10
2380#define PALMAS_USB_ID_INT_LATCH_CLR_ID_FLOAT_SHIFT 4
2381#define PALMAS_USB_ID_INT_LATCH_CLR_ID_A 0x08
2382#define PALMAS_USB_ID_INT_LATCH_CLR_ID_A_SHIFT 3
2383#define PALMAS_USB_ID_INT_LATCH_CLR_ID_B 0x04
2384#define PALMAS_USB_ID_INT_LATCH_CLR_ID_B_SHIFT 2
2385#define PALMAS_USB_ID_INT_LATCH_CLR_ID_C 0x02
2386#define PALMAS_USB_ID_INT_LATCH_CLR_ID_C_SHIFT 1
2387#define PALMAS_USB_ID_INT_LATCH_CLR_ID_GND 0x01
2388#define PALMAS_USB_ID_INT_LATCH_CLR_ID_GND_SHIFT 0
2389
2390/* Bit definitions for USB_ID_INT_EN_LO_SET */
2391#define PALMAS_USB_ID_INT_EN_LO_SET_ID_FLOAT 0x10
2392#define PALMAS_USB_ID_INT_EN_LO_SET_ID_FLOAT_SHIFT 4
2393#define PALMAS_USB_ID_INT_EN_LO_SET_ID_A 0x08
2394#define PALMAS_USB_ID_INT_EN_LO_SET_ID_A_SHIFT 3
2395#define PALMAS_USB_ID_INT_EN_LO_SET_ID_B 0x04
2396#define PALMAS_USB_ID_INT_EN_LO_SET_ID_B_SHIFT 2
2397#define PALMAS_USB_ID_INT_EN_LO_SET_ID_C 0x02
2398#define PALMAS_USB_ID_INT_EN_LO_SET_ID_C_SHIFT 1
2399#define PALMAS_USB_ID_INT_EN_LO_SET_ID_GND 0x01
2400#define PALMAS_USB_ID_INT_EN_LO_SET_ID_GND_SHIFT 0
2401
2402/* Bit definitions for USB_ID_INT_EN_LO_CLR */
2403#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_FLOAT 0x10
2404#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_FLOAT_SHIFT 4
2405#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_A 0x08
2406#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_A_SHIFT 3
2407#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_B 0x04
2408#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_B_SHIFT 2
2409#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_C 0x02
2410#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_C_SHIFT 1
2411#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_GND 0x01
2412#define PALMAS_USB_ID_INT_EN_LO_CLR_ID_GND_SHIFT 0
2413
2414/* Bit definitions for USB_ID_INT_EN_HI_SET */
2415#define PALMAS_USB_ID_INT_EN_HI_SET_ID_FLOAT 0x10
2416#define PALMAS_USB_ID_INT_EN_HI_SET_ID_FLOAT_SHIFT 4
2417#define PALMAS_USB_ID_INT_EN_HI_SET_ID_A 0x08
2418#define PALMAS_USB_ID_INT_EN_HI_SET_ID_A_SHIFT 3
2419#define PALMAS_USB_ID_INT_EN_HI_SET_ID_B 0x04
2420#define PALMAS_USB_ID_INT_EN_HI_SET_ID_B_SHIFT 2
2421#define PALMAS_USB_ID_INT_EN_HI_SET_ID_C 0x02
2422#define PALMAS_USB_ID_INT_EN_HI_SET_ID_C_SHIFT 1
2423#define PALMAS_USB_ID_INT_EN_HI_SET_ID_GND 0x01
2424#define PALMAS_USB_ID_INT_EN_HI_SET_ID_GND_SHIFT 0
2425
2426/* Bit definitions for USB_ID_INT_EN_HI_CLR */
2427#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_FLOAT 0x10
2428#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_FLOAT_SHIFT 4
2429#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_A 0x08
2430#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_A_SHIFT 3
2431#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_B 0x04
2432#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_B_SHIFT 2
2433#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_C 0x02
2434#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_C_SHIFT 1
2435#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_GND 0x01
2436#define PALMAS_USB_ID_INT_EN_HI_CLR_ID_GND_SHIFT 0
2437
2438/* Bit definitions for USB_OTG_ADP_CTRL */
2439#define PALMAS_USB_OTG_ADP_CTRL_ADP_EN 0x04
2440#define PALMAS_USB_OTG_ADP_CTRL_ADP_EN_SHIFT 2
2441#define PALMAS_USB_OTG_ADP_CTRL_ADP_MODE_MASK 0x03
2442#define PALMAS_USB_OTG_ADP_CTRL_ADP_MODE_SHIFT 0
2443
2444/* Bit definitions for USB_OTG_ADP_HIGH */
2445#define PALMAS_USB_OTG_ADP_HIGH_T_ADP_HIGH_MASK 0xff
2446#define PALMAS_USB_OTG_ADP_HIGH_T_ADP_HIGH_SHIFT 0
2447
2448/* Bit definitions for USB_OTG_ADP_LOW */
2449#define PALMAS_USB_OTG_ADP_LOW_T_ADP_LOW_MASK 0xff
2450#define PALMAS_USB_OTG_ADP_LOW_T_ADP_LOW_SHIFT 0
2451
2452/* Bit definitions for USB_OTG_ADP_RISE */
2453#define PALMAS_USB_OTG_ADP_RISE_T_ADP_RISE_MASK 0xff
2454#define PALMAS_USB_OTG_ADP_RISE_T_ADP_RISE_SHIFT 0
2455
2456/* Bit definitions for USB_OTG_REVISION */
2457#define PALMAS_USB_OTG_REVISION_OTG_REV 0x01
2458#define PALMAS_USB_OTG_REVISION_OTG_REV_SHIFT 0
2459
2460/* Registers for function VIBRATOR */
2461#define PALMAS_VIBRA_CTRL 0x0
2462
2463/* Bit definitions for VIBRA_CTRL */
2464#define PALMAS_VIBRA_CTRL_PWM_DUTY_SEL_MASK 0x06
2465#define PALMAS_VIBRA_CTRL_PWM_DUTY_SEL_SHIFT 1
2466#define PALMAS_VIBRA_CTRL_PWM_FREQ_SEL 0x01
2467#define PALMAS_VIBRA_CTRL_PWM_FREQ_SEL_SHIFT 0
2468
2469/* Registers for function GPIO */
2470#define PALMAS_GPIO_DATA_IN 0x0
2471#define PALMAS_GPIO_DATA_DIR 0x1
2472#define PALMAS_GPIO_DATA_OUT 0x2
2473#define PALMAS_GPIO_DEBOUNCE_EN 0x3
2474#define PALMAS_GPIO_CLEAR_DATA_OUT 0x4
2475#define PALMAS_GPIO_SET_DATA_OUT 0x5
2476#define PALMAS_PU_PD_GPIO_CTRL1 0x6
2477#define PALMAS_PU_PD_GPIO_CTRL2 0x7
2478#define PALMAS_OD_OUTPUT_GPIO_CTRL 0x8
2479
2480/* Bit definitions for GPIO_DATA_IN */
2481#define PALMAS_GPIO_DATA_IN_GPIO_7_IN 0x80
2482#define PALMAS_GPIO_DATA_IN_GPIO_7_IN_SHIFT 7
2483#define PALMAS_GPIO_DATA_IN_GPIO_6_IN 0x40
2484#define PALMAS_GPIO_DATA_IN_GPIO_6_IN_SHIFT 6
2485#define PALMAS_GPIO_DATA_IN_GPIO_5_IN 0x20
2486#define PALMAS_GPIO_DATA_IN_GPIO_5_IN_SHIFT 5
2487#define PALMAS_GPIO_DATA_IN_GPIO_4_IN 0x10
2488#define PALMAS_GPIO_DATA_IN_GPIO_4_IN_SHIFT 4
2489#define PALMAS_GPIO_DATA_IN_GPIO_3_IN 0x08
2490#define PALMAS_GPIO_DATA_IN_GPIO_3_IN_SHIFT 3
2491#define PALMAS_GPIO_DATA_IN_GPIO_2_IN 0x04
2492#define PALMAS_GPIO_DATA_IN_GPIO_2_IN_SHIFT 2
2493#define PALMAS_GPIO_DATA_IN_GPIO_1_IN 0x02
2494#define PALMAS_GPIO_DATA_IN_GPIO_1_IN_SHIFT 1
2495#define PALMAS_GPIO_DATA_IN_GPIO_0_IN 0x01
2496#define PALMAS_GPIO_DATA_IN_GPIO_0_IN_SHIFT 0
2497
2498/* Bit definitions for GPIO_DATA_DIR */
2499#define PALMAS_GPIO_DATA_DIR_GPIO_7_DIR 0x80
2500#define PALMAS_GPIO_DATA_DIR_GPIO_7_DIR_SHIFT 7
2501#define PALMAS_GPIO_DATA_DIR_GPIO_6_DIR 0x40
2502#define PALMAS_GPIO_DATA_DIR_GPIO_6_DIR_SHIFT 6
2503#define PALMAS_GPIO_DATA_DIR_GPIO_5_DIR 0x20
2504#define PALMAS_GPIO_DATA_DIR_GPIO_5_DIR_SHIFT 5
2505#define PALMAS_GPIO_DATA_DIR_GPIO_4_DIR 0x10
2506#define PALMAS_GPIO_DATA_DIR_GPIO_4_DIR_SHIFT 4
2507#define PALMAS_GPIO_DATA_DIR_GPIO_3_DIR 0x08
2508#define PALMAS_GPIO_DATA_DIR_GPIO_3_DIR_SHIFT 3
2509#define PALMAS_GPIO_DATA_DIR_GPIO_2_DIR 0x04
2510#define PALMAS_GPIO_DATA_DIR_GPIO_2_DIR_SHIFT 2
2511#define PALMAS_GPIO_DATA_DIR_GPIO_1_DIR 0x02
2512#define PALMAS_GPIO_DATA_DIR_GPIO_1_DIR_SHIFT 1
2513#define PALMAS_GPIO_DATA_DIR_GPIO_0_DIR 0x01
2514#define PALMAS_GPIO_DATA_DIR_GPIO_0_DIR_SHIFT 0
2515
2516/* Bit definitions for GPIO_DATA_OUT */
2517#define PALMAS_GPIO_DATA_OUT_GPIO_7_OUT 0x80
2518#define PALMAS_GPIO_DATA_OUT_GPIO_7_OUT_SHIFT 7
2519#define PALMAS_GPIO_DATA_OUT_GPIO_6_OUT 0x40
2520#define PALMAS_GPIO_DATA_OUT_GPIO_6_OUT_SHIFT 6
2521#define PALMAS_GPIO_DATA_OUT_GPIO_5_OUT 0x20
2522#define PALMAS_GPIO_DATA_OUT_GPIO_5_OUT_SHIFT 5
2523#define PALMAS_GPIO_DATA_OUT_GPIO_4_OUT 0x10
2524#define PALMAS_GPIO_DATA_OUT_GPIO_4_OUT_SHIFT 4
2525#define PALMAS_GPIO_DATA_OUT_GPIO_3_OUT 0x08
2526#define PALMAS_GPIO_DATA_OUT_GPIO_3_OUT_SHIFT 3
2527#define PALMAS_GPIO_DATA_OUT_GPIO_2_OUT 0x04
2528#define PALMAS_GPIO_DATA_OUT_GPIO_2_OUT_SHIFT 2
2529#define PALMAS_GPIO_DATA_OUT_GPIO_1_OUT 0x02
2530#define PALMAS_GPIO_DATA_OUT_GPIO_1_OUT_SHIFT 1
2531#define PALMAS_GPIO_DATA_OUT_GPIO_0_OUT 0x01
2532#define PALMAS_GPIO_DATA_OUT_GPIO_0_OUT_SHIFT 0
2533
2534/* Bit definitions for GPIO_DEBOUNCE_EN */
2535#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_7_DEBOUNCE_EN 0x80
2536#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_7_DEBOUNCE_EN_SHIFT 7
2537#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_6_DEBOUNCE_EN 0x40
2538#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_6_DEBOUNCE_EN_SHIFT 6
2539#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_5_DEBOUNCE_EN 0x20
2540#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_5_DEBOUNCE_EN_SHIFT 5
2541#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_4_DEBOUNCE_EN 0x10
2542#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_4_DEBOUNCE_EN_SHIFT 4
2543#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_3_DEBOUNCE_EN 0x08
2544#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_3_DEBOUNCE_EN_SHIFT 3
2545#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_2_DEBOUNCE_EN 0x04
2546#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_2_DEBOUNCE_EN_SHIFT 2
2547#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_1_DEBOUNCE_EN 0x02
2548#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_1_DEBOUNCE_EN_SHIFT 1
2549#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_0_DEBOUNCE_EN 0x01
2550#define PALMAS_GPIO_DEBOUNCE_EN_GPIO_0_DEBOUNCE_EN_SHIFT 0
2551
2552/* Bit definitions for GPIO_CLEAR_DATA_OUT */
2553#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_7_CLEAR_DATA_OUT 0x80
2554#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_7_CLEAR_DATA_OUT_SHIFT 7
2555#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_6_CLEAR_DATA_OUT 0x40
2556#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_6_CLEAR_DATA_OUT_SHIFT 6
2557#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_5_CLEAR_DATA_OUT 0x20
2558#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_5_CLEAR_DATA_OUT_SHIFT 5
2559#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_4_CLEAR_DATA_OUT 0x10
2560#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_4_CLEAR_DATA_OUT_SHIFT 4
2561#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_3_CLEAR_DATA_OUT 0x08
2562#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_3_CLEAR_DATA_OUT_SHIFT 3
2563#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_2_CLEAR_DATA_OUT 0x04
2564#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_2_CLEAR_DATA_OUT_SHIFT 2
2565#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_1_CLEAR_DATA_OUT 0x02
2566#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_1_CLEAR_DATA_OUT_SHIFT 1
2567#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_0_CLEAR_DATA_OUT 0x01
2568#define PALMAS_GPIO_CLEAR_DATA_OUT_GPIO_0_CLEAR_DATA_OUT_SHIFT 0
2569
2570/* Bit definitions for GPIO_SET_DATA_OUT */
2571#define PALMAS_GPIO_SET_DATA_OUT_GPIO_7_SET_DATA_OUT 0x80
2572#define PALMAS_GPIO_SET_DATA_OUT_GPIO_7_SET_DATA_OUT_SHIFT 7
2573#define PALMAS_GPIO_SET_DATA_OUT_GPIO_6_SET_DATA_OUT 0x40
2574#define PALMAS_GPIO_SET_DATA_OUT_GPIO_6_SET_DATA_OUT_SHIFT 6
2575#define PALMAS_GPIO_SET_DATA_OUT_GPIO_5_SET_DATA_OUT 0x20
2576#define PALMAS_GPIO_SET_DATA_OUT_GPIO_5_SET_DATA_OUT_SHIFT 5
2577#define PALMAS_GPIO_SET_DATA_OUT_GPIO_4_SET_DATA_OUT 0x10
2578#define PALMAS_GPIO_SET_DATA_OUT_GPIO_4_SET_DATA_OUT_SHIFT 4
2579#define PALMAS_GPIO_SET_DATA_OUT_GPIO_3_SET_DATA_OUT 0x08
2580#define PALMAS_GPIO_SET_DATA_OUT_GPIO_3_SET_DATA_OUT_SHIFT 3
2581#define PALMAS_GPIO_SET_DATA_OUT_GPIO_2_SET_DATA_OUT 0x04
2582#define PALMAS_GPIO_SET_DATA_OUT_GPIO_2_SET_DATA_OUT_SHIFT 2
2583#define PALMAS_GPIO_SET_DATA_OUT_GPIO_1_SET_DATA_OUT 0x02
2584#define PALMAS_GPIO_SET_DATA_OUT_GPIO_1_SET_DATA_OUT_SHIFT 1
2585#define PALMAS_GPIO_SET_DATA_OUT_GPIO_0_SET_DATA_OUT 0x01
2586#define PALMAS_GPIO_SET_DATA_OUT_GPIO_0_SET_DATA_OUT_SHIFT 0
2587
2588/* Bit definitions for PU_PD_GPIO_CTRL1 */
2589#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_3_PD 0x40
2590#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_3_PD_SHIFT 6
2591#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_2_PU 0x20
2592#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_2_PU_SHIFT 5
2593#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_2_PD 0x10
2594#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_2_PD_SHIFT 4
2595#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_1_PU 0x08
2596#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_1_PU_SHIFT 3
2597#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_1_PD 0x04
2598#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_1_PD_SHIFT 2
2599#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_0_PD 0x01
2600#define PALMAS_PU_PD_GPIO_CTRL1_GPIO_0_PD_SHIFT 0
2601
2602/* Bit definitions for PU_PD_GPIO_CTRL2 */
2603#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_7_PD 0x40
2604#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_7_PD_SHIFT 6
2605#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_6_PU 0x20
2606#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_6_PU_SHIFT 5
2607#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_6_PD 0x10
2608#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_6_PD_SHIFT 4
2609#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_5_PU 0x08
2610#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_5_PU_SHIFT 3
2611#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_5_PD 0x04
2612#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_5_PD_SHIFT 2
2613#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_4_PU 0x02
2614#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_4_PU_SHIFT 1
2615#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_4_PD 0x01
2616#define PALMAS_PU_PD_GPIO_CTRL2_GPIO_4_PD_SHIFT 0
2617
2618/* Bit definitions for OD_OUTPUT_GPIO_CTRL */
2619#define PALMAS_OD_OUTPUT_GPIO_CTRL_GPIO_5_OD 0x20
2620#define PALMAS_OD_OUTPUT_GPIO_CTRL_GPIO_5_OD_SHIFT 5
2621#define PALMAS_OD_OUTPUT_GPIO_CTRL_GPIO_2_OD 0x04
2622#define PALMAS_OD_OUTPUT_GPIO_CTRL_GPIO_2_OD_SHIFT 2
2623#define PALMAS_OD_OUTPUT_GPIO_CTRL_GPIO_1_OD 0x02
2624#define PALMAS_OD_OUTPUT_GPIO_CTRL_GPIO_1_OD_SHIFT 1
2625
2626/* Registers for function GPADC */
2627#define PALMAS_GPADC_CTRL1 0x0
2628#define PALMAS_GPADC_CTRL2 0x1
2629#define PALMAS_GPADC_RT_CTRL 0x2
2630#define PALMAS_GPADC_AUTO_CTRL 0x3
2631#define PALMAS_GPADC_STATUS 0x4
2632#define PALMAS_GPADC_RT_SELECT 0x5
2633#define PALMAS_GPADC_RT_CONV0_LSB 0x6
2634#define PALMAS_GPADC_RT_CONV0_MSB 0x7
2635#define PALMAS_GPADC_AUTO_SELECT 0x8
2636#define PALMAS_GPADC_AUTO_CONV0_LSB 0x9
2637#define PALMAS_GPADC_AUTO_CONV0_MSB 0xA
2638#define PALMAS_GPADC_AUTO_CONV1_LSB 0xB
2639#define PALMAS_GPADC_AUTO_CONV1_MSB 0xC
2640#define PALMAS_GPADC_SW_SELECT 0xD
2641#define PALMAS_GPADC_SW_CONV0_LSB 0xE
2642#define PALMAS_GPADC_SW_CONV0_MSB 0xF
2643#define PALMAS_GPADC_THRES_CONV0_LSB 0x10
2644#define PALMAS_GPADC_THRES_CONV0_MSB 0x11
2645#define PALMAS_GPADC_THRES_CONV1_LSB 0x12
2646#define PALMAS_GPADC_THRES_CONV1_MSB 0x13
2647#define PALMAS_GPADC_SMPS_ILMONITOR_EN 0x14
2648#define PALMAS_GPADC_SMPS_VSEL_MONITORING 0x15
2649
2650/* Bit definitions for GPADC_CTRL1 */
2651#define PALMAS_GPADC_CTRL1_RESERVED_MASK 0xc0
2652#define PALMAS_GPADC_CTRL1_RESERVED_SHIFT 6
2653#define PALMAS_GPADC_CTRL1_CURRENT_SRC_CH3_MASK 0x30
2654#define PALMAS_GPADC_CTRL1_CURRENT_SRC_CH3_SHIFT 4
2655#define PALMAS_GPADC_CTRL1_CURRENT_SRC_CH0_MASK 0x0c
2656#define PALMAS_GPADC_CTRL1_CURRENT_SRC_CH0_SHIFT 2
2657#define PALMAS_GPADC_CTRL1_BAT_REMOVAL_DET 0x02
2658#define PALMAS_GPADC_CTRL1_BAT_REMOVAL_DET_SHIFT 1
2659#define PALMAS_GPADC_CTRL1_GPADC_FORCE 0x01
2660#define PALMAS_GPADC_CTRL1_GPADC_FORCE_SHIFT 0
2661
2662/* Bit definitions for GPADC_CTRL2 */
2663#define PALMAS_GPADC_CTRL2_RESERVED_MASK 0x06
2664#define PALMAS_GPADC_CTRL2_RESERVED_SHIFT 1
2665
2666/* Bit definitions for GPADC_RT_CTRL */
2667#define PALMAS_GPADC_RT_CTRL_EXTEND_DELAY 0x02
2668#define PALMAS_GPADC_RT_CTRL_EXTEND_DELAY_SHIFT 1
2669#define PALMAS_GPADC_RT_CTRL_START_POLARITY 0x01
2670#define PALMAS_GPADC_RT_CTRL_START_POLARITY_SHIFT 0
2671
2672/* Bit definitions for GPADC_AUTO_CTRL */
2673#define PALMAS_GPADC_AUTO_CTRL_SHUTDOWN_CONV1 0x80
2674#define PALMAS_GPADC_AUTO_CTRL_SHUTDOWN_CONV1_SHIFT 7
2675#define PALMAS_GPADC_AUTO_CTRL_SHUTDOWN_CONV0 0x40
2676#define PALMAS_GPADC_AUTO_CTRL_SHUTDOWN_CONV0_SHIFT 6
2677#define PALMAS_GPADC_AUTO_CTRL_AUTO_CONV1_EN 0x20
2678#define PALMAS_GPADC_AUTO_CTRL_AUTO_CONV1_EN_SHIFT 5
2679#define PALMAS_GPADC_AUTO_CTRL_AUTO_CONV0_EN 0x10
2680#define PALMAS_GPADC_AUTO_CTRL_AUTO_CONV0_EN_SHIFT 4
2681#define PALMAS_GPADC_AUTO_CTRL_COUNTER_CONV_MASK 0x0f
2682#define PALMAS_GPADC_AUTO_CTRL_COUNTER_CONV_SHIFT 0
2683
2684/* Bit definitions for GPADC_STATUS */
2685#define PALMAS_GPADC_STATUS_GPADC_AVAILABLE 0x10
2686#define PALMAS_GPADC_STATUS_GPADC_AVAILABLE_SHIFT 4
2687
2688/* Bit definitions for GPADC_RT_SELECT */
2689#define PALMAS_GPADC_RT_SELECT_RT_CONV_EN 0x80
2690#define PALMAS_GPADC_RT_SELECT_RT_CONV_EN_SHIFT 7
2691#define PALMAS_GPADC_RT_SELECT_RT_CONV0_SEL_MASK 0x0f
2692#define PALMAS_GPADC_RT_SELECT_RT_CONV0_SEL_SHIFT 0
2693
2694/* Bit definitions for GPADC_RT_CONV0_LSB */
2695#define PALMAS_GPADC_RT_CONV0_LSB_RT_CONV0_LSB_MASK 0xff
2696#define PALMAS_GPADC_RT_CONV0_LSB_RT_CONV0_LSB_SHIFT 0
2697
2698/* Bit definitions for GPADC_RT_CONV0_MSB */
2699#define PALMAS_GPADC_RT_CONV0_MSB_RT_CONV0_MSB_MASK 0x0f
2700#define PALMAS_GPADC_RT_CONV0_MSB_RT_CONV0_MSB_SHIFT 0
2701
2702/* Bit definitions for GPADC_AUTO_SELECT */
2703#define PALMAS_GPADC_AUTO_SELECT_AUTO_CONV1_SEL_MASK 0xf0
2704#define PALMAS_GPADC_AUTO_SELECT_AUTO_CONV1_SEL_SHIFT 4
2705#define PALMAS_GPADC_AUTO_SELECT_AUTO_CONV0_SEL_MASK 0x0f
2706#define PALMAS_GPADC_AUTO_SELECT_AUTO_CONV0_SEL_SHIFT 0
2707
2708/* Bit definitions for GPADC_AUTO_CONV0_LSB */
2709#define PALMAS_GPADC_AUTO_CONV0_LSB_AUTO_CONV0_LSB_MASK 0xff
2710#define PALMAS_GPADC_AUTO_CONV0_LSB_AUTO_CONV0_LSB_SHIFT 0
2711
2712/* Bit definitions for GPADC_AUTO_CONV0_MSB */
2713#define PALMAS_GPADC_AUTO_CONV0_MSB_AUTO_CONV0_MSB_MASK 0x0f
2714#define PALMAS_GPADC_AUTO_CONV0_MSB_AUTO_CONV0_MSB_SHIFT 0
2715
2716/* Bit definitions for GPADC_AUTO_CONV1_LSB */
2717#define PALMAS_GPADC_AUTO_CONV1_LSB_AUTO_CONV1_LSB_MASK 0xff
2718#define PALMAS_GPADC_AUTO_CONV1_LSB_AUTO_CONV1_LSB_SHIFT 0
2719
2720/* Bit definitions for GPADC_AUTO_CONV1_MSB */
2721#define PALMAS_GPADC_AUTO_CONV1_MSB_AUTO_CONV1_MSB_MASK 0x0f
2722#define PALMAS_GPADC_AUTO_CONV1_MSB_AUTO_CONV1_MSB_SHIFT 0
2723
2724/* Bit definitions for GPADC_SW_SELECT */
2725#define PALMAS_GPADC_SW_SELECT_SW_CONV_EN 0x80
2726#define PALMAS_GPADC_SW_SELECT_SW_CONV_EN_SHIFT 7
2727#define PALMAS_GPADC_SW_SELECT_SW_START_CONV0 0x10
2728#define PALMAS_GPADC_SW_SELECT_SW_START_CONV0_SHIFT 4
2729#define PALMAS_GPADC_SW_SELECT_SW_CONV0_SEL_MASK 0x0f
2730#define PALMAS_GPADC_SW_SELECT_SW_CONV0_SEL_SHIFT 0
2731
2732/* Bit definitions for GPADC_SW_CONV0_LSB */
2733#define PALMAS_GPADC_SW_CONV0_LSB_SW_CONV0_LSB_MASK 0xff
2734#define PALMAS_GPADC_SW_CONV0_LSB_SW_CONV0_LSB_SHIFT 0
2735
2736/* Bit definitions for GPADC_SW_CONV0_MSB */
2737#define PALMAS_GPADC_SW_CONV0_MSB_SW_CONV0_MSB_MASK 0x0f
2738#define PALMAS_GPADC_SW_CONV0_MSB_SW_CONV0_MSB_SHIFT 0
2739
2740/* Bit definitions for GPADC_THRES_CONV0_LSB */
2741#define PALMAS_GPADC_THRES_CONV0_LSB_THRES_CONV0_LSB_MASK 0xff
2742#define PALMAS_GPADC_THRES_CONV0_LSB_THRES_CONV0_LSB_SHIFT 0
2743
2744/* Bit definitions for GPADC_THRES_CONV0_MSB */
2745#define PALMAS_GPADC_THRES_CONV0_MSB_THRES_CONV0_POL 0x80
2746#define PALMAS_GPADC_THRES_CONV0_MSB_THRES_CONV0_POL_SHIFT 7
2747#define PALMAS_GPADC_THRES_CONV0_MSB_THRES_CONV0_MSB_MASK 0x0f
2748#define PALMAS_GPADC_THRES_CONV0_MSB_THRES_CONV0_MSB_SHIFT 0
2749
2750/* Bit definitions for GPADC_THRES_CONV1_LSB */
2751#define PALMAS_GPADC_THRES_CONV1_LSB_THRES_CONV1_LSB_MASK 0xff
2752#define PALMAS_GPADC_THRES_CONV1_LSB_THRES_CONV1_LSB_SHIFT 0
2753
2754/* Bit definitions for GPADC_THRES_CONV1_MSB */
2755#define PALMAS_GPADC_THRES_CONV1_MSB_THRES_CONV1_POL 0x80
2756#define PALMAS_GPADC_THRES_CONV1_MSB_THRES_CONV1_POL_SHIFT 7
2757#define PALMAS_GPADC_THRES_CONV1_MSB_THRES_CONV1_MSB_MASK 0x0f
2758#define PALMAS_GPADC_THRES_CONV1_MSB_THRES_CONV1_MSB_SHIFT 0
2759
2760/* Bit definitions for GPADC_SMPS_ILMONITOR_EN */
2761#define PALMAS_GPADC_SMPS_ILMONITOR_EN_SMPS_ILMON_EN 0x20
2762#define PALMAS_GPADC_SMPS_ILMONITOR_EN_SMPS_ILMON_EN_SHIFT 5
2763#define PALMAS_GPADC_SMPS_ILMONITOR_EN_SMPS_ILMON_REXT 0x10
2764#define PALMAS_GPADC_SMPS_ILMONITOR_EN_SMPS_ILMON_REXT_SHIFT 4
2765#define PALMAS_GPADC_SMPS_ILMONITOR_EN_SMPS_ILMON_SEL_MASK 0x0f
2766#define PALMAS_GPADC_SMPS_ILMONITOR_EN_SMPS_ILMON_SEL_SHIFT 0
2767
2768/* Bit definitions for GPADC_SMPS_VSEL_MONITORING */
2769#define PALMAS_GPADC_SMPS_VSEL_MONITORING_ACTIVE_PHASE 0x80
2770#define PALMAS_GPADC_SMPS_VSEL_MONITORING_ACTIVE_PHASE_SHIFT 7
2771#define PALMAS_GPADC_SMPS_VSEL_MONITORING_SMPS_VSEL_MONITORING_MASK 0x7f
2772#define PALMAS_GPADC_SMPS_VSEL_MONITORING_SMPS_VSEL_MONITORING_SHIFT 0
2773
2774/* Registers for function GPADC */
2775#define PALMAS_GPADC_TRIM1 0x0
2776#define PALMAS_GPADC_TRIM2 0x1
2777#define PALMAS_GPADC_TRIM3 0x2
2778#define PALMAS_GPADC_TRIM4 0x3
2779#define PALMAS_GPADC_TRIM5 0x4
2780#define PALMAS_GPADC_TRIM6 0x5
2781#define PALMAS_GPADC_TRIM7 0x6
2782#define PALMAS_GPADC_TRIM8 0x7
2783#define PALMAS_GPADC_TRIM9 0x8
2784#define PALMAS_GPADC_TRIM10 0x9
2785#define PALMAS_GPADC_TRIM11 0xA
2786#define PALMAS_GPADC_TRIM12 0xB
2787#define PALMAS_GPADC_TRIM13 0xC
2788#define PALMAS_GPADC_TRIM14 0xD
2789#define PALMAS_GPADC_TRIM15 0xE
2790#define PALMAS_GPADC_TRIM16 0xF
2791
2792#endif /* __LINUX_MFD_PALMAS_H */
diff --git a/include/linux/mfd/pcf50633/core.h b/include/linux/mfd/pcf50633/core.h
index a80840752b4..50d4a047118 100644
--- a/include/linux/mfd/pcf50633/core.h
+++ b/include/linux/mfd/pcf50633/core.h
@@ -21,7 +21,6 @@
21#include <linux/mfd/pcf50633/backlight.h> 21#include <linux/mfd/pcf50633/backlight.h>
22 22
23struct pcf50633; 23struct pcf50633;
24struct regmap;
25 24
26#define PCF50633_NUM_REGULATORS 11 25#define PCF50633_NUM_REGULATORS 11
27 26
@@ -135,7 +134,7 @@ enum {
135 134
136struct pcf50633 { 135struct pcf50633 {
137 struct device *dev; 136 struct device *dev;
138 struct regmap *regmap; 137 struct i2c_client *i2c_client;
139 138
140 struct pcf50633_platform_data *pdata; 139 struct pcf50633_platform_data *pdata;
141 int irq; 140 int irq;
diff --git a/include/linux/mfd/pm8xxx/irq.h b/include/linux/mfd/pm8xxx/irq.h
index f83d6b43ecb..4b21769f448 100644
--- a/include/linux/mfd/pm8xxx/irq.h
+++ b/include/linux/mfd/pm8xxx/irq.h
@@ -37,21 +37,21 @@ struct pm_irq_chip;
37 37
38#ifdef CONFIG_MFD_PM8XXX_IRQ 38#ifdef CONFIG_MFD_PM8XXX_IRQ
39int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq); 39int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq);
40struct pm_irq_chip *pm8xxx_irq_init(struct device *dev, 40struct pm_irq_chip * __devinit pm8xxx_irq_init(struct device *dev,
41 const struct pm8xxx_irq_platform_data *pdata); 41 const struct pm8xxx_irq_platform_data *pdata);
42int pm8xxx_irq_exit(struct pm_irq_chip *chip); 42int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip);
43#else 43#else
44static inline int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq) 44static inline int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq)
45{ 45{
46 return -ENXIO; 46 return -ENXIO;
47} 47}
48static inline struct pm_irq_chip *pm8xxx_irq_init( 48static inline struct pm_irq_chip * __devinit pm8xxx_irq_init(
49 const struct device *dev, 49 const struct device *dev,
50 const struct pm8xxx_irq_platform_data *pdata) 50 const struct pm8xxx_irq_platform_data *pdata)
51{ 51{
52 return ERR_PTR(-ENXIO); 52 return ERR_PTR(-ENXIO);
53} 53}
54static inline int pm8xxx_irq_exit(struct pm_irq_chip *chip) 54static inline int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip)
55{ 55{
56 return -ENXIO; 56 return -ENXIO;
57} 57}
diff --git a/include/linux/mfd/pm8xxx/pm8921.h b/include/linux/mfd/pm8xxx/pm8921.h
index 00fa3de7659..d5517fd32d1 100644
--- a/include/linux/mfd/pm8xxx/pm8921.h
+++ b/include/linux/mfd/pm8xxx/pm8921.h
@@ -18,6 +18,7 @@
18#ifndef __MFD_PM8921_H 18#ifndef __MFD_PM8921_H
19#define __MFD_PM8921_H 19#define __MFD_PM8921_H
20 20
21#include <linux/device.h>
21#include <linux/mfd/pm8xxx/irq.h> 22#include <linux/mfd/pm8xxx/irq.h>
22 23
23#define PM8921_NR_IRQS 256 24#define PM8921_NR_IRQS 256
diff --git a/include/linux/mfd/rc5t583.h b/include/linux/mfd/rc5t583.h
index fd413ccab91..a2c61609d21 100644
--- a/include/linux/mfd/rc5t583.h
+++ b/include/linux/mfd/rc5t583.h
@@ -26,14 +26,12 @@
26 26
27#include <linux/mutex.h> 27#include <linux/mutex.h>
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/regmap.h>
30 29
31#define RC5T583_MAX_REGS 0xF8 30#define RC5T583_MAX_REGS 0xF8
32 31
33/* Maximum number of main interrupts */ 32/* Maximum number of main interrupts */
34#define MAX_MAIN_INTERRUPT 5 33#define MAX_MAIN_INTERRUPT 5
35#define RC5T583_MAX_GPEDGE_REG 2 34#define RC5T583_MAX_GPEDGE_REG 2
36#define RC5T583_MAX_INTERRUPT_EN_REGS 8
37#define RC5T583_MAX_INTERRUPT_MASK_REGS 9 35#define RC5T583_MAX_INTERRUPT_MASK_REGS 9
38 36
39/* Interrupt enable register */ 37/* Interrupt enable register */
@@ -147,28 +145,6 @@
147#define RC5T583_GPIO_MON_IOIN 0xAB 145#define RC5T583_GPIO_MON_IOIN 0xAB
148#define RC5T583_GPIO_GPOFUNC 0xAC 146#define RC5T583_GPIO_GPOFUNC 0xAC
149 147
150/* RTC registers */
151#define RC5T583_RTC_SEC 0xE0
152#define RC5T583_RTC_MIN 0xE1
153#define RC5T583_RTC_HOUR 0xE2
154#define RC5T583_RTC_WDAY 0xE3
155#define RC5T583_RTC_DAY 0xE4
156#define RC5T583_RTC_MONTH 0xE5
157#define RC5T583_RTC_YEAR 0xE6
158#define RC5T583_RTC_ADJ 0xE7
159#define RC5T583_RTC_AW_MIN 0xE8
160#define RC5T583_RTC_AW_HOUR 0xE9
161#define RC5T583_RTC_AW_WEEK 0xEA
162#define RC5T583_RTC_AD_MIN 0xEB
163#define RC5T583_RTC_AD_HOUR 0xEC
164#define RC5T583_RTC_CTL1 0xED
165#define RC5T583_RTC_CTL2 0xEE
166#define RC5T583_RTC_AY_MIN 0xF0
167#define RC5T583_RTC_AY_HOUR 0xF1
168#define RC5T583_RTC_AY_DAY 0xF2
169#define RC5T583_RTC_AY_MONTH 0xF3
170#define RC5T583_RTC_AY_YEAR 0xF4
171
172/* RICOH_RC5T583 IRQ definitions */ 148/* RICOH_RC5T583 IRQ definitions */
173enum { 149enum {
174 RC5T583_IRQ_ONKEY, 150 RC5T583_IRQ_ONKEY,
@@ -273,26 +249,6 @@ enum {
273 RC5T583_EXT_PWRREQ2_CONTROL = 0x2, 249 RC5T583_EXT_PWRREQ2_CONTROL = 0x2,
274}; 250};
275 251
276enum {
277 RC5T583_REGULATOR_DC0,
278 RC5T583_REGULATOR_DC1,
279 RC5T583_REGULATOR_DC2,
280 RC5T583_REGULATOR_DC3,
281 RC5T583_REGULATOR_LDO0,
282 RC5T583_REGULATOR_LDO1,
283 RC5T583_REGULATOR_LDO2,
284 RC5T583_REGULATOR_LDO3,
285 RC5T583_REGULATOR_LDO4,
286 RC5T583_REGULATOR_LDO5,
287 RC5T583_REGULATOR_LDO6,
288 RC5T583_REGULATOR_LDO7,
289 RC5T583_REGULATOR_LDO8,
290 RC5T583_REGULATOR_LDO9,
291
292 /* Should be last entry */
293 RC5T583_REGULATOR_MAX,
294};
295
296struct rc5t583 { 252struct rc5t583 {
297 struct device *dev; 253 struct device *dev;
298 struct regmap *regmap; 254 struct regmap *regmap;
@@ -305,7 +261,7 @@ struct rc5t583 {
305 uint8_t intc_inten_reg; 261 uint8_t intc_inten_reg;
306 262
307 /* For group interrupt bits and address */ 263 /* For group interrupt bits and address */
308 uint8_t irq_en_reg[RC5T583_MAX_INTERRUPT_EN_REGS]; 264 uint8_t irq_en_reg[RC5T583_MAX_INTERRUPT_MASK_REGS];
309 265
310 /* For gpio edge */ 266 /* For gpio edge */
311 uint8_t gpedge_reg[RC5T583_MAX_GPEDGE_REG]; 267 uint8_t gpedge_reg[RC5T583_MAX_GPEDGE_REG];
@@ -315,63 +271,22 @@ struct rc5t583 {
315 * rc5t583_platform_data: Platform data for ricoh rc5t583 pmu. 271 * rc5t583_platform_data: Platform data for ricoh rc5t583 pmu.
316 * The board specific data is provided through this structure. 272 * The board specific data is provided through this structure.
317 * @irq_base: Irq base number on which this device registers their interrupts. 273 * @irq_base: Irq base number on which this device registers their interrupts.
318 * @gpio_base: GPIO base from which gpio of this device will start.
319 * @enable_shutdown: Enable shutdown through the input pin "shutdown". 274 * @enable_shutdown: Enable shutdown through the input pin "shutdown".
320 * @regulator_deepsleep_slot: The slot number on which device goes to sleep
321 * in device sleep mode.
322 * @regulator_ext_pwr_control: External power request regulator control. The
323 * regulator output enable/disable is controlled by the external
324 * power request input state.
325 * @reg_init_data: Regulator init data.
326 */ 275 */
327 276
328struct rc5t583_platform_data { 277struct rc5t583_platform_data {
329 int irq_base; 278 int irq_base;
330 int gpio_base;
331 bool enable_shutdown; 279 bool enable_shutdown;
332 int regulator_deepsleep_slot[RC5T583_REGULATOR_MAX];
333 unsigned long regulator_ext_pwr_control[RC5T583_REGULATOR_MAX];
334 struct regulator_init_data *reg_init_data[RC5T583_REGULATOR_MAX];
335}; 280};
336 281
337static inline int rc5t583_write(struct device *dev, uint8_t reg, uint8_t val) 282int rc5t583_write(struct device *dev, u8 reg, uint8_t val);
338{ 283int rc5t583_read(struct device *dev, uint8_t reg, uint8_t *val);
339 struct rc5t583 *rc5t583 = dev_get_drvdata(dev); 284int rc5t583_set_bits(struct device *dev, unsigned int reg,
340 return regmap_write(rc5t583->regmap, reg, val); 285 unsigned int bit_mask);
341} 286int rc5t583_clear_bits(struct device *dev, unsigned int reg,
342 287 unsigned int bit_mask);
343static inline int rc5t583_read(struct device *dev, uint8_t reg, uint8_t *val) 288int rc5t583_update(struct device *dev, unsigned int reg,
344{ 289 unsigned int val, unsigned int mask);
345 struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
346 unsigned int ival;
347 int ret;
348 ret = regmap_read(rc5t583->regmap, reg, &ival);
349 if (!ret)
350 *val = (uint8_t)ival;
351 return ret;
352}
353
354static inline int rc5t583_set_bits(struct device *dev, unsigned int reg,
355 unsigned int bit_mask)
356{
357 struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
358 return regmap_update_bits(rc5t583->regmap, reg, bit_mask, bit_mask);
359}
360
361static inline int rc5t583_clear_bits(struct device *dev, unsigned int reg,
362 unsigned int bit_mask)
363{
364 struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
365 return regmap_update_bits(rc5t583->regmap, reg, bit_mask, 0);
366}
367
368static inline int rc5t583_update(struct device *dev, unsigned int reg,
369 unsigned int val, unsigned int mask)
370{
371 struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
372 return regmap_update_bits(rc5t583->regmap, reg, mask, val);
373}
374
375int rc5t583_ext_power_req_config(struct device *dev, int deepsleep_id, 290int rc5t583_ext_power_req_config(struct device *dev, int deepsleep_id,
376 int ext_pwr_req, int deepsleep_slot_nr); 291 int ext_pwr_req, int deepsleep_slot_nr);
377int rc5t583_irq_init(struct rc5t583 *rc5t583, int irq, int irq_base); 292int rc5t583_irq_init(struct rc5t583 *rc5t583, int irq, int irq_base);
diff --git a/include/linux/mfd/retu.h b/include/linux/mfd/retu.h
deleted file mode 100644
index 1e2715d5b83..00000000000
--- a/include/linux/mfd/retu.h
+++ /dev/null
@@ -1,22 +0,0 @@
1/*
2 * Retu MFD driver interface
3 *
4 * This file is subject to the terms and conditions of the GNU General
5 * Public License. See the file "COPYING" in the main directory of this
6 * archive for more details.
7 */
8
9#ifndef __LINUX_MFD_RETU_H
10#define __LINUX_MFD_RETU_H
11
12struct retu_dev;
13
14int retu_read(struct retu_dev *, u8);
15int retu_write(struct retu_dev *, u8, u16);
16
17/* Registers */
18#define RETU_REG_WATCHDOG 0x17 /* Watchdog */
19#define RETU_REG_CC1 0x0d /* Common control register 1 */
20#define RETU_REG_STATUS 0x16 /* Status register */
21
22#endif /* __LINUX_MFD_RETU_H */
diff --git a/include/linux/mfd/rtsx_common.h b/include/linux/mfd/rtsx_common.h
deleted file mode 100644
index a8d393e3066..00000000000
--- a/include/linux/mfd/rtsx_common.h
+++ /dev/null
@@ -1,48 +0,0 @@
1/* Driver for Realtek driver-based card reader
2 *
3 * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2, or (at your option) any
8 * later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, see <http://www.gnu.org/licenses/>.
17 *
18 * Author:
19 * Wei WANG <wei_wang@realsil.com.cn>
20 * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
21 */
22
23#ifndef __RTSX_COMMON_H
24#define __RTSX_COMMON_H
25
26#define DRV_NAME_RTSX_PCI "rtsx_pci"
27#define DRV_NAME_RTSX_PCI_SDMMC "rtsx_pci_sdmmc"
28#define DRV_NAME_RTSX_PCI_MS "rtsx_pci_ms"
29
30#define RTSX_REG_PAIR(addr, val) (((u32)(addr) << 16) | (u8)(val))
31
32#define RTSX_SSC_DEPTH_4M 0x01
33#define RTSX_SSC_DEPTH_2M 0x02
34#define RTSX_SSC_DEPTH_1M 0x03
35#define RTSX_SSC_DEPTH_500K 0x04
36#define RTSX_SSC_DEPTH_250K 0x05
37
38#define RTSX_SD_CARD 0
39#define RTSX_MS_CARD 1
40
41struct platform_device;
42
43struct rtsx_slot {
44 struct platform_device *p_dev;
45 void (*card_event)(struct platform_device *p_dev);
46};
47
48#endif
diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
deleted file mode 100644
index 060b721fcbf..00000000000
--- a/include/linux/mfd/rtsx_pci.h
+++ /dev/null
@@ -1,794 +0,0 @@
1/* Driver for Realtek PCI-Express card reader
2 *
3 * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2, or (at your option) any
8 * later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, see <http://www.gnu.org/licenses/>.
17 *
18 * Author:
19 * Wei WANG <wei_wang@realsil.com.cn>
20 * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
21 */
22
23#ifndef __RTSX_PCI_H
24#define __RTSX_PCI_H
25
26#include <linux/sched.h>
27#include <linux/pci.h>
28
29#include "rtsx_common.h"
30
31#define MAX_RW_REG_CNT 1024
32
33/* PCI Operation Register Address */
34#define RTSX_HCBAR 0x00
35#define RTSX_HCBCTLR 0x04
36#define RTSX_HDBAR 0x08
37#define RTSX_HDBCTLR 0x0C
38#define RTSX_HAIMR 0x10
39#define RTSX_BIPR 0x14
40#define RTSX_BIER 0x18
41
42/* Host command buffer control register */
43#define STOP_CMD (0x01 << 28)
44
45/* Host data buffer control register */
46#define SDMA_MODE 0x00
47#define ADMA_MODE (0x02 << 26)
48#define STOP_DMA (0x01 << 28)
49#define TRIG_DMA (0x01 << 31)
50
51/* Host access internal memory register */
52#define HAIMR_TRANS_START (0x01 << 31)
53#define HAIMR_READ 0x00
54#define HAIMR_WRITE (0x01 << 30)
55#define HAIMR_READ_START (HAIMR_TRANS_START | HAIMR_READ)
56#define HAIMR_WRITE_START (HAIMR_TRANS_START | HAIMR_WRITE)
57#define HAIMR_TRANS_END (HAIMR_TRANS_START)
58
59/* Bus interrupt pending register */
60#define CMD_DONE_INT (1 << 31)
61#define DATA_DONE_INT (1 << 30)
62#define TRANS_OK_INT (1 << 29)
63#define TRANS_FAIL_INT (1 << 28)
64#define XD_INT (1 << 27)
65#define MS_INT (1 << 26)
66#define SD_INT (1 << 25)
67#define GPIO0_INT (1 << 24)
68#define OC_INT (1 << 23)
69#define SD_WRITE_PROTECT (1 << 19)
70#define XD_EXIST (1 << 18)
71#define MS_EXIST (1 << 17)
72#define SD_EXIST (1 << 16)
73#define DELINK_INT GPIO0_INT
74#define MS_OC_INT (1 << 23)
75#define SD_OC_INT (1 << 22)
76
77#define CARD_INT (XD_INT | MS_INT | SD_INT)
78#define NEED_COMPLETE_INT (DATA_DONE_INT | TRANS_OK_INT | TRANS_FAIL_INT)
79#define RTSX_INT (CMD_DONE_INT | NEED_COMPLETE_INT | \
80 CARD_INT | GPIO0_INT | OC_INT)
81
82#define CARD_EXIST (XD_EXIST | MS_EXIST | SD_EXIST)
83
84/* Bus interrupt enable register */
85#define CMD_DONE_INT_EN (1 << 31)
86#define DATA_DONE_INT_EN (1 << 30)
87#define TRANS_OK_INT_EN (1 << 29)
88#define TRANS_FAIL_INT_EN (1 << 28)
89#define XD_INT_EN (1 << 27)
90#define MS_INT_EN (1 << 26)
91#define SD_INT_EN (1 << 25)
92#define GPIO0_INT_EN (1 << 24)
93#define OC_INT_EN (1 << 23)
94#define DELINK_INT_EN GPIO0_INT_EN
95#define MS_OC_INT_EN (1 << 23)
96#define SD_OC_INT_EN (1 << 22)
97
98#define READ_REG_CMD 0
99#define WRITE_REG_CMD 1
100#define CHECK_REG_CMD 2
101
102/*
103 * macros for easy use
104 */
105#define rtsx_pci_writel(pcr, reg, value) \
106 iowrite32(value, (pcr)->remap_addr + reg)
107#define rtsx_pci_readl(pcr, reg) \
108 ioread32((pcr)->remap_addr + reg)
109#define rtsx_pci_writew(pcr, reg, value) \
110 iowrite16(value, (pcr)->remap_addr + reg)
111#define rtsx_pci_readw(pcr, reg) \
112 ioread16((pcr)->remap_addr + reg)
113#define rtsx_pci_writeb(pcr, reg, value) \
114 iowrite8(value, (pcr)->remap_addr + reg)
115#define rtsx_pci_readb(pcr, reg) \
116 ioread8((pcr)->remap_addr + reg)
117
118#define rtsx_pci_read_config_byte(pcr, where, val) \
119 pci_read_config_byte((pcr)->pci, where, val)
120
121#define rtsx_pci_write_config_byte(pcr, where, val) \
122 pci_write_config_byte((pcr)->pci, where, val)
123
124#define rtsx_pci_read_config_dword(pcr, where, val) \
125 pci_read_config_dword((pcr)->pci, where, val)
126
127#define rtsx_pci_write_config_dword(pcr, where, val) \
128 pci_write_config_dword((pcr)->pci, where, val)
129
130#define STATE_TRANS_NONE 0
131#define STATE_TRANS_CMD 1
132#define STATE_TRANS_BUF 2
133#define STATE_TRANS_SG 3
134
135#define TRANS_NOT_READY 0
136#define TRANS_RESULT_OK 1
137#define TRANS_RESULT_FAIL 2
138#define TRANS_NO_DEVICE 3
139
140#define RTSX_RESV_BUF_LEN 4096
141#define HOST_CMDS_BUF_LEN 1024
142#define HOST_SG_TBL_BUF_LEN (RTSX_RESV_BUF_LEN - HOST_CMDS_BUF_LEN)
143#define HOST_SG_TBL_ITEMS (HOST_SG_TBL_BUF_LEN / 8)
144#define MAX_SG_ITEM_LEN 0x80000
145
146#define HOST_TO_DEVICE 0
147#define DEVICE_TO_HOST 1
148
149#define MAX_PHASE 31
150#define RX_TUNING_CNT 3
151
152/* SG descriptor */
153#define SG_INT 0x04
154#define SG_END 0x02
155#define SG_VALID 0x01
156
157#define SG_NO_OP 0x00
158#define SG_TRANS_DATA (0x02 << 4)
159#define SG_LINK_DESC (0x03 << 4)
160
161/* SD bank voltage */
162#define SD_IO_3V3 0
163#define SD_IO_1V8 1
164
165
166/* Card Clock Enable Register */
167#define SD_CLK_EN 0x04
168#define MS_CLK_EN 0x08
169
170/* Card Select Register */
171#define SD_MOD_SEL 2
172#define MS_MOD_SEL 3
173
174/* Card Output Enable Register */
175#define SD_OUTPUT_EN 0x04
176#define MS_OUTPUT_EN 0x08
177
178/* CARD_SHARE_MODE */
179#define CARD_SHARE_MASK 0x0F
180#define CARD_SHARE_MULTI_LUN 0x00
181#define CARD_SHARE_NORMAL 0x00
182#define CARD_SHARE_48_SD 0x04
183#define CARD_SHARE_48_MS 0x08
184/* CARD_SHARE_MODE for barossa */
185#define CARD_SHARE_BAROSSA_SD 0x01
186#define CARD_SHARE_BAROSSA_MS 0x02
187
188/* SD30_DRIVE_SEL */
189#define DRIVER_TYPE_A 0x05
190#define DRIVER_TYPE_B 0x03
191#define DRIVER_TYPE_C 0x02
192#define DRIVER_TYPE_D 0x01
193
194/* FPDCTL */
195#define SSC_POWER_DOWN 0x01
196#define SD_OC_POWER_DOWN 0x02
197#define ALL_POWER_DOWN 0x07
198#define OC_POWER_DOWN 0x06
199
200/* CLK_CTL */
201#define CHANGE_CLK 0x01
202
203/* LDO_CTL */
204#define BPP_LDO_POWB 0x03
205#define BPP_LDO_ON 0x00
206#define BPP_LDO_SUSPEND 0x02
207#define BPP_LDO_OFF 0x03
208
209/* CD_PAD_CTL */
210#define CD_DISABLE_MASK 0x07
211#define MS_CD_DISABLE 0x04
212#define SD_CD_DISABLE 0x02
213#define XD_CD_DISABLE 0x01
214#define CD_DISABLE 0x07
215#define CD_ENABLE 0x00
216#define MS_CD_EN_ONLY 0x03
217#define SD_CD_EN_ONLY 0x05
218#define XD_CD_EN_ONLY 0x06
219#define FORCE_CD_LOW_MASK 0x38
220#define FORCE_CD_XD_LOW 0x08
221#define FORCE_CD_SD_LOW 0x10
222#define FORCE_CD_MS_LOW 0x20
223#define CD_AUTO_DISABLE 0x40
224
225/* SD_STAT1 */
226#define SD_CRC7_ERR 0x80
227#define SD_CRC16_ERR 0x40
228#define SD_CRC_WRITE_ERR 0x20
229#define SD_CRC_WRITE_ERR_MASK 0x1C
230#define GET_CRC_TIME_OUT 0x02
231#define SD_TUNING_COMPARE_ERR 0x01
232
233/* SD_STAT2 */
234#define SD_RSP_80CLK_TIMEOUT 0x01
235
236/* SD_BUS_STAT */
237#define SD_CLK_TOGGLE_EN 0x80
238#define SD_CLK_FORCE_STOP 0x40
239#define SD_DAT3_STATUS 0x10
240#define SD_DAT2_STATUS 0x08
241#define SD_DAT1_STATUS 0x04
242#define SD_DAT0_STATUS 0x02
243#define SD_CMD_STATUS 0x01
244
245/* SD_PAD_CTL */
246#define SD_IO_USING_1V8 0x80
247#define SD_IO_USING_3V3 0x7F
248#define TYPE_A_DRIVING 0x00
249#define TYPE_B_DRIVING 0x01
250#define TYPE_C_DRIVING 0x02
251#define TYPE_D_DRIVING 0x03
252
253/* SD_SAMPLE_POINT_CTL */
254#define DDR_FIX_RX_DAT 0x00
255#define DDR_VAR_RX_DAT 0x80
256#define DDR_FIX_RX_DAT_EDGE 0x00
257#define DDR_FIX_RX_DAT_14_DELAY 0x40
258#define DDR_FIX_RX_CMD 0x00
259#define DDR_VAR_RX_CMD 0x20
260#define DDR_FIX_RX_CMD_POS_EDGE 0x00
261#define DDR_FIX_RX_CMD_14_DELAY 0x10
262#define SD20_RX_POS_EDGE 0x00
263#define SD20_RX_14_DELAY 0x08
264#define SD20_RX_SEL_MASK 0x08
265
266/* SD_PUSH_POINT_CTL */
267#define DDR_FIX_TX_CMD_DAT 0x00
268#define DDR_VAR_TX_CMD_DAT 0x80
269#define DDR_FIX_TX_DAT_14_TSU 0x00
270#define DDR_FIX_TX_DAT_12_TSU 0x40
271#define DDR_FIX_TX_CMD_NEG_EDGE 0x00
272#define DDR_FIX_TX_CMD_14_AHEAD 0x20
273#define SD20_TX_NEG_EDGE 0x00
274#define SD20_TX_14_AHEAD 0x10
275#define SD20_TX_SEL_MASK 0x10
276#define DDR_VAR_SDCLK_POL_SWAP 0x01
277
278/* SD_TRANSFER */
279#define SD_TRANSFER_START 0x80
280#define SD_TRANSFER_END 0x40
281#define SD_STAT_IDLE 0x20
282#define SD_TRANSFER_ERR 0x10
283/* SD Transfer Mode definition */
284#define SD_TM_NORMAL_WRITE 0x00
285#define SD_TM_AUTO_WRITE_3 0x01
286#define SD_TM_AUTO_WRITE_4 0x02
287#define SD_TM_AUTO_READ_3 0x05
288#define SD_TM_AUTO_READ_4 0x06
289#define SD_TM_CMD_RSP 0x08
290#define SD_TM_AUTO_WRITE_1 0x09
291#define SD_TM_AUTO_WRITE_2 0x0A
292#define SD_TM_NORMAL_READ 0x0C
293#define SD_TM_AUTO_READ_1 0x0D
294#define SD_TM_AUTO_READ_2 0x0E
295#define SD_TM_AUTO_TUNING 0x0F
296
297/* SD_VPTX_CTL / SD_VPRX_CTL */
298#define PHASE_CHANGE 0x80
299#define PHASE_NOT_RESET 0x40
300
301/* SD_DCMPS_TX_CTL / SD_DCMPS_RX_CTL */
302#define DCMPS_CHANGE 0x80
303#define DCMPS_CHANGE_DONE 0x40
304#define DCMPS_ERROR 0x20
305#define DCMPS_CURRENT_PHASE 0x1F
306
307/* SD Configure 1 Register */
308#define SD_CLK_DIVIDE_0 0x00
309#define SD_CLK_DIVIDE_256 0xC0
310#define SD_CLK_DIVIDE_128 0x80
311#define SD_BUS_WIDTH_1BIT 0x00
312#define SD_BUS_WIDTH_4BIT 0x01
313#define SD_BUS_WIDTH_8BIT 0x02
314#define SD_ASYNC_FIFO_NOT_RST 0x10
315#define SD_20_MODE 0x00
316#define SD_DDR_MODE 0x04
317#define SD_30_MODE 0x08
318
319#define SD_CLK_DIVIDE_MASK 0xC0
320
321/* SD_CMD_STATE */
322#define SD_CMD_IDLE 0x80
323
324/* SD_DATA_STATE */
325#define SD_DATA_IDLE 0x80
326
327/* DCM_DRP_CTL */
328#define DCM_RESET 0x08
329#define DCM_LOCKED 0x04
330#define DCM_208M 0x00
331#define DCM_TX 0x01
332#define DCM_RX 0x02
333
334/* DCM_DRP_TRIG */
335#define DRP_START 0x80
336#define DRP_DONE 0x40
337
338/* DCM_DRP_CFG */
339#define DRP_WRITE 0x80
340#define DRP_READ 0x00
341#define DCM_WRITE_ADDRESS_50 0x50
342#define DCM_WRITE_ADDRESS_51 0x51
343#define DCM_READ_ADDRESS_00 0x00
344#define DCM_READ_ADDRESS_51 0x51
345
346/* IRQSTAT0 */
347#define DMA_DONE_INT 0x80
348#define SUSPEND_INT 0x40
349#define LINK_RDY_INT 0x20
350#define LINK_DOWN_INT 0x10
351
352/* DMACTL */
353#define DMA_RST 0x80
354#define DMA_BUSY 0x04
355#define DMA_DIR_TO_CARD 0x00
356#define DMA_DIR_FROM_CARD 0x02
357#define DMA_EN 0x01
358#define DMA_128 (0 << 4)
359#define DMA_256 (1 << 4)
360#define DMA_512 (2 << 4)
361#define DMA_1024 (3 << 4)
362#define DMA_PACK_SIZE_MASK 0x30
363
364/* SSC_CTL1 */
365#define SSC_RSTB 0x80
366#define SSC_8X_EN 0x40
367#define SSC_FIX_FRAC 0x20
368#define SSC_SEL_1M 0x00
369#define SSC_SEL_2M 0x08
370#define SSC_SEL_4M 0x10
371#define SSC_SEL_8M 0x18
372
373/* SSC_CTL2 */
374#define SSC_DEPTH_MASK 0x07
375#define SSC_DEPTH_DISALBE 0x00
376#define SSC_DEPTH_4M 0x01
377#define SSC_DEPTH_2M 0x02
378#define SSC_DEPTH_1M 0x03
379#define SSC_DEPTH_500K 0x04
380#define SSC_DEPTH_250K 0x05
381
382/* System Clock Control Register */
383#define CLK_LOW_FREQ 0x01
384
385/* System Clock Divider Register */
386#define CLK_DIV_1 0x01
387#define CLK_DIV_2 0x02
388#define CLK_DIV_4 0x03
389#define CLK_DIV_8 0x04
390
391/* MS_CFG */
392#define SAMPLE_TIME_RISING 0x00
393#define SAMPLE_TIME_FALLING 0x80
394#define PUSH_TIME_DEFAULT 0x00
395#define PUSH_TIME_ODD 0x40
396#define NO_EXTEND_TOGGLE 0x00
397#define EXTEND_TOGGLE_CHK 0x20
398#define MS_BUS_WIDTH_1 0x00
399#define MS_BUS_WIDTH_4 0x10
400#define MS_BUS_WIDTH_8 0x18
401#define MS_2K_SECTOR_MODE 0x04
402#define MS_512_SECTOR_MODE 0x00
403#define MS_TOGGLE_TIMEOUT_EN 0x00
404#define MS_TOGGLE_TIMEOUT_DISEN 0x01
405#define MS_NO_CHECK_INT 0x02
406
407/* MS_TRANS_CFG */
408#define WAIT_INT 0x80
409#define NO_WAIT_INT 0x00
410#define NO_AUTO_READ_INT_REG 0x00
411#define AUTO_READ_INT_REG 0x40
412#define MS_CRC16_ERR 0x20
413#define MS_RDY_TIMEOUT 0x10
414#define MS_INT_CMDNK 0x08
415#define MS_INT_BREQ 0x04
416#define MS_INT_ERR 0x02
417#define MS_INT_CED 0x01
418
419/* MS_TRANSFER */
420#define MS_TRANSFER_START 0x80
421#define MS_TRANSFER_END 0x40
422#define MS_TRANSFER_ERR 0x20
423#define MS_BS_STATE 0x10
424#define MS_TM_READ_BYTES 0x00
425#define MS_TM_NORMAL_READ 0x01
426#define MS_TM_WRITE_BYTES 0x04
427#define MS_TM_NORMAL_WRITE 0x05
428#define MS_TM_AUTO_READ 0x08
429#define MS_TM_AUTO_WRITE 0x0C
430
431/* SD Configure 2 Register */
432#define SD_CALCULATE_CRC7 0x00
433#define SD_NO_CALCULATE_CRC7 0x80
434#define SD_CHECK_CRC16 0x00
435#define SD_NO_CHECK_CRC16 0x40
436#define SD_NO_CHECK_WAIT_CRC_TO 0x20
437#define SD_WAIT_BUSY_END 0x08
438#define SD_NO_WAIT_BUSY_END 0x00
439#define SD_CHECK_CRC7 0x00
440#define SD_NO_CHECK_CRC7 0x04
441#define SD_RSP_LEN_0 0x00
442#define SD_RSP_LEN_6 0x01
443#define SD_RSP_LEN_17 0x02
444/* SD/MMC Response Type Definition */
445#define SD_RSP_TYPE_R0 0x04
446#define SD_RSP_TYPE_R1 0x01
447#define SD_RSP_TYPE_R1b 0x09
448#define SD_RSP_TYPE_R2 0x02
449#define SD_RSP_TYPE_R3 0x05
450#define SD_RSP_TYPE_R4 0x05
451#define SD_RSP_TYPE_R5 0x01
452#define SD_RSP_TYPE_R6 0x01
453#define SD_RSP_TYPE_R7 0x01
454
455/* SD_CONFIURE3 */
456#define SD_RSP_80CLK_TIMEOUT_EN 0x01
457
458/* Card Transfer Reset Register */
459#define SPI_STOP 0x01
460#define XD_STOP 0x02
461#define SD_STOP 0x04
462#define MS_STOP 0x08
463#define SPI_CLR_ERR 0x10
464#define XD_CLR_ERR 0x20
465#define SD_CLR_ERR 0x40
466#define MS_CLR_ERR 0x80
467
468/* Card Data Source Register */
469#define PINGPONG_BUFFER 0x01
470#define RING_BUFFER 0x00
471
472/* Card Power Control Register */
473#define PMOS_STRG_MASK 0x10
474#define PMOS_STRG_800mA 0x10
475#define PMOS_STRG_400mA 0x00
476#define SD_POWER_OFF 0x03
477#define SD_PARTIAL_POWER_ON 0x01
478#define SD_POWER_ON 0x00
479#define SD_POWER_MASK 0x03
480#define MS_POWER_OFF 0x0C
481#define MS_PARTIAL_POWER_ON 0x04
482#define MS_POWER_ON 0x00
483#define MS_POWER_MASK 0x0C
484#define BPP_POWER_OFF 0x0F
485#define BPP_POWER_5_PERCENT_ON 0x0E
486#define BPP_POWER_10_PERCENT_ON 0x0C
487#define BPP_POWER_15_PERCENT_ON 0x08
488#define BPP_POWER_ON 0x00
489#define BPP_POWER_MASK 0x0F
490
491/* PWR_GATE_CTRL */
492#define PWR_GATE_EN 0x01
493#define LDO3318_PWR_MASK 0x06
494#define LDO_ON 0x00
495#define LDO_SUSPEND 0x04
496#define LDO_OFF 0x06
497
498/* CARD_CLK_SOURCE */
499#define CRC_FIX_CLK (0x00 << 0)
500#define CRC_VAR_CLK0 (0x01 << 0)
501#define CRC_VAR_CLK1 (0x02 << 0)
502#define SD30_FIX_CLK (0x00 << 2)
503#define SD30_VAR_CLK0 (0x01 << 2)
504#define SD30_VAR_CLK1 (0x02 << 2)
505#define SAMPLE_FIX_CLK (0x00 << 4)
506#define SAMPLE_VAR_CLK0 (0x01 << 4)
507#define SAMPLE_VAR_CLK1 (0x02 << 4)
508
509#define MS_CFG 0xFD40
510#define MS_TPC 0xFD41
511#define MS_TRANS_CFG 0xFD42
512#define MS_TRANSFER 0xFD43
513#define MS_INT_REG 0xFD44
514#define MS_BYTE_CNT 0xFD45
515#define MS_SECTOR_CNT_L 0xFD46
516#define MS_SECTOR_CNT_H 0xFD47
517#define MS_DBUS_H 0xFD48
518
519#define SD_CFG1 0xFDA0
520#define SD_CFG2 0xFDA1
521#define SD_CFG3 0xFDA2
522#define SD_STAT1 0xFDA3
523#define SD_STAT2 0xFDA4
524#define SD_BUS_STAT 0xFDA5
525#define SD_PAD_CTL 0xFDA6
526#define SD_SAMPLE_POINT_CTL 0xFDA7
527#define SD_PUSH_POINT_CTL 0xFDA8
528#define SD_CMD0 0xFDA9
529#define SD_CMD1 0xFDAA
530#define SD_CMD2 0xFDAB
531#define SD_CMD3 0xFDAC
532#define SD_CMD4 0xFDAD
533#define SD_CMD5 0xFDAE
534#define SD_BYTE_CNT_L 0xFDAF
535#define SD_BYTE_CNT_H 0xFDB0
536#define SD_BLOCK_CNT_L 0xFDB1
537#define SD_BLOCK_CNT_H 0xFDB2
538#define SD_TRANSFER 0xFDB3
539#define SD_CMD_STATE 0xFDB5
540#define SD_DATA_STATE 0xFDB6
541
542#define SRCTL 0xFC13
543
544#define DCM_DRP_CTL 0xFC23
545#define DCM_DRP_TRIG 0xFC24
546#define DCM_DRP_CFG 0xFC25
547#define DCM_DRP_WR_DATA_L 0xFC26
548#define DCM_DRP_WR_DATA_H 0xFC27
549#define DCM_DRP_RD_DATA_L 0xFC28
550#define DCM_DRP_RD_DATA_H 0xFC29
551#define SD_VPCLK0_CTL 0xFC2A
552#define SD_VPCLK1_CTL 0xFC2B
553#define SD_DCMPS0_CTL 0xFC2C
554#define SD_DCMPS1_CTL 0xFC2D
555#define SD_VPTX_CTL SD_VPCLK0_CTL
556#define SD_VPRX_CTL SD_VPCLK1_CTL
557#define SD_DCMPS_TX_CTL SD_DCMPS0_CTL
558#define SD_DCMPS_RX_CTL SD_DCMPS1_CTL
559#define CARD_CLK_SOURCE 0xFC2E
560
561#define CARD_PWR_CTL 0xFD50
562#define CARD_CLK_SWITCH 0xFD51
563#define CARD_SHARE_MODE 0xFD52
564#define CARD_DRIVE_SEL 0xFD53
565#define CARD_STOP 0xFD54
566#define CARD_OE 0xFD55
567#define CARD_AUTO_BLINK 0xFD56
568#define CARD_GPIO_DIR 0xFD57
569#define CARD_GPIO 0xFD58
570#define CARD_DATA_SOURCE 0xFD5B
571#define CARD_SELECT 0xFD5C
572#define SD30_DRIVE_SEL 0xFD5E
573#define CARD_CLK_EN 0xFD69
574#define SDIO_CTRL 0xFD6B
575#define CD_PAD_CTL 0xFD73
576
577#define FPDCTL 0xFC00
578#define PDINFO 0xFC01
579
580#define CLK_CTL 0xFC02
581#define CLK_DIV 0xFC03
582#define CLK_SEL 0xFC04
583
584#define SSC_DIV_N_0 0xFC0F
585#define SSC_DIV_N_1 0xFC10
586#define SSC_CTL1 0xFC11
587#define SSC_CTL2 0xFC12
588
589#define RCCTL 0xFC14
590
591#define FPGA_PULL_CTL 0xFC1D
592#define OLT_LED_CTL 0xFC1E
593#define GPIO_CTL 0xFC1F
594
595#define LDO_CTL 0xFC1E
596#define SYS_VER 0xFC32
597
598#define CARD_PULL_CTL1 0xFD60
599#define CARD_PULL_CTL2 0xFD61
600#define CARD_PULL_CTL3 0xFD62
601#define CARD_PULL_CTL4 0xFD63
602#define CARD_PULL_CTL5 0xFD64
603#define CARD_PULL_CTL6 0xFD65
604
605/* PCI Express Related Registers */
606#define IRQEN0 0xFE20
607#define IRQSTAT0 0xFE21
608#define IRQEN1 0xFE22
609#define IRQSTAT1 0xFE23
610#define TLPRIEN 0xFE24
611#define TLPRISTAT 0xFE25
612#define TLPTIEN 0xFE26
613#define TLPTISTAT 0xFE27
614#define DMATC0 0xFE28
615#define DMATC1 0xFE29
616#define DMATC2 0xFE2A
617#define DMATC3 0xFE2B
618#define DMACTL 0xFE2C
619#define BCTL 0xFE2D
620#define RBBC0 0xFE2E
621#define RBBC1 0xFE2F
622#define RBDAT 0xFE30
623#define RBCTL 0xFE34
624#define CFGADDR0 0xFE35
625#define CFGADDR1 0xFE36
626#define CFGDATA0 0xFE37
627#define CFGDATA1 0xFE38
628#define CFGDATA2 0xFE39
629#define CFGDATA3 0xFE3A
630#define CFGRWCTL 0xFE3B
631#define PHYRWCTL 0xFE3C
632#define PHYDATA0 0xFE3D
633#define PHYDATA1 0xFE3E
634#define PHYADDR 0xFE3F
635#define MSGRXDATA0 0xFE40
636#define MSGRXDATA1 0xFE41
637#define MSGRXDATA2 0xFE42
638#define MSGRXDATA3 0xFE43
639#define MSGTXDATA0 0xFE44
640#define MSGTXDATA1 0xFE45
641#define MSGTXDATA2 0xFE46
642#define MSGTXDATA3 0xFE47
643#define MSGTXCTL 0xFE48
644#define PETXCFG 0xFE49
645
646#define CDRESUMECTL 0xFE52
647#define WAKE_SEL_CTL 0xFE54
648#define PME_FORCE_CTL 0xFE56
649#define ASPM_FORCE_CTL 0xFE57
650#define PM_CLK_FORCE_CTL 0xFE58
651#define PERST_GLITCH_WIDTH 0xFE5C
652#define CHANGE_LINK_STATE 0xFE5B
653#define RESET_LOAD_REG 0xFE5E
654#define EFUSE_CONTENT 0xFE5F
655#define HOST_SLEEP_STATE 0xFE60
656#define SDIO_CFG 0xFE70
657
658#define NFTS_TX_CTRL 0xFE72
659
660#define PWR_GATE_CTRL 0xFE75
661#define PWD_SUSPEND_EN 0xFE76
662#define LDO_PWR_SEL 0xFE78
663
664#define DUMMY_REG_RESET_0 0xFE90
665
666/* Memory mapping */
667#define SRAM_BASE 0xE600
668#define RBUF_BASE 0xF400
669#define PPBUF_BASE1 0xF800
670#define PPBUF_BASE2 0xFA00
671#define IMAGE_FLAG_ADDR0 0xCE80
672#define IMAGE_FLAG_ADDR1 0xCE81
673
674#define rtsx_pci_init_cmd(pcr) ((pcr)->ci = 0)
675
676struct rtsx_pcr;
677
678struct pcr_handle {
679 struct rtsx_pcr *pcr;
680};
681
682struct pcr_ops {
683 int (*extra_init_hw)(struct rtsx_pcr *pcr);
684 int (*optimize_phy)(struct rtsx_pcr *pcr);
685 int (*turn_on_led)(struct rtsx_pcr *pcr);
686 int (*turn_off_led)(struct rtsx_pcr *pcr);
687 int (*enable_auto_blink)(struct rtsx_pcr *pcr);
688 int (*disable_auto_blink)(struct rtsx_pcr *pcr);
689 int (*card_power_on)(struct rtsx_pcr *pcr, int card);
690 int (*card_power_off)(struct rtsx_pcr *pcr, int card);
691 unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr);
692};
693
694enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN};
695
696struct rtsx_pcr {
697 struct pci_dev *pci;
698 unsigned int id;
699
700 /* pci resources */
701 unsigned long addr;
702 void __iomem *remap_addr;
703 int irq;
704
705 /* host reserved buffer */
706 void *rtsx_resv_buf;
707 dma_addr_t rtsx_resv_buf_addr;
708
709 void *host_cmds_ptr;
710 dma_addr_t host_cmds_addr;
711 int ci;
712
713 void *host_sg_tbl_ptr;
714 dma_addr_t host_sg_tbl_addr;
715 int sgi;
716
717 u32 bier;
718 char trans_result;
719
720 unsigned int card_inserted;
721 unsigned int card_removed;
722
723 struct delayed_work carddet_work;
724 struct delayed_work idle_work;
725
726 spinlock_t lock;
727 struct mutex pcr_mutex;
728 struct completion *done;
729 struct completion *finish_me;
730
731 unsigned int cur_clock;
732 bool ms_pmos;
733 bool remove_pci;
734 bool msi_en;
735
736#define EXTRA_CAPS_SD_SDR50 (1 << 0)
737#define EXTRA_CAPS_SD_SDR104 (1 << 1)
738#define EXTRA_CAPS_SD_DDR50 (1 << 2)
739#define EXTRA_CAPS_MMC_HSDDR (1 << 3)
740#define EXTRA_CAPS_MMC_HS200 (1 << 4)
741#define EXTRA_CAPS_MMC_8BIT (1 << 5)
742 u32 extra_caps;
743
744#define IC_VER_A 0
745#define IC_VER_B 1
746#define IC_VER_C 2
747#define IC_VER_D 3
748 u8 ic_version;
749
750 const u32 *sd_pull_ctl_enable_tbl;
751 const u32 *sd_pull_ctl_disable_tbl;
752 const u32 *ms_pull_ctl_enable_tbl;
753 const u32 *ms_pull_ctl_disable_tbl;
754
755 const struct pcr_ops *ops;
756 enum PDEV_STAT state;
757
758 int num_slots;
759 struct rtsx_slot *slots;
760};
761
762#define CHK_PCI_PID(pcr, pid) ((pcr)->pci->device == (pid))
763#define PCI_VID(pcr) ((pcr)->pci->vendor)
764#define PCI_PID(pcr) ((pcr)->pci->device)
765
766void rtsx_pci_start_run(struct rtsx_pcr *pcr);
767int rtsx_pci_write_register(struct rtsx_pcr *pcr, u16 addr, u8 mask, u8 data);
768int rtsx_pci_read_register(struct rtsx_pcr *pcr, u16 addr, u8 *data);
769int rtsx_pci_write_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 val);
770int rtsx_pci_read_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 *val);
771void rtsx_pci_stop_cmd(struct rtsx_pcr *pcr);
772void rtsx_pci_add_cmd(struct rtsx_pcr *pcr,
773 u8 cmd_type, u16 reg_addr, u8 mask, u8 data);
774void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr);
775int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout);
776int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist,
777 int num_sg, bool read, int timeout);
778int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len);
779int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len);
780int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card);
781int rtsx_pci_card_pull_ctl_disable(struct rtsx_pcr *pcr, int card);
782int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock,
783 u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk);
784int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card);
785int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card);
786unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr);
787void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr);
788
789static inline u8 *rtsx_pci_get_cmd_data(struct rtsx_pcr *pcr)
790{
791 return (u8 *)(pcr->host_cmds_ptr);
792}
793
794#endif
diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
deleted file mode 100644
index b50c38f8bc4..00000000000
--- a/include/linux/mfd/samsung/core.h
+++ /dev/null
@@ -1,159 +0,0 @@
1/*
2 * core.h
3 *
4 * copyright (c) 2011 Samsung Electronics Co., Ltd
5 * http://www.samsung.com
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 *
12 */
13
14#ifndef __LINUX_MFD_SEC_CORE_H
15#define __LINUX_MFD_SEC_CORE_H
16
17#define NUM_IRQ_REGS 4
18
19enum sec_device_type {
20 S5M8751X,
21 S5M8763X,
22 S5M8767X,
23 S2MPS11X,
24};
25
26/**
27 * struct sec_pmic_dev - s5m87xx master device for sub-drivers
28 * @dev: master device of the chip (can be used to access platform data)
29 * @i2c: i2c client private data for regulator
30 * @rtc: i2c client private data for rtc
31 * @iolock: mutex for serializing io access
32 * @irqlock: mutex for buslock
33 * @irq_base: base IRQ number for sec-pmic, required for IRQs
34 * @irq: generic IRQ number for s5m87xx
35 * @ono: power onoff IRQ number for s5m87xx
36 * @irq_masks_cur: currently active value
37 * @irq_masks_cache: cached hardware value
38 * @type: indicate which s5m87xx "variant" is used
39 */
40struct sec_pmic_dev {
41 struct device *dev;
42 struct regmap *regmap;
43 struct i2c_client *i2c;
44 struct i2c_client *rtc;
45 struct mutex iolock;
46 struct mutex irqlock;
47
48 int device_type;
49 int irq_base;
50 int irq;
51 struct regmap_irq_chip_data *irq_data;
52
53 int ono;
54 u8 irq_masks_cur[NUM_IRQ_REGS];
55 u8 irq_masks_cache[NUM_IRQ_REGS];
56 int type;
57 bool wakeup;
58};
59
60int sec_irq_init(struct sec_pmic_dev *sec_pmic);
61void sec_irq_exit(struct sec_pmic_dev *sec_pmic);
62int sec_irq_resume(struct sec_pmic_dev *sec_pmic);
63
64extern int sec_reg_read(struct sec_pmic_dev *sec_pmic, u8 reg, void *dest);
65extern int sec_bulk_read(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf);
66extern int sec_reg_write(struct sec_pmic_dev *sec_pmic, u8 reg, u8 value);
67extern int sec_bulk_write(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf);
68extern int sec_reg_update(struct sec_pmic_dev *sec_pmic, u8 reg, u8 val, u8 mask);
69
70struct sec_platform_data {
71 struct sec_regulator_data *regulators;
72 struct sec_opmode_data *opmode;
73 int device_type;
74 int num_regulators;
75
76 int irq_base;
77 int (*cfg_pmic_irq)(void);
78
79 int ono;
80 bool wakeup;
81 bool buck_voltage_lock;
82
83 int buck_gpios[3];
84 int buck_ds[3];
85 int buck2_voltage[8];
86 bool buck2_gpiodvs;
87 int buck3_voltage[8];
88 bool buck3_gpiodvs;
89 int buck4_voltage[8];
90 bool buck4_gpiodvs;
91
92 int buck_set1;
93 int buck_set2;
94 int buck_set3;
95 int buck2_enable;
96 int buck3_enable;
97 int buck4_enable;
98 int buck_default_idx;
99 int buck2_default_idx;
100 int buck3_default_idx;
101 int buck4_default_idx;
102
103 int buck_ramp_delay;
104
105 int buck2_ramp_delay;
106 int buck34_ramp_delay;
107 int buck5_ramp_delay;
108 int buck16_ramp_delay;
109 int buck7810_ramp_delay;
110 int buck9_ramp_delay;
111
112 bool buck2_ramp_enable;
113 bool buck3_ramp_enable;
114 bool buck4_ramp_enable;
115 bool buck6_ramp_enable;
116
117 int buck2_init;
118 int buck3_init;
119 int buck4_init;
120};
121
122/**
123 * sec_regulator_data - regulator data
124 * @id: regulator id
125 * @initdata: regulator init data (contraints, supplies, ...)
126 */
127struct sec_regulator_data {
128 int id;
129 struct regulator_init_data *initdata;
130};
131
132/*
133 * sec_opmode_data - regulator operation mode data
134 * @id: regulator id
135 * @mode: regulator operation mode
136 */
137struct sec_opmode_data {
138 int id;
139 int mode;
140};
141
142/*
143 * samsung regulator operation mode
144 * SEC_OPMODE_OFF Regulator always OFF
145 * SEC_OPMODE_ON Regulator always ON
146 * SEC_OPMODE_LOWPOWER Regulator is on in low-power mode
147 * SEC_OPMODE_SUSPEND Regulator is changed by PWREN pin
148 * If PWREN is high, regulator is on
149 * If PWREN is low, regulator is off
150 */
151
152enum sec_opmode {
153 SEC_OPMODE_OFF,
154 SEC_OPMODE_ON,
155 SEC_OPMODE_LOWPOWER,
156 SEC_OPMODE_SUSPEND,
157};
158
159#endif /* __LINUX_MFD_SEC_CORE_H */
diff --git a/include/linux/mfd/samsung/irq.h b/include/linux/mfd/samsung/irq.h
deleted file mode 100644
index d43b4f9e7fb..00000000000
--- a/include/linux/mfd/samsung/irq.h
+++ /dev/null
@@ -1,152 +0,0 @@
1/* irq.h
2 *
3 * Copyright (c) 2012 Samsung Electronics Co., Ltd
4 * http://www.samsung.com
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 */
12
13#ifndef __LINUX_MFD_SEC_IRQ_H
14#define __LINUX_MFD_SEC_IRQ_H
15
16enum s2mps11_irq {
17 S2MPS11_IRQ_PWRONF,
18 S2MPS11_IRQ_PWRONR,
19 S2MPS11_IRQ_JIGONBF,
20 S2MPS11_IRQ_JIGONBR,
21 S2MPS11_IRQ_ACOKBF,
22 S2MPS11_IRQ_ACOKBR,
23 S2MPS11_IRQ_PWRON1S,
24 S2MPS11_IRQ_MRB,
25
26 S2MPS11_IRQ_RTC60S,
27 S2MPS11_IRQ_RTCA1,
28 S2MPS11_IRQ_RTCA2,
29 S2MPS11_IRQ_SMPL,
30 S2MPS11_IRQ_RTC1S,
31 S2MPS11_IRQ_WTSR,
32
33 S2MPS11_IRQ_INT120C,
34 S2MPS11_IRQ_INT140C,
35
36 S2MPS11_IRQ_NR,
37};
38
39#define S2MPS11_IRQ_PWRONF_MASK (1 << 0)
40#define S2MPS11_IRQ_PWRONR_MASK (1 << 1)
41#define S2MPS11_IRQ_JIGONBF_MASK (1 << 2)
42#define S2MPS11_IRQ_JIGONBR_MASK (1 << 3)
43#define S2MPS11_IRQ_ACOKBF_MASK (1 << 4)
44#define S2MPS11_IRQ_ACOKBR_MASK (1 << 5)
45#define S2MPS11_IRQ_PWRON1S_MASK (1 << 6)
46#define S2MPS11_IRQ_MRB_MASK (1 << 7)
47
48#define S2MPS11_IRQ_RTC60S_MASK (1 << 0)
49#define S2MPS11_IRQ_RTCA1_MASK (1 << 1)
50#define S2MPS11_IRQ_RTCA2_MASK (1 << 2)
51#define S2MPS11_IRQ_SMPL_MASK (1 << 3)
52#define S2MPS11_IRQ_RTC1S_MASK (1 << 4)
53#define S2MPS11_IRQ_WTSR_MASK (1 << 5)
54
55#define S2MPS11_IRQ_INT120C_MASK (1 << 0)
56#define S2MPS11_IRQ_INT140C_MASK (1 << 1)
57
58enum s5m8767_irq {
59 S5M8767_IRQ_PWRR,
60 S5M8767_IRQ_PWRF,
61 S5M8767_IRQ_PWR1S,
62 S5M8767_IRQ_JIGR,
63 S5M8767_IRQ_JIGF,
64 S5M8767_IRQ_LOWBAT2,
65 S5M8767_IRQ_LOWBAT1,
66
67 S5M8767_IRQ_MRB,
68 S5M8767_IRQ_DVSOK2,
69 S5M8767_IRQ_DVSOK3,
70 S5M8767_IRQ_DVSOK4,
71
72 S5M8767_IRQ_RTC60S,
73 S5M8767_IRQ_RTCA1,
74 S5M8767_IRQ_RTCA2,
75 S5M8767_IRQ_SMPL,
76 S5M8767_IRQ_RTC1S,
77 S5M8767_IRQ_WTSR,
78
79 S5M8767_IRQ_NR,
80};
81
82#define S5M8767_IRQ_PWRR_MASK (1 << 0)
83#define S5M8767_IRQ_PWRF_MASK (1 << 1)
84#define S5M8767_IRQ_PWR1S_MASK (1 << 3)
85#define S5M8767_IRQ_JIGR_MASK (1 << 4)
86#define S5M8767_IRQ_JIGF_MASK (1 << 5)
87#define S5M8767_IRQ_LOWBAT2_MASK (1 << 6)
88#define S5M8767_IRQ_LOWBAT1_MASK (1 << 7)
89
90#define S5M8767_IRQ_MRB_MASK (1 << 2)
91#define S5M8767_IRQ_DVSOK2_MASK (1 << 3)
92#define S5M8767_IRQ_DVSOK3_MASK (1 << 4)
93#define S5M8767_IRQ_DVSOK4_MASK (1 << 5)
94
95#define S5M8767_IRQ_RTC60S_MASK (1 << 0)
96#define S5M8767_IRQ_RTCA1_MASK (1 << 1)
97#define S5M8767_IRQ_RTCA2_MASK (1 << 2)
98#define S5M8767_IRQ_SMPL_MASK (1 << 3)
99#define S5M8767_IRQ_RTC1S_MASK (1 << 4)
100#define S5M8767_IRQ_WTSR_MASK (1 << 5)
101
102enum s5m8763_irq {
103 S5M8763_IRQ_DCINF,
104 S5M8763_IRQ_DCINR,
105 S5M8763_IRQ_JIGF,
106 S5M8763_IRQ_JIGR,
107 S5M8763_IRQ_PWRONF,
108 S5M8763_IRQ_PWRONR,
109
110 S5M8763_IRQ_WTSREVNT,
111 S5M8763_IRQ_SMPLEVNT,
112 S5M8763_IRQ_ALARM1,
113 S5M8763_IRQ_ALARM0,
114
115 S5M8763_IRQ_ONKEY1S,
116 S5M8763_IRQ_TOPOFFR,
117 S5M8763_IRQ_DCINOVPR,
118 S5M8763_IRQ_CHGRSTF,
119 S5M8763_IRQ_DONER,
120 S5M8763_IRQ_CHGFAULT,
121
122 S5M8763_IRQ_LOBAT1,
123 S5M8763_IRQ_LOBAT2,
124
125 S5M8763_IRQ_NR,
126};
127
128#define S5M8763_IRQ_DCINF_MASK (1 << 2)
129#define S5M8763_IRQ_DCINR_MASK (1 << 3)
130#define S5M8763_IRQ_JIGF_MASK (1 << 4)
131#define S5M8763_IRQ_JIGR_MASK (1 << 5)
132#define S5M8763_IRQ_PWRONF_MASK (1 << 6)
133#define S5M8763_IRQ_PWRONR_MASK (1 << 7)
134
135#define S5M8763_IRQ_WTSREVNT_MASK (1 << 0)
136#define S5M8763_IRQ_SMPLEVNT_MASK (1 << 1)
137#define S5M8763_IRQ_ALARM1_MASK (1 << 2)
138#define S5M8763_IRQ_ALARM0_MASK (1 << 3)
139
140#define S5M8763_IRQ_ONKEY1S_MASK (1 << 0)
141#define S5M8763_IRQ_TOPOFFR_MASK (1 << 2)
142#define S5M8763_IRQ_DCINOVPR_MASK (1 << 3)
143#define S5M8763_IRQ_CHGRSTF_MASK (1 << 4)
144#define S5M8763_IRQ_DONER_MASK (1 << 5)
145#define S5M8763_IRQ_CHGFAULT_MASK (1 << 7)
146
147#define S5M8763_IRQ_LOBAT1_MASK (1 << 0)
148#define S5M8763_IRQ_LOBAT2_MASK (1 << 1)
149
150#define S5M8763_ENRAMP (1 << 4)
151
152#endif /* __LINUX_MFD_SEC_IRQ_H */
diff --git a/include/linux/mfd/samsung/rtc.h b/include/linux/mfd/samsung/rtc.h
deleted file mode 100644
index 71597e20cdd..00000000000
--- a/include/linux/mfd/samsung/rtc.h
+++ /dev/null
@@ -1,83 +0,0 @@
1/* rtc.h
2 *
3 * Copyright (c) 2011 Samsung Electronics Co., Ltd
4 * http://www.samsung.com
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 */
12
13#ifndef __LINUX_MFD_SEC_RTC_H
14#define __LINUX_MFD_SEC_RTC_H
15
16enum sec_rtc_reg {
17 SEC_RTC_SEC,
18 SEC_RTC_MIN,
19 SEC_RTC_HOUR,
20 SEC_RTC_WEEKDAY,
21 SEC_RTC_DATE,
22 SEC_RTC_MONTH,
23 SEC_RTC_YEAR1,
24 SEC_RTC_YEAR2,
25 SEC_ALARM0_SEC,
26 SEC_ALARM0_MIN,
27 SEC_ALARM0_HOUR,
28 SEC_ALARM0_WEEKDAY,
29 SEC_ALARM0_DATE,
30 SEC_ALARM0_MONTH,
31 SEC_ALARM0_YEAR1,
32 SEC_ALARM0_YEAR2,
33 SEC_ALARM1_SEC,
34 SEC_ALARM1_MIN,
35 SEC_ALARM1_HOUR,
36 SEC_ALARM1_WEEKDAY,
37 SEC_ALARM1_DATE,
38 SEC_ALARM1_MONTH,
39 SEC_ALARM1_YEAR1,
40 SEC_ALARM1_YEAR2,
41 SEC_ALARM0_CONF,
42 SEC_ALARM1_CONF,
43 SEC_RTC_STATUS,
44 SEC_WTSR_SMPL_CNTL,
45 SEC_RTC_UDR_CON,
46};
47
48#define RTC_I2C_ADDR (0x0C >> 1)
49
50#define HOUR_12 (1 << 7)
51#define HOUR_AMPM (1 << 6)
52#define HOUR_PM (1 << 5)
53#define ALARM0_STATUS (1 << 1)
54#define ALARM1_STATUS (1 << 2)
55#define UPDATE_AD (1 << 0)
56
57/* RTC Control Register */
58#define BCD_EN_SHIFT 0
59#define BCD_EN_MASK (1 << BCD_EN_SHIFT)
60#define MODEL24_SHIFT 1
61#define MODEL24_MASK (1 << MODEL24_SHIFT)
62/* RTC Update Register1 */
63#define RTC_UDR_SHIFT 0
64#define RTC_UDR_MASK (1 << RTC_UDR_SHIFT)
65/* RTC Hour register */
66#define HOUR_PM_SHIFT 6
67#define HOUR_PM_MASK (1 << HOUR_PM_SHIFT)
68/* RTC Alarm Enable */
69#define ALARM_ENABLE_SHIFT 7
70#define ALARM_ENABLE_MASK (1 << ALARM_ENABLE_SHIFT)
71
72enum {
73 RTC_SEC = 0,
74 RTC_MIN,
75 RTC_HOUR,
76 RTC_WEEKDAY,
77 RTC_DATE,
78 RTC_MONTH,
79 RTC_YEAR1,
80 RTC_YEAR2,
81};
82
83#endif /* __LINUX_MFD_SEC_RTC_H */
diff --git a/include/linux/mfd/samsung/s2mps11.h b/include/linux/mfd/samsung/s2mps11.h
deleted file mode 100644
index ad2252f239d..00000000000
--- a/include/linux/mfd/samsung/s2mps11.h
+++ /dev/null
@@ -1,196 +0,0 @@
1/*
2 * s2mps11.h
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd
5 * http://www.samsung.com
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 *
12 */
13
14#ifndef __LINUX_MFD_S2MPS11_H
15#define __LINUX_MFD_S2MPS11_H
16
17/* S2MPS11 registers */
18enum s2mps11_reg {
19 S2MPS11_REG_ID,
20 S2MPS11_REG_INT1,
21 S2MPS11_REG_INT2,
22 S2MPS11_REG_INT3,
23 S2MPS11_REG_INT1M,
24 S2MPS11_REG_INT2M,
25 S2MPS11_REG_INT3M,
26 S2MPS11_REG_ST1,
27 S2MPS11_REG_ST2,
28 S2MPS11_REG_OFFSRC,
29 S2MPS11_REG_PWRONSRC,
30 S2MPS11_REG_RTC_CTRL,
31 S2MPS11_REG_CTRL1,
32 S2MPS11_REG_ETC_TEST,
33 S2MPS11_REG_RSVD3,
34 S2MPS11_REG_BU_CHG,
35 S2MPS11_REG_RAMP,
36 S2MPS11_REG_RAMP_BUCK,
37 S2MPS11_REG_LDO1_8,
38 S2MPS11_REG_LDO9_16,
39 S2MPS11_REG_LDO17_24,
40 S2MPS11_REG_LDO25_32,
41 S2MPS11_REG_LDO33_38,
42 S2MPS11_REG_LDO1_8_1,
43 S2MPS11_REG_LDO9_16_1,
44 S2MPS11_REG_LDO17_24_1,
45 S2MPS11_REG_LDO25_32_1,
46 S2MPS11_REG_LDO33_38_1,
47 S2MPS11_REG_OTP_ADRL,
48 S2MPS11_REG_OTP_ADRH,
49 S2MPS11_REG_OTP_DATA,
50 S2MPS11_REG_MON1SEL,
51 S2MPS11_REG_MON2SEL,
52 S2MPS11_REG_LEE,
53 S2MPS11_REG_RSVD_NO,
54 S2MPS11_REG_UVLO,
55 S2MPS11_REG_LEE_NO,
56 S2MPS11_REG_B1CTRL1,
57 S2MPS11_REG_B1CTRL2,
58 S2MPS11_REG_B2CTRL1,
59 S2MPS11_REG_B2CTRL2,
60 S2MPS11_REG_B3CTRL1,
61 S2MPS11_REG_B3CTRL2,
62 S2MPS11_REG_B4CTRL1,
63 S2MPS11_REG_B4CTRL2,
64 S2MPS11_REG_B5CTRL1,
65 S2MPS11_REG_BUCK5_SW,
66 S2MPS11_REG_B5CTRL2,
67 S2MPS11_REG_B5CTRL3,
68 S2MPS11_REG_B5CTRL4,
69 S2MPS11_REG_B5CTRL5,
70 S2MPS11_REG_B6CTRL1,
71 S2MPS11_REG_B6CTRL2,
72 S2MPS11_REG_B7CTRL1,
73 S2MPS11_REG_B7CTRL2,
74 S2MPS11_REG_B8CTRL1,
75 S2MPS11_REG_B8CTRL2,
76 S2MPS11_REG_B9CTRL1,
77 S2MPS11_REG_B9CTRL2,
78 S2MPS11_REG_B10CTRL1,
79 S2MPS11_REG_B10CTRL2,
80 S2MPS11_REG_L1CTRL,
81 S2MPS11_REG_L2CTRL,
82 S2MPS11_REG_L3CTRL,
83 S2MPS11_REG_L4CTRL,
84 S2MPS11_REG_L5CTRL,
85 S2MPS11_REG_L6CTRL,
86 S2MPS11_REG_L7CTRL,
87 S2MPS11_REG_L8CTRL,
88 S2MPS11_REG_L9CTRL,
89 S2MPS11_REG_L10CTRL,
90 S2MPS11_REG_L11CTRL,
91 S2MPS11_REG_L12CTRL,
92 S2MPS11_REG_L13CTRL,
93 S2MPS11_REG_L14CTRL,
94 S2MPS11_REG_L15CTRL,
95 S2MPS11_REG_L16CTRL,
96 S2MPS11_REG_L17CTRL,
97 S2MPS11_REG_L18CTRL,
98 S2MPS11_REG_L19CTRL,
99 S2MPS11_REG_L20CTRL,
100 S2MPS11_REG_L21CTRL,
101 S2MPS11_REG_L22CTRL,
102 S2MPS11_REG_L23CTRL,
103 S2MPS11_REG_L24CTRL,
104 S2MPS11_REG_L25CTRL,
105 S2MPS11_REG_L26CTRL,
106 S2MPS11_REG_L27CTRL,
107 S2MPS11_REG_L28CTRL,
108 S2MPS11_REG_L29CTRL,
109 S2MPS11_REG_L30CTRL,
110 S2MPS11_REG_L31CTRL,
111 S2MPS11_REG_L32CTRL,
112 S2MPS11_REG_L33CTRL,
113 S2MPS11_REG_L34CTRL,
114 S2MPS11_REG_L35CTRL,
115 S2MPS11_REG_L36CTRL,
116 S2MPS11_REG_L37CTRL,
117 S2MPS11_REG_L38CTRL,
118};
119
120/* S2MPS11 regulator ids */
121enum s2mps11_regulators {
122 S2MPS11_LDO1,
123 S2MPS11_LDO2,
124 S2MPS11_LDO3,
125 S2MPS11_LDO4,
126 S2MPS11_LDO5,
127 S2MPS11_LDO6,
128 S2MPS11_LDO7,
129 S2MPS11_LDO8,
130 S2MPS11_LDO9,
131 S2MPS11_LDO10,
132 S2MPS11_LDO11,
133 S2MPS11_LDO12,
134 S2MPS11_LDO13,
135 S2MPS11_LDO14,
136 S2MPS11_LDO15,
137 S2MPS11_LDO16,
138 S2MPS11_LDO17,
139 S2MPS11_LDO18,
140 S2MPS11_LDO19,
141 S2MPS11_LDO20,
142 S2MPS11_LDO21,
143 S2MPS11_LDO22,
144 S2MPS11_LDO23,
145 S2MPS11_LDO24,
146 S2MPS11_LDO25,
147 S2MPS11_LDO26,
148 S2MPS11_LDO27,
149 S2MPS11_LDO28,
150 S2MPS11_LDO29,
151 S2MPS11_LDO30,
152 S2MPS11_LDO31,
153 S2MPS11_LDO32,
154 S2MPS11_LDO33,
155 S2MPS11_LDO34,
156 S2MPS11_LDO35,
157 S2MPS11_LDO36,
158 S2MPS11_LDO37,
159 S2MPS11_LDO38,
160 S2MPS11_BUCK1,
161 S2MPS11_BUCK2,
162 S2MPS11_BUCK3,
163 S2MPS11_BUCK4,
164 S2MPS11_BUCK5,
165 S2MPS11_BUCK6,
166 S2MPS11_BUCK7,
167 S2MPS11_BUCK8,
168 S2MPS11_BUCK9,
169 S2MPS11_BUCK10,
170 S2MPS11_AP_EN32KHZ,
171 S2MPS11_CP_EN32KHZ,
172 S2MPS11_BT_EN32KHZ,
173
174 S2MPS11_REG_MAX,
175};
176
177#define S2MPS11_BUCK_MIN1 600000
178#define S2MPS11_BUCK_MIN2 750000
179#define S2MPS11_BUCK_MIN3 3000000
180#define S2MPS11_LDO_MIN 800000
181#define S2MPS11_BUCK_STEP1 6250
182#define S2MPS11_BUCK_STEP2 12500
183#define S2MPS11_BUCK_STEP3 25000
184#define S2MPS11_LDO_STEP1 50000
185#define S2MPS11_LDO_STEP2 25000
186#define S2MPS11_LDO_VSEL_MASK 0x3F
187#define S2MPS11_BUCK_VSEL_MASK 0xFF
188#define S2MPS11_ENABLE_MASK (0x03 << S2MPS11_ENABLE_SHIFT)
189#define S2MPS11_ENABLE_SHIFT 0x06
190#define S2MPS11_LDO_N_VOLTAGES (S2MPS11_LDO_VSEL_MASK + 1)
191#define S2MPS11_BUCK_N_VOLTAGES (S2MPS11_BUCK_VSEL_MASK + 1)
192
193#define S2MPS11_PMIC_EN_SHIFT 6
194#define S2MPS11_REGULATOR_MAX (S2MPS11_REG_MAX - 3)
195
196#endif /* __LINUX_MFD_S2MPS11_H */
diff --git a/include/linux/mfd/samsung/s5m8763.h b/include/linux/mfd/samsung/s5m8763.h
deleted file mode 100644
index e025418e558..00000000000
--- a/include/linux/mfd/samsung/s5m8763.h
+++ /dev/null
@@ -1,96 +0,0 @@
1/* s5m8763.h
2 *
3 * Copyright (c) 2011 Samsung Electronics Co., Ltd
4 * http://www.samsung.com
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 */
12
13#ifndef __LINUX_MFD_S5M8763_H
14#define __LINUX_MFD_S5M8763_H
15
16/* S5M8763 registers */
17enum s5m8763_reg {
18 S5M8763_REG_IRQ1,
19 S5M8763_REG_IRQ2,
20 S5M8763_REG_IRQ3,
21 S5M8763_REG_IRQ4,
22 S5M8763_REG_IRQM1,
23 S5M8763_REG_IRQM2,
24 S5M8763_REG_IRQM3,
25 S5M8763_REG_IRQM4,
26 S5M8763_REG_STATUS1,
27 S5M8763_REG_STATUS2,
28 S5M8763_REG_STATUSM1,
29 S5M8763_REG_STATUSM2,
30 S5M8763_REG_CHGR1,
31 S5M8763_REG_CHGR2,
32 S5M8763_REG_LDO_ACTIVE_DISCHARGE1,
33 S5M8763_REG_LDO_ACTIVE_DISCHARGE2,
34 S5M8763_REG_BUCK_ACTIVE_DISCHARGE3,
35 S5M8763_REG_ONOFF1,
36 S5M8763_REG_ONOFF2,
37 S5M8763_REG_ONOFF3,
38 S5M8763_REG_ONOFF4,
39 S5M8763_REG_BUCK1_VOLTAGE1,
40 S5M8763_REG_BUCK1_VOLTAGE2,
41 S5M8763_REG_BUCK1_VOLTAGE3,
42 S5M8763_REG_BUCK1_VOLTAGE4,
43 S5M8763_REG_BUCK2_VOLTAGE1,
44 S5M8763_REG_BUCK2_VOLTAGE2,
45 S5M8763_REG_BUCK3,
46 S5M8763_REG_BUCK4,
47 S5M8763_REG_LDO1_LDO2,
48 S5M8763_REG_LDO3,
49 S5M8763_REG_LDO4,
50 S5M8763_REG_LDO5,
51 S5M8763_REG_LDO6,
52 S5M8763_REG_LDO7,
53 S5M8763_REG_LDO7_LDO8,
54 S5M8763_REG_LDO9_LDO10,
55 S5M8763_REG_LDO11,
56 S5M8763_REG_LDO12,
57 S5M8763_REG_LDO13,
58 S5M8763_REG_LDO14,
59 S5M8763_REG_LDO15,
60 S5M8763_REG_LDO16,
61 S5M8763_REG_BKCHR,
62 S5M8763_REG_LBCNFG1,
63 S5M8763_REG_LBCNFG2,
64};
65
66/* S5M8763 regulator ids */
67enum s5m8763_regulators {
68 S5M8763_LDO1,
69 S5M8763_LDO2,
70 S5M8763_LDO3,
71 S5M8763_LDO4,
72 S5M8763_LDO5,
73 S5M8763_LDO6,
74 S5M8763_LDO7,
75 S5M8763_LDO8,
76 S5M8763_LDO9,
77 S5M8763_LDO10,
78 S5M8763_LDO11,
79 S5M8763_LDO12,
80 S5M8763_LDO13,
81 S5M8763_LDO14,
82 S5M8763_LDO15,
83 S5M8763_LDO16,
84 S5M8763_BUCK1,
85 S5M8763_BUCK2,
86 S5M8763_BUCK3,
87 S5M8763_BUCK4,
88 S5M8763_AP_EN32KHZ,
89 S5M8763_CP_EN32KHZ,
90 S5M8763_ENCHGVI,
91 S5M8763_ESAFEUSB1,
92 S5M8763_ESAFEUSB2,
93};
94
95#define S5M8763_ENRAMP (1 << 4)
96#endif /* __LINUX_MFD_S5M8763_H */
diff --git a/include/linux/mfd/samsung/s5m8767.h b/include/linux/mfd/samsung/s5m8767.h
deleted file mode 100644
index 306a95fc558..00000000000
--- a/include/linux/mfd/samsung/s5m8767.h
+++ /dev/null
@@ -1,188 +0,0 @@
1/* s5m8767.h
2 *
3 * Copyright (c) 2011 Samsung Electronics Co., Ltd
4 * http://www.samsung.com
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 *
11 */
12
13#ifndef __LINUX_MFD_S5M8767_H
14#define __LINUX_MFD_S5M8767_H
15
16/* S5M8767 registers */
17enum s5m8767_reg {
18 S5M8767_REG_ID,
19 S5M8767_REG_INT1,
20 S5M8767_REG_INT2,
21 S5M8767_REG_INT3,
22 S5M8767_REG_INT1M,
23 S5M8767_REG_INT2M,
24 S5M8767_REG_INT3M,
25 S5M8767_REG_STATUS1,
26 S5M8767_REG_STATUS2,
27 S5M8767_REG_STATUS3,
28 S5M8767_REG_CTRL1,
29 S5M8767_REG_CTRL2,
30 S5M8767_REG_LOWBAT1,
31 S5M8767_REG_LOWBAT2,
32 S5M8767_REG_BUCHG,
33 S5M8767_REG_DVSRAMP,
34 S5M8767_REG_DVSTIMER2 = 0x10,
35 S5M8767_REG_DVSTIMER3,
36 S5M8767_REG_DVSTIMER4,
37 S5M8767_REG_LDO1,
38 S5M8767_REG_LDO2,
39 S5M8767_REG_LDO3,
40 S5M8767_REG_LDO4,
41 S5M8767_REG_LDO5,
42 S5M8767_REG_LDO6,
43 S5M8767_REG_LDO7,
44 S5M8767_REG_LDO8,
45 S5M8767_REG_LDO9,
46 S5M8767_REG_LDO10,
47 S5M8767_REG_LDO11,
48 S5M8767_REG_LDO12,
49 S5M8767_REG_LDO13,
50 S5M8767_REG_LDO14 = 0x20,
51 S5M8767_REG_LDO15,
52 S5M8767_REG_LDO16,
53 S5M8767_REG_LDO17,
54 S5M8767_REG_LDO18,
55 S5M8767_REG_LDO19,
56 S5M8767_REG_LDO20,
57 S5M8767_REG_LDO21,
58 S5M8767_REG_LDO22,
59 S5M8767_REG_LDO23,
60 S5M8767_REG_LDO24,
61 S5M8767_REG_LDO25,
62 S5M8767_REG_LDO26,
63 S5M8767_REG_LDO27,
64 S5M8767_REG_LDO28,
65 S5M8767_REG_UVLO = 0x31,
66 S5M8767_REG_BUCK1CTRL1,
67 S5M8767_REG_BUCK1CTRL2,
68 S5M8767_REG_BUCK2CTRL,
69 S5M8767_REG_BUCK2DVS1,
70 S5M8767_REG_BUCK2DVS2,
71 S5M8767_REG_BUCK2DVS3,
72 S5M8767_REG_BUCK2DVS4,
73 S5M8767_REG_BUCK2DVS5,
74 S5M8767_REG_BUCK2DVS6,
75 S5M8767_REG_BUCK2DVS7,
76 S5M8767_REG_BUCK2DVS8,
77 S5M8767_REG_BUCK3CTRL,
78 S5M8767_REG_BUCK3DVS1,
79 S5M8767_REG_BUCK3DVS2,
80 S5M8767_REG_BUCK3DVS3,
81 S5M8767_REG_BUCK3DVS4,
82 S5M8767_REG_BUCK3DVS5,
83 S5M8767_REG_BUCK3DVS6,
84 S5M8767_REG_BUCK3DVS7,
85 S5M8767_REG_BUCK3DVS8,
86 S5M8767_REG_BUCK4CTRL,
87 S5M8767_REG_BUCK4DVS1,
88 S5M8767_REG_BUCK4DVS2,
89 S5M8767_REG_BUCK4DVS3,
90 S5M8767_REG_BUCK4DVS4,
91 S5M8767_REG_BUCK4DVS5,
92 S5M8767_REG_BUCK4DVS6,
93 S5M8767_REG_BUCK4DVS7,
94 S5M8767_REG_BUCK4DVS8,
95 S5M8767_REG_BUCK5CTRL1,
96 S5M8767_REG_BUCK5CTRL2,
97 S5M8767_REG_BUCK5CTRL3,
98 S5M8767_REG_BUCK5CTRL4,
99 S5M8767_REG_BUCK5CTRL5,
100 S5M8767_REG_BUCK6CTRL1,
101 S5M8767_REG_BUCK6CTRL2,
102 S5M8767_REG_BUCK7CTRL1,
103 S5M8767_REG_BUCK7CTRL2,
104 S5M8767_REG_BUCK8CTRL1,
105 S5M8767_REG_BUCK8CTRL2,
106 S5M8767_REG_BUCK9CTRL1,
107 S5M8767_REG_BUCK9CTRL2,
108 S5M8767_REG_LDO1CTRL,
109 S5M8767_REG_LDO2_1CTRL,
110 S5M8767_REG_LDO2_2CTRL,
111 S5M8767_REG_LDO2_3CTRL,
112 S5M8767_REG_LDO2_4CTRL,
113 S5M8767_REG_LDO3CTRL,
114 S5M8767_REG_LDO4CTRL,
115 S5M8767_REG_LDO5CTRL,
116 S5M8767_REG_LDO6CTRL,
117 S5M8767_REG_LDO7CTRL,
118 S5M8767_REG_LDO8CTRL,
119 S5M8767_REG_LDO9CTRL,
120 S5M8767_REG_LDO10CTRL,
121 S5M8767_REG_LDO11CTRL,
122 S5M8767_REG_LDO12CTRL,
123 S5M8767_REG_LDO13CTRL,
124 S5M8767_REG_LDO14CTRL,
125 S5M8767_REG_LDO15CTRL,
126 S5M8767_REG_LDO16CTRL,
127 S5M8767_REG_LDO17CTRL,
128 S5M8767_REG_LDO18CTRL,
129 S5M8767_REG_LDO19CTRL,
130 S5M8767_REG_LDO20CTRL,
131 S5M8767_REG_LDO21CTRL,
132 S5M8767_REG_LDO22CTRL,
133 S5M8767_REG_LDO23CTRL,
134 S5M8767_REG_LDO24CTRL,
135 S5M8767_REG_LDO25CTRL,
136 S5M8767_REG_LDO26CTRL,
137 S5M8767_REG_LDO27CTRL,
138 S5M8767_REG_LDO28CTRL,
139};
140
141/* S5M8767 regulator ids */
142enum s5m8767_regulators {
143 S5M8767_LDO1,
144 S5M8767_LDO2,
145 S5M8767_LDO3,
146 S5M8767_LDO4,
147 S5M8767_LDO5,
148 S5M8767_LDO6,
149 S5M8767_LDO7,
150 S5M8767_LDO8,
151 S5M8767_LDO9,
152 S5M8767_LDO10,
153 S5M8767_LDO11,
154 S5M8767_LDO12,
155 S5M8767_LDO13,
156 S5M8767_LDO14,
157 S5M8767_LDO15,
158 S5M8767_LDO16,
159 S5M8767_LDO17,
160 S5M8767_LDO18,
161 S5M8767_LDO19,
162 S5M8767_LDO20,
163 S5M8767_LDO21,
164 S5M8767_LDO22,
165 S5M8767_LDO23,
166 S5M8767_LDO24,
167 S5M8767_LDO25,
168 S5M8767_LDO26,
169 S5M8767_LDO27,
170 S5M8767_LDO28,
171 S5M8767_BUCK1,
172 S5M8767_BUCK2,
173 S5M8767_BUCK3,
174 S5M8767_BUCK4,
175 S5M8767_BUCK5,
176 S5M8767_BUCK6,
177 S5M8767_BUCK7,
178 S5M8767_BUCK8,
179 S5M8767_BUCK9,
180 S5M8767_AP_EN32KHZ,
181 S5M8767_CP_EN32KHZ,
182
183 S5M8767_REG_MAX,
184};
185
186#define S5M8767_ENCTRL_SHIFT 6
187
188#endif /* __LINUX_MFD_S5M8767_H */
diff --git a/include/linux/mfd/smsc.h b/include/linux/mfd/smsc.h
deleted file mode 100644
index 9747b29f356..00000000000
--- a/include/linux/mfd/smsc.h
+++ /dev/null
@@ -1,109 +0,0 @@
1/*
2 * SMSC ECE1099
3 *
4 * Copyright 2012 Texas Instruments Inc.
5 *
6 * Author: Sourav Poddar <sourav.poddar@ti.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
15#ifndef __LINUX_MFD_SMSC_H
16#define __LINUX_MFD_SMSC_H
17
18#include <linux/regmap.h>
19
20#define SMSC_ID_ECE1099 1
21#define SMSC_NUM_CLIENTS 2
22
23#define SMSC_BASE_ADDR 0x38
24#define OMAP_GPIO_SMSC_IRQ 151
25
26#define SMSC_MAXGPIO 32
27#define SMSC_BANK(offs) ((offs) >> 3)
28#define SMSC_BIT(offs) (1u << ((offs) & 0x7))
29
30struct smsc {
31 struct device *dev;
32 struct i2c_client *i2c_clients[SMSC_NUM_CLIENTS];
33 struct regmap *regmap;
34 int clk;
35 /* Stored chip id */
36 int id;
37};
38
39struct smsc_gpio;
40struct smsc_keypad;
41
42static inline int smsc_read(struct device *child, unsigned int reg,
43 unsigned int *dest)
44{
45 struct smsc *smsc = dev_get_drvdata(child->parent);
46
47 return regmap_read(smsc->regmap, reg, dest);
48}
49
50static inline int smsc_write(struct device *child, unsigned int reg,
51 unsigned int value)
52{
53 struct smsc *smsc = dev_get_drvdata(child->parent);
54
55 return regmap_write(smsc->regmap, reg, value);
56}
57
58/* Registers for SMSC */
59#define SMSC_RESET 0xF5
60#define SMSC_GRP_INT 0xF9
61#define SMSC_CLK_CTRL 0xFA
62#define SMSC_WKUP_CTRL 0xFB
63#define SMSC_DEV_ID 0xFC
64#define SMSC_DEV_REV 0xFD
65#define SMSC_VEN_ID_L 0xFE
66#define SMSC_VEN_ID_H 0xFF
67
68/* CLK VALUE */
69#define SMSC_CLK_VALUE 0x13
70
71/* Registers for function GPIO INPUT */
72#define SMSC_GPIO_DATA_IN_START 0x00
73
74/* Registers for function GPIO OUPUT */
75#define SMSC_GPIO_DATA_OUT_START 0x05
76
77/* Definitions for SMSC GPIO CONFIGURATION REGISTER*/
78#define SMSC_GPIO_INPUT_LOW 0x01
79#define SMSC_GPIO_INPUT_RISING 0x09
80#define SMSC_GPIO_INPUT_FALLING 0x11
81#define SMSC_GPIO_INPUT_BOTH_EDGE 0x19
82#define SMSC_GPIO_OUTPUT_PP 0x21
83#define SMSC_GPIO_OUTPUT_OP 0x31
84
85#define GRP_INT_STAT 0xf9
86#define SMSC_GPI_INT 0x0f
87#define SMSC_CFG_START 0x0A
88
89/* Registers for SMSC GPIO INTERRUPT STATUS REGISTER*/
90#define SMSC_GPIO_INT_STAT_START 0x32
91
92/* Registers for SMSC GPIO INTERRUPT MASK REGISTER*/
93#define SMSC_GPIO_INT_MASK_START 0x37
94
95/* Registers for SMSC function KEYPAD*/
96#define SMSC_KP_OUT 0x40
97#define SMSC_KP_IN 0x41
98#define SMSC_KP_INT_STAT 0x42
99#define SMSC_KP_INT_MASK 0x43
100
101/* Definitions for keypad */
102#define SMSC_KP_KSO 0x70
103#define SMSC_KP_KSI 0x51
104#define SMSC_KSO_ALL_LOW 0x20
105#define SMSC_KP_SET_LOW_PWR 0x0B
106#define SMSC_KP_SET_HIGH 0xFF
107#define SMSC_KSO_EVAL 0x00
108
109#endif /* __LINUX_MFD_SMSC_H */
diff --git a/include/linux/mfd/sta2x11-mfd.h b/include/linux/mfd/sta2x11-mfd.h
deleted file mode 100644
index 9a855ac11cb..00000000000
--- a/include/linux/mfd/sta2x11-mfd.h
+++ /dev/null
@@ -1,518 +0,0 @@
1/*
2 * Copyright (c) 2009-2011 Wind River Systems, Inc.
3 * Copyright (c) 2011 ST Microelectronics (Alessandro Rubini)
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 * See the GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * The STMicroelectronics ConneXt (STA2X11) chip has several unrelated
19 * functions in one PCI endpoint functions. This driver simply
20 * registers the platform devices in this iomemregion and exports a few
21 * functions to access common registers
22 */
23
24#ifndef __STA2X11_MFD_H
25#define __STA2X11_MFD_H
26#include <linux/types.h>
27#include <linux/pci.h>
28
29enum sta2x11_mfd_plat_dev {
30 sta2x11_sctl = 0,
31 sta2x11_gpio,
32 sta2x11_scr,
33 sta2x11_time,
34 sta2x11_apbreg,
35 sta2x11_apb_soc_regs,
36 sta2x11_vic,
37 sta2x11_n_mfd_plat_devs,
38};
39
40#define STA2X11_MFD_SCTL_NAME "sta2x11-sctl"
41#define STA2X11_MFD_GPIO_NAME "sta2x11-gpio"
42#define STA2X11_MFD_SCR_NAME "sta2x11-scr"
43#define STA2X11_MFD_TIME_NAME "sta2x11-time"
44#define STA2X11_MFD_APBREG_NAME "sta2x11-apbreg"
45#define STA2X11_MFD_APB_SOC_REGS_NAME "sta2x11-apb-soc-regs"
46#define STA2X11_MFD_VIC_NAME "sta2x11-vic"
47
48extern u32
49__sta2x11_mfd_mask(struct pci_dev *, u32, u32, u32, enum sta2x11_mfd_plat_dev);
50
51/*
52 * The MFD PCI block includes the GPIO peripherals and other register blocks.
53 * For GPIO, we have 32*4 bits (I use "gsta" for "gpio sta2x11".)
54 */
55#define GSTA_GPIO_PER_BLOCK 32
56#define GSTA_NR_BLOCKS 4
57#define GSTA_NR_GPIO (GSTA_GPIO_PER_BLOCK * GSTA_NR_BLOCKS)
58
59/* Pinconfig is set by the board definition: altfunc, pull-up, pull-down */
60struct sta2x11_gpio_pdata {
61 unsigned pinconfig[GSTA_NR_GPIO];
62};
63
64/* Macros below lifted from sh_pfc.h, with minor differences */
65#define PINMUX_TYPE_NONE 0
66#define PINMUX_TYPE_FUNCTION 1
67#define PINMUX_TYPE_OUTPUT_LOW 2
68#define PINMUX_TYPE_OUTPUT_HIGH 3
69#define PINMUX_TYPE_INPUT 4
70#define PINMUX_TYPE_INPUT_PULLUP 5
71#define PINMUX_TYPE_INPUT_PULLDOWN 6
72
73/* Give names to GPIO pins, like PXA does, taken from the manual */
74#define STA2X11_GPIO0 0
75#define STA2X11_GPIO1 1
76#define STA2X11_GPIO2 2
77#define STA2X11_GPIO3 3
78#define STA2X11_GPIO4 4
79#define STA2X11_GPIO5 5
80#define STA2X11_GPIO6 6
81#define STA2X11_GPIO7 7
82#define STA2X11_GPIO8_RGBOUT_RED7 8
83#define STA2X11_GPIO9_RGBOUT_RED6 9
84#define STA2X11_GPIO10_RGBOUT_RED5 10
85#define STA2X11_GPIO11_RGBOUT_RED4 11
86#define STA2X11_GPIO12_RGBOUT_RED3 12
87#define STA2X11_GPIO13_RGBOUT_RED2 13
88#define STA2X11_GPIO14_RGBOUT_RED1 14
89#define STA2X11_GPIO15_RGBOUT_RED0 15
90#define STA2X11_GPIO16_RGBOUT_GREEN7 16
91#define STA2X11_GPIO17_RGBOUT_GREEN6 17
92#define STA2X11_GPIO18_RGBOUT_GREEN5 18
93#define STA2X11_GPIO19_RGBOUT_GREEN4 19
94#define STA2X11_GPIO20_RGBOUT_GREEN3 20
95#define STA2X11_GPIO21_RGBOUT_GREEN2 21
96#define STA2X11_GPIO22_RGBOUT_GREEN1 22
97#define STA2X11_GPIO23_RGBOUT_GREEN0 23
98#define STA2X11_GPIO24_RGBOUT_BLUE7 24
99#define STA2X11_GPIO25_RGBOUT_BLUE6 25
100#define STA2X11_GPIO26_RGBOUT_BLUE5 26
101#define STA2X11_GPIO27_RGBOUT_BLUE4 27
102#define STA2X11_GPIO28_RGBOUT_BLUE3 28
103#define STA2X11_GPIO29_RGBOUT_BLUE2 29
104#define STA2X11_GPIO30_RGBOUT_BLUE1 30
105#define STA2X11_GPIO31_RGBOUT_BLUE0 31
106#define STA2X11_GPIO32_RGBOUT_VSYNCH 32
107#define STA2X11_GPIO33_RGBOUT_HSYNCH 33
108#define STA2X11_GPIO34_RGBOUT_DEN 34
109#define STA2X11_GPIO35_ETH_CRS_DV 35
110#define STA2X11_GPIO36_ETH_TXD1 36
111#define STA2X11_GPIO37_ETH_TXD0 37
112#define STA2X11_GPIO38_ETH_TX_EN 38
113#define STA2X11_GPIO39_MDIO 39
114#define STA2X11_GPIO40_ETH_REF_CLK 40
115#define STA2X11_GPIO41_ETH_RXD1 41
116#define STA2X11_GPIO42_ETH_RXD0 42
117#define STA2X11_GPIO43_MDC 43
118#define STA2X11_GPIO44_CAN_TX 44
119#define STA2X11_GPIO45_CAN_RX 45
120#define STA2X11_GPIO46_MLB_DAT 46
121#define STA2X11_GPIO47_MLB_SIG 47
122#define STA2X11_GPIO48_SPI0_CLK 48
123#define STA2X11_GPIO49_SPI0_TXD 49
124#define STA2X11_GPIO50_SPI0_RXD 50
125#define STA2X11_GPIO51_SPI0_FRM 51
126#define STA2X11_GPIO52_SPI1_CLK 52
127#define STA2X11_GPIO53_SPI1_TXD 53
128#define STA2X11_GPIO54_SPI1_RXD 54
129#define STA2X11_GPIO55_SPI1_FRM 55
130#define STA2X11_GPIO56_SPI2_CLK 56
131#define STA2X11_GPIO57_SPI2_TXD 57
132#define STA2X11_GPIO58_SPI2_RXD 58
133#define STA2X11_GPIO59_SPI2_FRM 59
134#define STA2X11_GPIO60_I2C0_SCL 60
135#define STA2X11_GPIO61_I2C0_SDA 61
136#define STA2X11_GPIO62_I2C1_SCL 62
137#define STA2X11_GPIO63_I2C1_SDA 63
138#define STA2X11_GPIO64_I2C2_SCL 64
139#define STA2X11_GPIO65_I2C2_SDA 65
140#define STA2X11_GPIO66_I2C3_SCL 66
141#define STA2X11_GPIO67_I2C3_SDA 67
142#define STA2X11_GPIO68_MSP0_RCK 68
143#define STA2X11_GPIO69_MSP0_RXD 69
144#define STA2X11_GPIO70_MSP0_RFS 70
145#define STA2X11_GPIO71_MSP0_TCK 71
146#define STA2X11_GPIO72_MSP0_TXD 72
147#define STA2X11_GPIO73_MSP0_TFS 73
148#define STA2X11_GPIO74_MSP0_SCK 74
149#define STA2X11_GPIO75_MSP1_CK 75
150#define STA2X11_GPIO76_MSP1_RXD 76
151#define STA2X11_GPIO77_MSP1_FS 77
152#define STA2X11_GPIO78_MSP1_TXD 78
153#define STA2X11_GPIO79_MSP2_CK 79
154#define STA2X11_GPIO80_MSP2_RXD 80
155#define STA2X11_GPIO81_MSP2_FS 81
156#define STA2X11_GPIO82_MSP2_TXD 82
157#define STA2X11_GPIO83_MSP3_CK 83
158#define STA2X11_GPIO84_MSP3_RXD 84
159#define STA2X11_GPIO85_MSP3_FS 85
160#define STA2X11_GPIO86_MSP3_TXD 86
161#define STA2X11_GPIO87_MSP4_CK 87
162#define STA2X11_GPIO88_MSP4_RXD 88
163#define STA2X11_GPIO89_MSP4_FS 89
164#define STA2X11_GPIO90_MSP4_TXD 90
165#define STA2X11_GPIO91_MSP5_CK 91
166#define STA2X11_GPIO92_MSP5_RXD 92
167#define STA2X11_GPIO93_MSP5_FS 93
168#define STA2X11_GPIO94_MSP5_TXD 94
169#define STA2X11_GPIO95_SDIO3_DAT3 95
170#define STA2X11_GPIO96_SDIO3_DAT2 96
171#define STA2X11_GPIO97_SDIO3_DAT1 97
172#define STA2X11_GPIO98_SDIO3_DAT0 98
173#define STA2X11_GPIO99_SDIO3_CLK 99
174#define STA2X11_GPIO100_SDIO3_CMD 100
175#define STA2X11_GPIO101 101
176#define STA2X11_GPIO102 102
177#define STA2X11_GPIO103 103
178#define STA2X11_GPIO104 104
179#define STA2X11_GPIO105_SDIO2_DAT3 105
180#define STA2X11_GPIO106_SDIO2_DAT2 106
181#define STA2X11_GPIO107_SDIO2_DAT1 107
182#define STA2X11_GPIO108_SDIO2_DAT0 108
183#define STA2X11_GPIO109_SDIO2_CLK 109
184#define STA2X11_GPIO110_SDIO2_CMD 110
185#define STA2X11_GPIO111 111
186#define STA2X11_GPIO112 112
187#define STA2X11_GPIO113 113
188#define STA2X11_GPIO114 114
189#define STA2X11_GPIO115_SDIO1_DAT3 115
190#define STA2X11_GPIO116_SDIO1_DAT2 116
191#define STA2X11_GPIO117_SDIO1_DAT1 117
192#define STA2X11_GPIO118_SDIO1_DAT0 118
193#define STA2X11_GPIO119_SDIO1_CLK 119
194#define STA2X11_GPIO120_SDIO1_CMD 120
195#define STA2X11_GPIO121 121
196#define STA2X11_GPIO122 122
197#define STA2X11_GPIO123 123
198#define STA2X11_GPIO124 124
199#define STA2X11_GPIO125_UART2_TXD 125
200#define STA2X11_GPIO126_UART2_RXD 126
201#define STA2X11_GPIO127_UART3_TXD 127
202
203/*
204 * The APB bridge has its own registers, needed by our users as well.
205 * They are accessed with the following read/mask/write function.
206 */
207static inline u32
208sta2x11_apbreg_mask(struct pci_dev *pdev, u32 reg, u32 mask, u32 val)
209{
210 return __sta2x11_mfd_mask(pdev, reg, mask, val, sta2x11_apbreg);
211}
212
213/* CAN and MLB */
214#define APBREG_BSR 0x00 /* Bridge Status Reg */
215#define APBREG_PAER 0x08 /* Peripherals Address Error Reg */
216#define APBREG_PWAC 0x20 /* Peripheral Write Access Control reg */
217#define APBREG_PRAC 0x40 /* Peripheral Read Access Control reg */
218#define APBREG_PCG 0x60 /* Peripheral Clock Gating Reg */
219#define APBREG_PUR 0x80 /* Peripheral Under Reset Reg */
220#define APBREG_EMU_PCG 0xA0 /* Emulator Peripheral Clock Gating Reg */
221
222#define APBREG_CAN (1 << 1)
223#define APBREG_MLB (1 << 3)
224
225/* SARAC */
226#define APBREG_BSR_SARAC 0x100 /* Bridge Status Reg */
227#define APBREG_PAER_SARAC 0x108 /* Peripherals Address Error Reg */
228#define APBREG_PWAC_SARAC 0x120 /* Peripheral Write Access Control reg */
229#define APBREG_PRAC_SARAC 0x140 /* Peripheral Read Access Control reg */
230#define APBREG_PCG_SARAC 0x160 /* Peripheral Clock Gating Reg */
231#define APBREG_PUR_SARAC 0x180 /* Peripheral Under Reset Reg */
232#define APBREG_EMU_PCG_SARAC 0x1A0 /* Emulator Peripheral Clock Gating Reg */
233
234#define APBREG_SARAC (1 << 2)
235
236/*
237 * The system controller has its own registers. Some of these are accessed
238 * by out users as well, using the following read/mask/write/function
239 */
240static inline
241u32 sta2x11_sctl_mask(struct pci_dev *pdev, u32 reg, u32 mask, u32 val)
242{
243 return __sta2x11_mfd_mask(pdev, reg, mask, val, sta2x11_sctl);
244}
245
246#define SCTL_SCCTL 0x00 /* System controller control register */
247#define SCTL_ARMCFG 0x04 /* ARM configuration register */
248#define SCTL_SCPLLCTL 0x08 /* PLL control status register */
249
250#define SCTL_SCPLLCTL_AUDIO_PLL_PD BIT(1)
251#define SCTL_SCPLLCTL_FRAC_CONTROL BIT(3)
252#define SCTL_SCPLLCTL_STRB_BYPASS BIT(6)
253#define SCTL_SCPLLCTL_STRB_INPUT BIT(8)
254
255#define SCTL_SCPLLFCTRL 0x0c /* PLL frequency control register */
256
257#define SCTL_SCPLLFCTRL_AUDIO_PLL_NDIV_MASK 0xff
258#define SCTL_SCPLLFCTRL_AUDIO_PLL_NDIV_SHIFT 10
259#define SCTL_SCPLLFCTRL_AUDIO_PLL_IDF_MASK 7
260#define SCTL_SCPLLFCTRL_AUDIO_PLL_IDF_SHIFT 21
261#define SCTL_SCPLLFCTRL_AUDIO_PLL_ODF_MASK 7
262#define SCTL_SCPLLFCTRL_AUDIO_PLL_ODF_SHIFT 18
263#define SCTL_SCPLLFCTRL_DITHER_DISABLE_MASK 0x03
264#define SCTL_SCPLLFCTRL_DITHER_DISABLE_SHIFT 4
265
266
267#define SCTL_SCRESFRACT 0x10 /* PLL fractional input register */
268
269#define SCTL_SCRESFRACT_MASK 0x0000ffff
270
271
272#define SCTL_SCRESCTRL1 0x14 /* Peripheral reset control 1 */
273#define SCTL_SCRESXTRL2 0x18 /* Peripheral reset control 2 */
274#define SCTL_SCPEREN0 0x1c /* Peripheral clock enable register 0 */
275#define SCTL_SCPEREN1 0x20 /* Peripheral clock enable register 1 */
276#define SCTL_SCPEREN2 0x24 /* Peripheral clock enable register 2 */
277#define SCTL_SCGRST 0x28 /* Peripheral global reset */
278#define SCTL_SCPCIECSBRST 0x2c /* PCIe PAB CSB reset status register */
279#define SCTL_SCPCIPMCR1 0x30 /* PCI power management control 1 */
280#define SCTL_SCPCIPMCR2 0x34 /* PCI power management control 2 */
281#define SCTL_SCPCIPMSR1 0x38 /* PCI power management status 1 */
282#define SCTL_SCPCIPMSR2 0x3c /* PCI power management status 2 */
283#define SCTL_SCPCIPMSR3 0x40 /* PCI power management status 3 */
284#define SCTL_SCINTREN 0x44 /* Interrupt enable */
285#define SCTL_SCRISR 0x48 /* RAW interrupt status */
286#define SCTL_SCCLKSTAT0 0x4c /* Peripheral clocks status 0 */
287#define SCTL_SCCLKSTAT1 0x50 /* Peripheral clocks status 1 */
288#define SCTL_SCCLKSTAT2 0x54 /* Peripheral clocks status 2 */
289#define SCTL_SCRSTSTA 0x58 /* Reset status register */
290
291#define SCTL_SCRESCTRL1_USB_PHY_POR (1 << 0)
292#define SCTL_SCRESCTRL1_USB_OTG (1 << 1)
293#define SCTL_SCRESCTRL1_USB_HRST (1 << 2)
294#define SCTL_SCRESCTRL1_USB_PHY_HOST (1 << 3)
295#define SCTL_SCRESCTRL1_SATAII (1 << 4)
296#define SCTL_SCRESCTRL1_VIP (1 << 5)
297#define SCTL_SCRESCTRL1_PER_MMC0 (1 << 6)
298#define SCTL_SCRESCTRL1_PER_MMC1 (1 << 7)
299#define SCTL_SCRESCTRL1_PER_GPIO0 (1 << 8)
300#define SCTL_SCRESCTRL1_PER_GPIO1 (1 << 9)
301#define SCTL_SCRESCTRL1_PER_GPIO2 (1 << 10)
302#define SCTL_SCRESCTRL1_PER_GPIO3 (1 << 11)
303#define SCTL_SCRESCTRL1_PER_MTU0 (1 << 12)
304#define SCTL_SCRESCTRL1_KER_SPI0 (1 << 13)
305#define SCTL_SCRESCTRL1_KER_SPI1 (1 << 14)
306#define SCTL_SCRESCTRL1_KER_SPI2 (1 << 15)
307#define SCTL_SCRESCTRL1_KER_MCI0 (1 << 16)
308#define SCTL_SCRESCTRL1_KER_MCI1 (1 << 17)
309#define SCTL_SCRESCTRL1_PRE_HSI2C0 (1 << 18)
310#define SCTL_SCRESCTRL1_PER_HSI2C1 (1 << 19)
311#define SCTL_SCRESCTRL1_PER_HSI2C2 (1 << 20)
312#define SCTL_SCRESCTRL1_PER_HSI2C3 (1 << 21)
313#define SCTL_SCRESCTRL1_PER_MSP0 (1 << 22)
314#define SCTL_SCRESCTRL1_PER_MSP1 (1 << 23)
315#define SCTL_SCRESCTRL1_PER_MSP2 (1 << 24)
316#define SCTL_SCRESCTRL1_PER_MSP3 (1 << 25)
317#define SCTL_SCRESCTRL1_PER_MSP4 (1 << 26)
318#define SCTL_SCRESCTRL1_PER_MSP5 (1 << 27)
319#define SCTL_SCRESCTRL1_PER_MMC (1 << 28)
320#define SCTL_SCRESCTRL1_KER_MSP0 (1 << 29)
321#define SCTL_SCRESCTRL1_KER_MSP1 (1 << 30)
322#define SCTL_SCRESCTRL1_KER_MSP2 (1 << 31)
323
324#define SCTL_SCPEREN0_UART0 (1 << 0)
325#define SCTL_SCPEREN0_UART1 (1 << 1)
326#define SCTL_SCPEREN0_UART2 (1 << 2)
327#define SCTL_SCPEREN0_UART3 (1 << 3)
328#define SCTL_SCPEREN0_MSP0 (1 << 4)
329#define SCTL_SCPEREN0_MSP1 (1 << 5)
330#define SCTL_SCPEREN0_MSP2 (1 << 6)
331#define SCTL_SCPEREN0_MSP3 (1 << 7)
332#define SCTL_SCPEREN0_MSP4 (1 << 8)
333#define SCTL_SCPEREN0_MSP5 (1 << 9)
334#define SCTL_SCPEREN0_SPI0 (1 << 10)
335#define SCTL_SCPEREN0_SPI1 (1 << 11)
336#define SCTL_SCPEREN0_SPI2 (1 << 12)
337#define SCTL_SCPEREN0_I2C0 (1 << 13)
338#define SCTL_SCPEREN0_I2C1 (1 << 14)
339#define SCTL_SCPEREN0_I2C2 (1 << 15)
340#define SCTL_SCPEREN0_I2C3 (1 << 16)
341#define SCTL_SCPEREN0_SVDO_LVDS (1 << 17)
342#define SCTL_SCPEREN0_USB_HOST (1 << 18)
343#define SCTL_SCPEREN0_USB_OTG (1 << 19)
344#define SCTL_SCPEREN0_MCI0 (1 << 20)
345#define SCTL_SCPEREN0_MCI1 (1 << 21)
346#define SCTL_SCPEREN0_MCI2 (1 << 22)
347#define SCTL_SCPEREN0_MCI3 (1 << 23)
348#define SCTL_SCPEREN0_SATA (1 << 24)
349#define SCTL_SCPEREN0_ETHERNET (1 << 25)
350#define SCTL_SCPEREN0_VIC (1 << 26)
351#define SCTL_SCPEREN0_DMA_AUDIO (1 << 27)
352#define SCTL_SCPEREN0_DMA_SOC (1 << 28)
353#define SCTL_SCPEREN0_RAM (1 << 29)
354#define SCTL_SCPEREN0_VIP (1 << 30)
355#define SCTL_SCPEREN0_ARM (1 << 31)
356
357#define SCTL_SCPEREN1_UART0 (1 << 0)
358#define SCTL_SCPEREN1_UART1 (1 << 1)
359#define SCTL_SCPEREN1_UART2 (1 << 2)
360#define SCTL_SCPEREN1_UART3 (1 << 3)
361#define SCTL_SCPEREN1_MSP0 (1 << 4)
362#define SCTL_SCPEREN1_MSP1 (1 << 5)
363#define SCTL_SCPEREN1_MSP2 (1 << 6)
364#define SCTL_SCPEREN1_MSP3 (1 << 7)
365#define SCTL_SCPEREN1_MSP4 (1 << 8)
366#define SCTL_SCPEREN1_MSP5 (1 << 9)
367#define SCTL_SCPEREN1_SPI0 (1 << 10)
368#define SCTL_SCPEREN1_SPI1 (1 << 11)
369#define SCTL_SCPEREN1_SPI2 (1 << 12)
370#define SCTL_SCPEREN1_I2C0 (1 << 13)
371#define SCTL_SCPEREN1_I2C1 (1 << 14)
372#define SCTL_SCPEREN1_I2C2 (1 << 15)
373#define SCTL_SCPEREN1_I2C3 (1 << 16)
374#define SCTL_SCPEREN1_USB_PHY (1 << 17)
375
376/*
377 * APB-SOC registers
378 */
379static inline
380u32 sta2x11_apb_soc_regs_mask(struct pci_dev *pdev, u32 reg, u32 mask, u32 val)
381{
382 return __sta2x11_mfd_mask(pdev, reg, mask, val, sta2x11_apb_soc_regs);
383}
384
385#define PCIE_EP1_FUNC3_0_INTR_REG 0x000
386#define PCIE_EP1_FUNC7_4_INTR_REG 0x004
387#define PCIE_EP2_FUNC3_0_INTR_REG 0x008
388#define PCIE_EP2_FUNC7_4_INTR_REG 0x00c
389#define PCIE_EP3_FUNC3_0_INTR_REG 0x010
390#define PCIE_EP3_FUNC7_4_INTR_REG 0x014
391#define PCIE_EP4_FUNC3_0_INTR_REG 0x018
392#define PCIE_EP4_FUNC7_4_INTR_REG 0x01c
393#define PCIE_INTR_ENABLE0_REG 0x020
394#define PCIE_INTR_ENABLE1_REG 0x024
395#define PCIE_EP1_FUNC_TC_REG 0x028
396#define PCIE_EP2_FUNC_TC_REG 0x02c
397#define PCIE_EP3_FUNC_TC_REG 0x030
398#define PCIE_EP4_FUNC_TC_REG 0x034
399#define PCIE_EP1_FUNC_F_REG 0x038
400#define PCIE_EP2_FUNC_F_REG 0x03c
401#define PCIE_EP3_FUNC_F_REG 0x040
402#define PCIE_EP4_FUNC_F_REG 0x044
403#define PCIE_PAB_AMBA_SW_RST_REG 0x048
404#define PCIE_PM_STATUS_0_PORT_0_4 0x04c
405#define PCIE_PM_STATUS_7_0_EP1 0x050
406#define PCIE_PM_STATUS_7_0_EP2 0x054
407#define PCIE_PM_STATUS_7_0_EP3 0x058
408#define PCIE_PM_STATUS_7_0_EP4 0x05c
409#define PCIE_DEV_ID_0_EP1_REG 0x060
410#define PCIE_CC_REV_ID_0_EP1_REG 0x064
411#define PCIE_DEV_ID_1_EP1_REG 0x068
412#define PCIE_CC_REV_ID_1_EP1_REG 0x06c
413#define PCIE_DEV_ID_2_EP1_REG 0x070
414#define PCIE_CC_REV_ID_2_EP1_REG 0x074
415#define PCIE_DEV_ID_3_EP1_REG 0x078
416#define PCIE_CC_REV_ID_3_EP1_REG 0x07c
417#define PCIE_DEV_ID_4_EP1_REG 0x080
418#define PCIE_CC_REV_ID_4_EP1_REG 0x084
419#define PCIE_DEV_ID_5_EP1_REG 0x088
420#define PCIE_CC_REV_ID_5_EP1_REG 0x08c
421#define PCIE_DEV_ID_6_EP1_REG 0x090
422#define PCIE_CC_REV_ID_6_EP1_REG 0x094
423#define PCIE_DEV_ID_7_EP1_REG 0x098
424#define PCIE_CC_REV_ID_7_EP1_REG 0x09c
425#define PCIE_DEV_ID_0_EP2_REG 0x0a0
426#define PCIE_CC_REV_ID_0_EP2_REG 0x0a4
427#define PCIE_DEV_ID_1_EP2_REG 0x0a8
428#define PCIE_CC_REV_ID_1_EP2_REG 0x0ac
429#define PCIE_DEV_ID_2_EP2_REG 0x0b0
430#define PCIE_CC_REV_ID_2_EP2_REG 0x0b4
431#define PCIE_DEV_ID_3_EP2_REG 0x0b8
432#define PCIE_CC_REV_ID_3_EP2_REG 0x0bc
433#define PCIE_DEV_ID_4_EP2_REG 0x0c0
434#define PCIE_CC_REV_ID_4_EP2_REG 0x0c4
435#define PCIE_DEV_ID_5_EP2_REG 0x0c8
436#define PCIE_CC_REV_ID_5_EP2_REG 0x0cc
437#define PCIE_DEV_ID_6_EP2_REG 0x0d0
438#define PCIE_CC_REV_ID_6_EP2_REG 0x0d4
439#define PCIE_DEV_ID_7_EP2_REG 0x0d8
440#define PCIE_CC_REV_ID_7_EP2_REG 0x0dC
441#define PCIE_DEV_ID_0_EP3_REG 0x0e0
442#define PCIE_CC_REV_ID_0_EP3_REG 0x0e4
443#define PCIE_DEV_ID_1_EP3_REG 0x0e8
444#define PCIE_CC_REV_ID_1_EP3_REG 0x0ec
445#define PCIE_DEV_ID_2_EP3_REG 0x0f0
446#define PCIE_CC_REV_ID_2_EP3_REG 0x0f4
447#define PCIE_DEV_ID_3_EP3_REG 0x0f8
448#define PCIE_CC_REV_ID_3_EP3_REG 0x0fc
449#define PCIE_DEV_ID_4_EP3_REG 0x100
450#define PCIE_CC_REV_ID_4_EP3_REG 0x104
451#define PCIE_DEV_ID_5_EP3_REG 0x108
452#define PCIE_CC_REV_ID_5_EP3_REG 0x10c
453#define PCIE_DEV_ID_6_EP3_REG 0x110
454#define PCIE_CC_REV_ID_6_EP3_REG 0x114
455#define PCIE_DEV_ID_7_EP3_REG 0x118
456#define PCIE_CC_REV_ID_7_EP3_REG 0x11c
457#define PCIE_DEV_ID_0_EP4_REG 0x120
458#define PCIE_CC_REV_ID_0_EP4_REG 0x124
459#define PCIE_DEV_ID_1_EP4_REG 0x128
460#define PCIE_CC_REV_ID_1_EP4_REG 0x12c
461#define PCIE_DEV_ID_2_EP4_REG 0x130
462#define PCIE_CC_REV_ID_2_EP4_REG 0x134
463#define PCIE_DEV_ID_3_EP4_REG 0x138
464#define PCIE_CC_REV_ID_3_EP4_REG 0x13c
465#define PCIE_DEV_ID_4_EP4_REG 0x140
466#define PCIE_CC_REV_ID_4_EP4_REG 0x144
467#define PCIE_DEV_ID_5_EP4_REG 0x148
468#define PCIE_CC_REV_ID_5_EP4_REG 0x14c
469#define PCIE_DEV_ID_6_EP4_REG 0x150
470#define PCIE_CC_REV_ID_6_EP4_REG 0x154
471#define PCIE_DEV_ID_7_EP4_REG 0x158
472#define PCIE_CC_REV_ID_7_EP4_REG 0x15c
473#define PCIE_SUBSYS_VEN_ID_REG 0x160
474#define PCIE_COMMON_CLOCK_CONFIG_0_4_0 0x164
475#define PCIE_MIPHYP_SSC_EN_REG 0x168
476#define PCIE_MIPHYP_ADDR_REG 0x16c
477#define PCIE_L1_ASPM_READY_REG 0x170
478#define PCIE_EXT_CFG_RDY_REG 0x174
479#define PCIE_SoC_INT_ROUTER_STATUS0_REG 0x178
480#define PCIE_SoC_INT_ROUTER_STATUS1_REG 0x17c
481#define PCIE_SoC_INT_ROUTER_STATUS2_REG 0x180
482#define PCIE_SoC_INT_ROUTER_STATUS3_REG 0x184
483#define DMA_IP_CTRL_REG 0x324
484#define DISP_BRIDGE_PU_PD_CTRL_REG 0x328
485#define VIP_PU_PD_CTRL_REG 0x32c
486#define USB_MLB_PU_PD_CTRL_REG 0x330
487#define SDIO_PU_PD_MISCFUNC_CTRL_REG1 0x334
488#define SDIO_PU_PD_MISCFUNC_CTRL_REG2 0x338
489#define UART_PU_PD_CTRL_REG 0x33c
490#define ARM_Lock 0x340
491#define SYS_IO_CHAR_REG1 0x344
492#define SYS_IO_CHAR_REG2 0x348
493#define SATA_CORE_ID_REG 0x34c
494#define SATA_CTRL_REG 0x350
495#define I2C_HSFIX_MISC_REG 0x354
496#define SPARE2_RESERVED 0x358
497#define SPARE3_RESERVED 0x35c
498#define MASTER_LOCK_REG 0x368
499#define SYSTEM_CONFIG_STATUS_REG 0x36c
500#define MSP_CLK_CTRL_REG 0x39c
501#define COMPENSATION_REG1 0x3c4
502#define COMPENSATION_REG2 0x3c8
503#define COMPENSATION_REG3 0x3cc
504#define TEST_CTL_REG 0x3d0
505
506/*
507 * SECR (OTP) registers
508 */
509#define STA2X11_SECR_CR 0x00
510#define STA2X11_SECR_FVR0 0x10
511#define STA2X11_SECR_FVR1 0x14
512
513extern int sta2x11_mfd_get_regs_data(struct platform_device *pdev,
514 enum sta2x11_mfd_plat_dev index,
515 void __iomem **regs,
516 spinlock_t **lock);
517
518#endif /* __STA2X11_MFD_H */
diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h
index 383ac1512a3..be1af7c42e5 100644
--- a/include/linux/mfd/stmpe.h
+++ b/include/linux/mfd/stmpe.h
@@ -8,9 +8,7 @@
8#ifndef __LINUX_MFD_STMPE_H 8#ifndef __LINUX_MFD_STMPE_H
9#define __LINUX_MFD_STMPE_H 9#define __LINUX_MFD_STMPE_H
10 10
11#include <linux/mutex.h> 11#include <linux/device.h>
12
13struct device;
14 12
15enum stmpe_block { 13enum stmpe_block {
16 STMPE_BLOCK_GPIO = 1 << 0, 14 STMPE_BLOCK_GPIO = 1 << 0,
@@ -22,13 +20,10 @@ enum stmpe_block {
22}; 20};
23 21
24enum stmpe_partnum { 22enum stmpe_partnum {
25 STMPE610,
26 STMPE801,
27 STMPE811, 23 STMPE811,
28 STMPE1601, 24 STMPE1601,
29 STMPE2401, 25 STMPE2401,
30 STMPE2403, 26 STMPE2403,
31 STMPE_NBR_PARTS
32}; 27};
33 28
34/* 29/*
@@ -55,21 +50,17 @@ enum {
55 50
56 51
57struct stmpe_variant_info; 52struct stmpe_variant_info;
58struct stmpe_client_info;
59 53
60/** 54/**
61 * struct stmpe - STMPE MFD structure 55 * struct stmpe - STMPE MFD structure
62 * @lock: lock protecting I/O operations 56 * @lock: lock protecting I/O operations
63 * @irq_lock: IRQ bus lock 57 * @irq_lock: IRQ bus lock
64 * @dev: device, mostly for dev_dbg() 58 * @dev: device, mostly for dev_dbg()
65 * @irq_domain: IRQ domain 59 * @i2c: i2c client
66 * @client: client - i2c or spi
67 * @ci: client specific information
68 * @partnum: part number 60 * @partnum: part number
69 * @variant: the detected STMPE model number 61 * @variant: the detected STMPE model number
70 * @regs: list of addresses of registers which are at different addresses on 62 * @regs: list of addresses of registers which are at different addresses on
71 * different variants. Indexed by one of STMPE_IDX_*. 63 * different variants. Indexed by one of STMPE_IDX_*.
72 * @irq: irq number for stmpe
73 * @irq_base: starting IRQ number for internal IRQs 64 * @irq_base: starting IRQ number for internal IRQs
74 * @num_gpios: number of gpios, differs for variants 65 * @num_gpios: number of gpios, differs for variants
75 * @ier: cache of IER registers for bus_lock 66 * @ier: cache of IER registers for bus_lock
@@ -80,14 +71,11 @@ struct stmpe {
80 struct mutex lock; 71 struct mutex lock;
81 struct mutex irq_lock; 72 struct mutex irq_lock;
82 struct device *dev; 73 struct device *dev;
83 struct irq_domain *domain; 74 struct i2c_client *i2c;
84 void *client;
85 struct stmpe_client_info *ci;
86 enum stmpe_partnum partnum; 75 enum stmpe_partnum partnum;
87 struct stmpe_variant_info *variant; 76 struct stmpe_variant_info *variant;
88 const u8 *regs; 77 const u8 *regs;
89 78
90 int irq;
91 int irq_base; 79 int irq_base;
92 int num_gpios; 80 int num_gpios;
93 u8 ier[2]; 81 u8 ier[2];
@@ -119,7 +107,7 @@ struct matrix_keymap_data;
119 * @no_autorepeat: disable key autorepeat 107 * @no_autorepeat: disable key autorepeat
120 */ 108 */
121struct stmpe_keypad_platform_data { 109struct stmpe_keypad_platform_data {
122 const struct matrix_keymap_data *keymap_data; 110 struct matrix_keymap_data *keymap_data;
123 unsigned int debounce_ms; 111 unsigned int debounce_ms;
124 unsigned int scan_count; 112 unsigned int scan_count;
125 bool no_autorepeat; 113 bool no_autorepeat;
@@ -190,13 +178,11 @@ struct stmpe_ts_platform_data {
190 * @id: device id to distinguish between multiple STMPEs on the same board 178 * @id: device id to distinguish between multiple STMPEs on the same board
191 * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*) 179 * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*)
192 * @irq_trigger: IRQ trigger to use for the interrupt to the host 180 * @irq_trigger: IRQ trigger to use for the interrupt to the host
181 * @irq_invert_polarity: IRQ line is connected with reversed polarity
193 * @autosleep: bool to enable/disable stmpe autosleep 182 * @autosleep: bool to enable/disable stmpe autosleep
194 * @autosleep_timeout: inactivity timeout in milliseconds for autosleep 183 * @autosleep_timeout: inactivity timeout in milliseconds for autosleep
195 * @irq_base: base IRQ number. %STMPE_NR_IRQS irqs will be used, or 184 * @irq_base: base IRQ number. %STMPE_NR_IRQS irqs will be used, or
196 * %STMPE_NR_INTERNAL_IRQS if the GPIO driver is not used. 185 * %STMPE_NR_INTERNAL_IRQS if the GPIO driver is not used.
197 * @irq_over_gpio: true if gpio is used to get irq
198 * @irq_gpio: gpio number over which irq will be requested (significant only if
199 * irq_over_gpio is true)
200 * @gpio: GPIO-specific platform data 186 * @gpio: GPIO-specific platform data
201 * @keypad: keypad-specific platform data 187 * @keypad: keypad-specific platform data
202 * @ts: touchscreen-specific platform data 188 * @ts: touchscreen-specific platform data
@@ -206,9 +192,8 @@ struct stmpe_platform_data {
206 unsigned int blocks; 192 unsigned int blocks;
207 int irq_base; 193 int irq_base;
208 unsigned int irq_trigger; 194 unsigned int irq_trigger;
195 bool irq_invert_polarity;
209 bool autosleep; 196 bool autosleep;
210 bool irq_over_gpio;
211 int irq_gpio;
212 int autosleep_timeout; 197 int autosleep_timeout;
213 198
214 struct stmpe_gpio_platform_data *gpio; 199 struct stmpe_gpio_platform_data *gpio;
diff --git a/include/linux/mfd/syscon.h b/include/linux/mfd/syscon.h
deleted file mode 100644
index 6aeb6b8da64..00000000000
--- a/include/linux/mfd/syscon.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/*
2 * System Control Driver
3 *
4 * Copyright (C) 2012 Freescale Semiconductor, Inc.
5 * Copyright (C) 2012 Linaro Ltd.
6 *
7 * Author: Dong Aisheng <dong.aisheng@linaro.org>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 */
14
15#ifndef __LINUX_MFD_SYSCON_H__
16#define __LINUX_MFD_SYSCON_H__
17
18extern struct regmap *syscon_node_to_regmap(struct device_node *np);
19extern struct regmap *syscon_regmap_lookup_by_compatible(const char *s);
20extern struct regmap *syscon_regmap_lookup_by_phandle(
21 struct device_node *np,
22 const char *property);
23#endif /* __LINUX_MFD_SYSCON_H__ */
diff --git a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
deleted file mode 100644
index dab34a1deb2..00000000000
--- a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
+++ /dev/null
@@ -1,319 +0,0 @@
1/*
2 * Copyright (C) 2012 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9#ifndef __LINUX_IMX6Q_IOMUXC_GPR_H
10#define __LINUX_IMX6Q_IOMUXC_GPR_H
11
12#include <linux/bitops.h>
13
14#define IOMUXC_GPR0 0x00
15#define IOMUXC_GPR1 0x04
16#define IOMUXC_GPR2 0x08
17#define IOMUXC_GPR3 0x0c
18#define IOMUXC_GPR4 0x10
19#define IOMUXC_GPR5 0x14
20#define IOMUXC_GPR6 0x18
21#define IOMUXC_GPR7 0x1c
22#define IOMUXC_GPR8 0x20
23#define IOMUXC_GPR9 0x24
24#define IOMUXC_GPR10 0x28
25#define IOMUXC_GPR11 0x2c
26#define IOMUXC_GPR12 0x30
27#define IOMUXC_GPR13 0x34
28
29#define IMX6Q_GPR0_CLOCK_8_MUX_SEL_MASK (0x3 << 30)
30#define IMX6Q_GPR0_CLOCK_8_MUX_SEL_AUDMUX_RXCLK_P7_MUXED (0x0 << 30)
31#define IMX6Q_GPR0_CLOCK_8_MUX_SEL_AUDMUX_RXCLK_P7 (0x1 << 30)
32#define IMX6Q_GPR0_CLOCK_8_MUX_SEL_SSI3_SSI_SRCK (0x2 << 30)
33#define IMX6Q_GPR0_CLOCK_8_MUX_SEL_SSI3_RX_BIT_CLK (0x3 << 30)
34#define IMX6Q_GPR0_CLOCK_0_MUX_SEL_MASK (0x3 << 28)
35#define IMX6Q_GPR0_CLOCK_0_MUX_SEL_ESAI1_IPP_IND_SCKR_MUXED (0x0 << 28)
36#define IMX6Q_GPR0_CLOCK_0_MUX_SEL_ESAI1_IPP_IND_SCKR (0x1 << 28)
37#define IMX6Q_GPR0_CLOCK_0_MUX_SEL_ESAI1_IPP_DO_SCKR (0x2 << 28)
38#define IMX6Q_GPR0_CLOCK_B_MUX_SEL_MASK (0x3 << 26)
39#define IMX6Q_GPR0_CLOCK_B_MUX_SEL_AUDMUX_TXCLK_P7_MUXED (0x0 << 26)
40#define IMX6Q_GPR0_CLOCK_B_MUX_SEL_AUDMUX_TXCLK_P7 (0x1 << 26)
41#define IMX6Q_GPR0_CLOCK_B_MUX_SEL_SSI3_SSI_STCK (0x2 << 26)
42#define IMX6Q_GPR0_CLOCK_B_MUX_SEL_SSI3_TX_BIT_CLK (0x3 << 26)
43#define IMX6Q_GPR0_CLOCK_3_MUX_SEL_MASK (0x3 << 24)
44#define IMX6Q_GPR0_CLOCK_3_MUX_SEL_AUDMUX_RXCLK_P7_MUXED (0x3 << 24)
45#define IMX6Q_GPR0_CLOCK_3_MUX_SEL_AUDMUX_RXCLK_P7 (0x3 << 24)
46#define IMX6Q_GPR0_CLOCK_3_MUX_SEL_SSI3_SSI_SRCK (0x3 << 24)
47#define IMX6Q_GPR0_CLOCK_3_MUX_SEL_SSI3_RX_BIT_CLK (0x3 << 24)
48#define IMX6Q_GPR0_CLOCK_A_MUX_SEL_MASK (0x3 << 22)
49#define IMX6Q_GPR0_CLOCK_A_MUX_SEL_AUDMUX_TXCLK_P2_MUXED (0x0 << 22)
50#define IMX6Q_GPR0_CLOCK_A_MUX_SEL_AUDMUX_TXCLK_P2 (0x1 << 22)
51#define IMX6Q_GPR0_CLOCK_A_MUX_SEL_SSI2_SSI_STCK (0x2 << 22)
52#define IMX6Q_GPR0_CLOCK_A_MUX_SEL_SSI2_TX_BIT_CLK (0x3 << 22)
53#define IMX6Q_GPR0_CLOCK_2_MUX_SEL_MASK (0x3 << 20)
54#define IMX6Q_GPR0_CLOCK_2_MUX_SEL_AUDMUX_RXCLK_P2_MUXED (0x0 << 20)
55#define IMX6Q_GPR0_CLOCK_2_MUX_SEL_AUDMUX_RXCLK_P2 (0x1 << 20)
56#define IMX6Q_GPR0_CLOCK_2_MUX_SEL_SSI2_SSI_SRCK (0x2 << 20)
57#define IMX6Q_GPR0_CLOCK_2_MUX_SEL_SSI2_RX_BIT_CLK (0x3 << 20)
58#define IMX6Q_GPR0_CLOCK_9_MUX_SEL_MASK (0x3 << 18)
59#define IMX6Q_GPR0_CLOCK_9_MUX_SEL_AUDMUX_TXCLK_P1_MUXED (0x0 << 18)
60#define IMX6Q_GPR0_CLOCK_9_MUX_SEL_AUDMUX_TXCLK_P1 (0x1 << 18)
61#define IMX6Q_GPR0_CLOCK_9_MUX_SEL_SSI1_SSI_STCK (0x2 << 18)
62#define IMX6Q_GPR0_CLOCK_9_MUX_SEL_SSI1_SSI_TX_BIT_CLK (0x3 << 18)
63#define IMX6Q_GPR0_CLOCK_1_MUX_SEL_MASK (0x3 << 16)
64#define IMX6Q_GPR0_CLOCK_1_MUX_SEL_AUDMUX_RXCLK_P1_MUXED (0x0 << 16)
65#define IMX6Q_GPR0_CLOCK_1_MUX_SEL_AUDMUX_RXCLK_P1 (0x1 << 16)
66#define IMX6Q_GPR0_CLOCK_1_MUX_SEL_SSI1_SSI_SRCK (0x2 << 16)
67#define IMX6Q_GPR0_CLOCK_1_MUX_SEL_SSI1_SSI_RX_BIT_CLK (0x3 << 16)
68#define IMX6Q_GPR0_TX_CLK2_MUX_SEL_MASK (0x3 << 14)
69#define IMX6Q_GPR0_TX_CLK2_MUX_SEL_ASRCK_CLK1 (0x0 << 14)
70#define IMX6Q_GPR0_TX_CLK2_MUX_SEL_ASRCK_CLK2 (0x1 << 14)
71#define IMX6Q_GPR0_TX_CLK2_MUX_SEL_ASRCK_CLK3 (0x2 << 14)
72#define IMX6Q_GPR0_DMAREQ_MUX_SEL7_MASK BIT(7)
73#define IMX6Q_GPR0_DMAREQ_MUX_SEL7_SPDIF 0x0
74#define IMX6Q_GPR0_DMAREQ_MUX_SEL7_IOMUX BIT(7)
75#define IMX6Q_GPR0_DMAREQ_MUX_SEL6_MASK BIT(6)
76#define IMX6Q_GPR0_DMAREQ_MUX_SEL6_ESAI 0x0
77#define IMX6Q_GPR0_DMAREQ_MUX_SEL6_I2C3 BIT(6)
78#define IMX6Q_GPR0_DMAREQ_MUX_SEL5_MASK BIT(5)
79#define IMX6Q_GPR0_DMAREQ_MUX_SEL5_ECSPI4 0x0
80#define IMX6Q_GPR0_DMAREQ_MUX_SEL5_EPIT2 BIT(5)
81#define IMX6Q_GPR0_DMAREQ_MUX_SEL4_MASK BIT(4)
82#define IMX6Q_GPR0_DMAREQ_MUX_SEL4_ECSPI4 0x0
83#define IMX6Q_GPR0_DMAREQ_MUX_SEL4_I2C1 BIT(4)
84#define IMX6Q_GPR0_DMAREQ_MUX_SEL3_MASK BIT(3)
85#define IMX6Q_GPR0_DMAREQ_MUX_SEL3_ECSPI2 0x0
86#define IMX6Q_GPR0_DMAREQ_MUX_SEL3_I2C1 BIT(3)
87#define IMX6Q_GPR0_DMAREQ_MUX_SEL2_MASK BIT(2)
88#define IMX6Q_GPR0_DMAREQ_MUX_SEL2_ECSPI1 0x0
89#define IMX6Q_GPR0_DMAREQ_MUX_SEL2_I2C2 BIT(2)
90#define IMX6Q_GPR0_DMAREQ_MUX_SEL1_MASK BIT(1)
91#define IMX6Q_GPR0_DMAREQ_MUX_SEL1_ECSPI1 0x0
92#define IMX6Q_GPR0_DMAREQ_MUX_SEL1_I2C3 BIT(1)
93#define IMX6Q_GPR0_DMAREQ_MUX_SEL0_MASK BIT(0)
94#define IMX6Q_GPR0_DMAREQ_MUX_SEL0_IPU1 0x0
95#define IMX6Q_GPR0_DMAREQ_MUX_SEL0_IOMUX BIT(0)
96
97#define IMX6Q_GPR1_PCIE_REQ_MASK (0x3 << 30)
98#define IMX6Q_GPR1_PCIE_EXIT_L1 BIT(28)
99#define IMX6Q_GPR1_PCIE_RDY_L23 BIT(27)
100#define IMX6Q_GPR1_PCIE_ENTER_L1 BIT(26)
101#define IMX6Q_GPR1_MIPI_COLOR_SW BIT(25)
102#define IMX6Q_GPR1_DPI_OFF BIT(24)
103#define IMX6Q_GPR1_EXC_MON_MASK BIT(22)
104#define IMX6Q_GPR1_EXC_MON_OKAY 0x0
105#define IMX6Q_GPR1_EXC_MON_SLVE BIT(22)
106#define IMX6Q_GPR1_MIPI_IPU2_SEL_MASK BIT(21)
107#define IMX6Q_GPR1_MIPI_IPU2_SEL_GASKET 0x0
108#define IMX6Q_GPR1_MIPI_IPU2_SEL_IOMUX BIT(21)
109#define IMX6Q_GPR1_MIPI_IPU1_MUX_MASK BIT(20)
110#define IMX6Q_GPR1_MIPI_IPU1_MUX_GASKET 0x0
111#define IMX6Q_GPR1_MIPI_IPU1_MUX_IOMUX BIT(20)
112#define IMX6Q_GPR1_MIPI_IPU2_MUX_MASK BIT(19)
113#define IMX6Q_GPR1_MIPI_IPU2_MUX_GASKET 0x0
114#define IMX6Q_GPR1_MIPI_IPU2_MUX_IOMUX BIT(19)
115#define IMX6Q_GPR1_PCIE_TEST_PD BIT(18)
116#define IMX6Q_GPR1_IPU_VPU_MUX_MASK BIT(17)
117#define IMX6Q_GPR1_IPU_VPU_MUX_IPU1 0x0
118#define IMX6Q_GPR1_IPU_VPU_MUX_IPU2 BIT(17)
119#define IMX6Q_GPR1_PCIE_REF_CLK_EN BIT(16)
120#define IMX6Q_GPR1_USB_EXP_MODE BIT(15)
121#define IMX6Q_GPR1_PCIE_INT BIT(14)
122#define IMX6Q_GPR1_USB_OTG_ID_SEL_MASK BIT(13)
123#define IMX6Q_GPR1_USB_OTG_ID_SEL_ENET_RX_ER 0x0
124#define IMX6Q_GPR1_USB_OTG_ID_SEL_GPIO_1 BIT(13)
125#define IMX6Q_GPR1_GINT BIT(12)
126#define IMX6Q_GPR1_ADDRS3_MASK (0x3 << 10)
127#define IMX6Q_GPR1_ADDRS3_32MB (0x0 << 10)
128#define IMX6Q_GPR1_ADDRS3_64MB (0x1 << 10)
129#define IMX6Q_GPR1_ADDRS3_128MB (0x2 << 10)
130#define IMX6Q_GPR1_ACT_CS3 BIT(9)
131#define IMX6Q_GPR1_ADDRS2_MASK (0x3 << 7)
132#define IMX6Q_GPR1_ACT_CS2 BIT(6)
133#define IMX6Q_GPR1_ADDRS1_MASK (0x3 << 4)
134#define IMX6Q_GPR1_ACT_CS1 BIT(3)
135#define IMX6Q_GPR1_ADDRS0_MASK (0x3 << 1)
136#define IMX6Q_GPR1_ACT_CS0 BIT(0)
137
138#define IMX6Q_GPR2_COUNTER_RESET_VAL_MASK (0x3 << 20)
139#define IMX6Q_GPR2_COUNTER_RESET_VAL_5 (0x0 << 20)
140#define IMX6Q_GPR2_COUNTER_RESET_VAL_3 (0x1 << 20)
141#define IMX6Q_GPR2_COUNTER_RESET_VAL_4 (0x2 << 20)
142#define IMX6Q_GPR2_COUNTER_RESET_VAL_6 (0x3 << 20)
143#define IMX6Q_GPR2_LVDS_CLK_SHIFT_MASK (0x7 << 16)
144#define IMX6Q_GPR2_LVDS_CLK_SHIFT_0 (0x0 << 16)
145#define IMX6Q_GPR2_LVDS_CLK_SHIFT_1 (0x1 << 16)
146#define IMX6Q_GPR2_LVDS_CLK_SHIFT_2 (0x2 << 16)
147#define IMX6Q_GPR2_LVDS_CLK_SHIFT_3 (0x3 << 16)
148#define IMX6Q_GPR2_LVDS_CLK_SHIFT_4 (0x4 << 16)
149#define IMX6Q_GPR2_LVDS_CLK_SHIFT_5 (0x5 << 16)
150#define IMX6Q_GPR2_LVDS_CLK_SHIFT_6 (0x6 << 16)
151#define IMX6Q_GPR2_LVDS_CLK_SHIFT_7 (0x7 << 16)
152#define IMX6Q_GPR2_BGREF_RRMODE_MASK BIT(15)
153#define IMX6Q_GPR2_BGREF_RRMODE_EXT_RESISTOR 0x0
154#define IMX6Q_GPR2_BGREF_RRMODE_INT_RESISTOR BIT(15)
155#define IMX6Q_GPR2_DI1_VS_POLARITY_MASK BIT(10)
156#define IMX6Q_GPR2_DI1_VS_POLARITY_ACTIVE_H 0x0
157#define IMX6Q_GPR2_DI1_VS_POLARITY_ACTIVE_L BIT(10)
158#define IMX6Q_GPR2_DI0_VS_POLARITY_MASK BIT(9)
159#define IMX6Q_GPR2_DI0_VS_POLARITY_ACTIVE_H 0x0
160#define IMX6Q_GPR2_DI0_VS_POLARITY_ACTIVE_L BIT(9)
161#define IMX6Q_GPR2_BIT_MAPPING_CH1_MASK BIT(8)
162#define IMX6Q_GPR2_BIT_MAPPING_CH1_SPWG 0x0
163#define IMX6Q_GPR2_BIT_MAPPING_CH1_JEIDA BIT(8)
164#define IMX6Q_GPR2_DATA_WIDTH_CH1_MASK BIT(7)
165#define IMX6Q_GPR2_DATA_WIDTH_CH1_18BIT 0x0
166#define IMX6Q_GPR2_DATA_WIDTH_CH1_24BIT BIT(7)
167#define IMX6Q_GPR2_BIT_MAPPING_CH0_MASK BIT(6)
168#define IMX6Q_GPR2_BIT_MAPPING_CH0_SPWG 0x0
169#define IMX6Q_GPR2_BIT_MAPPING_CH0_JEIDA BIT(6)
170#define IMX6Q_GPR2_DATA_WIDTH_CH0_MASK BIT(5)
171#define IMX6Q_GPR2_DATA_WIDTH_CH0_18BIT 0x0
172#define IMX6Q_GPR2_DATA_WIDTH_CH0_24BIT BIT(5)
173#define IMX6Q_GPR2_SPLIT_MODE_EN BIT(4)
174#define IMX6Q_GPR2_CH1_MODE_MASK (0x3 << 2)
175#define IMX6Q_GPR2_CH1_MODE_DISABLE (0x0 << 2)
176#define IMX6Q_GPR2_CH1_MODE_EN_ROUTE_DI0 (0x1 << 2)
177#define IMX6Q_GPR2_CH1_MODE_EN_ROUTE_DI1 (0x3 << 2)
178#define IMX6Q_GPR2_CH0_MODE_MASK (0x3 << 0)
179#define IMX6Q_GPR2_CH0_MODE_DISABLE (0x0 << 0)
180#define IMX6Q_GPR2_CH0_MODE_EN_ROUTE_DI0 (0x1 << 0)
181#define IMX6Q_GPR2_CH0_MODE_EN_ROUTE_DI1 (0x3 << 0)
182
183#define IMX6Q_GPR3_GPU_DBG_MASK (0x3 << 29)
184#define IMX6Q_GPR3_GPU_DBG_GPU3D (0x0 << 29)
185#define IMX6Q_GPR3_GPU_DBG_GPU2D (0x1 << 29)
186#define IMX6Q_GPR3_GPU_DBG_OPENVG (0x2 << 29)
187#define IMX6Q_GPR3_BCH_WR_CACHE_CTL BIT(28)
188#define IMX6Q_GPR3_BCH_RD_CACHE_CTL BIT(27)
189#define IMX6Q_GPR3_USDHCX_WR_CACHE_CTL BIT(26)
190#define IMX6Q_GPR3_USDHCX_RD_CACHE_CTL BIT(25)
191#define IMX6Q_GPR3_OCRAM_CTL_MASK (0xf << 21)
192#define IMX6Q_GPR3_OCRAM_STATUS_MASK (0xf << 17)
193#define IMX6Q_GPR3_CORE3_DBG_ACK_EN BIT(16)
194#define IMX6Q_GPR3_CORE2_DBG_ACK_EN BIT(15)
195#define IMX6Q_GPR3_CORE1_DBG_ACK_EN BIT(14)
196#define IMX6Q_GPR3_CORE0_DBG_ACK_EN BIT(13)
197#define IMX6Q_GPR3_TZASC2_BOOT_LOCK BIT(12)
198#define IMX6Q_GPR3_TZASC1_BOOT_LOCK BIT(11)
199#define IMX6Q_GPR3_IPU_DIAG_MASK BIT(10)
200#define IMX6Q_GPR3_LVDS1_MUX_CTL_MASK (0x3 << 8)
201#define IMX6Q_GPR3_LVDS1_MUX_CTL_IPU1_DI0 (0x0 << 8)
202#define IMX6Q_GPR3_LVDS1_MUX_CTL_IPU1_DI1 (0x1 << 8)
203#define IMX6Q_GPR3_LVDS1_MUX_CTL_IPU2_DI0 (0x2 << 8)
204#define IMX6Q_GPR3_LVDS1_MUX_CTL_IPU2_DI1 (0x3 << 8)
205#define IMX6Q_GPR3_LVDS0_MUX_CTL_MASK (0x3 << 6)
206#define IMX6Q_GPR3_LVDS0_MUX_CTL_IPU1_DI0 (0x0 << 6)
207#define IMX6Q_GPR3_LVDS0_MUX_CTL_IPU1_DI1 (0x1 << 6)
208#define IMX6Q_GPR3_LVDS0_MUX_CTL_IPU2_DI0 (0x2 << 6)
209#define IMX6Q_GPR3_LVDS0_MUX_CTL_IPU2_DI1 (0x3 << 6)
210#define IMX6Q_GPR3_MIPI_MUX_CTL_MASK (0x3 << 4)
211#define IMX6Q_GPR3_MIPI_MUX_CTL_IPU1_DI0 (0x0 << 4)
212#define IMX6Q_GPR3_MIPI_MUX_CTL_IPU1_DI1 (0x1 << 4)
213#define IMX6Q_GPR3_MIPI_MUX_CTL_IPU2_DI0 (0x2 << 4)
214#define IMX6Q_GPR3_MIPI_MUX_CTL_IPU2_DI1 (0x3 << 4)
215#define IMX6Q_GPR3_HDMI_MUX_CTL_MASK (0x3 << 2)
216#define IMX6Q_GPR3_HDMI_MUX_CTL_IPU1_DI0 (0x0 << 2)
217#define IMX6Q_GPR3_HDMI_MUX_CTL_IPU1_DI1 (0x1 << 2)
218#define IMX6Q_GPR3_HDMI_MUX_CTL_IPU2_DI0 (0x2 << 2)
219#define IMX6Q_GPR3_HDMI_MUX_CTL_IPU2_DI1 (0x3 << 2)
220
221#define IMX6Q_GPR4_VDOA_WR_CACHE_SEL BIT(31)
222#define IMX6Q_GPR4_VDOA_RD_CACHE_SEL BIT(30)
223#define IMX6Q_GPR4_VDOA_WR_CACHE_VAL BIT(29)
224#define IMX6Q_GPR4_VDOA_RD_CACHE_VAL BIT(28)
225#define IMX6Q_GPR4_PCIE_WR_CACHE_SEL BIT(27)
226#define IMX6Q_GPR4_PCIE_RD_CACHE_SEL BIT(26)
227#define IMX6Q_GPR4_PCIE_WR_CACHE_VAL BIT(25)
228#define IMX6Q_GPR4_PCIE_RD_CACHE_VAL BIT(24)
229#define IMX6Q_GPR4_SDMA_STOP_ACK BIT(19)
230#define IMX6Q_GPR4_CAN2_STOP_ACK BIT(18)
231#define IMX6Q_GPR4_CAN1_STOP_ACK BIT(17)
232#define IMX6Q_GPR4_ENET_STOP_ACK BIT(16)
233#define IMX6Q_GPR4_SOC_VERSION_MASK (0xff << 8)
234#define IMX6Q_GPR4_SOC_VERSION_OFF 0x8
235#define IMX6Q_GPR4_VPU_WR_CACHE_SEL BIT(7)
236#define IMX6Q_GPR4_VPU_RD_CACHE_SEL BIT(6)
237#define IMX6Q_GPR4_VPU_P_WR_CACHE_VAL BIT(3)
238#define IMX6Q_GPR4_VPU_P_RD_CACHE_VAL_MASK BIT(2)
239#define IMX6Q_GPR4_IPU_WR_CACHE_CTL BIT(1)
240#define IMX6Q_GPR4_IPU_RD_CACHE_CTL BIT(0)
241
242#define IMX6Q_GPR5_L2_CLK_STOP BIT(8)
243
244#define IMX6Q_GPR9_TZASC2_BYP BIT(1)
245#define IMX6Q_GPR9_TZASC1_BYP BIT(0)
246
247#define IMX6Q_GPR10_LOCK_DBG_EN BIT(29)
248#define IMX6Q_GPR10_LOCK_DBG_CLK_EN BIT(28)
249#define IMX6Q_GPR10_LOCK_SEC_ERR_RESP BIT(27)
250#define IMX6Q_GPR10_LOCK_OCRAM_TZ_ADDR (0x3f << 21)
251#define IMX6Q_GPR10_LOCK_OCRAM_TZ_EN BIT(20)
252#define IMX6Q_GPR10_LOCK_DCIC2_MUX_MASK (0x3 << 18)
253#define IMX6Q_GPR10_LOCK_DCIC1_MUX_MASK (0x3 << 16)
254#define IMX6Q_GPR10_DBG_EN BIT(13)
255#define IMX6Q_GPR10_DBG_CLK_EN BIT(12)
256#define IMX6Q_GPR10_SEC_ERR_RESP_MASK BIT(11)
257#define IMX6Q_GPR10_SEC_ERR_RESP_OKEY 0x0
258#define IMX6Q_GPR10_SEC_ERR_RESP_SLVE BIT(11)
259#define IMX6Q_GPR10_OCRAM_TZ_ADDR_MASK (0x3f << 5)
260#define IMX6Q_GPR10_OCRAM_TZ_EN_MASK BIT(4)
261#define IMX6Q_GPR10_DCIC2_MUX_CTL_MASK (0x3 << 2)
262#define IMX6Q_GPR10_DCIC2_MUX_CTL_IPU1_DI0 (0x0 << 2)
263#define IMX6Q_GPR10_DCIC2_MUX_CTL_IPU1_DI1 (0x1 << 2)
264#define IMX6Q_GPR10_DCIC2_MUX_CTL_IPU2_DI0 (0x2 << 2)
265#define IMX6Q_GPR10_DCIC2_MUX_CTL_IPU2_DI1 (0x3 << 2)
266#define IMX6Q_GPR10_DCIC1_MUX_CTL_MASK (0x3 << 0)
267#define IMX6Q_GPR10_DCIC1_MUX_CTL_IPU1_DI0 (0x0 << 0)
268#define IMX6Q_GPR10_DCIC1_MUX_CTL_IPU1_DI1 (0x1 << 0)
269#define IMX6Q_GPR10_DCIC1_MUX_CTL_IPU2_DI0 (0x2 << 0)
270#define IMX6Q_GPR10_DCIC1_MUX_CTL_IPU2_DI1 (0x3 << 0)
271
272#define IMX6Q_GPR12_ARMP_IPG_CLK_EN BIT(27)
273#define IMX6Q_GPR12_ARMP_AHB_CLK_EN BIT(26)
274#define IMX6Q_GPR12_ARMP_ATB_CLK_EN BIT(25)
275#define IMX6Q_GPR12_ARMP_APB_CLK_EN BIT(24)
276#define IMX6Q_GPR12_PCIE_CTL_2 BIT(10)
277
278#define IMX6Q_GPR13_SDMA_STOP_REQ BIT(30)
279#define IMX6Q_GPR13_CAN2_STOP_REQ BIT(29)
280#define IMX6Q_GPR13_CAN1_STOP_REQ BIT(28)
281#define IMX6Q_GPR13_ENET_STOP_REQ BIT(27)
282#define IMX6Q_GPR13_SATA_PHY_8_MASK (0x7 << 24)
283#define IMX6Q_GPR13_SATA_PHY_8_0_5_DB (0x0 << 24)
284#define IMX6Q_GPR13_SATA_PHY_8_1_0_DB (0x1 << 24)
285#define IMX6Q_GPR13_SATA_PHY_8_1_5_DB (0x2 << 24)
286#define IMX6Q_GPR13_SATA_PHY_8_2_0_DB (0x3 << 24)
287#define IMX6Q_GPR13_SATA_PHY_8_2_5_DB (0x4 << 24)
288#define IMX6Q_GPR13_SATA_PHY_8_3_0_DB (0x5 << 24)
289#define IMX6Q_GPR13_SATA_PHY_8_3_5_DB (0x6 << 24)
290#define IMX6Q_GPR13_SATA_PHY_8_4_0_DB (0x7 << 24)
291#define IMX6Q_GPR13_SATA_PHY_7_MASK (0x1f << 19)
292#define IMX6Q_GPR13_SATA_PHY_7_SATA1I (0x10 << 19)
293#define IMX6Q_GPR13_SATA_PHY_7_SATA1M (0x10 << 19)
294#define IMX6Q_GPR13_SATA_PHY_7_SATA1X (0x1a << 19)
295#define IMX6Q_GPR13_SATA_PHY_7_SATA2I (0x12 << 19)
296#define IMX6Q_GPR13_SATA_PHY_7_SATA2M (0x12 << 19)
297#define IMX6Q_GPR13_SATA_PHY_7_SATA2X (0x1a << 19)
298#define IMX6Q_GPR13_SATA_PHY_6_MASK (0x7 << 16)
299#define IMX6Q_GPR13_SATA_SPEED_MASK BIT(15)
300#define IMX6Q_GPR13_SATA_SPEED_1P5G 0x0
301#define IMX6Q_GPR13_SATA_SPEED_3P0G BIT(15)
302#define IMX6Q_GPR13_SATA_PHY_5 BIT(14)
303#define IMX6Q_GPR13_SATA_PHY_4_MASK (0x7 << 11)
304#define IMX6Q_GPR13_SATA_PHY_4_16_16 (0x0 << 11)
305#define IMX6Q_GPR13_SATA_PHY_4_14_16 (0x1 << 11)
306#define IMX6Q_GPR13_SATA_PHY_4_12_16 (0x2 << 11)
307#define IMX6Q_GPR13_SATA_PHY_4_10_16 (0x3 << 11)
308#define IMX6Q_GPR13_SATA_PHY_4_9_16 (0x4 << 11)
309#define IMX6Q_GPR13_SATA_PHY_4_8_16 (0x5 << 11)
310#define IMX6Q_GPR13_SATA_PHY_3_MASK (0xf << 7)
311#define IMX6Q_GPR13_SATA_PHY_3_OFF 0x7
312#define IMX6Q_GPR13_SATA_PHY_2_MASK (0x1f << 2)
313#define IMX6Q_GPR13_SATA_PHY_2_OFF 0x2
314#define IMX6Q_GPR13_SATA_PHY_1_MASK (0x3 << 0)
315#define IMX6Q_GPR13_SATA_PHY_1_FAST (0x0 << 0)
316#define IMX6Q_GPR13_SATA_PHY_1_MED (0x1 << 0)
317#define IMX6Q_GPR13_SATA_PHY_1_SLOW (0x2 << 0)
318
319#endif /* __LINUX_IMX6Q_IOMUXC_GPR_H */
diff --git a/include/linux/mfd/tc3589x.h b/include/linux/mfd/tc3589x.h
index 6b8e1ff4672..16c76e124f9 100644
--- a/include/linux/mfd/tc3589x.h
+++ b/include/linux/mfd/tc3589x.h
@@ -7,7 +7,7 @@
7#ifndef __LINUX_MFD_TC3589x_H 7#ifndef __LINUX_MFD_TC3589x_H
8#define __LINUX_MFD_TC3589x_H 8#define __LINUX_MFD_TC3589x_H
9 9
10struct device; 10#include <linux/device.h>
11 11
12enum tx3589x_block { 12enum tx3589x_block {
13 TC3589x_BLOCK_GPIO = 1 << 0, 13 TC3589x_BLOCK_GPIO = 1 << 0,
@@ -117,7 +117,6 @@ struct tc3589x {
117 struct mutex lock; 117 struct mutex lock;
118 struct device *dev; 118 struct device *dev;
119 struct i2c_client *i2c; 119 struct i2c_client *i2c;
120 struct irq_domain *domain;
121 120
122 int irq_base; 121 int irq_base;
123 int num_gpio; 122 int num_gpio;
diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h
deleted file mode 100644
index c79ad5d2f27..00000000000
--- a/include/linux/mfd/ti_am335x_tscadc.h
+++ /dev/null
@@ -1,152 +0,0 @@
1#ifndef __LINUX_TI_AM335X_TSCADC_MFD_H
2#define __LINUX_TI_AM335X_TSCADC_MFD_H
3
4/*
5 * TI Touch Screen / ADC MFD driver
6 *
7 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation version 2.
12 *
13 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
14 * kind, whether express or implied; without even the implied warranty
15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 */
18
19#include <linux/mfd/core.h>
20
21#define REG_RAWIRQSTATUS 0x024
22#define REG_IRQSTATUS 0x028
23#define REG_IRQENABLE 0x02C
24#define REG_IRQCLR 0x030
25#define REG_IRQWAKEUP 0x034
26#define REG_CTRL 0x040
27#define REG_ADCFSM 0x044
28#define REG_CLKDIV 0x04C
29#define REG_SE 0x054
30#define REG_IDLECONFIG 0x058
31#define REG_CHARGECONFIG 0x05C
32#define REG_CHARGEDELAY 0x060
33#define REG_STEPCONFIG(n) (0x64 + ((n - 1) * 8))
34#define REG_STEPDELAY(n) (0x68 + ((n - 1) * 8))
35#define REG_FIFO0CNT 0xE4
36#define REG_FIFO0THR 0xE8
37#define REG_FIFO1CNT 0xF0
38#define REG_FIFO1THR 0xF4
39#define REG_FIFO0 0x100
40#define REG_FIFO1 0x200
41
42/* Register Bitfields */
43/* IRQ wakeup enable */
44#define IRQWKUP_ENB BIT(0)
45
46/* Step Enable */
47#define STEPENB_MASK (0x1FFFF << 0)
48#define STEPENB(val) ((val) << 0)
49#define STPENB_STEPENB STEPENB(0x1FFFF)
50#define STPENB_STEPENB_TC STEPENB(0x1FFF)
51
52/* IRQ enable */
53#define IRQENB_HW_PEN BIT(0)
54#define IRQENB_FIFO0THRES BIT(2)
55#define IRQENB_FIFO1THRES BIT(5)
56#define IRQENB_PENUP BIT(9)
57
58/* Step Configuration */
59#define STEPCONFIG_MODE_MASK (3 << 0)
60#define STEPCONFIG_MODE(val) ((val) << 0)
61#define STEPCONFIG_MODE_HWSYNC STEPCONFIG_MODE(2)
62#define STEPCONFIG_AVG_MASK (7 << 2)
63#define STEPCONFIG_AVG(val) ((val) << 2)
64#define STEPCONFIG_AVG_16 STEPCONFIG_AVG(4)
65#define STEPCONFIG_XPP BIT(5)
66#define STEPCONFIG_XNN BIT(6)
67#define STEPCONFIG_YPP BIT(7)
68#define STEPCONFIG_YNN BIT(8)
69#define STEPCONFIG_XNP BIT(9)
70#define STEPCONFIG_YPN BIT(10)
71#define STEPCONFIG_INM_MASK (0xF << 15)
72#define STEPCONFIG_INM(val) ((val) << 15)
73#define STEPCONFIG_INM_ADCREFM STEPCONFIG_INM(8)
74#define STEPCONFIG_INP_MASK (0xF << 19)
75#define STEPCONFIG_INP(val) ((val) << 19)
76#define STEPCONFIG_INP_AN2 STEPCONFIG_INP(2)
77#define STEPCONFIG_INP_AN3 STEPCONFIG_INP(3)
78#define STEPCONFIG_INP_AN4 STEPCONFIG_INP(4)
79#define STEPCONFIG_INP_ADCREFM STEPCONFIG_INP(8)
80#define STEPCONFIG_FIFO1 BIT(26)
81
82/* Delay register */
83#define STEPDELAY_OPEN_MASK (0x3FFFF << 0)
84#define STEPDELAY_OPEN(val) ((val) << 0)
85#define STEPCONFIG_OPENDLY STEPDELAY_OPEN(0x098)
86#define STEPDELAY_SAMPLE_MASK (0xFF << 24)
87#define STEPDELAY_SAMPLE(val) ((val) << 24)
88#define STEPCONFIG_SAMPLEDLY STEPDELAY_SAMPLE(0)
89
90/* Charge Config */
91#define STEPCHARGE_RFP_MASK (7 << 12)
92#define STEPCHARGE_RFP(val) ((val) << 12)
93#define STEPCHARGE_RFP_XPUL STEPCHARGE_RFP(1)
94#define STEPCHARGE_INM_MASK (0xF << 15)
95#define STEPCHARGE_INM(val) ((val) << 15)
96#define STEPCHARGE_INM_AN1 STEPCHARGE_INM(1)
97#define STEPCHARGE_INP_MASK (0xF << 19)
98#define STEPCHARGE_INP(val) ((val) << 19)
99#define STEPCHARGE_INP_AN1 STEPCHARGE_INP(1)
100#define STEPCHARGE_RFM_MASK (3 << 23)
101#define STEPCHARGE_RFM(val) ((val) << 23)
102#define STEPCHARGE_RFM_XNUR STEPCHARGE_RFM(1)
103
104/* Charge delay */
105#define CHARGEDLY_OPEN_MASK (0x3FFFF << 0)
106#define CHARGEDLY_OPEN(val) ((val) << 0)
107#define CHARGEDLY_OPENDLY CHARGEDLY_OPEN(1)
108
109/* Control register */
110#define CNTRLREG_TSCSSENB BIT(0)
111#define CNTRLREG_STEPID BIT(1)
112#define CNTRLREG_STEPCONFIGWRT BIT(2)
113#define CNTRLREG_POWERDOWN BIT(4)
114#define CNTRLREG_AFE_CTRL_MASK (3 << 5)
115#define CNTRLREG_AFE_CTRL(val) ((val) << 5)
116#define CNTRLREG_4WIRE CNTRLREG_AFE_CTRL(1)
117#define CNTRLREG_5WIRE CNTRLREG_AFE_CTRL(2)
118#define CNTRLREG_8WIRE CNTRLREG_AFE_CTRL(3)
119#define CNTRLREG_TSCENB BIT(7)
120
121#define ADC_CLK 3000000
122#define MAX_CLK_DIV 7
123#define TOTAL_STEPS 16
124#define TOTAL_CHANNELS 8
125
126#define TSCADC_CELLS 2
127
128enum tscadc_cells {
129 TSC_CELL,
130 ADC_CELL,
131};
132
133struct mfd_tscadc_board {
134 struct tsc_data *tsc_init;
135 struct adc_data *adc_init;
136};
137
138struct ti_tscadc_dev {
139 struct device *dev;
140 struct regmap *regmap_tscadc;
141 void __iomem *tscadc_base;
142 int irq;
143 struct mfd_cell cells[TSCADC_CELLS];
144
145 /* tsc device */
146 struct titsc *tsc;
147
148 /* adc device */
149 struct adc_device *adc;
150};
151
152#endif
diff --git a/include/linux/mfd/tmio.h b/include/linux/mfd/tmio.h
index d83af39815a..0dc98044d8b 100644
--- a/include/linux/mfd/tmio.h
+++ b/include/linux/mfd/tmio.h
@@ -1,10 +1,8 @@
1#ifndef MFD_TMIO_H 1#ifndef MFD_TMIO_H
2#define MFD_TMIO_H 2#define MFD_TMIO_H
3 3
4#include <linux/device.h>
5#include <linux/fb.h> 4#include <linux/fb.h>
6#include <linux/io.h> 5#include <linux/io.h>
7#include <linux/jiffies.h>
8#include <linux/platform_device.h> 6#include <linux/platform_device.h>
9#include <linux/pm_runtime.h> 7#include <linux/pm_runtime.h>
10 8
@@ -66,8 +64,8 @@
66#define TMIO_MMC_SDIO_IRQ (1 << 2) 64#define TMIO_MMC_SDIO_IRQ (1 << 2)
67/* 65/*
68 * Some platforms can detect card insertion events with controller powered 66 * Some platforms can detect card insertion events with controller powered
69 * down, using a GPIO IRQ, in which case they have to fill in cd_irq, cd_gpio, 67 * down, in which case they have to call tmio_mmc_cd_wakeup() to power up the
70 * and cd_flags fields of struct tmio_mmc_data. 68 * controller and report the event to the driver.
71 */ 69 */
72#define TMIO_MMC_HAS_COLD_CD (1 << 3) 70#define TMIO_MMC_HAS_COLD_CD (1 << 3)
73/* 71/*
@@ -75,12 +73,6 @@
75 * idle before writing to some registers. 73 * idle before writing to some registers.
76 */ 74 */
77#define TMIO_MMC_HAS_IDLE_WAIT (1 << 4) 75#define TMIO_MMC_HAS_IDLE_WAIT (1 << 4)
78/*
79 * A GPIO is used for card hotplug detection. We need an extra flag for this,
80 * because 0 is a valid GPIO number too, and requiring users to specify
81 * cd_gpio < 0 to disable GPIO hotplug would break backwards compatibility.
82 */
83#define TMIO_MMC_USE_GPIO_CD (1 << 5)
84 76
85int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base); 77int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base);
86int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base); 78int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base);
@@ -101,31 +93,23 @@ struct tmio_mmc_host;
101struct tmio_mmc_data { 93struct tmio_mmc_data {
102 unsigned int hclk; 94 unsigned int hclk;
103 unsigned long capabilities; 95 unsigned long capabilities;
104 unsigned long capabilities2;
105 unsigned long flags; 96 unsigned long flags;
106 u32 ocr_mask; /* available voltages */ 97 u32 ocr_mask; /* available voltages */
107 struct tmio_mmc_dma *dma; 98 struct tmio_mmc_dma *dma;
108 struct device *dev; 99 struct device *dev;
109 unsigned int cd_gpio; 100 bool power;
110 void (*set_pwr)(struct platform_device *host, int state); 101 void (*set_pwr)(struct platform_device *host, int state);
111 void (*set_clk_div)(struct platform_device *host, int state); 102 void (*set_clk_div)(struct platform_device *host, int state);
112 int (*get_cd)(struct platform_device *host); 103 int (*get_cd)(struct platform_device *host);
113 int (*write16_hook)(struct tmio_mmc_host *host, int addr); 104 int (*write16_hook)(struct tmio_mmc_host *host, int addr);
114 /* clock management callbacks */
115 int (*clk_enable)(struct platform_device *pdev, unsigned int *f);
116 void (*clk_disable)(struct platform_device *pdev);
117}; 105};
118 106
119/*
120 * This function is deprecated and will be removed soon. Please, convert your
121 * platform to use drivers/mmc/core/cd-gpio.c
122 */
123#include <linux/mmc/host.h>
124static inline void tmio_mmc_cd_wakeup(struct tmio_mmc_data *pdata) 107static inline void tmio_mmc_cd_wakeup(struct tmio_mmc_data *pdata)
125{ 108{
126 if (pdata) 109 if (pdata && !pdata->power) {
127 mmc_detect_change(dev_get_drvdata(pdata->dev), 110 pdata->power = true;
128 msecs_to_jiffies(100)); 111 pm_runtime_get(pdata->dev);
112 }
129} 113}
130 114
131/* 115/*
diff --git a/include/linux/mfd/tps65090.h b/include/linux/mfd/tps65090.h
index 6694cf43e8b..511ced59ef1 100644
--- a/include/linux/mfd/tps65090.h
+++ b/include/linux/mfd/tps65090.h
@@ -1,4 +1,5 @@
1/* 1/*
2 * include/linux/mfd/tps65090.h
2 * Core driver interface for TI TPS65090 PMIC family 3 * Core driver interface for TI TPS65090 PMIC family
3 * 4 *
4 * Copyright (C) 2012 NVIDIA Corporation 5 * Copyright (C) 2012 NVIDIA Corporation
@@ -22,110 +23,31 @@
22#ifndef __LINUX_MFD_TPS65090_H 23#ifndef __LINUX_MFD_TPS65090_H
23#define __LINUX_MFD_TPS65090_H 24#define __LINUX_MFD_TPS65090_H
24 25
25#include <linux/irq.h> 26#include <linux/rtc.h>
26#include <linux/regmap.h>
27 27
28/* TPS65090 IRQs */ 28struct tps65090_subdev_info {
29enum { 29 int id;
30 TPS65090_IRQ_VAC_STATUS_CHANGE, 30 const char *name;
31 TPS65090_IRQ_VSYS_STATUS_CHANGE, 31 void *platform_data;
32 TPS65090_IRQ_BAT_STATUS_CHANGE,
33 TPS65090_IRQ_CHARGING_STATUS_CHANGE,
34 TPS65090_IRQ_CHARGING_COMPLETE,
35 TPS65090_IRQ_OVERLOAD_DCDC1,
36 TPS65090_IRQ_OVERLOAD_DCDC2,
37 TPS65090_IRQ_OVERLOAD_DCDC3,
38 TPS65090_IRQ_OVERLOAD_FET1,
39 TPS65090_IRQ_OVERLOAD_FET2,
40 TPS65090_IRQ_OVERLOAD_FET3,
41 TPS65090_IRQ_OVERLOAD_FET4,
42 TPS65090_IRQ_OVERLOAD_FET5,
43 TPS65090_IRQ_OVERLOAD_FET6,
44 TPS65090_IRQ_OVERLOAD_FET7,
45};
46
47/* TPS65090 Regulator ID */
48enum {
49 TPS65090_REGULATOR_DCDC1,
50 TPS65090_REGULATOR_DCDC2,
51 TPS65090_REGULATOR_DCDC3,
52 TPS65090_REGULATOR_FET1,
53 TPS65090_REGULATOR_FET2,
54 TPS65090_REGULATOR_FET3,
55 TPS65090_REGULATOR_FET4,
56 TPS65090_REGULATOR_FET5,
57 TPS65090_REGULATOR_FET6,
58 TPS65090_REGULATOR_FET7,
59 TPS65090_REGULATOR_LDO1,
60 TPS65090_REGULATOR_LDO2,
61
62 /* Last entry for maximum ID */
63 TPS65090_REGULATOR_MAX,
64};
65
66struct tps65090 {
67 struct device *dev;
68 struct regmap *rmap;
69 struct regmap_irq_chip_data *irq_data;
70};
71
72/*
73 * struct tps65090_regulator_plat_data
74 *
75 * @reg_init_data: The regulator init data.
76 * @enable_ext_control: Enable extrenal control or not. Only available for
77 * DCDC1, DCDC2 and DCDC3.
78 * @gpio: Gpio number if external control is enabled and controlled through
79 * gpio.
80 */
81struct tps65090_regulator_plat_data {
82 struct regulator_init_data *reg_init_data;
83 bool enable_ext_control;
84 int gpio;
85}; 32};
86 33
87struct tps65090_platform_data { 34struct tps65090_platform_data {
88 int irq_base; 35 int irq_base;
89 struct tps65090_regulator_plat_data *reg_pdata[TPS65090_REGULATOR_MAX]; 36 int num_subdevs;
37 struct tps65090_subdev_info *subdevs;
90}; 38};
91 39
92/* 40/*
93 * NOTE: the functions below are not intended for use outside 41 * NOTE: the functions below are not intended for use outside
94 * of the TPS65090 sub-device drivers 42 * of the TPS65090 sub-device drivers
95 */ 43 */
96static inline int tps65090_write(struct device *dev, int reg, uint8_t val) 44extern int tps65090_write(struct device *dev, int reg, uint8_t val);
97{ 45extern int tps65090_writes(struct device *dev, int reg, int len, uint8_t *val);
98 struct tps65090 *tps = dev_get_drvdata(dev); 46extern int tps65090_read(struct device *dev, int reg, uint8_t *val);
99 47extern int tps65090_reads(struct device *dev, int reg, int len, uint8_t *val);
100 return regmap_write(tps->rmap, reg, val); 48extern int tps65090_set_bits(struct device *dev, int reg, uint8_t bit_num);
101} 49extern int tps65090_clr_bits(struct device *dev, int reg, uint8_t bit_num);
102 50extern int tps65090_update(struct device *dev, int reg, uint8_t val,
103static inline int tps65090_read(struct device *dev, int reg, uint8_t *val) 51 uint8_t bit_num);
104{
105 struct tps65090 *tps = dev_get_drvdata(dev);
106 unsigned int temp_val;
107 int ret;
108
109 ret = regmap_read(tps->rmap, reg, &temp_val);
110 if (!ret)
111 *val = temp_val;
112 return ret;
113}
114
115static inline int tps65090_set_bits(struct device *dev, int reg,
116 uint8_t bit_num)
117{
118 struct tps65090 *tps = dev_get_drvdata(dev);
119
120 return regmap_update_bits(tps->rmap, reg, BIT(bit_num), ~0u);
121}
122
123static inline int tps65090_clr_bits(struct device *dev, int reg,
124 uint8_t bit_num)
125{
126 struct tps65090 *tps = dev_get_drvdata(dev);
127
128 return regmap_update_bits(tps->rmap, reg, BIT(bit_num), 0u);
129}
130 52
131#endif /*__LINUX_MFD_TPS65090_H */ 53#endif /*__LINUX_MFD_TPS65090_H */
diff --git a/include/linux/mfd/tps65217.h b/include/linux/mfd/tps65217.h
deleted file mode 100644
index 290762f9393..00000000000
--- a/include/linux/mfd/tps65217.h
+++ /dev/null
@@ -1,298 +0,0 @@
1/*
2 * linux/mfd/tps65217.h
3 *
4 * Functions to access TPS65217 power management chip.
5 *
6 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation version 2.
11 *
12 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
13 * kind, whether express or implied; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 */
17
18#ifndef __LINUX_MFD_TPS65217_H
19#define __LINUX_MFD_TPS65217_H
20
21#include <linux/i2c.h>
22#include <linux/regulator/driver.h>
23#include <linux/regulator/machine.h>
24
25/* TPS chip id list */
26#define TPS65217 0xF0
27
28/* I2C ID for TPS65217 part */
29#define TPS65217_I2C_ID 0x24
30
31/* All register addresses */
32#define TPS65217_REG_CHIPID 0X00
33#define TPS65217_REG_PPATH 0X01
34#define TPS65217_REG_INT 0X02
35#define TPS65217_REG_CHGCONFIG0 0X03
36#define TPS65217_REG_CHGCONFIG1 0X04
37#define TPS65217_REG_CHGCONFIG2 0X05
38#define TPS65217_REG_CHGCONFIG3 0X06
39#define TPS65217_REG_WLEDCTRL1 0X07
40#define TPS65217_REG_WLEDCTRL2 0X08
41#define TPS65217_REG_MUXCTRL 0X09
42#define TPS65217_REG_STATUS 0X0A
43#define TPS65217_REG_PASSWORD 0X0B
44#define TPS65217_REG_PGOOD 0X0C
45#define TPS65217_REG_DEFPG 0X0D
46#define TPS65217_REG_DEFDCDC1 0X0E
47#define TPS65217_REG_DEFDCDC2 0X0F
48#define TPS65217_REG_DEFDCDC3 0X10
49#define TPS65217_REG_DEFSLEW 0X11
50#define TPS65217_REG_DEFLDO1 0X12
51#define TPS65217_REG_DEFLDO2 0X13
52#define TPS65217_REG_DEFLS1 0X14
53#define TPS65217_REG_DEFLS2 0X15
54#define TPS65217_REG_ENABLE 0X16
55#define TPS65217_REG_DEFUVLO 0X18
56#define TPS65217_REG_SEQ1 0X19
57#define TPS65217_REG_SEQ2 0X1A
58#define TPS65217_REG_SEQ3 0X1B
59#define TPS65217_REG_SEQ4 0X1C
60#define TPS65217_REG_SEQ5 0X1D
61#define TPS65217_REG_SEQ6 0X1E
62
63/* Register field definitions */
64#define TPS65217_CHIPID_CHIP_MASK 0xF0
65#define TPS65217_CHIPID_REV_MASK 0x0F
66
67#define TPS65217_PPATH_ACSINK_ENABLE BIT(7)
68#define TPS65217_PPATH_USBSINK_ENABLE BIT(6)
69#define TPS65217_PPATH_AC_PW_ENABLE BIT(5)
70#define TPS65217_PPATH_USB_PW_ENABLE BIT(4)
71#define TPS65217_PPATH_AC_CURRENT_MASK 0x0C
72#define TPS65217_PPATH_USB_CURRENT_MASK 0x03
73
74#define TPS65217_INT_PBM BIT(6)
75#define TPS65217_INT_ACM BIT(5)
76#define TPS65217_INT_USBM BIT(4)
77#define TPS65217_INT_PBI BIT(2)
78#define TPS65217_INT_ACI BIT(1)
79#define TPS65217_INT_USBI BIT(0)
80
81#define TPS65217_CHGCONFIG0_TREG BIT(7)
82#define TPS65217_CHGCONFIG0_DPPM BIT(6)
83#define TPS65217_CHGCONFIG0_TSUSP BIT(5)
84#define TPS65217_CHGCONFIG0_TERMI BIT(4)
85#define TPS65217_CHGCONFIG0_ACTIVE BIT(3)
86#define TPS65217_CHGCONFIG0_CHGTOUT BIT(2)
87#define TPS65217_CHGCONFIG0_PCHGTOUT BIT(1)
88#define TPS65217_CHGCONFIG0_BATTEMP BIT(0)
89
90#define TPS65217_CHGCONFIG1_TMR_MASK 0xC0
91#define TPS65217_CHGCONFIG1_TMR_ENABLE BIT(5)
92#define TPS65217_CHGCONFIG1_NTC_TYPE BIT(4)
93#define TPS65217_CHGCONFIG1_RESET BIT(3)
94#define TPS65217_CHGCONFIG1_TERM BIT(2)
95#define TPS65217_CHGCONFIG1_SUSP BIT(1)
96#define TPS65217_CHGCONFIG1_CHG_EN BIT(0)
97
98#define TPS65217_CHGCONFIG2_DYNTMR BIT(7)
99#define TPS65217_CHGCONFIG2_VPREGHG BIT(6)
100#define TPS65217_CHGCONFIG2_VOREG_MASK 0x30
101
102#define TPS65217_CHGCONFIG3_ICHRG_MASK 0xC0
103#define TPS65217_CHGCONFIG3_DPPMTH_MASK 0x30
104#define TPS65217_CHGCONFIG2_PCHRGT BIT(3)
105#define TPS65217_CHGCONFIG2_TERMIF 0x06
106#define TPS65217_CHGCONFIG2_TRANGE BIT(0)
107
108#define TPS65217_WLEDCTRL1_ISINK_ENABLE BIT(3)
109#define TPS65217_WLEDCTRL1_ISEL BIT(2)
110#define TPS65217_WLEDCTRL1_FDIM_MASK 0x03
111
112#define TPS65217_WLEDCTRL2_DUTY_MASK 0x7F
113
114#define TPS65217_MUXCTRL_MUX_MASK 0x07
115
116#define TPS65217_STATUS_OFF BIT(7)
117#define TPS65217_STATUS_ACPWR BIT(3)
118#define TPS65217_STATUS_USBPWR BIT(2)
119#define TPS65217_STATUS_PB BIT(0)
120
121#define TPS65217_PASSWORD_REGS_UNLOCK 0x7D
122
123#define TPS65217_PGOOD_LDO3_PG BIT(6)
124#define TPS65217_PGOOD_LDO4_PG BIT(5)
125#define TPS65217_PGOOD_DC1_PG BIT(4)
126#define TPS65217_PGOOD_DC2_PG BIT(3)
127#define TPS65217_PGOOD_DC3_PG BIT(2)
128#define TPS65217_PGOOD_LDO1_PG BIT(1)
129#define TPS65217_PGOOD_LDO2_PG BIT(0)
130
131#define TPS65217_DEFPG_LDO1PGM BIT(3)
132#define TPS65217_DEFPG_LDO2PGM BIT(2)
133#define TPS65217_DEFPG_PGDLY_MASK 0x03
134
135#define TPS65217_DEFDCDCX_XADJX BIT(7)
136#define TPS65217_DEFDCDCX_DCDC_MASK 0x3F
137
138#define TPS65217_DEFSLEW_GO BIT(7)
139#define TPS65217_DEFSLEW_GODSBL BIT(6)
140#define TPS65217_DEFSLEW_PFM_EN1 BIT(5)
141#define TPS65217_DEFSLEW_PFM_EN2 BIT(4)
142#define TPS65217_DEFSLEW_PFM_EN3 BIT(3)
143#define TPS65217_DEFSLEW_SLEW_MASK 0x07
144
145#define TPS65217_DEFLDO1_LDO1_MASK 0x0F
146
147#define TPS65217_DEFLDO2_TRACK BIT(6)
148#define TPS65217_DEFLDO2_LDO2_MASK 0x3F
149
150#define TPS65217_DEFLDO3_LDO3_EN BIT(5)
151#define TPS65217_DEFLDO3_LDO3_MASK 0x1F
152
153#define TPS65217_DEFLDO4_LDO4_EN BIT(5)
154#define TPS65217_DEFLDO4_LDO4_MASK 0x1F
155
156#define TPS65217_ENABLE_LS1_EN BIT(6)
157#define TPS65217_ENABLE_LS2_EN BIT(5)
158#define TPS65217_ENABLE_DC1_EN BIT(4)
159#define TPS65217_ENABLE_DC2_EN BIT(3)
160#define TPS65217_ENABLE_DC3_EN BIT(2)
161#define TPS65217_ENABLE_LDO1_EN BIT(1)
162#define TPS65217_ENABLE_LDO2_EN BIT(0)
163
164#define TPS65217_DEFUVLO_UVLOHYS BIT(2)
165#define TPS65217_DEFUVLO_UVLO_MASK 0x03
166
167#define TPS65217_SEQ1_DC1_SEQ_MASK 0xF0
168#define TPS65217_SEQ1_DC2_SEQ_MASK 0x0F
169
170#define TPS65217_SEQ2_DC3_SEQ_MASK 0xF0
171#define TPS65217_SEQ2_LDO1_SEQ_MASK 0x0F
172
173#define TPS65217_SEQ3_LDO2_SEQ_MASK 0xF0
174#define TPS65217_SEQ3_LDO3_SEQ_MASK 0x0F
175
176#define TPS65217_SEQ4_LDO4_SEQ_MASK 0xF0
177
178#define TPS65217_SEQ5_DLY1_MASK 0xC0
179#define TPS65217_SEQ5_DLY2_MASK 0x30
180#define TPS65217_SEQ5_DLY3_MASK 0x0C
181#define TPS65217_SEQ5_DLY4_MASK 0x03
182
183#define TPS65217_SEQ6_DLY5_MASK 0xC0
184#define TPS65217_SEQ6_DLY6_MASK 0x30
185#define TPS65217_SEQ6_SEQUP BIT(2)
186#define TPS65217_SEQ6_SEQDWN BIT(1)
187#define TPS65217_SEQ6_INSTDWN BIT(0)
188
189#define TPS65217_MAX_REGISTER 0x1E
190#define TPS65217_PROTECT_NONE 0
191#define TPS65217_PROTECT_L1 1
192#define TPS65217_PROTECT_L2 2
193
194
195enum tps65217_regulator_id {
196 /* DCDC's */
197 TPS65217_DCDC_1,
198 TPS65217_DCDC_2,
199 TPS65217_DCDC_3,
200 /* LDOs */
201 TPS65217_LDO_1,
202 TPS65217_LDO_2,
203 TPS65217_LDO_3,
204 TPS65217_LDO_4,
205};
206
207#define TPS65217_MAX_REG_ID TPS65217_LDO_4
208
209/* Number of step-down converters available */
210#define TPS65217_NUM_DCDC 3
211/* Number of LDO voltage regulators available */
212#define TPS65217_NUM_LDO 4
213/* Number of total regulators available */
214#define TPS65217_NUM_REGULATOR (TPS65217_NUM_DCDC + TPS65217_NUM_LDO)
215
216enum tps65217_bl_isel {
217 TPS65217_BL_ISET1 = 1,
218 TPS65217_BL_ISET2,
219};
220
221enum tps65217_bl_fdim {
222 TPS65217_BL_FDIM_100HZ,
223 TPS65217_BL_FDIM_200HZ,
224 TPS65217_BL_FDIM_500HZ,
225 TPS65217_BL_FDIM_1000HZ,
226};
227
228struct tps65217_bl_pdata {
229 enum tps65217_bl_isel isel;
230 enum tps65217_bl_fdim fdim;
231};
232
233/**
234 * struct tps65217_board - packages regulator init data
235 * @tps65217_regulator_data: regulator initialization values
236 *
237 * Board data may be used to initialize regulator.
238 */
239struct tps65217_board {
240 struct regulator_init_data *tps65217_init_data[TPS65217_NUM_REGULATOR];
241 struct device_node *of_node[TPS65217_NUM_REGULATOR];
242 struct tps65217_bl_pdata *bl_pdata;
243};
244
245/**
246 * struct tps_info - packages regulator constraints
247 * @name: Voltage regulator name
248 * @min_uV: minimum micro volts
249 * @max_uV: minimum micro volts
250 * @vsel_to_uv: Function pointer to get voltage from selector
251 * @uv_to_vsel: Function pointer to get selector from voltage
252 *
253 * This data is used to check the regualtor voltage limits while setting.
254 */
255struct tps_info {
256 const char *name;
257 int min_uV;
258 int max_uV;
259 int (*vsel_to_uv)(unsigned int vsel);
260 int (*uv_to_vsel)(int uV, unsigned int *vsel);
261};
262
263/**
264 * struct tps65217 - tps65217 sub-driver chip access routines
265 *
266 * Device data may be used to access the TPS65217 chip
267 */
268
269struct tps65217 {
270 struct device *dev;
271 struct tps65217_board *pdata;
272 unsigned int id;
273 struct regulator_desc desc[TPS65217_NUM_REGULATOR];
274 struct regulator_dev *rdev[TPS65217_NUM_REGULATOR];
275 struct tps_info *info[TPS65217_NUM_REGULATOR];
276 struct regmap *regmap;
277};
278
279static inline struct tps65217 *dev_to_tps65217(struct device *dev)
280{
281 return dev_get_drvdata(dev);
282}
283
284static inline int tps65217_chip_id(struct tps65217 *tps65217)
285{
286 return tps65217->id;
287}
288
289int tps65217_reg_read(struct tps65217 *tps, unsigned int reg,
290 unsigned int *val);
291int tps65217_reg_write(struct tps65217 *tps, unsigned int reg,
292 unsigned int val, unsigned int level);
293int tps65217_set_bits(struct tps65217 *tps, unsigned int reg,
294 unsigned int mask, unsigned int val, unsigned int level);
295int tps65217_clear_bits(struct tps65217 *tps, unsigned int reg,
296 unsigned int mask, unsigned int level);
297
298#endif /* __LINUX_MFD_TPS65217_H */
diff --git a/include/linux/mfd/tps6586x.h b/include/linux/mfd/tps6586x.h
index 87994542573..702cee59cc7 100644
--- a/include/linux/mfd/tps6586x.h
+++ b/include/linux/mfd/tps6586x.h
@@ -1,20 +1,11 @@
1#ifndef __LINUX_MFD_TPS6586X_H 1#ifndef __LINUX_MFD_TPS6586X_H
2#define __LINUX_MFD_TPS6586X_H 2#define __LINUX_MFD_TPS6586X_H
3 3
4#define TPS6586X_SLEW_RATE_INSTANTLY 0x00 4#define SM0_PWM_BIT 0
5#define TPS6586X_SLEW_RATE_110UV 0x01 5#define SM1_PWM_BIT 1
6#define TPS6586X_SLEW_RATE_220UV 0x02 6#define SM2_PWM_BIT 2
7#define TPS6586X_SLEW_RATE_440UV 0x03
8#define TPS6586X_SLEW_RATE_880UV 0x04
9#define TPS6586X_SLEW_RATE_1760UV 0x05
10#define TPS6586X_SLEW_RATE_3520UV 0x06
11#define TPS6586X_SLEW_RATE_7040UV 0x07
12
13#define TPS6586X_SLEW_RATE_SET 0x08
14#define TPS6586X_SLEW_RATE_MASK 0x07
15 7
16enum { 8enum {
17 TPS6586X_ID_SYS,
18 TPS6586X_ID_SM_0, 9 TPS6586X_ID_SM_0,
19 TPS6586X_ID_SM_1, 10 TPS6586X_ID_SM_1,
20 TPS6586X_ID_SM_2, 11 TPS6586X_ID_SM_2,
@@ -29,7 +20,6 @@ enum {
29 TPS6586X_ID_LDO_8, 20 TPS6586X_ID_LDO_8,
30 TPS6586X_ID_LDO_9, 21 TPS6586X_ID_LDO_9,
31 TPS6586X_ID_LDO_RTC, 22 TPS6586X_ID_LDO_RTC,
32 TPS6586X_ID_MAX_REGULATOR,
33}; 23};
34 24
35enum { 25enum {
@@ -62,15 +52,58 @@ enum {
62 TPS6586X_INT_RTC_ALM2, 52 TPS6586X_INT_RTC_ALM2,
63}; 53};
64 54
55enum pwm_pfm_mode {
56 PWM_ONLY,
57 AUTO_PWM_PFM,
58 PWM_DEFAULT_VALUE,
59
60};
61
62enum slew_rate_settings {
63 SLEW_RATE_INSTANTLY = 0,
64 SLEW_RATE_0110UV_PER_SEC = 0x1,
65 SLEW_RATE_0220UV_PER_SEC = 0x2,
66 SLEW_RATE_0440UV_PER_SEC = 0x3,
67 SLEW_RATE_0880UV_PER_SEC = 0x4,
68 SLEW_RATE_1760UV_PER_SEC = 0x5,
69 SLEW_RATE_3520UV_PER_SEC = 0x6,
70 SLEW_RATE_7040UV_PER_SEC = 0x7,
71 SLEW_RATE_DEFAULT_VALUE,
72};
73
65struct tps6586x_settings { 74struct tps6586x_settings {
66 int slew_rate; 75 /* SM0, SM1 and SM2 have PWM-only and auto PWM/PFM mode */
76 enum pwm_pfm_mode sm_pwm_mode;
77 /* SM0 and SM1 have slew rate settings */
78 enum slew_rate_settings slew_rate;
79};
80
81enum {
82 TPS6586X_RTC_CL_SEL_1_5PF = 0x0,
83 TPS6586X_RTC_CL_SEL_6_5PF = 0x1,
84 TPS6586X_RTC_CL_SEL_7_5PF = 0x2,
85 TPS6586X_RTC_CL_SEL_12_5PF = 0x3,
67}; 86};
68 87
69struct tps6586x_subdev_info { 88struct tps6586x_subdev_info {
70 int id; 89 int id;
71 const char *name; 90 const char *name;
72 void *platform_data; 91 void *platform_data;
73 struct device_node *of_node; 92};
93
94struct tps6586x_epoch_start {
95 int year;
96 int month;
97 int day;
98 int hour;
99 int min;
100 int sec;
101};
102
103struct tps6586x_rtc_platform_data {
104 int irq;
105 struct tps6586x_epoch_start start;
106 int cl_sel; /* internal XTAL capacitance, see TPS6586X_RTC_CL_SEL* */
74}; 107};
75 108
76struct tps6586x_platform_data { 109struct tps6586x_platform_data {
@@ -79,9 +112,8 @@ struct tps6586x_platform_data {
79 112
80 int gpio_base; 113 int gpio_base;
81 int irq_base; 114 int irq_base;
82 bool pm_off;
83 115
84 struct regulator_init_data *reg_init_data[TPS6586X_ID_MAX_REGULATOR]; 116 bool use_power_off;
85}; 117};
86 118
87/* 119/*
@@ -96,6 +128,5 @@ extern int tps6586x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
96extern int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask); 128extern int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
97extern int tps6586x_update(struct device *dev, int reg, uint8_t val, 129extern int tps6586x_update(struct device *dev, int reg, uint8_t val,
98 uint8_t mask); 130 uint8_t mask);
99extern int tps6586x_irq_get_virq(struct device *dev, int irq);
100 131
101#endif /*__LINUX_MFD_TPS6586X_H */ 132#endif /*__LINUX_MFD_TPS6586X_H */
diff --git a/include/linux/mfd/tps65910.h b/include/linux/mfd/tps65910.h
index 20e433e551e..f6021cc9d91 100644
--- a/include/linux/mfd/tps65910.h
+++ b/include/linux/mfd/tps65910.h
@@ -17,9 +17,6 @@
17#ifndef __LINUX_MFD_TPS65910_H 17#ifndef __LINUX_MFD_TPS65910_H
18#define __LINUX_MFD_TPS65910_H 18#define __LINUX_MFD_TPS65910_H
19 19
20#include <linux/gpio.h>
21#include <linux/regmap.h>
22
23/* TPS chip id list */ 20/* TPS chip id list */
24#define TPS65910 0 21#define TPS65910 0
25#define TPS65911 1 22#define TPS65911 1
@@ -132,16 +129,6 @@
132 * 129 *
133 */ 130 */
134 131
135/* RTC_CTRL_REG bitfields */
136#define TPS65910_RTC_CTRL_STOP_RTC 0x01 /*0=stop, 1=run */
137#define TPS65910_RTC_CTRL_GET_TIME 0x40
138
139/* RTC_STATUS_REG bitfields */
140#define TPS65910_RTC_STATUS_ALARM 0x40
141
142/* RTC_INTERRUPTS_REG bitfields */
143#define TPS65910_RTC_INTERRUPTS_EVERY 0x03
144#define TPS65910_RTC_INTERRUPTS_IT_ALARM 0x08
145 132
146/*Register BCK1 (0x80) register.RegisterDescription */ 133/*Register BCK1 (0x80) register.RegisterDescription */
147#define BCK1_BCKUP_MASK 0xFF 134#define BCK1_BCKUP_MASK 0xFF
@@ -376,8 +363,6 @@
376 363
377 364
378/*Register DEVCTRL (0x80) register.RegisterDescription */ 365/*Register DEVCTRL (0x80) register.RegisterDescription */
379#define DEVCTRL_PWR_OFF_MASK 0x80
380#define DEVCTRL_PWR_OFF_SHIFT 7
381#define DEVCTRL_RTC_PWDN_MASK 0x40 366#define DEVCTRL_RTC_PWDN_MASK 0x40
382#define DEVCTRL_RTC_PWDN_SHIFT 6 367#define DEVCTRL_RTC_PWDN_SHIFT 6
383#define DEVCTRL_CK32K_CTRL_MASK 0x20 368#define DEVCTRL_CK32K_CTRL_MASK 0x20
@@ -572,49 +557,6 @@
572#define SPARE_SPARE_MASK 0xFF 557#define SPARE_SPARE_MASK 0xFF
573#define SPARE_SPARE_SHIFT 0 558#define SPARE_SPARE_SHIFT 0
574 559
575#define TPS65910_INT_STS_RTC_PERIOD_IT_MASK 0x80
576#define TPS65910_INT_STS_RTC_PERIOD_IT_SHIFT 7
577#define TPS65910_INT_STS_RTC_ALARM_IT_MASK 0x40
578#define TPS65910_INT_STS_RTC_ALARM_IT_SHIFT 6
579#define TPS65910_INT_STS_HOTDIE_IT_MASK 0x20
580#define TPS65910_INT_STS_HOTDIE_IT_SHIFT 5
581#define TPS65910_INT_STS_PWRHOLD_F_IT_MASK 0x10
582#define TPS65910_INT_STS_PWRHOLD_F_IT_SHIFT 4
583#define TPS65910_INT_STS_PWRON_LP_IT_MASK 0x08
584#define TPS65910_INT_STS_PWRON_LP_IT_SHIFT 3
585#define TPS65910_INT_STS_PWRON_IT_MASK 0x04
586#define TPS65910_INT_STS_PWRON_IT_SHIFT 2
587#define TPS65910_INT_STS_VMBHI_IT_MASK 0x02
588#define TPS65910_INT_STS_VMBHI_IT_SHIFT 1
589#define TPS65910_INT_STS_VMBDCH_IT_MASK 0x01
590#define TPS65910_INT_STS_VMBDCH_IT_SHIFT 0
591
592#define TPS65910_INT_MSK_RTC_PERIOD_IT_MSK_MASK 0x80
593#define TPS65910_INT_MSK_RTC_PERIOD_IT_MSK_SHIFT 7
594#define TPS65910_INT_MSK_RTC_ALARM_IT_MSK_MASK 0x40
595#define TPS65910_INT_MSK_RTC_ALARM_IT_MSK_SHIFT 6
596#define TPS65910_INT_MSK_HOTDIE_IT_MSK_MASK 0x20
597#define TPS65910_INT_MSK_HOTDIE_IT_MSK_SHIFT 5
598#define TPS65910_INT_MSK_PWRHOLD_IT_MSK_MASK 0x10
599#define TPS65910_INT_MSK_PWRHOLD_IT_MSK_SHIFT 4
600#define TPS65910_INT_MSK_PWRON_LP_IT_MSK_MASK 0x08
601#define TPS65910_INT_MSK_PWRON_LP_IT_MSK_SHIFT 3
602#define TPS65910_INT_MSK_PWRON_IT_MSK_MASK 0x04
603#define TPS65910_INT_MSK_PWRON_IT_MSK_SHIFT 2
604#define TPS65910_INT_MSK_VMBHI_IT_MSK_MASK 0x02
605#define TPS65910_INT_MSK_VMBHI_IT_MSK_SHIFT 1
606#define TPS65910_INT_MSK_VMBDCH_IT_MSK_MASK 0x01
607#define TPS65910_INT_MSK_VMBDCH_IT_MSK_SHIFT 0
608
609#define TPS65910_INT_STS2_GPIO0_F_IT_SHIFT 2
610#define TPS65910_INT_STS2_GPIO0_F_IT_MASK 0x02
611#define TPS65910_INT_STS2_GPIO0_R_IT_SHIFT 1
612#define TPS65910_INT_STS2_GPIO0_R_IT_MASK 0x01
613
614#define TPS65910_INT_MSK2_GPIO0_F_IT_MSK_SHIFT 2
615#define TPS65910_INT_MSK2_GPIO0_F_IT_MSK_MASK 0x02
616#define TPS65910_INT_MSK2_GPIO0_R_IT_MSK_SHIFT 1
617#define TPS65910_INT_MSK2_GPIO0_R_IT_MSK_MASK 0x01
618 560
619/*Register INT_STS (0x80) register.RegisterDescription */ 561/*Register INT_STS (0x80) register.RegisterDescription */
620#define INT_STS_RTC_PERIOD_IT_MASK 0x80 562#define INT_STS_RTC_PERIOD_IT_MASK 0x80
@@ -623,16 +565,16 @@
623#define INT_STS_RTC_ALARM_IT_SHIFT 6 565#define INT_STS_RTC_ALARM_IT_SHIFT 6
624#define INT_STS_HOTDIE_IT_MASK 0x20 566#define INT_STS_HOTDIE_IT_MASK 0x20
625#define INT_STS_HOTDIE_IT_SHIFT 5 567#define INT_STS_HOTDIE_IT_SHIFT 5
626#define INT_STS_PWRHOLD_R_IT_MASK 0x10 568#define INT_STS_PWRHOLD_IT_MASK 0x10
627#define INT_STS_PWRHOLD_R_IT_SHIFT 4 569#define INT_STS_PWRHOLD_IT_SHIFT 4
628#define INT_STS_PWRON_LP_IT_MASK 0x08 570#define INT_STS_PWRON_LP_IT_MASK 0x08
629#define INT_STS_PWRON_LP_IT_SHIFT 3 571#define INT_STS_PWRON_LP_IT_SHIFT 3
630#define INT_STS_PWRON_IT_MASK 0x04 572#define INT_STS_PWRON_IT_MASK 0x04
631#define INT_STS_PWRON_IT_SHIFT 2 573#define INT_STS_PWRON_IT_SHIFT 2
632#define INT_STS_VMBHI_IT_MASK 0x02 574#define INT_STS_VMBHI_IT_MASK 0x02
633#define INT_STS_VMBHI_IT_SHIFT 1 575#define INT_STS_VMBHI_IT_SHIFT 1
634#define INT_STS_PWRHOLD_F_IT_MASK 0x01 576#define INT_STS_VMBDCH_IT_MASK 0x01
635#define INT_STS_PWRHOLD_F_IT_SHIFT 0 577#define INT_STS_VMBDCH_IT_SHIFT 0
636 578
637 579
638/*Register INT_MSK (0x80) register.RegisterDescription */ 580/*Register INT_MSK (0x80) register.RegisterDescription */
@@ -642,16 +584,16 @@
642#define INT_MSK_RTC_ALARM_IT_MSK_SHIFT 6 584#define INT_MSK_RTC_ALARM_IT_MSK_SHIFT 6
643#define INT_MSK_HOTDIE_IT_MSK_MASK 0x20 585#define INT_MSK_HOTDIE_IT_MSK_MASK 0x20
644#define INT_MSK_HOTDIE_IT_MSK_SHIFT 5 586#define INT_MSK_HOTDIE_IT_MSK_SHIFT 5
645#define INT_MSK_PWRHOLD_R_IT_MSK_MASK 0x10 587#define INT_MSK_PWRHOLD_IT_MSK_MASK 0x10
646#define INT_MSK_PWRHOLD_R_IT_MSK_SHIFT 4 588#define INT_MSK_PWRHOLD_IT_MSK_SHIFT 4
647#define INT_MSK_PWRON_LP_IT_MSK_MASK 0x08 589#define INT_MSK_PWRON_LP_IT_MSK_MASK 0x08
648#define INT_MSK_PWRON_LP_IT_MSK_SHIFT 3 590#define INT_MSK_PWRON_LP_IT_MSK_SHIFT 3
649#define INT_MSK_PWRON_IT_MSK_MASK 0x04 591#define INT_MSK_PWRON_IT_MSK_MASK 0x04
650#define INT_MSK_PWRON_IT_MSK_SHIFT 2 592#define INT_MSK_PWRON_IT_MSK_SHIFT 2
651#define INT_MSK_VMBHI_IT_MSK_MASK 0x02 593#define INT_MSK_VMBHI_IT_MSK_MASK 0x02
652#define INT_MSK_VMBHI_IT_MSK_SHIFT 1 594#define INT_MSK_VMBHI_IT_MSK_SHIFT 1
653#define INT_MSK_PWRHOLD_F_IT_MSK_MASK 0x01 595#define INT_MSK_VMBDCH_IT_MSK_MASK 0x01
654#define INT_MSK_PWRHOLD_F_IT_MSK_SHIFT 0 596#define INT_MSK_VMBDCH_IT_MSK_SHIFT 0
655 597
656 598
657/*Register INT_STS2 (0x80) register.RegisterDescription */ 599/*Register INT_STS2 (0x80) register.RegisterDescription */
@@ -693,14 +635,6 @@
693 635
694 636
695/*Register INT_STS3 (0x80) register.RegisterDescription */ 637/*Register INT_STS3 (0x80) register.RegisterDescription */
696#define INT_STS3_PWRDN_IT_MASK 0x80
697#define INT_STS3_PWRDN_IT_SHIFT 7
698#define INT_STS3_VMBCH2_L_IT_MASK 0x40
699#define INT_STS3_VMBCH2_L_IT_SHIFT 6
700#define INT_STS3_VMBCH2_H_IT_MASK 0x20
701#define INT_STS3_VMBCH2_H_IT_SHIFT 5
702#define INT_STS3_WTCHDG_IT_MASK 0x10
703#define INT_STS3_WTCHDG_IT_SHIFT 4
704#define INT_STS3_GPIO5_F_IT_MASK 0x08 638#define INT_STS3_GPIO5_F_IT_MASK 0x08
705#define INT_STS3_GPIO5_F_IT_SHIFT 3 639#define INT_STS3_GPIO5_F_IT_SHIFT 3
706#define INT_STS3_GPIO5_R_IT_MASK 0x04 640#define INT_STS3_GPIO5_R_IT_MASK 0x04
@@ -712,14 +646,6 @@
712 646
713 647
714/*Register INT_MSK3 (0x80) register.RegisterDescription */ 648/*Register INT_MSK3 (0x80) register.RegisterDescription */
715#define INT_MSK3_PWRDN_IT_MSK_MASK 0x80
716#define INT_MSK3_PWRDN_IT_MSK_SHIFT 7
717#define INT_MSK3_VMBCH2_L_IT_MSK_MASK 0x40
718#define INT_MSK3_VMBCH2_L_IT_MSK_SHIFT 6
719#define INT_MSK3_VMBCH2_H_IT_MSK_MASK 0x20
720#define INT_MSK3_VMBCH2_H_IT_MSK_SHIFT 5
721#define INT_MSK3_WTCHDG_IT_MSK_MASK 0x10
722#define INT_MSK3_WTCHDG_IT_MSK_SHIFT 4
723#define INT_MSK3_GPIO5_F_IT_MSK_MASK 0x08 649#define INT_MSK3_GPIO5_F_IT_MSK_MASK 0x08
724#define INT_MSK3_GPIO5_F_IT_MSK_SHIFT 3 650#define INT_MSK3_GPIO5_F_IT_MSK_SHIFT 3
725#define INT_MSK3_GPIO5_R_IT_MSK_MASK 0x04 651#define INT_MSK3_GPIO5_R_IT_MSK_MASK 0x04
@@ -780,32 +706,34 @@
780#define TPS65910_IRQ_GPIO_F 9 706#define TPS65910_IRQ_GPIO_F 9
781#define TPS65910_NUM_IRQ 10 707#define TPS65910_NUM_IRQ 10
782 708
783#define TPS65911_IRQ_PWRHOLD_F 0 709#define TPS65911_IRQ_VBAT_VMBDCH 0
784#define TPS65911_IRQ_VBAT_VMHI 1 710#define TPS65911_IRQ_VBAT_VMBDCH2L 1
785#define TPS65911_IRQ_PWRON 2 711#define TPS65911_IRQ_VBAT_VMBDCH2H 2
786#define TPS65911_IRQ_PWRON_LP 3 712#define TPS65911_IRQ_VBAT_VMHI 3
787#define TPS65911_IRQ_PWRHOLD_R 4 713#define TPS65911_IRQ_PWRON 4
788#define TPS65911_IRQ_HOTDIE 5 714#define TPS65911_IRQ_PWRON_LP 5
789#define TPS65911_IRQ_RTC_ALARM 6 715#define TPS65911_IRQ_PWRHOLD_F 6
790#define TPS65911_IRQ_RTC_PERIOD 7 716#define TPS65911_IRQ_PWRHOLD_R 7
791#define TPS65911_IRQ_GPIO0_R 8 717#define TPS65911_IRQ_HOTDIE 8
792#define TPS65911_IRQ_GPIO0_F 9 718#define TPS65911_IRQ_RTC_ALARM 9
793#define TPS65911_IRQ_GPIO1_R 10 719#define TPS65911_IRQ_RTC_PERIOD 10
794#define TPS65911_IRQ_GPIO1_F 11 720#define TPS65911_IRQ_GPIO0_R 11
795#define TPS65911_IRQ_GPIO2_R 12 721#define TPS65911_IRQ_GPIO0_F 12
796#define TPS65911_IRQ_GPIO2_F 13 722#define TPS65911_IRQ_GPIO1_R 13
797#define TPS65911_IRQ_GPIO3_R 14 723#define TPS65911_IRQ_GPIO1_F 14
798#define TPS65911_IRQ_GPIO3_F 15 724#define TPS65911_IRQ_GPIO2_R 15
799#define TPS65911_IRQ_GPIO4_R 16 725#define TPS65911_IRQ_GPIO2_F 16
800#define TPS65911_IRQ_GPIO4_F 17 726#define TPS65911_IRQ_GPIO3_R 17
801#define TPS65911_IRQ_GPIO5_R 18 727#define TPS65911_IRQ_GPIO3_F 18
802#define TPS65911_IRQ_GPIO5_F 19 728#define TPS65911_IRQ_GPIO4_R 19
803#define TPS65911_IRQ_WTCHDG 20 729#define TPS65911_IRQ_GPIO4_F 20
804#define TPS65911_IRQ_VMBCH2_H 21 730#define TPS65911_IRQ_GPIO5_R 21
805#define TPS65911_IRQ_VMBCH2_L 22 731#define TPS65911_IRQ_GPIO5_F 22
806#define TPS65911_IRQ_PWRDN 23 732#define TPS65911_IRQ_WTCHDG 23
807 733#define TPS65911_IRQ_PWRDN 24
808#define TPS65911_NUM_IRQ 24 734
735#define TPS65911_NUM_IRQ 25
736
809 737
810/* GPIO Register Definitions */ 738/* GPIO Register Definitions */
811#define TPS65910_GPIO_DEB BIT(2) 739#define TPS65910_GPIO_DEB BIT(2)
@@ -853,18 +781,6 @@
853#define TPS65910_SLEEP_CONTROL_EXT_INPUT_EN3 0x4 781#define TPS65910_SLEEP_CONTROL_EXT_INPUT_EN3 0x4
854#define TPS65911_SLEEP_CONTROL_EXT_INPUT_SLEEP 0x8 782#define TPS65911_SLEEP_CONTROL_EXT_INPUT_SLEEP 0x8
855 783
856/*
857 * Sleep keepon data: Maintains the state in sleep mode
858 * @therm_keepon: Keep on the thermal monitoring in sleep state.
859 * @clkout32k_keepon: Keep on the 32KHz clock output in sleep state.
860 * @i2chs_keepon: Keep on high speed internal clock in sleep state.
861 */
862struct tps65910_sleep_keepon_data {
863 unsigned therm_keepon:1;
864 unsigned clkout32k_keepon:1;
865 unsigned i2chs_keepon:1;
866};
867
868/** 784/**
869 * struct tps65910_board 785 * struct tps65910_board
870 * Board platform data may be used to initialize regulators. 786 * Board platform data may be used to initialize regulators.
@@ -876,12 +792,8 @@ struct tps65910_board {
876 int irq_base; 792 int irq_base;
877 int vmbch_threshold; 793 int vmbch_threshold;
878 int vmbch2_threshold; 794 int vmbch2_threshold;
879 bool en_ck32k_xtal;
880 bool en_dev_slp;
881 bool pm_off;
882 struct tps65910_sleep_keepon_data *slp_keepon;
883 bool en_gpio_sleep[TPS6591X_MAX_NUM_GPIO];
884 unsigned long regulator_ext_sleep_control[TPS65910_NUM_REGS]; 795 unsigned long regulator_ext_sleep_control[TPS65910_NUM_REGS];
796 bool en_gpio_sleep[TPS6591X_MAX_NUM_GPIO];
885 struct regulator_init_data *tps65910_pmic_init_data[TPS65910_NUM_REGS]; 797 struct regulator_init_data *tps65910_pmic_init_data[TPS65910_NUM_REGS];
886}; 798};
887 799
@@ -893,19 +805,25 @@ struct tps65910 {
893 struct device *dev; 805 struct device *dev;
894 struct i2c_client *i2c_client; 806 struct i2c_client *i2c_client;
895 struct regmap *regmap; 807 struct regmap *regmap;
808 struct mutex io_mutex;
896 unsigned int id; 809 unsigned int id;
810 int (*read)(struct tps65910 *tps65910, u8 reg, int size, void *dest);
811 int (*write)(struct tps65910 *tps65910, u8 reg, int size, void *src);
897 812
898 /* Client devices */ 813 /* Client devices */
899 struct tps65910_pmic *pmic; 814 struct tps65910_pmic *pmic;
900 struct tps65910_rtc *rtc; 815 struct tps65910_rtc *rtc;
901 struct tps65910_power *power; 816 struct tps65910_power *power;
902 817
903 /* Device node parsed board data */ 818 /* GPIO Handling */
904 struct tps65910_board *of_plat_data; 819 struct gpio_chip gpio;
905 820
906 /* IRQ Handling */ 821 /* IRQ Handling */
822 struct mutex irq_lock;
907 int chip_irq; 823 int chip_irq;
908 struct regmap_irq_chip_data *irq_data; 824 int irq_base;
825 int irq_num;
826 u32 irq_mask;
909}; 827};
910 828
911struct tps65910_platform_data { 829struct tps65910_platform_data {
@@ -913,44 +831,16 @@ struct tps65910_platform_data {
913 int irq_base; 831 int irq_base;
914}; 832};
915 833
834int tps65910_set_bits(struct tps65910 *tps65910, u8 reg, u8 mask);
835int tps65910_clear_bits(struct tps65910 *tps65910, u8 reg, u8 mask);
836void tps65910_gpio_init(struct tps65910 *tps65910, int gpio_base);
837int tps65910_irq_init(struct tps65910 *tps65910, int irq,
838 struct tps65910_platform_data *pdata);
839int tps65910_irq_exit(struct tps65910 *tps65910);
840
916static inline int tps65910_chip_id(struct tps65910 *tps65910) 841static inline int tps65910_chip_id(struct tps65910 *tps65910)
917{ 842{
918 return tps65910->id; 843 return tps65910->id;
919} 844}
920 845
921static inline int tps65910_reg_read(struct tps65910 *tps65910, u8 reg,
922 unsigned int *val)
923{
924 return regmap_read(tps65910->regmap, reg, val);
925}
926
927static inline int tps65910_reg_write(struct tps65910 *tps65910, u8 reg,
928 unsigned int val)
929{
930 return regmap_write(tps65910->regmap, reg, val);
931}
932
933static inline int tps65910_reg_set_bits(struct tps65910 *tps65910, u8 reg,
934 u8 mask)
935{
936 return regmap_update_bits(tps65910->regmap, reg, mask, mask);
937}
938
939static inline int tps65910_reg_clear_bits(struct tps65910 *tps65910, u8 reg,
940 u8 mask)
941{
942 return regmap_update_bits(tps65910->regmap, reg, mask, 0);
943}
944
945static inline int tps65910_reg_update_bits(struct tps65910 *tps65910, u8 reg,
946 u8 mask, u8 val)
947{
948 return regmap_update_bits(tps65910->regmap, reg, mask, val);
949}
950
951static inline int tps65910_irq_get_virq(struct tps65910 *tps65910, int irq)
952{
953 return regmap_irq_get_virq(tps65910->irq_data, irq);
954}
955
956#endif /* __LINUX_MFD_TPS65910_H */ 846#endif /* __LINUX_MFD_TPS65910_H */
diff --git a/include/linux/mfd/tps80031.h b/include/linux/mfd/tps80031.h
index 2c75c9c9318..1802dfefef0 100644
--- a/include/linux/mfd/tps80031.h
+++ b/include/linux/mfd/tps80031.h
@@ -1,383 +1,30 @@
1/* 1/*
2 * tps80031.h -- TI TPS80031 and TI TPS80032 PMIC driver. 2 * include/linux/mfd/tps80031.c
3 * 3 *
4 * Copyright (c) 2012, NVIDIA Corporation. 4 * Core driver interface for TI TPS80031 PMIC
5 * 5 *
6 * Author: Laxman Dewangan <ldewangan@nvidia.com> 6 * Copyright (C) 2011 NVIDIA Corporation
7 * 7 *
8 * This program is free software; you can redistribute it and/or 8 * This program is free software; you can redistribute it and/or modify
9 * modify it under the terms of the GNU General Public License as 9 * it under the terms of the GNU General Public License as published by
10 * published by the Free Software Foundation version 2. 10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
11 * 12 *
12 * This program is distributed "as is" WITHOUT ANY WARRANTY of any kind, 13 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * whether express or implied; without even the implied warranty of 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * General Public License for more details. 16 * more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 * 21 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 * 02111-1307, USA
21 */ 22 */
22 23
23#ifndef __LINUX_MFD_TPS80031_H 24#ifndef __LINUX_MFD_TPS80031_H
24#define __LINUX_MFD_TPS80031_H 25#define __LINUX_MFD_TPS80031_H
25 26
26#include <linux/device.h> 27#include <linux/rtc.h>
27#include <linux/regmap.h>
28
29/* Pull-ups/Pull-downs */
30#define TPS80031_CFG_INPUT_PUPD1 0xF0
31#define TPS80031_CFG_INPUT_PUPD2 0xF1
32#define TPS80031_CFG_INPUT_PUPD3 0xF2
33#define TPS80031_CFG_INPUT_PUPD4 0xF3
34#define TPS80031_CFG_LDO_PD1 0xF4
35#define TPS80031_CFG_LDO_PD2 0xF5
36#define TPS80031_CFG_SMPS_PD 0xF6
37
38/* Real Time Clock */
39#define TPS80031_SECONDS_REG 0x00
40#define TPS80031_MINUTES_REG 0x01
41#define TPS80031_HOURS_REG 0x02
42#define TPS80031_DAYS_REG 0x03
43#define TPS80031_MONTHS_REG 0x04
44#define TPS80031_YEARS_REG 0x05
45#define TPS80031_WEEKS_REG 0x06
46#define TPS80031_ALARM_SECONDS_REG 0x08
47#define TPS80031_ALARM_MINUTES_REG 0x09
48#define TPS80031_ALARM_HOURS_REG 0x0A
49#define TPS80031_ALARM_DAYS_REG 0x0B
50#define TPS80031_ALARM_MONTHS_REG 0x0C
51#define TPS80031_ALARM_YEARS_REG 0x0D
52#define TPS80031_RTC_CTRL_REG 0x10
53#define TPS80031_RTC_STATUS_REG 0x11
54#define TPS80031_RTC_INTERRUPTS_REG 0x12
55#define TPS80031_RTC_COMP_LSB_REG 0x13
56#define TPS80031_RTC_COMP_MSB_REG 0x14
57#define TPS80031_RTC_RESET_STATUS_REG 0x16
58
59/*PMC Master Module */
60#define TPS80031_PHOENIX_START_CONDITION 0x1F
61#define TPS80031_PHOENIX_MSK_TRANSITION 0x20
62#define TPS80031_STS_HW_CONDITIONS 0x21
63#define TPS80031_PHOENIX_LAST_TURNOFF_STS 0x22
64#define TPS80031_VSYSMIN_LO_THRESHOLD 0x23
65#define TPS80031_VSYSMIN_HI_THRESHOLD 0x24
66#define TPS80031_PHOENIX_DEV_ON 0x25
67#define TPS80031_STS_PWR_GRP_STATE 0x27
68#define TPS80031_PH_CFG_VSYSLOW 0x28
69#define TPS80031_PH_STS_BOOT 0x29
70#define TPS80031_PHOENIX_SENS_TRANSITION 0x2A
71#define TPS80031_PHOENIX_SEQ_CFG 0x2B
72#define TPS80031_PRIMARY_WATCHDOG_CFG 0X2C
73#define TPS80031_KEY_PRESS_DUR_CFG 0X2D
74#define TPS80031_SMPS_LDO_SHORT_STS 0x2E
75
76/* PMC Slave Module - Broadcast */
77#define TPS80031_BROADCAST_ADDR_ALL 0x31
78#define TPS80031_BROADCAST_ADDR_REF 0x32
79#define TPS80031_BROADCAST_ADDR_PROV 0x33
80#define TPS80031_BROADCAST_ADDR_CLK_RST 0x34
81
82/* PMC Slave Module SMPS Regulators */
83#define TPS80031_SMPS4_CFG_TRANS 0x41
84#define TPS80031_SMPS4_CFG_STATE 0x42
85#define TPS80031_SMPS4_CFG_VOLTAGE 0x44
86#define TPS80031_VIO_CFG_TRANS 0x47
87#define TPS80031_VIO_CFG_STATE 0x48
88#define TPS80031_VIO_CFG_FORCE 0x49
89#define TPS80031_VIO_CFG_VOLTAGE 0x4A
90#define TPS80031_VIO_CFG_STEP 0x48
91#define TPS80031_SMPS1_CFG_TRANS 0x53
92#define TPS80031_SMPS1_CFG_STATE 0x54
93#define TPS80031_SMPS1_CFG_FORCE 0x55
94#define TPS80031_SMPS1_CFG_VOLTAGE 0x56
95#define TPS80031_SMPS1_CFG_STEP 0x57
96#define TPS80031_SMPS2_CFG_TRANS 0x59
97#define TPS80031_SMPS2_CFG_STATE 0x5A
98#define TPS80031_SMPS2_CFG_FORCE 0x5B
99#define TPS80031_SMPS2_CFG_VOLTAGE 0x5C
100#define TPS80031_SMPS2_CFG_STEP 0x5D
101#define TPS80031_SMPS3_CFG_TRANS 0x65
102#define TPS80031_SMPS3_CFG_STATE 0x66
103#define TPS80031_SMPS3_CFG_VOLTAGE 0x68
104
105/* PMC Slave Module LDO Regulators */
106#define TPS80031_VANA_CFG_TRANS 0x81
107#define TPS80031_VANA_CFG_STATE 0x82
108#define TPS80031_VANA_CFG_VOLTAGE 0x83
109#define TPS80031_LDO2_CFG_TRANS 0x85
110#define TPS80031_LDO2_CFG_STATE 0x86
111#define TPS80031_LDO2_CFG_VOLTAGE 0x87
112#define TPS80031_LDO4_CFG_TRANS 0x89
113#define TPS80031_LDO4_CFG_STATE 0x8A
114#define TPS80031_LDO4_CFG_VOLTAGE 0x8B
115#define TPS80031_LDO3_CFG_TRANS 0x8D
116#define TPS80031_LDO3_CFG_STATE 0x8E
117#define TPS80031_LDO3_CFG_VOLTAGE 0x8F
118#define TPS80031_LDO6_CFG_TRANS 0x91
119#define TPS80031_LDO6_CFG_STATE 0x92
120#define TPS80031_LDO6_CFG_VOLTAGE 0x93
121#define TPS80031_LDOLN_CFG_TRANS 0x95
122#define TPS80031_LDOLN_CFG_STATE 0x96
123#define TPS80031_LDOLN_CFG_VOLTAGE 0x97
124#define TPS80031_LDO5_CFG_TRANS 0x99
125#define TPS80031_LDO5_CFG_STATE 0x9A
126#define TPS80031_LDO5_CFG_VOLTAGE 0x9B
127#define TPS80031_LDO1_CFG_TRANS 0x9D
128#define TPS80031_LDO1_CFG_STATE 0x9E
129#define TPS80031_LDO1_CFG_VOLTAGE 0x9F
130#define TPS80031_LDOUSB_CFG_TRANS 0xA1
131#define TPS80031_LDOUSB_CFG_STATE 0xA2
132#define TPS80031_LDOUSB_CFG_VOLTAGE 0xA3
133#define TPS80031_LDO7_CFG_TRANS 0xA5
134#define TPS80031_LDO7_CFG_STATE 0xA6
135#define TPS80031_LDO7_CFG_VOLTAGE 0xA7
136
137/* PMC Slave Module External Control */
138#define TPS80031_REGEN1_CFG_TRANS 0xAE
139#define TPS80031_REGEN1_CFG_STATE 0xAF
140#define TPS80031_REGEN2_CFG_TRANS 0xB1
141#define TPS80031_REGEN2_CFG_STATE 0xB2
142#define TPS80031_SYSEN_CFG_TRANS 0xB4
143#define TPS80031_SYSEN_CFG_STATE 0xB5
144
145/* PMC Slave Module Internal Control */
146#define TPS80031_NRESPWRON_CFG_TRANS 0xB7
147#define TPS80031_NRESPWRON_CFG_STATE 0xB8
148#define TPS80031_CLK32KAO_CFG_TRANS 0xBA
149#define TPS80031_CLK32KAO_CFG_STATE 0xBB
150#define TPS80031_CLK32KG_CFG_TRANS 0xBD
151#define TPS80031_CLK32KG_CFG_STATE 0xBE
152#define TPS80031_CLK32KAUDIO_CFG_TRANS 0xC0
153#define TPS80031_CLK32KAUDIO_CFG_STATE 0xC1
154#define TPS80031_VRTC_CFG_TRANS 0xC3
155#define TPS80031_VRTC_CFG_STATE 0xC4
156#define TPS80031_BIAS_CFG_TRANS 0xC6
157#define TPS80031_BIAS_CFG_STATE 0xC7
158#define TPS80031_VSYSMIN_HI_CFG_TRANS 0xC9
159#define TPS80031_VSYSMIN_HI_CFG_STATE 0xCA
160#define TPS80031_RC6MHZ_CFG_TRANS 0xCC
161#define TPS80031_RC6MHZ_CFG_STATE 0xCD
162#define TPS80031_TMP_CFG_TRANS 0xCF
163#define TPS80031_TMP_CFG_STATE 0xD0
164
165/* PMC Slave Module resources assignment */
166#define TPS80031_PREQ1_RES_ASS_A 0xD7
167#define TPS80031_PREQ1_RES_ASS_B 0xD8
168#define TPS80031_PREQ1_RES_ASS_C 0xD9
169#define TPS80031_PREQ2_RES_ASS_A 0xDA
170#define TPS80031_PREQ2_RES_ASS_B 0xDB
171#define TPS80031_PREQ2_RES_ASS_C 0xDC
172#define TPS80031_PREQ3_RES_ASS_A 0xDD
173#define TPS80031_PREQ3_RES_ASS_B 0xDE
174#define TPS80031_PREQ3_RES_ASS_C 0xDF
175
176/* PMC Slave Module Miscellaneous */
177#define TPS80031_SMPS_OFFSET 0xE0
178#define TPS80031_SMPS_MULT 0xE3
179#define TPS80031_MISC1 0xE4
180#define TPS80031_MISC2 0xE5
181#define TPS80031_BBSPOR_CFG 0xE6
182#define TPS80031_TMP_CFG 0xE7
183
184/* Battery Charging Controller and Indicator LED */
185#define TPS80031_CONTROLLER_CTRL2 0xDA
186#define TPS80031_CONTROLLER_VSEL_COMP 0xDB
187#define TPS80031_CHARGERUSB_VSYSREG 0xDC
188#define TPS80031_CHARGERUSB_VICHRG_PC 0xDD
189#define TPS80031_LINEAR_CHRG_STS 0xDE
190#define TPS80031_CONTROLLER_INT_MASK 0xE0
191#define TPS80031_CONTROLLER_CTRL1 0xE1
192#define TPS80031_CONTROLLER_WDG 0xE2
193#define TPS80031_CONTROLLER_STAT1 0xE3
194#define TPS80031_CHARGERUSB_INT_STATUS 0xE4
195#define TPS80031_CHARGERUSB_INT_MASK 0xE5
196#define TPS80031_CHARGERUSB_STATUS_INT1 0xE6
197#define TPS80031_CHARGERUSB_STATUS_INT2 0xE7
198#define TPS80031_CHARGERUSB_CTRL1 0xE8
199#define TPS80031_CHARGERUSB_CTRL2 0xE9
200#define TPS80031_CHARGERUSB_CTRL3 0xEA
201#define TPS80031_CHARGERUSB_STAT1 0xEB
202#define TPS80031_CHARGERUSB_VOREG 0xEC
203#define TPS80031_CHARGERUSB_VICHRG 0xED
204#define TPS80031_CHARGERUSB_CINLIMIT 0xEE
205#define TPS80031_CHARGERUSB_CTRLLIMIT1 0xEF
206#define TPS80031_CHARGERUSB_CTRLLIMIT2 0xF0
207#define TPS80031_LED_PWM_CTRL1 0xF4
208#define TPS80031_LED_PWM_CTRL2 0xF5
209
210/* USB On-The-Go */
211#define TPS80031_BACKUP_REG 0xFA
212#define TPS80031_USB_VENDOR_ID_LSB 0x00
213#define TPS80031_USB_VENDOR_ID_MSB 0x01
214#define TPS80031_USB_PRODUCT_ID_LSB 0x02
215#define TPS80031_USB_PRODUCT_ID_MSB 0x03
216#define TPS80031_USB_VBUS_CTRL_SET 0x04
217#define TPS80031_USB_VBUS_CTRL_CLR 0x05
218#define TPS80031_USB_ID_CTRL_SET 0x06
219#define TPS80031_USB_ID_CTRL_CLR 0x07
220#define TPS80031_USB_VBUS_INT_SRC 0x08
221#define TPS80031_USB_VBUS_INT_LATCH_SET 0x09
222#define TPS80031_USB_VBUS_INT_LATCH_CLR 0x0A
223#define TPS80031_USB_VBUS_INT_EN_LO_SET 0x0B
224#define TPS80031_USB_VBUS_INT_EN_LO_CLR 0x0C
225#define TPS80031_USB_VBUS_INT_EN_HI_SET 0x0D
226#define TPS80031_USB_VBUS_INT_EN_HI_CLR 0x0E
227#define TPS80031_USB_ID_INT_SRC 0x0F
228#define TPS80031_USB_ID_INT_LATCH_SET 0x10
229#define TPS80031_USB_ID_INT_LATCH_CLR 0x11
230#define TPS80031_USB_ID_INT_EN_LO_SET 0x12
231#define TPS80031_USB_ID_INT_EN_LO_CLR 0x13
232#define TPS80031_USB_ID_INT_EN_HI_SET 0x14
233#define TPS80031_USB_ID_INT_EN_HI_CLR 0x15
234#define TPS80031_USB_OTG_ADP_CTRL 0x16
235#define TPS80031_USB_OTG_ADP_HIGH 0x17
236#define TPS80031_USB_OTG_ADP_LOW 0x18
237#define TPS80031_USB_OTG_ADP_RISE 0x19
238#define TPS80031_USB_OTG_REVISION 0x1A
239
240/* Gas Gauge */
241#define TPS80031_FG_REG_00 0xC0
242#define TPS80031_FG_REG_01 0xC1
243#define TPS80031_FG_REG_02 0xC2
244#define TPS80031_FG_REG_03 0xC3
245#define TPS80031_FG_REG_04 0xC4
246#define TPS80031_FG_REG_05 0xC5
247#define TPS80031_FG_REG_06 0xC6
248#define TPS80031_FG_REG_07 0xC7
249#define TPS80031_FG_REG_08 0xC8
250#define TPS80031_FG_REG_09 0xC9
251#define TPS80031_FG_REG_10 0xCA
252#define TPS80031_FG_REG_11 0xCB
253
254/* General Purpose ADC */
255#define TPS80031_GPADC_CTRL 0x2E
256#define TPS80031_GPADC_CTRL2 0x2F
257#define TPS80031_RTSELECT_LSB 0x32
258#define TPS80031_RTSELECT_ISB 0x33
259#define TPS80031_RTSELECT_MSB 0x34
260#define TPS80031_GPSELECT_ISB 0x35
261#define TPS80031_CTRL_P1 0x36
262#define TPS80031_RTCH0_LSB 0x37
263#define TPS80031_RTCH0_MSB 0x38
264#define TPS80031_RTCH1_LSB 0x39
265#define TPS80031_RTCH1_MSB 0x3A
266#define TPS80031_GPCH0_LSB 0x3B
267#define TPS80031_GPCH0_MSB 0x3C
268
269/* SIM, MMC and Battery Detection */
270#define TPS80031_SIMDEBOUNCING 0xEB
271#define TPS80031_SIMCTRL 0xEC
272#define TPS80031_MMCDEBOUNCING 0xED
273#define TPS80031_MMCCTRL 0xEE
274#define TPS80031_BATDEBOUNCING 0xEF
275
276/* Vibrator Driver and PWMs */
277#define TPS80031_VIBCTRL 0x9B
278#define TPS80031_VIBMODE 0x9C
279#define TPS80031_PWM1ON 0xBA
280#define TPS80031_PWM1OFF 0xBB
281#define TPS80031_PWM2ON 0xBD
282#define TPS80031_PWM2OFF 0xBE
283
284/* Control Interface */
285#define TPS80031_INT_STS_A 0xD0
286#define TPS80031_INT_STS_B 0xD1
287#define TPS80031_INT_STS_C 0xD2
288#define TPS80031_INT_MSK_LINE_A 0xD3
289#define TPS80031_INT_MSK_LINE_B 0xD4
290#define TPS80031_INT_MSK_LINE_C 0xD5
291#define TPS80031_INT_MSK_STS_A 0xD6
292#define TPS80031_INT_MSK_STS_B 0xD7
293#define TPS80031_INT_MSK_STS_C 0xD8
294#define TPS80031_TOGGLE1 0x90
295#define TPS80031_TOGGLE2 0x91
296#define TPS80031_TOGGLE3 0x92
297#define TPS80031_PWDNSTATUS1 0x93
298#define TPS80031_PWDNSTATUS2 0x94
299#define TPS80031_VALIDITY0 0x17
300#define TPS80031_VALIDITY1 0x18
301#define TPS80031_VALIDITY2 0x19
302#define TPS80031_VALIDITY3 0x1A
303#define TPS80031_VALIDITY4 0x1B
304#define TPS80031_VALIDITY5 0x1C
305#define TPS80031_VALIDITY6 0x1D
306#define TPS80031_VALIDITY7 0x1E
307
308/* Version number related register */
309#define TPS80031_JTAGVERNUM 0x87
310#define TPS80031_EPROM_REV 0xDF
311
312/* GPADC Trimming Bits. */
313#define TPS80031_GPADC_TRIM0 0xCC
314#define TPS80031_GPADC_TRIM1 0xCD
315#define TPS80031_GPADC_TRIM2 0xCE
316#define TPS80031_GPADC_TRIM3 0xCF
317#define TPS80031_GPADC_TRIM4 0xD0
318#define TPS80031_GPADC_TRIM5 0xD1
319#define TPS80031_GPADC_TRIM6 0xD2
320#define TPS80031_GPADC_TRIM7 0xD3
321#define TPS80031_GPADC_TRIM8 0xD4
322#define TPS80031_GPADC_TRIM9 0xD5
323#define TPS80031_GPADC_TRIM10 0xD6
324#define TPS80031_GPADC_TRIM11 0xD7
325#define TPS80031_GPADC_TRIM12 0xD8
326#define TPS80031_GPADC_TRIM13 0xD9
327#define TPS80031_GPADC_TRIM14 0xDA
328#define TPS80031_GPADC_TRIM15 0xDB
329#define TPS80031_GPADC_TRIM16 0xDC
330#define TPS80031_GPADC_TRIM17 0xDD
331#define TPS80031_GPADC_TRIM18 0xDE
332
333/* TPS80031_CONTROLLER_STAT1 bit fields */
334#define TPS80031_CONTROLLER_STAT1_BAT_TEMP 0
335#define TPS80031_CONTROLLER_STAT1_BAT_REMOVED 1
336#define TPS80031_CONTROLLER_STAT1_VBUS_DET 2
337#define TPS80031_CONTROLLER_STAT1_VAC_DET 3
338#define TPS80031_CONTROLLER_STAT1_FAULT_WDG 4
339#define TPS80031_CONTROLLER_STAT1_LINCH_GATED 6
340/* TPS80031_CONTROLLER_INT_MASK bit filed */
341#define TPS80031_CONTROLLER_INT_MASK_MVAC_DET 0
342#define TPS80031_CONTROLLER_INT_MASK_MVBUS_DET 1
343#define TPS80031_CONTROLLER_INT_MASK_MBAT_TEMP 2
344#define TPS80031_CONTROLLER_INT_MASK_MFAULT_WDG 3
345#define TPS80031_CONTROLLER_INT_MASK_MBAT_REMOVED 4
346#define TPS80031_CONTROLLER_INT_MASK_MLINCH_GATED 5
347
348#define TPS80031_CHARGE_CONTROL_SUB_INT_MASK 0x3F
349
350/* TPS80031_PHOENIX_DEV_ON bit field */
351#define TPS80031_DEVOFF 0x1
352
353#define TPS80031_EXT_CONTROL_CFG_TRANS 0
354#define TPS80031_EXT_CONTROL_CFG_STATE 1
355
356/* State register field */
357#define TPS80031_STATE_OFF 0x00
358#define TPS80031_STATE_ON 0x01
359#define TPS80031_STATE_MASK 0x03
360
361/* Trans register field */
362#define TPS80031_TRANS_ACTIVE_OFF 0x00
363#define TPS80031_TRANS_ACTIVE_ON 0x01
364#define TPS80031_TRANS_ACTIVE_MASK 0x03
365#define TPS80031_TRANS_SLEEP_OFF 0x00
366#define TPS80031_TRANS_SLEEP_ON 0x04
367#define TPS80031_TRANS_SLEEP_MASK 0x0C
368#define TPS80031_TRANS_OFF_OFF 0x00
369#define TPS80031_TRANS_OFF_ACTIVE 0x10
370#define TPS80031_TRANS_OFF_MASK 0x30
371
372#define TPS80031_EXT_PWR_REQ (TPS80031_PWR_REQ_INPUT_PREQ1 | \
373 TPS80031_PWR_REQ_INPUT_PREQ2 | \
374 TPS80031_PWR_REQ_INPUT_PREQ3)
375
376/* TPS80031_BBSPOR_CFG bit field */
377#define TPS80031_BBSPOR_CHG_EN 0x8
378#define TPS80031_MAX_REGISTER 0xFF
379
380struct i2c_client;
381 28
382/* Supported chips */ 29/* Supported chips */
383enum chips { 30enum chips {
@@ -421,217 +68,136 @@ enum {
421 TPS80031_INT_NR, 68 TPS80031_INT_NR,
422}; 69};
423 70
424/* TPS80031 Slave IDs */ 71enum adc_channel {
425#define TPS80031_NUM_SLAVES 4 72 BATTERY_TYPE = 0, /* External ADC */
426#define TPS80031_SLAVE_ID0 0 73 BATTERY_TEMPERATURE = 1, /* External ADC */
427#define TPS80031_SLAVE_ID1 1 74 AUDIO_ACCESSORY = 2, /* External ADC */
428#define TPS80031_SLAVE_ID2 2 75 TEMPERATURE_EXTERNAL_DIODE = 3, /* External ADC */
429#define TPS80031_SLAVE_ID3 3 76 TEMPERATURE_MEASUREMENT = 4, /* External ADC */
77 GENERAL_PURPOSE_1 = 5, /* External ADC */
78 GENERAL_PURPOSE_2 = 6, /* External ADC */
79 SYSTEM_SUPPLY = 7, /* Internal ADC */
80 BACKUP_BATTERY = 8, /* Internal ADC */
81 EXTERNAL_CHARGER_INPUT = 9, /* Internal ADC */
82 VBUS = 10, /* Internal ADC */
83 VBUS_DCDC_OUTPUT_CURRENT = 11, /* Internal ADC */
84 DIE_TEMPERATURE_1 = 12, /* Internal ADC */
85 DIE_TEMPERATURE_2 = 13, /* Internal ADC */
86 USB_ID_LINE = 14, /* Internal ADC */
87 TEST_NETWORK_1 = 15, /* Internal ADC */
88 TEST_NETWORK_2 = 16, /* Internal ADC */
89 BATTERY_CHARGING_CURRENT = 17, /* Internal ADC */
90 BATTERY_VOLTAGE = 18, /* Internal ADC */
91};
430 92
431/* TPS80031 I2C addresses */ 93enum TPS80031_GPIO {
432#define TPS80031_I2C_ID0_ADDR 0x12 94 TPS80031_GPIO_REGEN1,
433#define TPS80031_I2C_ID1_ADDR 0x48 95 TPS80031_GPIO_REGEN2,
434#define TPS80031_I2C_ID2_ADDR 0x49 96 TPS80031_GPIO_SYSEN,
435#define TPS80031_I2C_ID3_ADDR 0x4A
436 97
437enum { 98 /* Last entry */
438 TPS80031_REGULATOR_VIO, 99 TPS80031_GPIO_NR,
439 TPS80031_REGULATOR_SMPS1,
440 TPS80031_REGULATOR_SMPS2,
441 TPS80031_REGULATOR_SMPS3,
442 TPS80031_REGULATOR_SMPS4,
443 TPS80031_REGULATOR_VANA,
444 TPS80031_REGULATOR_LDO1,
445 TPS80031_REGULATOR_LDO2,
446 TPS80031_REGULATOR_LDO3,
447 TPS80031_REGULATOR_LDO4,
448 TPS80031_REGULATOR_LDO5,
449 TPS80031_REGULATOR_LDO6,
450 TPS80031_REGULATOR_LDO7,
451 TPS80031_REGULATOR_LDOLN,
452 TPS80031_REGULATOR_LDOUSB,
453 TPS80031_REGULATOR_VBUS,
454 TPS80031_REGULATOR_REGEN1,
455 TPS80031_REGULATOR_REGEN2,
456 TPS80031_REGULATOR_SYSEN,
457 TPS80031_REGULATOR_MAX,
458}; 100};
459 101
460/* Different configurations for the rails */ 102enum TPS80031_CLOCK32K {
461enum { 103 TPS80031_CLOCK32K_AO,
462 /* USBLDO input selection */ 104 TPS80031_CLOCK32K_G,
463 TPS80031_USBLDO_INPUT_VSYS = 0x00000001, 105 TPS80031_CLOCK32K_AUDIO,
464 TPS80031_USBLDO_INPUT_PMID = 0x00000002,
465
466 /* LDO3 output mode */
467 TPS80031_LDO3_OUTPUT_VIB = 0x00000004,
468 106
469 /* VBUS configuration */ 107 /* Last entry */
470 TPS80031_VBUS_DISCHRG_EN_PDN = 0x00000004, 108 TPS80031_CLOCK32K_NR,
471 TPS80031_VBUS_SW_ONLY = 0x00000008,
472 TPS80031_VBUS_SW_N_ID = 0x00000010,
473}; 109};
474 110
475/* External controls requests */ 111enum {
476enum tps80031_ext_control { 112 SLAVE_ID0 = 0,
477 TPS80031_PWR_REQ_INPUT_NONE = 0x00000000, 113 SLAVE_ID1 = 1,
478 TPS80031_PWR_REQ_INPUT_PREQ1 = 0x00000001, 114 SLAVE_ID2 = 2,
479 TPS80031_PWR_REQ_INPUT_PREQ2 = 0x00000002, 115 SLAVE_ID3 = 3,
480 TPS80031_PWR_REQ_INPUT_PREQ3 = 0x00000004,
481 TPS80031_PWR_OFF_ON_SLEEP = 0x00000008,
482 TPS80031_PWR_ON_ON_SLEEP = 0x00000010,
483}; 116};
484 117
485enum tps80031_pupd_pins { 118enum {
486 TPS80031_PREQ1 = 0, 119 I2C_ID0_ADDR = 0x12,
487 TPS80031_PREQ2A, 120 I2C_ID1_ADDR = 0x48,
488 TPS80031_PREQ2B, 121 I2C_ID2_ADDR = 0x49,
489 TPS80031_PREQ2C, 122 I2C_ID3_ADDR = 0x4A,
490 TPS80031_PREQ3,
491 TPS80031_NRES_WARM,
492 TPS80031_PWM_FORCE,
493 TPS80031_CHRG_EXT_CHRG_STATZ,
494 TPS80031_SIM,
495 TPS80031_MMC,
496 TPS80031_GPADC_START,
497 TPS80031_DVSI2C_SCL,
498 TPS80031_DVSI2C_SDA,
499 TPS80031_CTLI2C_SCL,
500 TPS80031_CTLI2C_SDA,
501}; 123};
502 124
503enum tps80031_pupd_settings { 125/* External controls requests */
504 TPS80031_PUPD_NORMAL, 126enum tps80031_ext_control {
505 TPS80031_PUPD_PULLDOWN, 127 PWR_REQ_INPUT_NONE = 0x00000000,
506 TPS80031_PUPD_PULLUP, 128 PWR_REQ_INPUT_PREQ1 = 0x00000001,
129 PWR_REQ_INPUT_PREQ2 = 0x00000002,
130 PWR_REQ_INPUT_PREQ3 = 0x00000004,
131 PWR_OFF_ON_SLEEP = 0x00000008,
132 PWR_ON_ON_SLEEP = 0x00000010,
507}; 133};
508 134
509struct tps80031 { 135struct tps80031_subdev_info {
510 struct device *dev; 136 int id;
511 unsigned long chip_info; 137 const char *name;
512 int es_version; 138 void *platform_data;
513 struct i2c_client *clients[TPS80031_NUM_SLAVES];
514 struct regmap *regmap[TPS80031_NUM_SLAVES];
515 struct regmap_irq_chip_data *irq_data;
516}; 139};
517 140
518struct tps80031_pupd_init_data { 141struct tps80031_rtc_platform_data {
519 int input_pin; 142 int irq;
520 int setting; 143 struct rtc_time time;
521}; 144};
522 145
523/* 146struct tps80031_clk32k_init_data {
524 * struct tps80031_regulator_platform_data - tps80031 regulator platform data. 147 int clk32k_nr;
525 * 148 bool enable;
526 * @reg_init_data: The regulator init data. 149 unsigned long ext_ctrl_flag;
527 * @ext_ctrl_flag: External control flag for sleep/power request control. 150};
528 * @config_flags: Configuration flag to configure the rails.
529 * It should be ORed of config enums.
530 */
531 151
532struct tps80031_regulator_platform_data { 152struct tps80031_gpio_init_data {
533 struct regulator_init_data *reg_init_data; 153 int gpio_nr;
534 unsigned int ext_ctrl_flag; 154 unsigned long ext_ctrl_flag;
535 unsigned int config_flags;
536}; 155};
537 156
538struct tps80031_platform_data { 157struct tps80031_platform_data {
158 int num_subdevs;
159 struct tps80031_subdev_info *subdevs;
160 int gpio_base;
539 int irq_base; 161 int irq_base;
162 struct tps80031_32kclock_plat_data *clk32k_pdata;
163 struct tps80031_gpio_init_data *gpio_init_data;
164 int gpio_init_data_size;
165 struct tps80031_clk32k_init_data *clk32k_init_data;
166 int clk32k_init_data_size;
540 bool use_power_off; 167 bool use_power_off;
541 struct tps80031_pupd_init_data *pupd_init_data;
542 int pupd_init_data_size;
543 struct tps80031_regulator_platform_data
544 *regulator_pdata[TPS80031_REGULATOR_MAX];
545}; 168};
546 169
547static inline int tps80031_write(struct device *dev, int sid, 170struct tps80031_bg_platform_data {
548 int reg, uint8_t val) 171 int irq_base;
549{ 172 int battery_present;
550 struct tps80031 *tps80031 = dev_get_drvdata(dev); 173};
551
552 return regmap_write(tps80031->regmap[sid], reg, val);
553}
554
555static inline int tps80031_writes(struct device *dev, int sid, int reg,
556 int len, uint8_t *val)
557{
558 struct tps80031 *tps80031 = dev_get_drvdata(dev);
559
560 return regmap_bulk_write(tps80031->regmap[sid], reg, val, len);
561}
562
563static inline int tps80031_read(struct device *dev, int sid,
564 int reg, uint8_t *val)
565{
566 struct tps80031 *tps80031 = dev_get_drvdata(dev);
567 unsigned int ival;
568 int ret;
569
570 ret = regmap_read(tps80031->regmap[sid], reg, &ival);
571 if (ret < 0) {
572 dev_err(dev, "failed reading from reg 0x%02x\n", reg);
573 return ret;
574 }
575
576 *val = ival;
577 return ret;
578}
579
580static inline int tps80031_reads(struct device *dev, int sid,
581 int reg, int len, uint8_t *val)
582{
583 struct tps80031 *tps80031 = dev_get_drvdata(dev);
584
585 return regmap_bulk_read(tps80031->regmap[sid], reg, val, len);
586}
587
588static inline int tps80031_set_bits(struct device *dev, int sid,
589 int reg, uint8_t bit_mask)
590{
591 struct tps80031 *tps80031 = dev_get_drvdata(dev);
592
593 return regmap_update_bits(tps80031->regmap[sid], reg,
594 bit_mask, bit_mask);
595}
596
597static inline int tps80031_clr_bits(struct device *dev, int sid,
598 int reg, uint8_t bit_mask)
599{
600 struct tps80031 *tps80031 = dev_get_drvdata(dev);
601
602 return regmap_update_bits(tps80031->regmap[sid], reg, bit_mask, 0);
603}
604
605static inline int tps80031_update(struct device *dev, int sid,
606 int reg, uint8_t val, uint8_t mask)
607{
608 struct tps80031 *tps80031 = dev_get_drvdata(dev);
609
610 return regmap_update_bits(tps80031->regmap[sid], reg, mask, val);
611}
612
613static inline unsigned long tps80031_get_chip_info(struct device *dev)
614{
615 struct tps80031 *tps80031 = dev_get_drvdata(dev);
616
617 return tps80031->chip_info;
618}
619 174
620static inline int tps80031_get_pmu_version(struct device *dev) 175/*
621{ 176 * NOTE: the functions below are not intended for use outside
622 struct tps80031 *tps80031 = dev_get_drvdata(dev); 177 * of the TPS80031 sub-device drivers
178 */
179extern int tps80031_write(struct device *dev, int sid, int reg, uint8_t val);
180extern int tps80031_writes(struct device *dev, int sid, int reg, int len,
181 uint8_t *val);
182extern int tps80031_read(struct device *dev, int sid, int reg, uint8_t *val);
183extern int tps80031_reads(struct device *dev, int sid, int reg, int len,
184 uint8_t *val);
185extern int tps80031_set_bits(struct device *dev, int sid, int reg,
186 uint8_t bit_mask);
187extern int tps80031_clr_bits(struct device *dev, int sid, int reg,
188 uint8_t bit_mask);
189extern int tps80031_update(struct device *dev, int sid, int reg, uint8_t val,
190 uint8_t mask);
191extern int tps80031_force_update(struct device *dev, int sid, int reg,
192 uint8_t val, uint8_t mask);
193extern int tps80031_ext_power_req_config(struct device *dev,
194 unsigned long ext_ctrl_flag, int preq_bit,
195 int state_reg_add, int trans_reg_add);
623 196
624 return tps80031->es_version; 197extern unsigned long tps80031_get_chip_info(struct device *dev);
625}
626 198
627static inline int tps80031_irq_get_virq(struct device *dev, int irq) 199extern int tps80031_gpadc_conversion(int channle_no);
628{
629 struct tps80031 *tps80031 = dev_get_drvdata(dev);
630 200
631 return regmap_irq_get_virq(tps80031->irq_data, irq); 201extern int tps80031_get_pmu_version(struct device *dev);
632}
633 202
634extern int tps80031_ext_power_req_config(struct device *dev,
635 unsigned long ext_ctrl_flag, int preq_bit,
636 int state_reg_add, int trans_reg_add);
637#endif /*__LINUX_MFD_TPS80031_H */ 203#endif /*__LINUX_MFD_TPS80031_H */
diff --git a/include/linux/mfd/twl6040.h b/include/linux/mfd/twl6040.h
index 94ac944d12f..4c806f6d663 100644
--- a/include/linux/mfd/twl6040.h
+++ b/include/linux/mfd/twl6040.h
@@ -27,7 +27,6 @@
27 27
28#include <linux/interrupt.h> 28#include <linux/interrupt.h>
29#include <linux/mfd/core.h> 29#include <linux/mfd/core.h>
30#include <linux/regulator/consumer.h>
31 30
32#define TWL6040_REG_ASICID 0x01 31#define TWL6040_REG_ASICID 0x01
33#define TWL6040_REG_ASICREV 0x02 32#define TWL6040_REG_ASICREV 0x02
@@ -69,6 +68,11 @@
69#define TWL6040_REG_ACCCTL 0x2D 68#define TWL6040_REG_ACCCTL 0x2D
70#define TWL6040_REG_STATUS 0x2E 69#define TWL6040_REG_STATUS 0x2E
71 70
71#define TWL6040_CACHEREGNUM (TWL6040_REG_STATUS + 1)
72
73#define TWL6040_VIOREGNUM 18
74#define TWL6040_VDDREGNUM 21
75
72/* INTID (0x03) fields */ 76/* INTID (0x03) fields */
73 77
74#define TWL6040_THINT 0x01 78#define TWL6040_THINT 0x01
@@ -121,29 +125,39 @@
121#define TWL6040_LPLLFIN 0x08 125#define TWL6040_LPLLFIN 0x08
122#define TWL6040_HPLLSEL 0x10 126#define TWL6040_HPLLSEL 0x10
123 127
124/* HSLCTL/R (0x10/0x11) fields */ 128/* HSLCTL (0x10) fields */
129
130#define TWL6040_HSDACMODEL 0x02
131#define TWL6040_HSDRVMODEL 0x08
125 132
126#define TWL6040_HSDACENA (1 << 0) 133/* HSRCTL (0x11) fields */
127#define TWL6040_HSDACMODE (1 << 1)
128#define TWL6040_HSDRVMODE (1 << 3)
129 134
130/* VIBCTLL/R (0x18/0x1A) fields */ 135#define TWL6040_HSDACMODER 0x02
136#define TWL6040_HSDRVMODER 0x08
131 137
132#define TWL6040_VIBENA (1 << 0) 138/* VIBCTLL (0x18) fields */
133#define TWL6040_VIBSEL (1 << 1)
134#define TWL6040_VIBCTRL (1 << 2)
135#define TWL6040_VIBCTRL_P (1 << 3)
136#define TWL6040_VIBCTRL_N (1 << 4)
137 139
138/* VIBDATL/R (0x19/0x1B) fields */ 140#define TWL6040_VIBENAL 0x01
141#define TWL6040_VIBCTRLL 0x04
142#define TWL6040_VIBCTRLLP 0x08
143#define TWL6040_VIBCTRLLN 0x10
144
145/* VIBDATL (0x19) fields */
139 146
140#define TWL6040_VIBDAT_MAX 0x64 147#define TWL6040_VIBDAT_MAX 0x64
141 148
149/* VIBCTLR (0x1A) fields */
150
151#define TWL6040_VIBENAR 0x01
152#define TWL6040_VIBCTRLR 0x04
153#define TWL6040_VIBCTRLRP 0x08
154#define TWL6040_VIBCTRLRN 0x10
155
142/* GPOCTL (0x1E) fields */ 156/* GPOCTL (0x1E) fields */
143 157
144#define TWL6040_GPO1 0x01 158#define TWL6040_GPO1 0x01
145#define TWL6040_GPO2 0x02 159#define TWL6040_GPO2 0x02
146#define TWL6040_GPO3 0x04 160#define TWL6040_GPO3 0x03
147 161
148/* ACCCTL (0x2D) fields */ 162/* ACCCTL (0x2D) fields */
149 163
@@ -158,12 +172,11 @@
158#define TWL6040_VIBROCDET 0x20 172#define TWL6040_VIBROCDET 0x20
159#define TWL6040_TSHUTDET 0x40 173#define TWL6040_TSHUTDET 0x40
160 174
161#define TWL6040_CELLS 3 175#define TWL6040_CELLS 2
162 176
163#define TWL6040_REV_ES1_0 0x00 177#define TWL6040_REV_ES1_0 0x00
164#define TWL6040_REV_ES1_1 0x01 /* Rev ES1.1 and ES1.2 */ 178#define TWL6040_REV_ES1_1 0x01
165#define TWL6040_REV_ES1_3 0x02 179#define TWL6040_REV_ES1_2 0x02
166#define TWL6041_REV_ES2_0 0x10
167 180
168#define TWL6040_IRQ_TH 0 181#define TWL6040_IRQ_TH 0
169#define TWL6040_IRQ_PLUG 1 182#define TWL6040_IRQ_PLUG 1
@@ -176,45 +189,10 @@
176#define TWL6040_SYSCLK_SEL_LPPLL 0 189#define TWL6040_SYSCLK_SEL_LPPLL 0
177#define TWL6040_SYSCLK_SEL_HPPLL 1 190#define TWL6040_SYSCLK_SEL_HPPLL 1
178 191
179#define TWL6040_GPO_MAX 3
180
181struct twl6040_codec_data {
182 u16 hs_left_step;
183 u16 hs_right_step;
184 u16 hf_left_step;
185 u16 hf_right_step;
186};
187
188struct twl6040_vibra_data {
189 unsigned int vibldrv_res; /* left driver resistance */
190 unsigned int vibrdrv_res; /* right driver resistance */
191 unsigned int viblmotor_res; /* left motor resistance */
192 unsigned int vibrmotor_res; /* right motor resistance */
193 int vddvibl_uV; /* VDDVIBL volt, set 0 for fixed reg */
194 int vddvibr_uV; /* VDDVIBR volt, set 0 for fixed reg */
195};
196
197struct twl6040_gpo_data {
198 int gpio_base;
199};
200
201struct twl6040_platform_data {
202 int audpwron_gpio; /* audio power-on gpio */
203
204 struct twl6040_codec_data *codec;
205 struct twl6040_vibra_data *vibra;
206 struct twl6040_gpo_data *gpo;
207};
208
209struct regmap;
210struct regmap_irq_chips_data;
211
212struct twl6040 { 192struct twl6040 {
213 struct device *dev; 193 struct device *dev;
214 struct regmap *regmap;
215 struct regmap_irq_chip_data *irq_data;
216 struct regulator_bulk_data supplies[2]; /* supplies for vio, v2v1 */
217 struct mutex mutex; 194 struct mutex mutex;
195 struct mutex io_mutex;
218 struct mutex irq_mutex; 196 struct mutex irq_mutex;
219 struct mfd_cell cells[TWL6040_CELLS]; 197 struct mfd_cell cells[TWL6040_CELLS];
220 struct completion ready; 198 struct completion ready;
@@ -222,16 +200,14 @@ struct twl6040 {
222 int audpwron; 200 int audpwron;
223 int power_count; 201 int power_count;
224 int rev; 202 int rev;
225 u8 vibra_ctrl_cache[2];
226 203
227 /* PLL configuration */
228 int pll; 204 int pll;
229 unsigned int sysclk; 205 unsigned int sysclk;
230 unsigned int mclk;
231 206
232 unsigned int irq; 207 unsigned int irq;
233 unsigned int irq_ready; 208 unsigned int irq_base;
234 unsigned int irq_th; 209 u8 irq_masks_cur;
210 u8 irq_masks_cache;
235}; 211};
236 212
237int twl6040_reg_read(struct twl6040 *twl6040, unsigned int reg); 213int twl6040_reg_read(struct twl6040 *twl6040, unsigned int reg);
@@ -246,14 +222,7 @@ int twl6040_set_pll(struct twl6040 *twl6040, int pll_id,
246 unsigned int freq_in, unsigned int freq_out); 222 unsigned int freq_in, unsigned int freq_out);
247int twl6040_get_pll(struct twl6040 *twl6040); 223int twl6040_get_pll(struct twl6040 *twl6040);
248unsigned int twl6040_get_sysclk(struct twl6040 *twl6040); 224unsigned int twl6040_get_sysclk(struct twl6040 *twl6040);
249 225int twl6040_irq_init(struct twl6040 *twl6040);
250/* Get the combined status of the vibra control register */ 226void twl6040_irq_exit(struct twl6040 *twl6040);
251int twl6040_get_vibralr_status(struct twl6040 *twl6040);
252
253static inline int twl6040_get_revid(struct twl6040 *twl6040)
254{
255 return twl6040->rev;
256}
257
258 227
259#endif /* End of __TWL6040_CODEC_H__ */ 228#endif /* End of __TWL6040_CODEC_H__ */
diff --git a/include/linux/mfd/ucb1x00.h b/include/linux/mfd/ucb1x00.h
index 28af4175636..4321f044d1e 100644
--- a/include/linux/mfd/ucb1x00.h
+++ b/include/linux/mfd/ucb1x00.h
@@ -12,7 +12,7 @@
12 12
13#include <linux/mfd/mcp.h> 13#include <linux/mfd/mcp.h>
14#include <linux/gpio.h> 14#include <linux/gpio.h>
15#include <linux/mutex.h> 15#include <linux/semaphore.h>
16 16
17#define UCB_IO_DATA 0x00 17#define UCB_IO_DATA 0x00
18#define UCB_IO_DIR 0x01 18#define UCB_IO_DIR 0x01
@@ -104,27 +104,17 @@
104#define UCB_MODE_DYN_VFLAG_ENA (1 << 12) 104#define UCB_MODE_DYN_VFLAG_ENA (1 << 12)
105#define UCB_MODE_AUD_OFF_CAN (1 << 13) 105#define UCB_MODE_AUD_OFF_CAN (1 << 13)
106 106
107enum ucb1x00_reset {
108 UCB_RST_PROBE,
109 UCB_RST_RESUME,
110 UCB_RST_SUSPEND,
111 UCB_RST_REMOVE,
112 UCB_RST_PROBE_FAIL,
113};
114 107
115struct ucb1x00_plat_data { 108struct ucb1x00_irq {
116 void (*reset)(enum ucb1x00_reset); 109 void *devid;
117 unsigned irq_base; 110 void (*fn)(int, void *);
118 int gpio_base;
119 unsigned can_wakeup;
120}; 111};
121 112
122struct ucb1x00 { 113struct ucb1x00 {
123 raw_spinlock_t irq_lock; 114 spinlock_t lock;
124 struct mcp *mcp; 115 struct mcp *mcp;
125 unsigned int irq; 116 unsigned int irq;
126 int irq_base; 117 struct semaphore adc_sem;
127 struct mutex adc_mutex;
128 spinlock_t io_lock; 118 spinlock_t io_lock;
129 u16 id; 119 u16 id;
130 u16 io_dir; 120 u16 io_dir;
@@ -132,8 +122,7 @@ struct ucb1x00 {
132 u16 adc_cr; 122 u16 adc_cr;
133 u16 irq_fal_enbl; 123 u16 irq_fal_enbl;
134 u16 irq_ris_enbl; 124 u16 irq_ris_enbl;
135 u16 irq_mask; 125 struct ucb1x00_irq irq_handler[16];
136 u16 irq_wake;
137 struct device dev; 126 struct device dev;
138 struct list_head node; 127 struct list_head node;
139 struct list_head devs; 128 struct list_head devs;
@@ -155,7 +144,7 @@ struct ucb1x00_driver {
155 struct list_head devs; 144 struct list_head devs;
156 int (*add)(struct ucb1x00_dev *dev); 145 int (*add)(struct ucb1x00_dev *dev);
157 void (*remove)(struct ucb1x00_dev *dev); 146 void (*remove)(struct ucb1x00_dev *dev);
158 int (*suspend)(struct ucb1x00_dev *dev); 147 int (*suspend)(struct ucb1x00_dev *dev, pm_message_t state);
159 int (*resume)(struct ucb1x00_dev *dev); 148 int (*resume)(struct ucb1x00_dev *dev);
160}; 149};
161 150
@@ -256,4 +245,15 @@ unsigned int ucb1x00_adc_read(struct ucb1x00 *ucb, int adc_channel, int sync);
256void ucb1x00_adc_enable(struct ucb1x00 *ucb); 245void ucb1x00_adc_enable(struct ucb1x00 *ucb);
257void ucb1x00_adc_disable(struct ucb1x00 *ucb); 246void ucb1x00_adc_disable(struct ucb1x00 *ucb);
258 247
248/*
249 * Which edges of the IRQ do you want to control today?
250 */
251#define UCB_RISING (1 << 0)
252#define UCB_FALLING (1 << 1)
253
254int ucb1x00_hook_irq(struct ucb1x00 *ucb, unsigned int idx, void (*fn)(int, void *), void *devid);
255void ucb1x00_enable_irq(struct ucb1x00 *ucb, unsigned int idx, int edges);
256void ucb1x00_disable_irq(struct ucb1x00 *ucb, unsigned int idx, int edges);
257int ucb1x00_free_irq(struct ucb1x00 *ucb, unsigned int idx, void *devid);
258
259#endif 259#endif
diff --git a/include/linux/mfd/viperboard.h b/include/linux/mfd/viperboard.h
deleted file mode 100644
index 193452848c0..00000000000
--- a/include/linux/mfd/viperboard.h
+++ /dev/null
@@ -1,110 +0,0 @@
1/*
2 * include/linux/mfd/viperboard.h
3 *
4 * Nano River Technologies viperboard definitions
5 *
6 * (C) 2012 by Lemonage GmbH
7 * Author: Lars Poeschel <poeschel@lemonage.de>
8 * All rights reserved.
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
14 *
15 */
16
17#ifndef __MFD_VIPERBOARD_H__
18#define __MFD_VIPERBOARD_H__
19
20#include <linux/types.h>
21#include <linux/usb.h>
22
23#define VPRBRD_EP_OUT 0x02
24#define VPRBRD_EP_IN 0x86
25
26#define VPRBRD_I2C_MSG_LEN 512 /* max length of a msg on USB level */
27
28#define VPRBRD_I2C_FREQ_6MHZ 1 /* 6 MBit/s */
29#define VPRBRD_I2C_FREQ_3MHZ 2 /* 3 MBit/s */
30#define VPRBRD_I2C_FREQ_1MHZ 3 /* 1 MBit/s */
31#define VPRBRD_I2C_FREQ_FAST 4 /* 400 kbit/s */
32#define VPRBRD_I2C_FREQ_400KHZ VPRBRD_I2C_FREQ_FAST
33#define VPRBRD_I2C_FREQ_200KHZ 5 /* 200 kbit/s */
34#define VPRBRD_I2C_FREQ_STD 6 /* 100 kbit/s */
35#define VPRBRD_I2C_FREQ_100KHZ VPRBRD_I2C_FREQ_STD
36#define VPRBRD_I2C_FREQ_10KHZ 7 /* 10 kbit/s */
37
38#define VPRBRD_I2C_CMD_WRITE 0x00
39#define VPRBRD_I2C_CMD_READ 0x01
40#define VPRBRD_I2C_CMD_ADDR 0x02
41
42#define VPRBRD_USB_TYPE_OUT 0x40
43#define VPRBRD_USB_TYPE_IN 0xc0
44#define VPRBRD_USB_TIMEOUT_MS 100
45#define VPRBRD_USB_REQUEST_I2C_FREQ 0xe6
46#define VPRBRD_USB_REQUEST_I2C 0xe9
47#define VPRBRD_USB_REQUEST_MAJOR 0xea
48#define VPRBRD_USB_REQUEST_MINOR 0xeb
49#define VPRBRD_USB_REQUEST_ADC 0xec
50#define VPRBRD_USB_REQUEST_GPIOA 0xed
51#define VPRBRD_USB_REQUEST_GPIOB 0xdd
52
53struct vprbrd_i2c_write_hdr {
54 u8 cmd;
55 u16 addr;
56 u8 len1;
57 u8 len2;
58 u8 last;
59 u8 chan;
60 u16 spi;
61} __packed;
62
63struct vprbrd_i2c_read_hdr {
64 u8 cmd;
65 u16 addr;
66 u8 len0;
67 u8 len1;
68 u8 len2;
69 u8 len3;
70 u8 len4;
71 u8 len5;
72 u16 tf1; /* transfer 1 length */
73 u16 tf2; /* transfer 2 length */
74} __packed;
75
76struct vprbrd_i2c_status {
77 u8 unknown[11];
78 u8 status;
79} __packed;
80
81struct vprbrd_i2c_write_msg {
82 struct vprbrd_i2c_write_hdr header;
83 u8 data[VPRBRD_I2C_MSG_LEN
84 - sizeof(struct vprbrd_i2c_write_hdr)];
85} __packed;
86
87struct vprbrd_i2c_read_msg {
88 struct vprbrd_i2c_read_hdr header;
89 u8 data[VPRBRD_I2C_MSG_LEN
90 - sizeof(struct vprbrd_i2c_read_hdr)];
91} __packed;
92
93struct vprbrd_i2c_addr_msg {
94 u8 cmd;
95 u8 addr;
96 u8 unknown1;
97 u16 len;
98 u8 unknown2;
99 u8 unknown3;
100} __packed;
101
102/* Structure to hold all device specific stuff */
103struct vprbrd {
104 struct usb_device *usb_dev; /* the usb device for this device */
105 struct mutex lock;
106 u8 buf[sizeof(struct vprbrd_i2c_write_msg)];
107 struct platform_device pdev;
108};
109
110#endif /* __MFD_VIPERBOARD_H__ */
diff --git a/include/linux/mfd/wm831x/core.h b/include/linux/mfd/wm831x/core.h
index 4a3b83a7761..ed8fe0d0409 100644
--- a/include/linux/mfd/wm831x/core.h
+++ b/include/linux/mfd/wm831x/core.h
@@ -17,7 +17,6 @@
17 17
18#include <linux/completion.h> 18#include <linux/completion.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/irqdomain.h>
21#include <linux/list.h> 20#include <linux/list.h>
22#include <linux/regmap.h> 21#include <linux/regmap.h>
23 22
@@ -339,7 +338,6 @@
339#define WM831X_FLL_CLK_SRC_WIDTH 2 /* FLL_CLK_SRC - [1:0] */ 338#define WM831X_FLL_CLK_SRC_WIDTH 2 /* FLL_CLK_SRC - [1:0] */
340 339
341struct regulator_dev; 340struct regulator_dev;
342struct irq_domain;
343 341
344#define WM831X_NUM_IRQ_REGS 5 342#define WM831X_NUM_IRQ_REGS 5
345#define WM831X_NUM_GPIO_REGS 16 343#define WM831X_NUM_GPIO_REGS 16
@@ -369,7 +367,7 @@ struct wm831x {
369 367
370 int irq; /* Our chip IRQ */ 368 int irq; /* Our chip IRQ */
371 struct mutex irq_lock; 369 struct mutex irq_lock;
372 struct irq_domain *irq_domain; 370 int irq_base;
373 int irq_masks_cur[WM831X_NUM_IRQ_REGS]; /* Currently active value */ 371 int irq_masks_cur[WM831X_NUM_IRQ_REGS]; /* Currently active value */
374 int irq_masks_cache[WM831X_NUM_IRQ_REGS]; /* Cached hardware value */ 372 int irq_masks_cache[WM831X_NUM_IRQ_REGS]; /* Cached hardware value */
375 373
@@ -384,8 +382,6 @@ struct wm831x {
384 382
385 /* Used by the interrupt controller code to post writes */ 383 /* Used by the interrupt controller code to post writes */
386 int gpio_update[WM831X_NUM_GPIO_REGS]; 384 int gpio_update[WM831X_NUM_GPIO_REGS];
387 bool gpio_level_high[WM831X_NUM_GPIO_REGS];
388 bool gpio_level_low[WM831X_NUM_GPIO_REGS];
389 385
390 struct mutex auxadc_lock; 386 struct mutex auxadc_lock;
391 struct list_head auxadc_pending; 387 struct list_head auxadc_pending;
@@ -420,11 +416,6 @@ int wm831x_irq_init(struct wm831x *wm831x, int irq);
420void wm831x_irq_exit(struct wm831x *wm831x); 416void wm831x_irq_exit(struct wm831x *wm831x);
421void wm831x_auxadc_init(struct wm831x *wm831x); 417void wm831x_auxadc_init(struct wm831x *wm831x);
422 418
423static inline int wm831x_irq(struct wm831x *wm831x, int irq)
424{
425 return irq_create_mapping(wm831x->irq_domain, irq);
426}
427
428extern struct regmap_config wm831x_regmap_config; 419extern struct regmap_config wm831x_regmap_config;
429 420
430#endif 421#endif
diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h
index dcc9631b305..1d7a3f7b3b5 100644
--- a/include/linux/mfd/wm831x/pdata.h
+++ b/include/linux/mfd/wm831x/pdata.h
@@ -26,7 +26,7 @@ struct wm831x_backlight_pdata {
26struct wm831x_backup_pdata { 26struct wm831x_backup_pdata {
27 int charger_enable; 27 int charger_enable;
28 int no_constant_voltage; /** Disable constant voltage charging */ 28 int no_constant_voltage; /** Disable constant voltage charging */
29 int vlim; /** Voltage limit in millivolts */ 29 int vlim; /** Voltage limit in milivolts */
30 int ilim; /** Current limit in microamps */ 30 int ilim; /** Current limit in microamps */
31}; 31};
32 32
diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/core.h
index 509481d9cf1..98fcc977e82 100644
--- a/include/linux/mfd/wm8350/core.h
+++ b/include/linux/mfd/wm8350/core.h
@@ -17,7 +17,6 @@
17#include <linux/mutex.h> 17#include <linux/mutex.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/completion.h> 19#include <linux/completion.h>
20#include <linux/regmap.h>
21 20
22#include <linux/mfd/wm8350/audio.h> 21#include <linux/mfd/wm8350/audio.h>
23#include <linux/mfd/wm8350/gpio.h> 22#include <linux/mfd/wm8350/gpio.h>
@@ -67,9 +66,6 @@
67 66
68#define WM8350_MAX_REGISTER 0xFF 67#define WM8350_MAX_REGISTER 0xFF
69 68
70#define WM8350_UNLOCK_KEY 0x0013
71#define WM8350_LOCK_KEY 0x0000
72
73/* 69/*
74 * Field Definitions. 70 * Field Definitions.
75 */ 71 */
@@ -586,7 +582,24 @@
586 582
587#define WM8350_NUM_IRQ_REGS 7 583#define WM8350_NUM_IRQ_REGS 7
588 584
589extern const struct regmap_config wm8350_regmap; 585struct wm8350_reg_access {
586 u16 readable; /* Mask of readable bits */
587 u16 writable; /* Mask of writable bits */
588 u16 vol; /* Mask of volatile bits */
589};
590extern const struct wm8350_reg_access wm8350_reg_io_map[];
591extern const u16 wm8350_mode0_defaults[];
592extern const u16 wm8350_mode1_defaults[];
593extern const u16 wm8350_mode2_defaults[];
594extern const u16 wm8350_mode3_defaults[];
595extern const u16 wm8351_mode0_defaults[];
596extern const u16 wm8351_mode1_defaults[];
597extern const u16 wm8351_mode2_defaults[];
598extern const u16 wm8351_mode3_defaults[];
599extern const u16 wm8352_mode0_defaults[];
600extern const u16 wm8352_mode1_defaults[];
601extern const u16 wm8352_mode2_defaults[];
602extern const u16 wm8352_mode3_defaults[];
590 603
591struct wm8350; 604struct wm8350;
592 605
@@ -599,8 +612,14 @@ struct wm8350 {
599 struct device *dev; 612 struct device *dev;
600 613
601 /* device IO */ 614 /* device IO */
602 struct regmap *regmap; 615 union {
603 bool unlocked; 616 struct i2c_client *i2c_client;
617 struct spi_device *spi_device;
618 };
619 int (*read_dev)(struct wm8350 *wm8350, char reg, int size, void *dest);
620 int (*write_dev)(struct wm8350 *wm8350, char reg, int size,
621 void *src);
622 u16 *reg_cache;
604 623
605 struct mutex auxadc_mutex; 624 struct mutex auxadc_mutex;
606 struct completion auxadc_done; 625 struct completion auxadc_done;
diff --git a/include/linux/mfd/wm8400-private.h b/include/linux/mfd/wm8400-private.h
index 2de565b94d0..0147b696851 100644
--- a/include/linux/mfd/wm8400-private.h
+++ b/include/linux/mfd/wm8400-private.h
@@ -24,14 +24,19 @@
24#include <linux/mfd/wm8400.h> 24#include <linux/mfd/wm8400.h>
25#include <linux/mutex.h> 25#include <linux/mutex.h>
26#include <linux/platform_device.h> 26#include <linux/platform_device.h>
27#include <linux/regmap.h> 27
28struct regmap;
28 29
29#define WM8400_REGISTER_COUNT 0x55 30#define WM8400_REGISTER_COUNT 0x55
30 31
31struct wm8400 { 32struct wm8400 {
32 struct device *dev; 33 struct device *dev;
34
35 struct mutex io_lock;
33 struct regmap *regmap; 36 struct regmap *regmap;
34 37
38 u16 reg_cache[WM8400_REGISTER_COUNT];
39
35 struct platform_device regulators[6]; 40 struct platform_device regulators[6];
36}; 41};
37 42
@@ -925,11 +930,6 @@ struct wm8400 {
925 930
926u16 wm8400_reg_read(struct wm8400 *wm8400, u8 reg); 931u16 wm8400_reg_read(struct wm8400 *wm8400, u8 reg);
927int wm8400_block_read(struct wm8400 *wm8400, u8 reg, int count, u16 *data); 932int wm8400_block_read(struct wm8400 *wm8400, u8 reg, int count, u16 *data);
928 933int wm8400_set_bits(struct wm8400 *wm8400, u8 reg, u16 mask, u16 val);
929static inline int wm8400_set_bits(struct wm8400 *wm8400, u8 reg,
930 u16 mask, u16 val)
931{
932 return regmap_update_bits(wm8400->regmap, reg, mask, val);
933}
934 934
935#endif 935#endif
diff --git a/include/linux/mfd/wm8994/core.h b/include/linux/mfd/wm8994/core.h
index ae5c249530b..45df450d869 100644
--- a/include/linux/mfd/wm8994/core.h
+++ b/include/linux/mfd/wm8994/core.h
@@ -15,20 +15,16 @@
15#ifndef __MFD_WM8994_CORE_H__ 15#ifndef __MFD_WM8994_CORE_H__
16#define __MFD_WM8994_CORE_H__ 16#define __MFD_WM8994_CORE_H__
17 17
18#include <linux/mutex.h>
19#include <linux/interrupt.h> 18#include <linux/interrupt.h>
20#include <linux/regmap.h>
21
22#include <linux/mfd/wm8994/pdata.h>
23 19
24enum wm8994_type { 20enum wm8994_type {
25 WM8994 = 0, 21 WM8994 = 0,
26 WM8958 = 1, 22 WM8958 = 1,
27 WM1811 = 2,
28}; 23};
29 24
30struct regulator_dev; 25struct regulator_dev;
31struct regulator_bulk_data; 26struct regulator_bulk_data;
27struct regmap;
32 28
33#define WM8994_NUM_GPIO_REGS 11 29#define WM8994_NUM_GPIO_REGS 11
34#define WM8994_NUM_LDO_REGS 2 30#define WM8994_NUM_LDO_REGS 2
@@ -57,25 +53,22 @@ struct regulator_bulk_data;
57struct wm8994 { 53struct wm8994 {
58 struct mutex irq_lock; 54 struct mutex irq_lock;
59 55
60 struct wm8994_pdata pdata;
61
62 enum wm8994_type type; 56 enum wm8994_type type;
63 int revision;
64 int cust_id;
65 57
66 struct device *dev; 58 struct device *dev;
67 struct regmap *regmap; 59 struct regmap *regmap;
68 60
69 bool ldo_ena_always_driven;
70
71 int gpio_base; 61 int gpio_base;
72 int irq_base; 62 int irq_base;
73 63
74 int irq; 64 int irq;
75 struct regmap_irq_chip_data *irq_data; 65 u16 irq_masks_cur[WM8994_NUM_IRQ_REGS];
66 u16 irq_masks_cache[WM8994_NUM_IRQ_REGS];
76 67
77 /* Used over suspend/resume */ 68 /* Used over suspend/resume */
78 bool suspended; 69 bool suspended;
70 u16 ldo_regs[WM8994_NUM_LDO_REGS];
71 u16 gpio_regs[WM8994_NUM_GPIO_REGS];
79 72
80 struct regulator_dev *dbvdd; 73 struct regulator_dev *dbvdd;
81 int num_supplies; 74 int num_supplies;
@@ -99,17 +92,17 @@ static inline int wm8994_request_irq(struct wm8994 *wm8994, int irq,
99 irq_handler_t handler, const char *name, 92 irq_handler_t handler, const char *name,
100 void *data) 93 void *data)
101{ 94{
102 if (!wm8994->irq_data) 95 if (!wm8994->irq_base)
103 return -EINVAL; 96 return -EINVAL;
104 return request_threaded_irq(regmap_irq_get_virq(wm8994->irq_data, irq), 97 return request_threaded_irq(wm8994->irq_base + irq, NULL, handler,
105 NULL, handler, IRQF_TRIGGER_RISING, name, 98 IRQF_TRIGGER_RISING, name,
106 data); 99 data);
107} 100}
108static inline void wm8994_free_irq(struct wm8994 *wm8994, int irq, void *data) 101static inline void wm8994_free_irq(struct wm8994 *wm8994, int irq, void *data)
109{ 102{
110 if (!wm8994->irq_data) 103 if (!wm8994->irq_base)
111 return; 104 return;
112 free_irq(regmap_irq_get_virq(wm8994->irq_data, irq), data); 105 free_irq(wm8994->irq_base + irq, data);
113} 106}
114 107
115int wm8994_irq_init(struct wm8994 *wm8994); 108int wm8994_irq_init(struct wm8994 *wm8994);
diff --git a/include/linux/mfd/wm8994/pdata.h b/include/linux/mfd/wm8994/pdata.h
index 8e21a094836..97cf4f27d64 100644
--- a/include/linux/mfd/wm8994/pdata.h
+++ b/include/linux/mfd/wm8994/pdata.h
@@ -22,7 +22,8 @@ struct wm8994_ldo_pdata {
22 /** GPIOs to enable regulator, 0 or less if not available */ 22 /** GPIOs to enable regulator, 0 or less if not available */
23 int enable; 23 int enable;
24 24
25 const struct regulator_init_data *init_data; 25 const char *supply;
26 struct regulator_init_data *init_data;
26}; 27};
27 28
28#define WM8994_CONFIGURE_GPIO 0x10000 29#define WM8994_CONFIGURE_GPIO 0x10000
@@ -112,23 +113,6 @@ struct wm8958_enh_eq_cfg {
112 u16 regs[WM8958_ENH_EQ_REGS]; 113 u16 regs[WM8958_ENH_EQ_REGS];
113}; 114};
114 115
115/**
116 * Microphone detection rates, used to tune response rates and power
117 * consumption for WM8958/WM1811 microphone detection.
118 *
119 * @sysclk: System clock rate to use this configuration for.
120 * @idle: True if this configuration should use when no accessory is detected,
121 * false otherwise.
122 * @start: Value for MICD_BIAS_START_TIME register field (not shifted).
123 * @rate: Value for MICD_RATE register field (not shifted).
124 */
125struct wm8958_micd_rate {
126 int sysclk;
127 bool idle;
128 int start;
129 int rate;
130};
131
132struct wm8994_pdata { 116struct wm8994_pdata {
133 int gpio_base; 117 int gpio_base;
134 118
@@ -141,7 +125,6 @@ struct wm8994_pdata {
141 struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; 125 struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO];
142 126
143 int irq_base; /** Base IRQ number for WM8994, required for IRQs */ 127 int irq_base; /** Base IRQ number for WM8994, required for IRQs */
144 unsigned long irq_flags; /** user irq flags */
145 128
146 int num_drc_cfgs; 129 int num_drc_cfgs;
147 struct wm8994_drc_cfg *drc_cfgs; 130 struct wm8994_drc_cfg *drc_cfgs;
@@ -161,13 +144,6 @@ struct wm8994_pdata {
161 int num_enh_eq_cfgs; 144 int num_enh_eq_cfgs;
162 struct wm8958_enh_eq_cfg *enh_eq_cfgs; 145 struct wm8958_enh_eq_cfg *enh_eq_cfgs;
163 146
164 int num_micd_rates;
165 struct wm8958_micd_rate *micd_rates;
166
167 /* Power up delays to add after microphone bias power up (ms) */
168 int micb1_delay;
169 int micb2_delay;
170
171 /* LINEOUT can be differential or single ended */ 147 /* LINEOUT can be differential or single ended */
172 unsigned int lineout1_diff:1; 148 unsigned int lineout1_diff:1;
173 unsigned int lineout2_diff:1; 149 unsigned int lineout2_diff:1;
@@ -176,11 +152,6 @@ struct wm8994_pdata {
176 unsigned int lineout1fb:1; 152 unsigned int lineout1fb:1;
177 unsigned int lineout2fb:1; 153 unsigned int lineout2fb:1;
178 154
179 /* Delay between detecting a jack and starting microphone
180 * detect (specified in ms)
181 */
182 int micdet_delay;
183
184 /* IRQ for microphone detection if brought out directly as a 155 /* IRQ for microphone detection if brought out directly as a
185 * signal. 156 * signal.
186 */ 157 */
@@ -194,27 +165,8 @@ struct wm8994_pdata {
194 unsigned int jd_scthr:2; 165 unsigned int jd_scthr:2;
195 unsigned int jd_thr:2; 166 unsigned int jd_thr:2;
196 167
197 /* Configure WM1811 jack detection for use with external capacitor */
198 unsigned int jd_ext_cap:1;
199
200 /* WM8958 microphone bias configuration */ 168 /* WM8958 microphone bias configuration */
201 int micbias[2]; 169 int micbias[2];
202
203 /* WM8958 microphone detection ranges */
204 u16 micd_lvl_sel;
205
206 /* Disable the internal pull downs on the LDOs if they are
207 * always driven (eg, connected to an always on supply or
208 * GPIO that always drives an output. If they float power
209 * consumption will rise.
210 */
211 bool ldo_ena_always_driven;
212
213 /*
214 * SPKMODE must be pulled internally by the device on this
215 * system.
216 */
217 bool spkmode_pu;
218}; 170};
219 171
220#endif 172#endif
diff --git a/include/linux/mfd/wm8994/registers.h b/include/linux/mfd/wm8994/registers.h
index 053548961c1..f3ee8428467 100644
--- a/include/linux/mfd/wm8994/registers.h
+++ b/include/linux/mfd/wm8994/registers.h
@@ -72,7 +72,6 @@
72#define WM8994_DC_SERVO_2 0x55 72#define WM8994_DC_SERVO_2 0x55
73#define WM8994_DC_SERVO_4 0x57 73#define WM8994_DC_SERVO_4 0x57
74#define WM8994_DC_SERVO_READBACK 0x58 74#define WM8994_DC_SERVO_READBACK 0x58
75#define WM8994_DC_SERVO_4E 0x59
76#define WM8994_ANALOGUE_HP_1 0x60 75#define WM8994_ANALOGUE_HP_1 0x60
77#define WM8958_MIC_DETECT_1 0xD0 76#define WM8958_MIC_DETECT_1 0xD0
78#define WM8958_MIC_DETECT_2 0xD1 77#define WM8958_MIC_DETECT_2 0xD1
@@ -95,15 +94,11 @@
95#define WM8994_FLL1_CONTROL_3 0x222 94#define WM8994_FLL1_CONTROL_3 0x222
96#define WM8994_FLL1_CONTROL_4 0x223 95#define WM8994_FLL1_CONTROL_4 0x223
97#define WM8994_FLL1_CONTROL_5 0x224 96#define WM8994_FLL1_CONTROL_5 0x224
98#define WM8958_FLL1_EFS_1 0x226
99#define WM8958_FLL1_EFS_2 0x227
100#define WM8994_FLL2_CONTROL_1 0x240 97#define WM8994_FLL2_CONTROL_1 0x240
101#define WM8994_FLL2_CONTROL_2 0x241 98#define WM8994_FLL2_CONTROL_2 0x241
102#define WM8994_FLL2_CONTROL_3 0x242 99#define WM8994_FLL2_CONTROL_3 0x242
103#define WM8994_FLL2_CONTROL_4 0x243 100#define WM8994_FLL2_CONTROL_4 0x243
104#define WM8994_FLL2_CONTROL_5 0x244 101#define WM8994_FLL2_CONTROL_5 0x244
105#define WM8958_FLL2_EFS_1 0x246
106#define WM8958_FLL2_EFS_2 0x247
107#define WM8994_AIF1_CONTROL_1 0x300 102#define WM8994_AIF1_CONTROL_1 0x300
108#define WM8994_AIF1_CONTROL_2 0x301 103#define WM8994_AIF1_CONTROL_2 0x301
109#define WM8994_AIF1_MASTER_SLAVE 0x302 104#define WM8994_AIF1_MASTER_SLAVE 0x302
@@ -120,7 +115,6 @@
120#define WM8994_AIF2DAC_LRCLK 0x315 115#define WM8994_AIF2DAC_LRCLK 0x315
121#define WM8994_AIF2DAC_DATA 0x316 116#define WM8994_AIF2DAC_DATA 0x316
122#define WM8994_AIF2ADC_DATA 0x317 117#define WM8994_AIF2ADC_DATA 0x317
123#define WM1811_AIF2TX_CONTROL 0x318
124#define WM8958_AIF3_CONTROL_1 0x320 118#define WM8958_AIF3_CONTROL_1 0x320
125#define WM8958_AIF3_CONTROL_2 0x321 119#define WM8958_AIF3_CONTROL_2 0x321
126#define WM8958_AIF3DAC_DATA 0x322 120#define WM8958_AIF3DAC_DATA 0x322
@@ -139,8 +133,6 @@
139#define WM8994_AIF1_DAC1_FILTERS_2 0x421 133#define WM8994_AIF1_DAC1_FILTERS_2 0x421
140#define WM8994_AIF1_DAC2_FILTERS_1 0x422 134#define WM8994_AIF1_DAC2_FILTERS_1 0x422
141#define WM8994_AIF1_DAC2_FILTERS_2 0x423 135#define WM8994_AIF1_DAC2_FILTERS_2 0x423
142#define WM8958_AIF1_DAC1_NOISE_GATE 0x430
143#define WM8958_AIF1_DAC2_NOISE_GATE 0x431
144#define WM8994_AIF1_DRC1_1 0x440 136#define WM8994_AIF1_DRC1_1 0x440
145#define WM8994_AIF1_DRC1_2 0x441 137#define WM8994_AIF1_DRC1_2 0x441
146#define WM8994_AIF1_DRC1_3 0x442 138#define WM8994_AIF1_DRC1_3 0x442
@@ -171,7 +163,6 @@
171#define WM8994_AIF1_DAC1_EQ_BAND_5_A 0x491 163#define WM8994_AIF1_DAC1_EQ_BAND_5_A 0x491
172#define WM8994_AIF1_DAC1_EQ_BAND_5_B 0x492 164#define WM8994_AIF1_DAC1_EQ_BAND_5_B 0x492
173#define WM8994_AIF1_DAC1_EQ_BAND_5_PG 0x493 165#define WM8994_AIF1_DAC1_EQ_BAND_5_PG 0x493
174#define WM8994_AIF1_DAC1_EQ_BAND_1_C 0x494
175#define WM8994_AIF1_DAC2_EQ_GAINS_1 0x4A0 166#define WM8994_AIF1_DAC2_EQ_GAINS_1 0x4A0
176#define WM8994_AIF1_DAC2_EQ_GAINS_2 0x4A1 167#define WM8994_AIF1_DAC2_EQ_GAINS_2 0x4A1
177#define WM8994_AIF1_DAC2_EQ_BAND_1_A 0x4A2 168#define WM8994_AIF1_DAC2_EQ_BAND_1_A 0x4A2
@@ -192,7 +183,6 @@
192#define WM8994_AIF1_DAC2_EQ_BAND_5_A 0x4B1 183#define WM8994_AIF1_DAC2_EQ_BAND_5_A 0x4B1
193#define WM8994_AIF1_DAC2_EQ_BAND_5_B 0x4B2 184#define WM8994_AIF1_DAC2_EQ_BAND_5_B 0x4B2
194#define WM8994_AIF1_DAC2_EQ_BAND_5_PG 0x4B3 185#define WM8994_AIF1_DAC2_EQ_BAND_5_PG 0x4B3
195#define WM8994_AIF1_DAC2_EQ_BAND_1_C 0x4B4
196#define WM8994_AIF2_ADC_LEFT_VOLUME 0x500 186#define WM8994_AIF2_ADC_LEFT_VOLUME 0x500
197#define WM8994_AIF2_ADC_RIGHT_VOLUME 0x501 187#define WM8994_AIF2_ADC_RIGHT_VOLUME 0x501
198#define WM8994_AIF2_DAC_LEFT_VOLUME 0x502 188#define WM8994_AIF2_DAC_LEFT_VOLUME 0x502
@@ -200,7 +190,6 @@
200#define WM8994_AIF2_ADC_FILTERS 0x510 190#define WM8994_AIF2_ADC_FILTERS 0x510
201#define WM8994_AIF2_DAC_FILTERS_1 0x520 191#define WM8994_AIF2_DAC_FILTERS_1 0x520
202#define WM8994_AIF2_DAC_FILTERS_2 0x521 192#define WM8994_AIF2_DAC_FILTERS_2 0x521
203#define WM8958_AIF2_DAC_NOISE_GATE 0x530
204#define WM8994_AIF2_DRC_1 0x540 193#define WM8994_AIF2_DRC_1 0x540
205#define WM8994_AIF2_DRC_2 0x541 194#define WM8994_AIF2_DRC_2 0x541
206#define WM8994_AIF2_DRC_3 0x542 195#define WM8994_AIF2_DRC_3 0x542
@@ -226,7 +215,6 @@
226#define WM8994_AIF2_EQ_BAND_5_A 0x591 215#define WM8994_AIF2_EQ_BAND_5_A 0x591
227#define WM8994_AIF2_EQ_BAND_5_B 0x592 216#define WM8994_AIF2_EQ_BAND_5_B 0x592
228#define WM8994_AIF2_EQ_BAND_5_PG 0x593 217#define WM8994_AIF2_EQ_BAND_5_PG 0x593
229#define WM8994_AIF2_EQ_BAND_1_C 0x594
230#define WM8994_DAC1_MIXER_VOLUMES 0x600 218#define WM8994_DAC1_MIXER_VOLUMES 0x600
231#define WM8994_DAC1_LEFT_MIXER_ROUTING 0x601 219#define WM8994_DAC1_LEFT_MIXER_ROUTING 0x601
232#define WM8994_DAC1_RIGHT_MIXER_ROUTING 0x602 220#define WM8994_DAC1_RIGHT_MIXER_ROUTING 0x602
@@ -250,7 +238,6 @@
250#define WM8994_GPIO_4 0x703 238#define WM8994_GPIO_4 0x703
251#define WM8994_GPIO_5 0x704 239#define WM8994_GPIO_5 0x704
252#define WM8994_GPIO_6 0x705 240#define WM8994_GPIO_6 0x705
253#define WM1811_JACKDET_CTRL 0x705
254#define WM8994_GPIO_7 0x706 241#define WM8994_GPIO_7 0x706
255#define WM8994_GPIO_8 0x707 242#define WM8994_GPIO_8 0x707
256#define WM8994_GPIO_9 0x708 243#define WM8994_GPIO_9 0x708
@@ -273,43 +260,7 @@
273#define WM8958_DSP2_RELEASETIME 0xA03 260#define WM8958_DSP2_RELEASETIME 0xA03
274#define WM8958_DSP2_VERMAJMIN 0xA04 261#define WM8958_DSP2_VERMAJMIN 0xA04
275#define WM8958_DSP2_VERBUILD 0xA05 262#define WM8958_DSP2_VERBUILD 0xA05
276#define WM8958_DSP2_TESTREG 0xA06
277#define WM8958_DSP2_XORREG 0xA07
278#define WM8958_DSP2_SHIFTMAXX 0xA08
279#define WM8958_DSP2_SHIFTMAXY 0xA09
280#define WM8958_DSP2_SHIFTMAXZ 0xA0A
281#define WM8958_DSP2_SHIFTMAXEXTLO 0xA0B
282#define WM8958_DSP2_AESSELECT 0xA0C
283#define WM8958_DSP2_EXECCONTROL 0xA0D 263#define WM8958_DSP2_EXECCONTROL 0xA0D
284#define WM8958_DSP2_SAMPLEBREAK 0xA0E
285#define WM8958_DSP2_COUNTBREAK 0xA0F
286#define WM8958_DSP2_INTSTATUS 0xA10
287#define WM8958_DSP2_EVENTSTATUS 0xA11
288#define WM8958_DSP2_INTMASK 0xA12
289#define WM8958_DSP2_CONFIGDWIDTH 0xA13
290#define WM8958_DSP2_CONFIGINSTR 0xA14
291#define WM8958_DSP2_CONFIGDMEM 0xA15
292#define WM8958_DSP2_CONFIGDELAYS 0xA16
293#define WM8958_DSP2_CONFIGNUMIO 0xA17
294#define WM8958_DSP2_CONFIGEXTDEPTH 0xA18
295#define WM8958_DSP2_CONFIGMULTIPLIER 0xA19
296#define WM8958_DSP2_CONFIGCTRLDWIDTH 0xA1A
297#define WM8958_DSP2_CONFIGPIPELINE 0xA1B
298#define WM8958_DSP2_SHIFTMAXEXTHI 0xA1C
299#define WM8958_DSP2_SWVERSIONREG 0xA1D
300#define WM8958_DSP2_CONFIGXMEM 0xA1E
301#define WM8958_DSP2_CONFIGYMEM 0xA1F
302#define WM8958_DSP2_CONFIGZMEM 0xA20
303#define WM8958_FW_BUILD_1 0x2000
304#define WM8958_FW_BUILD_0 0x2001
305#define WM8958_FW_ID_1 0x2002
306#define WM8958_FW_ID_0 0x2003
307#define WM8958_FW_MAJOR_1 0x2004
308#define WM8958_FW_MAJOR_0 0x2005
309#define WM8958_FW_MINOR_1 0x2006
310#define WM8958_FW_MINOR_0 0x2007
311#define WM8958_FW_PATCH_1 0x2008
312#define WM8958_FW_PATCH_0 0x2009
313#define WM8958_MBC_BAND_2_LOWER_CUTOFF_C1_1 0x2200 264#define WM8958_MBC_BAND_2_LOWER_CUTOFF_C1_1 0x2200
314#define WM8958_MBC_BAND_2_LOWER_CUTOFF_C1_2 0x2201 265#define WM8958_MBC_BAND_2_LOWER_CUTOFF_C1_2 0x2201
315#define WM8958_MBC_BAND_2_LOWER_CUTOFF_C2_1 0x2202 266#define WM8958_MBC_BAND_2_LOWER_CUTOFF_C2_1 0x2202
@@ -378,14 +329,6 @@
378#define WM8958_MBC_B2_PG2_2 0x242D 329#define WM8958_MBC_B2_PG2_2 0x242D
379#define WM8958_MBC_B1_PG2_1 0x242E 330#define WM8958_MBC_B1_PG2_1 0x242E
380#define WM8958_MBC_B1_PG2_2 0x242F 331#define WM8958_MBC_B1_PG2_2 0x242F
381#define WM8958_MBC_CROSSOVER_1 0x2600
382#define WM8958_MBC_CROSSOVER_2 0x2601
383#define WM8958_MBC_HPF_1 0x2602
384#define WM8958_MBC_HPF_2 0x2603
385#define WM8958_MBC_LPF_1 0x2606
386#define WM8958_MBC_LPF_2 0x2607
387#define WM8958_MBC_RMS_LIMIT_1 0x260A
388#define WM8958_MBC_RMS_LIMIT_2 0x260B
389#define WM8994_WRITE_SEQUENCER_0 0x3000 332#define WM8994_WRITE_SEQUENCER_0 0x3000
390#define WM8994_WRITE_SEQUENCER_1 0x3001 333#define WM8994_WRITE_SEQUENCER_1 0x3001
391#define WM8994_WRITE_SEQUENCER_2 0x3002 334#define WM8994_WRITE_SEQUENCER_2 0x3002
@@ -1905,9 +1848,6 @@
1905/* 1848/*
1906 * R57 (0x39) - AntiPOP (2) 1849 * R57 (0x39) - AntiPOP (2)
1907 */ 1850 */
1908#define WM1811_JACKDET_MODE_MASK 0x0180 /* JACKDET_MODE - [8:7] */
1909#define WM1811_JACKDET_MODE_SHIFT 7 /* JACKDET_MODE - [8:7] */
1910#define WM1811_JACKDET_MODE_WIDTH 2 /* JACKDET_MODE - [8:7] */
1911#define WM8994_MICB2_DISCH 0x0100 /* MICB2_DISCH */ 1851#define WM8994_MICB2_DISCH 0x0100 /* MICB2_DISCH */
1912#define WM8994_MICB2_DISCH_MASK 0x0100 /* MICB2_DISCH */ 1852#define WM8994_MICB2_DISCH_MASK 0x0100 /* MICB2_DISCH */
1913#define WM8994_MICB2_DISCH_SHIFT 8 /* MICB2_DISCH */ 1853#define WM8994_MICB2_DISCH_SHIFT 8 /* MICB2_DISCH */
@@ -1981,59 +1921,6 @@
1981#define WM8994_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */ 1921#define WM8994_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */
1982 1922
1983/* 1923/*
1984 * R61 (0x3D) - MICBIAS1
1985 */
1986#define WM8958_MICB1_RATE 0x0020 /* MICB1_RATE */
1987#define WM8958_MICB1_RATE_MASK 0x0020 /* MICB1_RATE */
1988#define WM8958_MICB1_RATE_SHIFT 5 /* MICB1_RATE */
1989#define WM8958_MICB1_RATE_WIDTH 1 /* MICB1_RATE */
1990#define WM8958_MICB1_MODE 0x0010 /* MICB1_MODE */
1991#define WM8958_MICB1_MODE_MASK 0x0010 /* MICB1_MODE */
1992#define WM8958_MICB1_MODE_SHIFT 4 /* MICB1_MODE */
1993#define WM8958_MICB1_MODE_WIDTH 1 /* MICB1_MODE */
1994#define WM8958_MICB1_LVL_MASK 0x000E /* MICB1_LVL - [3:1] */
1995#define WM8958_MICB1_LVL_SHIFT 1 /* MICB1_LVL - [3:1] */
1996#define WM8958_MICB1_LVL_WIDTH 3 /* MICB1_LVL - [3:1] */
1997#define WM8958_MICB1_DISCH 0x0001 /* MICB1_DISCH */
1998#define WM8958_MICB1_DISCH_MASK 0x0001 /* MICB1_DISCH */
1999#define WM8958_MICB1_DISCH_SHIFT 0 /* MICB1_DISCH */
2000#define WM8958_MICB1_DISCH_WIDTH 1 /* MICB1_DISCH */
2001
2002/*
2003 * R62 (0x3E) - MICBIAS2
2004 */
2005#define WM8958_MICB2_RATE 0x0020 /* MICB2_RATE */
2006#define WM8958_MICB2_RATE_MASK 0x0020 /* MICB2_RATE */
2007#define WM8958_MICB2_RATE_SHIFT 5 /* MICB2_RATE */
2008#define WM8958_MICB2_RATE_WIDTH 1 /* MICB2_RATE */
2009#define WM8958_MICB2_MODE 0x0010 /* MICB2_MODE */
2010#define WM8958_MICB2_MODE_MASK 0x0010 /* MICB2_MODE */
2011#define WM8958_MICB2_MODE_SHIFT 4 /* MICB2_MODE */
2012#define WM8958_MICB2_MODE_WIDTH 1 /* MICB2_MODE */
2013#define WM8958_MICB2_LVL_MASK 0x000E /* MICB2_LVL - [3:1] */
2014#define WM8958_MICB2_LVL_SHIFT 1 /* MICB2_LVL - [3:1] */
2015#define WM8958_MICB2_LVL_WIDTH 3 /* MICB2_LVL - [3:1] */
2016#define WM8958_MICB2_DISCH 0x0001 /* MICB2_DISCH */
2017#define WM8958_MICB2_DISCH_MASK 0x0001 /* MICB2_DISCH */
2018#define WM8958_MICB2_DISCH_SHIFT 0 /* MICB2_DISCH */
2019#define WM8958_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */
2020
2021/*
2022 * R210 (0xD2) - Mic Detect 3
2023 */
2024#define WM8958_MICD_LVL_MASK 0x07FC /* MICD_LVL - [10:2] */
2025#define WM8958_MICD_LVL_SHIFT 2 /* MICD_LVL - [10:2] */
2026#define WM8958_MICD_LVL_WIDTH 9 /* MICD_LVL - [10:2] */
2027#define WM8958_MICD_VALID 0x0002 /* MICD_VALID */
2028#define WM8958_MICD_VALID_MASK 0x0002 /* MICD_VALID */
2029#define WM8958_MICD_VALID_SHIFT 1 /* MICD_VALID */
2030#define WM8958_MICD_VALID_WIDTH 1 /* MICD_VALID */
2031#define WM8958_MICD_STS 0x0001 /* MICD_STS */
2032#define WM8958_MICD_STS_MASK 0x0001 /* MICD_STS */
2033#define WM8958_MICD_STS_SHIFT 0 /* MICD_STS */
2034#define WM8958_MICD_STS_WIDTH 1 /* MICD_STS */
2035
2036/*
2037 * R76 (0x4C) - Charge Pump (1) 1924 * R76 (0x4C) - Charge Pump (1)
2038 */ 1925 */
2039#define WM8994_CP_ENA 0x8000 /* CP_ENA */ 1926#define WM8994_CP_ENA 0x8000 /* CP_ENA */
@@ -2140,10 +2027,6 @@
2140/* 2027/*
2141 * R96 (0x60) - Analogue HP (1) 2028 * R96 (0x60) - Analogue HP (1)
2142 */ 2029 */
2143#define WM1811_HPOUT1_ATTN 0x0100 /* HPOUT1_ATTN */
2144#define WM1811_HPOUT1_ATTN_MASK 0x0100 /* HPOUT1_ATTN */
2145#define WM1811_HPOUT1_ATTN_SHIFT 8 /* HPOUT1_ATTN */
2146#define WM1811_HPOUT1_ATTN_WIDTH 1 /* HPOUT1_ATTN */
2147#define WM8994_HPOUT1L_RMV_SHORT 0x0080 /* HPOUT1L_RMV_SHORT */ 2030#define WM8994_HPOUT1L_RMV_SHORT 0x0080 /* HPOUT1L_RMV_SHORT */
2148#define WM8994_HPOUT1L_RMV_SHORT_MASK 0x0080 /* HPOUT1L_RMV_SHORT */ 2031#define WM8994_HPOUT1L_RMV_SHORT_MASK 0x0080 /* HPOUT1L_RMV_SHORT */
2149#define WM8994_HPOUT1L_RMV_SHORT_SHIFT 7 /* HPOUT1L_RMV_SHORT */ 2032#define WM8994_HPOUT1L_RMV_SHORT_SHIFT 7 /* HPOUT1L_RMV_SHORT */
@@ -2212,9 +2095,6 @@
2212/* 2095/*
2213 * R256 (0x100) - Chip Revision 2096 * R256 (0x100) - Chip Revision
2214 */ 2097 */
2215#define WM8994_CUST_ID_MASK 0xFF00 /* CUST_ID - [15:8] */
2216#define WM8994_CUST_ID_SHIFT 8 /* CUST_ID - [15:8] */
2217#define WM8994_CUST_ID_WIDTH 8 /* CUST_ID - [15:8] */
2218#define WM8994_CHIP_REV_MASK 0x000F /* CHIP_REV - [3:0] */ 2098#define WM8994_CHIP_REV_MASK 0x000F /* CHIP_REV - [3:0] */
2219#define WM8994_CHIP_REV_SHIFT 0 /* CHIP_REV - [3:0] */ 2099#define WM8994_CHIP_REV_SHIFT 0 /* CHIP_REV - [3:0] */
2220#define WM8994_CHIP_REV_WIDTH 4 /* CHIP_REV - [3:0] */ 2100#define WM8994_CHIP_REV_WIDTH 4 /* CHIP_REV - [3:0] */
@@ -2448,10 +2328,6 @@
2448/* 2328/*
2449 * R548 (0x224) - FLL1 Control (5) 2329 * R548 (0x224) - FLL1 Control (5)
2450 */ 2330 */
2451#define WM8958_FLL1_BYP 0x8000 /* FLL1_BYP */
2452#define WM8958_FLL1_BYP_MASK 0x8000 /* FLL1_BYP */
2453#define WM8958_FLL1_BYP_SHIFT 15 /* FLL1_BYP */
2454#define WM8958_FLL1_BYP_WIDTH 1 /* FLL1_BYP */
2455#define WM8994_FLL1_FRC_NCO_VAL_MASK 0x1F80 /* FLL1_FRC_NCO_VAL - [12:7] */ 2331#define WM8994_FLL1_FRC_NCO_VAL_MASK 0x1F80 /* FLL1_FRC_NCO_VAL - [12:7] */
2456#define WM8994_FLL1_FRC_NCO_VAL_SHIFT 7 /* FLL1_FRC_NCO_VAL - [12:7] */ 2332#define WM8994_FLL1_FRC_NCO_VAL_SHIFT 7 /* FLL1_FRC_NCO_VAL - [12:7] */
2457#define WM8994_FLL1_FRC_NCO_VAL_WIDTH 6 /* FLL1_FRC_NCO_VAL - [12:7] */ 2333#define WM8994_FLL1_FRC_NCO_VAL_WIDTH 6 /* FLL1_FRC_NCO_VAL - [12:7] */
@@ -2467,24 +2343,6 @@
2467#define WM8994_FLL1_REFCLK_SRC_WIDTH 2 /* FLL1_REFCLK_SRC - [1:0] */ 2343#define WM8994_FLL1_REFCLK_SRC_WIDTH 2 /* FLL1_REFCLK_SRC - [1:0] */
2468 2344
2469/* 2345/*
2470 * R550 (0x226) - FLL1 EFS 1
2471 */
2472#define WM8958_FLL1_LAMBDA_MASK 0xFFFF /* FLL1_LAMBDA - [15:0] */
2473#define WM8958_FLL1_LAMBDA_SHIFT 0 /* FLL1_LAMBDA - [15:0] */
2474#define WM8958_FLL1_LAMBDA_WIDTH 16 /* FLL1_LAMBDA - [15:0] */
2475
2476/*
2477 * R551 (0x227) - FLL1 EFS 2
2478 */
2479#define WM8958_FLL1_LFSR_SEL_MASK 0x0006 /* FLL1_LFSR_SEL - [2:1] */
2480#define WM8958_FLL1_LFSR_SEL_SHIFT 1 /* FLL1_LFSR_SEL - [2:1] */
2481#define WM8958_FLL1_LFSR_SEL_WIDTH 2 /* FLL1_LFSR_SEL - [2:1] */
2482#define WM8958_FLL1_EFS_ENA 0x0001 /* FLL1_EFS_ENA */
2483#define WM8958_FLL1_EFS_ENA_MASK 0x0001 /* FLL1_EFS_ENA */
2484#define WM8958_FLL1_EFS_ENA_SHIFT 0 /* FLL1_EFS_ENA */
2485#define WM8958_FLL1_EFS_ENA_WIDTH 1 /* FLL1_EFS_ENA */
2486
2487/*
2488 * R576 (0x240) - FLL2 Control (1) 2346 * R576 (0x240) - FLL2 Control (1)
2489 */ 2347 */
2490#define WM8994_FLL2_FRAC 0x0004 /* FLL2_FRAC */ 2348#define WM8994_FLL2_FRAC 0x0004 /* FLL2_FRAC */
@@ -2533,10 +2391,6 @@
2533/* 2391/*
2534 * R580 (0x244) - FLL2 Control (5) 2392 * R580 (0x244) - FLL2 Control (5)
2535 */ 2393 */
2536#define WM8958_FLL2_BYP 0x8000 /* FLL2_BYP */
2537#define WM8958_FLL2_BYP_MASK 0x8000 /* FLL2_BYP */
2538#define WM8958_FLL2_BYP_SHIFT 15 /* FLL2_BYP */
2539#define WM8958_FLL2_BYP_WIDTH 1 /* FLL2_BYP */
2540#define WM8994_FLL2_FRC_NCO_VAL_MASK 0x1F80 /* FLL2_FRC_NCO_VAL - [12:7] */ 2394#define WM8994_FLL2_FRC_NCO_VAL_MASK 0x1F80 /* FLL2_FRC_NCO_VAL - [12:7] */
2541#define WM8994_FLL2_FRC_NCO_VAL_SHIFT 7 /* FLL2_FRC_NCO_VAL - [12:7] */ 2395#define WM8994_FLL2_FRC_NCO_VAL_SHIFT 7 /* FLL2_FRC_NCO_VAL - [12:7] */
2542#define WM8994_FLL2_FRC_NCO_VAL_WIDTH 6 /* FLL2_FRC_NCO_VAL - [12:7] */ 2396#define WM8994_FLL2_FRC_NCO_VAL_WIDTH 6 /* FLL2_FRC_NCO_VAL - [12:7] */
@@ -2552,24 +2406,6 @@
2552#define WM8994_FLL2_REFCLK_SRC_WIDTH 2 /* FLL2_REFCLK_SRC - [1:0] */ 2406#define WM8994_FLL2_REFCLK_SRC_WIDTH 2 /* FLL2_REFCLK_SRC - [1:0] */
2553 2407
2554/* 2408/*
2555 * R582 (0x246) - FLL2 EFS 1
2556 */
2557#define WM8958_FLL2_LAMBDA_MASK 0xFFFF /* FLL2_LAMBDA - [15:0] */
2558#define WM8958_FLL2_LAMBDA_SHIFT 0 /* FLL2_LAMBDA - [15:0] */
2559#define WM8958_FLL2_LAMBDA_WIDTH 16 /* FLL2_LAMBDA - [15:0] */
2560
2561/*
2562 * R583 (0x247) - FLL2 EFS 2
2563 */
2564#define WM8958_FLL2_LFSR_SEL_MASK 0x0006 /* FLL2_LFSR_SEL - [2:1] */
2565#define WM8958_FLL2_LFSR_SEL_SHIFT 1 /* FLL2_LFSR_SEL - [2:1] */
2566#define WM8958_FLL2_LFSR_SEL_WIDTH 2 /* FLL2_LFSR_SEL - [2:1] */
2567#define WM8958_FLL2_EFS_ENA 0x0001 /* FLL2_EFS_ENA */
2568#define WM8958_FLL2_EFS_ENA_MASK 0x0001 /* FLL2_EFS_ENA */
2569#define WM8958_FLL2_EFS_ENA_SHIFT 0 /* FLL2_EFS_ENA */
2570#define WM8958_FLL2_EFS_ENA_WIDTH 1 /* FLL2_EFS_ENA */
2571
2572/*
2573 * R768 (0x300) - AIF1 Control (1) 2409 * R768 (0x300) - AIF1 Control (1)
2574 */ 2410 */
2575#define WM8994_AIF1ADCL_SRC 0x8000 /* AIF1ADCL_SRC */ 2411#define WM8994_AIF1ADCL_SRC 0x8000 /* AIF1ADCL_SRC */
@@ -3113,34 +2949,6 @@
3113#define WM8994_AIF1DAC2_3D_ENA_WIDTH 1 /* AIF1DAC2_3D_ENA */ 2949#define WM8994_AIF1DAC2_3D_ENA_WIDTH 1 /* AIF1DAC2_3D_ENA */
3114 2950
3115/* 2951/*
3116 * R1072 (0x430) - AIF1 DAC1 Noise Gate
3117 */
3118#define WM8958_AIF1DAC1_NG_HLD_MASK 0x0060 /* AIF1DAC1_NG_HLD - [6:5] */
3119#define WM8958_AIF1DAC1_NG_HLD_SHIFT 5 /* AIF1DAC1_NG_HLD - [6:5] */
3120#define WM8958_AIF1DAC1_NG_HLD_WIDTH 2 /* AIF1DAC1_NG_HLD - [6:5] */
3121#define WM8958_AIF1DAC1_NG_THR_MASK 0x000E /* AIF1DAC1_NG_THR - [3:1] */
3122#define WM8958_AIF1DAC1_NG_THR_SHIFT 1 /* AIF1DAC1_NG_THR - [3:1] */
3123#define WM8958_AIF1DAC1_NG_THR_WIDTH 3 /* AIF1DAC1_NG_THR - [3:1] */
3124#define WM8958_AIF1DAC1_NG_ENA 0x0001 /* AIF1DAC1_NG_ENA */
3125#define WM8958_AIF1DAC1_NG_ENA_MASK 0x0001 /* AIF1DAC1_NG_ENA */
3126#define WM8958_AIF1DAC1_NG_ENA_SHIFT 0 /* AIF1DAC1_NG_ENA */
3127#define WM8958_AIF1DAC1_NG_ENA_WIDTH 1 /* AIF1DAC1_NG_ENA */
3128
3129/*
3130 * R1073 (0x431) - AIF1 DAC2 Noise Gate
3131 */
3132#define WM8958_AIF1DAC2_NG_HLD_MASK 0x0060 /* AIF1DAC2_NG_HLD - [6:5] */
3133#define WM8958_AIF1DAC2_NG_HLD_SHIFT 5 /* AIF1DAC2_NG_HLD - [6:5] */
3134#define WM8958_AIF1DAC2_NG_HLD_WIDTH 2 /* AIF1DAC2_NG_HLD - [6:5] */
3135#define WM8958_AIF1DAC2_NG_THR_MASK 0x000E /* AIF1DAC2_NG_THR - [3:1] */
3136#define WM8958_AIF1DAC2_NG_THR_SHIFT 1 /* AIF1DAC2_NG_THR - [3:1] */
3137#define WM8958_AIF1DAC2_NG_THR_WIDTH 3 /* AIF1DAC2_NG_THR - [3:1] */
3138#define WM8958_AIF1DAC2_NG_ENA 0x0001 /* AIF1DAC2_NG_ENA */
3139#define WM8958_AIF1DAC2_NG_ENA_MASK 0x0001 /* AIF1DAC2_NG_ENA */
3140#define WM8958_AIF1DAC2_NG_ENA_SHIFT 0 /* AIF1DAC2_NG_ENA */
3141#define WM8958_AIF1DAC2_NG_ENA_WIDTH 1 /* AIF1DAC2_NG_ENA */
3142
3143/*
3144 * R1088 (0x440) - AIF1 DRC1 (1) 2952 * R1088 (0x440) - AIF1 DRC1 (1)
3145 */ 2953 */
3146#define WM8994_AIF1DRC1_SIG_DET_RMS_MASK 0xF800 /* AIF1DRC1_SIG_DET_RMS - [15:11] */ 2954#define WM8994_AIF1DRC1_SIG_DET_RMS_MASK 0xF800 /* AIF1DRC1_SIG_DET_RMS - [15:11] */
@@ -3752,20 +3560,6 @@
3752#define WM8994_AIF2DAC_3D_ENA_WIDTH 1 /* AIF2DAC_3D_ENA */ 3560#define WM8994_AIF2DAC_3D_ENA_WIDTH 1 /* AIF2DAC_3D_ENA */
3753 3561
3754/* 3562/*
3755 * R1328 (0x530) - AIF2 DAC Noise Gate
3756 */
3757#define WM8958_AIF2DAC_NG_HLD_MASK 0x0060 /* AIF2DAC_NG_HLD - [6:5] */
3758#define WM8958_AIF2DAC_NG_HLD_SHIFT 5 /* AIF2DAC_NG_HLD - [6:5] */
3759#define WM8958_AIF2DAC_NG_HLD_WIDTH 2 /* AIF2DAC_NG_HLD - [6:5] */
3760#define WM8958_AIF2DAC_NG_THR_MASK 0x000E /* AIF2DAC_NG_THR - [3:1] */
3761#define WM8958_AIF2DAC_NG_THR_SHIFT 1 /* AIF2DAC_NG_THR - [3:1] */
3762#define WM8958_AIF2DAC_NG_THR_WIDTH 3 /* AIF2DAC_NG_THR - [3:1] */
3763#define WM8958_AIF2DAC_NG_ENA 0x0001 /* AIF2DAC_NG_ENA */
3764#define WM8958_AIF2DAC_NG_ENA_MASK 0x0001 /* AIF2DAC_NG_ENA */
3765#define WM8958_AIF2DAC_NG_ENA_SHIFT 0 /* AIF2DAC_NG_ENA */
3766#define WM8958_AIF2DAC_NG_ENA_WIDTH 1 /* AIF2DAC_NG_ENA */
3767
3768/*
3769 * R1344 (0x540) - AIF2 DRC (1) 3563 * R1344 (0x540) - AIF2 DRC (1)
3770 */ 3564 */
3771#define WM8994_AIF2DRC_SIG_DET_RMS_MASK 0xF800 /* AIF2DRC_SIG_DET_RMS - [15:11] */ 3565#define WM8994_AIF2DRC_SIG_DET_RMS_MASK 0xF800 /* AIF2DRC_SIG_DET_RMS - [15:11] */
@@ -4290,18 +4084,6 @@
4290#define WM8994_STL_SEL_WIDTH 1 /* STL_SEL */ 4084#define WM8994_STL_SEL_WIDTH 1 /* STL_SEL */
4291 4085
4292/* 4086/*
4293 * R1797 (0x705) - JACKDET Ctrl
4294 */
4295#define WM1811_JACKDET_DB 0x0100 /* JACKDET_DB */
4296#define WM1811_JACKDET_DB_MASK 0x0100 /* JACKDET_DB */
4297#define WM1811_JACKDET_DB_SHIFT 8 /* JACKDET_DB */
4298#define WM1811_JACKDET_DB_WIDTH 1 /* JACKDET_DB */
4299#define WM1811_JACKDET_LVL 0x0040 /* JACKDET_LVL */
4300#define WM1811_JACKDET_LVL_MASK 0x0040 /* JACKDET_LVL */
4301#define WM1811_JACKDET_LVL_SHIFT 6 /* JACKDET_LVL */
4302#define WM1811_JACKDET_LVL_WIDTH 1 /* JACKDET_LVL */
4303
4304/*
4305 * R1824 (0x720) - Pull Control (1) 4087 * R1824 (0x720) - Pull Control (1)
4306 */ 4088 */
4307#define WM8994_DMICDAT2_PU 0x0800 /* DMICDAT2_PU */ 4089#define WM8994_DMICDAT2_PU 0x0800 /* DMICDAT2_PU */