summaryrefslogtreecommitdiff
path: root/drivers/media/pci/bt8xx
diff options
context:
space:
mode:
authorDeborah Brouwer <deborah.brouwer@collabora.com>2023-07-14 19:16:06 -0700
committerMauro Carvalho Chehab <mchehab@kernel.org>2023-08-14 20:27:59 +0200
commitc9c0df318acdf32c8c03997cc9f5652710eaa995 (patch)
treeb33de494ed7ac909ceda42ef5b47b064998508df /drivers/media/pci/bt8xx
parent0f5f12e40824956ed18c1301bed7ac81a33cc70a (diff)
media: bttv: move vbi_skip/vbi_count out of buffer
Instead of storing vbi_skip and vbi_count in each bttv buffer separately, move them to the main bttv struct as they won't change per buffer. Signed-off-by: Deborah Brouwer <deborah.brouwer@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Diffstat (limited to 'drivers/media/pci/bt8xx')
-rw-r--r--drivers/media/pci/bt8xx/bttv-driver.c2
-rw-r--r--drivers/media/pci/bt8xx/bttv-risc.c4
-rw-r--r--drivers/media/pci/bt8xx/bttv-vbi.c16
-rw-r--r--drivers/media/pci/bt8xx/bttvp.h7
4 files changed, 17 insertions, 12 deletions
diff --git a/drivers/media/pci/bt8xx/bttv-driver.c b/drivers/media/pci/bt8xx/bttv-driver.c
index 15825fedb4e0..4d1e0743f193 100644
--- a/drivers/media/pci/bt8xx/bttv-driver.c
+++ b/drivers/media/pci/bt8xx/bttv-driver.c
@@ -3631,6 +3631,8 @@ static int bttv_probe(struct pci_dev *dev, const struct pci_device_id *pci_id)
btv->input = 0;
btv->tvnorm = 0; /* Index into bttv_tvnorms[] i.e. PAL. */
bttv_vbi_fmt_reset(&btv->vbi_fmt, btv->tvnorm);
+ btv->vbi_count[0] = VBI_DEFLINES;
+ btv->vbi_count[1] = VBI_DEFLINES;
btv->do_crop = 0;
v4l2_ctrl_new_std(hdl, &bttv_ctrl_ops,
diff --git a/drivers/media/pci/bt8xx/bttv-risc.c b/drivers/media/pci/bt8xx/bttv-risc.c
index e9bc6bcc7333..97248e340a28 100644
--- a/drivers/media/pci/bt8xx/bttv-risc.c
+++ b/drivers/media/pci/bt8xx/bttv-risc.c
@@ -525,12 +525,12 @@ bttv_buffer_activate_vbi(struct bttv *btv,
btwrite(crop, BT848_O_CROP);
}
- if (vbi->vbi_count[0] > 0) {
+ if (btv->vbi_count[0] > 0) {
top = &vbi->top;
top_irq_flags = 4;
}
- if (vbi->vbi_count[1] > 0) {
+ if (btv->vbi_count[1] > 0) {
top_irq_flags = 0;
bottom = &vbi->bottom;
bottom_irq_flags = 4;
diff --git a/drivers/media/pci/bt8xx/bttv-vbi.c b/drivers/media/pci/bt8xx/bttv-vbi.c
index 4e7fd9a78ace..2fd990039adf 100644
--- a/drivers/media/pci/bt8xx/bttv-vbi.c
+++ b/drivers/media/pci/bt8xx/bttv-vbi.c
@@ -125,14 +125,14 @@ static int vbi_buffer_prepare(struct videobuf_queue *q,
redo_dma_risc = 0;
- if (buf->vbi_skip[0] != skip_lines0 ||
- buf->vbi_skip[1] != skip_lines1 ||
- buf->vbi_count[0] != fh->vbi_fmt.fmt.count[0] ||
- buf->vbi_count[1] != fh->vbi_fmt.fmt.count[1]) {
- buf->vbi_skip[0] = skip_lines0;
- buf->vbi_skip[1] = skip_lines1;
- buf->vbi_count[0] = fh->vbi_fmt.fmt.count[0];
- buf->vbi_count[1] = fh->vbi_fmt.fmt.count[1];
+ if (btv->vbi_skip[0] != skip_lines0 ||
+ btv->vbi_skip[1] != skip_lines1 ||
+ btv->vbi_count[0] != fh->vbi_fmt.fmt.count[0] ||
+ btv->vbi_count[1] != fh->vbi_fmt.fmt.count[1]) {
+ btv->vbi_skip[0] = skip_lines0;
+ btv->vbi_skip[1] = skip_lines1;
+ btv->vbi_count[0] = fh->vbi_fmt.fmt.count[0];
+ btv->vbi_count[1] = fh->vbi_fmt.fmt.count[1];
redo_dma_risc = 1;
}
diff --git a/drivers/media/pci/bt8xx/bttvp.h b/drivers/media/pci/bt8xx/bttvp.h
index b5bb69ab8ab0..bce2401de9bd 100644
--- a/drivers/media/pci/bt8xx/bttvp.h
+++ b/drivers/media/pci/bt8xx/bttvp.h
@@ -150,8 +150,6 @@ struct bttv_buffer {
struct bttv_geometry geo;
struct btcx_riscmem top;
struct btcx_riscmem bottom;
- unsigned int vbi_skip[2];
- unsigned int vbi_count[2];
};
struct bttv_buffer_set {
@@ -239,6 +237,8 @@ void bttv_dma_free(struct videobuf_queue *q, struct bttv *btv,
/* ---------------------------------------------------------- */
/* bttv-vbi.c */
+#define VBI_DEFLINES 16
+
int bttv_try_fmt_vbi_cap(struct file *file, void *fh, struct v4l2_format *f);
int bttv_g_fmt_vbi_cap(struct file *file, void *fh, struct v4l2_format *f);
int bttv_s_fmt_vbi_cap(struct file *file, void *fh, struct v4l2_format *f);
@@ -447,6 +447,9 @@ struct bttv {
int width;
int height;
struct bttv_vbi_fmt vbi_fmt;
+ unsigned int vbi_skip[2];
+ unsigned int vbi_count[2];
+
/* Application called VIDIOC_S_SELECTION. */
int do_crop;