diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/asihpi/hpi6000.c | 2 | ||||
-rw-r--r-- | sound/pci/asihpi/hpi6205.c | 2 | ||||
-rw-r--r-- | sound/pci/asihpi/hpicmn.c | 12 | ||||
-rw-r--r-- | sound/pci/asihpi/hpioctl.c | 2 | ||||
-rw-r--r-- | sound/pci/azt3328.c | 26 | ||||
-rw-r--r-- | sound/pci/cs46xx/dsp_spos.c | 33 | ||||
-rw-r--r-- | sound/pci/ctxfi/ctpcm.c | 16 | ||||
-rw-r--r-- | sound/pci/hda/hda_eld.c | 24 | ||||
-rw-r--r-- | sound/pci/hda/hda_intel.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_cirrus.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 37 | ||||
-rw-r--r-- | sound/pci/hda/patch_hdmi.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 110 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 20 | ||||
-rw-r--r-- | sound/pci/intel8x0.c | 6 | ||||
-rw-r--r-- | sound/pci/lx6464es/lx6464es.c | 4 | ||||
-rw-r--r-- | sound/pci/lx6464es/lx6464es.h | 2 | ||||
-rw-r--r-- | sound/pci/lx6464es/lx_core.c | 2 | ||||
-rw-r--r-- | sound/pci/mixart/mixart_hwdep.h | 10 |
19 files changed, 211 insertions, 100 deletions
diff --git a/sound/pci/asihpi/hpi6000.c b/sound/pci/asihpi/hpi6000.c index f7e374ec4414..1b9bf9395cfe 100644 --- a/sound/pci/asihpi/hpi6000.c +++ b/sound/pci/asihpi/hpi6000.c | |||
@@ -625,6 +625,8 @@ static short create_adapter_obj(struct hpi_adapter_obj *pao, | |||
625 | control_cache_size, (struct hpi_control_cache_info *) | 625 | control_cache_size, (struct hpi_control_cache_info *) |
626 | &phw->control_cache[0] | 626 | &phw->control_cache[0] |
627 | ); | 627 | ); |
628 | if (!phw->p_cache) | ||
629 | pao->has_control_cache = 0; | ||
628 | } else | 630 | } else |
629 | pao->has_control_cache = 0; | 631 | pao->has_control_cache = 0; |
630 | 632 | ||
diff --git a/sound/pci/asihpi/hpi6205.c b/sound/pci/asihpi/hpi6205.c index 22c5fc625533..2672f6591ceb 100644 --- a/sound/pci/asihpi/hpi6205.c +++ b/sound/pci/asihpi/hpi6205.c | |||
@@ -644,6 +644,8 @@ static u16 create_adapter_obj(struct hpi_adapter_obj *pao, | |||
644 | interface->control_cache.size_in_bytes, | 644 | interface->control_cache.size_in_bytes, |
645 | (struct hpi_control_cache_info *) | 645 | (struct hpi_control_cache_info *) |
646 | p_control_cache_virtual); | 646 | p_control_cache_virtual); |
647 | if (!phw->p_cache) | ||
648 | err = HPI_ERROR_MEMORY_ALLOC; | ||
647 | } | 649 | } |
648 | if (!err) { | 650 | if (!err) { |
649 | err = hpios_locked_mem_get_phys_addr(&phw-> | 651 | err = hpios_locked_mem_get_phys_addr(&phw-> |
diff --git a/sound/pci/asihpi/hpicmn.c b/sound/pci/asihpi/hpicmn.c index dda4f1c6f658..d67f4d3db911 100644 --- a/sound/pci/asihpi/hpicmn.c +++ b/sound/pci/asihpi/hpicmn.c | |||
@@ -571,14 +571,20 @@ struct hpi_control_cache *hpi_alloc_control_cache(const u32 | |||
571 | { | 571 | { |
572 | struct hpi_control_cache *p_cache = | 572 | struct hpi_control_cache *p_cache = |
573 | kmalloc(sizeof(*p_cache), GFP_KERNEL); | 573 | kmalloc(sizeof(*p_cache), GFP_KERNEL); |
574 | if (!p_cache) | ||
575 | return NULL; | ||
576 | p_cache->p_info = | ||
577 | kmalloc(sizeof(*p_cache->p_info) * number_of_controls, | ||
578 | GFP_KERNEL); | ||
579 | if (!p_cache->p_info) { | ||
580 | kfree(p_cache); | ||
581 | return NULL; | ||
582 | } | ||
574 | p_cache->cache_size_in_bytes = size_in_bytes; | 583 | p_cache->cache_size_in_bytes = size_in_bytes; |
575 | p_cache->control_count = number_of_controls; | 584 | p_cache->control_count = number_of_controls; |
576 | p_cache->p_cache = | 585 | p_cache->p_cache = |
577 | (struct hpi_control_cache_single *)pDSP_control_buffer; | 586 | (struct hpi_control_cache_single *)pDSP_control_buffer; |
578 | p_cache->init = 0; | 587 | p_cache->init = 0; |
579 | p_cache->p_info = | ||
580 | kmalloc(sizeof(*p_cache->p_info) * p_cache->control_count, | ||
581 | GFP_KERNEL); | ||
582 | return p_cache; | 588 | return p_cache; |
583 | } | 589 | } |
584 | 590 | ||
diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c index 62895a719fcb..22dbd91811a4 100644 --- a/sound/pci/asihpi/hpioctl.c +++ b/sound/pci/asihpi/hpioctl.c | |||
@@ -435,7 +435,7 @@ void __devexit asihpi_adapter_remove(struct pci_dev *pci_dev) | |||
435 | struct hpi_message hm; | 435 | struct hpi_message hm; |
436 | struct hpi_response hr; | 436 | struct hpi_response hr; |
437 | struct hpi_adapter *pa; | 437 | struct hpi_adapter *pa; |
438 | pa = (struct hpi_adapter *)pci_get_drvdata(pci_dev); | 438 | pa = pci_get_drvdata(pci_dev); |
439 | 439 | ||
440 | hpi_init_message_response(&hm, &hr, HPI_OBJ_SUBSYSTEM, | 440 | hpi_init_message_response(&hm, &hr, HPI_OBJ_SUBSYSTEM, |
441 | HPI_SUBSYS_DELETE_ADAPTER); | 441 | HPI_SUBSYS_DELETE_ADAPTER); |
diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c index 4679ed83a43b..2f3cacbd5528 100644 --- a/sound/pci/azt3328.c +++ b/sound/pci/azt3328.c | |||
@@ -1129,10 +1129,11 @@ snd_azf3328_codec_setdmaa(struct snd_azf3328 *chip, | |||
1129 | 1129 | ||
1130 | count_areas = size/2; | 1130 | count_areas = size/2; |
1131 | addr_area2 = addr+count_areas; | 1131 | addr_area2 = addr+count_areas; |
1132 | count_areas--; /* max. index */ | ||
1133 | snd_azf3328_dbgcodec("setdma: buffers %08lx[%u] / %08lx[%u]\n", | 1132 | snd_azf3328_dbgcodec("setdma: buffers %08lx[%u] / %08lx[%u]\n", |
1134 | addr, count_areas, addr_area2, count_areas); | 1133 | addr, count_areas, addr_area2, count_areas); |
1135 | 1134 | ||
1135 | count_areas--; /* max. index */ | ||
1136 | |||
1136 | /* build combined I/O buffer length word */ | 1137 | /* build combined I/O buffer length word */ |
1137 | lengths = (count_areas << 16) | (count_areas); | 1138 | lengths = (count_areas << 16) | (count_areas); |
1138 | spin_lock_irqsave(&chip->reg_lock, flags); | 1139 | spin_lock_irqsave(&chip->reg_lock, flags); |
@@ -1740,11 +1741,15 @@ static const struct snd_pcm_hardware snd_azf3328_hardware = | |||
1740 | .rate_max = AZF_FREQ_66200, | 1741 | .rate_max = AZF_FREQ_66200, |
1741 | .channels_min = 1, | 1742 | .channels_min = 1, |
1742 | .channels_max = 2, | 1743 | .channels_max = 2, |
1743 | .buffer_bytes_max = 65536, | 1744 | .buffer_bytes_max = (64*1024), |
1744 | .period_bytes_min = 64, | 1745 | .period_bytes_min = 1024, |
1745 | .period_bytes_max = 65536, | 1746 | .period_bytes_max = (32*1024), |
1746 | .periods_min = 1, | 1747 | /* We simply have two DMA areas (instead of a list of descriptors |
1747 | .periods_max = 1024, | 1748 | such as other cards); I believe that this is a fixed hardware |
1749 | attribute and there isn't much driver magic to be done to expand it. | ||
1750 | Thus indicate that we have at least and at most 2 periods. */ | ||
1751 | .periods_min = 2, | ||
1752 | .periods_max = 2, | ||
1748 | /* FIXME: maybe that card actually has a FIFO? | 1753 | /* FIXME: maybe that card actually has a FIFO? |
1749 | * Hmm, it seems newer revisions do have one, but we still don't know | 1754 | * Hmm, it seems newer revisions do have one, but we still don't know |
1750 | * its size... */ | 1755 | * its size... */ |
@@ -1980,8 +1985,13 @@ snd_azf3328_timer_stop(struct snd_timer *timer) | |||
1980 | chip = snd_timer_chip(timer); | 1985 | chip = snd_timer_chip(timer); |
1981 | spin_lock_irqsave(&chip->reg_lock, flags); | 1986 | spin_lock_irqsave(&chip->reg_lock, flags); |
1982 | /* disable timer countdown and interrupt */ | 1987 | /* disable timer countdown and interrupt */ |
1983 | /* FIXME: should we write TIMER_IRQ_ACK here? */ | 1988 | /* Hmm, should we write TIMER_IRQ_ACK here? |
1984 | snd_azf3328_ctrl_outb(chip, IDX_IO_TIMER_VALUE + 3, 0); | 1989 | YES indeed, otherwise a rogue timer operation - which prompts |
1990 | ALSA(?) to call repeated stop() in vain, but NOT start() - | ||
1991 | will never end (value 0x03 is kept shown in control byte). | ||
1992 | Simply manually poking 0x04 _once_ immediately successfully stops | ||
1993 | the hardware/ALSA interrupt activity. */ | ||
1994 | snd_azf3328_ctrl_outb(chip, IDX_IO_TIMER_VALUE + 3, 0x04); | ||
1985 | spin_unlock_irqrestore(&chip->reg_lock, flags); | 1995 | spin_unlock_irqrestore(&chip->reg_lock, flags); |
1986 | snd_azf3328_dbgcallleave(); | 1996 | snd_azf3328_dbgcallleave(); |
1987 | return 0; | 1997 | return 0; |
diff --git a/sound/pci/cs46xx/dsp_spos.c b/sound/pci/cs46xx/dsp_spos.c index 3e5ca8fb519f..e377287192aa 100644 --- a/sound/pci/cs46xx/dsp_spos.c +++ b/sound/pci/cs46xx/dsp_spos.c | |||
@@ -225,39 +225,25 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip) | |||
225 | { | 225 | { |
226 | struct dsp_spos_instance * ins = kzalloc(sizeof(struct dsp_spos_instance), GFP_KERNEL); | 226 | struct dsp_spos_instance * ins = kzalloc(sizeof(struct dsp_spos_instance), GFP_KERNEL); |
227 | 227 | ||
228 | if (ins == NULL) | 228 | if (ins == NULL) |
229 | return NULL; | 229 | return NULL; |
230 | 230 | ||
231 | /* better to use vmalloc for this big table */ | 231 | /* better to use vmalloc for this big table */ |
232 | ins->symbol_table.nsymbols = 0; | ||
233 | ins->symbol_table.symbols = vmalloc(sizeof(struct dsp_symbol_entry) * | 232 | ins->symbol_table.symbols = vmalloc(sizeof(struct dsp_symbol_entry) * |
234 | DSP_MAX_SYMBOLS); | 233 | DSP_MAX_SYMBOLS); |
235 | ins->symbol_table.highest_frag_index = 0; | 234 | ins->code.data = kmalloc(DSP_CODE_BYTE_SIZE, GFP_KERNEL); |
236 | 235 | ins->modules = kmalloc(sizeof(struct dsp_module_desc) * DSP_MAX_MODULES, GFP_KERNEL); | |
237 | if (ins->symbol_table.symbols == NULL) { | 236 | if (!ins->symbol_table.symbols || !ins->code.data || !ins->modules) { |
238 | cs46xx_dsp_spos_destroy(chip); | 237 | cs46xx_dsp_spos_destroy(chip); |
239 | goto error; | 238 | goto error; |
240 | } | 239 | } |
241 | 240 | ins->symbol_table.nsymbols = 0; | |
241 | ins->symbol_table.highest_frag_index = 0; | ||
242 | ins->code.offset = 0; | 242 | ins->code.offset = 0; |
243 | ins->code.size = 0; | 243 | ins->code.size = 0; |
244 | ins->code.data = kmalloc(DSP_CODE_BYTE_SIZE, GFP_KERNEL); | ||
245 | |||
246 | if (ins->code.data == NULL) { | ||
247 | cs46xx_dsp_spos_destroy(chip); | ||
248 | goto error; | ||
249 | } | ||
250 | |||
251 | ins->nscb = 0; | 244 | ins->nscb = 0; |
252 | ins->ntask = 0; | 245 | ins->ntask = 0; |
253 | |||
254 | ins->nmodules = 0; | 246 | ins->nmodules = 0; |
255 | ins->modules = kmalloc(sizeof(struct dsp_module_desc) * DSP_MAX_MODULES, GFP_KERNEL); | ||
256 | |||
257 | if (ins->modules == NULL) { | ||
258 | cs46xx_dsp_spos_destroy(chip); | ||
259 | goto error; | ||
260 | } | ||
261 | 247 | ||
262 | /* default SPDIF input sample rate | 248 | /* default SPDIF input sample rate |
263 | to 48000 khz */ | 249 | to 48000 khz */ |
@@ -271,8 +257,8 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip) | |||
271 | 257 | ||
272 | /* set left and right validity bits and | 258 | /* set left and right validity bits and |
273 | default channel status */ | 259 | default channel status */ |
274 | ins->spdif_csuv_default = | 260 | ins->spdif_csuv_default = |
275 | ins->spdif_csuv_stream = | 261 | ins->spdif_csuv_stream = |
276 | /* byte 0 */ ((unsigned int)_wrap_all_bits( (SNDRV_PCM_DEFAULT_CON_SPDIF & 0xff)) << 24) | | 262 | /* byte 0 */ ((unsigned int)_wrap_all_bits( (SNDRV_PCM_DEFAULT_CON_SPDIF & 0xff)) << 24) | |
277 | /* byte 1 */ ((unsigned int)_wrap_all_bits( ((SNDRV_PCM_DEFAULT_CON_SPDIF >> 8) & 0xff)) << 16) | | 263 | /* byte 1 */ ((unsigned int)_wrap_all_bits( ((SNDRV_PCM_DEFAULT_CON_SPDIF >> 8) & 0xff)) << 16) | |
278 | /* byte 3 */ (unsigned int)_wrap_all_bits( (SNDRV_PCM_DEFAULT_CON_SPDIF >> 24) & 0xff) | | 264 | /* byte 3 */ (unsigned int)_wrap_all_bits( (SNDRV_PCM_DEFAULT_CON_SPDIF >> 24) & 0xff) | |
@@ -281,6 +267,9 @@ struct dsp_spos_instance *cs46xx_dsp_spos_create (struct snd_cs46xx * chip) | |||
281 | return ins; | 267 | return ins; |
282 | 268 | ||
283 | error: | 269 | error: |
270 | kfree(ins->modules); | ||
271 | kfree(ins->code.data); | ||
272 | vfree(ins->symbol_table.symbols); | ||
284 | kfree(ins); | 273 | kfree(ins); |
285 | return NULL; | 274 | return NULL; |
286 | } | 275 | } |
diff --git a/sound/pci/ctxfi/ctpcm.c b/sound/pci/ctxfi/ctpcm.c index 85ab43e89212..457d21189b0d 100644 --- a/sound/pci/ctxfi/ctpcm.c +++ b/sound/pci/ctxfi/ctpcm.c | |||
@@ -129,8 +129,6 @@ static int ct_pcm_playback_open(struct snd_pcm_substream *substream) | |||
129 | 129 | ||
130 | apcm->substream = substream; | 130 | apcm->substream = substream; |
131 | apcm->interrupt = ct_atc_pcm_interrupt; | 131 | apcm->interrupt = ct_atc_pcm_interrupt; |
132 | runtime->private_data = apcm; | ||
133 | runtime->private_free = ct_atc_pcm_free_substream; | ||
134 | if (IEC958 == substream->pcm->device) { | 132 | if (IEC958 == substream->pcm->device) { |
135 | runtime->hw = ct_spdif_passthru_playback_hw; | 133 | runtime->hw = ct_spdif_passthru_playback_hw; |
136 | atc->spdif_out_passthru(atc, 1); | 134 | atc->spdif_out_passthru(atc, 1); |
@@ -155,8 +153,12 @@ static int ct_pcm_playback_open(struct snd_pcm_substream *substream) | |||
155 | } | 153 | } |
156 | 154 | ||
157 | apcm->timer = ct_timer_instance_new(atc->timer, apcm); | 155 | apcm->timer = ct_timer_instance_new(atc->timer, apcm); |
158 | if (!apcm->timer) | 156 | if (!apcm->timer) { |
157 | kfree(apcm); | ||
159 | return -ENOMEM; | 158 | return -ENOMEM; |
159 | } | ||
160 | runtime->private_data = apcm; | ||
161 | runtime->private_free = ct_atc_pcm_free_substream; | ||
160 | 162 | ||
161 | return 0; | 163 | return 0; |
162 | } | 164 | } |
@@ -278,8 +280,6 @@ static int ct_pcm_capture_open(struct snd_pcm_substream *substream) | |||
278 | apcm->started = 0; | 280 | apcm->started = 0; |
279 | apcm->substream = substream; | 281 | apcm->substream = substream; |
280 | apcm->interrupt = ct_atc_pcm_interrupt; | 282 | apcm->interrupt = ct_atc_pcm_interrupt; |
281 | runtime->private_data = apcm; | ||
282 | runtime->private_free = ct_atc_pcm_free_substream; | ||
283 | runtime->hw = ct_pcm_capture_hw; | 283 | runtime->hw = ct_pcm_capture_hw; |
284 | runtime->hw.rate_max = atc->rsr * atc->msr; | 284 | runtime->hw.rate_max = atc->rsr * atc->msr; |
285 | 285 | ||
@@ -298,8 +298,12 @@ static int ct_pcm_capture_open(struct snd_pcm_substream *substream) | |||
298 | } | 298 | } |
299 | 299 | ||
300 | apcm->timer = ct_timer_instance_new(atc->timer, apcm); | 300 | apcm->timer = ct_timer_instance_new(atc->timer, apcm); |
301 | if (!apcm->timer) | 301 | if (!apcm->timer) { |
302 | kfree(apcm); | ||
302 | return -ENOMEM; | 303 | return -ENOMEM; |
304 | } | ||
305 | runtime->private_data = apcm; | ||
306 | runtime->private_free = ct_atc_pcm_free_substream; | ||
303 | 307 | ||
304 | return 0; | 308 | return 0; |
305 | } | 309 | } |
diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c index cb0c23a6b473..4a663471dadc 100644 --- a/sound/pci/hda/hda_eld.c +++ b/sound/pci/hda/hda_eld.c | |||
@@ -189,6 +189,9 @@ static void hdmi_update_short_audio_desc(struct cea_sad *a, | |||
189 | a->channels = GRAB_BITS(buf, 0, 0, 3); | 189 | a->channels = GRAB_BITS(buf, 0, 0, 3); |
190 | a->channels++; | 190 | a->channels++; |
191 | 191 | ||
192 | a->sample_bits = 0; | ||
193 | a->max_bitrate = 0; | ||
194 | |||
192 | a->format = GRAB_BITS(buf, 0, 3, 4); | 195 | a->format = GRAB_BITS(buf, 0, 3, 4); |
193 | switch (a->format) { | 196 | switch (a->format) { |
194 | case AUDIO_CODING_TYPE_REF_STREAM_HEADER: | 197 | case AUDIO_CODING_TYPE_REF_STREAM_HEADER: |
@@ -198,7 +201,6 @@ static void hdmi_update_short_audio_desc(struct cea_sad *a, | |||
198 | 201 | ||
199 | case AUDIO_CODING_TYPE_LPCM: | 202 | case AUDIO_CODING_TYPE_LPCM: |
200 | val = GRAB_BITS(buf, 2, 0, 3); | 203 | val = GRAB_BITS(buf, 2, 0, 3); |
201 | a->sample_bits = 0; | ||
202 | for (i = 0; i < 3; i++) | 204 | for (i = 0; i < 3; i++) |
203 | if (val & (1 << i)) | 205 | if (val & (1 << i)) |
204 | a->sample_bits |= cea_sample_sizes[i + 1]; | 206 | a->sample_bits |= cea_sample_sizes[i + 1]; |
@@ -598,24 +600,19 @@ void hdmi_eld_update_pcm_info(struct hdmi_eld *eld, struct hda_pcm_stream *pcm, | |||
598 | { | 600 | { |
599 | int i; | 601 | int i; |
600 | 602 | ||
601 | pcm->rates = 0; | 603 | /* assume basic audio support (the basic audio flag is not in ELD; |
602 | pcm->formats = 0; | 604 | * however, all audio capable sinks are required to support basic |
603 | pcm->maxbps = 0; | 605 | * audio) */ |
604 | pcm->channels_min = -1; | 606 | pcm->rates = SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000; |
605 | pcm->channels_max = 0; | 607 | pcm->formats = SNDRV_PCM_FMTBIT_S16_LE; |
608 | pcm->maxbps = 16; | ||
609 | pcm->channels_max = 2; | ||
606 | for (i = 0; i < eld->sad_count; i++) { | 610 | for (i = 0; i < eld->sad_count; i++) { |
607 | struct cea_sad *a = &eld->sad[i]; | 611 | struct cea_sad *a = &eld->sad[i]; |
608 | pcm->rates |= a->rates; | 612 | pcm->rates |= a->rates; |
609 | if (a->channels < pcm->channels_min) | ||
610 | pcm->channels_min = a->channels; | ||
611 | if (a->channels > pcm->channels_max) | 613 | if (a->channels > pcm->channels_max) |
612 | pcm->channels_max = a->channels; | 614 | pcm->channels_max = a->channels; |
613 | if (a->format == AUDIO_CODING_TYPE_LPCM) { | 615 | if (a->format == AUDIO_CODING_TYPE_LPCM) { |
614 | if (a->sample_bits & AC_SUPPCM_BITS_16) { | ||
615 | pcm->formats |= SNDRV_PCM_FMTBIT_S16_LE; | ||
616 | if (pcm->maxbps < 16) | ||
617 | pcm->maxbps = 16; | ||
618 | } | ||
619 | if (a->sample_bits & AC_SUPPCM_BITS_20) { | 616 | if (a->sample_bits & AC_SUPPCM_BITS_20) { |
620 | pcm->formats |= SNDRV_PCM_FMTBIT_S32_LE; | 617 | pcm->formats |= SNDRV_PCM_FMTBIT_S32_LE; |
621 | if (pcm->maxbps < 20) | 618 | if (pcm->maxbps < 20) |
@@ -635,7 +632,6 @@ void hdmi_eld_update_pcm_info(struct hdmi_eld *eld, struct hda_pcm_stream *pcm, | |||
635 | /* restrict the parameters by the values the codec provides */ | 632 | /* restrict the parameters by the values the codec provides */ |
636 | pcm->rates &= codec_pars->rates; | 633 | pcm->rates &= codec_pars->rates; |
637 | pcm->formats &= codec_pars->formats; | 634 | pcm->formats &= codec_pars->formats; |
638 | pcm->channels_min = max(pcm->channels_min, codec_pars->channels_min); | ||
639 | pcm->channels_max = min(pcm->channels_max, codec_pars->channels_max); | 635 | pcm->channels_max = min(pcm->channels_max, codec_pars->channels_max); |
640 | pcm->maxbps = min(pcm->maxbps, codec_pars->maxbps); | 636 | pcm->maxbps = min(pcm->maxbps, codec_pars->maxbps); |
641 | } | 637 | } |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 21aa9b0e28f6..b030c8eba21f 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -2296,6 +2296,7 @@ static int azx_dev_free(struct snd_device *device) | |||
2296 | */ | 2296 | */ |
2297 | static struct snd_pci_quirk position_fix_list[] __devinitdata = { | 2297 | static struct snd_pci_quirk position_fix_list[] __devinitdata = { |
2298 | SND_PCI_QUIRK(0x1025, 0x009f, "Acer Aspire 5110", POS_FIX_LPIB), | 2298 | SND_PCI_QUIRK(0x1025, 0x009f, "Acer Aspire 5110", POS_FIX_LPIB), |
2299 | SND_PCI_QUIRK(0x1025, 0x026f, "Acer Aspire 5538", POS_FIX_LPIB), | ||
2299 | SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB), | 2300 | SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB), |
2300 | SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB), | 2301 | SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB), |
2301 | SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB), | 2302 | SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB), |
diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c index 460fb2ef7e39..18af38ebf757 100644 --- a/sound/pci/hda/patch_cirrus.c +++ b/sound/pci/hda/patch_cirrus.c | |||
@@ -1166,6 +1166,7 @@ static const char *cs420x_models[CS420X_MODELS] = { | |||
1166 | 1166 | ||
1167 | static struct snd_pci_quirk cs420x_cfg_tbl[] = { | 1167 | static struct snd_pci_quirk cs420x_cfg_tbl[] = { |
1168 | SND_PCI_QUIRK(0x10de, 0x0ac0, "MacBookPro 5,3", CS420X_MBP53), | 1168 | SND_PCI_QUIRK(0x10de, 0x0ac0, "MacBookPro 5,3", CS420X_MBP53), |
1169 | SND_PCI_QUIRK(0x10de, 0x0d94, "MacBookAir 3,1(2)", CS420X_MBP55), | ||
1169 | SND_PCI_QUIRK(0x10de, 0xcb79, "MacBookPro 5,5", CS420X_MBP55), | 1170 | SND_PCI_QUIRK(0x10de, 0xcb79, "MacBookPro 5,5", CS420X_MBP55), |
1170 | SND_PCI_QUIRK(0x10de, 0xcb89, "MacBookPro 7,1", CS420X_MBP55), | 1171 | SND_PCI_QUIRK(0x10de, 0xcb89, "MacBookPro 7,1", CS420X_MBP55), |
1171 | SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27), | 1172 | SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27), |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 6361f752b5f3..76bd58a0e2b6 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -2116,8 +2116,8 @@ static void cxt5066_update_speaker(struct hda_codec *codec) | |||
2116 | struct conexant_spec *spec = codec->spec; | 2116 | struct conexant_spec *spec = codec->spec; |
2117 | unsigned int pinctl; | 2117 | unsigned int pinctl; |
2118 | 2118 | ||
2119 | snd_printdd("CXT5066: update speaker, hp_present=%d\n", | 2119 | snd_printdd("CXT5066: update speaker, hp_present=%d, cur_eapd=%d\n", |
2120 | spec->hp_present); | 2120 | spec->hp_present, spec->cur_eapd); |
2121 | 2121 | ||
2122 | /* Port A (HP) */ | 2122 | /* Port A (HP) */ |
2123 | pinctl = ((spec->hp_present & 1) && spec->cur_eapd) ? PIN_HP : 0; | 2123 | pinctl = ((spec->hp_present & 1) && spec->cur_eapd) ? PIN_HP : 0; |
@@ -2125,11 +2125,20 @@ static void cxt5066_update_speaker(struct hda_codec *codec) | |||
2125 | pinctl); | 2125 | pinctl); |
2126 | 2126 | ||
2127 | /* Port D (HP/LO) */ | 2127 | /* Port D (HP/LO) */ |
2128 | pinctl = ((spec->hp_present & 2) && spec->cur_eapd) | 2128 | if (spec->dell_automute) { |
2129 | ? spec->port_d_mode : 0; | 2129 | /* DELL AIO Port Rule: PortA> PortD> IntSpk */ |
2130 | /* Mute if Port A is connected on Thinkpad */ | 2130 | pinctl = (!(spec->hp_present & 1) && spec->cur_eapd) |
2131 | if (spec->thinkpad && (spec->hp_present & 1)) | 2131 | ? PIN_OUT : 0; |
2132 | pinctl = 0; | 2132 | } else if (spec->thinkpad) { |
2133 | if (spec->cur_eapd) | ||
2134 | pinctl = spec->port_d_mode; | ||
2135 | /* Mute dock line-out if Port A (laptop HP) is present */ | ||
2136 | if (spec->hp_present& 1) | ||
2137 | pinctl = 0; | ||
2138 | } else { | ||
2139 | pinctl = ((spec->hp_present & 2) && spec->cur_eapd) | ||
2140 | ? spec->port_d_mode : 0; | ||
2141 | } | ||
2133 | snd_hda_codec_write(codec, 0x1c, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, | 2142 | snd_hda_codec_write(codec, 0x1c, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, |
2134 | pinctl); | 2143 | pinctl); |
2135 | 2144 | ||
@@ -2137,14 +2146,6 @@ static void cxt5066_update_speaker(struct hda_codec *codec) | |||
2137 | pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0; | 2146 | pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0; |
2138 | snd_hda_codec_write(codec, 0x1f, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, | 2147 | snd_hda_codec_write(codec, 0x1f, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, |
2139 | pinctl); | 2148 | pinctl); |
2140 | |||
2141 | if (spec->dell_automute) { | ||
2142 | /* DELL AIO Port Rule: PortA > PortD > IntSpk */ | ||
2143 | pinctl = (!(spec->hp_present & 1) && spec->cur_eapd) | ||
2144 | ? PIN_OUT : 0; | ||
2145 | snd_hda_codec_write(codec, 0x1c, 0, | ||
2146 | AC_VERB_SET_PIN_WIDGET_CONTROL, pinctl); | ||
2147 | } | ||
2148 | } | 2149 | } |
2149 | 2150 | ||
2150 | /* turn on/off EAPD (+ mute HP) as a master switch */ | 2151 | /* turn on/off EAPD (+ mute HP) as a master switch */ |
@@ -3095,11 +3096,11 @@ static const char *cxt5066_models[CXT5066_MODELS] = { | |||
3095 | static struct snd_pci_quirk cxt5066_cfg_tbl[] = { | 3096 | static struct snd_pci_quirk cxt5066_cfg_tbl[] = { |
3096 | SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD), | 3097 | SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD), |
3097 | SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), | 3098 | SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), |
3098 | SND_PCI_QUIRK(0x1028, 0x02f5, "Dell", | 3099 | SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), |
3099 | CXT5066_DELL_LAPTOP), | ||
3100 | SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), | 3100 | SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), |
3101 | SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), | 3101 | SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), |
3102 | SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP), | 3102 | SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP), |
3103 | SND_PCI_QUIRK(0x1043, 0x13f3, "Asus A52J", CXT5066_HP_LAPTOP), | ||
3103 | SND_PCI_QUIRK(0x1179, 0xff1e, "Toshiba Satellite C650D", CXT5066_IDEAPAD), | 3104 | SND_PCI_QUIRK(0x1179, 0xff1e, "Toshiba Satellite C650D", CXT5066_IDEAPAD), |
3104 | SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5), | 3105 | SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5), |
3105 | SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5), | 3106 | SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5), |
@@ -3108,8 +3109,10 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = { | |||
3108 | SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5), | 3109 | SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5), |
3109 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD), | 3110 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD), |
3110 | SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD), | 3111 | SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD), |
3112 | SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD), | ||
3111 | SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD), | 3113 | SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD), |
3112 | SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD), | 3114 | SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD), |
3115 | SND_PCI_QUIRK(0x17aa, 0x21c8, "Thinkpad Edge 11", CXT5066_IDEAPAD), | ||
3113 | SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD), | 3116 | SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD), |
3114 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD), | 3117 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD), |
3115 | SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD), | 3118 | SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD), |
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index d3e49aa5b9ec..31df7747990d 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c | |||
@@ -834,7 +834,6 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo, | |||
834 | return -ENODEV; | 834 | return -ENODEV; |
835 | } else { | 835 | } else { |
836 | /* fallback to the codec default */ | 836 | /* fallback to the codec default */ |
837 | hinfo->channels_min = codec_pars->channels_min; | ||
838 | hinfo->channels_max = codec_pars->channels_max; | 837 | hinfo->channels_max = codec_pars->channels_max; |
839 | hinfo->rates = codec_pars->rates; | 838 | hinfo->rates = codec_pars->rates; |
840 | hinfo->formats = codec_pars->formats; | 839 | hinfo->formats = codec_pars->formats; |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 5f00589cb791..427da45d7906 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1614,6 +1614,7 @@ do_sku: | |||
1614 | spec->init_amp = ALC_INIT_GPIO3; | 1614 | spec->init_amp = ALC_INIT_GPIO3; |
1615 | break; | 1615 | break; |
1616 | case 5: | 1616 | case 5: |
1617 | default: | ||
1617 | spec->init_amp = ALC_INIT_DEFAULT; | 1618 | spec->init_amp = ALC_INIT_DEFAULT; |
1618 | break; | 1619 | break; |
1619 | } | 1620 | } |
@@ -2014,6 +2015,36 @@ static struct hda_verb alc888_acer_aspire_6530g_verbs[] = { | |||
2014 | }; | 2015 | }; |
2015 | 2016 | ||
2016 | /* | 2017 | /* |
2018 | *ALC888 Acer Aspire 7730G model | ||
2019 | */ | ||
2020 | |||
2021 | static struct hda_verb alc888_acer_aspire_7730G_verbs[] = { | ||
2022 | /* Bias voltage on for external mic port */ | ||
2023 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN | PIN_VREF80}, | ||
2024 | /* Front Mic: set to PIN_IN (empty by default) */ | ||
2025 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
2026 | /* Unselect Front Mic by default in input mixer 3 */ | ||
2027 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0xb)}, | ||
2028 | /* Enable unsolicited event for HP jack */ | ||
2029 | {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, | ||
2030 | /* Enable speaker output */ | ||
2031 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
2032 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
2033 | {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, | ||
2034 | /* Enable headphone output */ | ||
2035 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | PIN_HP}, | ||
2036 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
2037 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
2038 | {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2}, | ||
2039 | /*Enable internal subwoofer */ | ||
2040 | {0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
2041 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
2042 | {0x17, AC_VERB_SET_CONNECT_SEL, 0x02}, | ||
2043 | {0x17, AC_VERB_SET_EAPD_BTLENABLE, 2}, | ||
2044 | { } | ||
2045 | }; | ||
2046 | |||
2047 | /* | ||
2017 | * ALC889 Acer Aspire 8930G model | 2048 | * ALC889 Acer Aspire 8930G model |
2018 | */ | 2049 | */ |
2019 | 2050 | ||
@@ -2200,6 +2231,16 @@ static void alc888_acer_aspire_6530g_setup(struct hda_codec *codec) | |||
2200 | spec->autocfg.speaker_pins[2] = 0x17; | 2231 | spec->autocfg.speaker_pins[2] = 0x17; |
2201 | } | 2232 | } |
2202 | 2233 | ||
2234 | static void alc888_acer_aspire_7730g_setup(struct hda_codec *codec) | ||
2235 | { | ||
2236 | struct alc_spec *spec = codec->spec; | ||
2237 | |||
2238 | spec->autocfg.hp_pins[0] = 0x15; | ||
2239 | spec->autocfg.speaker_pins[0] = 0x14; | ||
2240 | spec->autocfg.speaker_pins[1] = 0x16; | ||
2241 | spec->autocfg.speaker_pins[2] = 0x17; | ||
2242 | } | ||
2243 | |||
2203 | static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec) | 2244 | static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec) |
2204 | { | 2245 | { |
2205 | struct alc_spec *spec = codec->spec; | 2246 | struct alc_spec *spec = codec->spec; |
@@ -4554,6 +4595,7 @@ static struct snd_pci_quirk alc880_cfg_tbl[] = { | |||
4554 | SND_PCI_QUIRK(0x1734, 0x10b0, "Fujitsu", ALC880_FUJITSU), | 4595 | SND_PCI_QUIRK(0x1734, 0x10b0, "Fujitsu", ALC880_FUJITSU), |
4555 | SND_PCI_QUIRK(0x1854, 0x0018, "LG LW20", ALC880_LG_LW), | 4596 | SND_PCI_QUIRK(0x1854, 0x0018, "LG LW20", ALC880_LG_LW), |
4556 | SND_PCI_QUIRK(0x1854, 0x003b, "LG", ALC880_LG), | 4597 | SND_PCI_QUIRK(0x1854, 0x003b, "LG", ALC880_LG), |
4598 | SND_PCI_QUIRK(0x1854, 0x005f, "LG P1 Express", ALC880_LG), | ||
4557 | SND_PCI_QUIRK(0x1854, 0x0068, "LG w1", ALC880_LG), | 4599 | SND_PCI_QUIRK(0x1854, 0x0068, "LG w1", ALC880_LG), |
4558 | SND_PCI_QUIRK(0x1854, 0x0077, "LG LW25", ALC880_LG_LW), | 4600 | SND_PCI_QUIRK(0x1854, 0x0077, "LG LW25", ALC880_LG_LW), |
4559 | SND_PCI_QUIRK(0x19db, 0x4188, "TCL S700", ALC880_TCL_S700), | 4601 | SND_PCI_QUIRK(0x19db, 0x4188, "TCL S700", ALC880_TCL_S700), |
@@ -9524,13 +9566,6 @@ static struct hda_verb alc883_acer_eapd_verbs[] = { | |||
9524 | { } | 9566 | { } |
9525 | }; | 9567 | }; |
9526 | 9568 | ||
9527 | static struct hda_verb alc888_acer_aspire_7730G_verbs[] = { | ||
9528 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
9529 | {0x17, AC_VERB_SET_CONNECT_SEL, 0x02}, | ||
9530 | {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, | ||
9531 | { } /* end */ | ||
9532 | }; | ||
9533 | |||
9534 | static void alc888_6st_dell_setup(struct hda_codec *codec) | 9569 | static void alc888_6st_dell_setup(struct hda_codec *codec) |
9535 | { | 9570 | { |
9536 | struct alc_spec *spec = codec->spec; | 9571 | struct alc_spec *spec = codec->spec; |
@@ -9831,7 +9866,6 @@ static struct snd_pci_quirk alc882_cfg_tbl[] = { | |||
9831 | SND_PCI_QUIRK(0x17aa, 0x3bfc, "Lenovo NB0763", ALC883_LENOVO_NB0763), | 9866 | SND_PCI_QUIRK(0x17aa, 0x3bfc, "Lenovo NB0763", ALC883_LENOVO_NB0763), |
9832 | SND_PCI_QUIRK(0x17aa, 0x3bfd, "Lenovo NB0763", ALC883_LENOVO_NB0763), | 9867 | SND_PCI_QUIRK(0x17aa, 0x3bfd, "Lenovo NB0763", ALC883_LENOVO_NB0763), |
9833 | SND_PCI_QUIRK(0x17aa, 0x101d, "Lenovo Sky", ALC888_LENOVO_SKY), | 9868 | SND_PCI_QUIRK(0x17aa, 0x101d, "Lenovo Sky", ALC888_LENOVO_SKY), |
9834 | SND_PCI_QUIRK(0x17c0, 0x4071, "MEDION MD2", ALC883_MEDION_MD2), | ||
9835 | SND_PCI_QUIRK(0x17c0, 0x4085, "MEDION MD96630", ALC888_LENOVO_MS7195_DIG), | 9869 | SND_PCI_QUIRK(0x17c0, 0x4085, "MEDION MD96630", ALC888_LENOVO_MS7195_DIG), |
9836 | SND_PCI_QUIRK(0x17f2, 0x5000, "Albatron KI690-AM2", ALC883_6ST_DIG), | 9870 | SND_PCI_QUIRK(0x17f2, 0x5000, "Albatron KI690-AM2", ALC883_6ST_DIG), |
9837 | SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66), | 9871 | SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66), |
@@ -10328,7 +10362,7 @@ static struct alc_config_preset alc882_presets[] = { | |||
10328 | .const_channel_count = 6, | 10362 | .const_channel_count = 6, |
10329 | .input_mux = &alc883_capture_source, | 10363 | .input_mux = &alc883_capture_source, |
10330 | .unsol_event = alc_automute_amp_unsol_event, | 10364 | .unsol_event = alc_automute_amp_unsol_event, |
10331 | .setup = alc888_acer_aspire_6530g_setup, | 10365 | .setup = alc888_acer_aspire_7730g_setup, |
10332 | .init_hook = alc_automute_amp, | 10366 | .init_hook = alc_automute_amp, |
10333 | }, | 10367 | }, |
10334 | [ALC883_MEDION] = { | 10368 | [ALC883_MEDION] = { |
@@ -10796,7 +10830,8 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec) | |||
10796 | { | 10830 | { |
10797 | struct alc_spec *spec = codec->spec; | 10831 | struct alc_spec *spec = codec->spec; |
10798 | struct auto_pin_cfg *cfg = &spec->autocfg; | 10832 | struct auto_pin_cfg *cfg = &spec->autocfg; |
10799 | int i, err; | 10833 | int i, err, type; |
10834 | int type_idx = 0; | ||
10800 | hda_nid_t nid; | 10835 | hda_nid_t nid; |
10801 | 10836 | ||
10802 | for (i = 0; i < cfg->num_inputs; i++) { | 10837 | for (i = 0; i < cfg->num_inputs; i++) { |
@@ -10805,9 +10840,15 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec) | |||
10805 | nid = cfg->inputs[i].pin; | 10840 | nid = cfg->inputs[i].pin; |
10806 | if (get_wcaps(codec, nid) & AC_WCAP_IN_AMP) { | 10841 | if (get_wcaps(codec, nid) & AC_WCAP_IN_AMP) { |
10807 | char label[32]; | 10842 | char label[32]; |
10843 | type = cfg->inputs[i].type; | ||
10844 | if (i > 0 && type == cfg->inputs[i - 1].type) | ||
10845 | type_idx++; | ||
10846 | else | ||
10847 | type_idx = 0; | ||
10808 | snprintf(label, sizeof(label), "%s Boost", | 10848 | snprintf(label, sizeof(label), "%s Boost", |
10809 | hda_get_autocfg_input_label(codec, cfg, i)); | 10849 | hda_get_autocfg_input_label(codec, cfg, i)); |
10810 | err = add_control(spec, ALC_CTL_WIDGET_VOL, label, 0, | 10850 | err = add_control(spec, ALC_CTL_WIDGET_VOL, label, |
10851 | type_idx, | ||
10811 | HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_INPUT)); | 10852 | HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_INPUT)); |
10812 | if (err < 0) | 10853 | if (err < 0) |
10813 | return err; | 10854 | return err; |
@@ -14623,7 +14664,10 @@ static int alc275_setup_dual_adc(struct hda_codec *codec) | |||
14623 | /* different alc269-variants */ | 14664 | /* different alc269-variants */ |
14624 | enum { | 14665 | enum { |
14625 | ALC269_TYPE_NORMAL, | 14666 | ALC269_TYPE_NORMAL, |
14667 | ALC269_TYPE_ALC258, | ||
14626 | ALC269_TYPE_ALC259, | 14668 | ALC269_TYPE_ALC259, |
14669 | ALC269_TYPE_ALC269VB, | ||
14670 | ALC269_TYPE_ALC270, | ||
14627 | ALC269_TYPE_ALC271X, | 14671 | ALC269_TYPE_ALC271X, |
14628 | }; | 14672 | }; |
14629 | 14673 | ||
@@ -14763,6 +14807,8 @@ static int alc269_resume(struct hda_codec *codec) | |||
14763 | enum { | 14807 | enum { |
14764 | ALC269_FIXUP_SONY_VAIO, | 14808 | ALC269_FIXUP_SONY_VAIO, |
14765 | ALC269_FIXUP_DELL_M101Z, | 14809 | ALC269_FIXUP_DELL_M101Z, |
14810 | ALC269_FIXUP_LENOVO_EDGE14, | ||
14811 | ALC269_FIXUP_ASUS_G73JW, | ||
14766 | }; | 14812 | }; |
14767 | 14813 | ||
14768 | static const struct alc_fixup alc269_fixups[] = { | 14814 | static const struct alc_fixup alc269_fixups[] = { |
@@ -14780,11 +14826,22 @@ static const struct alc_fixup alc269_fixups[] = { | |||
14780 | {} | 14826 | {} |
14781 | } | 14827 | } |
14782 | }, | 14828 | }, |
14829 | [ALC269_FIXUP_LENOVO_EDGE14] = { | ||
14830 | .sku = ALC_FIXUP_SKU_IGNORE, | ||
14831 | }, | ||
14832 | [ALC269_FIXUP_ASUS_G73JW] = { | ||
14833 | .pins = (const struct alc_pincfg[]) { | ||
14834 | { 0x17, 0x99130111 }, /* subwoofer */ | ||
14835 | { } | ||
14836 | } | ||
14837 | }, | ||
14783 | }; | 14838 | }; |
14784 | 14839 | ||
14785 | static struct snd_pci_quirk alc269_fixup_tbl[] = { | 14840 | static struct snd_pci_quirk alc269_fixup_tbl[] = { |
14786 | SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), | 14841 | SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), |
14787 | SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), | 14842 | SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), |
14843 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_LENOVO_EDGE14), | ||
14844 | SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), | ||
14788 | {} | 14845 | {} |
14789 | }; | 14846 | }; |
14790 | 14847 | ||
@@ -15023,7 +15080,7 @@ static int alc269_fill_coef(struct hda_codec *codec) | |||
15023 | static int patch_alc269(struct hda_codec *codec) | 15080 | static int patch_alc269(struct hda_codec *codec) |
15024 | { | 15081 | { |
15025 | struct alc_spec *spec; | 15082 | struct alc_spec *spec; |
15026 | int board_config; | 15083 | int board_config, coef; |
15027 | int err; | 15084 | int err; |
15028 | 15085 | ||
15029 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); | 15086 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); |
@@ -15034,14 +15091,23 @@ static int patch_alc269(struct hda_codec *codec) | |||
15034 | 15091 | ||
15035 | alc_auto_parse_customize_define(codec); | 15092 | alc_auto_parse_customize_define(codec); |
15036 | 15093 | ||
15037 | if ((alc_read_coef_idx(codec, 0) & 0x00f0) == 0x0010){ | 15094 | coef = alc_read_coef_idx(codec, 0); |
15095 | if ((coef & 0x00f0) == 0x0010) { | ||
15038 | if (codec->bus->pci->subsystem_vendor == 0x1025 && | 15096 | if (codec->bus->pci->subsystem_vendor == 0x1025 && |
15039 | spec->cdefine.platform_type == 1) { | 15097 | spec->cdefine.platform_type == 1) { |
15040 | alc_codec_rename(codec, "ALC271X"); | 15098 | alc_codec_rename(codec, "ALC271X"); |
15041 | spec->codec_variant = ALC269_TYPE_ALC271X; | 15099 | spec->codec_variant = ALC269_TYPE_ALC271X; |
15042 | } else { | 15100 | } else if ((coef & 0xf000) == 0x1000) { |
15101 | spec->codec_variant = ALC269_TYPE_ALC270; | ||
15102 | } else if ((coef & 0xf000) == 0x2000) { | ||
15043 | alc_codec_rename(codec, "ALC259"); | 15103 | alc_codec_rename(codec, "ALC259"); |
15044 | spec->codec_variant = ALC269_TYPE_ALC259; | 15104 | spec->codec_variant = ALC269_TYPE_ALC259; |
15105 | } else if ((coef & 0xf000) == 0x3000) { | ||
15106 | alc_codec_rename(codec, "ALC258"); | ||
15107 | spec->codec_variant = ALC269_TYPE_ALC258; | ||
15108 | } else { | ||
15109 | alc_codec_rename(codec, "ALC269VB"); | ||
15110 | spec->codec_variant = ALC269_TYPE_ALC269VB; | ||
15045 | } | 15111 | } |
15046 | } else | 15112 | } else |
15047 | alc_fix_pll_init(codec, 0x20, 0x04, 15); | 15113 | alc_fix_pll_init(codec, 0x20, 0x04, 15); |
@@ -15104,7 +15170,7 @@ static int patch_alc269(struct hda_codec *codec) | |||
15104 | spec->stream_digital_capture = &alc269_pcm_digital_capture; | 15170 | spec->stream_digital_capture = &alc269_pcm_digital_capture; |
15105 | 15171 | ||
15106 | if (!spec->adc_nids) { /* wasn't filled automatically? use default */ | 15172 | if (!spec->adc_nids) { /* wasn't filled automatically? use default */ |
15107 | if (spec->codec_variant != ALC269_TYPE_NORMAL) { | 15173 | if (spec->codec_variant == ALC269_TYPE_NORMAL) { |
15108 | spec->adc_nids = alc269_adc_nids; | 15174 | spec->adc_nids = alc269_adc_nids; |
15109 | spec->num_adc_nids = ARRAY_SIZE(alc269_adc_nids); | 15175 | spec->num_adc_nids = ARRAY_SIZE(alc269_adc_nids); |
15110 | spec->capsrc_nids = alc269_capsrc_nids; | 15176 | spec->capsrc_nids = alc269_capsrc_nids; |
@@ -16898,7 +16964,7 @@ static struct alc_config_preset alc861vd_presets[] = { | |||
16898 | static int alc861vd_auto_create_input_ctls(struct hda_codec *codec, | 16964 | static int alc861vd_auto_create_input_ctls(struct hda_codec *codec, |
16899 | const struct auto_pin_cfg *cfg) | 16965 | const struct auto_pin_cfg *cfg) |
16900 | { | 16966 | { |
16901 | return alc_auto_create_input_ctls(codec, cfg, 0x15, 0x09, 0); | 16967 | return alc_auto_create_input_ctls(codec, cfg, 0x0b, 0x22, 0); |
16902 | } | 16968 | } |
16903 | 16969 | ||
16904 | 16970 | ||
@@ -18952,6 +19018,8 @@ static inline hda_nid_t alc662_mix_to_dac(hda_nid_t nid) | |||
18952 | return 0x02; | 19018 | return 0x02; |
18953 | else if (nid >= 0x0c && nid <= 0x0e) | 19019 | else if (nid >= 0x0c && nid <= 0x0e) |
18954 | return nid - 0x0c + 0x02; | 19020 | return nid - 0x0c + 0x02; |
19021 | else if (nid == 0x26) /* ALC887-VD has this DAC too */ | ||
19022 | return 0x25; | ||
18955 | else | 19023 | else |
18956 | return 0; | 19024 | return 0; |
18957 | } | 19025 | } |
@@ -18960,7 +19028,7 @@ static inline hda_nid_t alc662_mix_to_dac(hda_nid_t nid) | |||
18960 | static hda_nid_t alc662_dac_to_mix(struct hda_codec *codec, hda_nid_t pin, | 19028 | static hda_nid_t alc662_dac_to_mix(struct hda_codec *codec, hda_nid_t pin, |
18961 | hda_nid_t dac) | 19029 | hda_nid_t dac) |
18962 | { | 19030 | { |
18963 | hda_nid_t mix[4]; | 19031 | hda_nid_t mix[5]; |
18964 | int i, num; | 19032 | int i, num; |
18965 | 19033 | ||
18966 | num = snd_hda_get_connections(codec, pin, mix, ARRAY_SIZE(mix)); | 19034 | num = snd_hda_get_connections(codec, pin, mix, ARRAY_SIZE(mix)); |
@@ -19298,6 +19366,7 @@ static const struct alc_fixup alc662_fixups[] = { | |||
19298 | 19366 | ||
19299 | static struct snd_pci_quirk alc662_fixup_tbl[] = { | 19367 | static struct snd_pci_quirk alc662_fixup_tbl[] = { |
19300 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), | 19368 | SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), |
19369 | SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), | ||
19301 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), | 19370 | SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), |
19302 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), | 19371 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), |
19303 | {} | 19372 | {} |
@@ -19419,7 +19488,10 @@ static int patch_alc888(struct hda_codec *codec) | |||
19419 | { | 19488 | { |
19420 | if ((alc_read_coef_idx(codec, 0) & 0x00f0)==0x0030){ | 19489 | if ((alc_read_coef_idx(codec, 0) & 0x00f0)==0x0030){ |
19421 | kfree(codec->chip_name); | 19490 | kfree(codec->chip_name); |
19422 | codec->chip_name = kstrdup("ALC888-VD", GFP_KERNEL); | 19491 | if (codec->vendor_id == 0x10ec0887) |
19492 | codec->chip_name = kstrdup("ALC887-VD", GFP_KERNEL); | ||
19493 | else | ||
19494 | codec->chip_name = kstrdup("ALC888-VD", GFP_KERNEL); | ||
19423 | if (!codec->chip_name) { | 19495 | if (!codec->chip_name) { |
19424 | alc_free(codec); | 19496 | alc_free(codec); |
19425 | return -ENOMEM; | 19497 | return -ENOMEM; |
@@ -19909,7 +19981,7 @@ static struct hda_codec_preset snd_hda_preset_realtek[] = { | |||
19909 | { .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A", | 19981 | { .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A", |
19910 | .patch = patch_alc882 }, | 19982 | .patch = patch_alc882 }, |
19911 | { .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 }, | 19983 | { .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 }, |
19912 | { .id = 0x10ec0887, .name = "ALC887", .patch = patch_alc882 }, | 19984 | { .id = 0x10ec0887, .name = "ALC887", .patch = patch_alc888 }, |
19913 | { .id = 0x10ec0888, .rev = 0x100101, .name = "ALC1200", | 19985 | { .id = 0x10ec0888, .rev = 0x100101, .name = "ALC1200", |
19914 | .patch = patch_alc882 }, | 19986 | .patch = patch_alc882 }, |
19915 | { .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc888 }, | 19987 | { .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc888 }, |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 93fa59cc60ef..efa4225f5fd6 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -389,6 +389,11 @@ static hda_nid_t stac92hd83xxx_dmic_nids[STAC92HD83XXX_NUM_DMICS + 1] = { | |||
389 | 0x11, 0x20, 0 | 389 | 0x11, 0x20, 0 |
390 | }; | 390 | }; |
391 | 391 | ||
392 | #define STAC92HD87B_NUM_DMICS 1 | ||
393 | static hda_nid_t stac92hd87b_dmic_nids[STAC92HD87B_NUM_DMICS + 1] = { | ||
394 | 0x11, 0 | ||
395 | }; | ||
396 | |||
392 | #define STAC92HD83XXX_NUM_CAPS 2 | 397 | #define STAC92HD83XXX_NUM_CAPS 2 |
393 | static unsigned long stac92hd83xxx_capvols[] = { | 398 | static unsigned long stac92hd83xxx_capvols[] = { |
394 | HDA_COMPOSE_AMP_VAL(0x17, 3, 0, HDA_OUTPUT), | 399 | HDA_COMPOSE_AMP_VAL(0x17, 3, 0, HDA_OUTPUT), |
@@ -1622,6 +1627,8 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | |||
1622 | static struct snd_pci_quirk stac92hd73xx_codec_id_cfg_tbl[] = { | 1627 | static struct snd_pci_quirk stac92hd73xx_codec_id_cfg_tbl[] = { |
1623 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02a1, | 1628 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02a1, |
1624 | "Alienware M17x", STAC_ALIENWARE_M17X), | 1629 | "Alienware M17x", STAC_ALIENWARE_M17X), |
1630 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x043a, | ||
1631 | "Alienware M17x", STAC_ALIENWARE_M17X), | ||
1625 | {} /* terminator */ | 1632 | {} /* terminator */ |
1626 | }; | 1633 | }; |
1627 | 1634 | ||
@@ -3486,10 +3493,8 @@ static int stac92xx_auto_create_dmic_input_ctls(struct hda_codec *codec, | |||
3486 | return err; | 3493 | return err; |
3487 | } | 3494 | } |
3488 | 3495 | ||
3489 | if (snd_hda_get_bool_hint(codec, "separate_dmux") != 1) { | 3496 | if (snd_hda_get_bool_hint(codec, "separate_dmux") != 1) |
3490 | snd_hda_add_imux_item(imux, label, index, NULL); | 3497 | snd_hda_add_imux_item(imux, label, index, NULL); |
3491 | spec->num_analog_muxes++; | ||
3492 | } | ||
3493 | } | 3498 | } |
3494 | 3499 | ||
3495 | return 0; | 3500 | return 0; |
@@ -5452,12 +5457,17 @@ again: | |||
5452 | stac92hd83xxx_brd_tbl[spec->board_config]); | 5457 | stac92hd83xxx_brd_tbl[spec->board_config]); |
5453 | 5458 | ||
5454 | switch (codec->vendor_id) { | 5459 | switch (codec->vendor_id) { |
5460 | case 0x111d76d1: | ||
5461 | case 0x111d76d9: | ||
5462 | spec->dmic_nids = stac92hd87b_dmic_nids; | ||
5463 | spec->num_dmics = stac92xx_connected_ports(codec, | ||
5464 | stac92hd87b_dmic_nids, | ||
5465 | STAC92HD87B_NUM_DMICS); | ||
5466 | /* Fall through */ | ||
5455 | case 0x111d7666: | 5467 | case 0x111d7666: |
5456 | case 0x111d7667: | 5468 | case 0x111d7667: |
5457 | case 0x111d7668: | 5469 | case 0x111d7668: |
5458 | case 0x111d7669: | 5470 | case 0x111d7669: |
5459 | case 0x111d76d1: | ||
5460 | case 0x111d76d9: | ||
5461 | spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids); | 5471 | spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids); |
5462 | spec->pin_nids = stac92hd88xxx_pin_nids; | 5472 | spec->pin_nids = stac92hd88xxx_pin_nids; |
5463 | spec->mono_nid = 0; | 5473 | spec->mono_nid = 0; |
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 400f9ebd243e..629a5494347a 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
@@ -1866,6 +1866,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = { | |||
1866 | }, | 1866 | }, |
1867 | { | 1867 | { |
1868 | .subvendor = 0x1028, | 1868 | .subvendor = 0x1028, |
1869 | .subdevice = 0x0182, | ||
1870 | .name = "Dell Latitude D610", /* STAC9750/51 */ | ||
1871 | .type = AC97_TUNE_HP_ONLY | ||
1872 | }, | ||
1873 | { | ||
1874 | .subvendor = 0x1028, | ||
1869 | .subdevice = 0x0186, | 1875 | .subdevice = 0x0186, |
1870 | .name = "Dell Latitude D810", /* cf. Malone #41015 */ | 1876 | .name = "Dell Latitude D810", /* cf. Malone #41015 */ |
1871 | .type = AC97_TUNE_HP_MUTE_LED | 1877 | .type = AC97_TUNE_HP_MUTE_LED |
diff --git a/sound/pci/lx6464es/lx6464es.c b/sound/pci/lx6464es/lx6464es.c index ef9af3f4ace2..1bd7a540fd49 100644 --- a/sound/pci/lx6464es/lx6464es.c +++ b/sound/pci/lx6464es/lx6464es.c | |||
@@ -425,7 +425,7 @@ exit: | |||
425 | static void lx_trigger_start(struct lx6464es *chip, struct lx_stream *lx_stream) | 425 | static void lx_trigger_start(struct lx6464es *chip, struct lx_stream *lx_stream) |
426 | { | 426 | { |
427 | struct snd_pcm_substream *substream = lx_stream->stream; | 427 | struct snd_pcm_substream *substream = lx_stream->stream; |
428 | const int is_capture = lx_stream->is_capture; | 428 | const unsigned int is_capture = lx_stream->is_capture; |
429 | 429 | ||
430 | int err; | 430 | int err; |
431 | 431 | ||
@@ -473,7 +473,7 @@ static void lx_trigger_start(struct lx6464es *chip, struct lx_stream *lx_stream) | |||
473 | 473 | ||
474 | static void lx_trigger_stop(struct lx6464es *chip, struct lx_stream *lx_stream) | 474 | static void lx_trigger_stop(struct lx6464es *chip, struct lx_stream *lx_stream) |
475 | { | 475 | { |
476 | const int is_capture = lx_stream->is_capture; | 476 | const unsigned int is_capture = lx_stream->is_capture; |
477 | int err; | 477 | int err; |
478 | 478 | ||
479 | snd_printd(LXP "stopping: stopping stream\n"); | 479 | snd_printd(LXP "stopping: stopping stream\n"); |
diff --git a/sound/pci/lx6464es/lx6464es.h b/sound/pci/lx6464es/lx6464es.h index 51afc048961d..aea621eafbb5 100644 --- a/sound/pci/lx6464es/lx6464es.h +++ b/sound/pci/lx6464es/lx6464es.h | |||
@@ -60,7 +60,7 @@ struct lx_stream { | |||
60 | snd_pcm_uframes_t frame_pos; | 60 | snd_pcm_uframes_t frame_pos; |
61 | enum lx_stream_status status; /* free, open, running, draining | 61 | enum lx_stream_status status; /* free, open, running, draining |
62 | * pause */ | 62 | * pause */ |
63 | int is_capture:1; | 63 | unsigned int is_capture:1; |
64 | }; | 64 | }; |
65 | 65 | ||
66 | 66 | ||
diff --git a/sound/pci/lx6464es/lx_core.c b/sound/pci/lx6464es/lx_core.c index 3086b751da4a..617f98b0cbae 100644 --- a/sound/pci/lx6464es/lx_core.c +++ b/sound/pci/lx6464es/lx_core.c | |||
@@ -1152,7 +1152,7 @@ static int lx_interrupt_request_new_buffer(struct lx6464es *chip, | |||
1152 | struct lx_stream *lx_stream) | 1152 | struct lx_stream *lx_stream) |
1153 | { | 1153 | { |
1154 | struct snd_pcm_substream *substream = lx_stream->stream; | 1154 | struct snd_pcm_substream *substream = lx_stream->stream; |
1155 | int is_capture = lx_stream->is_capture; | 1155 | const unsigned int is_capture = lx_stream->is_capture; |
1156 | int err; | 1156 | int err; |
1157 | unsigned long flags; | 1157 | unsigned long flags; |
1158 | 1158 | ||
diff --git a/sound/pci/mixart/mixart_hwdep.h b/sound/pci/mixart/mixart_hwdep.h index a46f5083db99..812e288ef2e7 100644 --- a/sound/pci/mixart/mixart_hwdep.h +++ b/sound/pci/mixart/mixart_hwdep.h | |||
@@ -25,11 +25,21 @@ | |||
25 | 25 | ||
26 | #include <sound/hwdep.h> | 26 | #include <sound/hwdep.h> |
27 | 27 | ||
28 | #ifndef readl_be | ||
28 | #define readl_be(x) be32_to_cpu(__raw_readl(x)) | 29 | #define readl_be(x) be32_to_cpu(__raw_readl(x)) |
30 | #endif | ||
31 | |||
32 | #ifndef writel_be | ||
29 | #define writel_be(data,addr) __raw_writel(cpu_to_be32(data),addr) | 33 | #define writel_be(data,addr) __raw_writel(cpu_to_be32(data),addr) |
34 | #endif | ||
30 | 35 | ||
36 | #ifndef readl_le | ||
31 | #define readl_le(x) le32_to_cpu(__raw_readl(x)) | 37 | #define readl_le(x) le32_to_cpu(__raw_readl(x)) |
38 | #endif | ||
39 | |||
40 | #ifndef writel_le | ||
32 | #define writel_le(data,addr) __raw_writel(cpu_to_le32(data),addr) | 41 | #define writel_le(data,addr) __raw_writel(cpu_to_le32(data),addr) |
42 | #endif | ||
33 | 43 | ||
34 | #define MIXART_MEM(mgr,x) ((mgr)->mem[0].virt + (x)) | 44 | #define MIXART_MEM(mgr,x) ((mgr)->mem[0].virt + (x)) |
35 | #define MIXART_REG(mgr,x) ((mgr)->mem[1].virt + (x)) | 45 | #define MIXART_REG(mgr,x) ((mgr)->mem[1].virt + (x)) |