diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/pci_ids.h | 12 | ||||
-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 |
9 files changed, 99 insertions, 115 deletions
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index d7d1c41a0b17..19f8e6d1a4d2 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1005,6 +1005,7 @@ | |||
1005 | #define PCI_DEVICE_ID_PLX_PCI200SYN 0x3196 | 1005 | #define PCI_DEVICE_ID_PLX_PCI200SYN 0x3196 |
1006 | #define PCI_DEVICE_ID_PLX_9030 0x9030 | 1006 | #define PCI_DEVICE_ID_PLX_9030 0x9030 |
1007 | #define PCI_DEVICE_ID_PLX_9050 0x9050 | 1007 | #define PCI_DEVICE_ID_PLX_9050 0x9050 |
1008 | #define PCI_DEVICE_ID_PLX_9056 0x9056 | ||
1008 | #define PCI_DEVICE_ID_PLX_9080 0x9080 | 1009 | #define PCI_DEVICE_ID_PLX_9080 0x9080 |
1009 | #define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001 | 1010 | #define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001 |
1010 | 1011 | ||
@@ -1314,6 +1315,13 @@ | |||
1314 | 1315 | ||
1315 | #define PCI_VENDOR_ID_CREATIVE 0x1102 /* duplicate: ECTIVA */ | 1316 | #define PCI_VENDOR_ID_CREATIVE 0x1102 /* duplicate: ECTIVA */ |
1316 | #define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002 | 1317 | #define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002 |
1318 | #define PCI_DEVICE_ID_CREATIVE_20K1 0x0005 | ||
1319 | #define PCI_DEVICE_ID_CREATIVE_20K2 0x000b | ||
1320 | #define PCI_SUBDEVICE_ID_CREATIVE_SB0760 0x0024 | ||
1321 | #define PCI_SUBDEVICE_ID_CREATIVE_SB08801 0x0041 | ||
1322 | #define PCI_SUBDEVICE_ID_CREATIVE_SB08802 0x0042 | ||
1323 | #define PCI_SUBDEVICE_ID_CREATIVE_SB08803 0x0043 | ||
1324 | #define PCI_SUBDEVICE_ID_CREATIVE_HENDRIX 0x6000 | ||
1317 | 1325 | ||
1318 | #define PCI_VENDOR_ID_ECTIVA 0x1102 /* duplicate: CREATIVE */ | 1326 | #define PCI_VENDOR_ID_ECTIVA 0x1102 /* duplicate: CREATIVE */ |
1319 | #define PCI_DEVICE_ID_ECTIVA_EV1938 0x8938 | 1327 | #define PCI_DEVICE_ID_ECTIVA_EV1938 0x8938 |
@@ -1847,6 +1855,10 @@ | |||
1847 | #define PCI_SUBDEVICE_ID_HYPERCOPE_METRO 0x0107 | 1855 | #define PCI_SUBDEVICE_ID_HYPERCOPE_METRO 0x0107 |
1848 | #define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2 0x0108 | 1856 | #define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2 0x0108 |
1849 | 1857 | ||
1858 | #define PCI_VENDOR_ID_DIGIGRAM 0x1369 | ||
1859 | #define PCI_SUBDEVICE_ID_DIGIGRAM_LX6464ES_SERIAL_SUBSYSTEM 0xc001 | ||
1860 | #define PCI_SUBDEVICE_ID_DIGIGRAM_LX6464ES_CAE_SERIAL_SUBSYSTEM 0xc002 | ||
1861 | |||
1850 | #define PCI_VENDOR_ID_KAWASAKI 0x136b | 1862 | #define PCI_VENDOR_ID_KAWASAKI 0x136b |
1851 | #define PCI_DEVICE_ID_MCHIP_KL5A72002 0xff01 | 1863 | #define PCI_DEVICE_ID_MCHIP_KL5A72002 0xff01 |
1852 | 1864 | ||
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 | ||