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
14/* MMAL_PORT_TYPE_T */
15enum mmal_port_type {
16 MMAL_PORT_TYPE_UNKNOWN = 0, /* Unknown port type */
17 MMAL_PORT_TYPE_CONTROL, /* Control port */
18 MMAL_PORT_TYPE_INPUT, /* Input port */
19 MMAL_PORT_TYPE_OUTPUT, /* Output port */
20 MMAL_PORT_TYPE_CLOCK, /* Clock port */
21};
22
23/* The port is pass-through and doesn't need buffer headers allocated */
24#define MMAL_PORT_CAPABILITY_PASSTHROUGH 0x01
25/*
26 *The port wants to allocate the buffer payloads.
27 * This signals a preference that payload allocation should be done
28 * on this port for efficiency reasons.
29 */
30#define MMAL_PORT_CAPABILITY_ALLOCATION 0x02
31/*
32 * The port supports format change events.
33 * This applies to input ports and is used to let the client know
34 * whether the port supports being reconfigured via a format
35 * change event (i.e. without having to disable the port).
36 */
37#define MMAL_PORT_CAPABILITY_SUPPORTS_EVENT_FORMAT_CHANGE 0x04
38
39/*
40 * mmal port structure (MMAL_PORT_T)
41 *
42 * most elements are informational only, the pointer values for
43 * interogation messages are generally provided as additional
44 * structures within the message. When used to set values only the
45 * buffer_num, buffer_size and userdata parameters are writable.
46 */
47struct mmal_port {
48 u32 priv; /* Private member used by the framework */
49 u32 name; /* Port name. Used for debugging purposes (RO) */
50
51 u32 type; /* Type of the port (RO) enum mmal_port_type */
52 u16 index; /* Index of the port in its type list (RO) */
53 u16 index_all; /* Index of the port in the list of all ports (RO) */
54
55 u32 is_enabled; /* Indicates whether the port is enabled or not (RO) */
56 u32 format; /* Format of the elementary stream */
57
58 u32 buffer_num_min; /* Minimum number of buffers the port
59 * requires (RO). This is set by the
60 * component.
61 */
62
63 u32 buffer_size_min; /* Minimum size of buffers the port
64 * requires (RO). This is set by the
65 * component.
66 */
67
68 u32 buffer_alignment_min;/* Minimum alignment requirement for
69 * the buffers (RO). A value of
70 * zero means no special alignment
71 * requirements. This is set by the
72 * component.
73 */
74
75 u32 buffer_num_recommended; /* Number of buffers the port
76 * recommends for optimal
77 * performance (RO). A value of
78 * zero means no special
79 * recommendation. This is set
80 * by the component.
81 */
82
83 u32 buffer_size_recommended; /* Size of buffers the port
84 * recommends for optimal
85 * performance (RO). A value of
86 * zero means no special
87 * recommendation. This is set
88 * by the component.
89 */
90
91 u32 buffer_num; /* Actual number of buffers the port will use.
92 * This is set by the client.
93 */
94
95 u32 buffer_size; /* Actual maximum size of the buffers that
96 * will be sent to the port. This is set by
97 * the client.
98 */
99
100 u32 component; /* Component this port belongs to (Read Only) */
101
102 u32 userdata; /* Field reserved for use by the client */
103
104 u32 capabilities; /* Flags describing the capabilities of a
105 * port (RO). Bitwise combination of \ref
106 * portcapabilities "Port capabilities"
107 * values.
108 */
109};
110

source code of linux/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-port.h