You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
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>
This commit is contained in:
+2
-2
@@ -64,11 +64,11 @@ source "sound/arm/Kconfig"
|
||||
|
||||
source "sound/mips/Kconfig"
|
||||
|
||||
# the following will depenend on the order of config.
|
||||
# the following will depend on the order of config.
|
||||
# here assuming USB is defined before ALSA
|
||||
source "sound/usb/Kconfig"
|
||||
|
||||
# the following will depenend on the order of config.
|
||||
# the following will depend on the order of config.
|
||||
# here assuming PCMCIA is defined before ALSA
|
||||
source "sound/pcmcia/Kconfig"
|
||||
|
||||
|
||||
@@ -514,9 +514,15 @@ static int tas_snd_capture_source_put(struct snd_kcontrol *kcontrol,
|
||||
mutex_lock(&tas->mtx);
|
||||
oldacr = tas->acr;
|
||||
|
||||
tas->acr &= ~TAS_ACR_INPUT_B;
|
||||
/*
|
||||
* Despite what the data sheet says in one place, the
|
||||
* TAS_ACR_B_MONAUREAL bit forces mono output even when
|
||||
* input A (line in) is selected.
|
||||
*/
|
||||
tas->acr &= ~(TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL);
|
||||
if (ucontrol->value.enumerated.item[0])
|
||||
tas->acr |= TAS_ACR_INPUT_B;
|
||||
tas->acr |= TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL |
|
||||
TAS_ACR_B_MON_SEL_RIGHT;
|
||||
if (oldacr == tas->acr) {
|
||||
mutex_unlock(&tas->mtx);
|
||||
return 0;
|
||||
@@ -686,8 +692,7 @@ static int tas_reset_init(struct tas *tas)
|
||||
if (tas_write_reg(tas, TAS_REG_MCS, 1, &tmp))
|
||||
goto outerr;
|
||||
|
||||
tas->acr |= TAS_ACR_ANALOG_PDOWN | TAS_ACR_B_MONAUREAL |
|
||||
TAS_ACR_B_MON_SEL_RIGHT;
|
||||
tas->acr |= TAS_ACR_ANALOG_PDOWN;
|
||||
if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr))
|
||||
goto outerr;
|
||||
|
||||
|
||||
@@ -361,6 +361,8 @@ static int snd_card_do_free(struct snd_card *card)
|
||||
snd_printk(KERN_WARNING "unable to free card info\n");
|
||||
/* Not fatal error */
|
||||
}
|
||||
if (card->dev)
|
||||
device_unregister(card->dev);
|
||||
kfree(card);
|
||||
return 0;
|
||||
}
|
||||
@@ -495,6 +497,12 @@ int snd_card_register(struct snd_card *card)
|
||||
int err;
|
||||
|
||||
snd_assert(card != NULL, return -EINVAL);
|
||||
if (!card->dev) {
|
||||
card->dev = device_create(sound_class, card->parent, 0,
|
||||
"card%i", card->number);
|
||||
if (IS_ERR(card->dev))
|
||||
card->dev = NULL;
|
||||
}
|
||||
if ((err = snd_device_register_all(card)) < 0)
|
||||
return err;
|
||||
mutex_lock(&snd_card_mutex);
|
||||
|
||||
@@ -2359,7 +2359,8 @@ static int snd_pcm_oss_release(struct inode *inode, struct file *file)
|
||||
substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE];
|
||||
snd_assert(substream != NULL, return -ENXIO);
|
||||
pcm = substream->pcm;
|
||||
snd_pcm_oss_sync(pcm_oss_file);
|
||||
if (!pcm->card->shutdown)
|
||||
snd_pcm_oss_sync(pcm_oss_file);
|
||||
mutex_lock(&pcm->open_mutex);
|
||||
snd_pcm_oss_release_file(pcm_oss_file);
|
||||
mutex_unlock(&pcm->open_mutex);
|
||||
|
||||
+4
-3
@@ -910,7 +910,8 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream)
|
||||
substream->pstr->substream_opened--;
|
||||
}
|
||||
|
||||
static ssize_t show_pcm_class(struct class_device *class_device, char *buf)
|
||||
static ssize_t show_pcm_class(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct snd_pcm *pcm;
|
||||
const char *str;
|
||||
@@ -921,7 +922,7 @@ static ssize_t show_pcm_class(struct class_device *class_device, char *buf)
|
||||
[SNDRV_PCM_CLASS_DIGITIZER] = "digitizer",
|
||||
};
|
||||
|
||||
if (! (pcm = class_get_devdata(class_device)) ||
|
||||
if (! (pcm = dev_get_drvdata(dev)) ||
|
||||
pcm->dev_class > SNDRV_PCM_CLASS_LAST)
|
||||
str = "none";
|
||||
else
|
||||
@@ -929,7 +930,7 @@ static ssize_t show_pcm_class(struct class_device *class_device, char *buf)
|
||||
return snprintf(buf, PAGE_SIZE, "%s\n", str);
|
||||
}
|
||||
|
||||
static struct class_device_attribute pcm_attrs =
|
||||
static struct device_attribute pcm_attrs =
|
||||
__ATTR(pcm_class, S_IRUGO, show_pcm_class, NULL);
|
||||
|
||||
static int snd_pcm_dev_register(struct snd_device *device)
|
||||
|
||||
@@ -1310,7 +1310,8 @@ static int snd_pcm_pre_prepare(struct snd_pcm_substream *substream,
|
||||
int f_flags)
|
||||
{
|
||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||
if (runtime->status->state == SNDRV_PCM_STATE_OPEN)
|
||||
if (runtime->status->state == SNDRV_PCM_STATE_OPEN ||
|
||||
runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED)
|
||||
return -EBADFD;
|
||||
if (snd_pcm_running(substream))
|
||||
return -EBUSY;
|
||||
@@ -1568,7 +1569,8 @@ static int snd_pcm_drop(struct snd_pcm_substream *substream)
|
||||
runtime = substream->runtime;
|
||||
card = substream->pcm->card;
|
||||
|
||||
if (runtime->status->state == SNDRV_PCM_STATE_OPEN)
|
||||
if (runtime->status->state == SNDRV_PCM_STATE_OPEN ||
|
||||
runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED)
|
||||
return -EBADFD;
|
||||
|
||||
snd_power_lock(card);
|
||||
|
||||
+14
-6
@@ -22,13 +22,10 @@
|
||||
|
||||
#include <sound/driver.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/threads.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/timer.h>
|
||||
#include <sound/info.h>
|
||||
|
||||
#if defined(CONFIG_RTC) || defined(CONFIG_RTC_MODULE)
|
||||
|
||||
@@ -50,7 +47,9 @@ static int rtctimer_stop(struct snd_timer *t);
|
||||
* The hardware dependent description for this timer.
|
||||
*/
|
||||
static struct snd_timer_hardware rtc_hw = {
|
||||
.flags = SNDRV_TIMER_HW_FIRST|SNDRV_TIMER_HW_AUTO,
|
||||
.flags = SNDRV_TIMER_HW_AUTO |
|
||||
SNDRV_TIMER_HW_FIRST |
|
||||
SNDRV_TIMER_HW_TASKLET,
|
||||
.ticks = 100000000L, /* FIXME: XXX */
|
||||
.open = rtctimer_open,
|
||||
.close = rtctimer_close,
|
||||
@@ -60,6 +59,7 @@ static struct snd_timer_hardware rtc_hw = {
|
||||
|
||||
static int rtctimer_freq = RTC_FREQ; /* frequency */
|
||||
static struct snd_timer *rtctimer;
|
||||
static struct tasklet_struct rtc_tasklet;
|
||||
static rtc_task_t rtc_task;
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@ rtctimer_close(struct snd_timer *t)
|
||||
rtc_task_t *rtc = t->private_data;
|
||||
if (rtc) {
|
||||
rtc_unregister(rtc);
|
||||
tasklet_kill(&rtc_tasklet);
|
||||
t->private_data = NULL;
|
||||
}
|
||||
return 0;
|
||||
@@ -105,12 +106,17 @@ rtctimer_stop(struct snd_timer *timer)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rtctimer_tasklet(unsigned long data)
|
||||
{
|
||||
snd_timer_interrupt((struct snd_timer *)data, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* interrupt
|
||||
*/
|
||||
static void rtctimer_interrupt(void *private_data)
|
||||
{
|
||||
snd_timer_interrupt(private_data, 1);
|
||||
tasklet_hi_schedule(private_data);
|
||||
}
|
||||
|
||||
|
||||
@@ -139,9 +145,11 @@ static int __init rtctimer_init(void)
|
||||
timer->hw = rtc_hw;
|
||||
timer->hw.resolution = NANO_SEC / rtctimer_freq;
|
||||
|
||||
tasklet_init(&rtc_tasklet, rtctimer_tasklet, (unsigned long)timer);
|
||||
|
||||
/* set up RTC callback */
|
||||
rtc_task.func = rtctimer_interrupt;
|
||||
rtc_task.private_data = timer;
|
||||
rtc_task.private_data = &rtc_tasklet;
|
||||
|
||||
err = snd_timer_global_register(timer);
|
||||
if (err < 0) {
|
||||
|
||||
+9
-13
@@ -61,9 +61,6 @@ EXPORT_SYMBOL(snd_ecards_limit);
|
||||
static struct snd_minor *snd_minors[SNDRV_OS_MINORS];
|
||||
static DEFINE_MUTEX(sound_mutex);
|
||||
|
||||
extern struct class *sound_class;
|
||||
|
||||
|
||||
#ifdef CONFIG_KMOD
|
||||
|
||||
/**
|
||||
@@ -268,11 +265,10 @@ int snd_register_device(int type, struct snd_card *card, int dev,
|
||||
snd_minors[minor] = preg;
|
||||
if (card)
|
||||
device = card->dev;
|
||||
preg->class_dev = class_device_create(sound_class, NULL,
|
||||
MKDEV(major, minor),
|
||||
device, "%s", name);
|
||||
if (preg->class_dev)
|
||||
class_set_devdata(preg->class_dev, private_data);
|
||||
preg->dev = device_create(sound_class, device, MKDEV(major, minor),
|
||||
"%s", name);
|
||||
if (preg->dev)
|
||||
dev_set_drvdata(preg->dev, private_data);
|
||||
|
||||
mutex_unlock(&sound_mutex);
|
||||
return 0;
|
||||
@@ -320,7 +316,7 @@ int snd_unregister_device(int type, struct snd_card *card, int dev)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
class_device_destroy(sound_class, MKDEV(major, minor));
|
||||
device_destroy(sound_class, MKDEV(major, minor));
|
||||
|
||||
kfree(snd_minors[minor]);
|
||||
snd_minors[minor] = NULL;
|
||||
@@ -331,15 +327,15 @@ int snd_unregister_device(int type, struct snd_card *card, int dev)
|
||||
EXPORT_SYMBOL(snd_unregister_device);
|
||||
|
||||
int snd_add_device_sysfs_file(int type, struct snd_card *card, int dev,
|
||||
const struct class_device_attribute *attr)
|
||||
struct device_attribute *attr)
|
||||
{
|
||||
int minor, ret = -EINVAL;
|
||||
struct class_device *cdev;
|
||||
struct device *d;
|
||||
|
||||
mutex_lock(&sound_mutex);
|
||||
minor = find_snd_minor(type, card, dev);
|
||||
if (minor >= 0 && (cdev = snd_minors[minor]->class_dev) != NULL)
|
||||
ret = class_device_create_file(cdev, attr);
|
||||
if (minor >= 0 && (d = snd_minors[minor]->dev) != NULL)
|
||||
ret = device_create_file(d, attr);
|
||||
mutex_unlock(&sound_mutex);
|
||||
return ret;
|
||||
|
||||
|
||||
+3
-3
@@ -779,7 +779,7 @@ static unsigned int cs_set_adc_rate(struct cs_state *state, unsigned int rate)
|
||||
rate = 48000 / 9;
|
||||
|
||||
/*
|
||||
* We can not capture at at rate greater than the Input Rate (48000).
|
||||
* We cannot capture at at rate greater than the Input Rate (48000).
|
||||
* Return an error if an attempt is made to stray outside that limit.
|
||||
*/
|
||||
if (rate > 48000)
|
||||
@@ -4754,8 +4754,8 @@ static int cs_hardware_init(struct cs_card *card)
|
||||
mdelay(5 * cs_laptop_wait); /* Shouldnt be needed ?? */
|
||||
|
||||
/*
|
||||
* If we are resuming under 2.2.x then we can not schedule a timeout.
|
||||
* so, just spin the CPU.
|
||||
* If we are resuming under 2.2.x then we cannot schedule a timeout,
|
||||
* so just spin the CPU.
|
||||
*/
|
||||
if (card->pm.flags & CS46XX_PM_IDLE) {
|
||||
/*
|
||||
|
||||
@@ -557,17 +557,17 @@ static int __init oss_init(void)
|
||||
sound_dmap_flag = (dmabuf > 0 ? 1 : 0);
|
||||
|
||||
for (i = 0; i < sizeof (dev_list) / sizeof *dev_list; i++) {
|
||||
class_device_create(sound_class, NULL,
|
||||
MKDEV(SOUND_MAJOR, dev_list[i].minor),
|
||||
NULL, "%s", dev_list[i].name);
|
||||
device_create(sound_class, NULL,
|
||||
MKDEV(SOUND_MAJOR, dev_list[i].minor),
|
||||
"%s", dev_list[i].name);
|
||||
|
||||
if (!dev_list[i].num)
|
||||
continue;
|
||||
|
||||
for (j = 1; j < *dev_list[i].num; j++)
|
||||
class_device_create(sound_class, NULL,
|
||||
MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10)),
|
||||
NULL, "%s%d", dev_list[i].name, j);
|
||||
device_create(sound_class, NULL,
|
||||
MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10)),
|
||||
"%s%d", dev_list[i].name, j);
|
||||
}
|
||||
|
||||
if (sound_nblocks >= 1024)
|
||||
@@ -581,11 +581,11 @@ static void __exit oss_cleanup(void)
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < sizeof (dev_list) / sizeof *dev_list; i++) {
|
||||
class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor));
|
||||
device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor));
|
||||
if (!dev_list[i].num)
|
||||
continue;
|
||||
for (j = 1; j < *dev_list[i].num; j++)
|
||||
class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10)));
|
||||
device_destroy(sound_class, MKDEV(SOUND_MAJOR, dev_list[i].minor + (j*0x10)));
|
||||
}
|
||||
|
||||
unregister_sound_special(1);
|
||||
|
||||
@@ -956,6 +956,7 @@ static struct snd_emu_chip_details emu_chip_details[] = {
|
||||
.ca0151_chip = 1,
|
||||
.spk71 = 1,
|
||||
.spdif_bug = 1,
|
||||
.adc_1361t = 1, /* 24 bit capture instead of 16bit. Fixes ALSA bug#324 */
|
||||
.ac97_chip = 1} ,
|
||||
{.vendor = 0x1102, .device = 0x0004, .revision = 0x04,
|
||||
.driver = "Audigy2", .name = "Audigy 2 [Unknown]",
|
||||
|
||||
@@ -5870,7 +5870,7 @@ static struct hda_board_config alc262_cfg_tbl[] = {
|
||||
{ .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397,
|
||||
.config = ALC262_FUJITSU },
|
||||
{ .modelname = "hp-bpc", .config = ALC262_HP_BPC },
|
||||
{ .pci_subvendor = 0x103c, .pci_subdevice = 0x208c,
|
||||
{ .pci_subvendor = 0x103c, .pci_subdevice = 0x280c,
|
||||
.config = ALC262_HP_BPC }, /* xw4400 */
|
||||
{ .pci_subvendor = 0x103c, .pci_subdevice = 0x3014,
|
||||
.config = ALC262_HP_BPC }, /* xw6400 */
|
||||
|
||||
@@ -336,6 +336,13 @@ static struct hda_board_config stac9200_cfg_tbl[] = {
|
||||
.pci_subvendor = PCI_VENDOR_ID_INTEL,
|
||||
.pci_subdevice = 0x2668, /* DFI LanParty */
|
||||
.config = STAC_REF },
|
||||
/* Dell laptops have BIOS problem */
|
||||
{ .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01b5,
|
||||
.config = STAC_REF }, /* Dell Inspiron 630m */
|
||||
{ .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01c2,
|
||||
.config = STAC_REF }, /* Dell Latitude D620 */
|
||||
{ .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01cb,
|
||||
.config = STAC_REF }, /* Dell Latitude 120L */
|
||||
{} /* terminator */
|
||||
};
|
||||
|
||||
@@ -591,13 +598,6 @@ static struct hda_board_config stac9205_cfg_tbl[] = {
|
||||
.pci_subvendor = PCI_VENDOR_ID_INTEL,
|
||||
.pci_subdevice = 0x2668, /* DFI LanParty */
|
||||
.config = STAC_REF }, /* SigmaTel reference board */
|
||||
/* Dell laptops have BIOS problem */
|
||||
{ .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01b5,
|
||||
.config = STAC_REF }, /* Dell Inspiron 630m */
|
||||
{ .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01c2,
|
||||
.config = STAC_REF }, /* Dell Latitude D620 */
|
||||
{ .pci_subvendor = PCI_VENDOR_ID_DELL, .pci_subdevice = 0x01cb,
|
||||
.config = STAC_REF }, /* Dell Latitude 120L */
|
||||
{} /* terminator */
|
||||
};
|
||||
|
||||
|
||||
+3
-3
@@ -170,8 +170,8 @@ static int sound_insert_unit(struct sound_unit **list, const struct file_operati
|
||||
else
|
||||
sprintf(s->name, "sound/%s%d", name, r / SOUND_STEP);
|
||||
|
||||
class_device_create(sound_class, NULL, MKDEV(SOUND_MAJOR, s->unit_minor),
|
||||
dev, s->name+6);
|
||||
device_create(sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor),
|
||||
s->name+6);
|
||||
return r;
|
||||
|
||||
fail:
|
||||
@@ -193,7 +193,7 @@ static void sound_remove_unit(struct sound_unit **list, int unit)
|
||||
p = __sound_remove_unit(list, unit);
|
||||
spin_unlock(&sound_loader_lock);
|
||||
if (p) {
|
||||
class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
|
||||
device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
|
||||
kfree(p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1469,7 +1469,8 @@ static int snd_usb_hw_free(struct snd_pcm_substream *substream)
|
||||
subs->cur_audiofmt = NULL;
|
||||
subs->cur_rate = 0;
|
||||
subs->period_bytes = 0;
|
||||
release_substream_urbs(subs, 0);
|
||||
if (!subs->stream->chip->shutdown)
|
||||
release_substream_urbs(subs, 0);
|
||||
return snd_pcm_free_vmalloc_buffer(substream);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -981,7 +981,7 @@ void snd_usbmidi_disconnect(struct list_head* p)
|
||||
if (umidi->usb_protocol_ops->finish_out_endpoint)
|
||||
umidi->usb_protocol_ops->finish_out_endpoint(ep->out);
|
||||
}
|
||||
if (ep->in && ep->in->urb)
|
||||
if (ep->in)
|
||||
usb_kill_urb(ep->in->urb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1620,8 +1620,7 @@ static void snd_usb_mixer_free(struct usb_mixer_interface *mixer)
|
||||
kfree(mixer->urb->transfer_buffer);
|
||||
usb_free_urb(mixer->urb);
|
||||
}
|
||||
if (mixer->rc_urb)
|
||||
usb_free_urb(mixer->rc_urb);
|
||||
usb_free_urb(mixer->rc_urb);
|
||||
kfree(mixer->rc_setup_packet);
|
||||
kfree(mixer);
|
||||
}
|
||||
@@ -2056,8 +2055,6 @@ void snd_usb_mixer_disconnect(struct list_head *p)
|
||||
struct usb_mixer_interface *mixer;
|
||||
|
||||
mixer = list_entry(p, struct usb_mixer_interface, list);
|
||||
if (mixer->urb)
|
||||
usb_kill_urb(mixer->urb);
|
||||
if (mixer->rc_urb)
|
||||
usb_kill_urb(mixer->rc_urb);
|
||||
usb_kill_urb(mixer->urb);
|
||||
usb_kill_urb(mixer->rc_urb);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user