Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - Some cleanups at V4L2 documentation - new drivers: ts2020 frontend, ov9650 sensor, s5c73m3 sensor, sh-mobile veu mem2mem driver, radio-ma901, davinci_vpfe staging driver - Lots of missing MAINTAINERS entries added - several em28xx driver improvements, including its conversion to videobuf2 - several fixups on drivers to make them to better comply with the API - DVB core: add support for DVBv5 stats, allowing the implementation of statistics for new standards like ISDB - mb86a20s: add statistics to the driver - lots of new board additions, cleanups, and driver improvements. * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (596 commits) [media] media: Add 0x3009 USB PID to ttusb2 driver (fixed diff) [media] rtl28xxu: Add USB IDs for Compro VideoMate U620F [media] em28xx: add usb id for terratec h5 rev. 3 [media] media: rc: gpio-ir-recv: add support for device tree parsing [media] mceusb: move check earlier to make smatch happy [media] radio-si470x doc: add info about v4l2-ctl and sox+alsa [media] staging: media: Remove unnecessary OOM messages [media] sh_vou: Use vou_dev instead of vou_file wherever possible [media] sh_vou: Use video_drvdata() [media] drivers/media/platform/soc_camera/pxa_camera.c: use devm_ functions [media] mt9t112: mt9t111 format set up differs from mt9t112 [media] sh-mobile-ceu-camera: fix SHARPNESS control default Revert "[media] fc0011: Return early, if the frequency is already tuned" [media] cx18/ivtv: fix regression: remove __init from a non-init function [media] em28xx: fix analog streaming with USB bulk transfers [media] stv0900: remove unnecessary null pointer check [media] fc0011: Return early, if the frequency is already tuned [media] fc0011: Add some sanity checks and cleanups [media] fc0011: Fix xin value clamping Revert "[media] [PATH,1/2] mxl5007 move reset to attach" ...
This commit is contained in:
@@ -365,7 +365,17 @@ struct dvb_frontend_event {
|
||||
#define DTV_INTERLEAVING 60
|
||||
#define DTV_LNA 61
|
||||
|
||||
#define DTV_MAX_COMMAND DTV_LNA
|
||||
/* Quality parameters */
|
||||
#define DTV_STAT_SIGNAL_STRENGTH 62
|
||||
#define DTV_STAT_CNR 63
|
||||
#define DTV_STAT_PRE_ERROR_BIT_COUNT 64
|
||||
#define DTV_STAT_PRE_TOTAL_BIT_COUNT 65
|
||||
#define DTV_STAT_POST_ERROR_BIT_COUNT 66
|
||||
#define DTV_STAT_POST_TOTAL_BIT_COUNT 67
|
||||
#define DTV_STAT_ERROR_BLOCK_COUNT 68
|
||||
#define DTV_STAT_TOTAL_BLOCK_COUNT 69
|
||||
|
||||
#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
|
||||
|
||||
typedef enum fe_pilot {
|
||||
PILOT_ON,
|
||||
@@ -452,11 +462,78 @@ struct dtv_cmds_h {
|
||||
__u32 reserved:30; /* Align */
|
||||
};
|
||||
|
||||
/**
|
||||
* Scale types for the quality parameters.
|
||||
* @FE_SCALE_NOT_AVAILABLE: That QoS measure is not available. That
|
||||
* could indicate a temporary or a permanent
|
||||
* condition.
|
||||
* @FE_SCALE_DECIBEL: The scale is measured in 0.0001 dB steps, typically
|
||||
* used on signal measures.
|
||||
* @FE_SCALE_RELATIVE: The scale is a relative percentual measure,
|
||||
* ranging from 0 (0%) to 0xffff (100%).
|
||||
* @FE_SCALE_COUNTER: The scale counts the occurrence of an event, like
|
||||
* bit error, block error, lapsed time.
|
||||
*/
|
||||
enum fecap_scale_params {
|
||||
FE_SCALE_NOT_AVAILABLE = 0,
|
||||
FE_SCALE_DECIBEL,
|
||||
FE_SCALE_RELATIVE,
|
||||
FE_SCALE_COUNTER
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dtv_stats - Used for reading a DTV status property
|
||||
*
|
||||
* @value: value of the measure. Should range from 0 to 0xffff;
|
||||
* @scale: Filled with enum fecap_scale_params - the scale
|
||||
* in usage for that parameter
|
||||
*
|
||||
* For most delivery systems, this will return a single value for each
|
||||
* parameter.
|
||||
* It should be noticed, however, that new OFDM delivery systems like
|
||||
* ISDB can use different modulation types for each group of carriers.
|
||||
* On such standards, up to 8 groups of statistics can be provided, one
|
||||
* for each carrier group (called "layer" on ISDB).
|
||||
* In order to be consistent with other delivery systems, the first
|
||||
* value refers to the entire set of carriers ("global").
|
||||
* dtv_status:scale should use the value FE_SCALE_NOT_AVAILABLE when
|
||||
* the value for the entire group of carriers or from one specific layer
|
||||
* is not provided by the hardware.
|
||||
* st.len should be filled with the latest filled status + 1.
|
||||
*
|
||||
* In other words, for ISDB, those values should be filled like:
|
||||
* u.st.stat.svalue[0] = global statistics;
|
||||
* u.st.stat.scale[0] = FE_SCALE_DECIBELS;
|
||||
* u.st.stat.value[1] = layer A statistics;
|
||||
* u.st.stat.scale[1] = FE_SCALE_NOT_AVAILABLE (if not available);
|
||||
* u.st.stat.svalue[2] = layer B statistics;
|
||||
* u.st.stat.scale[2] = FE_SCALE_DECIBELS;
|
||||
* u.st.stat.svalue[3] = layer C statistics;
|
||||
* u.st.stat.scale[3] = FE_SCALE_DECIBELS;
|
||||
* u.st.len = 4;
|
||||
*/
|
||||
struct dtv_stats {
|
||||
__u8 scale; /* enum fecap_scale_params type */
|
||||
union {
|
||||
__u64 uvalue; /* for counters and relative scales */
|
||||
__s64 svalue; /* for 0.0001 dB measures */
|
||||
};
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
#define MAX_DTV_STATS 4
|
||||
|
||||
struct dtv_fe_stats {
|
||||
__u8 len;
|
||||
struct dtv_stats stat[MAX_DTV_STATS];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct dtv_property {
|
||||
__u32 cmd;
|
||||
__u32 reserved[3];
|
||||
union {
|
||||
__u32 data;
|
||||
struct dtv_fe_stats st;
|
||||
struct {
|
||||
__u8 data[32];
|
||||
__u32 len;
|
||||
|
@@ -24,6 +24,6 @@
|
||||
#define _DVBVERSION_H_
|
||||
|
||||
#define DVB_API_VERSION 5
|
||||
#define DVB_API_VERSION_MINOR 9
|
||||
#define DVB_API_VERSION_MINOR 10
|
||||
|
||||
#endif /*_DVBVERSION_H_*/
|
||||
|
@@ -57,10 +57,8 @@ struct meye_params {
|
||||
#define MEYEIOC_STILLJCAPT _IOR ('v', BASE_VIDIOC_PRIVATE+5, int)
|
||||
|
||||
/* V4L2 private controls */
|
||||
#define V4L2_CID_AGC V4L2_CID_PRIVATE_BASE
|
||||
#define V4L2_CID_MEYE_SHARPNESS (V4L2_CID_PRIVATE_BASE + 1)
|
||||
#define V4L2_CID_PICTURE (V4L2_CID_PRIVATE_BASE + 2)
|
||||
#define V4L2_CID_JPEGQUAL (V4L2_CID_PRIVATE_BASE + 3)
|
||||
#define V4L2_CID_FRAMERATE (V4L2_CID_PRIVATE_BASE + 4)
|
||||
#define V4L2_CID_MEYE_AGC (V4L2_CID_USER_MEYE_BASE + 0)
|
||||
#define V4L2_CID_MEYE_PICTURE (V4L2_CID_USER_MEYE_BASE + 1)
|
||||
#define V4L2_CID_MEYE_FRAMERATE (V4L2_CID_USER_MEYE_BASE + 2)
|
||||
|
||||
#endif
|
||||
|
@@ -88,10 +88,6 @@
|
||||
#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
|
||||
#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
|
||||
|
||||
/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */
|
||||
#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
|
||||
#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
|
||||
|
||||
#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
|
||||
enum v4l2_power_line_frequency {
|
||||
V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
|
||||
@@ -144,6 +140,11 @@ enum v4l2_colorfx {
|
||||
/* last CID + 1 */
|
||||
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43)
|
||||
|
||||
/* USER-class private control IDs */
|
||||
|
||||
/* The base for the meye driver controls. See linux/meye.h for the list
|
||||
* of controls. We reserve 16 controls for this driver. */
|
||||
#define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
|
||||
|
||||
/* MPEG-class control IDs */
|
||||
|
||||
@@ -782,6 +783,7 @@ enum v4l2_jpeg_chroma_subsampling {
|
||||
#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
|
||||
#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
|
||||
|
||||
|
||||
/* Image source controls */
|
||||
#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
|
||||
#define V4L2_CID_IMAGE_SOURCE_CLASS (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
|
||||
@@ -800,4 +802,27 @@ enum v4l2_jpeg_chroma_subsampling {
|
||||
#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
|
||||
#define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
|
||||
|
||||
|
||||
/* DV-class control IDs defined by V4L2 */
|
||||
#define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
|
||||
#define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
|
||||
|
||||
#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
|
||||
#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
|
||||
#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
|
||||
#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
|
||||
enum v4l2_dv_tx_mode {
|
||||
V4L2_DV_TX_MODE_DVI_D = 0,
|
||||
V4L2_DV_TX_MODE_HDMI = 1,
|
||||
};
|
||||
#define V4L2_CID_DV_TX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 5)
|
||||
enum v4l2_dv_rgb_range {
|
||||
V4L2_DV_RGB_RANGE_AUTO = 0,
|
||||
V4L2_DV_RGB_RANGE_LIMITED = 1,
|
||||
V4L2_DV_RGB_RANGE_FULL = 2,
|
||||
};
|
||||
|
||||
#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
|
||||
#define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
|
||||
|
||||
#endif
|
||||
|
@@ -47,8 +47,9 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
|
||||
V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
|
||||
|
||||
/* YUV (including grey) - next is 0x2014 */
|
||||
/* YUV (including grey) - next is 0x2017 */
|
||||
V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
|
||||
V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
|
||||
V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
|
||||
V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
|
||||
V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
|
||||
@@ -65,14 +66,20 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
|
||||
V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
|
||||
V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
|
||||
V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
|
||||
V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
|
||||
V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
|
||||
V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
|
||||
|
||||
/* Bayer - next is 0x3015 */
|
||||
/* Bayer - next is 0x3019 */
|
||||
V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001,
|
||||
V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013,
|
||||
V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002,
|
||||
V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014,
|
||||
V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 = 0x3015,
|
||||
V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 = 0x3016,
|
||||
V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 = 0x3017,
|
||||
V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 = 0x3018,
|
||||
V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b,
|
||||
V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c,
|
||||
V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009,
|
||||
|
@@ -334,6 +334,9 @@ struct v4l2_pix_format {
|
||||
/* Palette formats */
|
||||
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
||||
|
||||
/* Chrominance formats */
|
||||
#define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ') /* 8 UV 4:4 */
|
||||
|
||||
/* Luminance+Chrominance formats */
|
||||
#define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */
|
||||
#define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */
|
||||
@@ -386,6 +389,11 @@ 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.. */
|
||||
/* 10bit raw bayer a-law compressed to 8 bits */
|
||||
#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
|
||||
#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
|
||||
#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
|
||||
#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
|
||||
/* 10bit raw bayer DPCM compressed to 8 bits */
|
||||
#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
|
||||
#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
|
||||
@@ -693,6 +701,10 @@ struct v4l2_buffer {
|
||||
/* Cache handling flags */
|
||||
#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800
|
||||
#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000
|
||||
/* Timestamp type */
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0xe000
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x0000
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x2000
|
||||
|
||||
/**
|
||||
* struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
|
||||
@@ -1342,28 +1354,6 @@ struct v4l2_querymenu {
|
||||
#define V4L2_CID_PRIVATE_BASE 0x08000000
|
||||
|
||||
|
||||
/* DV-class control IDs defined by V4L2 */
|
||||
#define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
|
||||
#define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
|
||||
|
||||
#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
|
||||
#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
|
||||
#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
|
||||
#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
|
||||
enum v4l2_dv_tx_mode {
|
||||
V4L2_DV_TX_MODE_DVI_D = 0,
|
||||
V4L2_DV_TX_MODE_HDMI = 1,
|
||||
};
|
||||
#define V4L2_CID_DV_TX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 5)
|
||||
enum v4l2_dv_rgb_range {
|
||||
V4L2_DV_RGB_RANGE_AUTO = 0,
|
||||
V4L2_DV_RGB_RANGE_LIMITED = 1,
|
||||
V4L2_DV_RGB_RANGE_FULL = 2,
|
||||
};
|
||||
|
||||
#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
|
||||
#define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
|
||||
|
||||
/*
|
||||
* T U N I N G
|
||||
*/
|
||||
@@ -1810,6 +1800,7 @@ struct v4l2_event_vsync {
|
||||
/* Payload for V4L2_EVENT_CTRL */
|
||||
#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
|
||||
#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
|
||||
#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
|
||||
|
||||
struct v4l2_event_ctrl {
|
||||
__u32 changes;
|
||||
|
Reference in New Issue
Block a user