linux/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-port.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Broadcom BM2835 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