Commit a00e6888 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] saa7134: move saa7134_pgtable to saa7134_dmaqueue

All dmaqueue's use saa7134_pgtable, so move it into struct saa7134_dmaqueue.
The videobuf_queue priv_data field now points to the dmaqueue struct.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 5c44046d
...@@ -1237,7 +1237,7 @@ static int dvb_init(struct saa7134_dev *dev) ...@@ -1237,7 +1237,7 @@ static int dvb_init(struct saa7134_dev *dev)
V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
V4L2_FIELD_ALTERNATE, V4L2_FIELD_ALTERNATE,
sizeof(struct saa7134_buf), sizeof(struct saa7134_buf),
dev, NULL); &dev->ts_q, NULL);
switch (dev->board) { switch (dev->board) {
case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL: case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
......
...@@ -360,7 +360,7 @@ static int empress_init(struct saa7134_dev *dev) ...@@ -360,7 +360,7 @@ static int empress_init(struct saa7134_dev *dev)
V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
V4L2_FIELD_ALTERNATE, V4L2_FIELD_ALTERNATE,
sizeof(struct saa7134_buf), sizeof(struct saa7134_buf),
dev, NULL); &dev->ts_q, NULL);
empress_signal_update(&dev->empress_workqueue); empress_signal_update(&dev->empress_workqueue);
return 0; return 0;
......
...@@ -75,7 +75,8 @@ static int buffer_activate(struct saa7134_dev *dev, ...@@ -75,7 +75,8 @@ static int buffer_activate(struct saa7134_dev *dev,
static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb,
enum v4l2_field field) enum v4l2_field field)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
struct saa7134_buf *buf = container_of(vb, struct saa7134_buf, vb); struct saa7134_buf *buf = container_of(vb, struct saa7134_buf, vb);
unsigned int lines, llength, size; unsigned int lines, llength, size;
int err; int err;
...@@ -102,12 +103,11 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, ...@@ -102,12 +103,11 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb,
buf->vb.width = llength; buf->vb.width = llength;
buf->vb.height = lines; buf->vb.height = lines;
buf->vb.size = size; buf->vb.size = size;
buf->pt = &dev->ts.pt_ts;
err = videobuf_iolock(q,&buf->vb,NULL); err = videobuf_iolock(q,&buf->vb,NULL);
if (err) if (err)
goto oops; goto oops;
err = saa7134_pgtable_build(dev->pci,buf->pt, err = saa7134_pgtable_build(dev->pci, &dmaq->pt,
dma->sglist, dma->sglist,
dma->sglen, dma->sglen,
saa7134_buffer_startpage(buf)); saa7134_buffer_startpage(buf));
...@@ -128,7 +128,8 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, ...@@ -128,7 +128,8 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb,
static int static int
buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size) buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
*size = TS_PACKET_SIZE * dev->ts.nr_packets; *size = TS_PACKET_SIZE * dev->ts.nr_packets;
if (0 == *count) if (0 == *count)
...@@ -140,7 +141,8 @@ buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size) ...@@ -140,7 +141,8 @@ buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size)
static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb) static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb); struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb);
saa7134_buffer_queue(dev,&dev->ts_q,buf); saa7134_buffer_queue(dev,&dev->ts_q,buf);
...@@ -149,7 +151,8 @@ static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb) ...@@ -149,7 +151,8 @@ static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb)
static void buffer_release(struct videobuf_queue *q, struct videobuf_buffer *vb) static void buffer_release(struct videobuf_queue *q, struct videobuf_buffer *vb)
{ {
struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb); struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb);
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
if (dev->ts_started) if (dev->ts_started)
saa7134_ts_stop(dev); saa7134_ts_stop(dev);
...@@ -213,7 +216,7 @@ int saa7134_ts_init1(struct saa7134_dev *dev) ...@@ -213,7 +216,7 @@ int saa7134_ts_init1(struct saa7134_dev *dev)
dev->ts_q.dev = dev; dev->ts_q.dev = dev;
dev->ts_q.need_two = 1; dev->ts_q.need_two = 1;
dev->ts_started = 0; dev->ts_started = 0;
saa7134_pgtable_alloc(dev->pci, &dev->ts.pt_ts); saa7134_pgtable_alloc(dev->pci, &dev->ts_q.pt);
/* init TS hw */ /* init TS hw */
saa7134_ts_init_hw(dev); saa7134_ts_init_hw(dev);
...@@ -259,7 +262,7 @@ int saa7134_ts_start(struct saa7134_dev *dev) ...@@ -259,7 +262,7 @@ int saa7134_ts_start(struct saa7134_dev *dev)
saa_writel(SAA7134_RS_PITCH(5), TS_PACKET_SIZE); saa_writel(SAA7134_RS_PITCH(5), TS_PACKET_SIZE);
saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_16 | saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_16 |
SAA7134_RS_CONTROL_ME | SAA7134_RS_CONTROL_ME |
(dev->ts.pt_ts.dma >> 12)); (dev->ts_q.pt.dma >> 12));
/* reset hardware TS buffers */ /* reset hardware TS buffers */
saa_writeb(SAA7134_TS_SERIAL1, 0x00); saa_writeb(SAA7134_TS_SERIAL1, 0x00);
...@@ -293,7 +296,7 @@ int saa7134_ts_start(struct saa7134_dev *dev) ...@@ -293,7 +296,7 @@ int saa7134_ts_start(struct saa7134_dev *dev)
int saa7134_ts_fini(struct saa7134_dev *dev) int saa7134_ts_fini(struct saa7134_dev *dev)
{ {
saa7134_pgtable_free(dev->pci, &dev->ts.pt_ts); saa7134_pgtable_free(dev->pci, &dev->ts_q.pt);
return 0; return 0;
} }
......
...@@ -96,7 +96,7 @@ static int buffer_activate(struct saa7134_dev *dev, ...@@ -96,7 +96,7 @@ static int buffer_activate(struct saa7134_dev *dev,
base = saa7134_buffer_base(buf); base = saa7134_buffer_base(buf);
control = SAA7134_RS_CONTROL_BURST_16 | control = SAA7134_RS_CONTROL_BURST_16 |
SAA7134_RS_CONTROL_ME | SAA7134_RS_CONTROL_ME |
(buf->pt->dma >> 12); (dev->vbi_q.pt.dma >> 12);
saa_writel(SAA7134_RS_BA1(2), base); saa_writel(SAA7134_RS_BA1(2), base);
saa_writel(SAA7134_RS_BA2(2), base + dev->vbi_hlen * dev->vbi_vlen); saa_writel(SAA7134_RS_BA2(2), base + dev->vbi_hlen * dev->vbi_vlen);
saa_writel(SAA7134_RS_PITCH(2), dev->vbi_hlen); saa_writel(SAA7134_RS_PITCH(2), dev->vbi_hlen);
...@@ -117,7 +117,8 @@ static int buffer_prepare(struct videobuf_queue *q, ...@@ -117,7 +117,8 @@ static int buffer_prepare(struct videobuf_queue *q,
struct videobuf_buffer *vb, struct videobuf_buffer *vb,
enum v4l2_field field) enum v4l2_field field)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb); struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb);
unsigned int size; unsigned int size;
int err; int err;
...@@ -135,12 +136,11 @@ static int buffer_prepare(struct videobuf_queue *q, ...@@ -135,12 +136,11 @@ static int buffer_prepare(struct videobuf_queue *q,
buf->vb.width = dev->vbi_hlen; buf->vb.width = dev->vbi_hlen;
buf->vb.height = dev->vbi_vlen; buf->vb.height = dev->vbi_vlen;
buf->vb.size = size; buf->vb.size = size;
buf->pt = &dev->pt_vbi;
err = videobuf_iolock(q,&buf->vb,NULL); err = videobuf_iolock(q,&buf->vb,NULL);
if (err) if (err)
goto oops; goto oops;
err = saa7134_pgtable_build(dev->pci,buf->pt, err = saa7134_pgtable_build(dev->pci, &dmaq->pt,
dma->sglist, dma->sglist,
dma->sglen, dma->sglen,
saa7134_buffer_startpage(buf)); saa7134_buffer_startpage(buf));
...@@ -160,7 +160,8 @@ static int buffer_prepare(struct videobuf_queue *q, ...@@ -160,7 +160,8 @@ static int buffer_prepare(struct videobuf_queue *q,
static int static int
buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size) buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
dev->vbi_vlen = dev->tvnorm->vbi_v_stop_0 - dev->tvnorm->vbi_v_start_0 + 1; dev->vbi_vlen = dev->tvnorm->vbi_v_stop_0 - dev->tvnorm->vbi_v_start_0 + 1;
if (dev->vbi_vlen > VBI_LINE_COUNT) if (dev->vbi_vlen > VBI_LINE_COUNT)
...@@ -175,7 +176,8 @@ buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size) ...@@ -175,7 +176,8 @@ buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size)
static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb) static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb); struct saa7134_buf *buf = container_of(vb,struct saa7134_buf,vb);
saa7134_buffer_queue(dev,&dev->vbi_q,buf); saa7134_buffer_queue(dev,&dev->vbi_q,buf);
......
...@@ -847,7 +847,7 @@ static int buffer_activate(struct saa7134_dev *dev, ...@@ -847,7 +847,7 @@ static int buffer_activate(struct saa7134_dev *dev,
bpl = (buf->vb.width * dev->fmt->depth) / 8; bpl = (buf->vb.width * dev->fmt->depth) / 8;
control = SAA7134_RS_CONTROL_BURST_16 | control = SAA7134_RS_CONTROL_BURST_16 |
SAA7134_RS_CONTROL_ME | SAA7134_RS_CONTROL_ME |
(buf->pt->dma >> 12); (dev->video_q.pt.dma >> 12);
if (dev->fmt->bswap) if (dev->fmt->bswap)
control |= SAA7134_RS_CONTROL_BSWAP; control |= SAA7134_RS_CONTROL_BSWAP;
if (dev->fmt->wswap) if (dev->fmt->wswap)
...@@ -906,7 +906,8 @@ static int buffer_prepare(struct videobuf_queue *q, ...@@ -906,7 +906,8 @@ static int buffer_prepare(struct videobuf_queue *q,
struct videobuf_buffer *vb, struct videobuf_buffer *vb,
enum v4l2_field field) enum v4l2_field field)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
struct saa7134_buf *buf = container_of(vb, struct saa7134_buf, vb); struct saa7134_buf *buf = container_of(vb, struct saa7134_buf, vb);
unsigned int size; unsigned int size;
int err; int err;
...@@ -942,13 +943,12 @@ static int buffer_prepare(struct videobuf_queue *q, ...@@ -942,13 +943,12 @@ static int buffer_prepare(struct videobuf_queue *q,
buf->vb.height = dev->height; buf->vb.height = dev->height;
buf->vb.size = size; buf->vb.size = size;
buf->vb.field = field; buf->vb.field = field;
buf->pt = &dev->pt_cap;
dev->video_q.curr = NULL; dev->video_q.curr = NULL;
err = videobuf_iolock(q,&buf->vb,&dev->ovbuf); err = videobuf_iolock(q,&buf->vb,&dev->ovbuf);
if (err) if (err)
goto oops; goto oops;
err = saa7134_pgtable_build(dev->pci,buf->pt, err = saa7134_pgtable_build(dev->pci, &dmaq->pt,
dma->sglist, dma->sglist,
dma->sglen, dma->sglen,
saa7134_buffer_startpage(buf)); saa7134_buffer_startpage(buf));
...@@ -967,7 +967,8 @@ static int buffer_prepare(struct videobuf_queue *q, ...@@ -967,7 +967,8 @@ static int buffer_prepare(struct videobuf_queue *q,
static int static int
buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size) buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
*size = dev->fmt->depth * dev->width * dev->height >> 3; *size = dev->fmt->depth * dev->width * dev->height >> 3;
if (0 == *count) if (0 == *count)
...@@ -978,7 +979,8 @@ buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size) ...@@ -978,7 +979,8 @@ buffer_setup(struct videobuf_queue *q, unsigned int *count, unsigned int *size)
static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb) static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb)
{ {
struct saa7134_dev *dev = q->priv_data; struct saa7134_dmaqueue *dmaq = q->priv_data;
struct saa7134_dev *dev = dmaq->dev;
struct saa7134_buf *buf = container_of(vb, struct saa7134_buf, vb); struct saa7134_buf *buf = container_of(vb, struct saa7134_buf, vb);
saa7134_buffer_queue(dev, &dev->video_q, buf); saa7134_buffer_queue(dev, &dev->video_q, buf);
...@@ -2289,15 +2291,15 @@ int saa7134_video_init1(struct saa7134_dev *dev) ...@@ -2289,15 +2291,15 @@ int saa7134_video_init1(struct saa7134_dev *dev)
V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_CAPTURE,
V4L2_FIELD_INTERLACED, V4L2_FIELD_INTERLACED,
sizeof(struct saa7134_buf), sizeof(struct saa7134_buf),
dev, NULL); &dev->video_q, NULL);
videobuf_queue_sg_init(&dev->vbi_vbq, &saa7134_vbi_qops, videobuf_queue_sg_init(&dev->vbi_vbq, &saa7134_vbi_qops,
&dev->pci->dev, &dev->slock, &dev->pci->dev, &dev->slock,
V4L2_BUF_TYPE_VBI_CAPTURE, V4L2_BUF_TYPE_VBI_CAPTURE,
V4L2_FIELD_SEQ_TB, V4L2_FIELD_SEQ_TB,
sizeof(struct saa7134_buf), sizeof(struct saa7134_buf),
dev, NULL); &dev->vbi_q, NULL);
saa7134_pgtable_alloc(dev->pci, &dev->pt_cap); saa7134_pgtable_alloc(dev->pci, &dev->video_q.pt);
saa7134_pgtable_alloc(dev->pci, &dev->pt_vbi); saa7134_pgtable_alloc(dev->pci, &dev->vbi_q.pt);
return 0; return 0;
} }
...@@ -2305,8 +2307,8 @@ int saa7134_video_init1(struct saa7134_dev *dev) ...@@ -2305,8 +2307,8 @@ int saa7134_video_init1(struct saa7134_dev *dev)
void saa7134_video_fini(struct saa7134_dev *dev) void saa7134_video_fini(struct saa7134_dev *dev)
{ {
/* free stuff */ /* free stuff */
saa7134_pgtable_free(dev->pci, &dev->pt_cap); saa7134_pgtable_free(dev->pci, &dev->video_q.pt);
saa7134_pgtable_free(dev->pci, &dev->pt_vbi); saa7134_pgtable_free(dev->pci, &dev->vbi_q.pt);
v4l2_ctrl_handler_free(&dev->ctrl_handler); v4l2_ctrl_handler_free(&dev->ctrl_handler);
if (card_has_radio(dev)) if (card_has_radio(dev))
v4l2_ctrl_handler_free(&dev->radio_ctrl_handler); v4l2_ctrl_handler_free(&dev->radio_ctrl_handler);
......
...@@ -460,9 +460,6 @@ struct saa7134_buf { ...@@ -460,9 +460,6 @@ struct saa7134_buf {
int (*activate)(struct saa7134_dev *dev, int (*activate)(struct saa7134_dev *dev,
struct saa7134_buf *buf, struct saa7134_buf *buf,
struct saa7134_buf *next); struct saa7134_buf *next);
/* page tables */
struct saa7134_pgtable *pt;
}; };
struct saa7134_dmaqueue { struct saa7134_dmaqueue {
...@@ -471,6 +468,7 @@ struct saa7134_dmaqueue { ...@@ -471,6 +468,7 @@ struct saa7134_dmaqueue {
struct list_head queue; struct list_head queue;
struct timer_list timeout; struct timer_list timeout;
unsigned int need_two; unsigned int need_two;
struct saa7134_pgtable pt;
}; };
/* video filehandle status */ /* video filehandle status */
...@@ -517,7 +515,6 @@ struct saa7134_dmasound { ...@@ -517,7 +515,6 @@ struct saa7134_dmasound {
/* ts/mpeg status */ /* ts/mpeg status */
struct saa7134_ts { struct saa7134_ts {
/* TS capture */ /* TS capture */
struct saa7134_pgtable pt_ts;
int nr_packets; int nr_packets;
int nr_bufs; int nr_bufs;
}; };
...@@ -590,10 +587,8 @@ struct saa7134_dev { ...@@ -590,10 +587,8 @@ struct saa7134_dev {
/* video+ts+vbi capture */ /* video+ts+vbi capture */
struct saa7134_dmaqueue video_q; struct saa7134_dmaqueue video_q;
struct saa7134_pgtable pt_cap;
struct videobuf_queue video_vbq; struct videobuf_queue video_vbq;
struct saa7134_dmaqueue vbi_q; struct saa7134_dmaqueue vbi_q;
struct saa7134_pgtable pt_vbi;
struct videobuf_queue vbi_vbq; struct videobuf_queue vbi_vbq;
unsigned int video_fieldcount; unsigned int video_fieldcount;
unsigned int vbi_fieldcount; unsigned int vbi_fieldcount;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment