V4L/DVB: Remove videobuf_sg_alloc abuse
[pandora-kernel.git] / drivers / media / video / cx88 / cx88-alsa.c
index 07fe905..ba499d0 100644 (file)
        Data type declarations - Can be moded to a header file later
  ****************************************************************************/
 
+struct cx88_audio_buffer {
+       unsigned int               bpl;
+       struct btcx_riscmem        risc;
+       struct videobuf_dmabuf     dma;
+};
+
 struct cx88_audio_dev {
        struct cx88_core           *core;
        struct cx88_dmaqueue       q;
@@ -75,7 +81,7 @@ struct cx88_audio_dev {
 
        struct videobuf_dmabuf     *dma_risc;
 
-       struct cx88_buffer         *buf;
+       struct cx88_audio_buffer   *buf;
 
        struct snd_pcm_substream   *substream;
 };
@@ -123,7 +129,7 @@ MODULE_PARM_DESC(debug,"enable debug messages");
 
 static int _cx88_start_audio_dma(snd_cx88_card_t *chip)
 {
-       struct cx88_buffer   *buf = chip->buf;
+       struct cx88_audio_buffer *buf = chip->buf;
        struct cx88_core *core=chip->core;
        struct sram_channel *audio_ch = &cx88_sram_channels[SRAM_CH25];
 
@@ -376,7 +382,7 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream,
        snd_cx88_card_t *chip = snd_pcm_substream_chip(substream);
        struct videobuf_dmabuf *dma;
 
-       struct cx88_buffer *buf;
+       struct cx88_audio_buffer *buf;
        int ret;
 
        if (substream->runtime->dma_area) {
@@ -391,21 +397,16 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream,
        BUG_ON(!chip->dma_size);
        BUG_ON(chip->num_periods & (chip->num_periods-1));
 
-       buf = videobuf_sg_alloc(sizeof(*buf));
+       buf = kzalloc(sizeof(*buf), GFP_KERNEL);
        if (NULL == buf)
                return -ENOMEM;
 
-       buf->vb.memory = V4L2_MEMORY_MMAP;
-       buf->vb.field  = V4L2_FIELD_NONE;
-       buf->vb.width  = chip->period_size;
-       buf->bpl       = chip->period_size;
-       buf->vb.height = chip->num_periods;
-       buf->vb.size   = chip->dma_size;
+       buf->bpl = chip->period_size;
 
-       dma = videobuf_to_dma(&buf->vb);
+       dma = &buf->dma;
        videobuf_dma_init(dma);
        ret = videobuf_dma_init_kernel(dma, PCI_DMA_FROMDEVICE,
-                       (PAGE_ALIGN(buf->vb.size) >> PAGE_SHIFT));
+                       (PAGE_ALIGN(chip->dma_size) >> PAGE_SHIFT));
        if (ret < 0)
                goto error;
 
@@ -414,7 +415,7 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream,
                goto error;
 
        ret = cx88_risc_databuffer(chip->pci, &buf->risc, dma->sglist,
-                                  buf->vb.width, buf->vb.height, 1);
+                                  chip->period_size, chip->num_periods, 1);
        if (ret < 0)
                goto error;
 
@@ -422,8 +423,6 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream,
        buf->risc.jmp[0] = cpu_to_le32(RISC_JUMP|RISC_IRQ1|RISC_CNT_INC);
        buf->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
 
-       buf->vb.state = VIDEOBUF_PREPARED;
-
        chip->buf = buf;
        chip->dma_risc = dma;