Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / media / common / saa7146_core.c
index 50e8b86..8cdd4d2 100644 (file)
@@ -21,7 +21,7 @@
 #include <media/saa7146.h>
 
 LIST_HEAD(saa7146_devices);
-DECLARE_MUTEX(saa7146_devices_lock);
+DEFINE_MUTEX(saa7146_devices_lock);
 
 static int saa7146_num;
 
@@ -62,13 +62,15 @@ void saa7146_setgpio(struct saa7146_dev *dev, int port, u32 data)
 int saa7146_wait_for_debi_done(struct saa7146_dev *dev, int nobusyloop)
 {
        unsigned long start;
+       int err;
 
        /* wait for registers to be programmed */
        start = jiffies;
        while (1) {
-                if (saa7146_read(dev, MC2) & 2)
-                        break;
-               if (time_after(jiffies, start + HZ/20)) {
+               err = time_after(jiffies, start + HZ/20);
+               if (saa7146_read(dev, MC2) & 2)
+                       break;
+               if (err) {
                        DEB_S(("timed out while waiting for registers getting programmed\n"));
                        return -ETIMEDOUT;
                }
@@ -79,10 +81,11 @@ int saa7146_wait_for_debi_done(struct saa7146_dev *dev, int nobusyloop)
        /* wait for transfer to complete */
        start = jiffies;
        while (1) {
+               err = time_after(jiffies, start + HZ/4);
                if (!(saa7146_read(dev, PSR) & SPCI_DEBI_S))
                        break;
                saa7146_read(dev, MC2);
-               if (time_after(jiffies, start + HZ/4)) {
+               if (err) {
                        DEB_S(("timed out while waiting for transfer completion\n"));
                        return -ETIMEDOUT;
                }
@@ -106,16 +109,14 @@ static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages)
        struct page *pg;
        int i;
 
-       sglist = kmalloc(sizeof(struct scatterlist)*nr_pages, GFP_KERNEL);
+       sglist = kcalloc(nr_pages, sizeof(struct scatterlist), GFP_KERNEL);
        if (NULL == sglist)
                return NULL;
-       memset(sglist,0,sizeof(struct scatterlist)*nr_pages);
        for (i = 0; i < nr_pages; i++, virt += PAGE_SIZE) {
                pg = vmalloc_to_page(virt);
                if (NULL == pg)
                        goto err;
-               if (PageHighMem(pg))
-                       BUG();
+               BUG_ON(PageHighMem(pg));
                sglist[i].page   = pg;
                sglist[i].length = PAGE_SIZE;
        }
@@ -165,16 +166,14 @@ void saa7146_pgtable_free(struct pci_dev *pci, struct saa7146_pgtable *pt)
                return;
        pci_free_consistent(pci, pt->size, pt->cpu, pt->dma);
        pt->cpu = NULL;
-       if (NULL != pt->slist) {
-               kfree(pt->slist);
-               pt->slist = NULL;
-       }
+       kfree(pt->slist);
+       pt->slist = NULL;
 }
 
 int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt)
 {
-        u32          *cpu;
-        dma_addr_t   dma_addr;
+       u32          *cpu;
+       dma_addr_t   dma_addr;
 
        cpu = pci_alloc_consistent(pci, PAGE_SIZE, &dma_addr);
        if (NULL == cpu) {
@@ -305,15 +304,13 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
        struct saa7146_dev *dev;
        int err = -ENOMEM;
 
-       dev = kmalloc(sizeof(struct saa7146_dev), GFP_KERNEL);
+       /* clear out mem for sure */
+       dev = kzalloc(sizeof(struct saa7146_dev), GFP_KERNEL);
        if (!dev) {
                ERR(("out of memory.\n"));
                goto out;
        }
 
-       /* clear out mem for sure */
-       memset(dev, 0x0, sizeof(struct saa7146_dev));
-
        DEB_EE(("pci:%p\n",pci));
 
        err = pci_enable_device(pci);
@@ -404,11 +401,11 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
 
        pci_set_drvdata(pci, dev);
 
-        init_MUTEX(&dev->lock);
+       mutex_init(&dev->lock);
        spin_lock_init(&dev->int_slock);
        spin_lock_init(&dev->slock);
 
-       init_MUTEX(&dev->i2c_lock);
+       mutex_init(&dev->i2c_lock);
 
        dev->module = THIS_MODULE;
        init_waitqueue_head(&dev->i2c_wq);
@@ -512,7 +509,7 @@ int saa7146_register_extension(struct saa7146_extension* ext)
        ext->driver.remove = saa7146_remove_one;
 
        printk("saa7146: register extension '%s'.\n",ext->name);
-       return pci_module_init(&ext->driver);
+       return pci_register_driver(&ext->driver);
 }
 
 int saa7146_unregister_extension(struct saa7146_extension* ext)