1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | cx231xx_vbi.h - driver for Conexant Cx23100/101/102 USB video capture devices |
4 | |
5 | Copyright (C) 2008 <srinivasa.deevi at conexant dot com> |
6 | Based on cx88 driver |
7 | |
8 | */ |
9 | |
10 | #ifndef _CX231XX_VBI_H |
11 | #define _CX231XX_VBI_H |
12 | |
13 | extern struct vb2_ops cx231xx_vbi_qops; |
14 | |
15 | #define NTSC_VBI_START_LINE 10 /* line 10 - 21 */ |
16 | #define NTSC_VBI_END_LINE 21 |
17 | #define NTSC_VBI_LINES (NTSC_VBI_END_LINE-NTSC_VBI_START_LINE+1) |
18 | |
19 | #define PAL_VBI_START_LINE 6 |
20 | #define PAL_VBI_END_LINE 23 |
21 | #define PAL_VBI_LINES (PAL_VBI_END_LINE-PAL_VBI_START_LINE+1) |
22 | |
23 | #define VBI_STRIDE 1440 |
24 | #define VBI_SAMPLES_PER_LINE 1440 |
25 | |
26 | #define CX231XX_NUM_VBI_PACKETS 4 |
27 | #define CX231XX_NUM_VBI_BUFS 5 |
28 | |
29 | /* stream functions */ |
30 | int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets, |
31 | int num_bufs, int max_pkt_size, |
32 | int (*bulk_copy) (struct cx231xx *dev, |
33 | struct urb *urb)); |
34 | |
35 | void cx231xx_uninit_vbi_isoc(struct cx231xx *dev); |
36 | |
37 | /* vbi data copy functions */ |
38 | u32 cx231xx_get_vbi_line(struct cx231xx *dev, struct cx231xx_dmaqueue *dma_q, |
39 | u8 sav_eav, u8 *p_buffer, u32 buffer_size); |
40 | |
41 | u32 cx231xx_copy_vbi_line(struct cx231xx *dev, struct cx231xx_dmaqueue *dma_q, |
42 | u8 *p_line, u32 length, int field_number); |
43 | |
44 | void cx231xx_reset_vbi_buffer(struct cx231xx *dev, |
45 | struct cx231xx_dmaqueue *dma_q); |
46 | |
47 | int cx231xx_do_vbi_copy(struct cx231xx *dev, struct cx231xx_dmaqueue *dma_q, |
48 | u8 *p_buffer, u32 bytes_to_copy); |
49 | |
50 | u8 cx231xx_is_vbi_buffer_done(struct cx231xx *dev, |
51 | struct cx231xx_dmaqueue *dma_q); |
52 | |
53 | #endif |
54 | |