Lines Matching +full:v +full:- +full:blanking

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Derived from cx25840-vbi.c
11 #include "cx18-driver.h"
14 * For sliced VBI output, we set up to use VIP-1.1, 8-bit mode,
16 * Thus, according to the VIP-2 Spec, our VBI ancillary data lines
24 * 2 byte Internal DID: VBI-line-# 0x80
29 * The RP codes for EAVs when in VIP-1.1 mode, not in raw mode, &
30 * in the vertical blanking interval are:
34 * Since the V bit is only allowed to toggle in the EAV RP code, just
121 struct cx18_av_state *state = &cx->av_state; in cx18_av_g_sliced_fmt()
129 int is_pal = !(state->std & V4L2_STD_525_60); in cx18_av_g_sliced_fmt()
132 memset(svbi->service_lines, 0, sizeof(svbi->service_lines)); in cx18_av_g_sliced_fmt()
133 svbi->service_set = 0; in cx18_av_g_sliced_fmt()
141 u8 v = cx18_av_read(cx, 0x424 + i - 7); in cx18_av_g_sliced_fmt() local
143 svbi->service_lines[0][i] = lcr2vbi[v >> 4]; in cx18_av_g_sliced_fmt()
144 svbi->service_lines[1][i] = lcr2vbi[v & 0xf]; in cx18_av_g_sliced_fmt()
145 svbi->service_set |= svbi->service_lines[0][i] | in cx18_av_g_sliced_fmt()
146 svbi->service_lines[1][i]; in cx18_av_g_sliced_fmt()
150 u8 v = cx18_av_read(cx, 0x424 + i - 10); in cx18_av_g_sliced_fmt() local
152 svbi->service_lines[0][i] = lcr2vbi[v >> 4]; in cx18_av_g_sliced_fmt()
153 svbi->service_lines[1][i] = lcr2vbi[v & 0xf]; in cx18_av_g_sliced_fmt()
154 svbi->service_set |= svbi->service_lines[0][i] | in cx18_av_g_sliced_fmt()
155 svbi->service_lines[1][i]; in cx18_av_g_sliced_fmt()
164 struct cx18_av_state *state = &cx->av_state; in cx18_av_s_raw_fmt()
170 cx18_av_write(cx, 0x47f, state->slicer_line_delay); in cx18_av_s_raw_fmt()
178 struct cx18_av_state *state = &cx->av_state; in cx18_av_s_sliced_fmt()
179 int is_pal = !(state->std & V4L2_STD_525_60); in cx18_av_s_sliced_fmt()
192 cx18_av_write(cx, 0x47f, state->slicer_line_delay); in cx18_av_s_sliced_fmt()
197 svbi->service_lines[0][i] = in cx18_av_s_sliced_fmt()
198 svbi->service_lines[1][i] = 0; in cx18_av_s_sliced_fmt()
201 svbi->service_lines[0][i] = in cx18_av_s_sliced_fmt()
202 svbi->service_lines[1][i] = 0; in cx18_av_s_sliced_fmt()
205 svbi->service_lines[0][i] = in cx18_av_s_sliced_fmt()
206 svbi->service_lines[1][i] = 0; in cx18_av_s_sliced_fmt()
212 switch (svbi->service_lines[1-x][i]) { in cx18_av_s_sliced_fmt()
249 struct cx18_av_state *state = &cx->av_state; in cx18_av_decode_vbi_line()
250 struct vbi_anc_data *anc = (struct vbi_anc_data *)vbi->p; in cx18_av_decode_vbi_line()
257 if (anc->preamble[0] || in cx18_av_decode_vbi_line()
258 anc->preamble[1] != 0xff || anc->preamble[2] != 0xff || in cx18_av_decode_vbi_line()
259 (anc->did != sliced_vbi_did[0] && in cx18_av_decode_vbi_line()
260 anc->did != sliced_vbi_did[1])) { in cx18_av_decode_vbi_line()
261 vbi->line = vbi->type = 0; in cx18_av_decode_vbi_line()
265 did = anc->did; in cx18_av_decode_vbi_line()
266 sdid = anc->sdid & 0xf; in cx18_av_decode_vbi_line()
267 l = anc->idid[0] & 0x3f; in cx18_av_decode_vbi_line()
268 l += state->slicer_line_offset; in cx18_av_decode_vbi_line()
269 p = anc->payload; in cx18_av_decode_vbi_line()
294 vbi->type = err ? 0 : sdid; in cx18_av_decode_vbi_line()
295 vbi->line = err ? 0 : l; in cx18_av_decode_vbi_line()
296 vbi->is_second_field = err ? 0 : (did == sliced_vbi_did[1]); in cx18_av_decode_vbi_line()
297 vbi->p = p; in cx18_av_decode_vbi_line()