Merge branch 'work'
authorMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 15 Jan 2006 23:01:27 +0000 (21:01 -0200)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 15 Jan 2006 23:01:27 +0000 (21:01 -0200)
15 files changed:
drivers/media/dvb/dvb-core/dvbdev.c
drivers/media/dvb/ttpci/av7110_hw.c
drivers/media/dvb/ttpci/av7110_hw.h
drivers/media/video/cx25840/cx25840-core.c
drivers/media/video/cx88/Kconfig
drivers/media/video/cx88/cx88-alsa.c
drivers/media/video/cx88/cx88-core.c
drivers/media/video/cx88/cx88-tvaudio.c
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/saa7134/saa7134-cards.c
drivers/media/video/saa7134/saa7134-core.c
drivers/media/video/saa7134/saa7134-tvaudio.c
drivers/media/video/tvp5150.c
drivers/media/video/videodev.c
include/linux/i2c-id.h

index 06b696e9acbdf0857ac9a4fd34473accc43fa3b8..54f8b95717b0fd7740dcb7a4bcacd4fff80d869c 100644 (file)
@@ -33,7 +33,7 @@
 #include <linux/device.h>
 #include <linux/fs.h>
 #include <linux/cdev.h>
-
+#include <linux/mutex.h>
 #include "dvbdev.h"
 
 static int dvbdev_debug;
@@ -44,7 +44,7 @@ MODULE_PARM_DESC(dvbdev_debug, "Turn on/off device debugging (default:off).");
 #define dprintk if (dvbdev_debug) printk
 
 static LIST_HEAD(dvb_adapter_list);
-static DECLARE_MUTEX(dvbdev_register_lock);
+static DEFINE_MUTEX(dvbdev_register_lock);
 
 static const char * const dnames[] = {
        "video", "audio", "sec", "frontend", "demux", "dvr", "ca",
@@ -202,11 +202,11 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
        struct dvb_device *dvbdev;
        int id;
 
-       if (down_interruptible (&dvbdev_register_lock))
+       if (mutex_lock_interruptible(&dvbdev_register_lock))
                return -ERESTARTSYS;
 
        if ((id = dvbdev_get_free_id (adap, type)) < 0) {
-               up (&dvbdev_register_lock);
+               mutex_unlock(&dvbdev_register_lock);
                *pdvbdev = NULL;
                printk ("%s: could get find free device id...\n", __FUNCTION__);
                return -ENFILE;
@@ -215,11 +215,11 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
        *pdvbdev = dvbdev = kmalloc(sizeof(struct dvb_device), GFP_KERNEL);
 
        if (!dvbdev) {
-               up(&dvbdev_register_lock);
+               mutex_unlock(&dvbdev_register_lock);
                return -ENOMEM;
        }
 
-       up (&dvbdev_register_lock);
+       mutex_unlock(&dvbdev_register_lock);
 
        memcpy(dvbdev, template, sizeof(struct dvb_device));
        dvbdev->type = type;
@@ -289,11 +289,11 @@ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct modu
 {
        int num;
 
-       if (down_interruptible (&dvbdev_register_lock))
+       if (mutex_lock_interruptible(&dvbdev_register_lock))
                return -ERESTARTSYS;
 
        if ((num = dvbdev_get_free_adapter_num ()) < 0) {
-               up (&dvbdev_register_lock);
+               mutex_unlock(&dvbdev_register_lock);
                return -ENFILE;
        }
 
@@ -309,7 +309,7 @@ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct modu
 
        list_add_tail (&adap->list_head, &dvb_adapter_list);
 
-       up (&dvbdev_register_lock);
+       mutex_unlock(&dvbdev_register_lock);
 
        return num;
 }
@@ -320,10 +320,10 @@ int dvb_unregister_adapter(struct dvb_adapter *adap)
 {
        devfs_remove("dvb/adapter%d", adap->num);
 
-       if (down_interruptible (&dvbdev_register_lock))
+       if (mutex_lock_interruptible(&dvbdev_register_lock))
                return -ERESTARTSYS;
        list_del (&adap->list_head);
-       up (&dvbdev_register_lock);
+       mutex_unlock(&dvbdev_register_lock);
        return 0;
 }
 EXPORT_SYMBOL(dvb_unregister_adapter);
index cb377452b57dcfef26ffa9cd070588f060fe55f2..b2e63e9fc0536675a63ded41962e576c2e4d415b 100644 (file)
@@ -146,52 +146,52 @@ static int load_dram(struct av7110 *av7110, u32 *data, int len)
 {
        int i;
        int blocks, rest;
-       u32 base, bootblock = BOOT_BLOCK;
+       u32 base, bootblock = AV7110_BOOT_BLOCK;
 
        dprintk(4, "%p\n", av7110);
 
-       blocks = len / BOOT_MAX_SIZE;
-       rest = len % BOOT_MAX_SIZE;
+       blocks = len / AV7110_BOOT_MAX_SIZE;
+       rest = len % AV7110_BOOT_MAX_SIZE;
        base = DRAM_START_CODE;
 
        for (i = 0; i < blocks; i++) {
-               if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) {
+               if (waitdebi(av7110, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) {
                        printk(KERN_ERR "dvb-ttpci: load_dram(): timeout at block %d\n", i);
                        return -ETIMEDOUT;
                }
                dprintk(4, "writing DRAM block %d\n", i);
                mwdebi(av7110, DEBISWAB, bootblock,
-                      ((char*)data) + i * BOOT_MAX_SIZE, BOOT_MAX_SIZE);
+                      ((char*)data) + i * AV7110_BOOT_MAX_SIZE, AV7110_BOOT_MAX_SIZE);
                bootblock ^= 0x1400;
-               iwdebi(av7110, DEBISWAB, BOOT_BASE, swab32(base), 4);
-               iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, BOOT_MAX_SIZE, 2);
-               iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
-               base += BOOT_MAX_SIZE;
+               iwdebi(av7110, DEBISWAB, AV7110_BOOT_BASE, swab32(base), 4);
+               iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_SIZE, AV7110_BOOT_MAX_SIZE, 2);
+               iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
+               base += AV7110_BOOT_MAX_SIZE;
        }
 
        if (rest > 0) {
-               if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) {
+               if (waitdebi(av7110, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) {
                        printk(KERN_ERR "dvb-ttpci: load_dram(): timeout at last block\n");
                        return -ETIMEDOUT;
                }
                if (rest > 4)
                        mwdebi(av7110, DEBISWAB, bootblock,
-                              ((char*)data) + i * BOOT_MAX_SIZE, rest);
+                              ((char*)data) + i * AV7110_BOOT_MAX_SIZE, rest);
                else
                        mwdebi(av7110, DEBISWAB, bootblock,
-                              ((char*)data) + i * BOOT_MAX_SIZE - 4, rest + 4);
+                              ((char*)data) + i * AV7110_BOOT_MAX_SIZE - 4, rest + 4);
 
-               iwdebi(av7110, DEBISWAB, BOOT_BASE, swab32(base), 4);
-               iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, rest, 2);
-               iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
+               iwdebi(av7110, DEBISWAB, AV7110_BOOT_BASE, swab32(base), 4);
+               iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_SIZE, rest, 2);
+               iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
        }
-       if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) {
+       if (waitdebi(av7110, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) {
                printk(KERN_ERR "dvb-ttpci: load_dram(): timeout after last block\n");
                return -ETIMEDOUT;
        }
-       iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, 0, 2);
-       iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
-       if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BOOT_COMPLETE) < 0) {
+       iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_SIZE, 0, 2);
+       iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
+       if (waitdebi(av7110, AV7110_BOOT_STATE, BOOTSTATE_AV7110_BOOT_COMPLETE) < 0) {
                printk(KERN_ERR "dvb-ttpci: load_dram(): final handshake timeout\n");
                return -ETIMEDOUT;
        }
@@ -262,7 +262,7 @@ int av7110_bootarm(struct av7110 *av7110)
        //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
 
        mwdebi(av7110, DEBISWAB, DPRAM_BASE, bootcode, sizeof(bootcode));
-       iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
+       iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
 
        if (saa7146_wait_for_debi_done(av7110->dev, 1)) {
                printk(KERN_ERR "dvb-ttpci: av7110_bootarm(): "
index 84b83299b8bec7642c931ebf65177393860517e8..4e173c67fbb25e43efaf4425a7ed95c2edfed249 100644 (file)
@@ -18,7 +18,7 @@ enum av7110_bootstate
 {
        BOOTSTATE_BUFFER_EMPTY  = 0,
        BOOTSTATE_BUFFER_FULL   = 1,
-       BOOTSTATE_BOOT_COMPLETE = 2
+       BOOTSTATE_AV7110_BOOT_COMPLETE  = 2
 };
 
 enum av7110_type_rec_play_format
@@ -295,11 +295,11 @@ enum av7110_command_type {
 #define        DPRAM_BASE 0x4000
 
 /* boot protocol area */
-#define BOOT_STATE     (DPRAM_BASE + 0x3F8)
-#define BOOT_SIZE      (DPRAM_BASE + 0x3FA)
-#define BOOT_BASE      (DPRAM_BASE + 0x3FC)
-#define BOOT_BLOCK     (DPRAM_BASE + 0x400)
-#define BOOT_MAX_SIZE  0xc00
+#define AV7110_BOOT_STATE      (DPRAM_BASE + 0x3F8)
+#define AV7110_BOOT_SIZE       (DPRAM_BASE + 0x3FA)
+#define AV7110_BOOT_BASE       (DPRAM_BASE + 0x3FC)
+#define AV7110_BOOT_BLOCK      (DPRAM_BASE + 0x400)
+#define AV7110_BOOT_MAX_SIZE   0xc00
 
 /* firmware command protocol area */
 #define IRQ_STATE      (DPRAM_BASE + 0x0F4)
index 0da744c1d23e25eca1ce3cc43890b20f20f549dc..c66c2c1f480927b18c047c9fbcc4054868f6ba41 100644 (file)
@@ -43,7 +43,7 @@ MODULE_LICENSE("GPL");
 static unsigned short normal_i2c[] = { 0x88 >> 1, I2C_CLIENT_END };
 
 
-int cx25840_debug;
+static int cx25840_debug;
 
 module_param_named(debug,cx25840_debug, int, 0644);
 
index 76fcb4e995c92d86f14e864f762106aab4ed6e8e..53308911ae6e56165be24601b54f6b3081d49324 100644 (file)
@@ -31,8 +31,7 @@ config VIDEO_CX88_DVB
 
 config VIDEO_CX88_ALSA
        tristate "ALSA DMA audio support"
-       depends on VIDEO_CX88 && SND
-       select SND_PCM_OSS
+       depends on VIDEO_CX88 && SND && EXPERIMENTAL
        ---help---
          This is a video4linux driver for direct (DMA) audio on
          Conexant 2388x based TV cards.
index fd8bc718f0e33df0a446d3d5c67f68929eca6490..e649f678d47ab0a749b89146867ff9b1f513f73a 100644 (file)
@@ -805,7 +805,6 @@ static struct pci_driver cx88_audio_pci_driver = {
        .id_table = cx88_audio_pci_tbl,
        .probe    = cx88_audio_initdev,
        .remove   = cx88_audio_finidev,
-       SND_PCI_PM_CALLBACKS
 };
 
 /****************************************************************************
index 194446f28c55c366b82a4f91f38222d0c5c9edfa..8d6d6a6cf7853226992eaad243526364a0d9fbe5 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/pci.h>
 #include <linux/delay.h>
 #include <linux/videodev2.h>
+#include <linux/mutex.h>
 
 #include "cx88.h"
 #include <media/v4l2-common.h>
@@ -75,7 +76,7 @@ MODULE_PARM_DESC(nocomb,"disable comb filter");
 
 static unsigned int cx88_devcount;
 static LIST_HEAD(cx88_devlist);
-static DECLARE_MUTEX(devlist);
+static DEFINE_MUTEX(devlist);
 
 #define NO_SYNC_LINE (-1U)
 
@@ -1036,7 +1037,7 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
        struct list_head *item;
        int i;
 
-       down(&devlist);
+       mutex_lock(&devlist);
        list_for_each(item,&cx88_devlist) {
                core = list_entry(item, struct cx88_core, devlist);
                if (pci->bus->number != core->pci_bus)
@@ -1047,7 +1048,7 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
                if (0 != get_ressources(core,pci))
                        goto fail_unlock;
                atomic_inc(&core->refcount);
-               up(&devlist);
+               mutex_unlock(&devlist);
                return core;
        }
        core = kzalloc(sizeof(*core),GFP_KERNEL);
@@ -1122,13 +1123,13 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
        cx88_card_setup(core);
        cx88_ir_init(core,pci);
 
-       up(&devlist);
+       mutex_unlock(&devlist);
        return core;
 
 fail_free:
        kfree(core);
 fail_unlock:
-       up(&devlist);
+       mutex_unlock(&devlist);
        return NULL;
 }
 
@@ -1140,14 +1141,14 @@ void cx88_core_put(struct cx88_core *core, struct pci_dev *pci)
        if (!atomic_dec_and_test(&core->refcount))
                return;
 
-       down(&devlist);
+       mutex_lock(&devlist);
        cx88_ir_fini(core);
        if (0 == core->i2c_rc)
                i2c_bit_del_bus(&core->i2c_adap);
        list_del(&core->devlist);
        iounmap(core->lmmio);
        cx88_devcount--;
-       up(&devlist);
+       mutex_unlock(&devlist);
        kfree(core);
 }
 
index 24118e43e73a7c46d8319954c5a749813dd14ce1..da8d97ce0c4b559e22e4705b20613baa7b1bd77c 100644 (file)
@@ -60,6 +60,11 @@ static unsigned int audio_debug = 0;
 module_param(audio_debug, int, 0644);
 MODULE_PARM_DESC(audio_debug, "enable debug messages [audio]");
 
+static unsigned int always_analog = 0;
+module_param(always_analog,int,0644);
+MODULE_PARM_DESC(always_analog,"force analog audio out");
+
+
 #define dprintk(fmt, arg...)   if (audio_debug) \
        printk(KERN_DEBUG "%s/0: " fmt, core->name , ## arg)
 
@@ -155,7 +160,8 @@ static void set_audio_finish(struct cx88_core *core, u32 ctl)
                cx_write(AUD_I2SOUTPUTCNTL, 1);
                cx_write(AUD_I2SCNTL, 0);
                /* cx_write(AUD_APB_IN_RATE_ADJ, 0); */
-       } else {
+       }
+       if ((always_analog) || (!cx88_boards[core->board].blackbird)) {
                ctl |= EN_DAC_ENABLE;
                cx_write(AUD_CTL, ctl);
        }
index 3323dffe26a479323be61337e1ae51a54b6bb796..eea304f75176a1ca18e38785defddb8932b61ae4 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/i2c.h>
 #include <linux/version.h>
 #include <linux/video_decoder.h>
+#include <linux/mutex.h>
 
 #include "em28xx.h"
 #include <media/tuner.h>
@@ -191,7 +192,7 @@ static struct v4l2_queryctrl saa711x_qctrl[] = {
 
 static struct usb_driver em28xx_usb_driver;
 
-static DECLARE_MUTEX(em28xx_sysfs_lock);
+static DEFINE_MUTEX(em28xx_sysfs_lock);
 static DECLARE_RWSEM(em28xx_disconnect);
 
 /*********************  v4l2 interface  ******************************************/
@@ -394,7 +395,7 @@ static int em28xx_v4l2_open(struct inode *inode, struct file *filp)
 */
 static void em28xx_release_resources(struct em28xx *dev)
 {
-       down(&em28xx_sysfs_lock);
+       mutex_lock(&em28xx_sysfs_lock);
 
        em28xx_info("V4L2 device /dev/video%d deregistered\n",
                    dev->vdev->minor);
@@ -403,7 +404,7 @@ static void em28xx_release_resources(struct em28xx *dev)
 /*     video_unregister_device(dev->vbi_dev); */
        em28xx_i2c_unregister(dev);
        usb_put_dev(dev->udev);
-       up(&em28xx_sysfs_lock);
+       mutex_unlock(&em28xx_sysfs_lock);
 }
 
 /*
index 275d06af69d2cc649bf7a0c80fe07149de315037..c64718aec9cb84401d874c2445fd8d3cd00fde71 100644 (file)
@@ -2515,6 +2515,7 @@ struct saa7134_board saa7134_boards[] = {
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .mpeg           = SAA7134_MPEG_DVB,
+               .gpiomask       = 1 << 21,
                .inputs = {{
                        .name   = name_tv,
                        .vmux   = 1,
@@ -2529,6 +2530,11 @@ struct saa7134_board saa7134_boards[] = {
                        .vmux   = 8,
                        .amux   = LINE1,
                }},
+               .radio = {
+                       .name   = name_radio,
+                       .amux   = TV,
+                       .gpio   = 0x0200000,
+               },
        },
        [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
                .name           = "MSI TV@Anywhere plus",
index 3dd42efe3699cb793e6b4206fa54c95934873127..028904bd94a23bb6a754f5162a660179c06820fd 100644 (file)
@@ -31,6 +31,7 @@
 #include <linux/sound.h>
 #include <linux/interrupt.h>
 #include <linux/delay.h>
+#include <linux/mutex.h>
 
 #include "saa7134-reg.h"
 #include "saa7134.h"
@@ -84,7 +85,7 @@ MODULE_PARM_DESC(radio_nr, "radio device number");
 MODULE_PARM_DESC(tuner,    "tuner type");
 MODULE_PARM_DESC(card,     "card type");
 
-static DECLARE_MUTEX(devlist_lock);
+static DEFINE_MUTEX(devlist_lock);
 LIST_HEAD(saa7134_devlist);
 static LIST_HEAD(mops_list);
 static unsigned int saa7134_devcount;
@@ -969,13 +970,13 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
        pci_set_drvdata(pci_dev,dev);
        saa7134_devcount++;
 
-       down(&devlist_lock);
+       mutex_lock(&devlist_lock);
        list_for_each(item,&mops_list) {
                mops = list_entry(item, struct saa7134_mpeg_ops, next);
                mpeg_ops_attach(mops, dev);
        }
        list_add_tail(&dev->devlist,&saa7134_devlist);
-       up(&devlist_lock);
+       mutex_unlock(&devlist_lock);
 
        /* check for signal */
        saa7134_irq_video_intl(dev);
@@ -1031,13 +1032,13 @@ static void __devexit saa7134_finidev(struct pci_dev *pci_dev)
        saa7134_hwfini(dev);
 
        /* unregister */
-       down(&devlist_lock);
+       mutex_lock(&devlist_lock);
        list_del(&dev->devlist);
        list_for_each(item,&mops_list) {
                mops = list_entry(item, struct saa7134_mpeg_ops, next);
                mpeg_ops_detach(mops, dev);
        }
-       up(&devlist_lock);
+       mutex_unlock(&devlist_lock);
        saa7134_devcount--;
 
        saa7134_i2c_unregister(dev);
@@ -1071,13 +1072,13 @@ int saa7134_ts_register(struct saa7134_mpeg_ops *ops)
        struct list_head *item;
        struct saa7134_dev *dev;
 
-       down(&devlist_lock);
+       mutex_lock(&devlist_lock);
        list_for_each(item,&saa7134_devlist) {
                dev = list_entry(item, struct saa7134_dev, devlist);
                mpeg_ops_attach(ops, dev);
        }
        list_add_tail(&ops->next,&mops_list);
-       up(&devlist_lock);
+       mutex_unlock(&devlist_lock);
        return 0;
 }
 
@@ -1086,13 +1087,13 @@ void saa7134_ts_unregister(struct saa7134_mpeg_ops *ops)
        struct list_head *item;
        struct saa7134_dev *dev;
 
-       down(&devlist_lock);
+       mutex_lock(&devlist_lock);
        list_del(&ops->next);
        list_for_each(item,&saa7134_devlist) {
                dev = list_entry(item, struct saa7134_dev, devlist);
                mpeg_ops_detach(ops, dev);
        }
-       up(&devlist_lock);
+       mutex_unlock(&devlist_lock);
 }
 
 EXPORT_SYMBOL(saa7134_ts_register);
index 93268427750dea44b3e8839a9f8c4161935b3485..afa4dcb3f96dde118b377034ddb2aede5016afc1 100644 (file)
@@ -180,8 +180,8 @@ static void tvaudio_init(struct saa7134_dev *dev)
        saa_writeb(SAA7134_AUDIO_CLOCK0,      clock        & 0xff);
        saa_writeb(SAA7134_AUDIO_CLOCK1,     (clock >>  8) & 0xff);
        saa_writeb(SAA7134_AUDIO_CLOCK2,     (clock >> 16) & 0xff);
-       // frame locked audio was reported not to be reliable
-       saa_writeb(SAA7134_AUDIO_PLL_CTRL,   0x02);
+       /* frame locked audio is mandatory for NICAM */
+       saa_writeb(SAA7134_AUDIO_PLL_CTRL,   0x01);
 
        saa_writeb(SAA7134_NICAM_ERROR_LOW,  0x14);
        saa_writeb(SAA7134_NICAM_ERROR_HIGH, 0x50);
@@ -809,7 +809,12 @@ static int tvaudio_thread_ddep(void *data)
                        dprintk("ddep override: %s\n",stdres[audio_ddep]);
                } else if (&card(dev).radio == dev->input) {
                        dprintk("FM Radio\n");
-                       norms = (0x0f << 2) | 0x01;
+                       if (dev->tuner_type == TUNER_PHILIPS_TDA8290) {
+                               norms = (0x11 << 2) | 0x01;
+                               saa_dsp_writel(dev, 0x42c >> 2, 0x729555);
+                       } else {
+                               norms = (0x0f << 2) | 0x01;
+                       }
                } else {
                        /* (let chip) scan for sound carrier */
                        norms = 0;
index 9094fa9f2ecb92b3bedfeaab15e21e44e25282ec..fad9ea0ae4f22d73e9a8f70f82c152523b45f6d4 100644 (file)
@@ -634,7 +634,7 @@ struct i2c_vbi_ram_value {
        unsigned char values[26];
 };
 
-struct i2c_vbi_ram_value vbi_ram_default[] =
+static struct i2c_vbi_ram_value vbi_ram_default[] =
 {
        {0x010, /* WST SECAM 6 */
                { 0xaa, 0xaa, 0xff, 0xff , 0xe7, 0x2e, 0x20, 0x26, 0xe6, 0xb4, 0x0e, 0x0, 0x0, 0x0, 0x10, 0x0 }
index d5be25987142c65eb891bacbdae3d55b74fe08bc..078880e4c8c0a89711a2b079d35553a0a3571e19 100644 (file)
@@ -29,7 +29,6 @@
 #include <linux/devfs_fs_kernel.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
-#include <asm/semaphore.h>
 
 #include <linux/videodev.h>
 
@@ -83,7 +82,7 @@ static struct class video_class = {
  */
 
 static struct video_device *video_device[VIDEO_NUM_DEVICES];
-static DECLARE_MUTEX(videodev_lock);
+static DEFINE_MUTEX(videodev_lock);
 
 struct video_device* video_devdata(struct file *file)
 {
@@ -102,15 +101,15 @@ static int video_open(struct inode *inode, struct file *file)
 
        if(minor>=VIDEO_NUM_DEVICES)
                return -ENODEV;
-       down(&videodev_lock);
+       mutex_lock(&videodev_lock);
        vfl=video_device[minor];
        if(vfl==NULL) {
-               up(&videodev_lock);
+               mutex_unlock(&videodev_lock);
                request_module("char-major-%d-%d", VIDEO_MAJOR, minor);
-               down(&videodev_lock);
+               mutex_lock(&videodev_lock);
                vfl=video_device[minor];
                if (vfl==NULL) {
-                       up(&videodev_lock);
+                       mutex_unlock(&videodev_lock);
                        return -ENODEV;
                }
        }
@@ -123,7 +122,7 @@ static int video_open(struct inode *inode, struct file *file)
                file->f_op = fops_get(old_fops);
        }
        fops_put(old_fops);
-       up(&videodev_lock);
+       mutex_unlock(&videodev_lock);
        return err;
 }
 
@@ -304,12 +303,12 @@ int video_register_device(struct video_device *vfd, int type, int nr)
        }
 
        /* pick a minor number */
-       down(&videodev_lock);
+       mutex_lock(&videodev_lock);
        if (nr >= 0  &&  nr < end-base) {
                /* use the one the driver asked for */
                i = base+nr;
                if (NULL != video_device[i]) {
-                       up(&videodev_lock);
+                       mutex_unlock(&videodev_lock);
                        return -ENFILE;
                }
        } else {
@@ -318,13 +317,13 @@ int video_register_device(struct video_device *vfd, int type, int nr)
                        if (NULL == video_device[i])
                                break;
                if (i == end) {
-                       up(&videodev_lock);
+                       mutex_unlock(&videodev_lock);
                        return -ENFILE;
                }
        }
        video_device[i]=vfd;
        vfd->minor=i;
-       up(&videodev_lock);
+       mutex_unlock(&videodev_lock);
 
        sprintf(vfd->devfs_name, "v4l/%s%d", name_base, i - base);
        devfs_mk_cdev(MKDEV(VIDEO_MAJOR, vfd->minor),
@@ -362,14 +361,14 @@ int video_register_device(struct video_device *vfd, int type, int nr)
 
 void video_unregister_device(struct video_device *vfd)
 {
-       down(&videodev_lock);
+       mutex_lock(&videodev_lock);
        if(video_device[vfd->minor]!=vfd)
                panic("videodev: bad unregister");
 
        devfs_remove(vfd->devfs_name);
        video_device[vfd->minor]=NULL;
        class_device_unregister(&vfd->class_dev);
-       up(&videodev_lock);
+       mutex_unlock(&videodev_lock);
 }
 
 
index 6ff2d365895f550e72fc6e94a54696d3467573ea..474c8f4f5d4f3a714885f2d71679b5739cae9fc2 100644 (file)
 #define I2C_DRIVERID_AKITAIOEXP        74      /* IO Expander on Sharp SL-C1000 */
 #define I2C_DRIVERID_INFRARED  75      /* I2C InfraRed on Video boards */
 #define I2C_DRIVERID_TVP5150   76      /* TVP5150 video decoder        */
+#define I2C_DRIVERID_WM8739    77      /* wm8739 audio processor       */
+#define I2C_DRIVERID_UPD64083  78      /* upd64083 video processor     */
+#define I2C_DRIVERID_UPD64031A 79      /* upd64031a video processor    */
+#define I2C_DRIVERID_SAA717X   80      /* saa717x video encoder        */
 
 #define I2C_DRIVERID_I2CDEV    900
 #define I2C_DRIVERID_ARP        902    /* SMBus ARP Client              */