/* SPDX-License-Identifier: GPL-2.0 */ /* * Broadcom BCM2835 V4L2 driver * * Copyright © 2013 Raspberry Pi (Trading) Ltd. * * Authors: Vincent Sanders @ Collabora * Dave Stevenson @ Broadcom * (now dave.stevenson@raspberrypi.org) * Simon Mellor @ Broadcom * Luke Diamand @ Broadcom */ /* MMAL_PORT_TYPE_T */ enum mmal_port_type { MMAL_PORT_TYPE_UNKNOWN = 0, /* Unknown port type */ MMAL_PORT_TYPE_CONTROL, /* Control port */ MMAL_PORT_TYPE_INPUT, /* Input port */ MMAL_PORT_TYPE_OUTPUT, /* Output port */ MMAL_PORT_TYPE_CLOCK, /* Clock port */ }; /* The port is pass-through and doesn't need buffer headers allocated */ #define MMAL_PORT_CAPABILITY_PASSTHROUGH 0x01 /* *The port wants to allocate the buffer payloads. * This signals a preference that payload allocation should be done * on this port for efficiency reasons. */ #define MMAL_PORT_CAPABILITY_ALLOCATION 0x02 /* * The port supports format change events. * This applies to input ports and is used to let the client know * whether the port supports being reconfigured via a format * change event (i.e. without having to disable the port). */ #define MMAL_PORT_CAPABILITY_SUPPORTS_EVENT_FORMAT_CHANGE 0x04 /* * mmal port structure (MMAL_PORT_T) * * most elements are informational only, the pointer values for * interogation messages are generally provided as additional * structures within the message. When used to set values only the * buffer_num, buffer_size and userdata parameters are writable. */ struct mmal_port { u32 priv; /* Private member used by the framework */ u32 name; /* Port name. Used for debugging purposes (RO) */ u32 type; /* Type of the port (RO) enum mmal_port_type */ u16 index; /* Index of the port in its type list (RO) */ u16 index_all; /* Index of the port in the list of all ports (RO) */ u32 is_enabled; /* Indicates whether the port is enabled or not (RO) */ u32 format; /* Format of the elementary stream */ u32 buffer_num_min; /* Minimum number of buffers the port * requires (RO). This is set by the * component. */ u32 buffer_size_min; /* Minimum size of buffers the port * requires (RO). This is set by the * component. */ u32 buffer_alignment_min;/* Minimum alignment requirement for * the buffers (RO). A value of * zero means no special alignment * requirements. This is set by the * component. */ u32 buffer_num_recommended; /* Number of buffers the port * recommends for optimal * performance (RO). A value of * zero means no special * recommendation. This is set * by the component. */ u32 buffer_size_recommended; /* Size of buffers the port * recommends for optimal * performance (RO). A value of * zero means no special * recommendation. This is set * by the component. */ u32 buffer_num; /* Actual number of buffers the port will use. * This is set by the client. */ u32 buffer_size; /* Actual maximum size of the buffers that * will be sent to the port. This is set by * the client. */ u32 component; /* Component this port belongs to (Read Only) */ u32 userdata; /* Field reserved for use by the client */ u32 capabilities; /* Flags describing the capabilities of a * port (RO). Bitwise combination of \ref * portcapabilities "Port capabilities" * values. */ }