Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa

* 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa:
[ALSA] version 1.0.13
[ALSA] snd-emu10k1: Fix capture for one variant.
[ALSA] Fix hang-up at disconnection of usb-audio
[ALSA] hda: fix typo for xw4400 PCI sub-ID
[ALSA] hda: fix sigmatel dell system detection
[ALSA] Enable stereo line input for TAS codec
[ALSA] rtctimer: handle RTC interrupts with a tasklet

+41 -23
+1 -1
include/sound/version.h
··· 1 1 /* include/version.h. Generated by alsa/ksync script. */ 2 2 #define CONFIG_SND_VERSION "1.0.13" 3 - #define CONFIG_SND_DATE " (Sun Oct 22 08:56:16 2006 UTC)" 3 + #define CONFIG_SND_DATE " (Tue Nov 28 14:07:24 2006 UTC)"
+9 -4
sound/aoa/codecs/snd-aoa-codec-tas.c
··· 514 514 mutex_lock(&tas->mtx); 515 515 oldacr = tas->acr; 516 516 517 - tas->acr &= ~TAS_ACR_INPUT_B; 517 + /* 518 + * Despite what the data sheet says in one place, the 519 + * TAS_ACR_B_MONAUREAL bit forces mono output even when 520 + * input A (line in) is selected. 521 + */ 522 + tas->acr &= ~(TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL); 518 523 if (ucontrol->value.enumerated.item[0]) 519 - tas->acr |= TAS_ACR_INPUT_B; 524 + tas->acr |= TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL | 525 + TAS_ACR_B_MON_SEL_RIGHT; 520 526 if (oldacr == tas->acr) { 521 527 mutex_unlock(&tas->mtx); 522 528 return 0; ··· 692 686 if (tas_write_reg(tas, TAS_REG_MCS, 1, &tmp)) 693 687 goto outerr; 694 688 695 - tas->acr |= TAS_ACR_ANALOG_PDOWN | TAS_ACR_B_MONAUREAL | 696 - TAS_ACR_B_MON_SEL_RIGHT; 689 + tas->acr |= TAS_ACR_ANALOG_PDOWN; 697 690 if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr)) 698 691 goto outerr; 699 692
+2 -1
sound/core/oss/pcm_oss.c
··· 2359 2359 substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE]; 2360 2360 snd_assert(substream != NULL, return -ENXIO); 2361 2361 pcm = substream->pcm; 2362 - snd_pcm_oss_sync(pcm_oss_file); 2362 + if (!pcm->card->shutdown) 2363 + snd_pcm_oss_sync(pcm_oss_file); 2363 2364 mutex_lock(&pcm->open_mutex); 2364 2365 snd_pcm_oss_release_file(pcm_oss_file); 2365 2366 mutex_unlock(&pcm->open_mutex);
+4 -2
sound/core/pcm_native.c
··· 1310 1310 int f_flags) 1311 1311 { 1312 1312 struct snd_pcm_runtime *runtime = substream->runtime; 1313 - if (runtime->status->state == SNDRV_PCM_STATE_OPEN) 1313 + if (runtime->status->state == SNDRV_PCM_STATE_OPEN || 1314 + runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED) 1314 1315 return -EBADFD; 1315 1316 if (snd_pcm_running(substream)) 1316 1317 return -EBUSY; ··· 1569 1568 runtime = substream->runtime; 1570 1569 card = substream->pcm->card; 1571 1570 1572 - if (runtime->status->state == SNDRV_PCM_STATE_OPEN) 1571 + if (runtime->status->state == SNDRV_PCM_STATE_OPEN || 1572 + runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED) 1573 1573 return -EBADFD; 1574 1574 1575 1575 snd_power_lock(card);
+14 -6
sound/core/rtctimer.c
··· 22 22 23 23 #include <sound/driver.h> 24 24 #include <linux/init.h> 25 - #include <linux/time.h> 26 - #include <linux/threads.h> 27 25 #include <linux/interrupt.h> 28 26 #include <linux/moduleparam.h> 29 27 #include <sound/core.h> 30 28 #include <sound/timer.h> 31 - #include <sound/info.h> 32 29 33 30 #if defined(CONFIG_RTC) || defined(CONFIG_RTC_MODULE) 34 31 ··· 47 50 * The hardware dependent description for this timer. 48 51 */ 49 52 static struct snd_timer_hardware rtc_hw = { 50 - .flags = SNDRV_TIMER_HW_FIRST|SNDRV_TIMER_HW_AUTO, 53 + .flags = SNDRV_TIMER_HW_AUTO | 54 + SNDRV_TIMER_HW_FIRST | 55 + SNDRV_TIMER_HW_TASKLET, 51 56 .ticks = 100000000L, /* FIXME: XXX */ 52 57 .open = rtctimer_open, 53 58 .close = rtctimer_close, ··· 59 60 60 61 static int rtctimer_freq = RTC_FREQ; /* frequency */ 61 62 static struct snd_timer *rtctimer; 63 + static struct tasklet_struct rtc_tasklet; 62 64 static rtc_task_t rtc_task; 63 65 64 66 ··· 81 81 rtc_task_t *rtc = t->private_data; 82 82 if (rtc) { 83 83 rtc_unregister(rtc); 84 + tasklet_kill(&rtc_tasklet); 84 85 t->private_data = NULL; 85 86 } 86 87 return 0; ··· 106 105 return 0; 107 106 } 108 107 108 + static void rtctimer_tasklet(unsigned long data) 109 + { 110 + snd_timer_interrupt((struct snd_timer *)data, 1); 111 + } 112 + 109 113 /* 110 114 * interrupt 111 115 */ 112 116 static void rtctimer_interrupt(void *private_data) 113 117 { 114 - snd_timer_interrupt(private_data, 1); 118 + tasklet_hi_schedule(private_data); 115 119 } 116 120 117 121 ··· 145 139 timer->hw = rtc_hw; 146 140 timer->hw.resolution = NANO_SEC / rtctimer_freq; 147 141 142 + tasklet_init(&rtc_tasklet, rtctimer_tasklet, (unsigned long)timer); 143 + 148 144 /* set up RTC callback */ 149 145 rtc_task.func = rtctimer_interrupt; 150 - rtc_task.private_data = timer; 146 + rtc_task.private_data = &rtc_tasklet; 151 147 152 148 err = snd_timer_global_register(timer); 153 149 if (err < 0) {
+1
sound/pci/emu10k1/emu10k1_main.c
··· 956 956 .ca0151_chip = 1, 957 957 .spk71 = 1, 958 958 .spdif_bug = 1, 959 + .adc_1361t = 1, /* 24 bit capture instead of 16bit. Fixes ALSA bug#324 */ 959 960 .ac97_chip = 1} , 960 961 {.vendor = 0x1102, .device = 0x0004, .revision = 0x04, 961 962 .driver = "Audigy2", .name = "Audigy 2 [Unknown]",
+1 -1
sound/pci/hda/patch_realtek.c
··· 5870 5870 { .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397, 5871 5871 .config = ALC262_FUJITSU }, 5872 5872 { .modelname = "hp-bpc", .config = ALC262_HP_BPC }, 5873 - { .pci_subvendor = 0x103c, .pci_subdevice = 0x208c, 5873 + { .pci_subvendor = 0x103c, .pci_subdevice = 0x280c, 5874 5874 .config = ALC262_HP_BPC }, /* xw4400 */ 5875 5875 { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, 5876 5876 .config = ALC262_HP_BPC }, /* xw6400 */
+7 -7
sound/pci/hda/patch_sigmatel.c
··· 336 336 .pci_subvendor = PCI_VENDOR_ID_INTEL, 337 337 .pci_subdevice = 0x2668, /* DFI LanParty */ 338 338 .config = STAC_REF }, 339 + /* Dell laptops have BIOS problem */ 340 + { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01b5, 341 + .config = STAC_REF }, /* Dell Inspiron 630m */ 342 + { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01c2, 343 + .config = STAC_REF }, /* Dell Latitude D620 */ 344 + { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01cb, 345 + .config = STAC_REF }, /* Dell Latitude 120L */ 339 346 {} /* terminator */ 340 347 }; 341 348 ··· 598 591 .pci_subvendor = PCI_VENDOR_ID_INTEL, 599 592 .pci_subdevice = 0x2668, /* DFI LanParty */ 600 593 .config = STAC_REF }, /* SigmaTel reference board */ 601 - /* Dell laptops have BIOS problem */ 602 - { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01b5, 603 - .config = STAC_REF }, /* Dell Inspiron 630m */ 604 - { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01c2, 605 - .config = STAC_REF }, /* Dell Latitude D620 */ 606 - { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01cb, 607 - .config = STAC_REF }, /* Dell Latitude 120L */ 608 594 {} /* terminator */ 609 595 }; 610 596
+2 -1
sound/usb/usbaudio.c
··· 1469 1469 subs->cur_audiofmt = NULL; 1470 1470 subs->cur_rate = 0; 1471 1471 subs->period_bytes = 0; 1472 - release_substream_urbs(subs, 0); 1472 + if (!subs->stream->chip->shutdown) 1473 + release_substream_urbs(subs, 0); 1473 1474 return snd_pcm_free_vmalloc_buffer(substream); 1474 1475 } 1475 1476