diff options
| author | Takashi Iwai <tiwai@suse.de> | 2010-03-01 06:38:59 -0500 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2010-03-01 06:38:59 -0500 |
| commit | 6679ee1870f7ccdd48e2e5c57919240b8f19a6dc (patch) | |
| tree | 225ed7efcc0bb7e3c90233576c6106538e17a275 /include | |
| parent | a91a4aa1ee994abeb2190a1bb2f703933609a703 (diff) | |
| parent | a0b62329bb290c10d7278809af910ed115768991 (diff) | |
Merge branch 'topic/asoc' into for-linus
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/i2c/twl.h | 4 | ||||
| -rw-r--r-- | include/sound/soc-dai.h | 2 | ||||
| -rw-r--r-- | include/sound/soc-dapm.h | 32 | ||||
| -rw-r--r-- | include/sound/soc.h | 26 | ||||
| -rw-r--r-- | include/sound/tlv320dac33-plat.h | 1 | ||||
| -rw-r--r-- | include/sound/tpa6130a2-plat.h | 6 | ||||
| -rw-r--r-- | include/sound/wm2000.h | 26 | ||||
| -rw-r--r-- | include/sound/wm8904.h | 57 | ||||
| -rw-r--r-- | include/sound/wm8955.h | 26 |
9 files changed, 180 insertions, 0 deletions
diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h index bf1c5be1f5b6..7897f3096560 100644 --- a/include/linux/i2c/twl.h +++ b/include/linux/i2c/twl.h | |||
| @@ -547,6 +547,10 @@ struct twl4030_codec_data { | |||
| 547 | unsigned int audio_mclk; | 547 | unsigned int audio_mclk; |
| 548 | struct twl4030_codec_audio_data *audio; | 548 | struct twl4030_codec_audio_data *audio; |
| 549 | struct twl4030_codec_vibra_data *vibra; | 549 | struct twl4030_codec_vibra_data *vibra; |
| 550 | |||
| 551 | /* twl6030 */ | ||
| 552 | int audpwron_gpio; /* audio power-on gpio */ | ||
| 553 | int naudint_irq; /* audio interrupt */ | ||
| 550 | }; | 554 | }; |
| 551 | 555 | ||
| 552 | struct twl4030_platform_data { | 556 | struct twl4030_platform_data { |
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index ca24e7f7a3f5..061f16d4c878 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | 16 | ||
| 17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
| 18 | 18 | ||
| 19 | #include <sound/soc.h> | ||
| 20 | |||
| 19 | struct snd_pcm_substream; | 21 | struct snd_pcm_substream; |
| 20 | 22 | ||
| 21 | /* | 23 | /* |
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h index c5c95e1da65b..c0922a034223 100644 --- a/include/sound/soc-dapm.h +++ b/include/sound/soc-dapm.h | |||
| @@ -95,6 +95,21 @@ | |||
| 95 | .shift = wshift, .invert = winvert, .kcontrols = wcontrols, \ | 95 | .shift = wshift, .invert = winvert, .kcontrols = wcontrols, \ |
| 96 | .num_kcontrols = 1} | 96 | .num_kcontrols = 1} |
| 97 | 97 | ||
| 98 | /* Simplified versions of above macros, assuming wncontrols = ARRAY_SIZE(wcontrols) */ | ||
| 99 | #define SOC_PGA_ARRAY(wname, wreg, wshift, winvert,\ | ||
| 100 | wcontrols) \ | ||
| 101 | { .id = snd_soc_dapm_pga, .name = wname, .reg = wreg, .shift = wshift, \ | ||
| 102 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = ARRAY_SIZE(wcontrols)} | ||
| 103 | #define SOC_MIXER_ARRAY(wname, wreg, wshift, winvert, \ | ||
| 104 | wcontrols)\ | ||
| 105 | { .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \ | ||
| 106 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = ARRAY_SIZE(wcontrols)} | ||
| 107 | #define SOC_MIXER_NAMED_CTL_ARRAY(wname, wreg, wshift, winvert, \ | ||
| 108 | wcontrols)\ | ||
| 109 | { .id = snd_soc_dapm_mixer_named_ctl, .name = wname, .reg = wreg, \ | ||
| 110 | .shift = wshift, .invert = winvert, .kcontrols = wcontrols, \ | ||
| 111 | .num_kcontrols = ARRAY_SIZE(wcontrols)} | ||
| 112 | |||
| 98 | /* path domain with event - event handler must return 0 for success */ | 113 | /* path domain with event - event handler must return 0 for success */ |
| 99 | #define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \ | 114 | #define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \ |
| 100 | wncontrols, wevent, wflags) \ | 115 | wncontrols, wevent, wflags) \ |
| @@ -126,6 +141,23 @@ | |||
| 126 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1, \ | 141 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1, \ |
| 127 | .event = wevent, .event_flags = wflags} | 142 | .event = wevent, .event_flags = wflags} |
| 128 | 143 | ||
| 144 | /* Simplified versions of above macros, assuming wncontrols = ARRAY_SIZE(wcontrols) */ | ||
| 145 | #define SOC_PGA_E_ARRAY(wname, wreg, wshift, winvert, wcontrols, \ | ||
| 146 | wevent, wflags) \ | ||
| 147 | { .id = snd_soc_dapm_pga, .name = wname, .reg = wreg, .shift = wshift, \ | ||
| 148 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = ARRAY_SIZE(wcontrols), \ | ||
| 149 | .event = wevent, .event_flags = wflags} | ||
| 150 | #define SOC_MIXER_E_ARRAY(wname, wreg, wshift, winvert, wcontrols, \ | ||
| 151 | wevent, wflags) \ | ||
| 152 | { .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \ | ||
| 153 | .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = ARRAY_SIZE(wcontrols), \ | ||
| 154 | .event = wevent, .event_flags = wflags} | ||
| 155 | #define SOC_MIXER_NAMED_CTL_E_ARRAY(wname, wreg, wshift, winvert, \ | ||
| 156 | wcontrols, wevent, wflags) \ | ||
| 157 | { .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \ | ||
| 158 | .invert = winvert, .kcontrols = wcontrols, \ | ||
| 159 | .num_kcontrols = ARRAY_SIZE(wcontrols), .event = wevent, .event_flags = wflags} | ||
| 160 | |||
| 129 | /* events that are pre and post DAPM */ | 161 | /* events that are pre and post DAPM */ |
| 130 | #define SND_SOC_DAPM_PRE(wname, wevent) \ | 162 | #define SND_SOC_DAPM_PRE(wname, wevent) \ |
| 131 | { .id = snd_soc_dapm_pre, .name = wname, .kcontrols = NULL, \ | 163 | { .id = snd_soc_dapm_pre, .name = wname, .kcontrols = NULL, \ |
diff --git a/include/sound/soc.h b/include/sound/soc.h index 0d7718f9280d..5d234a8c2506 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
| @@ -169,6 +169,23 @@ | |||
| 169 | .private_value = (unsigned long)&xenum } | 169 | .private_value = (unsigned long)&xenum } |
| 170 | 170 | ||
| 171 | /* | 171 | /* |
| 172 | * Simplified versions of above macros, declaring a struct and calculating | ||
| 173 | * ARRAY_SIZE internally | ||
| 174 | */ | ||
| 175 | #define SOC_ENUM_DOUBLE_DECL(name, xreg, xshift_l, xshift_r, xtexts) \ | ||
| 176 | struct soc_enum name = SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, \ | ||
| 177 | ARRAY_SIZE(xtexts), xtexts) | ||
| 178 | #define SOC_ENUM_SINGLE_DECL(name, xreg, xshift, xtexts) \ | ||
| 179 | SOC_ENUM_DOUBLE_DECL(name, xreg, xshift, xshift, xtexts) | ||
| 180 | #define SOC_ENUM_SINGLE_EXT_DECL(name, xtexts) \ | ||
| 181 | struct soc_enum name = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(xtexts), xtexts) | ||
| 182 | #define SOC_VALUE_ENUM_DOUBLE_DECL(name, xreg, xshift_l, xshift_r, xmask, xtexts, xvalues) \ | ||
| 183 | struct soc_enum name = SOC_VALUE_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, \ | ||
| 184 | ARRAY_SIZE(xtexts), xtexts, xvalues) | ||
| 185 | #define SOC_VALUE_ENUM_SINGLE_DECL(name, xreg, xshift, xmask, xtexts, xvalues) \ | ||
| 186 | SOC_VALUE_ENUM_DOUBLE_DECL(name, xreg, xshift, xshift, xmask, xtexts, xvalues) | ||
| 187 | |||
| 188 | /* | ||
| 172 | * Bias levels | 189 | * Bias levels |
| 173 | * | 190 | * |
| 174 | * @ON: Bias is fully on for audio playback and capture operations. | 191 | * @ON: Bias is fully on for audio playback and capture operations. |
| @@ -253,6 +270,9 @@ void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count, | |||
| 253 | /* codec register bit access */ | 270 | /* codec register bit access */ |
| 254 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, | 271 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, |
| 255 | unsigned int mask, unsigned int value); | 272 | unsigned int mask, unsigned int value); |
| 273 | int snd_soc_update_bits_locked(struct snd_soc_codec *codec, | ||
| 274 | unsigned short reg, unsigned int mask, | ||
| 275 | unsigned int value); | ||
| 256 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg, | 276 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg, |
| 257 | unsigned int mask, unsigned int value); | 277 | unsigned int mask, unsigned int value); |
| 258 | 278 | ||
| @@ -402,6 +422,10 @@ struct snd_soc_codec { | |||
| 402 | short reg_cache_size; | 422 | short reg_cache_size; |
| 403 | short reg_cache_step; | 423 | short reg_cache_step; |
| 404 | 424 | ||
| 425 | unsigned int idle_bias_off:1; /* Use BIAS_OFF instead of STANDBY */ | ||
| 426 | unsigned int cache_only:1; /* Suppress writes to hardware */ | ||
| 427 | unsigned int cache_sync:1; /* Cache needs to be synced to hardware */ | ||
| 428 | |||
| 405 | /* dapm */ | 429 | /* dapm */ |
| 406 | u32 pop_time; | 430 | u32 pop_time; |
| 407 | struct list_head dapm_widgets; | 431 | struct list_head dapm_widgets; |
| @@ -497,6 +521,8 @@ struct snd_soc_card { | |||
| 497 | int (*set_bias_level)(struct snd_soc_card *, | 521 | int (*set_bias_level)(struct snd_soc_card *, |
| 498 | enum snd_soc_bias_level level); | 522 | enum snd_soc_bias_level level); |
| 499 | 523 | ||
| 524 | long pmdown_time; | ||
| 525 | |||
| 500 | /* CPU <--> Codec DAI links */ | 526 | /* CPU <--> Codec DAI links */ |
| 501 | struct snd_soc_dai_link *dai_link; | 527 | struct snd_soc_dai_link *dai_link; |
| 502 | int num_links; | 528 | int num_links; |
diff --git a/include/sound/tlv320dac33-plat.h b/include/sound/tlv320dac33-plat.h index 5858d06a7ffa..ac0665264bdf 100644 --- a/include/sound/tlv320dac33-plat.h +++ b/include/sound/tlv320dac33-plat.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | struct tlv320dac33_platform_data { | 16 | struct tlv320dac33_platform_data { |
| 17 | int power_gpio; | 17 | int power_gpio; |
| 18 | u8 burst_bclkdiv; | ||
| 18 | }; | 19 | }; |
| 19 | 20 | ||
| 20 | #endif /* __TLV320DAC33_PLAT_H */ | 21 | #endif /* __TLV320DAC33_PLAT_H */ |
diff --git a/include/sound/tpa6130a2-plat.h b/include/sound/tpa6130a2-plat.h index e8c901e749d8..e29fde6b5cbe 100644 --- a/include/sound/tpa6130a2-plat.h +++ b/include/sound/tpa6130a2-plat.h | |||
| @@ -23,7 +23,13 @@ | |||
| 23 | #ifndef TPA6130A2_PLAT_H | 23 | #ifndef TPA6130A2_PLAT_H |
| 24 | #define TPA6130A2_PLAT_H | 24 | #define TPA6130A2_PLAT_H |
| 25 | 25 | ||
| 26 | enum tpa_model { | ||
| 27 | TPA6130A2, | ||
| 28 | TPA6140A2, | ||
| 29 | }; | ||
| 30 | |||
| 26 | struct tpa6130a2_platform_data { | 31 | struct tpa6130a2_platform_data { |
| 32 | enum tpa_model id; | ||
| 27 | int power_gpio; | 33 | int power_gpio; |
| 28 | }; | 34 | }; |
| 29 | 35 | ||
diff --git a/include/sound/wm2000.h b/include/sound/wm2000.h new file mode 100644 index 000000000000..aa388ca9ec64 --- /dev/null +++ b/include/sound/wm2000.h | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | /* | ||
| 2 | * linux/sound/wm2000.h -- Platform data for WM2000 | ||
| 3 | * | ||
| 4 | * Copyright 2010 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 __LINUX_SND_WM2000_H | ||
| 12 | #define __LINUX_SND_WM2000_H | ||
| 13 | |||
| 14 | struct wm2000_platform_data { | ||
| 15 | /** Filename for system-specific image to download to device. */ | ||
| 16 | const char *download_file; | ||
| 17 | |||
| 18 | /** Divide MCLK by 2 for system clock? */ | ||
| 19 | unsigned int mclkdiv2:1; | ||
| 20 | |||
| 21 | /** Disable speech clarity enhancement, for use when an | ||
| 22 | * external algorithm is used. */ | ||
| 23 | unsigned int speech_enh_disable:1; | ||
| 24 | }; | ||
| 25 | |||
| 26 | #endif | ||
diff --git a/include/sound/wm8904.h b/include/sound/wm8904.h new file mode 100644 index 000000000000..d66575a601be --- /dev/null +++ b/include/sound/wm8904.h | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | /* | ||
| 2 | * Platform data for WM8904 | ||
| 3 | * | ||
| 4 | * Copyright 2009 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 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 __MFD_WM8994_PDATA_H__ | ||
| 16 | #define __MFD_WM8994_PDATA_H__ | ||
| 17 | |||
| 18 | #define WM8904_DRC_REGS 4 | ||
| 19 | #define WM8904_EQ_REGS 25 | ||
| 20 | |||
| 21 | /** | ||
| 22 | * DRC configurations are specified with a label and a set of register | ||
| 23 | * values to write (the enable bits will be ignored). At runtime an | ||
| 24 | * enumerated control will be presented for each DRC block allowing | ||
| 25 | * the user to choose the configration to use. | ||
| 26 | * | ||
| 27 | * Configurations may be generated by hand or by using the DRC control | ||
| 28 | * panel provided by the WISCE - see http://www.wolfsonmicro.com/wisce/ | ||
| 29 | * for details. | ||
| 30 | */ | ||
| 31 | struct wm8904_drc_cfg { | ||
| 32 | const char *name; | ||
| 33 | u16 regs[WM8904_DRC_REGS]; | ||
| 34 | }; | ||
| 35 | |||
| 36 | /** | ||
| 37 | * ReTune Mobile configurations are specified with a label, sample | ||
| 38 | * rate and set of values to write (the enable bits will be ignored). | ||
| 39 | * | ||
| 40 | * Configurations are expected to be generated using the ReTune Mobile | ||
| 41 | * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/ | ||
| 42 | */ | ||
| 43 | struct wm8904_retune_mobile_cfg { | ||
| 44 | const char *name; | ||
| 45 | unsigned int rate; | ||
| 46 | u16 regs[WM8904_EQ_REGS]; | ||
| 47 | }; | ||
| 48 | |||
| 49 | struct wm8904_pdata { | ||
| 50 | int num_drc_cfgs; | ||
| 51 | struct wm8904_drc_cfg *drc_cfgs; | ||
| 52 | |||
| 53 | int num_retune_mobile_cfgs; | ||
| 54 | struct wm8904_retune_mobile_cfg *retune_mobile_cfgs; | ||
| 55 | }; | ||
| 56 | |||
| 57 | #endif | ||
diff --git a/include/sound/wm8955.h b/include/sound/wm8955.h new file mode 100644 index 000000000000..5074ef499f40 --- /dev/null +++ b/include/sound/wm8955.h | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | /* | ||
| 2 | * Platform data for WM8955 | ||
| 3 | * | ||
| 4 | * Copyright 2009 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 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 __WM8955_PDATA_H__ | ||
| 16 | #define __WM8955_PDATA_H__ | ||
| 17 | |||
| 18 | struct wm8955_pdata { | ||
| 19 | /* Configure LOUT2/ROUT2 to drive a speaker */ | ||
| 20 | unsigned int out2_speaker:1; | ||
| 21 | |||
| 22 | /* Configure MONOIN+/- in differential mode */ | ||
| 23 | unsigned int monoin_diff:1; | ||
| 24 | }; | ||
| 25 | |||
| 26 | #endif | ||
