]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <torvalds@g5.osdl.org>
Thu, 22 Dec 2005 17:41:03 +0000 (09:41 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 22 Dec 2005 17:41:03 +0000 (09:41 -0800)
arch/powerpc/platforms/pseries/xics.c
drivers/media/video/saa7127.c
drivers/media/video/saa7134/Kconfig
drivers/media/video/saa7134/Makefile
drivers/media/video/saa7134/saa7134-alsa.c
drivers/media/video/saa7134/saa7134-oss.c
fs/nfs/file.c
include/linux/preempt.h

index 72ac18067ecef58c4af36c49502e387be119d3fd..0377decc07190a4f6b7629f41ad73a43a82e921a 100644 (file)
@@ -48,11 +48,6 @@ static struct hw_interrupt_type xics_pic = {
        .set_affinity = xics_set_affinity
 };
 
-static struct hw_interrupt_type xics_8259_pic = {
-       .typename = " XICS/8259",
-       .ack = xics_mask_and_ack_irq,
-};
-
 /* This is used to map real irq numbers to virtual */
 static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC);
 
@@ -367,12 +362,7 @@ int xics_get_irq(struct pt_regs *regs)
        /* for sanity, this had better be < NR_IRQS - 16 */
        if (vec == xics_irq_8259_cascade_real) {
                irq = i8259_irq(regs);
-               if (irq == -1) {
-                       /* Spurious cascaded interrupt.  Still must ack xics */
-                       xics_end_irq(irq_offset_up(xics_irq_8259_cascade));
-
-                       irq = -1;
-               }
+               xics_end_irq(irq_offset_up(xics_irq_8259_cascade));
        } else if (vec == XICS_IRQ_SPURIOUS) {
                irq = -1;
        } else {
@@ -542,6 +532,7 @@ nextnode:
                xics_irq_8259_cascade_real = *ireg;
                xics_irq_8259_cascade
                        = virt_irq_create_mapping(xics_irq_8259_cascade_real);
+               i8259_init(0, 0);
                of_node_put(np);
        }
 
@@ -565,12 +556,7 @@ nextnode:
 #endif /* CONFIG_SMP */
        }
 
-       xics_8259_pic.enable = i8259_pic.enable;
-       xics_8259_pic.disable = i8259_pic.disable;
-       xics_8259_pic.end = i8259_pic.end;
-       for (i = 0; i < 16; ++i)
-               get_irq_desc(i)->handler = &xics_8259_pic;
-       for (; i < NR_IRQS; ++i)
+       for (i = irq_offset_value(); i < NR_IRQS; ++i)
                get_irq_desc(i)->handler = &xics_pic;
 
        xics_setup_cpu();
@@ -590,7 +576,6 @@ static int __init xics_setup_i8259(void)
                                no_action, 0, "8259 cascade", NULL))
                        printk(KERN_ERR "xics_setup_i8259: couldn't get 8259 "
                                        "cascade\n");
-               i8259_init(0, 0);
        }
        return 0;
 }
index 3428e1ed00329f53a48c7b9620a13205178159e1..c36f014f1fdf21bb63c78521608e64e36a60d251 100644 (file)
@@ -389,7 +389,7 @@ static int saa7127_set_vps(struct i2c_client *client, struct v4l2_sliced_vbi_dat
 static int saa7127_set_cc(struct i2c_client *client, struct v4l2_sliced_vbi_data *data)
 {
        struct saa7127_state *state = i2c_get_clientdata(client);
-       u16 cc = data->data[0] << 8 | data->data[1];
+       u16 cc = data->data[1] << 8 | data->data[0];
        int enable = (data->line != 0);
 
        if (enable && (data->field != 0 || data->line != 21))
@@ -397,7 +397,7 @@ static int saa7127_set_cc(struct i2c_client *client, struct v4l2_sliced_vbi_data
        if (state->cc_enable != enable) {
                saa7127_dbg("Turn CC %s\n", enable ? "on" : "off");
                saa7127_write(client, SAA7127_REG_CLOSED_CAPTION,
-                               (enable << 6) | 0x11);
+                               (state->xds_enable << 7) | (enable << 6) | 0x11);
                state->cc_enable = enable;
        }
        if (!enable)
@@ -423,7 +423,7 @@ static int saa7127_set_xds(struct i2c_client *client, struct v4l2_sliced_vbi_dat
        if (state->xds_enable != enable) {
                saa7127_dbg("Turn XDS %s\n", enable ? "on" : "off");
                saa7127_write(client, SAA7127_REG_CLOSED_CAPTION,
-                               (enable << 7) | 0x11);
+                               (enable << 7) | (state->cc_enable << 6) | 0x11);
                state->xds_enable = enable;
        }
        if (!enable)
index c512c4411b38319b513b9bc9bfb7ac80bfda2c59..c0f604a6fe42be25651750f5d239b9ad6b0ddd37 100644 (file)
@@ -1,11 +1,10 @@
 config VIDEO_SAA7134
        tristate "Philips SAA7134 support"
-       depends on VIDEO_DEV && PCI && I2C && SOUND && SND
+       depends on VIDEO_DEV && PCI && I2C
        select VIDEO_BUF
        select VIDEO_IR
        select VIDEO_TUNER
        select CRC32
-       select SND_PCM_OSS
        ---help---
          This is a video4linux driver for Philips SAA713x based
          TV cards.
@@ -13,6 +12,29 @@ config VIDEO_SAA7134
          To compile this driver as a module, choose M here: the
          module will be called saa7134.
 
+config VIDEO_SAA7134_ALSA
+       tristate "Philips SAA7134 DMA audio support"
+       depends on VIDEO_SAA7134 && SOUND && SND && (!VIDEO_SAA7134_OSS || VIDEO_SAA7134_OSS = m)
+       select SND_PCM_OSS
+       ---help---
+         This is a video4linux driver for direct (DMA) audio in
+         Philips SAA713x based TV cards using ALSA
+
+         To compile this driver as a module, choose M here: the
+         module will be called saa7134-alsa.
+
+config VIDEO_SAA7134_OSS
+       tristate "Philips SAA7134 DMA audio support (OSS, DEPRECATED)"
+       depends on VIDEO_SAA7134 && SOUND_PRIME && (!VIDEO_SAA7134_ALSA || VIDEO_SAA7134_ALSA = m)
+       ---help---
+         This is a video4linux driver for direct (DMA) audio in
+         Philips SAA713x based TV cards using OSS
+
+         This is deprecated in favor of the ALSA module
+
+         To compile this driver as a module, choose M here: the
+         module will be called saa7134-oss.
+
 config VIDEO_SAA7134_DVB
        tristate "DVB/ATSC Support for saa7134 based TV cards"
        depends on VIDEO_SAA7134 && DVB_CORE
index 134f83a962188f7d8da5b0d45db4c5cb380455a3..1ba998424bbdcb376fbf6901028f765031aa1e32 100644 (file)
@@ -4,8 +4,11 @@ saa7134-objs :=        saa7134-cards.o saa7134-core.o saa7134-i2c.o    \
                saa7134-video.o saa7134-input.o
 
 obj-$(CONFIG_VIDEO_SAA7134) +=  saa7134.o saa7134-empress.o \
-                               saa6752hs.o saa7134-alsa.o \
-                               saa7134-oss.o
+                               saa6752hs.o
+
+obj-$(CONFIG_VIDEO_SAA7134_ALSA) += saa7134-alsa.o
+obj-$(CONFIG_VIDEO_SAA7134_OSS) += saa7134-oss.o
+
 obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o
 
 EXTRA_CFLAGS += -I$(src)/..
index 6752dd1c1e8a48c4401fc2aa511657603fb78f77..ade05f75fdb05d2c23165c42091913ca56f67859 100644 (file)
@@ -989,6 +989,14 @@ static int saa7134_alsa_init(void)
        struct saa7134_dev *dev = NULL;
        struct list_head *list;
 
+       if (!dmasound_init && !dmasound_exit) {
+               dmasound_init = alsa_device_init;
+               dmasound_exit = alsa_device_exit;
+       } else {
+               printk(KERN_WARNING "saa7134 ALSA: can't load, DMA sound handler already assigned (probably to OSS)\n");
+               return -EBUSY;
+       }
+
        printk(KERN_INFO "saa7134 ALSA driver for DMA sound loaded\n");
 
        list_for_each(list,&saa7134_devlist) {
@@ -1001,9 +1009,6 @@ static int saa7134_alsa_init(void)
                }
        }
 
-       dmasound_init = alsa_device_init;
-       dmasound_exit = alsa_device_exit;
-
        if (dev == NULL)
                printk(KERN_INFO "saa7134 ALSA: no saa7134 cards found\n");
 
@@ -1023,6 +1028,8 @@ static void saa7134_alsa_exit(void)
                snd_card_free(snd_saa7134_cards[idx]);
        }
 
+       dmasound_init = NULL;
+       dmasound_exit = NULL;
        printk(KERN_INFO "saa7134 ALSA driver for DMA sound unloaded\n");
 
        return;
index c450d57b294971bfaff29e6024c6a99fc42fe8ff..8badd2a9cb2ff08d1e5fe07661999c245e6708eb 100644 (file)
@@ -959,8 +959,17 @@ static int saa7134_oss_init(void)
        struct saa7134_dev *dev = NULL;
        struct list_head *list;
 
+       if (!dmasound_init && !dmasound_exit) {
+               dmasound_init = oss_device_init;
+               dmasound_exit = oss_device_exit;
+       } else {
+               printk(KERN_WARNING "saa7134 OSS: can't load, DMA sound handler already assigned (probably to ALSA)\n");
+               return -EBUSY;
+       }
+
        printk(KERN_INFO "saa7134 OSS driver for DMA sound loaded\n");
 
+
        list_for_each(list,&saa7134_devlist) {
                dev = list_entry(list, struct saa7134_dev, devlist);
                if (dev->dmasound.priv_data == NULL) {
@@ -974,9 +983,6 @@ static int saa7134_oss_init(void)
        if (dev == NULL)
                printk(KERN_INFO "saa7134 OSS: no saa7134 cards found\n");
 
-       dmasound_init = oss_device_init;
-       dmasound_exit = oss_device_exit;
-
        return 0;
 
 }
@@ -997,6 +1003,9 @@ static void saa7134_oss_exit(void)
 
        }
 
+       dmasound_init = NULL;
+       dmasound_exit = NULL;
+
        printk(KERN_INFO "saa7134 OSS driver for DMA sound unloaded\n");
 
        return;
index eb5cd4c3bbfdbf3aae12b0f367f544fcc4c4a13b..7a79fbe9f5394c67dd53b01526d37e29fae0ce4e 100644 (file)
@@ -509,7 +509,8 @@ static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl)
                return -EINVAL;
 
        /* No mandatory locks over NFS */
-       if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
+       if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID &&
+           fl->fl_type != F_UNLCK)
                return -ENOLCK;
 
        if (IS_GETLK(cmd))
index d9a2f5254a51194858091bec44bf6bfb43cb9168..5769d14d1e6ab658b7ab8b2a2c9de117ec2b4838 100644 (file)
@@ -48,6 +48,7 @@ do { \
 #define preempt_enable() \
 do { \
        preempt_enable_no_resched(); \
+       barrier(); \
        preempt_check_resched(); \
 } while (0)