xref: /linux/drivers/media/platform/rockchip/rkcif/rkcif-stream.h (revision 24f171c7e145f43b9f187578e89b0982ce87e54c)
1*501802e2SMichael Riesch /* SPDX-License-Identifier: GPL-2.0 */
2*501802e2SMichael Riesch /*
3*501802e2SMichael Riesch  * Rockchip Camera Interface (CIF) Driver
4*501802e2SMichael Riesch  *
5*501802e2SMichael Riesch  * Abstraction for the DMA part and the ping-pong scheme (a double-buffering
6*501802e2SMichael Riesch  * mechanism) of the different CIF variants.
7*501802e2SMichael Riesch  * Each stream is represented as V4L2 device whose corresponding media entity
8*501802e2SMichael Riesch  * has one sink pad.
9*501802e2SMichael Riesch  * The sink pad is connected to an instance of the INTERFACE/CROP abstraction
10*501802e2SMichael Riesch  * in rkcif-interface.c.
11*501802e2SMichael Riesch  *
12*501802e2SMichael Riesch  * Copyright (C) 2025 Michael Riesch <michael.riesch@wolfvision.net>
13*501802e2SMichael Riesch  * Copyright (C) 2025 Collabora, Ltd.
14*501802e2SMichael Riesch  */
15*501802e2SMichael Riesch 
16*501802e2SMichael Riesch #ifndef _RKCIF_STREAM_H
17*501802e2SMichael Riesch #define _RKCIF_STREAM_H
18*501802e2SMichael Riesch 
19*501802e2SMichael Riesch #include "rkcif-common.h"
20*501802e2SMichael Riesch 
21*501802e2SMichael Riesch void rkcif_stream_pingpong(struct rkcif_stream *stream);
22*501802e2SMichael Riesch 
23*501802e2SMichael Riesch int rkcif_stream_register(struct rkcif_device *rkcif,
24*501802e2SMichael Riesch 			  struct rkcif_stream *stream);
25*501802e2SMichael Riesch 
26*501802e2SMichael Riesch void rkcif_stream_unregister(struct rkcif_stream *stream);
27*501802e2SMichael Riesch 
28*501802e2SMichael Riesch const struct rkcif_output_fmt *
29*501802e2SMichael Riesch rkcif_stream_find_output_fmt(struct rkcif_stream *stream, bool ret_def,
30*501802e2SMichael Riesch 			     u32 pixelfmt);
31*501802e2SMichael Riesch 
32*501802e2SMichael Riesch #endif
33