diff options
Diffstat (limited to 'sound')
96 files changed, 263 insertions, 190 deletions
diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c index fd2188c3df2b..58804c7acfcf 100644 --- a/sound/aoa/codecs/tas.c +++ b/sound/aoa/codecs/tas.c | |||
@@ -170,7 +170,7 @@ static void tas_set_volume(struct tas *tas) | |||
170 | /* analysing the volume and mixer tables shows | 170 | /* analysing the volume and mixer tables shows |
171 | * that they are similar enough when we shift | 171 | * that they are similar enough when we shift |
172 | * the mixer table down by 4 bits. The error | 172 | * the mixer table down by 4 bits. The error |
173 | * is miniscule, in just one item the error | 173 | * is minuscule, in just one item the error |
174 | * is 1, at a value of 0x07f17b (mixer table | 174 | * is 1, at a value of 0x07f17b (mixer table |
175 | * value is 0x07f17a) */ | 175 | * value is 0x07f17a) */ |
176 | tmp = tas_gaintable[left]; | 176 | tmp = tas_gaintable[left]; |
diff --git a/sound/arm/pxa2xx-pcm-lib.c b/sound/arm/pxa2xx-pcm-lib.c index 8808b82311b1..76e0d5695075 100644 --- a/sound/arm/pxa2xx-pcm-lib.c +++ b/sound/arm/pxa2xx-pcm-lib.c | |||
@@ -140,6 +140,9 @@ int __pxa2xx_pcm_prepare(struct snd_pcm_substream *substream) | |||
140 | if (!prtd || !prtd->params) | 140 | if (!prtd || !prtd->params) |
141 | return 0; | 141 | return 0; |
142 | 142 | ||
143 | if (prtd->dma_ch == -1) | ||
144 | return -EINVAL; | ||
145 | |||
143 | DCSR(prtd->dma_ch) &= ~DCSR_RUN; | 146 | DCSR(prtd->dma_ch) &= ~DCSR_RUN; |
144 | DCSR(prtd->dma_ch) = 0; | 147 | DCSR(prtd->dma_ch) = 0; |
145 | DCMD(prtd->dma_ch) = 0; | 148 | DCMD(prtd->dma_ch) = 0; |
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index a82e3756a72d..64449cb8f873 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c | |||
@@ -375,6 +375,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, | |||
375 | } | 375 | } |
376 | 376 | ||
377 | if (runtime->no_period_wakeup) { | 377 | if (runtime->no_period_wakeup) { |
378 | snd_pcm_sframes_t xrun_threshold; | ||
378 | /* | 379 | /* |
379 | * Without regular period interrupts, we have to check | 380 | * Without regular period interrupts, we have to check |
380 | * the elapsed time to detect xruns. | 381 | * the elapsed time to detect xruns. |
@@ -383,7 +384,8 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, | |||
383 | if (jdelta < runtime->hw_ptr_buffer_jiffies / 2) | 384 | if (jdelta < runtime->hw_ptr_buffer_jiffies / 2) |
384 | goto no_delta_check; | 385 | goto no_delta_check; |
385 | hdelta = jdelta - delta * HZ / runtime->rate; | 386 | hdelta = jdelta - delta * HZ / runtime->rate; |
386 | while (hdelta > runtime->hw_ptr_buffer_jiffies / 2 + 1) { | 387 | xrun_threshold = runtime->hw_ptr_buffer_jiffies / 2 + 1; |
388 | while (hdelta > xrun_threshold) { | ||
387 | delta += runtime->buffer_size; | 389 | delta += runtime->buffer_size; |
388 | hw_base += runtime->buffer_size; | 390 | hw_base += runtime->buffer_size; |
389 | if (hw_base >= runtime->boundary) | 391 | if (hw_base >= runtime->boundary) |
diff --git a/sound/core/pcm_memory.c b/sound/core/pcm_memory.c index 917e4055ee30..150cb7edffee 100644 --- a/sound/core/pcm_memory.c +++ b/sound/core/pcm_memory.c | |||
@@ -253,7 +253,7 @@ static int snd_pcm_lib_preallocate_pages1(struct snd_pcm_substream *substream, | |||
253 | * snd_pcm_lib_preallocate_pages - pre-allocation for the given DMA type | 253 | * snd_pcm_lib_preallocate_pages - pre-allocation for the given DMA type |
254 | * @substream: the pcm substream instance | 254 | * @substream: the pcm substream instance |
255 | * @type: DMA type (SNDRV_DMA_TYPE_*) | 255 | * @type: DMA type (SNDRV_DMA_TYPE_*) |
256 | * @data: DMA type dependant data | 256 | * @data: DMA type dependent data |
257 | * @size: the requested pre-allocation size in bytes | 257 | * @size: the requested pre-allocation size in bytes |
258 | * @max: the max. allowed pre-allocation size | 258 | * @max: the max. allowed pre-allocation size |
259 | * | 259 | * |
@@ -278,10 +278,10 @@ int snd_pcm_lib_preallocate_pages(struct snd_pcm_substream *substream, | |||
278 | EXPORT_SYMBOL(snd_pcm_lib_preallocate_pages); | 278 | EXPORT_SYMBOL(snd_pcm_lib_preallocate_pages); |
279 | 279 | ||
280 | /** | 280 | /** |
281 | * snd_pcm_lib_preallocate_pages_for_all - pre-allocation for continous memory type (all substreams) | 281 | * snd_pcm_lib_preallocate_pages_for_all - pre-allocation for continuous memory type (all substreams) |
282 | * @pcm: the pcm instance | 282 | * @pcm: the pcm instance |
283 | * @type: DMA type (SNDRV_DMA_TYPE_*) | 283 | * @type: DMA type (SNDRV_DMA_TYPE_*) |
284 | * @data: DMA type dependant data | 284 | * @data: DMA type dependent data |
285 | * @size: the requested pre-allocation size in bytes | 285 | * @size: the requested pre-allocation size in bytes |
286 | * @max: the max. allowed pre-allocation size | 286 | * @max: the max. allowed pre-allocation size |
287 | * | 287 | * |
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index fe5c8036beba..1a07750f3836 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c | |||
@@ -460,7 +460,7 @@ static int snd_pcm_hw_params(struct snd_pcm_substream *substream, | |||
460 | PM_QOS_CPU_DMA_LATENCY, usecs); | 460 | PM_QOS_CPU_DMA_LATENCY, usecs); |
461 | return 0; | 461 | return 0; |
462 | _error: | 462 | _error: |
463 | /* hardware might be unuseable from this time, | 463 | /* hardware might be unusable from this time, |
464 | so we force application to retry to set | 464 | so we force application to retry to set |
465 | the correct hardware parameter settings */ | 465 | the correct hardware parameter settings */ |
466 | runtime->status->state = SNDRV_PCM_STATE_OPEN; | 466 | runtime->status->state = SNDRV_PCM_STATE_OPEN; |
diff --git a/sound/core/seq/seq_dummy.c b/sound/core/seq/seq_dummy.c index f3bdc54b429a..1d7d90ca455e 100644 --- a/sound/core/seq/seq_dummy.c +++ b/sound/core/seq/seq_dummy.c | |||
@@ -50,7 +50,7 @@ | |||
50 | 50 | ||
51 | option snd-seq-dummy ports=4 | 51 | option snd-seq-dummy ports=4 |
52 | 52 | ||
53 | The modle option "duplex=1" enables duplex operation to the port. | 53 | The model option "duplex=1" enables duplex operation to the port. |
54 | In duplex mode, a pair of ports are created instead of single port, | 54 | In duplex mode, a pair of ports are created instead of single port, |
55 | and events are tunneled between pair-ports. For example, input to | 55 | and events are tunneled between pair-ports. For example, input to |
56 | port A is sent to output port of another port B and vice versa. | 56 | port A is sent to output port of another port B and vice versa. |
diff --git a/sound/core/vmaster.c b/sound/core/vmaster.c index a89948ae9e8d..a39d3d8c2f9c 100644 --- a/sound/core/vmaster.c +++ b/sound/core/vmaster.c | |||
@@ -233,7 +233,7 @@ static void slave_free(struct snd_kcontrol *kcontrol) | |||
233 | * Add a slave control to the group with the given master control | 233 | * Add a slave control to the group with the given master control |
234 | * | 234 | * |
235 | * All slaves must be the same type (returning the same information | 235 | * All slaves must be the same type (returning the same information |
236 | * via info callback). The fucntion doesn't check it, so it's your | 236 | * via info callback). The function doesn't check it, so it's your |
237 | * responsibility. | 237 | * responsibility. |
238 | * | 238 | * |
239 | * Also, some additional limitations: | 239 | * Also, some additional limitations: |
diff --git a/sound/drivers/pcm-indirect2.c b/sound/drivers/pcm-indirect2.c index 3c93c23e4883..e73fafd761b3 100644 --- a/sound/drivers/pcm-indirect2.c +++ b/sound/drivers/pcm-indirect2.c | |||
@@ -264,7 +264,7 @@ snd_pcm_indirect2_playback_transfer(struct snd_pcm_substream *substream, | |||
264 | if (diff < -(snd_pcm_sframes_t) (runtime->boundary / 2)) | 264 | if (diff < -(snd_pcm_sframes_t) (runtime->boundary / 2)) |
265 | diff += runtime->boundary; | 265 | diff += runtime->boundary; |
266 | /* number of bytes "added" by ALSA increases the number of | 266 | /* number of bytes "added" by ALSA increases the number of |
267 | * bytes which are ready to "be transfered to HW"/"played" | 267 | * bytes which are ready to "be transferred to HW"/"played" |
268 | * Then, set rec->appl_ptr to not count bytes twice next time. | 268 | * Then, set rec->appl_ptr to not count bytes twice next time. |
269 | */ | 269 | */ |
270 | rec->sw_ready += (int)frames_to_bytes(runtime, diff); | 270 | rec->sw_ready += (int)frames_to_bytes(runtime, diff); |
@@ -330,7 +330,7 @@ snd_pcm_indirect2_playback_transfer(struct snd_pcm_substream *substream, | |||
330 | /* copy bytes from intermediate buffer position sw_data to the | 330 | /* copy bytes from intermediate buffer position sw_data to the |
331 | * HW and return number of bytes actually written | 331 | * HW and return number of bytes actually written |
332 | * Furthermore, set hw_ready to 0, if the fifo isn't empty | 332 | * Furthermore, set hw_ready to 0, if the fifo isn't empty |
333 | * now => more could be transfered to fifo | 333 | * now => more could be transferred to fifo |
334 | */ | 334 | */ |
335 | bytes = copy(substream, rec, bytes); | 335 | bytes = copy(substream, rec, bytes); |
336 | rec->bytes2hw += bytes; | 336 | rec->bytes2hw += bytes; |
diff --git a/sound/drivers/vx/vx_pcm.c b/sound/drivers/vx/vx_pcm.c index 35a2f71a6af5..5e897b236cec 100644 --- a/sound/drivers/vx/vx_pcm.c +++ b/sound/drivers/vx/vx_pcm.c | |||
@@ -1189,7 +1189,7 @@ void vx_pcm_update_intr(struct vx_core *chip, unsigned int events) | |||
1189 | 1189 | ||
1190 | 1190 | ||
1191 | /* | 1191 | /* |
1192 | * vx_init_audio_io - check the availabe audio i/o and allocate pipe arrays | 1192 | * vx_init_audio_io - check the available audio i/o and allocate pipe arrays |
1193 | */ | 1193 | */ |
1194 | static int vx_init_audio_io(struct vx_core *chip) | 1194 | static int vx_init_audio_io(struct vx_core *chip) |
1195 | { | 1195 | { |
diff --git a/sound/firewire/speakers.c b/sound/firewire/speakers.c index 0fce9218abb1..5466de8527bd 100644 --- a/sound/firewire/speakers.c +++ b/sound/firewire/speakers.c | |||
@@ -778,10 +778,9 @@ static int __devexit fwspk_remove(struct device *dev) | |||
778 | { | 778 | { |
779 | struct fwspk *fwspk = dev_get_drvdata(dev); | 779 | struct fwspk *fwspk = dev_get_drvdata(dev); |
780 | 780 | ||
781 | snd_card_disconnect(fwspk->card); | ||
782 | |||
783 | mutex_lock(&fwspk->mutex); | 781 | mutex_lock(&fwspk->mutex); |
784 | amdtp_out_stream_pcm_abort(&fwspk->stream); | 782 | amdtp_out_stream_pcm_abort(&fwspk->stream); |
783 | snd_card_disconnect(fwspk->card); | ||
785 | fwspk_stop_stream(fwspk); | 784 | fwspk_stop_stream(fwspk); |
786 | mutex_unlock(&fwspk->mutex); | 785 | mutex_unlock(&fwspk->mutex); |
787 | 786 | ||
diff --git a/sound/isa/sb/emu8000.c b/sound/isa/sb/emu8000.c index 0c40951b6523..5d61f5a29130 100644 --- a/sound/isa/sb/emu8000.c +++ b/sound/isa/sb/emu8000.c | |||
@@ -370,7 +370,7 @@ init_arrays(struct snd_emu8000 *emu) | |||
370 | 370 | ||
371 | /* | 371 | /* |
372 | * Size the onboard memory. | 372 | * Size the onboard memory. |
373 | * This is written so as not to need arbitary delays after the write. It | 373 | * This is written so as not to need arbitrary delays after the write. It |
374 | * seems that the only way to do this is to use the one channel and keep | 374 | * seems that the only way to do this is to use the one channel and keep |
375 | * reallocating between read and write. | 375 | * reallocating between read and write. |
376 | */ | 376 | */ |
diff --git a/sound/isa/wavefront/wavefront_midi.c b/sound/isa/wavefront/wavefront_midi.c index f14a7c0b6998..65329f3abc30 100644 --- a/sound/isa/wavefront/wavefront_midi.c +++ b/sound/isa/wavefront/wavefront_midi.c | |||
@@ -537,7 +537,7 @@ snd_wavefront_midi_start (snd_wavefront_card_t *card) | |||
537 | } | 537 | } |
538 | 538 | ||
539 | /* Turn on Virtual MIDI, but first *always* turn it off, | 539 | /* Turn on Virtual MIDI, but first *always* turn it off, |
540 | since otherwise consectutive reloads of the driver will | 540 | since otherwise consecutive reloads of the driver will |
541 | never cause the hardware to generate the initial "internal" or | 541 | never cause the hardware to generate the initial "internal" or |
542 | "external" source bytes in the MIDI data stream. This | 542 | "external" source bytes in the MIDI data stream. This |
543 | is pretty important, since the internal hardware generally will | 543 | is pretty important, since the internal hardware generally will |
diff --git a/sound/isa/wss/wss_lib.c b/sound/isa/wss/wss_lib.c index 9191b32d9130..2a42cc377957 100644 --- a/sound/isa/wss/wss_lib.c +++ b/sound/isa/wss/wss_lib.c | |||
@@ -424,7 +424,7 @@ void snd_wss_mce_down(struct snd_wss *chip) | |||
424 | 424 | ||
425 | /* | 425 | /* |
426 | * Wait for (possible -- during init auto-calibration may not be set) | 426 | * Wait for (possible -- during init auto-calibration may not be set) |
427 | * calibration process to start. Needs upto 5 sample periods on AD1848 | 427 | * calibration process to start. Needs up to 5 sample periods on AD1848 |
428 | * which at the slowest possible rate of 5.5125 kHz means 907 us. | 428 | * which at the slowest possible rate of 5.5125 kHz means 907 us. |
429 | */ | 429 | */ |
430 | msleep(1); | 430 | msleep(1); |
diff --git a/sound/oss/ac97_codec.c b/sound/oss/ac97_codec.c index 854c303264dc..0cd23d94888f 100644 --- a/sound/oss/ac97_codec.c +++ b/sound/oss/ac97_codec.c | |||
@@ -28,7 +28,7 @@ | |||
28 | * | 28 | * |
29 | * History | 29 | * History |
30 | * May 02, 2003 Liam Girdwood <lrg@slimlogic.co.uk> | 30 | * May 02, 2003 Liam Girdwood <lrg@slimlogic.co.uk> |
31 | * Removed non existant WM9700 | 31 | * Removed non existent WM9700 |
32 | * Added support for WM9705, WM9708, WM9709, WM9710, WM9711 | 32 | * Added support for WM9705, WM9708, WM9709, WM9710, WM9711 |
33 | * WM9712 and WM9717 | 33 | * WM9712 and WM9717 |
34 | * Mar 28, 2002 Randolph Bentson <bentson@holmsjoen.com> | 34 | * Mar 28, 2002 Randolph Bentson <bentson@holmsjoen.com> |
@@ -441,7 +441,7 @@ static void ac97_set_mixer(struct ac97_codec *codec, unsigned int oss_mixer, uns | |||
441 | } | 441 | } |
442 | 442 | ||
443 | /* read or write the recmask, the ac97 can really have left and right recording | 443 | /* read or write the recmask, the ac97 can really have left and right recording |
444 | inputs independantly set, but OSS doesn't seem to want us to express that to | 444 | inputs independently set, but OSS doesn't seem to want us to express that to |
445 | the user. the caller guarantees that we have a supported bit set, and they | 445 | the user. the caller guarantees that we have a supported bit set, and they |
446 | must be holding the card's spinlock */ | 446 | must be holding the card's spinlock */ |
447 | static int ac97_recmask_io(struct ac97_codec *codec, int rw, int mask) | 447 | static int ac97_recmask_io(struct ac97_codec *codec, int rw, int mask) |
@@ -754,7 +754,7 @@ int ac97_probe_codec(struct ac97_codec *codec) | |||
754 | if((codec->codec_ops == &null_ops) && (f & 4)) | 754 | if((codec->codec_ops == &null_ops) && (f & 4)) |
755 | codec->codec_ops = &default_digital_ops; | 755 | codec->codec_ops = &default_digital_ops; |
756 | 756 | ||
757 | /* A device which thinks its a modem but isnt */ | 757 | /* A device which thinks its a modem but isn't */ |
758 | if(codec->flags & AC97_DELUDED_MODEM) | 758 | if(codec->flags & AC97_DELUDED_MODEM) |
759 | codec->modem = 0; | 759 | codec->modem = 0; |
760 | 760 | ||
diff --git a/sound/oss/audio.c b/sound/oss/audio.c index 7df48a25c4ee..4b958b1c497c 100644 --- a/sound/oss/audio.c +++ b/sound/oss/audio.c | |||
@@ -514,7 +514,7 @@ int audio_ioctl(int dev, struct file *file, unsigned int cmd, void __user *arg) | |||
514 | count += dmap->bytes_in_use; /* Pointer wrap not handled yet */ | 514 | count += dmap->bytes_in_use; /* Pointer wrap not handled yet */ |
515 | count += dmap->byte_counter; | 515 | count += dmap->byte_counter; |
516 | 516 | ||
517 | /* Substract current count from the number of bytes written by app */ | 517 | /* Subtract current count from the number of bytes written by app */ |
518 | count = dmap->user_counter - count; | 518 | count = dmap->user_counter - count; |
519 | if (count < 0) | 519 | if (count < 0) |
520 | count = 0; | 520 | count = 0; |
@@ -931,7 +931,7 @@ static int dma_ioctl(int dev, unsigned int cmd, void __user *arg) | |||
931 | if (count < dmap_out->fragment_size && dmap_out->qhead != 0) | 931 | if (count < dmap_out->fragment_size && dmap_out->qhead != 0) |
932 | count += dmap_out->bytes_in_use; /* Pointer wrap not handled yet */ | 932 | count += dmap_out->bytes_in_use; /* Pointer wrap not handled yet */ |
933 | count += dmap_out->byte_counter; | 933 | count += dmap_out->byte_counter; |
934 | /* Substract current count from the number of bytes written by app */ | 934 | /* Subtract current count from the number of bytes written by app */ |
935 | count = dmap_out->user_counter - count; | 935 | count = dmap_out->user_counter - count; |
936 | if (count < 0) | 936 | if (count < 0) |
937 | count = 0; | 937 | count = 0; |
diff --git a/sound/oss/dmasound/dmasound_core.c b/sound/oss/dmasound/dmasound_core.c index 87e2c72651f5..c918313c2206 100644 --- a/sound/oss/dmasound/dmasound_core.c +++ b/sound/oss/dmasound/dmasound_core.c | |||
@@ -1021,7 +1021,7 @@ static int sq_ioctl(struct file *file, u_int cmd, u_long arg) | |||
1021 | case SNDCTL_DSP_SYNC: | 1021 | case SNDCTL_DSP_SYNC: |
1022 | /* This call, effectively, has the same behaviour as SNDCTL_DSP_RESET | 1022 | /* This call, effectively, has the same behaviour as SNDCTL_DSP_RESET |
1023 | except that it waits for output to finish before resetting | 1023 | except that it waits for output to finish before resetting |
1024 | everything - read, however, is killed imediately. | 1024 | everything - read, however, is killed immediately. |
1025 | */ | 1025 | */ |
1026 | result = 0 ; | 1026 | result = 0 ; |
1027 | if (file->f_mode & FMODE_WRITE) { | 1027 | if (file->f_mode & FMODE_WRITE) { |
diff --git a/sound/oss/midibuf.c b/sound/oss/midibuf.c index ceedb1eff203..8cdb2cfe65c8 100644 --- a/sound/oss/midibuf.c +++ b/sound/oss/midibuf.c | |||
@@ -295,7 +295,7 @@ int MIDIbuf_write(int dev, struct file *file, const char __user *buf, int count) | |||
295 | 295 | ||
296 | for (i = 0; i < n; i++) | 296 | for (i = 0; i < n; i++) |
297 | { | 297 | { |
298 | /* BROKE BROKE BROKE - CANT DO THIS WITH CLI !! */ | 298 | /* BROKE BROKE BROKE - CAN'T DO THIS WITH CLI !! */ |
299 | /* yes, think the same, so I removed the cli() brackets | 299 | /* yes, think the same, so I removed the cli() brackets |
300 | QUEUE_BYTE is protected against interrupts */ | 300 | QUEUE_BYTE is protected against interrupts */ |
301 | if (copy_from_user((char *) &tmp_data, &(buf)[c], 1)) { | 301 | if (copy_from_user((char *) &tmp_data, &(buf)[c], 1)) { |
diff --git a/sound/oss/sb_card.c b/sound/oss/sb_card.c index 84ef4d06c1c2..fb5d7250de38 100644 --- a/sound/oss/sb_card.c +++ b/sound/oss/sb_card.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * sound/oss/sb_card.c | 2 | * sound/oss/sb_card.c |
3 | * | 3 | * |
4 | * Detection routine for the ISA Sound Blaster and compatable sound | 4 | * Detection routine for the ISA Sound Blaster and compatible sound |
5 | * cards. | 5 | * cards. |
6 | * | 6 | * |
7 | * This file is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) | 7 | * This file is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) |
diff --git a/sound/oss/sb_ess.c b/sound/oss/sb_ess.c index 9890cf2066ff..5c773dff5ac5 100644 --- a/sound/oss/sb_ess.c +++ b/sound/oss/sb_ess.c | |||
@@ -168,7 +168,7 @@ | |||
168 | * corresponding playback levels, unless recmask says they aren't recorded. In | 168 | * corresponding playback levels, unless recmask says they aren't recorded. In |
169 | * the latter case the recording volumes are 0. | 169 | * the latter case the recording volumes are 0. |
170 | * Now recording levels of inputs can be controlled, by changing the playback | 170 | * Now recording levels of inputs can be controlled, by changing the playback |
171 | * levels. Futhermore several devices can be recorded together (which is not | 171 | * levels. Furthermore several devices can be recorded together (which is not |
172 | * possible with the ES1688). | 172 | * possible with the ES1688). |
173 | * Besides the separate recording level control for each input, the common | 173 | * Besides the separate recording level control for each input, the common |
174 | * recording level can also be controlled by RECLEV as described above. | 174 | * recording level can also be controlled by RECLEV as described above. |
diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c index 44357d877a27..09d46484bc1a 100644 --- a/sound/oss/swarm_cs4297a.c +++ b/sound/oss/swarm_cs4297a.c | |||
@@ -875,7 +875,7 @@ static void start_adc(struct cs4297a_state *s) | |||
875 | if (s->prop_adc.fmt & AFMT_S8 || s->prop_adc.fmt & AFMT_U8) { | 875 | if (s->prop_adc.fmt & AFMT_S8 || s->prop_adc.fmt & AFMT_U8) { |
876 | // | 876 | // |
877 | // now only use 16 bit capture, due to truncation issue | 877 | // now only use 16 bit capture, due to truncation issue |
878 | // in the chip, noticable distortion occurs. | 878 | // in the chip, noticeable distortion occurs. |
879 | // allocate buffer and then convert from 16 bit to | 879 | // allocate buffer and then convert from 16 bit to |
880 | // 8 bit for the user buffer. | 880 | // 8 bit for the user buffer. |
881 | // | 881 | // |
diff --git a/sound/oss/vidc.c b/sound/oss/vidc.c index f0e0caa53200..12ba28e7b933 100644 --- a/sound/oss/vidc.c +++ b/sound/oss/vidc.c | |||
@@ -227,7 +227,7 @@ static int vidc_audio_set_speed(int dev, int rate) | |||
227 | } else { | 227 | } else { |
228 | /*printk("VIDC: internal %d %d %d\n", rate, rate_int, hwrate);*/ | 228 | /*printk("VIDC: internal %d %d %d\n", rate, rate_int, hwrate);*/ |
229 | hwctrl=0x00000003; | 229 | hwctrl=0x00000003; |
230 | /* Allow rougly 0.4% tolerance */ | 230 | /* Allow roughly 0.4% tolerance */ |
231 | if (diff_int > (rate/256)) | 231 | if (diff_int > (rate/256)) |
232 | rate=rate_int; | 232 | rate=rate_int; |
233 | } | 233 | } |
diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c index 4382d0fa6b9a..d8f6fd65ebbb 100644 --- a/sound/pci/ad1889.c +++ b/sound/pci/ad1889.c | |||
@@ -29,7 +29,7 @@ | |||
29 | * PM support | 29 | * PM support |
30 | * MIDI support | 30 | * MIDI support |
31 | * Game Port support | 31 | * Game Port support |
32 | * SG DMA support (this will need *alot* of work) | 32 | * SG DMA support (this will need *a lot* of work) |
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include <linux/init.h> | 35 | #include <linux/init.h> |
diff --git a/sound/pci/asihpi/asihpi.c b/sound/pci/asihpi/asihpi.c index f53a31e939c1..f8ccc9677c6f 100644 --- a/sound/pci/asihpi/asihpi.c +++ b/sound/pci/asihpi/asihpi.c | |||
@@ -963,7 +963,7 @@ static int snd_card_asihpi_playback_open(struct snd_pcm_substream *substream) | |||
963 | 963 | ||
964 | /*? also check ASI5000 samplerate source | 964 | /*? also check ASI5000 samplerate source |
965 | If external, only support external rate. | 965 | If external, only support external rate. |
966 | If internal and other stream playing, cant switch | 966 | If internal and other stream playing, can't switch |
967 | */ | 967 | */ |
968 | 968 | ||
969 | init_timer(&dpcm->timer); | 969 | init_timer(&dpcm->timer); |
diff --git a/sound/pci/asihpi/hpi.h b/sound/pci/asihpi/hpi.h index 6fc025c448de..255429c32c1c 100644 --- a/sound/pci/asihpi/hpi.h +++ b/sound/pci/asihpi/hpi.h | |||
@@ -725,7 +725,7 @@ enum HPI_AESEBU_ERRORS { | |||
725 | #define HPI_PAD_TITLE_LEN 64 | 725 | #define HPI_PAD_TITLE_LEN 64 |
726 | /** The text string containing the comment. */ | 726 | /** The text string containing the comment. */ |
727 | #define HPI_PAD_COMMENT_LEN 256 | 727 | #define HPI_PAD_COMMENT_LEN 256 |
728 | /** The PTY when the tuner has not recieved any PTY. */ | 728 | /** The PTY when the tuner has not received any PTY. */ |
729 | #define HPI_PAD_PROGRAM_TYPE_INVALID 0xffff | 729 | #define HPI_PAD_PROGRAM_TYPE_INVALID 0xffff |
730 | /** \} */ | 730 | /** \} */ |
731 | 731 | ||
diff --git a/sound/pci/asihpi/hpi6000.c b/sound/pci/asihpi/hpi6000.c index 3e3c2ef6efd8..8c8aac4c567e 100644 --- a/sound/pci/asihpi/hpi6000.c +++ b/sound/pci/asihpi/hpi6000.c | |||
@@ -423,7 +423,7 @@ static void subsys_create_adapter(struct hpi_message *phm, | |||
423 | 423 | ||
424 | ao.priv = kzalloc(sizeof(struct hpi_hw_obj), GFP_KERNEL); | 424 | ao.priv = kzalloc(sizeof(struct hpi_hw_obj), GFP_KERNEL); |
425 | if (!ao.priv) { | 425 | if (!ao.priv) { |
426 | HPI_DEBUG_LOG(ERROR, "cant get mem for adapter object\n"); | 426 | HPI_DEBUG_LOG(ERROR, "can't get mem for adapter object\n"); |
427 | phr->error = HPI_ERROR_MEMORY_ALLOC; | 427 | phr->error = HPI_ERROR_MEMORY_ALLOC; |
428 | return; | 428 | return; |
429 | } | 429 | } |
diff --git a/sound/pci/asihpi/hpi6205.c b/sound/pci/asihpi/hpi6205.c index 620525bdac59..22e9f08dea6d 100644 --- a/sound/pci/asihpi/hpi6205.c +++ b/sound/pci/asihpi/hpi6205.c | |||
@@ -466,7 +466,7 @@ static void subsys_create_adapter(struct hpi_message *phm, | |||
466 | 466 | ||
467 | ao.priv = kzalloc(sizeof(struct hpi_hw_obj), GFP_KERNEL); | 467 | ao.priv = kzalloc(sizeof(struct hpi_hw_obj), GFP_KERNEL); |
468 | if (!ao.priv) { | 468 | if (!ao.priv) { |
469 | HPI_DEBUG_LOG(ERROR, "cant get mem for adapter object\n"); | 469 | HPI_DEBUG_LOG(ERROR, "can't get mem for adapter object\n"); |
470 | phr->error = HPI_ERROR_MEMORY_ALLOC; | 470 | phr->error = HPI_ERROR_MEMORY_ALLOC; |
471 | return; | 471 | return; |
472 | } | 472 | } |
diff --git a/sound/pci/asihpi/hpi_internal.h b/sound/pci/asihpi/hpi_internal.h index af678be0aa15..3b9fd115da36 100644 --- a/sound/pci/asihpi/hpi_internal.h +++ b/sound/pci/asihpi/hpi_internal.h | |||
@@ -607,7 +607,7 @@ struct hpi_data_compat32 { | |||
607 | #endif | 607 | #endif |
608 | 608 | ||
609 | struct hpi_buffer { | 609 | struct hpi_buffer { |
610 | /** placehoder for backward compatability (see dwBufferSize) */ | 610 | /** placehoder for backward compatibility (see dwBufferSize) */ |
611 | struct hpi_msg_format reserved; | 611 | struct hpi_msg_format reserved; |
612 | u32 command; /**< HPI_BUFFER_CMD_xxx*/ | 612 | u32 command; /**< HPI_BUFFER_CMD_xxx*/ |
613 | u32 pci_address; /**< PCI physical address of buffer for DSP DMA */ | 613 | u32 pci_address; /**< PCI physical address of buffer for DSP DMA */ |
diff --git a/sound/pci/asihpi/hpimsgx.c b/sound/pci/asihpi/hpimsgx.c index bcbdf30a6aa0..360028b9abf5 100644 --- a/sound/pci/asihpi/hpimsgx.c +++ b/sound/pci/asihpi/hpimsgx.c | |||
@@ -722,7 +722,7 @@ static u16 HPIMSGX__init(struct hpi_message *phm, | |||
722 | return phr->error; | 722 | return phr->error; |
723 | } | 723 | } |
724 | if (hr.error == 0) { | 724 | if (hr.error == 0) { |
725 | /* the adapter was created succesfully | 725 | /* the adapter was created successfully |
726 | save the mapping for future use */ | 726 | save the mapping for future use */ |
727 | hpi_entry_points[hr.u.s.adapter_index] = entry_point_func; | 727 | hpi_entry_points[hr.u.s.adapter_index] = entry_point_func; |
728 | /* prepare adapter (pre-open streams etc.) */ | 728 | /* prepare adapter (pre-open streams etc.) */ |
diff --git a/sound/pci/au88x0/au88x0.h b/sound/pci/au88x0/au88x0.h index ecb8f4daf408..02f6e08f7592 100644 --- a/sound/pci/au88x0/au88x0.h +++ b/sound/pci/au88x0/au88x0.h | |||
@@ -104,7 +104,7 @@ | |||
104 | #define MIX_PLAYB(x) (vortex->mixplayb[x]) | 104 | #define MIX_PLAYB(x) (vortex->mixplayb[x]) |
105 | #define MIX_SPDIF(x) (vortex->mixspdif[x]) | 105 | #define MIX_SPDIF(x) (vortex->mixspdif[x]) |
106 | 106 | ||
107 | #define NR_WTPB 0x20 /* WT channels per eahc bank. */ | 107 | #define NR_WTPB 0x20 /* WT channels per each bank. */ |
108 | 108 | ||
109 | /* Structs */ | 109 | /* Structs */ |
110 | typedef struct { | 110 | typedef struct { |
diff --git a/sound/pci/au88x0/au88x0_a3d.c b/sound/pci/au88x0/au88x0_a3d.c index f4aa8ff6f5f9..9ae8b3b17651 100644 --- a/sound/pci/au88x0/au88x0_a3d.c +++ b/sound/pci/au88x0/au88x0_a3d.c | |||
@@ -53,7 +53,7 @@ a3dsrc_GetTimeConsts(a3dsrc_t * a, short *HrtfTrack, short *ItdTrack, | |||
53 | } | 53 | } |
54 | 54 | ||
55 | #endif | 55 | #endif |
56 | /* Atmospheric absorbtion. */ | 56 | /* Atmospheric absorption. */ |
57 | 57 | ||
58 | static void | 58 | static void |
59 | a3dsrc_SetAtmosTarget(a3dsrc_t * a, short aa, short b, short c, short d, | 59 | a3dsrc_SetAtmosTarget(a3dsrc_t * a, short aa, short b, short c, short d, |
@@ -835,7 +835,7 @@ snd_vortex_a3d_filter_put(struct snd_kcontrol *kcontrol, | |||
835 | params[i] = ucontrol->value.integer.value[i]; | 835 | params[i] = ucontrol->value.integer.value[i]; |
836 | /* Translate generic filter params to a3d filter params. */ | 836 | /* Translate generic filter params to a3d filter params. */ |
837 | vortex_a3d_translate_filter(a->filter, params); | 837 | vortex_a3d_translate_filter(a->filter, params); |
838 | /* Atmospheric absorbtion and filtering. */ | 838 | /* Atmospheric absorption and filtering. */ |
839 | a3dsrc_SetAtmosTarget(a, a->filter[0], | 839 | a3dsrc_SetAtmosTarget(a, a->filter[0], |
840 | a->filter[1], a->filter[2], | 840 | a->filter[1], a->filter[2], |
841 | a->filter[3], a->filter[4]); | 841 | a->filter[3], a->filter[4]); |
diff --git a/sound/pci/au88x0/au88x0_pcm.c b/sound/pci/au88x0/au88x0_pcm.c index 5439d662d104..33f0ba5559a7 100644 --- a/sound/pci/au88x0/au88x0_pcm.c +++ b/sound/pci/au88x0/au88x0_pcm.c | |||
@@ -515,7 +515,7 @@ static int __devinit snd_vortex_new_pcm(vortex_t *chip, int idx, int nr) | |||
515 | return -ENODEV; | 515 | return -ENODEV; |
516 | 516 | ||
517 | /* idx indicates which kind of PCM device. ADB, SPDIF, I2S and A3D share the | 517 | /* idx indicates which kind of PCM device. ADB, SPDIF, I2S and A3D share the |
518 | * same dma engine. WT uses it own separate dma engine whcih cant capture. */ | 518 | * same dma engine. WT uses it own separate dma engine which can't capture. */ |
519 | if (idx == VORTEX_PCM_ADB) | 519 | if (idx == VORTEX_PCM_ADB) |
520 | nr_capt = nr; | 520 | nr_capt = nr; |
521 | else | 521 | else |
diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c index 5715c4d05573..9b7a6346037a 100644 --- a/sound/pci/azt3328.c +++ b/sound/pci/azt3328.c | |||
@@ -140,7 +140,7 @@ | |||
140 | * Possible remedies: | 140 | * Possible remedies: |
141 | * - use speaker (amplifier) output instead of headphone output | 141 | * - use speaker (amplifier) output instead of headphone output |
142 | * (in case crackling is due to overloaded output clipping) | 142 | * (in case crackling is due to overloaded output clipping) |
143 | * - plug card into a different PCI slot, preferrably one that isn't shared | 143 | * - plug card into a different PCI slot, preferably one that isn't shared |
144 | * too much (this helps a lot, but not completely!) | 144 | * too much (this helps a lot, but not completely!) |
145 | * - get rid of PCI VGA card, use AGP instead | 145 | * - get rid of PCI VGA card, use AGP instead |
146 | * - upgrade or downgrade BIOS | 146 | * - upgrade or downgrade BIOS |
diff --git a/sound/pci/ca0106/ca0106.h b/sound/pci/ca0106/ca0106.h index fc53b9bca26d..e8e8ccc96403 100644 --- a/sound/pci/ca0106/ca0106.h +++ b/sound/pci/ca0106/ca0106.h | |||
@@ -51,7 +51,7 @@ | |||
51 | * Add support for mute control on SB Live 24bit (cards w/ SPI DAC) | 51 | * Add support for mute control on SB Live 24bit (cards w/ SPI DAC) |
52 | * | 52 | * |
53 | * | 53 | * |
54 | * This code was initally based on code from ALSA's emu10k1x.c which is: | 54 | * This code was initially based on code from ALSA's emu10k1x.c which is: |
55 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> | 55 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> |
56 | * | 56 | * |
57 | * This program is free software; you can redistribute it and/or modify | 57 | * This program is free software; you can redistribute it and/or modify |
@@ -175,7 +175,7 @@ | |||
175 | /* CA0106 pointer-offset register set, accessed through the PTR and DATA registers */ | 175 | /* CA0106 pointer-offset register set, accessed through the PTR and DATA registers */ |
176 | /********************************************************************************************************/ | 176 | /********************************************************************************************************/ |
177 | 177 | ||
178 | /* Initally all registers from 0x00 to 0x3f have zero contents. */ | 178 | /* Initially all registers from 0x00 to 0x3f have zero contents. */ |
179 | #define PLAYBACK_LIST_ADDR 0x00 /* Base DMA address of a list of pointers to each period/size */ | 179 | #define PLAYBACK_LIST_ADDR 0x00 /* Base DMA address of a list of pointers to each period/size */ |
180 | /* One list entry: 4 bytes for DMA address, | 180 | /* One list entry: 4 bytes for DMA address, |
181 | * 4 bytes for period_size << 16. | 181 | * 4 bytes for period_size << 16. |
@@ -223,7 +223,7 @@ | |||
223 | * The jack has 4 poles. I will call 1 - Tip, 2 - Next to 1, 3 - Next to 2, 4 - Next to 3 | 223 | * The jack has 4 poles. I will call 1 - Tip, 2 - Next to 1, 3 - Next to 2, 4 - Next to 3 |
224 | * For Analogue: 1 -> Center Speaker, 2 -> Sub Woofer, 3 -> Ground, 4 -> Ground | 224 | * For Analogue: 1 -> Center Speaker, 2 -> Sub Woofer, 3 -> Ground, 4 -> Ground |
225 | * For Digital: 1 -> Front SPDIF, 2 -> Rear SPDIF, 3 -> Center/Subwoofer SPDIF, 4 -> Ground. | 225 | * For Digital: 1 -> Front SPDIF, 2 -> Rear SPDIF, 3 -> Center/Subwoofer SPDIF, 4 -> Ground. |
226 | * Standard 4 pole Video A/V cable with RCA outputs: 1 -> White, 2 -> Yellow, 3 -> Sheild on all three, 4 -> Red. | 226 | * Standard 4 pole Video A/V cable with RCA outputs: 1 -> White, 2 -> Yellow, 3 -> Shield on all three, 4 -> Red. |
227 | * So, from this you can see that you cannot use a Standard 4 pole Video A/V cable with the SB Audigy LS card. | 227 | * So, from this you can see that you cannot use a Standard 4 pole Video A/V cable with the SB Audigy LS card. |
228 | */ | 228 | */ |
229 | /* The Front SPDIF PCM gets mixed with samples from the AC97 codec, so can only work for Stereo PCM and not AC3/DTS | 229 | /* The Front SPDIF PCM gets mixed with samples from the AC97 codec, so can only work for Stereo PCM and not AC3/DTS |
diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c index 01b49388fafd..437759239694 100644 --- a/sound/pci/ca0106/ca0106_main.c +++ b/sound/pci/ca0106/ca0106_main.c | |||
@@ -117,7 +117,7 @@ | |||
117 | * DAC: Unknown | 117 | * DAC: Unknown |
118 | * Trying to handle it like the SB0410. | 118 | * Trying to handle it like the SB0410. |
119 | * | 119 | * |
120 | * This code was initally based on code from ALSA's emu10k1x.c which is: | 120 | * This code was initially based on code from ALSA's emu10k1x.c which is: |
121 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> | 121 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> |
122 | * | 122 | * |
123 | * This program is free software; you can redistribute it and/or modify | 123 | * This program is free software; you can redistribute it and/or modify |
diff --git a/sound/pci/ca0106/ca0106_mixer.c b/sound/pci/ca0106/ca0106_mixer.c index 630aa4998189..84f3f92436b5 100644 --- a/sound/pci/ca0106/ca0106_mixer.c +++ b/sound/pci/ca0106/ca0106_mixer.c | |||
@@ -42,7 +42,7 @@ | |||
42 | * 0.0.18 | 42 | * 0.0.18 |
43 | * Add support for mute control on SB Live 24bit (cards w/ SPI DAC) | 43 | * Add support for mute control on SB Live 24bit (cards w/ SPI DAC) |
44 | * | 44 | * |
45 | * This code was initally based on code from ALSA's emu10k1x.c which is: | 45 | * This code was initially based on code from ALSA's emu10k1x.c which is: |
46 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> | 46 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> |
47 | * | 47 | * |
48 | * This program is free software; you can redistribute it and/or modify | 48 | * This program is free software; you can redistribute it and/or modify |
diff --git a/sound/pci/ca0106/ca0106_proc.c b/sound/pci/ca0106/ca0106_proc.c index ba96428c9f4c..c694464b1168 100644 --- a/sound/pci/ca0106/ca0106_proc.c +++ b/sound/pci/ca0106/ca0106_proc.c | |||
@@ -42,7 +42,7 @@ | |||
42 | * 0.0.18 | 42 | * 0.0.18 |
43 | * Implement support for Line-in capture on SB Live 24bit. | 43 | * Implement support for Line-in capture on SB Live 24bit. |
44 | * | 44 | * |
45 | * This code was initally based on code from ALSA's emu10k1x.c which is: | 45 | * This code was initially based on code from ALSA's emu10k1x.c which is: |
46 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> | 46 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> |
47 | * | 47 | * |
48 | * This program is free software; you can redistribute it and/or modify | 48 | * This program is free software; you can redistribute it and/or modify |
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c index b5bb036ef73c..f4e573555da3 100644 --- a/sound/pci/cmipci.c +++ b/sound/pci/cmipci.c | |||
@@ -73,7 +73,7 @@ MODULE_PARM_DESC(mpu_port, "MPU-401 port."); | |||
73 | module_param_array(fm_port, long, NULL, 0444); | 73 | module_param_array(fm_port, long, NULL, 0444); |
74 | MODULE_PARM_DESC(fm_port, "FM port."); | 74 | MODULE_PARM_DESC(fm_port, "FM port."); |
75 | module_param_array(soft_ac3, bool, NULL, 0444); | 75 | module_param_array(soft_ac3, bool, NULL, 0444); |
76 | MODULE_PARM_DESC(soft_ac3, "Sofware-conversion of raw SPDIF packets (model 033 only)."); | 76 | MODULE_PARM_DESC(soft_ac3, "Software-conversion of raw SPDIF packets (model 033 only)."); |
77 | #ifdef SUPPORT_JOYSTICK | 77 | #ifdef SUPPORT_JOYSTICK |
78 | module_param_array(joystick_port, int, NULL, 0444); | 78 | module_param_array(joystick_port, int, NULL, 0444); |
79 | MODULE_PARM_DESC(joystick_port, "Joystick port address."); | 79 | MODULE_PARM_DESC(joystick_port, "Joystick port address."); |
@@ -656,8 +656,8 @@ out: | |||
656 | } | 656 | } |
657 | 657 | ||
658 | /* | 658 | /* |
659 | * Program pll register bits, I assume that the 8 registers 0xf8 upto 0xff | 659 | * Program pll register bits, I assume that the 8 registers 0xf8 up to 0xff |
660 | * are mapped onto the 8 ADC/DAC sampling frequency which can be choosen | 660 | * are mapped onto the 8 ADC/DAC sampling frequency which can be chosen |
661 | * at the register CM_REG_FUNCTRL1 (0x04). | 661 | * at the register CM_REG_FUNCTRL1 (0x04). |
662 | * Problem: other ways are also possible (any information about that?) | 662 | * Problem: other ways are also possible (any information about that?) |
663 | */ | 663 | */ |
@@ -666,7 +666,7 @@ static void snd_cmipci_set_pll(struct cmipci *cm, unsigned int rate, unsigned in | |||
666 | unsigned int reg = CM_REG_PLL + slot; | 666 | unsigned int reg = CM_REG_PLL + slot; |
667 | /* | 667 | /* |
668 | * Guess that this programs at reg. 0x04 the pos 15:13/12:10 | 668 | * Guess that this programs at reg. 0x04 the pos 15:13/12:10 |
669 | * for DSFC/ASFC (000 upto 111). | 669 | * for DSFC/ASFC (000 up to 111). |
670 | */ | 670 | */ |
671 | 671 | ||
672 | /* FIXME: Init (Do we've to set an other register first before programming?) */ | 672 | /* FIXME: Init (Do we've to set an other register first before programming?) */ |
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c index b9321544c31c..13f33c0719d3 100644 --- a/sound/pci/ctxfi/ctatc.c +++ b/sound/pci/ctxfi/ctatc.c | |||
@@ -1627,7 +1627,7 @@ static struct ct_atc atc_preset __devinitdata = { | |||
1627 | * Creates and initializes a hardware manager. | 1627 | * Creates and initializes a hardware manager. |
1628 | * | 1628 | * |
1629 | * Creates kmallocated ct_atc structure. Initializes hardware. | 1629 | * Creates kmallocated ct_atc structure. Initializes hardware. |
1630 | * Returns 0 if suceeds, or negative error code if fails. | 1630 | * Returns 0 if succeeds, or negative error code if fails. |
1631 | */ | 1631 | */ |
1632 | 1632 | ||
1633 | int __devinit ct_atc_create(struct snd_card *card, struct pci_dev *pci, | 1633 | int __devinit ct_atc_create(struct snd_card *card, struct pci_dev *pci, |
diff --git a/sound/pci/ctxfi/cthw20k1.c b/sound/pci/ctxfi/cthw20k1.c index 0cf400f879f9..a5c957db5cea 100644 --- a/sound/pci/ctxfi/cthw20k1.c +++ b/sound/pci/ctxfi/cthw20k1.c | |||
@@ -1285,7 +1285,7 @@ static int hw_trn_init(struct hw *hw, const struct trn_conf *info) | |||
1285 | hw_write_20kx(hw, PTPALX, ptp_phys_low); | 1285 | hw_write_20kx(hw, PTPALX, ptp_phys_low); |
1286 | hw_write_20kx(hw, PTPAHX, ptp_phys_high); | 1286 | hw_write_20kx(hw, PTPAHX, ptp_phys_high); |
1287 | hw_write_20kx(hw, TRNCTL, trnctl); | 1287 | hw_write_20kx(hw, TRNCTL, trnctl); |
1288 | hw_write_20kx(hw, TRNIS, 0x200c01); /* realy needed? */ | 1288 | hw_write_20kx(hw, TRNIS, 0x200c01); /* really needed? */ |
1289 | 1289 | ||
1290 | return 0; | 1290 | return 0; |
1291 | } | 1291 | } |
diff --git a/sound/pci/emu10k1/memory.c b/sound/pci/emu10k1/memory.c index 957a311514c8..c250614dadd0 100644 --- a/sound/pci/emu10k1/memory.c +++ b/sound/pci/emu10k1/memory.c | |||
@@ -248,7 +248,7 @@ static int is_valid_page(struct snd_emu10k1 *emu, dma_addr_t addr) | |||
248 | /* | 248 | /* |
249 | * map the given memory block on PTB. | 249 | * map the given memory block on PTB. |
250 | * if the block is already mapped, update the link order. | 250 | * if the block is already mapped, update the link order. |
251 | * if no empty pages are found, tries to release unsed memory blocks | 251 | * if no empty pages are found, tries to release unused memory blocks |
252 | * and retry the mapping. | 252 | * and retry the mapping. |
253 | */ | 253 | */ |
254 | int snd_emu10k1_memblk_map(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) | 254 | int snd_emu10k1_memblk_map(struct snd_emu10k1 *emu, struct snd_emu10k1_memblk *blk) |
diff --git a/sound/pci/emu10k1/p16v.c b/sound/pci/emu10k1/p16v.c index 61b8ab39800f..a81dc44228ea 100644 --- a/sound/pci/emu10k1/p16v.c +++ b/sound/pci/emu10k1/p16v.c | |||
@@ -69,7 +69,7 @@ | |||
69 | * ADC: Philips 1361T (Stereo 24bit) | 69 | * ADC: Philips 1361T (Stereo 24bit) |
70 | * DAC: CS4382-K (8-channel, 24bit, 192Khz) | 70 | * DAC: CS4382-K (8-channel, 24bit, 192Khz) |
71 | * | 71 | * |
72 | * This code was initally based on code from ALSA's emu10k1x.c which is: | 72 | * This code was initially based on code from ALSA's emu10k1x.c which is: |
73 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> | 73 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> |
74 | * | 74 | * |
75 | * This program is free software; you can redistribute it and/or modify | 75 | * This program is free software; you can redistribute it and/or modify |
diff --git a/sound/pci/emu10k1/p16v.h b/sound/pci/emu10k1/p16v.h index 00f4817533b1..4e0ee1a9747a 100644 --- a/sound/pci/emu10k1/p16v.h +++ b/sound/pci/emu10k1/p16v.h | |||
@@ -59,7 +59,7 @@ | |||
59 | * ADC: Philips 1361T (Stereo 24bit) | 59 | * ADC: Philips 1361T (Stereo 24bit) |
60 | * DAC: CS4382-K (8-channel, 24bit, 192Khz) | 60 | * DAC: CS4382-K (8-channel, 24bit, 192Khz) |
61 | * | 61 | * |
62 | * This code was initally based on code from ALSA's emu10k1x.c which is: | 62 | * This code was initially based on code from ALSA's emu10k1x.c which is: |
63 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> | 63 | * Copyright (c) by Francisco Moraes <fmoraes@nc.rr.com> |
64 | * | 64 | * |
65 | * This program is free software; you can redistribute it and/or modify | 65 | * This program is free software; you can redistribute it and/or modify |
@@ -86,7 +86,7 @@ | |||
86 | * The sample rate is also controlled by the same registers that control the rate of the EMU10K2 sample rate converters. | 86 | * The sample rate is also controlled by the same registers that control the rate of the EMU10K2 sample rate converters. |
87 | */ | 87 | */ |
88 | 88 | ||
89 | /* Initally all registers from 0x00 to 0x3f have zero contents. */ | 89 | /* Initially all registers from 0x00 to 0x3f have zero contents. */ |
90 | #define PLAYBACK_LIST_ADDR 0x00 /* Base DMA address of a list of pointers to each period/size */ | 90 | #define PLAYBACK_LIST_ADDR 0x00 /* Base DMA address of a list of pointers to each period/size */ |
91 | /* One list entry: 4 bytes for DMA address, | 91 | /* One list entry: 4 bytes for DMA address, |
92 | * 4 bytes for period_size << 16. | 92 | * 4 bytes for period_size << 16. |
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c index 537cfba829a5..863eafea691f 100644 --- a/sound/pci/ens1370.c +++ b/sound/pci/ens1370.c | |||
@@ -229,6 +229,7 @@ MODULE_PARM_DESC(lineio, "Line In to Rear Out (0 = auto, 1 = force)."); | |||
229 | #define ES_REG_1371_CODEC 0x14 /* W/R: Codec Read/Write register address */ | 229 | #define ES_REG_1371_CODEC 0x14 /* W/R: Codec Read/Write register address */ |
230 | #define ES_1371_CODEC_RDY (1<<31) /* codec ready */ | 230 | #define ES_1371_CODEC_RDY (1<<31) /* codec ready */ |
231 | #define ES_1371_CODEC_WIP (1<<30) /* codec register access in progress */ | 231 | #define ES_1371_CODEC_WIP (1<<30) /* codec register access in progress */ |
232 | #define EV_1938_CODEC_MAGIC (1<<26) | ||
232 | #define ES_1371_CODEC_PIRD (1<<23) /* codec read/write select register */ | 233 | #define ES_1371_CODEC_PIRD (1<<23) /* codec read/write select register */ |
233 | #define ES_1371_CODEC_WRITE(a,d) ((((a)&0x7f)<<16)|(((d)&0xffff)<<0)) | 234 | #define ES_1371_CODEC_WRITE(a,d) ((((a)&0x7f)<<16)|(((d)&0xffff)<<0)) |
234 | #define ES_1371_CODEC_READS(a) ((((a)&0x7f)<<16)|ES_1371_CODEC_PIRD) | 235 | #define ES_1371_CODEC_READS(a) ((((a)&0x7f)<<16)|ES_1371_CODEC_PIRD) |
@@ -603,12 +604,18 @@ static void snd_es1370_codec_write(struct snd_ak4531 *ak4531, | |||
603 | 604 | ||
604 | #ifdef CHIP1371 | 605 | #ifdef CHIP1371 |
605 | 606 | ||
607 | static inline bool is_ev1938(struct ensoniq *ensoniq) | ||
608 | { | ||
609 | return ensoniq->pci->device == 0x8938; | ||
610 | } | ||
611 | |||
606 | static void snd_es1371_codec_write(struct snd_ac97 *ac97, | 612 | static void snd_es1371_codec_write(struct snd_ac97 *ac97, |
607 | unsigned short reg, unsigned short val) | 613 | unsigned short reg, unsigned short val) |
608 | { | 614 | { |
609 | struct ensoniq *ensoniq = ac97->private_data; | 615 | struct ensoniq *ensoniq = ac97->private_data; |
610 | unsigned int t, x; | 616 | unsigned int t, x, flag; |
611 | 617 | ||
618 | flag = is_ev1938(ensoniq) ? EV_1938_CODEC_MAGIC : 0; | ||
612 | mutex_lock(&ensoniq->src_mutex); | 619 | mutex_lock(&ensoniq->src_mutex); |
613 | for (t = 0; t < POLL_COUNT; t++) { | 620 | for (t = 0; t < POLL_COUNT; t++) { |
614 | if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) { | 621 | if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) { |
@@ -630,7 +637,8 @@ static void snd_es1371_codec_write(struct snd_ac97 *ac97, | |||
630 | 0x00010000) | 637 | 0x00010000) |
631 | break; | 638 | break; |
632 | } | 639 | } |
633 | outl(ES_1371_CODEC_WRITE(reg, val), ES_REG(ensoniq, 1371_CODEC)); | 640 | outl(ES_1371_CODEC_WRITE(reg, val) | flag, |
641 | ES_REG(ensoniq, 1371_CODEC)); | ||
634 | /* restore SRC reg */ | 642 | /* restore SRC reg */ |
635 | snd_es1371_wait_src_ready(ensoniq); | 643 | snd_es1371_wait_src_ready(ensoniq); |
636 | outl(x, ES_REG(ensoniq, 1371_SMPRATE)); | 644 | outl(x, ES_REG(ensoniq, 1371_SMPRATE)); |
@@ -647,8 +655,9 @@ static unsigned short snd_es1371_codec_read(struct snd_ac97 *ac97, | |||
647 | unsigned short reg) | 655 | unsigned short reg) |
648 | { | 656 | { |
649 | struct ensoniq *ensoniq = ac97->private_data; | 657 | struct ensoniq *ensoniq = ac97->private_data; |
650 | unsigned int t, x, fail = 0; | 658 | unsigned int t, x, flag, fail = 0; |
651 | 659 | ||
660 | flag = is_ev1938(ensoniq) ? EV_1938_CODEC_MAGIC : 0; | ||
652 | __again: | 661 | __again: |
653 | mutex_lock(&ensoniq->src_mutex); | 662 | mutex_lock(&ensoniq->src_mutex); |
654 | for (t = 0; t < POLL_COUNT; t++) { | 663 | for (t = 0; t < POLL_COUNT; t++) { |
@@ -671,7 +680,8 @@ static unsigned short snd_es1371_codec_read(struct snd_ac97 *ac97, | |||
671 | 0x00010000) | 680 | 0x00010000) |
672 | break; | 681 | break; |
673 | } | 682 | } |
674 | outl(ES_1371_CODEC_READS(reg), ES_REG(ensoniq, 1371_CODEC)); | 683 | outl(ES_1371_CODEC_READS(reg) | flag, |
684 | ES_REG(ensoniq, 1371_CODEC)); | ||
675 | /* restore SRC reg */ | 685 | /* restore SRC reg */ |
676 | snd_es1371_wait_src_ready(ensoniq); | 686 | snd_es1371_wait_src_ready(ensoniq); |
677 | outl(x, ES_REG(ensoniq, 1371_SMPRATE)); | 687 | outl(x, ES_REG(ensoniq, 1371_SMPRATE)); |
@@ -683,6 +693,11 @@ static unsigned short snd_es1371_codec_read(struct snd_ac97 *ac97, | |||
683 | /* now wait for the stinkin' data (RDY) */ | 693 | /* now wait for the stinkin' data (RDY) */ |
684 | for (t = 0; t < POLL_COUNT; t++) { | 694 | for (t = 0; t < POLL_COUNT; t++) { |
685 | if ((x = inl(ES_REG(ensoniq, 1371_CODEC))) & ES_1371_CODEC_RDY) { | 695 | if ((x = inl(ES_REG(ensoniq, 1371_CODEC))) & ES_1371_CODEC_RDY) { |
696 | if (is_ev1938(ensoniq)) { | ||
697 | for (t = 0; t < 100; t++) | ||
698 | inl(ES_REG(ensoniq, CONTROL)); | ||
699 | x = inl(ES_REG(ensoniq, 1371_CODEC)); | ||
700 | } | ||
686 | mutex_unlock(&ensoniq->src_mutex); | 701 | mutex_unlock(&ensoniq->src_mutex); |
687 | return ES_1371_CODEC_READ(x); | 702 | return ES_1371_CODEC_READ(x); |
688 | } | 703 | } |
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 2c79e96d0324..430f41db6044 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -3661,7 +3661,7 @@ int snd_hda_codec_build_pcms(struct hda_codec *codec) | |||
3661 | * with the proper parameters for set up. | 3661 | * with the proper parameters for set up. |
3662 | * ops.cleanup should be called in hw_free for clean up of streams. | 3662 | * ops.cleanup should be called in hw_free for clean up of streams. |
3663 | * | 3663 | * |
3664 | * This function returns 0 if successfull, or a negative error code. | 3664 | * This function returns 0 if successful, or a negative error code. |
3665 | */ | 3665 | */ |
3666 | int __devinit snd_hda_build_pcms(struct hda_bus *bus) | 3666 | int __devinit snd_hda_build_pcms(struct hda_bus *bus) |
3667 | { | 3667 | { |
@@ -4851,7 +4851,7 @@ EXPORT_SYMBOL_HDA(snd_hda_suspend); | |||
4851 | * | 4851 | * |
4852 | * Returns 0 if successful. | 4852 | * Returns 0 if successful. |
4853 | * | 4853 | * |
4854 | * This fucntion is defined only when POWER_SAVE isn't set. | 4854 | * This function is defined only when POWER_SAVE isn't set. |
4855 | * In the power-save mode, the codec is resumed dynamically. | 4855 | * In the power-save mode, the codec is resumed dynamically. |
4856 | */ | 4856 | */ |
4857 | int snd_hda_resume(struct hda_bus *bus) | 4857 | int snd_hda_resume(struct hda_bus *bus) |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index d08cf31596f3..ad97d937d3a8 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -3034,6 +3034,8 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = { | |||
3034 | SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD), | 3034 | SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD), |
3035 | SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS), | 3035 | SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS), |
3036 | SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD), | 3036 | SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD), |
3037 | SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT5066_THINKPAD), | ||
3038 | SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT5066_THINKPAD), | ||
3037 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G560", CXT5066_ASUS), | 3039 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G560", CXT5066_ASUS), |
3038 | SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo", CXT5066_IDEAPAD), /* Fallback for Lenovos without dock mic */ | 3040 | SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo", CXT5066_IDEAPAD), /* Fallback for Lenovos without dock mic */ |
3039 | {} | 3041 | {} |
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 251773e45f61..715615a88a8d 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c | |||
@@ -1280,6 +1280,39 @@ static int simple_playback_pcm_prepare(struct hda_pcm_stream *hinfo, | |||
1280 | stream_tag, format, substream); | 1280 | stream_tag, format, substream); |
1281 | } | 1281 | } |
1282 | 1282 | ||
1283 | static void nvhdmi_8ch_7x_set_info_frame_parameters(struct hda_codec *codec, | ||
1284 | int channels) | ||
1285 | { | ||
1286 | unsigned int chanmask; | ||
1287 | int chan = channels ? (channels - 1) : 1; | ||
1288 | |||
1289 | switch (channels) { | ||
1290 | default: | ||
1291 | case 0: | ||
1292 | case 2: | ||
1293 | chanmask = 0x00; | ||
1294 | break; | ||
1295 | case 4: | ||
1296 | chanmask = 0x08; | ||
1297 | break; | ||
1298 | case 6: | ||
1299 | chanmask = 0x0b; | ||
1300 | break; | ||
1301 | case 8: | ||
1302 | chanmask = 0x13; | ||
1303 | break; | ||
1304 | } | ||
1305 | |||
1306 | /* Set the audio infoframe channel allocation and checksum fields. The | ||
1307 | * channel count is computed implicitly by the hardware. */ | ||
1308 | snd_hda_codec_write(codec, 0x1, 0, | ||
1309 | Nv_VERB_SET_Channel_Allocation, chanmask); | ||
1310 | |||
1311 | snd_hda_codec_write(codec, 0x1, 0, | ||
1312 | Nv_VERB_SET_Info_Frame_Checksum, | ||
1313 | (0x71 - chan - chanmask)); | ||
1314 | } | ||
1315 | |||
1283 | static int nvhdmi_8ch_7x_pcm_close(struct hda_pcm_stream *hinfo, | 1316 | static int nvhdmi_8ch_7x_pcm_close(struct hda_pcm_stream *hinfo, |
1284 | struct hda_codec *codec, | 1317 | struct hda_codec *codec, |
1285 | struct snd_pcm_substream *substream) | 1318 | struct snd_pcm_substream *substream) |
@@ -1298,6 +1331,10 @@ static int nvhdmi_8ch_7x_pcm_close(struct hda_pcm_stream *hinfo, | |||
1298 | AC_VERB_SET_STREAM_FORMAT, 0); | 1331 | AC_VERB_SET_STREAM_FORMAT, 0); |
1299 | } | 1332 | } |
1300 | 1333 | ||
1334 | /* The audio hardware sends a channel count of 0x7 (8ch) when all the | ||
1335 | * streams are disabled. */ | ||
1336 | nvhdmi_8ch_7x_set_info_frame_parameters(codec, 8); | ||
1337 | |||
1301 | return snd_hda_multi_out_dig_close(codec, &spec->multiout); | 1338 | return snd_hda_multi_out_dig_close(codec, &spec->multiout); |
1302 | } | 1339 | } |
1303 | 1340 | ||
@@ -1308,37 +1345,16 @@ static int nvhdmi_8ch_7x_pcm_prepare(struct hda_pcm_stream *hinfo, | |||
1308 | struct snd_pcm_substream *substream) | 1345 | struct snd_pcm_substream *substream) |
1309 | { | 1346 | { |
1310 | int chs; | 1347 | int chs; |
1311 | unsigned int dataDCC1, dataDCC2, chan, chanmask, channel_id; | 1348 | unsigned int dataDCC1, dataDCC2, channel_id; |
1312 | int i; | 1349 | int i; |
1313 | 1350 | ||
1314 | mutex_lock(&codec->spdif_mutex); | 1351 | mutex_lock(&codec->spdif_mutex); |
1315 | 1352 | ||
1316 | chs = substream->runtime->channels; | 1353 | chs = substream->runtime->channels; |
1317 | chan = chs ? (chs - 1) : 1; | ||
1318 | 1354 | ||
1319 | switch (chs) { | ||
1320 | default: | ||
1321 | case 0: | ||
1322 | case 2: | ||
1323 | chanmask = 0x00; | ||
1324 | break; | ||
1325 | case 4: | ||
1326 | chanmask = 0x08; | ||
1327 | break; | ||
1328 | case 6: | ||
1329 | chanmask = 0x0b; | ||
1330 | break; | ||
1331 | case 8: | ||
1332 | chanmask = 0x13; | ||
1333 | break; | ||
1334 | } | ||
1335 | dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT; | 1355 | dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT; |
1336 | dataDCC2 = 0x2; | 1356 | dataDCC2 = 0x2; |
1337 | 1357 | ||
1338 | /* set the Audio InforFrame Channel Allocation */ | ||
1339 | snd_hda_codec_write(codec, 0x1, 0, | ||
1340 | Nv_VERB_SET_Channel_Allocation, chanmask); | ||
1341 | |||
1342 | /* turn off SPDIF once; otherwise the IEC958 bits won't be updated */ | 1358 | /* turn off SPDIF once; otherwise the IEC958 bits won't be updated */ |
1343 | if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) | 1359 | if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) |
1344 | snd_hda_codec_write(codec, | 1360 | snd_hda_codec_write(codec, |
@@ -1413,10 +1429,7 @@ static int nvhdmi_8ch_7x_pcm_prepare(struct hda_pcm_stream *hinfo, | |||
1413 | } | 1429 | } |
1414 | } | 1430 | } |
1415 | 1431 | ||
1416 | /* set the Audio Info Frame Checksum */ | 1432 | nvhdmi_8ch_7x_set_info_frame_parameters(codec, chs); |
1417 | snd_hda_codec_write(codec, 0x1, 0, | ||
1418 | Nv_VERB_SET_Info_Frame_Checksum, | ||
1419 | (0x71 - chan - chanmask)); | ||
1420 | 1433 | ||
1421 | mutex_unlock(&codec->spdif_mutex); | 1434 | mutex_unlock(&codec->spdif_mutex); |
1422 | return 0; | 1435 | return 0; |
@@ -1512,6 +1525,11 @@ static int patch_nvhdmi_8ch_7x(struct hda_codec *codec) | |||
1512 | spec->multiout.max_channels = 8; | 1525 | spec->multiout.max_channels = 8; |
1513 | spec->pcm_playback = &nvhdmi_pcm_playback_8ch_7x; | 1526 | spec->pcm_playback = &nvhdmi_pcm_playback_8ch_7x; |
1514 | codec->patch_ops = nvhdmi_patch_ops_8ch_7x; | 1527 | codec->patch_ops = nvhdmi_patch_ops_8ch_7x; |
1528 | |||
1529 | /* Initialize the audio infoframe channel mask and checksum to something | ||
1530 | * valid */ | ||
1531 | nvhdmi_8ch_7x_set_info_frame_parameters(codec, 8); | ||
1532 | |||
1515 | return 0; | 1533 | return 0; |
1516 | } | 1534 | } |
1517 | 1535 | ||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 0ef0035fe99f..52928d9a72da 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -549,7 +549,7 @@ static int alc_ch_mode_put(struct snd_kcontrol *kcontrol, | |||
549 | 549 | ||
550 | /* | 550 | /* |
551 | * Control the mode of pin widget settings via the mixer. "pc" is used | 551 | * Control the mode of pin widget settings via the mixer. "pc" is used |
552 | * instead of "%" to avoid consequences of accidently treating the % as | 552 | * instead of "%" to avoid consequences of accidentally treating the % as |
553 | * being part of a format specifier. Maximum allowed length of a value is | 553 | * being part of a format specifier. Maximum allowed length of a value is |
554 | * 63 characters plus NULL terminator. | 554 | * 63 characters plus NULL terminator. |
555 | * | 555 | * |
@@ -9836,7 +9836,7 @@ static struct snd_pci_quirk alc882_cfg_tbl[] = { | |||
9836 | 9836 | ||
9837 | SND_PCI_QUIRK(0x1028, 0x020d, "Dell Inspiron 530", ALC888_6ST_DELL), | 9837 | SND_PCI_QUIRK(0x1028, 0x020d, "Dell Inspiron 530", ALC888_6ST_DELL), |
9838 | 9838 | ||
9839 | SND_PCI_QUIRK(0x103c, 0x2a3d, "HP Pavillion", ALC883_6ST_DIG), | 9839 | SND_PCI_QUIRK(0x103c, 0x2a3d, "HP Pavilion", ALC883_6ST_DIG), |
9840 | SND_PCI_QUIRK(0x103c, 0x2a4f, "HP Samba", ALC888_3ST_HP), | 9840 | SND_PCI_QUIRK(0x103c, 0x2a4f, "HP Samba", ALC888_3ST_HP), |
9841 | SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), | 9841 | SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), |
9842 | SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), | 9842 | SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), |
@@ -9863,7 +9863,6 @@ static struct snd_pci_quirk alc882_cfg_tbl[] = { | |||
9863 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), | 9863 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), |
9864 | SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), | 9864 | SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), |
9865 | SND_PCI_QUIRK(0x108e, 0x534d, NULL, ALC883_3ST_6ch), | 9865 | SND_PCI_QUIRK(0x108e, 0x534d, NULL, ALC883_3ST_6ch), |
9866 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte P35 DS3R", ALC882_6ST_DIG), | ||
9867 | 9866 | ||
9868 | SND_PCI_QUIRK(0x1462, 0x0349, "MSI", ALC883_TARGA_2ch_DIG), | 9867 | SND_PCI_QUIRK(0x1462, 0x0349, "MSI", ALC883_TARGA_2ch_DIG), |
9869 | SND_PCI_QUIRK(0x1462, 0x040d, "MSI", ALC883_TARGA_2ch_DIG), | 9868 | SND_PCI_QUIRK(0x1462, 0x040d, "MSI", ALC883_TARGA_2ch_DIG), |
@@ -10700,6 +10699,7 @@ enum { | |||
10700 | PINFIX_LENOVO_Y530, | 10699 | PINFIX_LENOVO_Y530, |
10701 | PINFIX_PB_M5210, | 10700 | PINFIX_PB_M5210, |
10702 | PINFIX_ACER_ASPIRE_7736, | 10701 | PINFIX_ACER_ASPIRE_7736, |
10702 | PINFIX_GIGABYTE_880GM, | ||
10703 | }; | 10703 | }; |
10704 | 10704 | ||
10705 | static const struct alc_fixup alc882_fixups[] = { | 10705 | static const struct alc_fixup alc882_fixups[] = { |
@@ -10731,6 +10731,13 @@ static const struct alc_fixup alc882_fixups[] = { | |||
10731 | .type = ALC_FIXUP_SKU, | 10731 | .type = ALC_FIXUP_SKU, |
10732 | .v.sku = ALC_FIXUP_SKU_IGNORE, | 10732 | .v.sku = ALC_FIXUP_SKU_IGNORE, |
10733 | }, | 10733 | }, |
10734 | [PINFIX_GIGABYTE_880GM] = { | ||
10735 | .type = ALC_FIXUP_PINS, | ||
10736 | .v.pins = (const struct alc_pincfg[]) { | ||
10737 | { 0x14, 0x1114410 }, /* set as speaker */ | ||
10738 | { } | ||
10739 | } | ||
10740 | }, | ||
10734 | }; | 10741 | }; |
10735 | 10742 | ||
10736 | static struct snd_pci_quirk alc882_fixup_tbl[] = { | 10743 | static struct snd_pci_quirk alc882_fixup_tbl[] = { |
@@ -10738,6 +10745,7 @@ static struct snd_pci_quirk alc882_fixup_tbl[] = { | |||
10738 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530), | 10745 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", PINFIX_LENOVO_Y530), |
10739 | SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX), | 10746 | SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX), |
10740 | SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", PINFIX_ACER_ASPIRE_7736), | 10747 | SND_PCI_QUIRK(0x1025, 0x0296, "Acer Aspire 7736z", PINFIX_ACER_ASPIRE_7736), |
10748 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte", PINFIX_GIGABYTE_880GM), | ||
10741 | {} | 10749 | {} |
10742 | }; | 10750 | }; |
10743 | 10751 | ||
@@ -14116,7 +14124,7 @@ static hda_nid_t alc269vb_capsrc_nids[1] = { | |||
14116 | }; | 14124 | }; |
14117 | 14125 | ||
14118 | static hda_nid_t alc269_adc_candidates[] = { | 14126 | static hda_nid_t alc269_adc_candidates[] = { |
14119 | 0x08, 0x09, 0x07, | 14127 | 0x08, 0x09, 0x07, 0x11, |
14120 | }; | 14128 | }; |
14121 | 14129 | ||
14122 | #define alc269_modes alc260_modes | 14130 | #define alc269_modes alc260_modes |
@@ -18774,8 +18782,6 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { | |||
18774 | ALC662_3ST_6ch_DIG), | 18782 | ALC662_3ST_6ch_DIG), |
18775 | SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB20x", ALC662_AUTO), | 18783 | SND_PCI_QUIRK(0x1179, 0xff6e, "Toshiba NB20x", ALC662_AUTO), |
18776 | SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), | 18784 | SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10), |
18777 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", | ||
18778 | ALC662_3ST_6ch_DIG), | ||
18779 | SND_PCI_QUIRK(0x152d, 0x2304, "Quanta WH1", ALC663_ASUS_H13), | 18785 | SND_PCI_QUIRK(0x152d, 0x2304, "Quanta WH1", ALC663_ASUS_H13), |
18780 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), | 18786 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), |
18781 | SND_PCI_QUIRK(0x1631, 0xc10c, "PB RS65", ALC663_ASUS_M51VA), | 18787 | SND_PCI_QUIRK(0x1631, 0xc10c, "PB RS65", ALC663_ASUS_M51VA), |
@@ -19449,6 +19455,7 @@ enum { | |||
19449 | ALC662_FIXUP_IDEAPAD, | 19455 | ALC662_FIXUP_IDEAPAD, |
19450 | ALC272_FIXUP_MARIO, | 19456 | ALC272_FIXUP_MARIO, |
19451 | ALC662_FIXUP_CZC_P10T, | 19457 | ALC662_FIXUP_CZC_P10T, |
19458 | ALC662_FIXUP_GIGABYTE, | ||
19452 | }; | 19459 | }; |
19453 | 19460 | ||
19454 | static const struct alc_fixup alc662_fixups[] = { | 19461 | static const struct alc_fixup alc662_fixups[] = { |
@@ -19477,12 +19484,20 @@ static const struct alc_fixup alc662_fixups[] = { | |||
19477 | {} | 19484 | {} |
19478 | } | 19485 | } |
19479 | }, | 19486 | }, |
19487 | [ALC662_FIXUP_GIGABYTE] = { | ||
19488 | .type = ALC_FIXUP_PINS, | ||
19489 | .v.pins = (const struct alc_pincfg[]) { | ||
19490 | { 0x14, 0x1114410 }, /* set as speaker */ | ||
19491 | { } | ||
19492 | } | ||
19493 | }, | ||
19480 | }; | 19494 | }; |
19481 | 19495 | ||
19482 | static struct snd_pci_quirk alc662_fixup_tbl[] = { | 19496 | static struct snd_pci_quirk alc662_fixup_tbl[] = { |
19483 | SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), | 19497 | SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), |
19484 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), | 19498 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), |
19485 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), | 19499 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), |
19500 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte", ALC662_FIXUP_GIGABYTE), | ||
19486 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), | 19501 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), |
19487 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), | 19502 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), |
19488 | SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), | 19503 | SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 05fcd60cc46f..94d19c03a7f4 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -2475,7 +2475,7 @@ static int stac92xx_hp_switch_put(struct snd_kcontrol *kcontrol, | |||
2475 | 2475 | ||
2476 | spec->hp_switch = ucontrol->value.integer.value[0] ? nid : 0; | 2476 | spec->hp_switch = ucontrol->value.integer.value[0] ? nid : 0; |
2477 | 2477 | ||
2478 | /* check to be sure that the ports are upto date with | 2478 | /* check to be sure that the ports are up to date with |
2479 | * switch changes | 2479 | * switch changes |
2480 | */ | 2480 | */ |
2481 | stac_issue_unsol_event(codec, nid); | 2481 | stac_issue_unsol_event(codec, nid); |
@@ -3408,6 +3408,9 @@ static int get_connection_index(struct hda_codec *codec, hda_nid_t mux, | |||
3408 | hda_nid_t conn[HDA_MAX_NUM_INPUTS]; | 3408 | hda_nid_t conn[HDA_MAX_NUM_INPUTS]; |
3409 | int i, nums; | 3409 | int i, nums; |
3410 | 3410 | ||
3411 | if (!(get_wcaps(codec, mux) & AC_WCAP_CONN_LIST)) | ||
3412 | return -1; | ||
3413 | |||
3411 | nums = snd_hda_get_connections(codec, mux, conn, ARRAY_SIZE(conn)); | 3414 | nums = snd_hda_get_connections(codec, mux, conn, ARRAY_SIZE(conn)); |
3412 | for (i = 0; i < nums; i++) | 3415 | for (i = 0; i < nums; i++) |
3413 | if (conn[i] == nid) | 3416 | if (conn[i] == nid) |
diff --git a/sound/pci/ice1712/aureon.c b/sound/pci/ice1712/aureon.c index 2f6252266a02..3e4f8c12ffce 100644 --- a/sound/pci/ice1712/aureon.c +++ b/sound/pci/ice1712/aureon.c | |||
@@ -148,7 +148,7 @@ static void aureon_pca9554_write(struct snd_ice1712 *ice, unsigned char reg, | |||
148 | udelay(100); | 148 | udelay(100); |
149 | /* | 149 | /* |
150 | * send device address, command and value, | 150 | * send device address, command and value, |
151 | * skipping ack cycles inbetween | 151 | * skipping ack cycles in between |
152 | */ | 152 | */ |
153 | for (j = 0; j < 3; j++) { | 153 | for (j = 0; j < 3; j++) { |
154 | switch (j) { | 154 | switch (j) { |
@@ -2143,7 +2143,7 @@ static int __devinit aureon_init(struct snd_ice1712 *ice) | |||
2143 | ice->num_total_adcs = 2; | 2143 | ice->num_total_adcs = 2; |
2144 | } | 2144 | } |
2145 | 2145 | ||
2146 | /* to remeber the register values of CS8415 */ | 2146 | /* to remember the register values of CS8415 */ |
2147 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); | 2147 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); |
2148 | if (!ice->akm) | 2148 | if (!ice->akm) |
2149 | return -ENOMEM; | 2149 | return -ENOMEM; |
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c index 4fc6d8bc637e..f4594d76b6ea 100644 --- a/sound/pci/ice1712/ice1712.c +++ b/sound/pci/ice1712/ice1712.c | |||
@@ -2755,7 +2755,7 @@ static int __devinit snd_ice1712_probe(struct pci_dev *pci, | |||
2755 | return err; | 2755 | return err; |
2756 | } | 2756 | } |
2757 | if (c->mpu401_1_name) | 2757 | if (c->mpu401_1_name) |
2758 | /* Prefered name available in card_info */ | 2758 | /* Preferred name available in card_info */ |
2759 | snprintf(ice->rmidi[0]->name, | 2759 | snprintf(ice->rmidi[0]->name, |
2760 | sizeof(ice->rmidi[0]->name), | 2760 | sizeof(ice->rmidi[0]->name), |
2761 | "%s %d", c->mpu401_1_name, card->number); | 2761 | "%s %d", c->mpu401_1_name, card->number); |
@@ -2772,7 +2772,7 @@ static int __devinit snd_ice1712_probe(struct pci_dev *pci, | |||
2772 | return err; | 2772 | return err; |
2773 | } | 2773 | } |
2774 | if (c->mpu401_2_name) | 2774 | if (c->mpu401_2_name) |
2775 | /* Prefered name available in card_info */ | 2775 | /* Preferred name available in card_info */ |
2776 | snprintf(ice->rmidi[1]->name, | 2776 | snprintf(ice->rmidi[1]->name, |
2777 | sizeof(ice->rmidi[1]->name), | 2777 | sizeof(ice->rmidi[1]->name), |
2778 | "%s %d", c->mpu401_2_name, | 2778 | "%s %d", c->mpu401_2_name, |
diff --git a/sound/pci/ice1712/pontis.c b/sound/pci/ice1712/pontis.c index cdb873f5da50..92c1160d7ab5 100644 --- a/sound/pci/ice1712/pontis.c +++ b/sound/pci/ice1712/pontis.c | |||
@@ -768,7 +768,7 @@ static int __devinit pontis_init(struct snd_ice1712 *ice) | |||
768 | ice->num_total_dacs = 2; | 768 | ice->num_total_dacs = 2; |
769 | ice->num_total_adcs = 2; | 769 | ice->num_total_adcs = 2; |
770 | 770 | ||
771 | /* to remeber the register values */ | 771 | /* to remember the register values */ |
772 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); | 772 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); |
773 | if (! ice->akm) | 773 | if (! ice->akm) |
774 | return -ENOMEM; | 774 | return -ENOMEM; |
diff --git a/sound/pci/ice1712/prodigy_hifi.c b/sound/pci/ice1712/prodigy_hifi.c index 6a9fee3ee78f..764cc93dbca4 100644 --- a/sound/pci/ice1712/prodigy_hifi.c +++ b/sound/pci/ice1712/prodigy_hifi.c | |||
@@ -1046,7 +1046,7 @@ static int __devinit prodigy_hifi_init(struct snd_ice1712 *ice) | |||
1046 | * don't call snd_ice1712_gpio_get/put(), otherwise it's overwritten | 1046 | * don't call snd_ice1712_gpio_get/put(), otherwise it's overwritten |
1047 | */ | 1047 | */ |
1048 | ice->gpio.saved[0] = 0; | 1048 | ice->gpio.saved[0] = 0; |
1049 | /* to remeber the register values */ | 1049 | /* to remember the register values */ |
1050 | 1050 | ||
1051 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); | 1051 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); |
1052 | if (! ice->akm) | 1052 | if (! ice->akm) |
@@ -1128,7 +1128,7 @@ static int __devinit prodigy_hd2_init(struct snd_ice1712 *ice) | |||
1128 | * don't call snd_ice1712_gpio_get/put(), otherwise it's overwritten | 1128 | * don't call snd_ice1712_gpio_get/put(), otherwise it's overwritten |
1129 | */ | 1129 | */ |
1130 | ice->gpio.saved[0] = 0; | 1130 | ice->gpio.saved[0] = 0; |
1131 | /* to remeber the register values */ | 1131 | /* to remember the register values */ |
1132 | 1132 | ||
1133 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); | 1133 | ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); |
1134 | if (! ice->akm) | 1134 | if (! ice->akm) |
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 629a5494347a..6c896dbfd796 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
@@ -534,7 +534,7 @@ static int snd_intel8x0_codec_semaphore(struct intel8x0 *chip, unsigned int code | |||
534 | udelay(10); | 534 | udelay(10); |
535 | } while (time--); | 535 | } while (time--); |
536 | 536 | ||
537 | /* access to some forbidden (non existant) ac97 registers will not | 537 | /* access to some forbidden (non existent) ac97 registers will not |
538 | * reset the semaphore. So even if you don't get the semaphore, still | 538 | * reset the semaphore. So even if you don't get the semaphore, still |
539 | * continue the access. We don't need the semaphore anyway. */ | 539 | * continue the access. We don't need the semaphore anyway. */ |
540 | snd_printk(KERN_ERR "codec_semaphore: semaphore is not ready [0x%x][0x%x]\n", | 540 | snd_printk(KERN_ERR "codec_semaphore: semaphore is not ready [0x%x][0x%x]\n", |
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c index 2ae8d29500a8..27709f0cd2a6 100644 --- a/sound/pci/intel8x0m.c +++ b/sound/pci/intel8x0m.c | |||
@@ -331,7 +331,7 @@ static int snd_intel8x0m_codec_semaphore(struct intel8x0m *chip, unsigned int co | |||
331 | udelay(10); | 331 | udelay(10); |
332 | } while (time--); | 332 | } while (time--); |
333 | 333 | ||
334 | /* access to some forbidden (non existant) ac97 registers will not | 334 | /* access to some forbidden (non existent) ac97 registers will not |
335 | * reset the semaphore. So even if you don't get the semaphore, still | 335 | * reset the semaphore. So even if you don't get the semaphore, still |
336 | * continue the access. We don't need the semaphore anyway. */ | 336 | * continue the access. We don't need the semaphore anyway. */ |
337 | snd_printk(KERN_ERR "codec_semaphore: semaphore is not ready [0x%x][0x%x]\n", | 337 | snd_printk(KERN_ERR "codec_semaphore: semaphore is not ready [0x%x][0x%x]\n", |
diff --git a/sound/pci/mixart/mixart_core.c b/sound/pci/mixart/mixart_core.c index d3350f383966..3df0f530f67c 100644 --- a/sound/pci/mixart/mixart_core.c +++ b/sound/pci/mixart/mixart_core.c | |||
@@ -265,7 +265,7 @@ int snd_mixart_send_msg(struct mixart_mgr *mgr, struct mixart_msg *request, int | |||
265 | if (! timeout) { | 265 | if (! timeout) { |
266 | /* error - no ack */ | 266 | /* error - no ack */ |
267 | mutex_unlock(&mgr->msg_mutex); | 267 | mutex_unlock(&mgr->msg_mutex); |
268 | snd_printk(KERN_ERR "error: no reponse on msg %x\n", msg_frame); | 268 | snd_printk(KERN_ERR "error: no response on msg %x\n", msg_frame); |
269 | return -EIO; | 269 | return -EIO; |
270 | } | 270 | } |
271 | 271 | ||
@@ -278,7 +278,7 @@ int snd_mixart_send_msg(struct mixart_mgr *mgr, struct mixart_msg *request, int | |||
278 | err = get_msg(mgr, &resp, msg_frame); | 278 | err = get_msg(mgr, &resp, msg_frame); |
279 | 279 | ||
280 | if( request->message_id != resp.message_id ) | 280 | if( request->message_id != resp.message_id ) |
281 | snd_printk(KERN_ERR "REPONSE ERROR!\n"); | 281 | snd_printk(KERN_ERR "RESPONSE ERROR!\n"); |
282 | 282 | ||
283 | mutex_unlock(&mgr->msg_mutex); | 283 | mutex_unlock(&mgr->msg_mutex); |
284 | return err; | 284 | return err; |
diff --git a/sound/pci/pcxhr/pcxhr_core.c b/sound/pci/pcxhr/pcxhr_core.c index 833e7180ad2d..304411c1fe4b 100644 --- a/sound/pci/pcxhr/pcxhr_core.c +++ b/sound/pci/pcxhr/pcxhr_core.c | |||
@@ -1042,11 +1042,11 @@ void pcxhr_msg_tasklet(unsigned long arg) | |||
1042 | int i, j; | 1042 | int i, j; |
1043 | 1043 | ||
1044 | if (mgr->src_it_dsp & PCXHR_IRQ_FREQ_CHANGE) | 1044 | if (mgr->src_it_dsp & PCXHR_IRQ_FREQ_CHANGE) |
1045 | snd_printdd("TASKLET : PCXHR_IRQ_FREQ_CHANGE event occured\n"); | 1045 | snd_printdd("TASKLET : PCXHR_IRQ_FREQ_CHANGE event occurred\n"); |
1046 | if (mgr->src_it_dsp & PCXHR_IRQ_TIME_CODE) | 1046 | if (mgr->src_it_dsp & PCXHR_IRQ_TIME_CODE) |
1047 | snd_printdd("TASKLET : PCXHR_IRQ_TIME_CODE event occured\n"); | 1047 | snd_printdd("TASKLET : PCXHR_IRQ_TIME_CODE event occurred\n"); |
1048 | if (mgr->src_it_dsp & PCXHR_IRQ_NOTIFY) | 1048 | if (mgr->src_it_dsp & PCXHR_IRQ_NOTIFY) |
1049 | snd_printdd("TASKLET : PCXHR_IRQ_NOTIFY event occured\n"); | 1049 | snd_printdd("TASKLET : PCXHR_IRQ_NOTIFY event occurred\n"); |
1050 | if (mgr->src_it_dsp & (PCXHR_IRQ_FREQ_CHANGE | PCXHR_IRQ_TIME_CODE)) { | 1050 | if (mgr->src_it_dsp & (PCXHR_IRQ_FREQ_CHANGE | PCXHR_IRQ_TIME_CODE)) { |
1051 | /* clear events FREQ_CHANGE and TIME_CODE */ | 1051 | /* clear events FREQ_CHANGE and TIME_CODE */ |
1052 | pcxhr_init_rmh(prmh, CMD_TEST_IT); | 1052 | pcxhr_init_rmh(prmh, CMD_TEST_IT); |
@@ -1055,7 +1055,7 @@ void pcxhr_msg_tasklet(unsigned long arg) | |||
1055 | err, prmh->stat[0]); | 1055 | err, prmh->stat[0]); |
1056 | } | 1056 | } |
1057 | if (mgr->src_it_dsp & PCXHR_IRQ_ASYNC) { | 1057 | if (mgr->src_it_dsp & PCXHR_IRQ_ASYNC) { |
1058 | snd_printdd("TASKLET : PCXHR_IRQ_ASYNC event occured\n"); | 1058 | snd_printdd("TASKLET : PCXHR_IRQ_ASYNC event occurred\n"); |
1059 | 1059 | ||
1060 | pcxhr_init_rmh(prmh, CMD_ASYNC); | 1060 | pcxhr_init_rmh(prmh, CMD_ASYNC); |
1061 | prmh->cmd[0] |= 1; /* add SEL_ASYNC_EVENTS */ | 1061 | prmh->cmd[0] |= 1; /* add SEL_ASYNC_EVENTS */ |
@@ -1233,7 +1233,7 @@ irqreturn_t pcxhr_interrupt(int irq, void *dev_id) | |||
1233 | reg = PCXHR_INPL(mgr, PCXHR_PLX_L2PCIDB); | 1233 | reg = PCXHR_INPL(mgr, PCXHR_PLX_L2PCIDB); |
1234 | PCXHR_OUTPL(mgr, PCXHR_PLX_L2PCIDB, reg); | 1234 | PCXHR_OUTPL(mgr, PCXHR_PLX_L2PCIDB, reg); |
1235 | 1235 | ||
1236 | /* timer irq occured */ | 1236 | /* timer irq occurred */ |
1237 | if (reg & PCXHR_IRQ_TIMER) { | 1237 | if (reg & PCXHR_IRQ_TIMER) { |
1238 | int timer_toggle = reg & PCXHR_IRQ_TIMER; | 1238 | int timer_toggle = reg & PCXHR_IRQ_TIMER; |
1239 | /* is a 24 bit counter */ | 1239 | /* is a 24 bit counter */ |
@@ -1288,7 +1288,7 @@ irqreturn_t pcxhr_interrupt(int irq, void *dev_id) | |||
1288 | if (reg & PCXHR_IRQ_MASK) { | 1288 | if (reg & PCXHR_IRQ_MASK) { |
1289 | if (reg & PCXHR_IRQ_ASYNC) { | 1289 | if (reg & PCXHR_IRQ_ASYNC) { |
1290 | /* as we didn't request any async notifications, | 1290 | /* as we didn't request any async notifications, |
1291 | * some kind of xrun error will probably occured | 1291 | * some kind of xrun error will probably occurred |
1292 | */ | 1292 | */ |
1293 | /* better resynchronize all streams next interrupt : */ | 1293 | /* better resynchronize all streams next interrupt : */ |
1294 | mgr->dsp_time_last = PCXHR_DSP_TIME_INVALID; | 1294 | mgr->dsp_time_last = PCXHR_DSP_TIME_INVALID; |
diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c index d5f5b440fc40..9ff247fc8871 100644 --- a/sound/pci/rme96.c +++ b/sound/pci/rme96.c | |||
@@ -150,7 +150,7 @@ MODULE_PARM_DESC(enable, "Enable RME Digi96 soundcard."); | |||
150 | #define RME96_RCR_BITPOS_F1 28 | 150 | #define RME96_RCR_BITPOS_F1 28 |
151 | #define RME96_RCR_BITPOS_F2 29 | 151 | #define RME96_RCR_BITPOS_F2 29 |
152 | 152 | ||
153 | /* Additonal register bits */ | 153 | /* Additional register bits */ |
154 | #define RME96_AR_WSEL (1 << 0) | 154 | #define RME96_AR_WSEL (1 << 0) |
155 | #define RME96_AR_ANALOG (1 << 1) | 155 | #define RME96_AR_ANALOG (1 << 1) |
156 | #define RME96_AR_FREQPAD_0 (1 << 2) | 156 | #define RME96_AR_FREQPAD_0 (1 << 2) |
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index a323eafb9e03..949691a876d3 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c | |||
@@ -391,7 +391,7 @@ MODULE_SUPPORTED_DEVICE("{{RME HDSPM-MADI}}"); | |||
391 | 391 | ||
392 | /* Status2 Register bits */ /* MADI ONLY */ | 392 | /* Status2 Register bits */ /* MADI ONLY */ |
393 | 393 | ||
394 | #define HDSPM_version0 (1<<0) /* not realy defined but I guess */ | 394 | #define HDSPM_version0 (1<<0) /* not really defined but I guess */ |
395 | #define HDSPM_version1 (1<<1) /* in former cards it was ??? */ | 395 | #define HDSPM_version1 (1<<1) /* in former cards it was ??? */ |
396 | #define HDSPM_version2 (1<<2) | 396 | #define HDSPM_version2 (1<<2) |
397 | 397 | ||
@@ -936,7 +936,7 @@ struct hdspm { | |||
936 | struct snd_kcontrol *playback_mixer_ctls[HDSPM_MAX_CHANNELS]; | 936 | struct snd_kcontrol *playback_mixer_ctls[HDSPM_MAX_CHANNELS]; |
937 | /* but input to much, so not used */ | 937 | /* but input to much, so not used */ |
938 | struct snd_kcontrol *input_mixer_ctls[HDSPM_MAX_CHANNELS]; | 938 | struct snd_kcontrol *input_mixer_ctls[HDSPM_MAX_CHANNELS]; |
939 | /* full mixer accessable over mixer ioctl or hwdep-device */ | 939 | /* full mixer accessible over mixer ioctl or hwdep-device */ |
940 | struct hdspm_mixer *mixer; | 940 | struct hdspm_mixer *mixer; |
941 | 941 | ||
942 | struct hdspm_tco *tco; /* NULL if no TCO detected */ | 942 | struct hdspm_tco *tco; /* NULL if no TCO detected */ |
diff --git a/sound/pci/sis7019.c b/sound/pci/sis7019.c index 1b8f6742b5fa..2b5c7a95ae1f 100644 --- a/sound/pci/sis7019.c +++ b/sound/pci/sis7019.c | |||
@@ -308,7 +308,7 @@ static irqreturn_t sis_interrupt(int irq, void *dev) | |||
308 | u32 intr, status; | 308 | u32 intr, status; |
309 | 309 | ||
310 | /* We only use the DMA interrupts, and we don't enable any other | 310 | /* We only use the DMA interrupts, and we don't enable any other |
311 | * source of interrupts. But, it is possible to see an interupt | 311 | * source of interrupts. But, it is possible to see an interrupt |
312 | * status that didn't actually interrupt us, so eliminate anything | 312 | * status that didn't actually interrupt us, so eliminate anything |
313 | * we're not expecting to avoid falsely claiming an IRQ, and an | 313 | * we're not expecting to avoid falsely claiming an IRQ, and an |
314 | * ensuing endless loop. | 314 | * ensuing endless loop. |
@@ -773,7 +773,7 @@ static void sis_prepare_timing_voice(struct voice *voice, | |||
773 | vperiod = 0; | 773 | vperiod = 0; |
774 | } | 774 | } |
775 | 775 | ||
776 | /* The interrupt handler implements the timing syncronization, so | 776 | /* The interrupt handler implements the timing synchronization, so |
777 | * setup its state. | 777 | * setup its state. |
778 | */ | 778 | */ |
779 | timing->flags |= VOICE_SYNC_TIMING; | 779 | timing->flags |= VOICE_SYNC_TIMING; |
@@ -1139,7 +1139,7 @@ static int sis_chip_init(struct sis7019 *sis) | |||
1139 | */ | 1139 | */ |
1140 | outl(SIS_DMA_CSR_PCI_SETTINGS, io + SIS_DMA_CSR); | 1140 | outl(SIS_DMA_CSR_PCI_SETTINGS, io + SIS_DMA_CSR); |
1141 | 1141 | ||
1142 | /* Reset the syncronization groups for all of the channels | 1142 | /* Reset the synchronization groups for all of the channels |
1143 | * to be asyncronous. If we start doing SPDIF or 5.1 sound, etc. | 1143 | * to be asyncronous. If we start doing SPDIF or 5.1 sound, etc. |
1144 | * we'll need to change how we handle these. Until then, we just | 1144 | * we'll need to change how we handle these. Until then, we just |
1145 | * assign sub-mixer 0 to all playback channels, and avoid any | 1145 | * assign sub-mixer 0 to all playback channels, and avoid any |
diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c index edce8a27e3ee..bc823a547550 100644 --- a/sound/ppc/snd_ps3.c +++ b/sound/ppc/snd_ps3.c | |||
@@ -358,7 +358,7 @@ static irqreturn_t snd_ps3_interrupt(int irq, void *dev_id) | |||
358 | * filling dummy data, serial automatically start to | 358 | * filling dummy data, serial automatically start to |
359 | * consume them and then will generate normal buffer | 359 | * consume them and then will generate normal buffer |
360 | * empty interrupts. | 360 | * empty interrupts. |
361 | * If both buffer underflow and buffer empty are occured, | 361 | * If both buffer underflow and buffer empty are occurred, |
362 | * it is better to do nomal data transfer than empty one | 362 | * it is better to do nomal data transfer than empty one |
363 | */ | 363 | */ |
364 | snd_ps3_program_dma(card, | 364 | snd_ps3_program_dma(card, |
diff --git a/sound/ppc/snd_ps3_reg.h b/sound/ppc/snd_ps3_reg.h index 03fdee4aaaf2..2e6302079566 100644 --- a/sound/ppc/snd_ps3_reg.h +++ b/sound/ppc/snd_ps3_reg.h | |||
@@ -125,7 +125,7 @@ | |||
125 | transfers. Any interrupts associated with the canceled transfers | 125 | transfers. Any interrupts associated with the canceled transfers |
126 | will occur as if the transfer had finished. | 126 | will occur as if the transfer had finished. |
127 | Since this bit is designed to recover from DMA related issues | 127 | Since this bit is designed to recover from DMA related issues |
128 | which are caused by unpredictable situations, it is prefered to wait | 128 | which are caused by unpredictable situations, it is preferred to wait |
129 | for normal DMA transfer end without using this bit. | 129 | for normal DMA transfer end without using this bit. |
130 | */ | 130 | */ |
131 | #define PS3_AUDIO_CONFIG_CLEAR (1 << 8) /* RWIVF */ | 131 | #define PS3_AUDIO_CONFIG_CLEAR (1 << 8) /* RWIVF */ |
@@ -316,13 +316,13 @@ DISABLED=Interrupt generation disabled. | |||
316 | 316 | ||
317 | /* | 317 | /* |
318 | Audio Port Interrupt Status Register | 318 | Audio Port Interrupt Status Register |
319 | Indicates Interrupt status, which interrupt has occured, and can clear | 319 | Indicates Interrupt status, which interrupt has occurred, and can clear |
320 | each interrupt in this register. | 320 | each interrupt in this register. |
321 | Writing 1b to a field containing 1b clears field and de-asserts interrupt. | 321 | Writing 1b to a field containing 1b clears field and de-asserts interrupt. |
322 | Writing 0b to a field has no effect. | 322 | Writing 0b to a field has no effect. |
323 | Field vaules are the following: | 323 | Field vaules are the following: |
324 | 0 - Interrupt hasn't occured. | 324 | 0 - Interrupt hasn't occurred. |
325 | 1 - Interrupt has occured. | 325 | 1 - Interrupt has occurred. |
326 | 326 | ||
327 | 327 | ||
328 | 31 24 23 16 15 8 7 0 | 328 | 31 24 23 16 15 8 7 0 |
@@ -473,7 +473,7 @@ Channel N is out of action by setting 0 to asoen. | |||
473 | /* | 473 | /* |
474 | Sampling Rate | 474 | Sampling Rate |
475 | Specifies the divide ratio of the bit clock (clock output | 475 | Specifies the divide ratio of the bit clock (clock output |
476 | from bclko) used by the 3-wire Audio Output Clock, whcih | 476 | from bclko) used by the 3-wire Audio Output Clock, which |
477 | is applied to the master clock selected by mcksel. | 477 | is applied to the master clock selected by mcksel. |
478 | Data output is synchronized with this clock. | 478 | Data output is synchronized with this clock. |
479 | */ | 479 | */ |
@@ -756,7 +756,7 @@ The STATUS field can be used to monitor the progress of a DMA request. | |||
756 | DONE indicates the previous request has completed. | 756 | DONE indicates the previous request has completed. |
757 | EVENT indicates that the DMA engine is waiting for the EVENT to occur. | 757 | EVENT indicates that the DMA engine is waiting for the EVENT to occur. |
758 | PENDING indicates that the DMA engine has not started processing this | 758 | PENDING indicates that the DMA engine has not started processing this |
759 | request, but the EVENT has occured. | 759 | request, but the EVENT has occurred. |
760 | DMA indicates that the data transfer is in progress. | 760 | DMA indicates that the data transfer is in progress. |
761 | NOTIFY indicates that the notifier signalling end of transfer is being written. | 761 | NOTIFY indicates that the notifier signalling end of transfer is being written. |
762 | CLEAR indicated that the previous transfer was cleared. | 762 | CLEAR indicated that the previous transfer was cleared. |
@@ -824,7 +824,7 @@ AUDIOFIFO = Audio WriteData FIFO, | |||
824 | 824 | ||
825 | /* | 825 | /* |
826 | PS3_AUDIO_DMASIZE specifies the number of 128-byte blocks + 1 to transfer. | 826 | PS3_AUDIO_DMASIZE specifies the number of 128-byte blocks + 1 to transfer. |
827 | So a value of 0 means 128-bytes will get transfered. | 827 | So a value of 0 means 128-bytes will get transferred. |
828 | 828 | ||
829 | 829 | ||
830 | 31 24 23 16 15 8 7 0 | 830 | 31 24 23 16 15 8 7 0 |
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c index 5d230cee3fa7..7fbfa051f6e1 100644 --- a/sound/soc/atmel/atmel_ssc_dai.c +++ b/sound/soc/atmel/atmel_ssc_dai.c | |||
@@ -672,7 +672,7 @@ static int atmel_ssc_resume(struct snd_soc_dai *cpu_dai) | |||
672 | /* re-enable interrupts */ | 672 | /* re-enable interrupts */ |
673 | ssc_writel(ssc_p->ssc->regs, IER, ssc_p->ssc_state.ssc_imr); | 673 | ssc_writel(ssc_p->ssc->regs, IER, ssc_p->ssc_state.ssc_imr); |
674 | 674 | ||
675 | /* Re-enable recieve and transmit as appropriate */ | 675 | /* Re-enable receive and transmit as appropriate */ |
676 | cr = 0; | 676 | cr = 0; |
677 | cr |= | 677 | cr |= |
678 | (ssc_p->ssc_state.ssc_sr & SSC_BIT(SR_RXEN)) ? SSC_BIT(CR_RXEN) : 0; | 678 | (ssc_p->ssc_state.ssc_sr & SSC_BIT(SR_RXEN)) ? SSC_BIT(CR_RXEN) : 0; |
diff --git a/sound/soc/codecs/alc5623.c b/sound/soc/codecs/alc5623.c index 4f377c9e868d..eecffb548947 100644 --- a/sound/soc/codecs/alc5623.c +++ b/sound/soc/codecs/alc5623.c | |||
@@ -481,7 +481,7 @@ struct _pll_div { | |||
481 | }; | 481 | }; |
482 | 482 | ||
483 | /* Note : pll code from original alc5623 driver. Not sure of how good it is */ | 483 | /* Note : pll code from original alc5623 driver. Not sure of how good it is */ |
484 | /* usefull only for master mode */ | 484 | /* useful only for master mode */ |
485 | static const struct _pll_div codec_master_pll_div[] = { | 485 | static const struct _pll_div codec_master_pll_div[] = { |
486 | 486 | ||
487 | { 2048000, 8192000, 0x0ea0}, | 487 | { 2048000, 8192000, 0x0ea0}, |
diff --git a/sound/soc/codecs/lm4857.c b/sound/soc/codecs/lm4857.c index 72de47e5d040..2c2a681da0d7 100644 --- a/sound/soc/codecs/lm4857.c +++ b/sound/soc/codecs/lm4857.c | |||
@@ -161,7 +161,7 @@ static const struct snd_kcontrol_new lm4857_controls[] = { | |||
161 | lm4857_get_mode, lm4857_set_mode), | 161 | lm4857_get_mode, lm4857_set_mode), |
162 | }; | 162 | }; |
163 | 163 | ||
164 | /* There is a demux inbetween the the input signal and the output signals. | 164 | /* There is a demux between the input signal and the output signals. |
165 | * Currently there is no easy way to model it in ASoC and since it does not make | 165 | * Currently there is no easy way to model it in ASoC and since it does not make |
166 | * much of a difference in practice simply connect the input direclty to the | 166 | * much of a difference in practice simply connect the input direclty to the |
167 | * outputs. */ | 167 | * outputs. */ |
diff --git a/sound/soc/codecs/sn95031.c b/sound/soc/codecs/sn95031.c index 2a30eae1881c..a54d2a5b28f6 100644 --- a/sound/soc/codecs/sn95031.c +++ b/sound/soc/codecs/sn95031.c | |||
@@ -26,7 +26,9 @@ | |||
26 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | 26 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
27 | 27 | ||
28 | #include <linux/platform_device.h> | 28 | #include <linux/platform_device.h> |
29 | #include <linux/delay.h> | ||
29 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
31 | |||
30 | #include <asm/intel_scu_ipc.h> | 32 | #include <asm/intel_scu_ipc.h> |
31 | #include <sound/pcm.h> | 33 | #include <sound/pcm.h> |
32 | #include <sound/pcm_params.h> | 34 | #include <sound/pcm_params.h> |
diff --git a/sound/soc/codecs/tlv320aic26.h b/sound/soc/codecs/tlv320aic26.h index 62b1f2261429..67f19c3bebe6 100644 --- a/sound/soc/codecs/tlv320aic26.h +++ b/sound/soc/codecs/tlv320aic26.h | |||
@@ -14,14 +14,14 @@ | |||
14 | #define AIC26_PAGE_ADDR(page, offset) ((page << 6) | offset) | 14 | #define AIC26_PAGE_ADDR(page, offset) ((page << 6) | offset) |
15 | #define AIC26_NUM_REGS AIC26_PAGE_ADDR(3, 0) | 15 | #define AIC26_NUM_REGS AIC26_PAGE_ADDR(3, 0) |
16 | 16 | ||
17 | /* Page 0: Auxillary data registers */ | 17 | /* Page 0: Auxiliary data registers */ |
18 | #define AIC26_REG_BAT1 AIC26_PAGE_ADDR(0, 0x05) | 18 | #define AIC26_REG_BAT1 AIC26_PAGE_ADDR(0, 0x05) |
19 | #define AIC26_REG_BAT2 AIC26_PAGE_ADDR(0, 0x06) | 19 | #define AIC26_REG_BAT2 AIC26_PAGE_ADDR(0, 0x06) |
20 | #define AIC26_REG_AUX AIC26_PAGE_ADDR(0, 0x07) | 20 | #define AIC26_REG_AUX AIC26_PAGE_ADDR(0, 0x07) |
21 | #define AIC26_REG_TEMP1 AIC26_PAGE_ADDR(0, 0x09) | 21 | #define AIC26_REG_TEMP1 AIC26_PAGE_ADDR(0, 0x09) |
22 | #define AIC26_REG_TEMP2 AIC26_PAGE_ADDR(0, 0x0A) | 22 | #define AIC26_REG_TEMP2 AIC26_PAGE_ADDR(0, 0x0A) |
23 | 23 | ||
24 | /* Page 1: Auxillary control registers */ | 24 | /* Page 1: Auxiliary control registers */ |
25 | #define AIC26_REG_AUX_ADC AIC26_PAGE_ADDR(1, 0x00) | 25 | #define AIC26_REG_AUX_ADC AIC26_PAGE_ADDR(1, 0x00) |
26 | #define AIC26_REG_STATUS AIC26_PAGE_ADDR(1, 0x01) | 26 | #define AIC26_REG_STATUS AIC26_PAGE_ADDR(1, 0x01) |
27 | #define AIC26_REG_REFERENCE AIC26_PAGE_ADDR(1, 0x03) | 27 | #define AIC26_REG_REFERENCE AIC26_PAGE_ADDR(1, 0x03) |
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 3bedab26892f..6c43c13f0430 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c | |||
@@ -884,7 +884,7 @@ static int aic3x_hw_params(struct snd_pcm_substream *substream, | |||
884 | if (bypass_pll) | 884 | if (bypass_pll) |
885 | return 0; | 885 | return 0; |
886 | 886 | ||
887 | /* Use PLL, compute apropriate setup for j, d, r and p, the closest | 887 | /* Use PLL, compute appropriate setup for j, d, r and p, the closest |
888 | * one wins the game. Try with d==0 first, next with d!=0. | 888 | * one wins the game. Try with d==0 first, next with d!=0. |
889 | * Constraints for j are according to the datasheet. | 889 | * Constraints for j are according to the datasheet. |
890 | * The sysclk is divided by 1000 to prevent integer overflows. | 890 | * The sysclk is divided by 1000 to prevent integer overflows. |
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c index 00b6d87e7bdb..082e9d51963f 100644 --- a/sound/soc/codecs/tlv320dac33.c +++ b/sound/soc/codecs/tlv320dac33.c | |||
@@ -324,6 +324,10 @@ static void dac33_init_chip(struct snd_soc_codec *codec) | |||
324 | dac33_write(codec, DAC33_OUT_AMP_CTRL, | 324 | dac33_write(codec, DAC33_OUT_AMP_CTRL, |
325 | dac33_read_reg_cache(codec, DAC33_OUT_AMP_CTRL)); | 325 | dac33_read_reg_cache(codec, DAC33_OUT_AMP_CTRL)); |
326 | 326 | ||
327 | dac33_write(codec, DAC33_LDAC_PWR_CTRL, | ||
328 | dac33_read_reg_cache(codec, DAC33_LDAC_PWR_CTRL)); | ||
329 | dac33_write(codec, DAC33_RDAC_PWR_CTRL, | ||
330 | dac33_read_reg_cache(codec, DAC33_RDAC_PWR_CTRL)); | ||
327 | } | 331 | } |
328 | 332 | ||
329 | static inline int dac33_read_id(struct snd_soc_codec *codec) | 333 | static inline int dac33_read_id(struct snd_soc_codec *codec) |
@@ -670,6 +674,7 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) | |||
670 | { | 674 | { |
671 | struct snd_soc_codec *codec = dac33->codec; | 675 | struct snd_soc_codec *codec = dac33->codec; |
672 | unsigned int delay; | 676 | unsigned int delay; |
677 | unsigned long flags; | ||
673 | 678 | ||
674 | switch (dac33->fifo_mode) { | 679 | switch (dac33->fifo_mode) { |
675 | case DAC33_FIFO_MODE1: | 680 | case DAC33_FIFO_MODE1: |
@@ -677,10 +682,10 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) | |||
677 | DAC33_THRREG(dac33->nsample)); | 682 | DAC33_THRREG(dac33->nsample)); |
678 | 683 | ||
679 | /* Take the timestamps */ | 684 | /* Take the timestamps */ |
680 | spin_lock_irq(&dac33->lock); | 685 | spin_lock_irqsave(&dac33->lock, flags); |
681 | dac33->t_stamp2 = ktime_to_us(ktime_get()); | 686 | dac33->t_stamp2 = ktime_to_us(ktime_get()); |
682 | dac33->t_stamp1 = dac33->t_stamp2; | 687 | dac33->t_stamp1 = dac33->t_stamp2; |
683 | spin_unlock_irq(&dac33->lock); | 688 | spin_unlock_irqrestore(&dac33->lock, flags); |
684 | 689 | ||
685 | dac33_write16(codec, DAC33_PREFILL_MSB, | 690 | dac33_write16(codec, DAC33_PREFILL_MSB, |
686 | DAC33_THRREG(dac33->alarm_threshold)); | 691 | DAC33_THRREG(dac33->alarm_threshold)); |
@@ -692,11 +697,11 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) | |||
692 | break; | 697 | break; |
693 | case DAC33_FIFO_MODE7: | 698 | case DAC33_FIFO_MODE7: |
694 | /* Take the timestamp */ | 699 | /* Take the timestamp */ |
695 | spin_lock_irq(&dac33->lock); | 700 | spin_lock_irqsave(&dac33->lock, flags); |
696 | dac33->t_stamp1 = ktime_to_us(ktime_get()); | 701 | dac33->t_stamp1 = ktime_to_us(ktime_get()); |
697 | /* Move back the timestamp with drain time */ | 702 | /* Move back the timestamp with drain time */ |
698 | dac33->t_stamp1 -= dac33->mode7_us_to_lthr; | 703 | dac33->t_stamp1 -= dac33->mode7_us_to_lthr; |
699 | spin_unlock_irq(&dac33->lock); | 704 | spin_unlock_irqrestore(&dac33->lock, flags); |
700 | 705 | ||
701 | dac33_write16(codec, DAC33_PREFILL_MSB, | 706 | dac33_write16(codec, DAC33_PREFILL_MSB, |
702 | DAC33_THRREG(DAC33_MODE7_MARGIN)); | 707 | DAC33_THRREG(DAC33_MODE7_MARGIN)); |
@@ -714,13 +719,14 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) | |||
714 | static inline void dac33_playback_handler(struct tlv320dac33_priv *dac33) | 719 | static inline void dac33_playback_handler(struct tlv320dac33_priv *dac33) |
715 | { | 720 | { |
716 | struct snd_soc_codec *codec = dac33->codec; | 721 | struct snd_soc_codec *codec = dac33->codec; |
722 | unsigned long flags; | ||
717 | 723 | ||
718 | switch (dac33->fifo_mode) { | 724 | switch (dac33->fifo_mode) { |
719 | case DAC33_FIFO_MODE1: | 725 | case DAC33_FIFO_MODE1: |
720 | /* Take the timestamp */ | 726 | /* Take the timestamp */ |
721 | spin_lock_irq(&dac33->lock); | 727 | spin_lock_irqsave(&dac33->lock, flags); |
722 | dac33->t_stamp2 = ktime_to_us(ktime_get()); | 728 | dac33->t_stamp2 = ktime_to_us(ktime_get()); |
723 | spin_unlock_irq(&dac33->lock); | 729 | spin_unlock_irqrestore(&dac33->lock, flags); |
724 | 730 | ||
725 | dac33_write16(codec, DAC33_NSAMPLE_MSB, | 731 | dac33_write16(codec, DAC33_NSAMPLE_MSB, |
726 | DAC33_THRREG(dac33->nsample)); | 732 | DAC33_THRREG(dac33->nsample)); |
@@ -773,10 +779,11 @@ static irqreturn_t dac33_interrupt_handler(int irq, void *dev) | |||
773 | { | 779 | { |
774 | struct snd_soc_codec *codec = dev; | 780 | struct snd_soc_codec *codec = dev; |
775 | struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); | 781 | struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec); |
782 | unsigned long flags; | ||
776 | 783 | ||
777 | spin_lock(&dac33->lock); | 784 | spin_lock_irqsave(&dac33->lock, flags); |
778 | dac33->t_stamp1 = ktime_to_us(ktime_get()); | 785 | dac33->t_stamp1 = ktime_to_us(ktime_get()); |
779 | spin_unlock(&dac33->lock); | 786 | spin_unlock_irqrestore(&dac33->lock, flags); |
780 | 787 | ||
781 | /* Do not schedule the workqueue in Mode7 */ | 788 | /* Do not schedule the workqueue in Mode7 */ |
782 | if (dac33->fifo_mode != DAC33_FIFO_MODE7) | 789 | if (dac33->fifo_mode != DAC33_FIFO_MODE7) |
@@ -1020,7 +1027,7 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream) | |||
1020 | /* | 1027 | /* |
1021 | * For FIFO bypass mode: | 1028 | * For FIFO bypass mode: |
1022 | * Enable the FIFO bypass (Disable the FIFO use) | 1029 | * Enable the FIFO bypass (Disable the FIFO use) |
1023 | * Set the BCLK as continous | 1030 | * Set the BCLK as continuous |
1024 | */ | 1031 | */ |
1025 | fifoctrl_a |= DAC33_FBYPAS; | 1032 | fifoctrl_a |= DAC33_FBYPAS; |
1026 | aictrl_b |= DAC33_BCLKON; | 1033 | aictrl_b |= DAC33_BCLKON; |
@@ -1173,15 +1180,16 @@ static snd_pcm_sframes_t dac33_dai_delay( | |||
1173 | unsigned int time_delta, uthr; | 1180 | unsigned int time_delta, uthr; |
1174 | int samples_out, samples_in, samples; | 1181 | int samples_out, samples_in, samples; |
1175 | snd_pcm_sframes_t delay = 0; | 1182 | snd_pcm_sframes_t delay = 0; |
1183 | unsigned long flags; | ||
1176 | 1184 | ||
1177 | switch (dac33->fifo_mode) { | 1185 | switch (dac33->fifo_mode) { |
1178 | case DAC33_FIFO_BYPASS: | 1186 | case DAC33_FIFO_BYPASS: |
1179 | break; | 1187 | break; |
1180 | case DAC33_FIFO_MODE1: | 1188 | case DAC33_FIFO_MODE1: |
1181 | spin_lock(&dac33->lock); | 1189 | spin_lock_irqsave(&dac33->lock, flags); |
1182 | t0 = dac33->t_stamp1; | 1190 | t0 = dac33->t_stamp1; |
1183 | t1 = dac33->t_stamp2; | 1191 | t1 = dac33->t_stamp2; |
1184 | spin_unlock(&dac33->lock); | 1192 | spin_unlock_irqrestore(&dac33->lock, flags); |
1185 | t_now = ktime_to_us(ktime_get()); | 1193 | t_now = ktime_to_us(ktime_get()); |
1186 | 1194 | ||
1187 | /* We have not started to fill the FIFO yet, delay is 0 */ | 1195 | /* We have not started to fill the FIFO yet, delay is 0 */ |
@@ -1246,10 +1254,10 @@ static snd_pcm_sframes_t dac33_dai_delay( | |||
1246 | } | 1254 | } |
1247 | break; | 1255 | break; |
1248 | case DAC33_FIFO_MODE7: | 1256 | case DAC33_FIFO_MODE7: |
1249 | spin_lock(&dac33->lock); | 1257 | spin_lock_irqsave(&dac33->lock, flags); |
1250 | t0 = dac33->t_stamp1; | 1258 | t0 = dac33->t_stamp1; |
1251 | uthr = dac33->uthr; | 1259 | uthr = dac33->uthr; |
1252 | spin_unlock(&dac33->lock); | 1260 | spin_unlock_irqrestore(&dac33->lock, flags); |
1253 | t_now = ktime_to_us(ktime_get()); | 1261 | t_now = ktime_to_us(ktime_get()); |
1254 | 1262 | ||
1255 | /* We have not started to fill the FIFO yet, delay is 0 */ | 1263 | /* We have not started to fill the FIFO yet, delay is 0 */ |
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index 8512800f6326..575238d68e5e 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c | |||
@@ -281,7 +281,7 @@ static inline void twl4030_check_defaults(struct snd_soc_codec *codec) | |||
281 | i, val, twl4030_reg[i]); | 281 | i, val, twl4030_reg[i]); |
282 | } | 282 | } |
283 | } | 283 | } |
284 | dev_dbg(codec->dev, "Found %d non maching registers. %s\n", | 284 | dev_dbg(codec->dev, "Found %d non-matching registers. %s\n", |
285 | difference, difference ? "Not OK" : "OK"); | 285 | difference, difference ? "Not OK" : "OK"); |
286 | } | 286 | } |
287 | 287 | ||
@@ -2018,7 +2018,7 @@ static int twl4030_voice_startup(struct snd_pcm_substream *substream, | |||
2018 | u8 mode; | 2018 | u8 mode; |
2019 | 2019 | ||
2020 | /* If the system master clock is not 26MHz, the voice PCM interface is | 2020 | /* If the system master clock is not 26MHz, the voice PCM interface is |
2021 | * not avilable. | 2021 | * not available. |
2022 | */ | 2022 | */ |
2023 | if (twl4030->sysclk != 26000) { | 2023 | if (twl4030->sysclk != 26000) { |
2024 | dev_err(codec->dev, "The board is configured for %u Hz, while" | 2024 | dev_err(codec->dev, "The board is configured for %u Hz, while" |
@@ -2028,7 +2028,7 @@ static int twl4030_voice_startup(struct snd_pcm_substream *substream, | |||
2028 | } | 2028 | } |
2029 | 2029 | ||
2030 | /* If the codec mode is not option2, the voice PCM interface is not | 2030 | /* If the codec mode is not option2, the voice PCM interface is not |
2031 | * avilable. | 2031 | * available. |
2032 | */ | 2032 | */ |
2033 | mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE) | 2033 | mode = twl4030_read_reg_cache(codec, TWL4030_REG_CODEC_MODE) |
2034 | & TWL4030_OPT_MODE; | 2034 | & TWL4030_OPT_MODE; |
diff --git a/sound/soc/codecs/twl6040.c b/sound/soc/codecs/twl6040.c index 482fcdb59bfa..255901c4460d 100644 --- a/sound/soc/codecs/twl6040.c +++ b/sound/soc/codecs/twl6040.c | |||
@@ -1629,8 +1629,10 @@ static int twl6040_probe(struct snd_soc_codec *codec) | |||
1629 | priv->naudint = naudint; | 1629 | priv->naudint = naudint; |
1630 | priv->workqueue = create_singlethread_workqueue("twl6040-codec"); | 1630 | priv->workqueue = create_singlethread_workqueue("twl6040-codec"); |
1631 | 1631 | ||
1632 | if (!priv->workqueue) | 1632 | if (!priv->workqueue) { |
1633 | ret = -ENOMEM; | ||
1633 | goto work_err; | 1634 | goto work_err; |
1635 | } | ||
1634 | 1636 | ||
1635 | INIT_DELAYED_WORK(&priv->delayed_work, twl6040_accessory_work); | 1637 | INIT_DELAYED_WORK(&priv->delayed_work, twl6040_accessory_work); |
1636 | 1638 | ||
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c index 8f6b5ee6645b..4bbc0a79f01e 100644 --- a/sound/soc/codecs/wm8580.c +++ b/sound/soc/codecs/wm8580.c | |||
@@ -772,7 +772,7 @@ static int wm8580_set_bias_level(struct snd_soc_codec *codec, | |||
772 | reg &= ~(WM8580_PWRDN1_PWDN | WM8580_PWRDN1_ALLDACPD); | 772 | reg &= ~(WM8580_PWRDN1_PWDN | WM8580_PWRDN1_ALLDACPD); |
773 | snd_soc_write(codec, WM8580_PWRDN1, reg); | 773 | snd_soc_write(codec, WM8580_PWRDN1, reg); |
774 | 774 | ||
775 | /* Make VMID high impedence */ | 775 | /* Make VMID high impedance */ |
776 | reg = snd_soc_read(codec, WM8580_ADC_CONTROL1); | 776 | reg = snd_soc_read(codec, WM8580_ADC_CONTROL1); |
777 | reg &= ~0x100; | 777 | reg &= ~0x100; |
778 | snd_soc_write(codec, WM8580_ADC_CONTROL1, reg); | 778 | snd_soc_write(codec, WM8580_ADC_CONTROL1, reg); |
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c index 3f09deea8d9d..ffa2ffe5ec11 100644 --- a/sound/soc/codecs/wm8753.c +++ b/sound/soc/codecs/wm8753.c | |||
@@ -1312,7 +1312,7 @@ static int wm8753_set_bias_level(struct snd_soc_codec *codec, | |||
1312 | SNDRV_PCM_FMTBIT_S24_LE) | 1312 | SNDRV_PCM_FMTBIT_S24_LE) |
1313 | 1313 | ||
1314 | /* | 1314 | /* |
1315 | * The WM8753 supports upto 4 different and mutually exclusive DAI | 1315 | * The WM8753 supports up to 4 different and mutually exclusive DAI |
1316 | * configurations. This gives 2 PCM's available for use, hifi and voice. | 1316 | * configurations. This gives 2 PCM's available for use, hifi and voice. |
1317 | * NOTE: The Voice PCM cannot play or capture audio to the CPU as it's DAI | 1317 | * NOTE: The Voice PCM cannot play or capture audio to the CPU as it's DAI |
1318 | * is connected between the wm8753 and a BT codec or GSM modem. | 1318 | * is connected between the wm8753 and a BT codec or GSM modem. |
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index 443ae580445c..9b3bba4df5b3 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c | |||
@@ -1895,7 +1895,7 @@ static int fll_factors(struct _fll_div *fll_div, unsigned int Fref, | |||
1895 | 1895 | ||
1896 | pr_debug("Fvco=%dHz\n", target); | 1896 | pr_debug("Fvco=%dHz\n", target); |
1897 | 1897 | ||
1898 | /* Find an appropraite FLL_FRATIO and factor it out of the target */ | 1898 | /* Find an appropriate FLL_FRATIO and factor it out of the target */ |
1899 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { | 1899 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { |
1900 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { | 1900 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { |
1901 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; | 1901 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; |
diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c index 5e0214d6293e..3c7198779c31 100644 --- a/sound/soc/codecs/wm8955.c +++ b/sound/soc/codecs/wm8955.c | |||
@@ -176,7 +176,7 @@ static int wm8995_pll_factors(struct device *dev, | |||
176 | return 0; | 176 | return 0; |
177 | } | 177 | } |
178 | 178 | ||
179 | /* Lookup table specifiying SRATE (table 25 in datasheet); some of the | 179 | /* Lookup table specifying SRATE (table 25 in datasheet); some of the |
180 | * output frequencies have been rounded to the standard frequencies | 180 | * output frequencies have been rounded to the standard frequencies |
181 | * they are intended to match where the error is slight. */ | 181 | * they are intended to match where the error is slight. */ |
182 | static struct { | 182 | static struct { |
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index 3b71dd65c966..500011eb8b2b 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c | |||
@@ -3137,7 +3137,7 @@ static int fll_factors(struct _fll_div *fll_div, unsigned int Fref, | |||
3137 | 3137 | ||
3138 | pr_debug("FLL Fvco=%dHz\n", target); | 3138 | pr_debug("FLL Fvco=%dHz\n", target); |
3139 | 3139 | ||
3140 | /* Find an appropraite FLL_FRATIO and factor it out of the target */ | 3140 | /* Find an appropriate FLL_FRATIO and factor it out of the target */ |
3141 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { | 3141 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { |
3142 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { | 3142 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { |
3143 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; | 3143 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; |
diff --git a/sound/soc/codecs/wm8991.c b/sound/soc/codecs/wm8991.c index 28fdfd66661d..3c2ee1bb73cd 100644 --- a/sound/soc/codecs/wm8991.c +++ b/sound/soc/codecs/wm8991.c | |||
@@ -981,7 +981,7 @@ static int wm8991_set_dai_pll(struct snd_soc_dai *codec_dai, | |||
981 | reg = snd_soc_read(codec, WM8991_CLOCKING_2); | 981 | reg = snd_soc_read(codec, WM8991_CLOCKING_2); |
982 | snd_soc_write(codec, WM8991_CLOCKING_2, reg | WM8991_SYSCLK_SRC); | 982 | snd_soc_write(codec, WM8991_CLOCKING_2, reg | WM8991_SYSCLK_SRC); |
983 | 983 | ||
984 | /* set up N , fractional mode and pre-divisor if neccessary */ | 984 | /* set up N , fractional mode and pre-divisor if necessary */ |
985 | snd_soc_write(codec, WM8991_PLL1, pll_div.n | WM8991_SDM | | 985 | snd_soc_write(codec, WM8991_PLL1, pll_div.n | WM8991_SDM | |
986 | (pll_div.div2 ? WM8991_PRESCALE : 0)); | 986 | (pll_div.div2 ? WM8991_PRESCALE : 0)); |
987 | snd_soc_write(codec, WM8991_PLL2, (u8)(pll_div.k>>8)); | 987 | snd_soc_write(codec, WM8991_PLL2, (u8)(pll_div.k>>8)); |
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index 379fa22c5b6c..056aef904347 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c | |||
@@ -324,7 +324,7 @@ static int fll_factors(struct _fll_div *fll_div, unsigned int Fref, | |||
324 | 324 | ||
325 | pr_debug("Fvco=%dHz\n", target); | 325 | pr_debug("Fvco=%dHz\n", target); |
326 | 326 | ||
327 | /* Find an appropraite FLL_FRATIO and factor it out of the target */ | 327 | /* Find an appropriate FLL_FRATIO and factor it out of the target */ |
328 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { | 328 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { |
329 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { | 329 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { |
330 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; | 330 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; |
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 3dc64c8b6a5c..3290333b2bb9 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
@@ -82,18 +82,18 @@ struct wm8994_priv { | |||
82 | 82 | ||
83 | int mbc_ena[3]; | 83 | int mbc_ena[3]; |
84 | 84 | ||
85 | /* Platform dependant DRC configuration */ | 85 | /* Platform dependent DRC configuration */ |
86 | const char **drc_texts; | 86 | const char **drc_texts; |
87 | int drc_cfg[WM8994_NUM_DRC]; | 87 | int drc_cfg[WM8994_NUM_DRC]; |
88 | struct soc_enum drc_enum; | 88 | struct soc_enum drc_enum; |
89 | 89 | ||
90 | /* Platform dependant ReTune mobile configuration */ | 90 | /* Platform dependent ReTune mobile configuration */ |
91 | int num_retune_mobile_texts; | 91 | int num_retune_mobile_texts; |
92 | const char **retune_mobile_texts; | 92 | const char **retune_mobile_texts; |
93 | int retune_mobile_cfg[WM8994_NUM_EQ]; | 93 | int retune_mobile_cfg[WM8994_NUM_EQ]; |
94 | struct soc_enum retune_mobile_enum; | 94 | struct soc_enum retune_mobile_enum; |
95 | 95 | ||
96 | /* Platform dependant MBC configuration */ | 96 | /* Platform dependent MBC configuration */ |
97 | int mbc_cfg; | 97 | int mbc_cfg; |
98 | const char **mbc_texts; | 98 | const char **mbc_texts; |
99 | struct soc_enum mbc_enum; | 99 | struct soc_enum mbc_enum; |
diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c index 55cdf2982020..91c6b39de50c 100644 --- a/sound/soc/codecs/wm9081.c +++ b/sound/soc/codecs/wm9081.c | |||
@@ -305,7 +305,7 @@ static int speaker_mode_get(struct snd_kcontrol *kcontrol, | |||
305 | /* | 305 | /* |
306 | * Stop any attempts to change speaker mode while the speaker is enabled. | 306 | * Stop any attempts to change speaker mode while the speaker is enabled. |
307 | * | 307 | * |
308 | * We also have some special anti-pop controls dependant on speaker | 308 | * We also have some special anti-pop controls dependent on speaker |
309 | * mode which must be changed along with the mode. | 309 | * mode which must be changed along with the mode. |
310 | */ | 310 | */ |
311 | static int speaker_mode_put(struct snd_kcontrol *kcontrol, | 311 | static int speaker_mode_put(struct snd_kcontrol *kcontrol, |
@@ -456,7 +456,7 @@ static int fll_factors(struct _fll_div *fll_div, unsigned int Fref, | |||
456 | 456 | ||
457 | pr_debug("Fvco=%dHz\n", target); | 457 | pr_debug("Fvco=%dHz\n", target); |
458 | 458 | ||
459 | /* Find an appropraite FLL_FRATIO and factor it out of the target */ | 459 | /* Find an appropriate FLL_FRATIO and factor it out of the target */ |
460 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { | 460 | for (i = 0; i < ARRAY_SIZE(fll_fratios); i++) { |
461 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { | 461 | if (fll_fratios[i].min <= Fref && Fref <= fll_fratios[i].max) { |
462 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; | 462 | fll_div->fll_fratio = fll_fratios[i].fll_fratio; |
diff --git a/sound/soc/imx/imx-pcm-dma-mx2.c b/sound/soc/imx/imx-pcm-dma-mx2.c index 671ef8dd524c..aab7765f401a 100644 --- a/sound/soc/imx/imx-pcm-dma-mx2.c +++ b/sound/soc/imx/imx-pcm-dma-mx2.c | |||
@@ -110,12 +110,12 @@ static int imx_ssi_dma_alloc(struct snd_pcm_substream *substream, | |||
110 | slave_config.direction = DMA_TO_DEVICE; | 110 | slave_config.direction = DMA_TO_DEVICE; |
111 | slave_config.dst_addr = dma_params->dma_addr; | 111 | slave_config.dst_addr = dma_params->dma_addr; |
112 | slave_config.dst_addr_width = buswidth; | 112 | slave_config.dst_addr_width = buswidth; |
113 | slave_config.dst_maxburst = dma_params->burstsize; | 113 | slave_config.dst_maxburst = dma_params->burstsize * buswidth; |
114 | } else { | 114 | } else { |
115 | slave_config.direction = DMA_FROM_DEVICE; | 115 | slave_config.direction = DMA_FROM_DEVICE; |
116 | slave_config.src_addr = dma_params->dma_addr; | 116 | slave_config.src_addr = dma_params->dma_addr; |
117 | slave_config.src_addr_width = buswidth; | 117 | slave_config.src_addr_width = buswidth; |
118 | slave_config.src_maxburst = dma_params->burstsize; | 118 | slave_config.src_maxburst = dma_params->burstsize * buswidth; |
119 | } | 119 | } |
120 | 120 | ||
121 | ret = dmaengine_slave_config(iprtd->dma_chan, &slave_config); | 121 | ret = dmaengine_slave_config(iprtd->dma_chan, &slave_config); |
@@ -303,6 +303,11 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = { | |||
303 | 303 | ||
304 | static int __devinit imx_soc_platform_probe(struct platform_device *pdev) | 304 | static int __devinit imx_soc_platform_probe(struct platform_device *pdev) |
305 | { | 305 | { |
306 | struct imx_ssi *ssi = platform_get_drvdata(pdev); | ||
307 | |||
308 | ssi->dma_params_tx.burstsize = 6; | ||
309 | ssi->dma_params_rx.burstsize = 4; | ||
310 | |||
306 | return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2); | 311 | return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2); |
307 | } | 312 | } |
308 | 313 | ||
diff --git a/sound/soc/imx/imx-ssi.c b/sound/soc/imx/imx-ssi.c index bc92ec620004..ac2ded969253 100644 --- a/sound/soc/imx/imx-ssi.c +++ b/sound/soc/imx/imx-ssi.c | |||
@@ -16,7 +16,7 @@ | |||
16 | * sane processor vendors have a FIFO per AC97 slot, the i.MX has only | 16 | * sane processor vendors have a FIFO per AC97 slot, the i.MX has only |
17 | * one FIFO which combines all valid receive slots. We cannot even select | 17 | * one FIFO which combines all valid receive slots. We cannot even select |
18 | * which slots we want to receive. The WM9712 with which this driver | 18 | * which slots we want to receive. The WM9712 with which this driver |
19 | * was developped with always sends GPIO status data in slot 12 which | 19 | * was developed with always sends GPIO status data in slot 12 which |
20 | * we receive in our (PCM-) data stream. The only chance we have is to | 20 | * we receive in our (PCM-) data stream. The only chance we have is to |
21 | * manually skip this data in the FIQ handler. With sampling rates different | 21 | * manually skip this data in the FIQ handler. With sampling rates different |
22 | * from 48000Hz not every frame has valid receive data, so the ratio | 22 | * from 48000Hz not every frame has valid receive data, so the ratio |
diff --git a/sound/soc/imx/imx-ssi.h b/sound/soc/imx/imx-ssi.h index a4406a134892..dc8a87530e3e 100644 --- a/sound/soc/imx/imx-ssi.h +++ b/sound/soc/imx/imx-ssi.h | |||
@@ -234,7 +234,4 @@ void imx_pcm_free(struct snd_pcm *pcm); | |||
234 | */ | 234 | */ |
235 | #define IMX_SSI_DMABUF_SIZE (64 * 1024) | 235 | #define IMX_SSI_DMABUF_SIZE (64 * 1024) |
236 | 236 | ||
237 | #define DMA_RXFIFO_BURST 0x4 | ||
238 | #define DMA_TXFIFO_BURST 0x6 | ||
239 | |||
240 | #endif /* _IMX_SSI_H */ | 237 | #endif /* _IMX_SSI_H */ |
diff --git a/sound/soc/kirkwood/kirkwood-dma.c b/sound/soc/kirkwood/kirkwood-dma.c index 0fd6a630db01..e13c6ce46328 100644 --- a/sound/soc/kirkwood/kirkwood-dma.c +++ b/sound/soc/kirkwood/kirkwood-dma.c | |||
@@ -132,7 +132,7 @@ static int kirkwood_dma_open(struct snd_pcm_substream *substream) | |||
132 | priv = snd_soc_dai_get_dma_data(cpu_dai, substream); | 132 | priv = snd_soc_dai_get_dma_data(cpu_dai, substream); |
133 | snd_soc_set_runtime_hwparams(substream, &kirkwood_dma_snd_hw); | 133 | snd_soc_set_runtime_hwparams(substream, &kirkwood_dma_snd_hw); |
134 | 134 | ||
135 | /* Ensure that all constraints linked to dma burst are fullfilled */ | 135 | /* Ensure that all constraints linked to dma burst are fulfilled */ |
136 | err = snd_pcm_hw_constraint_minmax(runtime, | 136 | err = snd_pcm_hw_constraint_minmax(runtime, |
137 | SNDRV_PCM_HW_PARAM_BUFFER_BYTES, | 137 | SNDRV_PCM_HW_PARAM_BUFFER_BYTES, |
138 | priv->burst * 2, | 138 | priv->burst * 2, |
@@ -170,7 +170,7 @@ static int kirkwood_dma_open(struct snd_pcm_substream *substream) | |||
170 | 170 | ||
171 | /* | 171 | /* |
172 | * Enable Error interrupts. We're only ack'ing them but | 172 | * Enable Error interrupts. We're only ack'ing them but |
173 | * it's usefull for diagnostics | 173 | * it's useful for diagnostics |
174 | */ | 174 | */ |
175 | writel((unsigned long)-1, priv->io + KIRKWOOD_ERR_MASK); | 175 | writel((unsigned long)-1, priv->io + KIRKWOOD_ERR_MASK); |
176 | } | 176 | } |
diff --git a/sound/soc/mid-x86/sst_platform.c b/sound/soc/mid-x86/sst_platform.c index ee2c22475a76..b2e9198a983a 100644 --- a/sound/soc/mid-x86/sst_platform.c +++ b/sound/soc/mid-x86/sst_platform.c | |||
@@ -440,7 +440,7 @@ static int sst_platform_remove(struct platform_device *pdev) | |||
440 | 440 | ||
441 | snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(sst_platform_dai)); | 441 | snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(sst_platform_dai)); |
442 | snd_soc_unregister_platform(&pdev->dev); | 442 | snd_soc_unregister_platform(&pdev->dev); |
443 | pr_debug("sst_platform_remove sucess\n"); | 443 | pr_debug("sst_platform_remove success\n"); |
444 | return 0; | 444 | return 0; |
445 | } | 445 | } |
446 | 446 | ||
@@ -463,7 +463,7 @@ module_init(sst_soc_platform_init); | |||
463 | static void __exit sst_soc_platform_exit(void) | 463 | static void __exit sst_soc_platform_exit(void) |
464 | { | 464 | { |
465 | platform_driver_unregister(&sst_platform_driver); | 465 | platform_driver_unregister(&sst_platform_driver); |
466 | pr_debug("sst_soc_platform_exit sucess\n"); | 466 | pr_debug("sst_soc_platform_exit success\n"); |
467 | } | 467 | } |
468 | module_exit(sst_soc_platform_exit); | 468 | module_exit(sst_soc_platform_exit); |
469 | 469 | ||
diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c index 3167be689621..462cbcbea74a 100644 --- a/sound/soc/omap/ams-delta.c +++ b/sound/soc/omap/ams-delta.c | |||
@@ -248,7 +248,7 @@ static struct snd_soc_jack_pin ams_delta_hook_switch_pins[] = { | |||
248 | */ | 248 | */ |
249 | 249 | ||
250 | /* To actually apply any modem controlled configuration changes to the codec, | 250 | /* To actually apply any modem controlled configuration changes to the codec, |
251 | * we must connect codec DAI pins to the modem for a moment. Be carefull not | 251 | * we must connect codec DAI pins to the modem for a moment. Be careful not |
252 | * to interfere with our digital mute function that shares the same hardware. */ | 252 | * to interfere with our digital mute function that shares the same hardware. */ |
253 | static struct timer_list cx81801_timer; | 253 | static struct timer_list cx81801_timer; |
254 | static bool cx81801_cmd_pending; | 254 | static bool cx81801_cmd_pending; |
@@ -402,9 +402,9 @@ static struct tty_ldisc_ops cx81801_ops = { | |||
402 | 402 | ||
403 | 403 | ||
404 | /* | 404 | /* |
405 | * Even if not very usefull, the sound card can still work without any of the | 405 | * Even if not very useful, the sound card can still work without any of the |
406 | * above functonality activated. You can still control its audio input/output | 406 | * above functonality activated. You can still control its audio input/output |
407 | * constellation and speakerphone gain from userspace by issueing AT commands | 407 | * constellation and speakerphone gain from userspace by issuing AT commands |
408 | * over the modem port. | 408 | * over the modem port. |
409 | */ | 409 | */ |
410 | 410 | ||
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c index 784cff5f67e8..9027da466cae 100644 --- a/sound/soc/pxa/corgi.c +++ b/sound/soc/pxa/corgi.c | |||
@@ -310,7 +310,7 @@ static struct snd_soc_dai_link corgi_dai = { | |||
310 | .cpu_dai_name = "pxa2xx-i2s", | 310 | .cpu_dai_name = "pxa2xx-i2s", |
311 | .codec_dai_name = "wm8731-hifi", | 311 | .codec_dai_name = "wm8731-hifi", |
312 | .platform_name = "pxa-pcm-audio", | 312 | .platform_name = "pxa-pcm-audio", |
313 | .codec_name = "wm8731-codec-0.001b", | 313 | .codec_name = "wm8731-codec.0-001b", |
314 | .init = corgi_wm8731_init, | 314 | .init = corgi_wm8731_init, |
315 | .ops = &corgi_ops, | 315 | .ops = &corgi_ops, |
316 | }; | 316 | }; |
diff --git a/sound/soc/pxa/pxa2xx-pcm.c b/sound/soc/pxa/pxa2xx-pcm.c index 02fb66416ddc..2ce0b2d891d5 100644 --- a/sound/soc/pxa/pxa2xx-pcm.c +++ b/sound/soc/pxa/pxa2xx-pcm.c | |||
@@ -65,6 +65,7 @@ static int pxa2xx_pcm_hw_free(struct snd_pcm_substream *substream) | |||
65 | if (prtd->dma_ch >= 0) { | 65 | if (prtd->dma_ch >= 0) { |
66 | pxa_free_dma(prtd->dma_ch); | 66 | pxa_free_dma(prtd->dma_ch); |
67 | prtd->dma_ch = -1; | 67 | prtd->dma_ch = -1; |
68 | prtd->params = NULL; | ||
68 | } | 69 | } |
69 | 70 | ||
70 | return 0; | 71 | return 0; |
diff --git a/sound/soc/pxa/zylonite.c b/sound/soc/pxa/zylonite.c index ac577263b3e3..b6445757fc54 100644 --- a/sound/soc/pxa/zylonite.c +++ b/sound/soc/pxa/zylonite.c | |||
@@ -167,7 +167,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { | |||
167 | .codec_name = "wm9713-codec", | 167 | .codec_name = "wm9713-codec", |
168 | .platform_name = "pxa-pcm-audio", | 168 | .platform_name = "pxa-pcm-audio", |
169 | .cpu_dai_name = "pxa2xx-ac97", | 169 | .cpu_dai_name = "pxa2xx-ac97", |
170 | .codec_name = "wm9713-hifi", | 170 | .codec_dai_name = "wm9713-hifi", |
171 | .init = zylonite_wm9713_init, | 171 | .init = zylonite_wm9713_init, |
172 | }, | 172 | }, |
173 | { | 173 | { |
@@ -176,7 +176,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { | |||
176 | .codec_name = "wm9713-codec", | 176 | .codec_name = "wm9713-codec", |
177 | .platform_name = "pxa-pcm-audio", | 177 | .platform_name = "pxa-pcm-audio", |
178 | .cpu_dai_name = "pxa2xx-ac97-aux", | 178 | .cpu_dai_name = "pxa2xx-ac97-aux", |
179 | .codec_name = "wm9713-aux", | 179 | .codec_dai_name = "wm9713-aux", |
180 | }, | 180 | }, |
181 | { | 181 | { |
182 | .name = "WM9713 Voice", | 182 | .name = "WM9713 Voice", |
@@ -184,7 +184,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { | |||
184 | .codec_name = "wm9713-codec", | 184 | .codec_name = "wm9713-codec", |
185 | .platform_name = "pxa-pcm-audio", | 185 | .platform_name = "pxa-pcm-audio", |
186 | .cpu_dai_name = "pxa-ssp-dai.2", | 186 | .cpu_dai_name = "pxa-ssp-dai.2", |
187 | .codec_name = "wm9713-voice", | 187 | .codec_dai_name = "wm9713-voice", |
188 | .ops = &zylonite_voice_ops, | 188 | .ops = &zylonite_voice_ops, |
189 | }, | 189 | }, |
190 | }; | 190 | }; |
diff --git a/sound/soc/samsung/neo1973_wm8753.c b/sound/soc/samsung/neo1973_wm8753.c index 78bfdb3f5d7e..452230975632 100644 --- a/sound/soc/samsung/neo1973_wm8753.c +++ b/sound/soc/samsung/neo1973_wm8753.c | |||
@@ -228,7 +228,7 @@ static const struct snd_kcontrol_new neo1973_wm8753_controls[] = { | |||
228 | SOC_DAPM_PIN_SWITCH("Handset Mic"), | 228 | SOC_DAPM_PIN_SWITCH("Handset Mic"), |
229 | }; | 229 | }; |
230 | 230 | ||
231 | /* GTA02 specific routes and controlls */ | 231 | /* GTA02 specific routes and controls */ |
232 | 232 | ||
233 | #ifdef CONFIG_MACH_NEO1973_GTA02 | 233 | #ifdef CONFIG_MACH_NEO1973_GTA02 |
234 | 234 | ||
@@ -372,7 +372,7 @@ static int neo1973_wm8753_init(struct snd_soc_pcm_runtime *rtd) | |||
372 | return 0; | 372 | return 0; |
373 | } | 373 | } |
374 | 374 | ||
375 | /* GTA01 specific controlls */ | 375 | /* GTA01 specific controls */ |
376 | 376 | ||
377 | #ifdef CONFIG_MACH_NEO1973_GTA01 | 377 | #ifdef CONFIG_MACH_NEO1973_GTA01 |
378 | 378 | ||
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 4dda58926bc5..b76b74db0968 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -92,8 +92,8 @@ static int min_bytes_needed(unsigned long val) | |||
92 | static int format_register_str(struct snd_soc_codec *codec, | 92 | static int format_register_str(struct snd_soc_codec *codec, |
93 | unsigned int reg, char *buf, size_t len) | 93 | unsigned int reg, char *buf, size_t len) |
94 | { | 94 | { |
95 | int wordsize = codec->driver->reg_word_size * 2; | 95 | int wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; |
96 | int regsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; | 96 | int regsize = codec->driver->reg_word_size * 2; |
97 | int ret; | 97 | int ret; |
98 | char tmpbuf[len + 1]; | 98 | char tmpbuf[len + 1]; |
99 | char regbuf[regsize + 1]; | 99 | char regbuf[regsize + 1]; |
@@ -132,8 +132,8 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf, | |||
132 | size_t total = 0; | 132 | size_t total = 0; |
133 | loff_t p = 0; | 133 | loff_t p = 0; |
134 | 134 | ||
135 | wordsize = codec->driver->reg_word_size * 2; | 135 | wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; |
136 | regsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; | 136 | regsize = codec->driver->reg_word_size * 2; |
137 | 137 | ||
138 | len = wordsize + regsize + 2 + 1; | 138 | len = wordsize + regsize + 2 + 1; |
139 | 139 | ||
diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c index fcab80b36a37..fc017c0a7b5d 100644 --- a/sound/soc/soc-jack.c +++ b/sound/soc/soc-jack.c | |||
@@ -331,7 +331,7 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count, | |||
331 | goto err; | 331 | goto err; |
332 | 332 | ||
333 | if (gpios[i].wake) { | 333 | if (gpios[i].wake) { |
334 | ret = set_irq_wake(gpio_to_irq(gpios[i].gpio), 1); | 334 | ret = irq_set_irq_wake(gpio_to_irq(gpios[i].gpio), 1); |
335 | if (ret != 0) | 335 | if (ret != 0) |
336 | printk(KERN_ERR | 336 | printk(KERN_ERR |
337 | "Failed to mark GPIO %d as wake source: %d\n", | 337 | "Failed to mark GPIO %d as wake source: %d\n", |
diff --git a/sound/usb/6fire/firmware.c b/sound/usb/6fire/firmware.c index 9081a54a9c6c..86c1a3103760 100644 --- a/sound/usb/6fire/firmware.c +++ b/sound/usb/6fire/firmware.c | |||
@@ -76,7 +76,7 @@ struct ihex_record { | |||
76 | u16 address; | 76 | u16 address; |
77 | u8 len; | 77 | u8 len; |
78 | u8 data[256]; | 78 | u8 data[256]; |
79 | char error; /* true if an error occured parsing this record */ | 79 | char error; /* true if an error occurred parsing this record */ |
80 | 80 | ||
81 | u8 max_len; /* maximum record length in whole ihex */ | 81 | u8 max_len; /* maximum record length in whole ihex */ |
82 | 82 | ||
@@ -107,7 +107,7 @@ static u8 usb6fire_fw_ihex_hex(const u8 *data, u8 *crc) | |||
107 | 107 | ||
108 | /* | 108 | /* |
109 | * returns true if record is available, false otherwise. | 109 | * returns true if record is available, false otherwise. |
110 | * iff an error occured, false will be returned and record->error will be true. | 110 | * iff an error occurred, false will be returned and record->error will be true. |
111 | */ | 111 | */ |
112 | static bool usb6fire_fw_ihex_next_record(struct ihex_record *record) | 112 | static bool usb6fire_fw_ihex_next_record(struct ihex_record *record) |
113 | { | 113 | { |
diff --git a/sound/usb/midi.c b/sound/usb/midi.c index b4b39c0b6c9e..f9289102886a 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c | |||
@@ -1301,6 +1301,7 @@ static int snd_usbmidi_out_endpoint_create(struct snd_usb_midi* umidi, | |||
1301 | case USB_ID(0x15ca, 0x0101): /* Textech USB Midi Cable */ | 1301 | case USB_ID(0x15ca, 0x0101): /* Textech USB Midi Cable */ |
1302 | case USB_ID(0x15ca, 0x1806): /* Textech USB Midi Cable */ | 1302 | case USB_ID(0x15ca, 0x1806): /* Textech USB Midi Cable */ |
1303 | case USB_ID(0x1a86, 0x752d): /* QinHeng CH345 "USB2.0-MIDI" */ | 1303 | case USB_ID(0x1a86, 0x752d): /* QinHeng CH345 "USB2.0-MIDI" */ |
1304 | case USB_ID(0xfc08, 0x0101): /* Unknown vendor Cable */ | ||
1304 | ep->max_transfer = 4; | 1305 | ep->max_transfer = 4; |
1305 | break; | 1306 | break; |
1306 | /* | 1307 | /* |
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 5e4775716607..6ec33b62e6cf 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c | |||
@@ -1182,7 +1182,7 @@ static void build_feature_ctl(struct mixer_build *state, void *raw_desc, | |||
1182 | /* | 1182 | /* |
1183 | * parse a feature unit | 1183 | * parse a feature unit |
1184 | * | 1184 | * |
1185 | * most of controlls are defined here. | 1185 | * most of controls are defined here. |
1186 | */ | 1186 | */ |
1187 | static int parse_audio_feature_unit(struct mixer_build *state, int unitid, void *_ftr) | 1187 | static int parse_audio_feature_unit(struct mixer_build *state, int unitid, void *_ftr) |
1188 | { | 1188 | { |
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 355759bad581..ec07e62e53f3 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c | |||
@@ -266,7 +266,7 @@ static int create_uaxx_quirk(struct snd_usb_audio *chip, | |||
266 | * audio-interface quirks | 266 | * audio-interface quirks |
267 | * | 267 | * |
268 | * returns zero if no standard audio/MIDI parsing is needed. | 268 | * returns zero if no standard audio/MIDI parsing is needed. |
269 | * returns a postive value if standard audio/midi interfaces are parsed | 269 | * returns a positive value if standard audio/midi interfaces are parsed |
270 | * after this. | 270 | * after this. |
271 | * returns a negative value at error. | 271 | * returns a negative value at error. |
272 | */ | 272 | */ |
diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c index 287ef73b1237..a51340f6f2db 100644 --- a/sound/usb/usx2y/usx2yhwdeppcm.c +++ b/sound/usb/usx2y/usx2yhwdeppcm.c | |||
@@ -20,7 +20,7 @@ | |||
20 | at standard samplerates, | 20 | at standard samplerates, |
21 | what led to this part of the usx2y module: | 21 | what led to this part of the usx2y module: |
22 | It provides the alsa kernel half of the usx2y-alsa-jack driver pair. | 22 | It provides the alsa kernel half of the usx2y-alsa-jack driver pair. |
23 | The pair uses a hardware dependant alsa-device for mmaped pcm transport. | 23 | The pair uses a hardware dependent alsa-device for mmaped pcm transport. |
24 | Advantage achieved: | 24 | Advantage achieved: |
25 | The usb_hc moves pcm data from/into memory via DMA. | 25 | The usb_hc moves pcm data from/into memory via DMA. |
26 | That memory is mmaped by jack's usx2y driver. | 26 | That memory is mmaped by jack's usx2y driver. |
@@ -38,7 +38,7 @@ | |||
38 | 2periods works but is useless cause of crackling). | 38 | 2periods works but is useless cause of crackling). |
39 | 39 | ||
40 | This is a first "proof of concept" implementation. | 40 | This is a first "proof of concept" implementation. |
41 | Later, functionalities should migrate to more apropriate places: | 41 | Later, functionalities should migrate to more appropriate places: |
42 | Userland: | 42 | Userland: |
43 | - The jackd could mmap its float-pcm buffers directly from alsa-lib. | 43 | - The jackd could mmap its float-pcm buffers directly from alsa-lib. |
44 | - alsa-lib could provide power of 2 period sized shaping combined with int/float | 44 | - alsa-lib could provide power of 2 period sized shaping combined with int/float |