mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-30 11:17:42 +08:00
Merge tag 'media/v6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
- v4l2 core:
- sub-device framework routing improvements
- NV12M tiled variants added to v4l2_format_info
- some fixes at control handler freeing logic
- fixed H264 SEPARATE_COLOUR_PLANE check
- new staging driver: Intel IPU7 PCI
- Rockchip video decoder driver got promoted from staging
- iris: added HEVC/VP9 encoder/decoder support
- vsp1: driver has gained Renesas VSPX support
- uvc:
- switched to vb2 ioctl helpers
- added MSXU 1.5 metadata support
- atomisp: GC0310 sensor driver cleanups in preparation for moving it
out of staging
- Lots of cleanup, fixes and improvements
* tag 'media/v6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (310 commits)
media: rkvdec: Unstage the driver
media: rkvdec: Remove TODO file
media: dt-bindings: rockchip: Add RK3576 Video Decoder bindings
media: dt-bindings: rockchip: Document RK3588 Video Decoder bindings
media: amphion: Support dmabuf and v4l2 buffer without binding
media: verisilicon: postproc: 4K support
media: v4l2: Add support for NV12M tiled variants to v4l2_format_info()
media: uvcvideo: Use a count variable for meta_formats instead of 0 terminating
media: uvcvideo: Auto-set UVC_QUIRK_MSXU_META
media: uvcvideo: Introduce V4L2_META_FMT_UVC_MSXU_1_5
media: uvcvideo: Introduce dev->meta_formats
media: Documentation: Add note about UVCH length field
media: uvcvideo: Do not mark valid metadata as invalid
media: uvcvideo: uvc_v4l2_unlocked_ioctl: Invert PM logic
media: core: export v4l2_translate_cmd
media: uvcvideo: Turn on the camera if V4L2_EVENT_SUB_FL_SEND_INITIAL
media: uvcvideo: Remove stream->is_streaming field
media: uvcvideo: Split uvc_stop_streaming()
media: uvcvideo: Handle locks in uvc_queue_return_buffers
media: uvcvideo: Use vb2 ioctl and fop helpers
...
This commit is contained in:
@@ -21,10 +21,11 @@
|
||||
/* preferred byte alignment for outputs */
|
||||
#define PISP_BACK_END_OUTPUT_MAX_ALIGN 64u
|
||||
|
||||
/* minimum allowed tile width anywhere in the pipeline */
|
||||
#define PISP_BACK_END_MIN_TILE_WIDTH 16u
|
||||
/* minimum allowed tile width anywhere in the pipeline */
|
||||
#define PISP_BACK_END_MIN_TILE_HEIGHT 16u
|
||||
/* minimum allowed tile sizes anywhere in the pipeline */
|
||||
#define PISP_BACK_END_MIN_TILE_WIDTH 16u
|
||||
#define PISP_BACK_END_MIN_TILE_HEIGHT 16u
|
||||
#define PISP_BACK_END_MAX_TILE_WIDTH 65536u
|
||||
#define PISP_BACK_END_MAX_TILE_HEIGHT 65536u
|
||||
|
||||
#define PISP_BACK_END_NUM_OUTPUTS 2
|
||||
#define PISP_BACK_END_HOG_OUTPUT 1
|
||||
|
||||
@@ -169,6 +169,13 @@
|
||||
*/
|
||||
#define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64
|
||||
|
||||
/*
|
||||
* Wide Dynamic Range
|
||||
*/
|
||||
#define RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV 32
|
||||
#define RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF (RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV + 1)
|
||||
#define RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS 4
|
||||
|
||||
/*
|
||||
* Measurement types
|
||||
*/
|
||||
@@ -889,6 +896,72 @@ struct rkisp1_cif_isp_compand_curve_config {
|
||||
__u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct rkisp1_cif_isp_wdr_tone_curve - Tone mapping curve definition for WDR.
|
||||
*
|
||||
* @dY: the dYn increments for horizontal (input) axis of the tone curve.
|
||||
* each 3-bit dY value represents an increment of 2**(value+3).
|
||||
* dY[0] bits 0:2 is increment dY1, bit 3 unused
|
||||
* dY[0] bits 4:6 is increment dY2, bit 7 unused
|
||||
* ...
|
||||
* dY[0] bits 28:30 is increment dY8, bit 31 unused
|
||||
* ... and so on till dY[3] bits 28:30 is increment dY32, bit 31 unused.
|
||||
* @ym: the Ym values for the vertical (output) axis of the tone curve.
|
||||
* each value is 13 bit.
|
||||
*/
|
||||
struct rkisp1_cif_isp_wdr_tone_curve {
|
||||
__u32 dY[RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS];
|
||||
__u16 ym[RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct rkisp1_cif_isp_wdr_iref_config - Illumination reference config for WDR.
|
||||
*
|
||||
* Use illumination reference value as described below, instead of only the
|
||||
* luminance (Y) value for tone mapping and gain calculations:
|
||||
* IRef = (rgb_factor * RGBMax_tr + (8 - rgb_factor) * Y)/8
|
||||
*
|
||||
* @rgb_factor: defines how much influence the RGBmax approach has in
|
||||
* comparison to Y (valid values are 0..8).
|
||||
* @use_y9_8: use Y*9/8 for maximum value calculation along with the
|
||||
* default of R, G, B for noise reduction.
|
||||
* @use_rgb7_8: decrease RGBMax by 7/8 for noise reduction.
|
||||
* @disable_transient: disable transient calculation between Y and RGBY_max.
|
||||
*/
|
||||
struct rkisp1_cif_isp_wdr_iref_config {
|
||||
__u8 rgb_factor;
|
||||
__u8 use_y9_8;
|
||||
__u8 use_rgb7_8;
|
||||
__u8 disable_transient;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct rkisp1_cif_isp_wdr_config - Configuration for wide dynamic range.
|
||||
*
|
||||
* @tone_curve: tone mapping curve.
|
||||
* @iref_config: illumination reference configuration. (when use_iref is true)
|
||||
* @rgb_offset: RGB offset value for RGB operation mode. (12 bits)
|
||||
* @luma_offset: luminance offset value for RGB operation mode. (12 bits)
|
||||
* @dmin_thresh: lower threshold for deltaMin value. (12 bits)
|
||||
* @dmin_strength: strength factor for deltaMin. (valid range is 0x00..0x10)
|
||||
* @use_rgb_colorspace: use RGB instead of luminance/chrominance colorspace.
|
||||
* @bypass_chroma_mapping: disable chrominance mapping (only valid if
|
||||
* use_rgb_colorspace = 0)
|
||||
* @use_iref: use illumination reference instead of Y for tone mapping
|
||||
* and gain calculations.
|
||||
*/
|
||||
struct rkisp1_cif_isp_wdr_config {
|
||||
struct rkisp1_cif_isp_wdr_tone_curve tone_curve;
|
||||
struct rkisp1_cif_isp_wdr_iref_config iref_config;
|
||||
__u16 rgb_offset;
|
||||
__u16 luma_offset;
|
||||
__u16 dmin_thresh;
|
||||
__u8 dmin_strength;
|
||||
__u8 use_rgb_colorspace;
|
||||
__u8 bypass_chroma_mapping;
|
||||
__u8 use_iref;
|
||||
};
|
||||
|
||||
/*---------- PART2: Measurement Statistics ------------*/
|
||||
|
||||
/**
|
||||
@@ -1059,6 +1132,7 @@ struct rkisp1_stat_buffer {
|
||||
* @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS: BLS in the compand block
|
||||
* @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND: Companding expand curve
|
||||
* @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS: Companding compress curve
|
||||
* @RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR: Wide dynamic range
|
||||
*/
|
||||
enum rkisp1_ext_params_block_type {
|
||||
RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS,
|
||||
@@ -1081,11 +1155,15 @@ enum rkisp1_ext_params_block_type {
|
||||
RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS,
|
||||
RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND,
|
||||
RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS,
|
||||
RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR,
|
||||
};
|
||||
|
||||
#define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0)
|
||||
#define RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE (1U << 1)
|
||||
|
||||
/* A bitmask of parameters blocks supported on the current hardware. */
|
||||
#define RKISP1_CID_SUPPORTED_PARAMS_BLOCKS (V4L2_CID_USER_RKISP1_BASE + 0x01)
|
||||
|
||||
/**
|
||||
* struct rkisp1_ext_params_block_header - RkISP1 extensible parameters block
|
||||
* header
|
||||
@@ -1460,6 +1538,23 @@ struct rkisp1_ext_params_compand_curve_config {
|
||||
struct rkisp1_cif_isp_compand_curve_config config;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/**
|
||||
* struct rkisp1_ext_params_wdr_config - RkISP1 extensible params
|
||||
* Wide dynamic range config
|
||||
*
|
||||
* RkISP1 extensible parameters WDR block.
|
||||
* Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR`
|
||||
*
|
||||
* @header: The RkISP1 extensible parameters header, see
|
||||
* :c:type:`rkisp1_ext_params_block_header`
|
||||
* @config: WDR configuration, see
|
||||
* :c:type:`rkisp1_cif_isp_wdr_config`
|
||||
*/
|
||||
struct rkisp1_ext_params_wdr_config {
|
||||
struct rkisp1_ext_params_block_header header;
|
||||
struct rkisp1_cif_isp_wdr_config config;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/*
|
||||
* The rkisp1_ext_params_compand_curve_config structure is counted twice as it
|
||||
* is used for both the COMPAND_EXPAND and COMPAND_COMPRESS block types.
|
||||
@@ -1484,7 +1579,8 @@ struct rkisp1_ext_params_compand_curve_config {
|
||||
sizeof(struct rkisp1_ext_params_afc_config) +\
|
||||
sizeof(struct rkisp1_ext_params_compand_bls_config) +\
|
||||
sizeof(struct rkisp1_ext_params_compand_curve_config) +\
|
||||
sizeof(struct rkisp1_ext_params_compand_curve_config))
|
||||
sizeof(struct rkisp1_ext_params_compand_curve_config) +\
|
||||
sizeof(struct rkisp1_ext_params_wdr_config))
|
||||
|
||||
/**
|
||||
* enum rksip1_ext_param_buffer_version - RkISP1 extensible parameters version
|
||||
@@ -1520,6 +1616,14 @@ enum rksip1_ext_param_buffer_version {
|
||||
* V4L2 control. If such control is not available, userspace should assume only
|
||||
* RKISP1_EXT_PARAM_BUFFER_V1 is supported by the driver.
|
||||
*
|
||||
* The read-only V4L2 control ``RKISP1_CID_SUPPORTED_PARAMS_BLOCKS`` can be used
|
||||
* to query the blocks supported by the device. It contains a bitmask where each
|
||||
* bit represents the availability of the corresponding entry from the
|
||||
* :c:type:`rkisp1_ext_params_block_type` enum. The current and default values
|
||||
* of the control represents the blocks supported by the device instance, while
|
||||
* the maximum value represents the blocks supported by the kernel driver,
|
||||
* independently of the device instance.
|
||||
*
|
||||
* For each ISP block that userspace wants to configure, a block-specific
|
||||
* structure is appended to the @data buffer, one after the other without gaps
|
||||
* in between nor overlaps. Userspace shall populate the @data_size field with
|
||||
|
||||
@@ -222,6 +222,12 @@ enum v4l2_colorfx {
|
||||
*/
|
||||
#define V4L2_CID_USER_UVC_BASE (V4L2_CID_USER_BASE + 0x11e0)
|
||||
|
||||
/*
|
||||
* The base for Rockchip ISP1 driver controls.
|
||||
* We reserve 16 controls for this driver.
|
||||
*/
|
||||
#define V4L2_CID_USER_RKISP1_BASE (V4L2_CID_USER_BASE + 0x1220)
|
||||
|
||||
/* MPEG-class control IDs */
|
||||
/* The MPEG controls are applicable to all codec controls
|
||||
* and the 'MPEG' part of the define is historical */
|
||||
|
||||
@@ -726,7 +726,7 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */
|
||||
#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */
|
||||
#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */
|
||||
/* 12bit raw bayer packed, 6 bytes for every 4 pixels */
|
||||
/* 12bit raw bayer packed, 3 bytes for every 2 pixels */
|
||||
#define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
|
||||
#define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
|
||||
#define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
|
||||
@@ -840,6 +840,12 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_PISP_COMP2_BGGR v4l2_fourcc('P', 'C', '2', 'B') /* PiSP 8-bit mode 2 compressed BGGR bayer */
|
||||
#define V4L2_PIX_FMT_PISP_COMP2_MONO v4l2_fourcc('P', 'C', '2', 'M') /* PiSP 8-bit mode 2 compressed monochrome */
|
||||
|
||||
/* Renesas RZ/V2H CRU packed formats. 64-bit units with contiguous pixels */
|
||||
#define V4L2_PIX_FMT_RAW_CRU10 v4l2_fourcc('C', 'R', '1', '0')
|
||||
#define V4L2_PIX_FMT_RAW_CRU12 v4l2_fourcc('C', 'R', '1', '2')
|
||||
#define V4L2_PIX_FMT_RAW_CRU14 v4l2_fourcc('C', 'R', '1', '4')
|
||||
#define V4L2_PIX_FMT_RAW_CRU20 v4l2_fourcc('C', 'R', '2', '0')
|
||||
|
||||
/* SDR formats - used only for Software Defined Radio devices */
|
||||
#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
|
||||
#define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */
|
||||
@@ -861,6 +867,7 @@ 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_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_UVC_MSXU_1_5 v4l2_fourcc('U', 'V', 'C', 'M') /* UVC MSXU metadata */
|
||||
#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */
|
||||
|
||||
/* Vendor specific - used for RK_ISP1 camera sub-system */
|
||||
|
||||
Reference in New Issue
Block a user