diff options
| author | David Howells <dhowells@redhat.com> | 2006-12-05 09:37:56 -0500 |
|---|---|---|
| committer | David Howells <dhowells@warthog.cambridge.redhat.com> | 2006-12-05 09:37:56 -0500 |
| commit | 4c1ac1b49122b805adfa4efc620592f68dccf5db (patch) | |
| tree | 87557f4bc2fd4fe65b7570489c2f610c45c0adcd /sound | |
| parent | c4028958b6ecad064b1a6303a6a5906d4fe48d73 (diff) | |
| parent | d916faace3efc0bf19fe9a615a1ab8fa1a24cd93 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
drivers/infiniband/core/iwcm.c
drivers/net/chelsio/cxgb2.c
drivers/net/wireless/bcm43xx/bcm43xx_main.c
drivers/net/wireless/prism54/islpci_eth.c
drivers/usb/core/hub.h
drivers/usb/input/hid-core.c
net/core/netpoll.c
Fix up merge failures with Linus's head and fix new compilation failures.
Signed-Off-By: David Howells <dhowells@redhat.com>
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/Kconfig | 4 | ||||
| -rw-r--r-- | sound/aoa/codecs/snd-aoa-codec-tas.c | 13 | ||||
| -rw-r--r-- | sound/core/init.c | 8 | ||||
| -rw-r--r-- | sound/core/oss/pcm_oss.c | 3 | ||||
| -rw-r--r-- | sound/core/pcm.c | 7 | ||||
| -rw-r--r-- | sound/core/pcm_native.c | 6 | ||||
| -rw-r--r-- | sound/core/rtctimer.c | 20 | ||||
| -rw-r--r-- | sound/core/sound.c | 22 | ||||
| -rw-r--r-- | sound/oss/cs46xx.c | 6 | ||||
| -rw-r--r-- | sound/oss/soundcard.c | 16 | ||||
| -rw-r--r-- | sound/pci/emu10k1/emu10k1_main.c | 1 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 2 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 14 | ||||
| -rw-r--r-- | sound/sound_core.c | 6 | ||||
| -rw-r--r-- | sound/usb/usbaudio.c | 3 | ||||
| -rw-r--r-- | sound/usb/usbmidi.c | 2 | ||||
| -rw-r--r-- | sound/usb/usbmixer.c | 9 |
17 files changed, 81 insertions, 61 deletions
diff --git a/sound/Kconfig b/sound/Kconfig index e0d791a98452..95949b6806ac 100644 --- a/sound/Kconfig +++ b/sound/Kconfig | |||
| @@ -64,11 +64,11 @@ source "sound/arm/Kconfig" | |||
| 64 | 64 | ||
| 65 | source "sound/mips/Kconfig" | 65 | source "sound/mips/Kconfig" |
| 66 | 66 | ||
| 67 | # the following will depenend on the order of config. | 67 | # the following will depend on the order of config. |
| 68 | # here assuming USB is defined before ALSA | 68 | # here assuming USB is defined before ALSA |
| 69 | source "sound/usb/Kconfig" | 69 | source "sound/usb/Kconfig" |
| 70 | 70 | ||
| 71 | # the following will depenend on the order of config. | 71 | # the following will depend on the order of config. |
| 72 | # here assuming PCMCIA is defined before ALSA | 72 | # here assuming PCMCIA is defined before ALSA |
| 73 | source "sound/pcmcia/Kconfig" | 73 | source "sound/pcmcia/Kconfig" |
| 74 | 74 | ||
diff --git a/sound/aoa/codecs/snd-aoa-codec-tas.c b/sound/aoa/codecs/snd-aoa-codec-tas.c index 2ef55a17917c..9de8485ba3f5 100644 --- a/sound/aoa/codecs/snd-aoa-codec-tas.c +++ b/sound/aoa/codecs/snd-aoa-codec-tas.c | |||
| @@ -514,9 +514,15 @@ static int tas_snd_capture_source_put(struct snd_kcontrol *kcontrol, | |||
| 514 | mutex_lock(&tas->mtx); | 514 | mutex_lock(&tas->mtx); |
| 515 | oldacr = tas->acr; | 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 | if (ucontrol->value.enumerated.item[0]) | 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 | if (oldacr == tas->acr) { | 526 | if (oldacr == tas->acr) { |
| 521 | mutex_unlock(&tas->mtx); | 527 | mutex_unlock(&tas->mtx); |
| 522 | return 0; | 528 | return 0; |
| @@ -686,8 +692,7 @@ static int tas_reset_init(struct tas *tas) | |||
| 686 | if (tas_write_reg(tas, TAS_REG_MCS, 1, &tmp)) | 692 | if (tas_write_reg(tas, TAS_REG_MCS, 1, &tmp)) |
| 687 | goto outerr; | 693 | goto outerr; |
| 688 | 694 | ||
| 689 | tas->acr |= TAS_ACR_ANALOG_PDOWN | TAS_ACR_B_MONAUREAL | | 695 | tas->acr |= TAS_ACR_ANALOG_PDOWN; |
| 690 | TAS_ACR_B_MON_SEL_RIGHT; | ||
| 691 | if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr)) | 696 | if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr)) |
| 692 | goto outerr; | 697 | goto outerr; |
| 693 | 698 | ||
diff --git a/sound/core/init.c b/sound/core/init.c index 3058d626a90a..6152a7554dfd 100644 --- a/sound/core/init.c +++ b/sound/core/init.c | |||
| @@ -361,6 +361,8 @@ static int snd_card_do_free(struct snd_card *card) | |||
| 361 | snd_printk(KERN_WARNING "unable to free card info\n"); | 361 | snd_printk(KERN_WARNING "unable to free card info\n"); |
| 362 | /* Not fatal error */ | 362 | /* Not fatal error */ |
| 363 | } | 363 | } |
| 364 | if (card->dev) | ||
| 365 | device_unregister(card->dev); | ||
| 364 | kfree(card); | 366 | kfree(card); |
| 365 | return 0; | 367 | return 0; |
| 366 | } | 368 | } |
| @@ -495,6 +497,12 @@ int snd_card_register(struct snd_card *card) | |||
| 495 | int err; | 497 | int err; |
| 496 | 498 | ||
| 497 | snd_assert(card != NULL, return -EINVAL); | 499 | snd_assert(card != NULL, return -EINVAL); |
| 500 | if (!card->dev) { | ||
| 501 | card->dev = device_create(sound_class, card->parent, 0, | ||
| 502 | "card%i", card->number); | ||
| 503 | if (IS_ERR(card->dev)) | ||
| 504 | card->dev = NULL; | ||
| 505 | } | ||
| 498 | if ((err = snd_device_register_all(card)) < 0) | 506 | if ((err = snd_device_register_all(card)) < 0) |
| 499 | return err; | 507 | return err; |
| 500 | mutex_lock(&snd_card_mutex); | 508 | mutex_lock(&snd_card_mutex); |
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c index 505b23ec4058..e0821eb3d851 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c | |||
| @@ -2359,7 +2359,8 @@ static int snd_pcm_oss_release(struct inode *inode, struct file *file) | |||
| 2359 | substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE]; | 2359 | substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE]; |
| 2360 | snd_assert(substream != NULL, return -ENXIO); | 2360 | snd_assert(substream != NULL, return -ENXIO); |
| 2361 | pcm = substream->pcm; | 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 | mutex_lock(&pcm->open_mutex); | 2364 | mutex_lock(&pcm->open_mutex); |
| 2364 | snd_pcm_oss_release_file(pcm_oss_file); | 2365 | snd_pcm_oss_release_file(pcm_oss_file); |
| 2365 | mutex_unlock(&pcm->open_mutex); | 2366 | mutex_unlock(&pcm->open_mutex); |
diff --git a/sound/core/pcm.c b/sound/core/pcm.c index fbbbcd20c4cc..5ac6e19ccb41 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c | |||
| @@ -910,7 +910,8 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream) | |||
| 910 | substream->pstr->substream_opened--; | 910 | substream->pstr->substream_opened--; |
| 911 | } | 911 | } |
| 912 | 912 | ||
| 913 | static ssize_t show_pcm_class(struct class_device *class_device, char *buf) | 913 | static ssize_t show_pcm_class(struct device *dev, |
| 914 | struct device_attribute *attr, char *buf) | ||
| 914 | { | 915 | { |
| 915 | struct snd_pcm *pcm; | 916 | struct snd_pcm *pcm; |
| 916 | const char *str; | 917 | const char *str; |
| @@ -921,7 +922,7 @@ static ssize_t show_pcm_class(struct class_device *class_device, char *buf) | |||
| 921 | [SNDRV_PCM_CLASS_DIGITIZER] = "digitizer", | 922 | [SNDRV_PCM_CLASS_DIGITIZER] = "digitizer", |
| 922 | }; | 923 | }; |
| 923 | 924 | ||
| 924 | if (! (pcm = class_get_devdata(class_device)) || | 925 | if (! (pcm = dev_get_drvdata(dev)) || |
| 925 | pcm->dev_class > SNDRV_PCM_CLASS_LAST) | 926 | pcm->dev_class > SNDRV_PCM_CLASS_LAST) |
| 926 | str = "none"; | 927 | str = "none"; |
| 927 | else | 928 | else |
| @@ -929,7 +930,7 @@ static ssize_t show_pcm_class(struct class_device *class_device, char *buf) | |||
| 929 | return snprintf(buf, PAGE_SIZE, "%s\n", str); | 930 | return snprintf(buf, PAGE_SIZE, "%s\n", str); |
| 930 | } | 931 | } |
| 931 | 932 | ||
| 932 | static struct class_device_attribute pcm_attrs = | 933 | static struct device_attribute pcm_attrs = |
| 933 | __ATTR(pcm_class, S_IRUGO, show_pcm_class, NULL); | 934 | __ATTR(pcm_class, S_IRUGO, show_pcm_class, NULL); |
| 934 | 935 | ||
| 935 | static int snd_pcm_dev_register(struct snd_device *device) | 936 | static int snd_pcm_dev_register(struct snd_device *device) |
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 37b4b10850ae..66e24b5da469 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c | |||
| @@ -1310,7 +1310,8 @@ static int snd_pcm_pre_prepare(struct snd_pcm_substream *substream, | |||
| 1310 | int f_flags) | 1310 | int f_flags) |
| 1311 | { | 1311 | { |
| 1312 | struct snd_pcm_runtime *runtime = substream->runtime; | 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 | return -EBADFD; | 1315 | return -EBADFD; |
| 1315 | if (snd_pcm_running(substream)) | 1316 | if (snd_pcm_running(substream)) |
| 1316 | return -EBUSY; | 1317 | return -EBUSY; |
| @@ -1568,7 +1569,8 @@ static int snd_pcm_drop(struct snd_pcm_substream *substream) | |||
| 1568 | runtime = substream->runtime; | 1569 | runtime = substream->runtime; |
| 1569 | card = substream->pcm->card; | 1570 | card = substream->pcm->card; |
| 1570 | 1571 | ||
| 1571 | if (runtime->status->state == SNDRV_PCM_STATE_OPEN) | 1572 | if (runtime->status->state == SNDRV_PCM_STATE_OPEN || |
| 1573 | runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED) | ||
| 1572 | return -EBADFD; | 1574 | return -EBADFD; |
| 1573 | 1575 | ||
| 1574 | snd_power_lock(card); | 1576 | snd_power_lock(card); |
diff --git a/sound/core/rtctimer.c b/sound/core/rtctimer.c index 412dd62b654e..9f7b32e1ccde 100644 --- a/sound/core/rtctimer.c +++ b/sound/core/rtctimer.c | |||
| @@ -22,13 +22,10 @@ | |||
| 22 | 22 | ||
| 23 | #include <sound/driver.h> | 23 | #include <sound/driver.h> |
| 24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
| 25 | #include <linux/time.h> | ||
| 26 | #include <linux/threads.h> | ||
| 27 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
| 28 | #include <linux/moduleparam.h> | 26 | #include <linux/moduleparam.h> |
| 29 | #include <sound/core.h> | 27 | #include <sound/core.h> |
| 30 | #include <sound/timer.h> | 28 | #include <sound/timer.h> |
| 31 | #include <sound/info.h> | ||
| 32 | 29 | ||
| 33 | #if defined(CONFIG_RTC) || defined(CONFIG_RTC_MODULE) | 30 | #if defined(CONFIG_RTC) || defined(CONFIG_RTC_MODULE) |
| 34 | 31 | ||
| @@ -50,7 +47,9 @@ static int rtctimer_stop(struct snd_timer *t); | |||
| 50 | * The hardware dependent description for this timer. | 47 | * The hardware dependent description for this timer. |
| 51 | */ | 48 | */ |
| 52 | static struct snd_timer_hardware rtc_hw = { | 49 | static struct snd_timer_hardware rtc_hw = { |
| 53 | .flags = SNDRV_TIMER_HW_FIRST|SNDRV_TIMER_HW_AUTO, | 50 | .flags = SNDRV_TIMER_HW_AUTO | |
| 51 | SNDRV_TIMER_HW_FIRST | | ||
| 52 | SNDRV_TIMER_HW_TASKLET, | ||
| 54 | .ticks = 100000000L, /* FIXME: XXX */ | 53 | .ticks = 100000000L, /* FIXME: XXX */ |
| 55 | .open = rtctimer_open, | 54 | .open = rtctimer_open, |
| 56 | .close = rtctimer_close, | 55 | .close = rtctimer_close, |
| @@ -60,6 +59,7 @@ static struct snd_timer_hardware rtc_hw = { | |||
| 60 | 59 | ||
| 61 | static int rtctimer_freq = RTC_FREQ; /* frequency */ | 60 | static int rtctimer_freq = RTC_FREQ; /* frequency */ |
| 62 | static struct snd_timer *rtctimer; | 61 | static struct snd_timer *rtctimer; |
| 62 | static struct tasklet_struct rtc_tasklet; | ||
| 63 | static rtc_task_t rtc_task; | 63 | static rtc_task_t rtc_task; |
| 64 | 64 | ||
| 65 | 65 | ||
| @@ -81,6 +81,7 @@ rtctimer_close(struct snd_timer *t) | |||
| 81 | rtc_task_t *rtc = t->private_data; | 81 | rtc_task_t *rtc = t->private_data; |
| 82 | if (rtc) { | 82 | if (rtc) { |
| 83 | rtc_unregister(rtc); | 83 | rtc_unregister(rtc); |
| 84 | tasklet_kill(&rtc_tasklet); | ||
| 84 | t->private_data = NULL; | 85 | t->private_data = NULL; |
| 85 | } | 86 | } |
| 86 | return 0; | 87 | return 0; |
| @@ -105,12 +106,17 @@ rtctimer_stop(struct snd_timer *timer) | |||
| 105 | return 0; | 106 | return 0; |
| 106 | } | 107 | } |
| 107 | 108 | ||
| 109 | static void rtctimer_tasklet(unsigned long data) | ||
| 110 | { | ||
| 111 | snd_timer_interrupt((struct snd_timer *)data, 1); | ||
| 112 | } | ||
| 113 | |||
| 108 | /* | 114 | /* |
| 109 | * interrupt | 115 | * interrupt |
| 110 | */ | 116 | */ |
| 111 | static void rtctimer_interrupt(void *private_data) | 117 | static void rtctimer_interrupt(void *private_data) |
| 112 | { | 118 | { |
| 113 | snd_timer_interrupt(private_data, 1); | 119 | tasklet_hi_schedule(private_data); |
| 114 | } | 120 | } |
| 115 | 121 | ||
| 116 | 122 | ||
| @@ -139,9 +145,11 @@ static int __init rtctimer_init(void) | |||
| 139 | timer->hw = rtc_hw; | 145 | timer->hw = rtc_hw; |
| 140 | timer->hw.resolution = NANO_SEC / rtctimer_freq; | 146 | timer->hw.resolution = NANO_SEC / rtctimer_freq; |
| 141 | 147 | ||
| 148 | tasklet_init(&rtc_tasklet, rtctimer_tasklet, (unsigned long)timer); | ||
| 149 | |||
| 142 | /* set up RTC callback */ | 150 | /* set up RTC callback */ |
| 143 | rtc_task.func = rtctimer_interrupt; | 151 | rtc_task.func = rtctimer_interrupt; |
| 144 | rtc_task.private_data = timer; | 152 | rtc_task.private_data = &rtc_tasklet; |
| 145 | 153 | ||
| 146 | err = snd_timer_global_register(timer); | 154 | err = snd_timer_global_register(timer); |
| 147 | if (err < 0) { | 155 | if (err < 0) { |
diff --git a/sound/core/sound.c b/sound/core/sound.c index efa476c5210a..282742022de6 100644 --- a/sound/core/sound.c +++ b/sound/core/sound.c | |||
| @@ -61,9 +61,6 @@ EXPORT_SYMBOL(snd_ecards_limit); | |||
| 61 | static struct snd_minor *snd_minors[SNDRV_OS_MINORS]; | 61 | static struct snd_minor *snd_minors[SNDRV_OS_MINORS]; |
| 62 | static DEFINE_MUTEX(sound_mutex); | 62 | static DEFINE_MUTEX(sound_mutex); |
| 63 | 63 | ||
| 64 | extern struct class *sound_class; | ||
| 65 | |||
| 66 | |||
| 67 | #ifdef CONFIG_KMOD | 64 | #ifdef CONFIG_KMOD |
| 68 | 65 | ||
| 69 | /** | 66 | /** |
| @@ -268,11 +265,10 @@ int snd_register_device(int type, struct snd_card *card, int dev, | |||
| 268 | snd_minors[minor] = preg; | 265 | snd_minors[minor] = preg; |
| 269 | if (card) | 266 | if (card) |
| 270 | device = card->dev; | 267 | device = card->dev; |
| 271 | preg->class_dev = class_device_create(sound_class, NULL, | 268 | preg->dev = device_create(sound_class, device, MKDEV(major, minor), |
| 272 | MKDEV(major, minor), | 269 | "%s", name); |
| 273 | device, "%s", name); | 270 | if (preg->dev) |
| 274 | if (preg->class_dev) | 271 | dev_set_drvdata(preg->dev, private_data); |
| 275 | class_set_devdata(preg->class_dev, private_data); | ||
| 276 | 272 | ||
| 277 | mutex_unlock(&sound_mutex); | 273 | mutex_unlock(&sound_mutex); |
| 278 | return 0; | 274 | return 0; |
| @@ -320,7 +316,7 @@ int snd_unregister_device(int type, struct snd_card *card, int dev) | |||
| 320 | return -EINVAL; | 316 | return -EINVAL; |
| 321 | } | 317 | } |
| 322 | 318 | ||
| 323 | class_device_destroy(sound_class, MKDEV(major, minor)); | 319 | device_destroy(sound_class, MKDEV(major, minor)); |
| 324 | 320 | ||
| 325 | kfree(snd_minors[minor]); | 321 | kfree(snd_minors[minor]); |
| 326 | snd_minors[minor] = NULL; | 322 | snd_minors[minor] = NULL; |
| @@ -331,15 +327,15 @@ int snd_unregister_device(int type, struct snd_card *card, int dev) | |||
| 331 | EXPORT_SYMBOL(snd_unregister_device); | 327 | EXPORT_SYMBOL(snd_unregister_device); |
| 332 | 328 | ||
| 333 | int snd_add_device_sysfs_file(int type, struct snd_card *card, int dev, | 329 | int snd_add_device_sysfs_file(int type, struct snd_card *card, int dev, |
| 334 | const struct class_device_attribute *attr) | 330 | struct device_attribute *attr) |
| 335 | { | 331 | { |
| 336 | int minor, ret = -EINVAL; | 332 | int minor, ret = -EINVAL; |
| 337 | struct class_device *cdev; | 333 | struct device *d; |
| 338 | 334 | ||
| 339 | mutex_lock(&sound_mutex); | 335 | mutex_lock(&sound_mutex); |
| 340 | minor = find_snd_minor(type, card, dev); | 336 | minor = find_snd_minor(type, card, dev); |
| 341 | if (minor >= 0 && (cdev = snd_minors[minor]->class_dev) != NULL) | 337 | if (minor >= 0 && (d = snd_minors[minor]->dev) != NULL) |
| 342 | ret = class_device_create_file(cdev, attr); | 338 | ret = device_create_file(d, attr); |
| 343 | mutex_unlock(&sound_mutex); | 339 | mutex_unlock(&sound_mutex); |
| 344 | return ret; | 340 | return ret; |
| 345 | 341 | ||
diff --git a/sound/oss/cs46xx.c b/sound/oss/cs46xx.c index 6e3c41f530e6..b1c5d8286e40 100644 --- a/sound/oss/cs46xx.c +++ b/sound/oss/cs46xx.c | |||
| @@ -779,7 +779,7 @@ static unsigned int cs_set_adc_rate(struct cs_state *state, unsigned int rate) | |||
| 779 | rate = 48000 / 9; | 779 | rate = 48000 / 9; |
| 780 | 780 | ||
| 781 | /* | 781 | /* |
| 782 | * We can not capture at at rate greater than the Input Rate (48000). | 782 | * We cannot capture at at rate greater than the Input Rate (48000). |
| 783 | * Return an error if an attempt is made to stray outside that limit. | 783 | * Return an error if an attempt is made to stray outside that limit. |
| 784 | */ | 784 | */ |
| 785 | if (rate > 48000) | 785 | if (rate > 48000) |
| @@ -4754,8 +4754,8 @@ static int cs_hardware_init(struct cs_card *card) | |||
| 4754 | mdelay(5 * cs_laptop_wait); /* Shouldnt be needed ?? */ | 4754 | mdelay(5 * cs_laptop_wait); /* Shouldnt be needed ?? */ |
| 4755 | 4755 | ||
| 4756 | /* | 4756 | /* |
| 4757 | * If we are resuming under 2.2.x then we can not schedule a timeout. | 4757 | * If we are resuming under 2.2.x then we cannot schedule a timeout, |
| 4758 | * so, just spin the CPU. | 4758 | * so just spin the CPU. |
| 4759 | */ | 4759 | */ |
| 4760 | if (card->pm.flags & CS46XX_PM_IDLE) { | 4760 | if (card->pm.flags & CS46XX_PM_IDLE) { |
| 4761 | /* | 4761 | /* |
diff --git a/sound/oss/soundcard.c b/sound/oss/soundcard.c index 2344d09c7114..75c5e745705f 100644 --- a/sound/oss/soundcard.c +++ b/sound/oss/soundcard.c | |||
| @@ -557,17 +557,17 @@ static int __init oss_init(void) | |||
| 557 | sound_dmap_flag = (dmabuf > 0 ? 1 : 0); | 557 | sound_dmap_flag = (dmabuf > 0 ? 1 : 0); |
| 558 | 558 | ||
| 559 | for (i = 0; i < sizeof (dev_list) / sizeof *dev_list; i++) { | 559 | for (i = 0; i < sizeof (dev_list) / sizeof *dev_list; i++) { |
| 560 | class_device_create(sound_class, NULL, | 560 | device_create(sound_class, NULL, |
| 561 | MKDEV(SOUND_MAJOR, dev_list[i].minor), | 561 | MKDEV(SOUND_MAJOR, dev_list[i].minor), |
| 562 | NULL, "%s", dev_list[i].name); | 562 | "%s", dev_list[i].name); |
| 563 | 563 | ||
| 564 | if (!dev_list[i].num) | 564 | if (!dev_list[i].num) |
| 565 | continue; | 565 | continue; |
| 566 | 566 | ||
| 567 | for (j = 1; j < *dev_list[i].num; j++) | 567 | for (j = 1; j < *dev_list[i].num; j++) |
| 568 | class_device_create(sound_class, NULL, | 568 | device_create(sound_class, NULL, |
| 569 | MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10)), | 569 | MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10)), |
| 570 | NULL, "%s%d", dev_list[i].name, j); | 570 | "%s%d", dev_list[i].name, j); |
| 571 | } | 571 | } |
| 572 | 572 | ||
| 573 | if (sound_nblocks >= 1024) | 573 | if (sound_nblocks >= 1024) |
| @@ -581,11 +581,11 @@ static void __exit oss_cleanup(void) | |||
| 581 | int i, j; | 581 | int i, j; |
| 582 | 582 | ||
| 583 | for (i = 0; i < sizeof (dev_list) / sizeof *dev_list; i++) { | 583 | for (i = 0; i < sizeof (dev_list) / sizeof *dev_list; i++) { |
| 584 | class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor)); | 584 | device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor)); |
| 585 | if (!dev_list[i].num) | 585 | if (!dev_list[i].num) |
| 586 | continue; | 586 | continue; |
| 587 | for (j = 1; j < *dev_list[i].num; j++) | 587 | for (j = 1; j < *dev_list[i].num; j++) |
| 588 | class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10))); | 588 | device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10))); |
| 589 | } | 589 | } |
| 590 | 590 | ||
| 591 | unregister_sound_special(1); | 591 | unregister_sound_special(1); |
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index 8058059c56e9..8bc4ffa6220d 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
| @@ -956,6 +956,7 @@ static struct snd_emu_chip_details emu_chip_details[] = { | |||
| 956 | .ca0151_chip = 1, | 956 | .ca0151_chip = 1, |
| 957 | .spk71 = 1, | 957 | .spk71 = 1, |
| 958 | .spdif_bug = 1, | 958 | .spdif_bug = 1, |
| 959 | .adc_1361t = 1, /* 24 bit capture instead of 16bit. Fixes ALSA bug#324 */ | ||
| 959 | .ac97_chip = 1} , | 960 | .ac97_chip = 1} , |
| 960 | {.vendor = 0x1102, .device = 0x0004, .revision = 0x04, | 961 | {.vendor = 0x1102, .device = 0x0004, .revision = 0x04, |
| 961 | .driver = "Audigy2", .name = "Audigy 2 [Unknown]", | 962 | .driver = "Audigy2", .name = "Audigy 2 [Unknown]", |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 0d728c6f697c..fb961448db19 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -5870,7 +5870,7 @@ static struct hda_board_config alc262_cfg_tbl[] = { | |||
| 5870 | { .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397, | 5870 | { .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397, |
| 5871 | .config = ALC262_FUJITSU }, | 5871 | .config = ALC262_FUJITSU }, |
| 5872 | { .modelname = "hp-bpc", .config = ALC262_HP_BPC }, | 5872 | { .modelname = "hp-bpc", .config = ALC262_HP_BPC }, |
| 5873 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x208c, | 5873 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x280c, |
| 5874 | .config = ALC262_HP_BPC }, /* xw4400 */ | 5874 | .config = ALC262_HP_BPC }, /* xw4400 */ |
| 5875 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, | 5875 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, |
| 5876 | .config = ALC262_HP_BPC }, /* xw6400 */ | 5876 | .config = ALC262_HP_BPC }, /* xw6400 */ |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 731b7b97ee71..fe51ef3e49d2 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -336,6 +336,13 @@ static struct hda_board_config stac9200_cfg_tbl[] = { | |||
| 336 | .pci_subvendor = PCI_VENDOR_ID_INTEL, | 336 | .pci_subvendor = PCI_VENDOR_ID_INTEL, |
| 337 | .pci_subdevice = 0x2668, /* DFI LanParty */ | 337 | .pci_subdevice = 0x2668, /* DFI LanParty */ |
| 338 | .config = STAC_REF }, | 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 | {} /* terminator */ | 346 | {} /* terminator */ |
| 340 | }; | 347 | }; |
| 341 | 348 | ||
| @@ -591,13 +598,6 @@ static struct hda_board_config stac9205_cfg_tbl[] = { | |||
| 591 | .pci_subvendor = PCI_VENDOR_ID_INTEL, | 598 | .pci_subvendor = PCI_VENDOR_ID_INTEL, |
| 592 | .pci_subdevice = 0x2668, /* DFI LanParty */ | 599 | .pci_subdevice = 0x2668, /* DFI LanParty */ |
| 593 | .config = STAC_REF }, /* SigmaTel reference board */ | 600 | .config = STAC_REF }, /* SigmaTel reference board */ |
| 594 | /* Dell laptops have BIOS problem */ | ||
| 595 | { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01b5, | ||
| 596 | .config = STAC_REF }, /* Dell Inspiron 630m */ | ||
| 597 | { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01c2, | ||
| 598 | .config = STAC_REF }, /* Dell Latitude D620 */ | ||
| 599 | { .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01cb, | ||
| 600 | .config = STAC_REF }, /* Dell Latitude 120L */ | ||
| 601 | {} /* terminator */ | 601 | {} /* terminator */ |
| 602 | }; | 602 | }; |
| 603 | 603 | ||
diff --git a/sound/sound_core.c b/sound/sound_core.c index 5322c50c9617..8f1ced4ab34c 100644 --- a/sound/sound_core.c +++ b/sound/sound_core.c | |||
| @@ -170,8 +170,8 @@ static int sound_insert_unit(struct sound_unit **list, const struct file_operati | |||
| 170 | else | 170 | else |
| 171 | sprintf(s->name, "sound/%s%d", name, r / SOUND_STEP); | 171 | sprintf(s->name, "sound/%s%d", name, r / SOUND_STEP); |
| 172 | 172 | ||
| 173 | class_device_create(sound_class, NULL, MKDEV(SOUND_MAJOR, s->unit_minor), | 173 | device_create(sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor), |
| 174 | dev, s->name+6); | 174 | s->name+6); |
| 175 | return r; | 175 | return r; |
| 176 | 176 | ||
| 177 | fail: | 177 | fail: |
| @@ -193,7 +193,7 @@ static void sound_remove_unit(struct sound_unit **list, int unit) | |||
| 193 | p = __sound_remove_unit(list, unit); | 193 | p = __sound_remove_unit(list, unit); |
| 194 | spin_unlock(&sound_loader_lock); | 194 | spin_unlock(&sound_loader_lock); |
| 195 | if (p) { | 195 | if (p) { |
| 196 | class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor)); | 196 | device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor)); |
| 197 | kfree(p); | 197 | kfree(p); |
| 198 | } | 198 | } |
| 199 | } | 199 | } |
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index c82b01c7ad3a..67202b9eeb77 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
| @@ -1469,7 +1469,8 @@ static int snd_usb_hw_free(struct snd_pcm_substream *substream) | |||
| 1469 | subs->cur_audiofmt = NULL; | 1469 | subs->cur_audiofmt = NULL; |
| 1470 | subs->cur_rate = 0; | 1470 | subs->cur_rate = 0; |
| 1471 | subs->period_bytes = 0; | 1471 | subs->period_bytes = 0; |
| 1472 | release_substream_urbs(subs, 0); | 1472 | if (!subs->stream->chip->shutdown) |
| 1473 | release_substream_urbs(subs, 0); | ||
| 1473 | return snd_pcm_free_vmalloc_buffer(substream); | 1474 | return snd_pcm_free_vmalloc_buffer(substream); |
| 1474 | } | 1475 | } |
| 1475 | 1476 | ||
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index b7c5e59b2299..24f5a26c5f0c 100644 --- a/sound/usb/usbmidi.c +++ b/sound/usb/usbmidi.c | |||
| @@ -981,7 +981,7 @@ void snd_usbmidi_disconnect(struct list_head* p) | |||
| 981 | if (umidi->usb_protocol_ops->finish_out_endpoint) | 981 | if (umidi->usb_protocol_ops->finish_out_endpoint) |
| 982 | umidi->usb_protocol_ops->finish_out_endpoint(ep->out); | 982 | umidi->usb_protocol_ops->finish_out_endpoint(ep->out); |
| 983 | } | 983 | } |
| 984 | if (ep->in && ep->in->urb) | 984 | if (ep->in) |
| 985 | usb_kill_urb(ep->in->urb); | 985 | usb_kill_urb(ep->in->urb); |
| 986 | } | 986 | } |
| 987 | } | 987 | } |
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c index 1024c178f5c0..e74eb1bc8d87 100644 --- a/sound/usb/usbmixer.c +++ b/sound/usb/usbmixer.c | |||
| @@ -1620,8 +1620,7 @@ static void snd_usb_mixer_free(struct usb_mixer_interface *mixer) | |||
| 1620 | kfree(mixer->urb->transfer_buffer); | 1620 | kfree(mixer->urb->transfer_buffer); |
| 1621 | usb_free_urb(mixer->urb); | 1621 | usb_free_urb(mixer->urb); |
| 1622 | } | 1622 | } |
| 1623 | if (mixer->rc_urb) | 1623 | usb_free_urb(mixer->rc_urb); |
| 1624 | usb_free_urb(mixer->rc_urb); | ||
| 1625 | kfree(mixer->rc_setup_packet); | 1624 | kfree(mixer->rc_setup_packet); |
| 1626 | kfree(mixer); | 1625 | kfree(mixer); |
| 1627 | } | 1626 | } |
| @@ -2056,8 +2055,6 @@ void snd_usb_mixer_disconnect(struct list_head *p) | |||
| 2056 | struct usb_mixer_interface *mixer; | 2055 | struct usb_mixer_interface *mixer; |
| 2057 | 2056 | ||
| 2058 | mixer = list_entry(p, struct usb_mixer_interface, list); | 2057 | mixer = list_entry(p, struct usb_mixer_interface, list); |
| 2059 | if (mixer->urb) | 2058 | usb_kill_urb(mixer->urb); |
| 2060 | usb_kill_urb(mixer->urb); | 2059 | usb_kill_urb(mixer->rc_urb); |
| 2061 | if (mixer->rc_urb) | ||
| 2062 | usb_kill_urb(mixer->rc_urb); | ||
| 2063 | } | 2060 | } |
