1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Broadcom BCM2835 V4L2 driver 4 * 5 * Copyright © 2013 Raspberry Pi (Trading) Ltd. 6 * 7 * Authors: Vincent Sanders @ Collabora 8 * Dave Stevenson @ Broadcom 9 * (now dave.stevenson@raspberrypi.org) 10 * Simon Mellor @ Broadcom 11 * Luke Diamand @ Broadcom 12 * 13 * MMAL structures 14 * 15 */ 16 #ifndef MMAL_COMMON_H 17 #define MMAL_COMMON_H 18 19 #define MMAL_FOURCC(a, b, c, d) ((a) | (b << 8) | (c << 16) | (d << 24)) 20 #define MMAL_MAGIC MMAL_FOURCC('m', 'm', 'a', 'l') 21 22 /** Special value signalling that time is not known */ 23 #define MMAL_TIME_UNKNOWN BIT_ULL(63) 24 25 struct mmal_msg_context; 26 27 /* mapping between v4l and mmal video modes */ 28 struct mmal_fmt { 29 u32 fourcc; /* v4l2 format id */ 30 int flags; /* v4l2 flags field */ 31 u32 mmal; 32 int depth; 33 u32 mmal_component; /* MMAL component index to be used to encode */ 34 u32 ybbp; /* depth of first Y plane for planar formats */ 35 bool remove_padding; /* Does the GPU have to remove padding, 36 * or can we do hide padding via bytesperline. 37 */ 38 }; 39 40 /* buffer for one video frame */ 41 struct mmal_buffer { 42 /* v4l buffer data -- must be first */ 43 struct vb2_v4l2_buffer vb; 44 45 /* list of buffers available */ 46 struct list_head list; 47 48 void *buffer; /* buffer pointer */ 49 unsigned long buffer_size; /* size of allocated buffer */ 50 51 struct mmal_msg_context *msg_context; 52 53 unsigned long length; 54 u32 mmal_flags; 55 s64 dts; 56 s64 pts; 57 }; 58 59 /* */ 60 struct mmal_colourfx { 61 s32 enable; 62 u32 u; 63 u32 v; 64 }; 65 #endif 66