File Index
Files and directories
Sign in
FILE

vdec_helpers.h

File preview with syntax highlighting.

linux-6.19.14/drivers/staging/media/meson/vdec/vdec_helpers.h C
 1/* SPDX-License-Identifier: GPL-2.0+ */
 2/*
 3 * Copyright (C) 2018 BayLibre, SAS
 4 * Author: Maxime Jourdan <mjourdan@baylibre.com>
 5 */
 6
 7#ifndef __MESON_VDEC_HELPERS_H_
 8#define __MESON_VDEC_HELPERS_H_
 9
10#include "vdec.h"
11
12/**
13 * amvdec_set_canvases() - Map VB2 buffers to canvases
14 *
15 * @sess: current session
16 * @reg_base: Registry bases of where to write the canvas indexes
17 * @reg_num: number of contiguous registers after each reg_base (including it)
18 */
19int amvdec_set_canvases(struct amvdec_session *sess,
20			u32 reg_base[], u32 reg_num[]);
21
22/* Helpers to read/write to the various IPs (DOS, PARSER) */
23u32 amvdec_read_dos(struct amvdec_core *core, u32 reg);
24void amvdec_write_dos(struct amvdec_core *core, u32 reg, u32 val);
25void amvdec_write_dos_bits(struct amvdec_core *core, u32 reg, u32 val);
26void amvdec_clear_dos_bits(struct amvdec_core *core, u32 reg, u32 val);
27u32 amvdec_read_parser(struct amvdec_core *core, u32 reg);
28void amvdec_write_parser(struct amvdec_core *core, u32 reg, u32 val);
29
30u32 amvdec_am21c_body_size(u32 width, u32 height);
31u32 amvdec_am21c_head_size(u32 width, u32 height);
32u32 amvdec_am21c_size(u32 width, u32 height);
33
34/**
35 * amvdec_dst_buf_done_idx() - Signal that a buffer is done decoding
36 *
37 * @sess: current session
38 * @buf_idx: hardware buffer index
39 * @offset: VIFIFO bitstream offset corresponding to the buffer
40 * @field: V4L2 interlaced field
41 */
42void amvdec_dst_buf_done_idx(struct amvdec_session *sess, u32 buf_idx,
43			     u32 offset, u32 field);
44void amvdec_dst_buf_done(struct amvdec_session *sess,
45			 struct vb2_v4l2_buffer *vbuf, u32 field);
46void amvdec_dst_buf_done_offset(struct amvdec_session *sess,
47				struct vb2_v4l2_buffer *vbuf,
48				u32 offset, u32 field, bool allow_drop);
49
50/**
51 * amvdec_add_ts() - Add a timestamp to the list
52 *
53 * @sess: current session
54 * @ts: timestamp to add
55 * @tc: timecode to add
56 * @offset: offset in the VIFIFO where the associated packet was written
57 * @flags: the vb2_v4l2_buffer flags
58 */
59int amvdec_add_ts(struct amvdec_session *sess, u64 ts,
60		  struct v4l2_timecode tc, u32 offset, u32 flags);
61void amvdec_remove_ts(struct amvdec_session *sess, u64 ts);
62
63/**
64 * amvdec_set_par_from_dar() - Set Pixel Aspect Ratio from Display Aspect Ratio
65 *
66 * @sess: current session
67 * @dar_num: numerator of the DAR
68 * @dar_den: denominator of the DAR
69 */
70void amvdec_set_par_from_dar(struct amvdec_session *sess,
71			     u32 dar_num, u32 dar_den);
72
73/**
74 * amvdec_src_change() - Notify new resolution/DPB size to the core
75 *
76 * @sess: current session
77 * @width: picture width detected by the hardware
78 * @height: picture height detected by the hardware
79 * @dpb_size: Decoded Picture Buffer size (= amount of buffers for decoding)
80 */
81void amvdec_src_change(struct amvdec_session *sess, u32 width,
82		       u32 height, u32 dpb_size);
83
84/**
85 * amvdec_abort() - Abort the current decoding session
86 *
87 * @sess: current session
88 */
89void amvdec_abort(struct amvdec_session *sess);
90#endif
~/ Read-only file preview.