include: uapi: Add header definitions for BCM2835 Unicam and ISP blocks
This commit adds the headers and definitions required for the bcm2835_isp and bcm2835_unicam kernel modules. The headers come from patches recently posted to the linux-media@vger.kernel.org mailing list to add the Unicam and ISP peripherals drivers to the kernel. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
032e0ef6da
commit
43d81d43fe
4 changed files with 461 additions and 0 deletions
320
include/linux/bcm2835-isp.h
Normal file
320
include/linux/bcm2835-isp.h
Normal file
|
@ -0,0 +1,320 @@
|
||||||
|
/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||||
|
/*
|
||||||
|
* bcm2835-isp.h
|
||||||
|
*
|
||||||
|
* BCM2835 ISP driver - user space header file.
|
||||||
|
*
|
||||||
|
* Copyright © 2019-2020 Raspberry Pi (Trading) Ltd.
|
||||||
|
*
|
||||||
|
* Author: Naushir Patuck (naush@raspberrypi.com)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __BCM2835_ISP_H_
|
||||||
|
#define __BCM2835_ISP_H_
|
||||||
|
|
||||||
|
#include <linux/v4l2-controls.h>
|
||||||
|
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_CC_MATRIX \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0001)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_LENS_SHADING \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0002)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0003)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_GEQ \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0004)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_GAMMA \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0005)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_DENOISE \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0006)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_SHARPEN \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0007)
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_DPC \
|
||||||
|
(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0008)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All structs below are directly mapped onto the equivalent structs in
|
||||||
|
* drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
|
||||||
|
* for convenience.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_rational - Rational value type.
|
||||||
|
*
|
||||||
|
* @num: Numerator.
|
||||||
|
* @den: Denominator.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_rational {
|
||||||
|
__s32 num;
|
||||||
|
__s32 den;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_ccm - Colour correction matrix.
|
||||||
|
*
|
||||||
|
* @ccm: 3x3 correction matrix coefficients.
|
||||||
|
* @offsets: 1x3 correction offsets.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_ccm {
|
||||||
|
struct bcm2835_isp_rational ccm[3][3];
|
||||||
|
__s32 offsets[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_custom_ccm - Custom CCM applied with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_CC_MATRIX ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable custom CCM.
|
||||||
|
* @ccm: Custom CCM coefficients and offsets.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_custom_ccm {
|
||||||
|
__u32 enabled;
|
||||||
|
struct bcm2835_isp_ccm ccm;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum bcm2835_isp_gain_format - format of the gains in the lens shading
|
||||||
|
* tables used with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_LENS_SHADING ctrl.
|
||||||
|
*
|
||||||
|
* @GAIN_FORMAT_U0P8_1: Gains are u0.8 format, starting at 1.0
|
||||||
|
* @GAIN_FORMAT_U1P7_0: Gains are u1.7 format, starting at 0.0
|
||||||
|
* @GAIN_FORMAT_U1P7_1: Gains are u1.7 format, starting at 1.0
|
||||||
|
* @GAIN_FORMAT_U2P6_0: Gains are u2.6 format, starting at 0.0
|
||||||
|
* @GAIN_FORMAT_U2P6_1: Gains are u2.6 format, starting at 1.0
|
||||||
|
* @GAIN_FORMAT_U3P5_0: Gains are u3.5 format, starting at 0.0
|
||||||
|
* @GAIN_FORMAT_U3P5_1: Gains are u3.5 format, starting at 1.0
|
||||||
|
* @GAIN_FORMAT_U4P10: Gains are u4.10 format, starting at 0.0
|
||||||
|
*/
|
||||||
|
enum bcm2835_isp_gain_format {
|
||||||
|
GAIN_FORMAT_U0P8_1 = 0,
|
||||||
|
GAIN_FORMAT_U1P7_0 = 1,
|
||||||
|
GAIN_FORMAT_U1P7_1 = 2,
|
||||||
|
GAIN_FORMAT_U2P6_0 = 3,
|
||||||
|
GAIN_FORMAT_U2P6_1 = 4,
|
||||||
|
GAIN_FORMAT_U3P5_0 = 5,
|
||||||
|
GAIN_FORMAT_U3P5_1 = 6,
|
||||||
|
GAIN_FORMAT_U4P10 = 7,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_lens_shading - Lens shading tables supplied with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_LENS_SHADING
|
||||||
|
* ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable lens shading.
|
||||||
|
* @grid_cell_size: Size of grid cells in samples (16, 32, 64, 128 or 256).
|
||||||
|
* @grid_width: Width of lens shading tables in grid cells.
|
||||||
|
* @grid_stride: Row to row distance (in grid cells) between grid cells
|
||||||
|
* in the same horizontal location.
|
||||||
|
* @grid_height: Height of lens shading tables in grid cells.
|
||||||
|
* @mem_handle_table: Memory handle to the tables.
|
||||||
|
* @ref_transform: Reference transform - unsupported, please pass zero.
|
||||||
|
* @corner_sampled: Whether the gains are sampled at the corner points
|
||||||
|
* of the grid cells or in the cell centres.
|
||||||
|
* @gain_format: Format of the gains (see enum &bcm2835_isp_gain_format).
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_lens_shading {
|
||||||
|
__u32 enabled;
|
||||||
|
__u32 grid_cell_size;
|
||||||
|
__u32 grid_width;
|
||||||
|
__u32 grid_stride;
|
||||||
|
__u32 grid_height;
|
||||||
|
__u32 mem_handle_table;
|
||||||
|
__u32 ref_transform;
|
||||||
|
__u32 corner_sampled;
|
||||||
|
__u32 gain_format;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_black_level - Sensor black level set with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable black level.
|
||||||
|
* @black_level_r: Black level for red channel.
|
||||||
|
* @black_level_g: Black level for green channels.
|
||||||
|
* @black_level_b: Black level for blue channel.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_black_level {
|
||||||
|
__u32 enabled;
|
||||||
|
__u16 black_level_r;
|
||||||
|
__u16 black_level_g;
|
||||||
|
__u16 black_level_b;
|
||||||
|
__u8 pad_[2]; /* Unused */
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_geq - Green equalisation parameters set with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_GEQ ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable green equalisation.
|
||||||
|
* @offset: Fixed offset of the green equalisation threshold.
|
||||||
|
* @slope: Slope of the green equalisation threshold.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_geq {
|
||||||
|
__u32 enabled;
|
||||||
|
__u32 offset;
|
||||||
|
struct bcm2835_isp_rational slope;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define BCM2835_NUM_GAMMA_PTS 33
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_gamma - Gamma parameters set with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_GAMMA ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable gamma adjustment.
|
||||||
|
* @X: X values of the points defining the gamma curve.
|
||||||
|
* Values should be scaled to 16 bits.
|
||||||
|
* @Y: Y values of the points defining the gamma curve.
|
||||||
|
* Values should be scaled to 16 bits.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_gamma {
|
||||||
|
__u32 enabled;
|
||||||
|
__u16 x[BCM2835_NUM_GAMMA_PTS];
|
||||||
|
__u16 y[BCM2835_NUM_GAMMA_PTS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_denoise - Denoise parameters set with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_DENOISE ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable denoise.
|
||||||
|
* @constant: Fixed offset of the noise threshold.
|
||||||
|
* @slope: Slope of the noise threshold.
|
||||||
|
* @strength: Denoise strength between 0.0 (off) and 1.0 (maximum).
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_denoise {
|
||||||
|
__u32 enabled;
|
||||||
|
__u32 constant;
|
||||||
|
struct bcm2835_isp_rational slope;
|
||||||
|
struct bcm2835_isp_rational strength;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_sharpen - Sharpen parameters set with the
|
||||||
|
* V4L2_CID_USER_BCM2835_ISP_SHARPEN ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable sharpening.
|
||||||
|
* @threshold: Threshold at which to start sharpening pixels.
|
||||||
|
* @strength: Strength with which pixel sharpening increases.
|
||||||
|
* @limit: Limit to the amount of sharpening applied.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_sharpen {
|
||||||
|
__u32 enabled;
|
||||||
|
struct bcm2835_isp_rational threshold;
|
||||||
|
struct bcm2835_isp_rational strength;
|
||||||
|
struct bcm2835_isp_rational limit;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum bcm2835_isp_dpc_mode - defective pixel correction (DPC) strength.
|
||||||
|
*
|
||||||
|
* @DPC_MODE_OFF: No DPC.
|
||||||
|
* @DPC_MODE_NORMAL: Normal DPC.
|
||||||
|
* @DPC_MODE_STRONG: Strong DPC.
|
||||||
|
*/
|
||||||
|
enum bcm2835_isp_dpc_mode {
|
||||||
|
DPC_MODE_OFF = 0,
|
||||||
|
DPC_MODE_NORMAL = 1,
|
||||||
|
DPC_MODE_STRONG = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_dpc - Defective pixel correction (DPC) parameters set
|
||||||
|
* with the V4L2_CID_USER_BCM2835_ISP_DPC ctrl.
|
||||||
|
*
|
||||||
|
* @enabled: Enable DPC.
|
||||||
|
* @strength: DPC strength (see enum &bcm2835_isp_dpc_mode).
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_dpc {
|
||||||
|
__u32 enabled;
|
||||||
|
__u32 strength;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISP statistics structures.
|
||||||
|
*
|
||||||
|
* The bcm2835_isp_stats structure is generated at the output of the
|
||||||
|
* statistics node. Note that this does not directly map onto the statistics
|
||||||
|
* output of the ISP HW. Instead, the MMAL firmware code maps the HW statistics
|
||||||
|
* to the bcm2835_isp_stats structure.
|
||||||
|
*/
|
||||||
|
#define DEFAULT_AWB_REGIONS_X 16
|
||||||
|
#define DEFAULT_AWB_REGIONS_Y 12
|
||||||
|
|
||||||
|
#define NUM_HISTOGRAMS 2
|
||||||
|
#define NUM_HISTOGRAM_BINS 128
|
||||||
|
#define AWB_REGIONS (DEFAULT_AWB_REGIONS_X * DEFAULT_AWB_REGIONS_Y)
|
||||||
|
#define FLOATING_REGIONS 16
|
||||||
|
#define AGC_REGIONS 16
|
||||||
|
#define FOCUS_REGIONS 12
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_stats_hist - Histogram statistics
|
||||||
|
*
|
||||||
|
* @r_hist: Red channel histogram.
|
||||||
|
* @g_hist: Combined green channel histogram.
|
||||||
|
* @b_hist: Blue channel histogram.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_stats_hist {
|
||||||
|
__u32 r_hist[NUM_HISTOGRAM_BINS];
|
||||||
|
__u32 g_hist[NUM_HISTOGRAM_BINS];
|
||||||
|
__u32 b_hist[NUM_HISTOGRAM_BINS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_stats_region - Region sums.
|
||||||
|
*
|
||||||
|
* @counted: The number of 2x2 bayer tiles accumulated.
|
||||||
|
* @notcounted: The number of 2x2 bayer tiles not accumulated.
|
||||||
|
* @r_sum: Total sum of counted pixels in the red channel for a region.
|
||||||
|
* @g_sum: Total sum of counted pixels in the green channel for a region.
|
||||||
|
* @b_sum: Total sum of counted pixels in the blue channel for a region.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_stats_region {
|
||||||
|
__u32 counted;
|
||||||
|
__u32 notcounted;
|
||||||
|
__u64 r_sum;
|
||||||
|
__u64 g_sum;
|
||||||
|
__u64 b_sum;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_stats_focus - Focus statistics.
|
||||||
|
*
|
||||||
|
* @contrast_val: Focus measure - accumulated output of the focus filter.
|
||||||
|
* In the first dimension, index [0] counts pixels below a
|
||||||
|
* preset threshold, and index [1] counts pixels above the
|
||||||
|
* threshold. In the second dimension, index [0] uses the
|
||||||
|
* first predefined filter, and index [1] uses the second
|
||||||
|
* predefined filter.
|
||||||
|
* @contrast_val_num: The number of counted pixels in the above accumulation.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_stats_focus {
|
||||||
|
__u64 contrast_val[2][2];
|
||||||
|
__u32 contrast_val_num[2][2];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct bcm2835_isp_stats - ISP statistics.
|
||||||
|
*
|
||||||
|
* @version: Version of the bcm2835_isp_stats structure.
|
||||||
|
* @size: Size of the bcm2835_isp_stats structure.
|
||||||
|
* @hist: Histogram statistics for the entire image.
|
||||||
|
* @awb_stats: Statistics for the regions defined for AWB calculations.
|
||||||
|
* @floating_stats: Statistics for arbitrarily placed (floating) regions.
|
||||||
|
* @agc_stats: Statistics for the regions defined for AGC calculations.
|
||||||
|
* @focus_stats: Focus filter statistics for the focus regions.
|
||||||
|
*/
|
||||||
|
struct bcm2835_isp_stats {
|
||||||
|
__u32 version;
|
||||||
|
__u32 size;
|
||||||
|
struct bcm2835_isp_stats_hist hist[NUM_HISTOGRAMS];
|
||||||
|
struct bcm2835_isp_stats_region awb_stats[AWB_REGIONS];
|
||||||
|
struct bcm2835_isp_stats_region floating_stats[FLOATING_REGIONS];
|
||||||
|
struct bcm2835_isp_stats_region agc_stats[AGC_REGIONS];
|
||||||
|
struct bcm2835_isp_stats_focus focus_stats[FOCUS_REGIONS];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __BCM2835_ISP_H_ */
|
|
@ -192,6 +192,10 @@ enum v4l2_colorfx {
|
||||||
* We reserve 16 controls for this driver. */
|
* We reserve 16 controls for this driver. */
|
||||||
#define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0)
|
#define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0)
|
||||||
|
|
||||||
|
/* The base for the bcm2835-isp driver controls.
|
||||||
|
* We reserve 16 controls for this driver. */
|
||||||
|
#define V4L2_CID_USER_BCM2835_ISP_BASE (V4L2_CID_USER_BASE + 0x10c0)
|
||||||
|
|
||||||
/* MPEG-class control IDs */
|
/* MPEG-class control IDs */
|
||||||
/* The MPEG controls are applicable to all codec controls
|
/* The MPEG controls are applicable to all codec controls
|
||||||
* and the 'MPEG' part of the define is historical */
|
* and the 'MPEG' part of the define is historical */
|
||||||
|
|
135
include/linux/vc_sm_cma_ioctl.h
Normal file
135
include/linux/vc_sm_cma_ioctl.h
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2012, Broadcom Europe Ltd
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the copyright holder nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2019 Raspberry Pi (Trading) Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Based on vmcs_sm_ioctl.h Copyright Broadcom Corporation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __VC_SM_CMA_IOCTL_H
|
||||||
|
#define __VC_SM_CMA_IOCTL_H
|
||||||
|
|
||||||
|
/* ---- Include Files ---------------------------------------------------- */
|
||||||
|
|
||||||
|
#include <linux/types.h> /* Needed for standard types */
|
||||||
|
|
||||||
|
#include <linux/ioctl.h>
|
||||||
|
|
||||||
|
/* ---- Constants and Types ---------------------------------------------- */
|
||||||
|
|
||||||
|
#define VC_SM_CMA_RESOURCE_NAME 32
|
||||||
|
#define VC_SM_CMA_RESOURCE_NAME_DEFAULT "sm-host-resource"
|
||||||
|
|
||||||
|
/* Type define used to create unique IOCTL number */
|
||||||
|
#define VC_SM_CMA_MAGIC_TYPE 'J'
|
||||||
|
|
||||||
|
/* IOCTL commands on /dev/vc-sm-cma */
|
||||||
|
enum vc_sm_cma_cmd_e {
|
||||||
|
VC_SM_CMA_CMD_ALLOC = 0x5A, /* Start at 0x5A arbitrarily */
|
||||||
|
|
||||||
|
VC_SM_CMA_CMD_IMPORT_DMABUF,
|
||||||
|
|
||||||
|
VC_SM_CMA_CMD_CLEAN_INVALID2,
|
||||||
|
|
||||||
|
VC_SM_CMA_CMD_LAST /* Do not delete */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Cache type supported, conveniently matches the user space definition in
|
||||||
|
* user-vcsm.h.
|
||||||
|
*/
|
||||||
|
enum vc_sm_cma_cache_e {
|
||||||
|
VC_SM_CMA_CACHE_NONE,
|
||||||
|
VC_SM_CMA_CACHE_HOST,
|
||||||
|
VC_SM_CMA_CACHE_VC,
|
||||||
|
VC_SM_CMA_CACHE_BOTH,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* IOCTL Data structures */
|
||||||
|
struct vc_sm_cma_ioctl_alloc {
|
||||||
|
/* user -> kernel */
|
||||||
|
__u32 size;
|
||||||
|
__u32 num;
|
||||||
|
__u32 cached; /* enum vc_sm_cma_cache_e */
|
||||||
|
__u32 pad;
|
||||||
|
__u8 name[VC_SM_CMA_RESOURCE_NAME];
|
||||||
|
|
||||||
|
/* kernel -> user */
|
||||||
|
__s32 handle;
|
||||||
|
__u32 vc_handle;
|
||||||
|
__u64 dma_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct vc_sm_cma_ioctl_import_dmabuf {
|
||||||
|
/* user -> kernel */
|
||||||
|
__s32 dmabuf_fd;
|
||||||
|
__u32 cached; /* enum vc_sm_cma_cache_e */
|
||||||
|
__u8 name[VC_SM_CMA_RESOURCE_NAME];
|
||||||
|
|
||||||
|
/* kernel -> user */
|
||||||
|
__s32 handle;
|
||||||
|
__u32 vc_handle;
|
||||||
|
__u32 size;
|
||||||
|
__u32 pad;
|
||||||
|
__u64 dma_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cache functions to be set to struct vc_sm_cma_ioctl_clean_invalid2
|
||||||
|
* invalidate_mode.
|
||||||
|
*/
|
||||||
|
#define VC_SM_CACHE_OP_NOP 0x00
|
||||||
|
#define VC_SM_CACHE_OP_INV 0x01
|
||||||
|
#define VC_SM_CACHE_OP_CLEAN 0x02
|
||||||
|
#define VC_SM_CACHE_OP_FLUSH 0x03
|
||||||
|
|
||||||
|
struct vc_sm_cma_ioctl_clean_invalid2 {
|
||||||
|
__u32 op_count;
|
||||||
|
__u32 pad;
|
||||||
|
struct vc_sm_cma_ioctl_clean_invalid_block {
|
||||||
|
__u32 invalidate_mode;
|
||||||
|
__u32 block_count;
|
||||||
|
void * /*__user */start_address;
|
||||||
|
__u32 block_size;
|
||||||
|
__u32 inter_block_stride;
|
||||||
|
} s[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* IOCTL numbers */
|
||||||
|
#define VC_SM_CMA_IOCTL_MEM_ALLOC\
|
||||||
|
_IOR(VC_SM_CMA_MAGIC_TYPE, VC_SM_CMA_CMD_ALLOC,\
|
||||||
|
struct vc_sm_cma_ioctl_alloc)
|
||||||
|
|
||||||
|
#define VC_SM_CMA_IOCTL_MEM_IMPORT_DMABUF\
|
||||||
|
_IOR(VC_SM_CMA_MAGIC_TYPE, VC_SM_CMA_CMD_IMPORT_DMABUF,\
|
||||||
|
struct vc_sm_cma_ioctl_import_dmabuf)
|
||||||
|
|
||||||
|
#define VC_SM_CMA_IOCTL_MEM_CLEAN_INVALID2\
|
||||||
|
_IOR(VC_SM_CMA_MAGIC_TYPE, VC_SM_CMA_CMD_CLEAN_INVALID2,\
|
||||||
|
struct vc_sm_cma_ioctl_clean_invalid2)
|
||||||
|
|
||||||
|
#endif /* __VC_SM_CMA_IOCTL_H */
|
|
@ -751,6 +751,8 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */
|
#define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */
|
||||||
#define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */
|
#define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */
|
||||||
#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */
|
#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */
|
||||||
|
#define V4L2_META_FMT_SENSOR_DATA v4l2_fourcc('S', 'E', 'N', 'S') /* Sensor Ancillary metadata */
|
||||||
|
#define V4L2_META_FMT_BCM2835_ISP_STATS v4l2_fourcc('B', 'S', 'T', 'A') /* BCM2835 ISP image statistics output */
|
||||||
|
|
||||||
/* Vendor specific - used for RK_ISP1 camera sub-system */
|
/* Vendor specific - used for RK_ISP1 camera sub-system */
|
||||||
#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 params */
|
#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 params */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue