root/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-port.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */
  15 enum 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  */
  47 struct 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 };

/* [<][>][^][v][top][bottom][index][help] */