root/include/media/vsp1.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0+ */
   2 /*
   3  * vsp1.h  --  R-Car VSP1 API
   4  *
   5  * Copyright (C) 2015 Renesas Electronics Corporation
   6  *
   7  * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
   8  */
   9 #ifndef __MEDIA_VSP1_H__
  10 #define __MEDIA_VSP1_H__
  11 
  12 #include <linux/scatterlist.h>
  13 #include <linux/types.h>
  14 #include <linux/videodev2.h>
  15 
  16 struct device;
  17 
  18 int vsp1_du_init(struct device *dev);
  19 
  20 #define VSP1_DU_STATUS_COMPLETE         BIT(0)
  21 #define VSP1_DU_STATUS_WRITEBACK        BIT(1)
  22 
  23 /**
  24  * struct vsp1_du_lif_config - VSP LIF configuration
  25  * @width: output frame width
  26  * @height: output frame height
  27  * @interlaced: true for interlaced pipelines
  28  * @callback: frame completion callback function (optional). When a callback
  29  *            is provided, the VSP driver guarantees that it will be called once
  30  *            and only once for each vsp1_du_atomic_flush() call.
  31  * @callback_data: data to be passed to the frame completion callback
  32  */
  33 struct vsp1_du_lif_config {
  34         unsigned int width;
  35         unsigned int height;
  36         bool interlaced;
  37 
  38         void (*callback)(void *data, unsigned int status, u32 crc);
  39         void *callback_data;
  40 };
  41 
  42 int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
  43                       const struct vsp1_du_lif_config *cfg);
  44 
  45 /**
  46  * struct vsp1_du_atomic_config - VSP atomic configuration parameters
  47  * @pixelformat: plane pixel format (V4L2 4CC)
  48  * @pitch: line pitch in bytes for the first plane
  49  * @mem: DMA memory address for each plane of the frame buffer
  50  * @src: source rectangle in the frame buffer (integer coordinates)
  51  * @dst: destination rectangle on the display (integer coordinates)
  52  * @alpha: alpha value (0: fully transparent, 255: fully opaque)
  53  * @zpos: Z position of the plane (from 0 to number of planes minus 1)
  54  */
  55 struct vsp1_du_atomic_config {
  56         u32 pixelformat;
  57         unsigned int pitch;
  58         dma_addr_t mem[3];
  59         struct v4l2_rect src;
  60         struct v4l2_rect dst;
  61         unsigned int alpha;
  62         unsigned int zpos;
  63 };
  64 
  65 /**
  66  * enum vsp1_du_crc_source - Source used for CRC calculation
  67  * @VSP1_DU_CRC_NONE: CRC calculation disabled
  68  * @VSP1_DU_CRC_PLANE: Perform CRC calculation on an input plane
  69  * @VSP1_DU_CRC_OUTPUT: Perform CRC calculation on the composed output
  70  */
  71 enum vsp1_du_crc_source {
  72         VSP1_DU_CRC_NONE,
  73         VSP1_DU_CRC_PLANE,
  74         VSP1_DU_CRC_OUTPUT,
  75 };
  76 
  77 /**
  78  * struct vsp1_du_crc_config - VSP CRC computation configuration parameters
  79  * @source: source for CRC calculation
  80  * @index: index of the CRC source plane (when source is set to plane)
  81  */
  82 struct vsp1_du_crc_config {
  83         enum vsp1_du_crc_source source;
  84         unsigned int index;
  85 };
  86 
  87 /**
  88  * struct vsp1_du_writeback_config - VSP writeback configuration parameters
  89  * @pixelformat: plane pixel format (V4L2 4CC)
  90  * @pitch: line pitch in bytes for the first plane
  91  * @mem: DMA memory address for each plane of the frame buffer
  92  */
  93 struct vsp1_du_writeback_config {
  94         u32 pixelformat;
  95         unsigned int pitch;
  96         dma_addr_t mem[3];
  97 };
  98 
  99 /**
 100  * struct vsp1_du_atomic_pipe_config - VSP atomic pipe configuration parameters
 101  * @crc: CRC computation configuration
 102  * @writeback: writeback configuration
 103  */
 104 struct vsp1_du_atomic_pipe_config {
 105         struct vsp1_du_crc_config crc;
 106         struct vsp1_du_writeback_config writeback;
 107 };
 108 
 109 void vsp1_du_atomic_begin(struct device *dev, unsigned int pipe_index);
 110 int vsp1_du_atomic_update(struct device *dev, unsigned int pipe_index,
 111                           unsigned int rpf,
 112                           const struct vsp1_du_atomic_config *cfg);
 113 void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index,
 114                           const struct vsp1_du_atomic_pipe_config *cfg);
 115 int vsp1_du_map_sg(struct device *dev, struct sg_table *sgt);
 116 void vsp1_du_unmap_sg(struct device *dev, struct sg_table *sgt);
 117 
 118 #endif /* __MEDIA_VSP1_H__ */

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