linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / media / video / cx88 / cx88-mpeg.c
index 138a4f6..c79cc1d 100644 (file)
@@ -54,7 +54,7 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
 {
        struct cx88_core *core = dev->core;
 
-       dprintk(1, "cx8802_start_dma w: %d, h: %d, f: %d\n", dev->width, dev->height, buf->vb.field);
+       dprintk(0, "cx8802_start_dma w: %d, h: %d, f: %d\n", dev->width, dev->height, buf->vb.field);
 
        /* setup fifo + format */
        cx88_sram_channel_setup(core, &cx88_sram_channels[SRAM_CH28],
@@ -76,7 +76,6 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
                case CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q:
                case CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T:
                case CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD:
-               case CX88_BOARD_PCHDTV_HD5500:
                        cx_write(TS_SOP_STAT, 1<<13);
                        break;
                case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1:
@@ -110,7 +109,7 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
        q->count = 1;
 
        /* enable irqs */
-       dprintk( 1, "setting the interrupt mask\n" );
+       dprintk( 0, "setting the interrupt mask\n" );
        cx_set(MO_PCI_INTMSK, core->pci_irqmask | 0x04);
        cx_set(MO_TS_INTMSK,  0x1f0011);
 
@@ -123,7 +122,7 @@ static int cx8802_start_dma(struct cx8802_dev    *dev,
 static int cx8802_stop_dma(struct cx8802_dev *dev)
 {
        struct cx88_core *core = dev->core;
-       dprintk( 1, "cx8802_stop_dma\n" );
+       dprintk( 0, "cx8802_stop_dma\n" );
 
        /* stop dma */
        cx_clear(MO_TS_DMACNTRL, 0x11);
@@ -143,43 +142,10 @@ static int cx8802_restart_queue(struct cx8802_dev    *dev,
        struct cx88_buffer *buf;
        struct list_head *item;
 
-       dprintk( 1, "cx8802_restart_queue\n" );
+       dprintk( 0, "cx8802_restart_queue\n" );
        if (list_empty(&q->active))
        {
-              struct cx88_buffer *prev;
-              prev = NULL;
-
-              dprintk(1, "cx8802_restart_queue: queue is empty\n" );
-
-              for (;;) {
-                      if (list_empty(&q->queued))
-                              return 0;
-                      buf = list_entry(q->queued.next, struct cx88_buffer, vb.queue);
-                      if (NULL == prev) {
-                              list_del(&buf->vb.queue);
-                              list_add_tail(&buf->vb.queue,&q->active);
-                              cx8802_start_dma(dev, q, buf);
-                              buf->vb.state = STATE_ACTIVE;
-                              buf->count    = q->count++;
-                              mod_timer(&q->timeout, jiffies+BUFFER_TIMEOUT);
-                              dprintk(1,"[%p/%d] restart_queue - first active\n",
-                                      buf,buf->vb.i);
-
-                      } else if (prev->vb.width  == buf->vb.width  &&
-                                 prev->vb.height == buf->vb.height &&
-                                 prev->fmt       == buf->fmt) {
-                              list_del(&buf->vb.queue);
-                              list_add_tail(&buf->vb.queue,&q->active);
-                              buf->vb.state = STATE_ACTIVE;
-                              buf->count    = q->count++;
-                              prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
-                              dprintk(1,"[%p/%d] restart_queue - move to active\n",
-                                      buf,buf->vb.i);
-                      } else {
-                              return 0;
-                      }
-                      prev = buf;
-              }
+               dprintk( 0, "cx8802_restart_queue: queue is empty\n" );
                return 0;
        }
 
@@ -197,8 +163,8 @@ static int cx8802_restart_queue(struct cx8802_dev    *dev,
 
 /* ------------------------------------------------------------------ */
 
-int cx8802_buf_prepare(struct videobuf_queue *q, struct cx8802_dev *dev,
-                       struct cx88_buffer *buf, enum v4l2_field field)
+int cx8802_buf_prepare(struct cx8802_dev *dev, struct cx88_buffer *buf,
+                       enum v4l2_field field)
 {
        int size = dev->ts_packet_size * dev->ts_packet_count;
        int rc;
@@ -213,7 +179,7 @@ int cx8802_buf_prepare(struct videobuf_queue *q, struct cx8802_dev *dev,
                buf->vb.size   = size;
                buf->vb.field  = field /*V4L2_FIELD_TOP*/;
 
-               if (0 != (rc = videobuf_iolock(q,&buf->vb,NULL)))
+               if (0 != (rc = videobuf_iolock(dev->pci,&buf->vb,NULL)))
                        goto fail;
                cx88_risc_databuffer(dev->pci, &buf->risc,
                                     buf->vb.dma.sglist,
@@ -223,36 +189,36 @@ int cx8802_buf_prepare(struct videobuf_queue *q, struct cx8802_dev *dev,
        return 0;
 
  fail:
-       cx88_free_buffer(q,buf);
+       cx88_free_buffer(dev->pci,buf);
        return rc;
 }
 
 void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf)
 {
        struct cx88_buffer    *prev;
-       struct cx88_dmaqueue  *cx88q = &dev->mpegq;
+       struct cx88_dmaqueue  *q    = &dev->mpegq;
 
        dprintk( 1, "cx8802_buf_queue\n" );
        /* add jump to stopper */
        buf->risc.jmp[0] = cpu_to_le32(RISC_JUMP | RISC_IRQ1 | RISC_CNT_INC);
-       buf->risc.jmp[1] = cpu_to_le32(cx88q->stopper.dma);
+       buf->risc.jmp[1] = cpu_to_le32(q->stopper.dma);
 
-       if (list_empty(&cx88q->active)) {
-               dprintk( 1, "queue is empty - first active\n" );
-               list_add_tail(&buf->vb.queue,&cx88q->active);
-               cx8802_start_dma(dev, cx88q, buf);
+       if (list_empty(&q->active)) {
+               dprintk( 0, "queue is empty - first active\n" );
+               list_add_tail(&buf->vb.queue,&q->active);
+               cx8802_start_dma(dev, q, buf);
                buf->vb.state = STATE_ACTIVE;
-               buf->count    = cx88q->count++;
-               mod_timer(&cx88q->timeout, jiffies+BUFFER_TIMEOUT);
-               dprintk(1,"[%p/%d] %s - first active\n",
+               buf->count    = q->count++;
+               mod_timer(&q->timeout, jiffies+BUFFER_TIMEOUT);
+               dprintk(0,"[%p/%d] %s - first active\n",
                        buf, buf->vb.i, __FUNCTION__);
 
        } else {
                dprintk( 1, "queue is not empty - append to active\n" );
-               prev = list_entry(cx88q->active.prev, struct cx88_buffer, vb.queue);
-               list_add_tail(&buf->vb.queue,&cx88q->active);
+               prev = list_entry(q->active.prev, struct cx88_buffer, vb.queue);
+               list_add_tail(&buf->vb.queue,&q->active);
                buf->vb.state = STATE_ACTIVE;
-               buf->count    = cx88q->count++;
+               buf->count    = q->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__);
@@ -278,7 +244,7 @@ static void do_cancel_buffers(struct cx8802_dev *dev, char *reason, int restart)
        }
        if (restart)
        {
-               dprintk(1, "restarting queue\n" );
+               dprintk(0, "restarting queue\n" );
                cx8802_restart_queue(dev,q);
        }
        spin_unlock_irqrestore(&dev->slock,flags);
@@ -420,9 +386,9 @@ int cx8802_init_common(struct cx8802_dev *dev)
        pci_read_config_byte(dev->pci, PCI_CLASS_REVISION, &dev->pci_rev);
        pci_read_config_byte(dev->pci, PCI_LATENCY_TIMER,  &dev->pci_lat);
        printk(KERN_INFO "%s/2: found at %s, rev: %d, irq: %d, "
-              "latency: %d, mmio: 0x%llx\n", dev->core->name,
+              "latency: %d, mmio: 0x%lx\n", dev->core->name,
               pci_name(dev->pci), dev->pci_rev, dev->pci->irq,
-              dev->pci_lat,(unsigned long long)pci_resource_start(dev->pci,0));
+              dev->pci_lat,pci_resource_start(dev->pci,0));
 
        /* initialize driver struct */
        spin_lock_init(&dev->slock);
@@ -438,7 +404,7 @@ int cx8802_init_common(struct cx8802_dev *dev)
 
        /* get irq */
        err = request_irq(dev->pci->irq, cx8802_irq,
-                         IRQF_SHARED | IRQF_DISABLED, dev->core->name, dev);
+                         SA_SHIRQ | SA_INTERRUPT, dev->core->name, dev);
        if (err < 0) {
                printk(KERN_ERR "%s: can't get IRQ %d\n",
                       dev->core->name, dev->pci->irq);