]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/cx88/cx88-mpeg.c
Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
[linux-2.6-omap-h63xx.git] / drivers / media / video / cx88 / cx88-mpeg.c
index e357f415db06601ceab9333994d90aa4d51f4bfa..a1c435b4b1cd3901f93022d6ecf25f65d16486f8 100644 (file)
@@ -39,7 +39,7 @@ MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
 MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
 MODULE_LICENSE("GPL");
 
-static unsigned int debug = 0;
+static unsigned int debug;
 module_param(debug,int,0644);
 MODULE_PARM_DESC(debug,"enable debug messages [mpeg]");
 
@@ -146,7 +146,7 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
                cx_write(TS_GEN_CNTRL, 0x06); /* punctured clock TS & posedge driven */
                udelay(100);
        } else {
-               printk( "%s() Failed. Unsupported value in .mpeg (0x%08x)\n", __FUNCTION__,
+               printk( "%s() Failed. Unsupported value in .mpeg (0x%08x)\n", __func__,
                        core->board.mpeg );
                return -EINVAL;
        }
@@ -247,7 +247,7 @@ int cx8802_buf_prepare(struct videobuf_queue *q, struct cx8802_dev *dev,
        struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb);
        int rc;
 
-       dprintk(1, "%s: %p\n", __FUNCTION__, buf);
+       dprintk(1, "%s: %p\n", __func__, buf);
        if (0 != buf->vb.baddr  &&  buf->vb.bsize < size)
                return -EINVAL;
 
@@ -289,7 +289,7 @@ void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf)
                buf->count    = cx88q->count++;
                mod_timer(&cx88q->timeout, jiffies+BUFFER_TIMEOUT);
                dprintk(1,"[%p/%d] %s - first active\n",
-                       buf, buf->vb.i, __FUNCTION__);
+                       buf, buf->vb.i, __func__);
 
        } else {
                dprintk( 1, "queue is not empty - append to active\n" );
@@ -299,7 +299,7 @@ void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf)
                buf->count    = cx88q->count++;
                prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
                dprintk( 1, "[%p/%d] %s - append to active\n",
-                       buf, buf->vb.i, __FUNCTION__);
+                       buf, buf->vb.i, __func__);
        }
 }
 
@@ -342,7 +342,7 @@ static void cx8802_timeout(unsigned long data)
 {
        struct cx8802_dev *dev = (struct cx8802_dev*)data;
 
-       dprintk(1, "%s\n",__FUNCTION__);
+       dprintk(1, "%s\n",__func__);
 
        if (debug)
                cx88_sram_channel_dump(dev->core, &cx88_sram_channels[SRAM_CH28]);
@@ -613,6 +613,8 @@ static int cx8802_request_acquire(struct cx8802_driver *drv)
            core->active_type_id != drv->type_id)
                return -EBUSY;
 
+       core->input = CX88_VMUX_DVB;
+
        if (drv->advise_acquire)
        {
                mutex_lock(&drv->core->lock);
@@ -623,7 +625,7 @@ static int cx8802_request_acquire(struct cx8802_driver *drv)
                }
                mutex_unlock(&drv->core->lock);
 
-               mpeg_dbg(1,"%s() Post acquire GPIO=%x\n", __FUNCTION__, cx_read(MO_GP0_IO));
+               mpeg_dbg(1,"%s() Post acquire GPIO=%x\n", __func__, cx_read(MO_GP0_IO));
        }
 
        return 0;
@@ -639,7 +641,7 @@ static int cx8802_request_release(struct cx8802_driver *drv)
        {
                drv->advise_release(drv);
                core->active_type_id = CX88_BOARD_NONE;
-               mpeg_dbg(1,"%s() Post release GPIO=%x\n", __FUNCTION__, cx_read(MO_GP0_IO));
+               mpeg_dbg(1,"%s() Post release GPIO=%x\n", __func__, cx_read(MO_GP0_IO));
        }
        mutex_unlock(&drv->core->lock);
 
@@ -767,6 +769,10 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
        struct cx8802_dev *dev;
        struct cx88_core  *core;
        int err;
+#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
+       struct videobuf_dvb_frontend *demod;
+       int i;
+#endif
 
        /* general setup */
        core = cx88_core_get(pci_dev);
@@ -793,6 +799,23 @@ static int __devinit cx8802_probe(struct pci_dev *pci_dev,
        INIT_LIST_HEAD(&dev->drvlist);
        list_add_tail(&dev->devlist,&cx8802_devlist);
 
+#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
+       mutex_init(&dev->frontends.lock);
+       INIT_LIST_HEAD(&dev->frontends.felist);
+
+       if (core->board.num_frontends)
+               printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__, core->board.num_frontends);
+
+       for (i = 1; i <= core->board.num_frontends; i++) {
+               demod = videobuf_dvb_alloc_frontend(&dev->frontends, i);
+               if(demod == NULL) {
+                       printk(KERN_ERR "%s() failed to alloc\n", __func__);
+                       err = -ENOMEM;
+                       goto fail_free;
+               }
+       }
+#endif
+
        /* Maintain a reference so cx88-video can query the 8802 device. */
        core->dvbdev = dev;
 
@@ -813,7 +836,7 @@ static void __devexit cx8802_remove(struct pci_dev *pci_dev)
 
        dev = pci_get_drvdata(pci_dev);
 
-       dprintk( 1, "%s\n", __FUNCTION__);
+       dprintk( 1, "%s\n", __func__);
 
        if (!list_empty(&dev->drvlist)) {
                struct cx8802_driver *drv, *tmp;