diff options
Diffstat (limited to 'include/sound')
| -rw-r--r-- | include/sound/asound.h | 1 | ||||
| -rw-r--r-- | include/sound/core.h | 11 | ||||
| -rw-r--r-- | include/sound/driver.h | 1 | ||||
| -rw-r--r-- | include/sound/pcm.h | 76 | ||||
| -rw-r--r-- | include/sound/soc-dai.h | 30 | ||||
| -rw-r--r-- | include/sound/soc-dapm.h | 24 | ||||
| -rw-r--r-- | include/sound/soc.h | 34 | ||||
| -rw-r--r-- | include/sound/wm9081.h | 25 |
8 files changed, 87 insertions, 115 deletions
diff --git a/include/sound/asound.h b/include/sound/asound.h index 6add80fc2512..82aed3f47534 100644 --- a/include/sound/asound.h +++ b/include/sound/asound.h | |||
| @@ -255,6 +255,7 @@ typedef int __bitwise snd_pcm_subformat_t; | |||
| 255 | #define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000 /* only half duplex */ | 255 | #define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000 /* only half duplex */ |
| 256 | #define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000 /* playback and capture stream are somewhat correlated */ | 256 | #define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000 /* playback and capture stream are somewhat correlated */ |
| 257 | #define SNDRV_PCM_INFO_SYNC_START 0x00400000 /* pcm support some kind of sync go */ | 257 | #define SNDRV_PCM_INFO_SYNC_START 0x00400000 /* pcm support some kind of sync go */ |
| 258 | #define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000 /* internal kernel flag - FIFO size is in frames */ | ||
| 258 | 259 | ||
| 259 | typedef int __bitwise snd_pcm_state_t; | 260 | typedef int __bitwise snd_pcm_state_t; |
| 260 | #define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0) /* stream is open */ | 261 | #define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0) /* stream is open */ |
diff --git a/include/sound/core.h b/include/sound/core.h index 3dea79829acc..309cb9659a05 100644 --- a/include/sound/core.h +++ b/include/sound/core.h | |||
| @@ -300,19 +300,10 @@ int snd_card_create(int idx, const char *id, | |||
| 300 | struct module *module, int extra_size, | 300 | struct module *module, int extra_size, |
| 301 | struct snd_card **card_ret); | 301 | struct snd_card **card_ret); |
| 302 | 302 | ||
| 303 | static inline __deprecated | ||
| 304 | struct snd_card *snd_card_new(int idx, const char *id, | ||
| 305 | struct module *module, int extra_size) | ||
| 306 | { | ||
| 307 | struct snd_card *card; | ||
| 308 | if (snd_card_create(idx, id, module, extra_size, &card) < 0) | ||
| 309 | return NULL; | ||
| 310 | return card; | ||
| 311 | } | ||
| 312 | |||
| 313 | int snd_card_disconnect(struct snd_card *card); | 303 | int snd_card_disconnect(struct snd_card *card); |
| 314 | int snd_card_free(struct snd_card *card); | 304 | int snd_card_free(struct snd_card *card); |
| 315 | int snd_card_free_when_closed(struct snd_card *card); | 305 | int snd_card_free_when_closed(struct snd_card *card); |
| 306 | void snd_card_set_id(struct snd_card *card, const char *id); | ||
| 316 | int snd_card_register(struct snd_card *card); | 307 | int snd_card_register(struct snd_card *card); |
| 317 | int snd_card_info_init(void); | 308 | int snd_card_info_init(void); |
| 318 | int snd_card_info_done(void); | 309 | int snd_card_info_done(void); |
diff --git a/include/sound/driver.h b/include/sound/driver.h deleted file mode 100644 index f0359437d01a..000000000000 --- a/include/sound/driver.h +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | #warning "This file is deprecated" | ||
diff --git a/include/sound/pcm.h b/include/sound/pcm.h index c17296891617..23893523dc8c 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h | |||
| @@ -98,6 +98,7 @@ struct snd_pcm_ops { | |||
| 98 | #define SNDRV_PCM_IOCTL1_INFO 1 | 98 | #define SNDRV_PCM_IOCTL1_INFO 1 |
| 99 | #define SNDRV_PCM_IOCTL1_CHANNEL_INFO 2 | 99 | #define SNDRV_PCM_IOCTL1_CHANNEL_INFO 2 |
| 100 | #define SNDRV_PCM_IOCTL1_GSTATE 3 | 100 | #define SNDRV_PCM_IOCTL1_GSTATE 3 |
| 101 | #define SNDRV_PCM_IOCTL1_FIFO_SIZE 4 | ||
| 101 | 102 | ||
| 102 | #define SNDRV_PCM_TRIGGER_STOP 0 | 103 | #define SNDRV_PCM_TRIGGER_STOP 0 |
| 103 | #define SNDRV_PCM_TRIGGER_START 1 | 104 | #define SNDRV_PCM_TRIGGER_START 1 |
| @@ -270,6 +271,7 @@ struct snd_pcm_runtime { | |||
| 270 | snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */ | 271 | snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */ |
| 271 | snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time */ | 272 | snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time */ |
| 272 | unsigned long hw_ptr_jiffies; /* Time when hw_ptr is updated */ | 273 | unsigned long hw_ptr_jiffies; /* Time when hw_ptr is updated */ |
| 274 | snd_pcm_sframes_t delay; /* extra delay; typically FIFO size */ | ||
| 273 | 275 | ||
| 274 | /* -- HW params -- */ | 276 | /* -- HW params -- */ |
| 275 | snd_pcm_access_t access; /* access mode */ | 277 | snd_pcm_access_t access; /* access mode */ |
| @@ -486,80 +488,6 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream); | |||
| 486 | void snd_pcm_vma_notify_data(void *client, void *data); | 488 | void snd_pcm_vma_notify_data(void *client, void *data); |
| 487 | int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file, struct vm_area_struct *area); | 489 | int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file, struct vm_area_struct *area); |
| 488 | 490 | ||
| 489 | #if BITS_PER_LONG >= 64 | ||
| 490 | |||
| 491 | static inline void div64_32(u_int64_t *n, u_int32_t div, u_int32_t *rem) | ||
| 492 | { | ||
| 493 | *rem = *n % div; | ||
| 494 | *n /= div; | ||
| 495 | } | ||
| 496 | |||
| 497 | #elif defined(i386) | ||
| 498 | |||
| 499 | static inline void div64_32(u_int64_t *n, u_int32_t div, u_int32_t *rem) | ||
| 500 | { | ||
| 501 | u_int32_t low, high; | ||
| 502 | low = *n & 0xffffffff; | ||
| 503 | high = *n >> 32; | ||
| 504 | if (high) { | ||
| 505 | u_int32_t high1 = high % div; | ||
| 506 | high /= div; | ||
| 507 | asm("divl %2":"=a" (low), "=d" (*rem):"rm" (div), "a" (low), "d" (high1)); | ||
| 508 | *n = (u_int64_t)high << 32 | low; | ||
| 509 | } else { | ||
| 510 | *n = low / div; | ||
| 511 | *rem = low % div; | ||
| 512 | } | ||
| 513 | } | ||
| 514 | #else | ||
| 515 | |||
| 516 | static inline void divl(u_int32_t high, u_int32_t low, | ||
| 517 | u_int32_t div, | ||
| 518 | u_int32_t *q, u_int32_t *r) | ||
| 519 | { | ||
| 520 | u_int64_t n = (u_int64_t)high << 32 | low; | ||
| 521 | u_int64_t d = (u_int64_t)div << 31; | ||
| 522 | u_int32_t q1 = 0; | ||
| 523 | int c = 32; | ||
| 524 | while (n > 0xffffffffU) { | ||
| 525 | q1 <<= 1; | ||
| 526 | if (n >= d) { | ||
| 527 | n -= d; | ||
| 528 | q1 |= 1; | ||
| 529 | } | ||
| 530 | d >>= 1; | ||
| 531 | c--; | ||
| 532 | } | ||
| 533 | q1 <<= c; | ||
| 534 | if (n) { | ||
| 535 | low = n; | ||
| 536 | *q = q1 | (low / div); | ||
| 537 | *r = low % div; | ||
| 538 | } else { | ||
| 539 | *r = 0; | ||
| 540 | *q = q1; | ||
| 541 | } | ||
| 542 | return; | ||
| 543 | } | ||
| 544 | |||
| 545 | static inline void div64_32(u_int64_t *n, u_int32_t div, u_int32_t *rem) | ||
| 546 | { | ||
| 547 | u_int32_t low, high; | ||
| 548 | low = *n & 0xffffffff; | ||
| 549 | high = *n >> 32; | ||
| 550 | if (high) { | ||
| 551 | u_int32_t high1 = high % div; | ||
| 552 | u_int32_t low1 = low; | ||
| 553 | high /= div; | ||
| 554 | divl(high1, low1, div, &low, rem); | ||
| 555 | *n = (u_int64_t)high << 32 | low; | ||
| 556 | } else { | ||
| 557 | *n = low / div; | ||
| 558 | *rem = low % div; | ||
| 559 | } | ||
| 560 | } | ||
| 561 | #endif | ||
| 562 | |||
| 563 | /* | 491 | /* |
| 564 | * PCM library | 492 | * PCM library |
| 565 | */ | 493 | */ |
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 13676472ddfc..352d7eee9b6d 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h | |||
| @@ -45,24 +45,6 @@ struct snd_pcm_substream; | |||
| 45 | #define SND_SOC_DAIFMT_GATED (1 << 4) /* clock is gated */ | 45 | #define SND_SOC_DAIFMT_GATED (1 << 4) /* clock is gated */ |
| 46 | 46 | ||
| 47 | /* | 47 | /* |
| 48 | * DAI Left/Right Clocks. | ||
| 49 | * | ||
| 50 | * Specifies whether the DAI can support different samples for similtanious | ||
| 51 | * playback and capture. This usually requires a seperate physical frame | ||
| 52 | * clock for playback and capture. | ||
| 53 | */ | ||
| 54 | #define SND_SOC_DAIFMT_SYNC (0 << 5) /* Tx FRM = Rx FRM */ | ||
| 55 | #define SND_SOC_DAIFMT_ASYNC (1 << 5) /* Tx FRM ~ Rx FRM */ | ||
| 56 | |||
| 57 | /* | ||
| 58 | * TDM | ||
| 59 | * | ||
| 60 | * Time Division Multiplexing. Allows PCM data to be multplexed with other | ||
| 61 | * data on the DAI. | ||
| 62 | */ | ||
| 63 | #define SND_SOC_DAIFMT_TDM (1 << 6) | ||
| 64 | |||
| 65 | /* | ||
| 66 | * DAI hardware signal inversions. | 48 | * DAI hardware signal inversions. |
| 67 | * | 49 | * |
| 68 | * Specifies whether the DAI can also support inverted clocks for the specified | 50 | * Specifies whether the DAI can also support inverted clocks for the specified |
| @@ -96,6 +78,10 @@ struct snd_pcm_substream; | |||
| 96 | #define SND_SOC_CLOCK_IN 0 | 78 | #define SND_SOC_CLOCK_IN 0 |
| 97 | #define SND_SOC_CLOCK_OUT 1 | 79 | #define SND_SOC_CLOCK_OUT 1 |
| 98 | 80 | ||
| 81 | #define SND_SOC_STD_AC97_FMTS (SNDRV_PCM_FMTBIT_S16_LE |\ | ||
| 82 | SNDRV_PCM_FMTBIT_S32_LE |\ | ||
| 83 | SNDRV_PCM_FMTBIT_S32_BE) | ||
| 84 | |||
| 99 | struct snd_soc_dai_ops; | 85 | struct snd_soc_dai_ops; |
| 100 | struct snd_soc_dai; | 86 | struct snd_soc_dai; |
| 101 | struct snd_ac97_bus_ops; | 87 | struct snd_ac97_bus_ops; |
| @@ -208,6 +194,7 @@ struct snd_soc_dai { | |||
| 208 | /* DAI capabilities */ | 194 | /* DAI capabilities */ |
| 209 | struct snd_soc_pcm_stream capture; | 195 | struct snd_soc_pcm_stream capture; |
| 210 | struct snd_soc_pcm_stream playback; | 196 | struct snd_soc_pcm_stream playback; |
| 197 | unsigned int symmetric_rates:1; | ||
| 211 | 198 | ||
| 212 | /* DAI runtime info */ | 199 | /* DAI runtime info */ |
| 213 | struct snd_pcm_runtime *runtime; | 200 | struct snd_pcm_runtime *runtime; |
| @@ -219,11 +206,8 @@ struct snd_soc_dai { | |||
| 219 | /* DAI private data */ | 206 | /* DAI private data */ |
| 220 | void *private_data; | 207 | void *private_data; |
| 221 | 208 | ||
| 222 | /* parent codec/platform */ | 209 | /* parent platform */ |
| 223 | union { | 210 | struct snd_soc_platform *platform; |
| 224 | struct snd_soc_codec *codec; | ||
| 225 | struct snd_soc_platform *platform; | ||
| 226 | }; | ||
| 227 | 211 | ||
| 228 | struct list_head list; | 212 | struct list_head list; |
| 229 | }; | 213 | }; |
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h index a7def6a9a030..ec8a45f9a069 100644 --- a/include/sound/soc-dapm.h +++ b/include/sound/soc-dapm.h | |||
| @@ -140,16 +140,30 @@ | |||
| 140 | #define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \ | 140 | #define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \ |
| 141 | { .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \ | 141 | { .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \ |
| 142 | .shift = wshift, .invert = winvert} | 142 | .shift = wshift, .invert = winvert} |
| 143 | #define SND_SOC_DAPM_DAC_E(wname, stname, wreg, wshift, winvert, \ | ||
| 144 | wevent, wflags) \ | ||
| 145 | { .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \ | ||
| 146 | .shift = wshift, .invert = winvert, \ | ||
| 147 | .event = wevent, .event_flags = wflags} | ||
| 143 | #define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \ | 148 | #define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \ |
| 144 | { .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \ | 149 | { .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \ |
| 145 | .shift = wshift, .invert = winvert} | 150 | .shift = wshift, .invert = winvert} |
| 151 | #define SND_SOC_DAPM_ADC_E(wname, stname, wreg, wshift, winvert, \ | ||
| 152 | wevent, wflags) \ | ||
| 153 | { .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \ | ||
| 154 | .shift = wshift, .invert = winvert, \ | ||
| 155 | .event = wevent, .event_flags = wflags} | ||
| 146 | 156 | ||
| 147 | /* generic register modifier widget */ | 157 | /* generic widgets */ |
| 148 | #define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \ | 158 | #define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \ |
| 149 | { .id = wid, .name = wname, .kcontrols = NULL, .num_kcontrols = 0, \ | 159 | { .id = wid, .name = wname, .kcontrols = NULL, .num_kcontrols = 0, \ |
| 150 | .reg = -((wreg) + 1), .shift = wshift, .mask = wmask, \ | 160 | .reg = -((wreg) + 1), .shift = wshift, .mask = wmask, \ |
| 151 | .on_val = won_val, .off_val = woff_val, .event = dapm_reg_event, \ | 161 | .on_val = won_val, .off_val = woff_val, .event = dapm_reg_event, \ |
| 152 | .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD} | 162 | .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD} |
| 163 | #define SND_SOC_DAPM_SUPPLY(wname, wreg, wshift, winvert, wevent, wflags) \ | ||
| 164 | { .id = snd_soc_dapm_supply, .name = wname, .reg = wreg, \ | ||
| 165 | .shift = wshift, .invert = winvert, .event = wevent, \ | ||
| 166 | .event_flags = wflags} | ||
| 153 | 167 | ||
| 154 | /* dapm kcontrol types */ | 168 | /* dapm kcontrol types */ |
| 155 | #define SOC_DAPM_SINGLE(xname, reg, shift, max, invert) \ | 169 | #define SOC_DAPM_SINGLE(xname, reg, shift, max, invert) \ |
| @@ -265,8 +279,6 @@ int snd_soc_dapm_add_routes(struct snd_soc_codec *codec, | |||
| 265 | /* dapm events */ | 279 | /* dapm events */ |
| 266 | int snd_soc_dapm_stream_event(struct snd_soc_codec *codec, char *stream, | 280 | int snd_soc_dapm_stream_event(struct snd_soc_codec *codec, char *stream, |
| 267 | int event); | 281 | int event); |
| 268 | int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev, | ||
| 269 | enum snd_soc_bias_level level); | ||
| 270 | 282 | ||
| 271 | /* dapm sys fs - used by the core */ | 283 | /* dapm sys fs - used by the core */ |
| 272 | int snd_soc_dapm_sys_add(struct device *dev); | 284 | int snd_soc_dapm_sys_add(struct device *dev); |
| @@ -298,6 +310,7 @@ enum snd_soc_dapm_type { | |||
| 298 | snd_soc_dapm_vmid, /* codec bias/vmid - to minimise pops */ | 310 | snd_soc_dapm_vmid, /* codec bias/vmid - to minimise pops */ |
| 299 | snd_soc_dapm_pre, /* machine specific pre widget - exec first */ | 311 | snd_soc_dapm_pre, /* machine specific pre widget - exec first */ |
| 300 | snd_soc_dapm_post, /* machine specific post widget - exec last */ | 312 | snd_soc_dapm_post, /* machine specific post widget - exec last */ |
| 313 | snd_soc_dapm_supply, /* power/clock supply */ | ||
| 301 | }; | 314 | }; |
| 302 | 315 | ||
| 303 | /* | 316 | /* |
| @@ -357,6 +370,8 @@ struct snd_soc_dapm_widget { | |||
| 357 | unsigned char suspend:1; /* was active before suspend */ | 370 | unsigned char suspend:1; /* was active before suspend */ |
| 358 | unsigned char pmdown:1; /* waiting for timeout */ | 371 | unsigned char pmdown:1; /* waiting for timeout */ |
| 359 | 372 | ||
| 373 | int (*power_check)(struct snd_soc_dapm_widget *w); | ||
| 374 | |||
| 360 | /* external events */ | 375 | /* external events */ |
| 361 | unsigned short event_flags; /* flags to specify event types */ | 376 | unsigned short event_flags; /* flags to specify event types */ |
| 362 | int (*event)(struct snd_soc_dapm_widget*, struct snd_kcontrol *, int); | 377 | int (*event)(struct snd_soc_dapm_widget*, struct snd_kcontrol *, int); |
| @@ -368,6 +383,9 @@ struct snd_soc_dapm_widget { | |||
| 368 | /* widget input and outputs */ | 383 | /* widget input and outputs */ |
| 369 | struct list_head sources; | 384 | struct list_head sources; |
| 370 | struct list_head sinks; | 385 | struct list_head sinks; |
| 386 | |||
| 387 | /* used during DAPM updates */ | ||
| 388 | struct list_head power_list; | ||
| 371 | }; | 389 | }; |
| 372 | 390 | ||
| 373 | #endif | 391 | #endif |
diff --git a/include/sound/soc.h b/include/sound/soc.h index a40bc6f316fc..cf6111d72b17 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
| @@ -118,6 +118,14 @@ | |||
| 118 | .info = snd_soc_info_volsw, \ | 118 | .info = snd_soc_info_volsw, \ |
| 119 | .get = xhandler_get, .put = xhandler_put, \ | 119 | .get = xhandler_get, .put = xhandler_put, \ |
| 120 | .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) } | 120 | .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) } |
| 121 | #define SOC_DOUBLE_EXT(xname, xreg, shift_left, shift_right, xmax, xinvert,\ | ||
| 122 | xhandler_get, xhandler_put) \ | ||
| 123 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\ | ||
| 124 | .info = snd_soc_info_volsw, \ | ||
| 125 | .get = xhandler_get, .put = xhandler_put, \ | ||
| 126 | .private_value = (unsigned long)&(struct soc_mixer_control) \ | ||
| 127 | {.reg = xreg, .shift = shift_left, .rshift = shift_right, \ | ||
| 128 | .max = xmax, .invert = xinvert} } | ||
| 121 | #define SOC_SINGLE_EXT_TLV(xname, xreg, xshift, xmax, xinvert,\ | 129 | #define SOC_SINGLE_EXT_TLV(xname, xreg, xshift, xmax, xinvert,\ |
| 122 | xhandler_get, xhandler_put, tlv_array) \ | 130 | xhandler_get, xhandler_put, tlv_array) \ |
| 123 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ | 131 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ |
| @@ -206,10 +214,6 @@ void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count, | |||
| 206 | struct snd_soc_jack_gpio *gpios); | 214 | struct snd_soc_jack_gpio *gpios); |
| 207 | #endif | 215 | #endif |
| 208 | 216 | ||
| 209 | /* codec IO */ | ||
| 210 | #define snd_soc_read(codec, reg) codec->read(codec, reg) | ||
| 211 | #define snd_soc_write(codec, reg, value) codec->write(codec, reg, value) | ||
| 212 | |||
| 213 | /* codec register bit access */ | 217 | /* codec register bit access */ |
| 214 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, | 218 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, |
| 215 | unsigned short mask, unsigned short value); | 219 | unsigned short mask, unsigned short value); |
| @@ -331,6 +335,7 @@ struct snd_soc_codec { | |||
| 331 | struct module *owner; | 335 | struct module *owner; |
| 332 | struct mutex mutex; | 336 | struct mutex mutex; |
| 333 | struct device *dev; | 337 | struct device *dev; |
| 338 | struct snd_soc_device *socdev; | ||
| 334 | 339 | ||
| 335 | struct list_head list; | 340 | struct list_head list; |
| 336 | 341 | ||
| @@ -364,6 +369,8 @@ struct snd_soc_codec { | |||
| 364 | enum snd_soc_bias_level bias_level; | 369 | enum snd_soc_bias_level bias_level; |
| 365 | enum snd_soc_bias_level suspend_bias_level; | 370 | enum snd_soc_bias_level suspend_bias_level; |
| 366 | struct delayed_work delayed_work; | 371 | struct delayed_work delayed_work; |
| 372 | struct list_head up_list; | ||
| 373 | struct list_head down_list; | ||
| 367 | 374 | ||
| 368 | /* codec DAI's */ | 375 | /* codec DAI's */ |
| 369 | struct snd_soc_dai *dai; | 376 | struct snd_soc_dai *dai; |
| @@ -417,6 +424,12 @@ struct snd_soc_dai_link { | |||
| 417 | /* codec/machine specific init - e.g. add machine controls */ | 424 | /* codec/machine specific init - e.g. add machine controls */ |
| 418 | int (*init)(struct snd_soc_codec *codec); | 425 | int (*init)(struct snd_soc_codec *codec); |
| 419 | 426 | ||
| 427 | /* Symmetry requirements */ | ||
| 428 | unsigned int symmetric_rates:1; | ||
| 429 | |||
| 430 | /* Symmetry data - only valid if symmetry is being enforced */ | ||
| 431 | unsigned int rate; | ||
| 432 | |||
| 420 | /* DAI pcm */ | 433 | /* DAI pcm */ |
| 421 | struct snd_pcm *pcm; | 434 | struct snd_pcm *pcm; |
| 422 | }; | 435 | }; |
| @@ -490,6 +503,19 @@ struct soc_enum { | |||
| 490 | void *dapm; | 503 | void *dapm; |
| 491 | }; | 504 | }; |
| 492 | 505 | ||
| 506 | /* codec IO */ | ||
| 507 | static inline unsigned int snd_soc_read(struct snd_soc_codec *codec, | ||
| 508 | unsigned int reg) | ||
| 509 | { | ||
| 510 | return codec->read(codec, reg); | ||
| 511 | } | ||
| 512 | |||
| 513 | static inline unsigned int snd_soc_write(struct snd_soc_codec *codec, | ||
| 514 | unsigned int reg, unsigned int val) | ||
| 515 | { | ||
| 516 | return codec->write(codec, reg, val); | ||
| 517 | } | ||
| 518 | |||
| 493 | #include <sound/soc-dai.h> | 519 | #include <sound/soc-dai.h> |
| 494 | 520 | ||
| 495 | #endif | 521 | #endif |
diff --git a/include/sound/wm9081.h b/include/sound/wm9081.h new file mode 100644 index 000000000000..e173ddbf6bd4 --- /dev/null +++ b/include/sound/wm9081.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * linux/sound/wm9081.h -- Platform data for WM9081 | ||
| 3 | * | ||
| 4 | * Copyright 2009 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_WM_9081_H | ||
| 12 | #define __LINUX_SND_WM_9081_H | ||
| 13 | |||
| 14 | struct wm9081_retune_mobile_setting { | ||
| 15 | const char *name; | ||
| 16 | unsigned int rate; | ||
| 17 | u16 config[20]; | ||
| 18 | }; | ||
| 19 | |||
| 20 | struct wm9081_retune_mobile_config { | ||
| 21 | struct wm9081_retune_mobile_setting *configs; | ||
| 22 | int num_configs; | ||
| 23 | }; | ||
| 24 | |||
| 25 | #endif | ||
