aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-28 17:25:01 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-28 17:25:01 -0400
commit68d99b2c8efcb6ed3807a55569300c53b5f88be5 (patch)
treef189c8f2132d3668a2f0e503f5c3f8695b26a1c8 /include/linux/mfd
parent0e59e7e7feb5a12938fbf9135147eeda3238c6c4 (diff)
parent8128c9f21509f9a8b6da94ac432d845dda458406 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (549 commits) ALSA: hda - Fix ADC input-amp handling for Cx20549 codec ALSA: hda - Keep EAPD turned on for old Conexant chips ALSA: hda/realtek - Fix missing volume controls with ALC260 ASoC: wm8940: Properly set codec->dapm.bias_level ALSA: hda - Fix pin-config for ASUS W90V ALSA: hda - Fix surround/CLFE headphone and speaker pins order ALSA: hda - Fix typo ALSA: Update the sound git tree URL ALSA: HDA: Add new revision for ALC662 ASoC: max98095: Convert codec->hw_write to snd_soc_write ASoC: keep pointer to resource so it can be freed ASoC: sgtl5000: Fix wrong mask in some snd_soc_update_bits calls ASoC: wm8996: Fix wrong mask for setting WM8996_AIF_CLOCKING_2 ASoC: da7210: Add support for line out and DAC ASoC: da7210: Add support for DAPM ALSA: hda/realtek - Fix DAC assignments of multiple speakers ASoC: Use SGTL5000_LINREG_VDDD_MASK instead of hardcoded mask value ASoC: Set sgtl5000->ldo in ldo_regulator_register ASoC: wm8996: Use SND_SOC_DAPM_AIF_OUT for AIF2 Capture ASoC: wm8994: Use SND_SOC_DAPM_AIF_OUT for AIF3 Capture ...
Diffstat (limited to 'include/linux/mfd')
-rw-r--r--include/linux/mfd/twl6040.h46
-rw-r--r--include/linux/mfd/wm8994/core.h1
-rw-r--r--include/linux/mfd/wm8994/registers.h88
3 files changed, 109 insertions, 26 deletions
diff --git a/include/linux/mfd/twl6040.h b/include/linux/mfd/twl6040.h
index 4c806f6d663e..2463c2619596 100644
--- a/include/linux/mfd/twl6040.h
+++ b/include/linux/mfd/twl6040.h
@@ -68,11 +68,6 @@
68#define TWL6040_REG_ACCCTL 0x2D 68#define TWL6040_REG_ACCCTL 0x2D
69#define TWL6040_REG_STATUS 0x2E 69#define TWL6040_REG_STATUS 0x2E
70 70
71#define TWL6040_CACHEREGNUM (TWL6040_REG_STATUS + 1)
72
73#define TWL6040_VIOREGNUM 18
74#define TWL6040_VDDREGNUM 21
75
76/* INTID (0x03) fields */ 71/* INTID (0x03) fields */
77 72
78#define TWL6040_THINT 0x01 73#define TWL6040_THINT 0x01
@@ -125,34 +120,24 @@
125#define TWL6040_LPLLFIN 0x08 120#define TWL6040_LPLLFIN 0x08
126#define TWL6040_HPLLSEL 0x10 121#define TWL6040_HPLLSEL 0x10
127 122
128/* HSLCTL (0x10) fields */ 123/* HSLCTL/R (0x10/0x11) fields */
129
130#define TWL6040_HSDACMODEL 0x02
131#define TWL6040_HSDRVMODEL 0x08
132
133/* HSRCTL (0x11) fields */
134 124
135#define TWL6040_HSDACMODER 0x02 125#define TWL6040_HSDACENA (1 << 0)
136#define TWL6040_HSDRVMODER 0x08 126#define TWL6040_HSDACMODE (1 << 1)
127#define TWL6040_HSDRVMODE (1 << 3)
137 128
138/* VIBCTLL (0x18) fields */ 129/* VIBCTLL/R (0x18/0x1A) fields */
139 130
140#define TWL6040_VIBENAL 0x01 131#define TWL6040_VIBENA (1 << 0)
141#define TWL6040_VIBCTRLL 0x04 132#define TWL6040_VIBSEL (1 << 1)
142#define TWL6040_VIBCTRLLP 0x08 133#define TWL6040_VIBCTRL (1 << 2)
143#define TWL6040_VIBCTRLLN 0x10 134#define TWL6040_VIBCTRL_P (1 << 3)
135#define TWL6040_VIBCTRL_N (1 << 4)
144 136
145/* VIBDATL (0x19) fields */ 137/* VIBDATL/R (0x19/0x1B) fields */
146 138
147#define TWL6040_VIBDAT_MAX 0x64 139#define TWL6040_VIBDAT_MAX 0x64
148 140
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
156/* GPOCTL (0x1E) fields */ 141/* GPOCTL (0x1E) fields */
157 142
158#define TWL6040_GPO1 0x01 143#define TWL6040_GPO1 0x01
@@ -200,6 +185,7 @@ struct twl6040 {
200 int audpwron; 185 int audpwron;
201 int power_count; 186 int power_count;
202 int rev; 187 int rev;
188 u8 vibra_ctrl_cache[2];
203 189
204 int pll; 190 int pll;
205 unsigned int sysclk; 191 unsigned int sysclk;
@@ -224,5 +210,13 @@ int twl6040_get_pll(struct twl6040 *twl6040);
224unsigned int twl6040_get_sysclk(struct twl6040 *twl6040); 210unsigned int twl6040_get_sysclk(struct twl6040 *twl6040);
225int twl6040_irq_init(struct twl6040 *twl6040); 211int twl6040_irq_init(struct twl6040 *twl6040);
226void twl6040_irq_exit(struct twl6040 *twl6040); 212void twl6040_irq_exit(struct twl6040 *twl6040);
213/* Get the combined status of the vibra control register */
214int twl6040_get_vibralr_status(struct twl6040 *twl6040);
215
216static inline int twl6040_get_revid(struct twl6040 *twl6040)
217{
218 return twl6040->rev;
219}
220
227 221
228#endif /* End of __TWL6040_CODEC_H__ */ 222#endif /* End of __TWL6040_CODEC_H__ */
diff --git a/include/linux/mfd/wm8994/core.h b/include/linux/mfd/wm8994/core.h
index 45df450d869f..626809147624 100644
--- a/include/linux/mfd/wm8994/core.h
+++ b/include/linux/mfd/wm8994/core.h
@@ -20,6 +20,7 @@
20enum wm8994_type { 20enum wm8994_type {
21 WM8994 = 0, 21 WM8994 = 0,
22 WM8958 = 1, 22 WM8958 = 1,
23 WM1811 = 2,
23}; 24};
24 25
25struct regulator_dev; 26struct regulator_dev;
diff --git a/include/linux/mfd/wm8994/registers.h b/include/linux/mfd/wm8994/registers.h
index f3ee84284670..fae295048a8b 100644
--- a/include/linux/mfd/wm8994/registers.h
+++ b/include/linux/mfd/wm8994/registers.h
@@ -72,6 +72,7 @@
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
75#define WM8994_ANALOGUE_HP_1 0x60 76#define WM8994_ANALOGUE_HP_1 0x60
76#define WM8958_MIC_DETECT_1 0xD0 77#define WM8958_MIC_DETECT_1 0xD0
77#define WM8958_MIC_DETECT_2 0xD1 78#define WM8958_MIC_DETECT_2 0xD1
@@ -133,6 +134,8 @@
133#define WM8994_AIF1_DAC1_FILTERS_2 0x421 134#define WM8994_AIF1_DAC1_FILTERS_2 0x421
134#define WM8994_AIF1_DAC2_FILTERS_1 0x422 135#define WM8994_AIF1_DAC2_FILTERS_1 0x422
135#define WM8994_AIF1_DAC2_FILTERS_2 0x423 136#define WM8994_AIF1_DAC2_FILTERS_2 0x423
137#define WM8958_AIF1_DAC1_NOISE_GATE 0x430
138#define WM8958_AIF1_DAC2_NOISE_GATE 0x431
136#define WM8994_AIF1_DRC1_1 0x440 139#define WM8994_AIF1_DRC1_1 0x440
137#define WM8994_AIF1_DRC1_2 0x441 140#define WM8994_AIF1_DRC1_2 0x441
138#define WM8994_AIF1_DRC1_3 0x442 141#define WM8994_AIF1_DRC1_3 0x442
@@ -190,6 +193,7 @@
190#define WM8994_AIF2_ADC_FILTERS 0x510 193#define WM8994_AIF2_ADC_FILTERS 0x510
191#define WM8994_AIF2_DAC_FILTERS_1 0x520 194#define WM8994_AIF2_DAC_FILTERS_1 0x520
192#define WM8994_AIF2_DAC_FILTERS_2 0x521 195#define WM8994_AIF2_DAC_FILTERS_2 0x521
196#define WM8958_AIF2_DAC_NOISE_GATE 0x530
193#define WM8994_AIF2_DRC_1 0x540 197#define WM8994_AIF2_DRC_1 0x540
194#define WM8994_AIF2_DRC_2 0x541 198#define WM8994_AIF2_DRC_2 0x541
195#define WM8994_AIF2_DRC_3 0x542 199#define WM8994_AIF2_DRC_3 0x542
@@ -1921,6 +1925,44 @@
1921#define WM8994_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */ 1925#define WM8994_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */
1922 1926
1923/* 1927/*
1928 * R61 (0x3D) - MICBIAS1
1929 */
1930#define WM8958_MICB1_RATE 0x0020 /* MICB1_RATE */
1931#define WM8958_MICB1_RATE_MASK 0x0020 /* MICB1_RATE */
1932#define WM8958_MICB1_RATE_SHIFT 5 /* MICB1_RATE */
1933#define WM8958_MICB1_RATE_WIDTH 1 /* MICB1_RATE */
1934#define WM8958_MICB1_MODE 0x0010 /* MICB1_MODE */
1935#define WM8958_MICB1_MODE_MASK 0x0010 /* MICB1_MODE */
1936#define WM8958_MICB1_MODE_SHIFT 4 /* MICB1_MODE */
1937#define WM8958_MICB1_MODE_WIDTH 1 /* MICB1_MODE */
1938#define WM8958_MICB1_LVL_MASK 0x000E /* MICB1_LVL - [3:1] */
1939#define WM8958_MICB1_LVL_SHIFT 1 /* MICB1_LVL - [3:1] */
1940#define WM8958_MICB1_LVL_WIDTH 3 /* MICB1_LVL - [3:1] */
1941#define WM8958_MICB1_DISCH 0x0001 /* MICB1_DISCH */
1942#define WM8958_MICB1_DISCH_MASK 0x0001 /* MICB1_DISCH */
1943#define WM8958_MICB1_DISCH_SHIFT 0 /* MICB1_DISCH */
1944#define WM8958_MICB1_DISCH_WIDTH 1 /* MICB1_DISCH */
1945
1946/*
1947 * R62 (0x3E) - MICBIAS2
1948 */
1949#define WM8958_MICB2_RATE 0x0020 /* MICB2_RATE */
1950#define WM8958_MICB2_RATE_MASK 0x0020 /* MICB2_RATE */
1951#define WM8958_MICB2_RATE_SHIFT 5 /* MICB2_RATE */
1952#define WM8958_MICB2_RATE_WIDTH 1 /* MICB2_RATE */
1953#define WM8958_MICB2_MODE 0x0010 /* MICB2_MODE */
1954#define WM8958_MICB2_MODE_MASK 0x0010 /* MICB2_MODE */
1955#define WM8958_MICB2_MODE_SHIFT 4 /* MICB2_MODE */
1956#define WM8958_MICB2_MODE_WIDTH 1 /* MICB2_MODE */
1957#define WM8958_MICB2_LVL_MASK 0x000E /* MICB2_LVL - [3:1] */
1958#define WM8958_MICB2_LVL_SHIFT 1 /* MICB2_LVL - [3:1] */
1959#define WM8958_MICB2_LVL_WIDTH 3 /* MICB2_LVL - [3:1] */
1960#define WM8958_MICB2_DISCH 0x0001 /* MICB2_DISCH */
1961#define WM8958_MICB2_DISCH_MASK 0x0001 /* MICB2_DISCH */
1962#define WM8958_MICB2_DISCH_SHIFT 0 /* MICB2_DISCH */
1963#define WM8958_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */
1964
1965/*
1924 * R76 (0x4C) - Charge Pump (1) 1966 * R76 (0x4C) - Charge Pump (1)
1925 */ 1967 */
1926#define WM8994_CP_ENA 0x8000 /* CP_ENA */ 1968#define WM8994_CP_ENA 0x8000 /* CP_ENA */
@@ -2027,6 +2069,10 @@
2027/* 2069/*
2028 * R96 (0x60) - Analogue HP (1) 2070 * R96 (0x60) - Analogue HP (1)
2029 */ 2071 */
2072#define WM1811_HPOUT1_ATTN 0x0100 /* HPOUT1_ATTN */
2073#define WM1811_HPOUT1_ATTN_MASK 0x0100 /* HPOUT1_ATTN */
2074#define WM1811_HPOUT1_ATTN_SHIFT 8 /* HPOUT1_ATTN */
2075#define WM1811_HPOUT1_ATTN_WIDTH 1 /* HPOUT1_ATTN */
2030#define WM8994_HPOUT1L_RMV_SHORT 0x0080 /* HPOUT1L_RMV_SHORT */ 2076#define WM8994_HPOUT1L_RMV_SHORT 0x0080 /* HPOUT1L_RMV_SHORT */
2031#define WM8994_HPOUT1L_RMV_SHORT_MASK 0x0080 /* HPOUT1L_RMV_SHORT */ 2077#define WM8994_HPOUT1L_RMV_SHORT_MASK 0x0080 /* HPOUT1L_RMV_SHORT */
2032#define WM8994_HPOUT1L_RMV_SHORT_SHIFT 7 /* HPOUT1L_RMV_SHORT */ 2078#define WM8994_HPOUT1L_RMV_SHORT_SHIFT 7 /* HPOUT1L_RMV_SHORT */
@@ -2949,6 +2995,34 @@
2949#define WM8994_AIF1DAC2_3D_ENA_WIDTH 1 /* AIF1DAC2_3D_ENA */ 2995#define WM8994_AIF1DAC2_3D_ENA_WIDTH 1 /* AIF1DAC2_3D_ENA */
2950 2996
2951/* 2997/*
2998 * R1072 (0x430) - AIF1 DAC1 Noise Gate
2999 */
3000#define WM8958_AIF1DAC1_NG_HLD_MASK 0x0060 /* AIF1DAC1_NG_HLD - [6:5] */
3001#define WM8958_AIF1DAC1_NG_HLD_SHIFT 5 /* AIF1DAC1_NG_HLD - [6:5] */
3002#define WM8958_AIF1DAC1_NG_HLD_WIDTH 2 /* AIF1DAC1_NG_HLD - [6:5] */
3003#define WM8958_AIF1DAC1_NG_THR_MASK 0x000E /* AIF1DAC1_NG_THR - [3:1] */
3004#define WM8958_AIF1DAC1_NG_THR_SHIFT 1 /* AIF1DAC1_NG_THR - [3:1] */
3005#define WM8958_AIF1DAC1_NG_THR_WIDTH 3 /* AIF1DAC1_NG_THR - [3:1] */
3006#define WM8958_AIF1DAC1_NG_ENA 0x0001 /* AIF1DAC1_NG_ENA */
3007#define WM8958_AIF1DAC1_NG_ENA_MASK 0x0001 /* AIF1DAC1_NG_ENA */
3008#define WM8958_AIF1DAC1_NG_ENA_SHIFT 0 /* AIF1DAC1_NG_ENA */
3009#define WM8958_AIF1DAC1_NG_ENA_WIDTH 1 /* AIF1DAC1_NG_ENA */
3010
3011/*
3012 * R1073 (0x431) - AIF1 DAC2 Noise Gate
3013 */
3014#define WM8958_AIF1DAC2_NG_HLD_MASK 0x0060 /* AIF1DAC2_NG_HLD - [6:5] */
3015#define WM8958_AIF1DAC2_NG_HLD_SHIFT 5 /* AIF1DAC2_NG_HLD - [6:5] */
3016#define WM8958_AIF1DAC2_NG_HLD_WIDTH 2 /* AIF1DAC2_NG_HLD - [6:5] */
3017#define WM8958_AIF1DAC2_NG_THR_MASK 0x000E /* AIF1DAC2_NG_THR - [3:1] */
3018#define WM8958_AIF1DAC2_NG_THR_SHIFT 1 /* AIF1DAC2_NG_THR - [3:1] */
3019#define WM8958_AIF1DAC2_NG_THR_WIDTH 3 /* AIF1DAC2_NG_THR - [3:1] */
3020#define WM8958_AIF1DAC2_NG_ENA 0x0001 /* AIF1DAC2_NG_ENA */
3021#define WM8958_AIF1DAC2_NG_ENA_MASK 0x0001 /* AIF1DAC2_NG_ENA */
3022#define WM8958_AIF1DAC2_NG_ENA_SHIFT 0 /* AIF1DAC2_NG_ENA */
3023#define WM8958_AIF1DAC2_NG_ENA_WIDTH 1 /* AIF1DAC2_NG_ENA */
3024
3025/*
2952 * R1088 (0x440) - AIF1 DRC1 (1) 3026 * R1088 (0x440) - AIF1 DRC1 (1)
2953 */ 3027 */
2954#define WM8994_AIF1DRC1_SIG_DET_RMS_MASK 0xF800 /* AIF1DRC1_SIG_DET_RMS - [15:11] */ 3028#define WM8994_AIF1DRC1_SIG_DET_RMS_MASK 0xF800 /* AIF1DRC1_SIG_DET_RMS - [15:11] */
@@ -3560,6 +3634,20 @@
3560#define WM8994_AIF2DAC_3D_ENA_WIDTH 1 /* AIF2DAC_3D_ENA */ 3634#define WM8994_AIF2DAC_3D_ENA_WIDTH 1 /* AIF2DAC_3D_ENA */
3561 3635
3562/* 3636/*
3637 * R1328 (0x530) - AIF2 DAC Noise Gate
3638 */
3639#define WM8958_AIF2DAC_NG_HLD_MASK 0x0060 /* AIF2DAC_NG_HLD - [6:5] */
3640#define WM8958_AIF2DAC_NG_HLD_SHIFT 5 /* AIF2DAC_NG_HLD - [6:5] */
3641#define WM8958_AIF2DAC_NG_HLD_WIDTH 2 /* AIF2DAC_NG_HLD - [6:5] */
3642#define WM8958_AIF2DAC_NG_THR_MASK 0x000E /* AIF2DAC_NG_THR - [3:1] */
3643#define WM8958_AIF2DAC_NG_THR_SHIFT 1 /* AIF2DAC_NG_THR - [3:1] */
3644#define WM8958_AIF2DAC_NG_THR_WIDTH 3 /* AIF2DAC_NG_THR - [3:1] */
3645#define WM8958_AIF2DAC_NG_ENA 0x0001 /* AIF2DAC_NG_ENA */
3646#define WM8958_AIF2DAC_NG_ENA_MASK 0x0001 /* AIF2DAC_NG_ENA */
3647#define WM8958_AIF2DAC_NG_ENA_SHIFT 0 /* AIF2DAC_NG_ENA */
3648#define WM8958_AIF2DAC_NG_ENA_WIDTH 1 /* AIF2DAC_NG_ENA */
3649
3650/*
3563 * R1344 (0x540) - AIF2 DRC (1) 3651 * R1344 (0x540) - AIF2 DRC (1)
3564 */ 3652 */
3565#define WM8994_AIF2DRC_SIG_DET_RMS_MASK 0xF800 /* AIF2DRC_SIG_DET_RMS - [15:11] */ 3653#define WM8994_AIF2DRC_SIG_DET_RMS_MASK 0xF800 /* AIF2DRC_SIG_DET_RMS - [15:11] */