mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge branch 'patchwork' into v4l_for_linus
* patchwork: (404 commits) [media] uvcvideo: add support for VIDIOC_QUERY_EXT_CTRL [media] uvcvideo: fix cropcap v4l2-compliance failure [media] media: omap3isp: remove unused clkdev [media] coda: Add tracing support [media] coda: drop dma_sync_single_for_device in coda_bitstream_queue [media] coda: fix fill bitstream errors in nonstreaming case [media] coda: call SEQ_END when the first queue is stopped [media] coda: fail to start streaming if userspace set invalid formats [media] coda: remove duplicate error messages for buffer allocations [media] coda: move parameter buffer in together with context buffer allocation [media] coda: allocate bitstream buffer from REQBUFS, size depends on the format [media] coda: allocate per-context buffers from REQBUFS [media] coda: use strlcpy instead of snprintf [media] coda: bitstream payload is unsigned [media] coda: fix double call to debugfs_remove [media] coda: check kasprintf return value in coda_open [media] coda: bitrate can only be set in kbps steps [media] v4l2-mem2mem: no need to initialize b in v4l2_m2m_next_buf and v4l2_m2m_buf_remove [media] s5p-mfc: set allow_zero_bytesused flag for vb2_queue_init [media] coda: set allow_zero_bytesused flag for vb2_queue_init ...
This commit is contained in:
commit
676ee36be0
464 changed files with 17069 additions and 6386 deletions
|
|
@ -47,16 +47,16 @@ enum adv7604_bus_order {
|
|||
};
|
||||
|
||||
/* Input Color Space (IO register 0x02, [7:4]) */
|
||||
enum adv7604_inp_color_space {
|
||||
ADV7604_INP_COLOR_SPACE_LIM_RGB = 0,
|
||||
ADV7604_INP_COLOR_SPACE_FULL_RGB = 1,
|
||||
ADV7604_INP_COLOR_SPACE_LIM_YCbCr_601 = 2,
|
||||
ADV7604_INP_COLOR_SPACE_LIM_YCbCr_709 = 3,
|
||||
ADV7604_INP_COLOR_SPACE_XVYCC_601 = 4,
|
||||
ADV7604_INP_COLOR_SPACE_XVYCC_709 = 5,
|
||||
ADV7604_INP_COLOR_SPACE_FULL_YCbCr_601 = 6,
|
||||
ADV7604_INP_COLOR_SPACE_FULL_YCbCr_709 = 7,
|
||||
ADV7604_INP_COLOR_SPACE_AUTO = 0xf,
|
||||
enum adv76xx_inp_color_space {
|
||||
ADV76XX_INP_COLOR_SPACE_LIM_RGB = 0,
|
||||
ADV76XX_INP_COLOR_SPACE_FULL_RGB = 1,
|
||||
ADV76XX_INP_COLOR_SPACE_LIM_YCbCr_601 = 2,
|
||||
ADV76XX_INP_COLOR_SPACE_LIM_YCbCr_709 = 3,
|
||||
ADV76XX_INP_COLOR_SPACE_XVYCC_601 = 4,
|
||||
ADV76XX_INP_COLOR_SPACE_XVYCC_709 = 5,
|
||||
ADV76XX_INP_COLOR_SPACE_FULL_YCbCr_601 = 6,
|
||||
ADV76XX_INP_COLOR_SPACE_FULL_YCbCr_709 = 7,
|
||||
ADV76XX_INP_COLOR_SPACE_AUTO = 0xf,
|
||||
};
|
||||
|
||||
/* Select output format (IO register 0x03, [4:2]) */
|
||||
|
|
@ -66,38 +66,39 @@ enum adv7604_op_format_mode_sel {
|
|||
ADV7604_OP_FORMAT_MODE2 = 0x08,
|
||||
};
|
||||
|
||||
enum adv7604_drive_strength {
|
||||
ADV7604_DR_STR_MEDIUM_LOW = 1,
|
||||
ADV7604_DR_STR_MEDIUM_HIGH = 2,
|
||||
ADV7604_DR_STR_HIGH = 3,
|
||||
enum adv76xx_drive_strength {
|
||||
ADV76XX_DR_STR_MEDIUM_LOW = 1,
|
||||
ADV76XX_DR_STR_MEDIUM_HIGH = 2,
|
||||
ADV76XX_DR_STR_HIGH = 3,
|
||||
};
|
||||
|
||||
enum adv7604_int1_config {
|
||||
ADV7604_INT1_CONFIG_OPEN_DRAIN,
|
||||
ADV7604_INT1_CONFIG_ACTIVE_LOW,
|
||||
ADV7604_INT1_CONFIG_ACTIVE_HIGH,
|
||||
ADV7604_INT1_CONFIG_DISABLED,
|
||||
/* INT1 Configuration (IO register 0x40, [1:0]) */
|
||||
enum adv76xx_int1_config {
|
||||
ADV76XX_INT1_CONFIG_OPEN_DRAIN,
|
||||
ADV76XX_INT1_CONFIG_ACTIVE_LOW,
|
||||
ADV76XX_INT1_CONFIG_ACTIVE_HIGH,
|
||||
ADV76XX_INT1_CONFIG_DISABLED,
|
||||
};
|
||||
|
||||
enum adv7604_page {
|
||||
ADV7604_PAGE_IO,
|
||||
enum adv76xx_page {
|
||||
ADV76XX_PAGE_IO,
|
||||
ADV7604_PAGE_AVLINK,
|
||||
ADV7604_PAGE_CEC,
|
||||
ADV7604_PAGE_INFOFRAME,
|
||||
ADV76XX_PAGE_CEC,
|
||||
ADV76XX_PAGE_INFOFRAME,
|
||||
ADV7604_PAGE_ESDP,
|
||||
ADV7604_PAGE_DPP,
|
||||
ADV7604_PAGE_AFE,
|
||||
ADV7604_PAGE_REP,
|
||||
ADV7604_PAGE_EDID,
|
||||
ADV7604_PAGE_HDMI,
|
||||
ADV7604_PAGE_TEST,
|
||||
ADV7604_PAGE_CP,
|
||||
ADV76XX_PAGE_AFE,
|
||||
ADV76XX_PAGE_REP,
|
||||
ADV76XX_PAGE_EDID,
|
||||
ADV76XX_PAGE_HDMI,
|
||||
ADV76XX_PAGE_TEST,
|
||||
ADV76XX_PAGE_CP,
|
||||
ADV7604_PAGE_VDP,
|
||||
ADV7604_PAGE_MAX,
|
||||
ADV76XX_PAGE_MAX,
|
||||
};
|
||||
|
||||
/* Platform dependent definition */
|
||||
struct adv7604_platform_data {
|
||||
struct adv76xx_platform_data {
|
||||
/* DIS_PWRDNB: 1 if the PWRDNB pin is unused and unconnected */
|
||||
unsigned disable_pwrdnb:1;
|
||||
|
||||
|
|
@ -116,7 +117,7 @@ struct adv7604_platform_data {
|
|||
enum adv7604_op_format_mode_sel op_format_mode_sel;
|
||||
|
||||
/* Configuration of the INT1 pin */
|
||||
enum adv7604_int1_config int1_config;
|
||||
enum adv76xx_int1_config int1_config;
|
||||
|
||||
/* IO register 0x02 */
|
||||
unsigned alt_gamma:1;
|
||||
|
|
@ -134,9 +135,9 @@ struct adv7604_platform_data {
|
|||
unsigned inv_llc_pol:1;
|
||||
|
||||
/* IO register 0x14 */
|
||||
enum adv7604_drive_strength dr_str_data;
|
||||
enum adv7604_drive_strength dr_str_clk;
|
||||
enum adv7604_drive_strength dr_str_sync;
|
||||
enum adv76xx_drive_strength dr_str_data;
|
||||
enum adv76xx_drive_strength dr_str_clk;
|
||||
enum adv76xx_drive_strength dr_str_sync;
|
||||
|
||||
/* IO register 0x30 */
|
||||
unsigned output_bus_lsb_to_msb:1;
|
||||
|
|
@ -145,11 +146,11 @@ struct adv7604_platform_data {
|
|||
unsigned hdmi_free_run_mode;
|
||||
|
||||
/* i2c addresses: 0 == use default */
|
||||
u8 i2c_addresses[ADV7604_PAGE_MAX];
|
||||
u8 i2c_addresses[ADV76XX_PAGE_MAX];
|
||||
};
|
||||
|
||||
enum adv7604_pad {
|
||||
ADV7604_PAD_HDMI_PORT_A = 0,
|
||||
enum adv76xx_pad {
|
||||
ADV76XX_PAD_HDMI_PORT_A = 0,
|
||||
ADV7604_PAD_HDMI_PORT_B = 1,
|
||||
ADV7604_PAD_HDMI_PORT_C = 2,
|
||||
ADV7604_PAD_HDMI_PORT_D = 3,
|
||||
|
|
@ -158,7 +159,7 @@ enum adv7604_pad {
|
|||
/* The source pad is either 1 (ADV7611) or 6 (ADV7604) */
|
||||
ADV7604_PAD_SOURCE = 6,
|
||||
ADV7611_PAD_SOURCE = 1,
|
||||
ADV7604_PAD_MAX = 7,
|
||||
ADV76XX_PAD_MAX = 7,
|
||||
};
|
||||
|
||||
#define V4L2_CID_ADV_RX_ANALOG_SAMPLING_PHASE (V4L2_CID_DV_CLASS_BASE + 0x1000)
|
||||
|
|
@ -166,7 +167,7 @@ enum adv7604_pad {
|
|||
#define V4L2_CID_ADV_RX_FREE_RUN_COLOR (V4L2_CID_DV_CLASS_BASE + 0x1002)
|
||||
|
||||
/* notify events */
|
||||
#define ADV7604_HOTPLUG 1
|
||||
#define ADV7604_FMT_CHANGE 2
|
||||
#define ADV76XX_HOTPLUG 1
|
||||
#define ADV76XX_FMT_CHANGE 2
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ struct vpfe_config {
|
|||
struct vpfe_device {
|
||||
/* V4l2 specific parameters */
|
||||
/* Identifies video device for this channel */
|
||||
struct video_device *video_dev;
|
||||
struct video_device video_dev;
|
||||
/* sub devices */
|
||||
struct v4l2_subdev **sd;
|
||||
/* vpfe cfg */
|
||||
|
|
|
|||
|
|
@ -44,6 +44,15 @@ struct media_pad {
|
|||
unsigned long flags; /* Pad flags (MEDIA_PAD_FL_*) */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct media_entity_operations - Media entity operations
|
||||
* @link_setup: Notify the entity of link changes. The operation can
|
||||
* return an error, in which case link setup will be
|
||||
* cancelled. Optional.
|
||||
* @link_validate: Return whether a link is valid from the entity point of
|
||||
* view. The media_entity_pipeline_start() function
|
||||
* validates all links by calling this operation. Optional.
|
||||
*/
|
||||
struct media_entity_operations {
|
||||
int (*link_setup)(struct media_entity *entity,
|
||||
const struct media_pad *local,
|
||||
|
|
@ -87,17 +96,7 @@ struct media_entity {
|
|||
struct {
|
||||
u32 major;
|
||||
u32 minor;
|
||||
} v4l;
|
||||
struct {
|
||||
u32 major;
|
||||
u32 minor;
|
||||
} fb;
|
||||
struct {
|
||||
u32 card;
|
||||
u32 device;
|
||||
u32 subdevice;
|
||||
} alsa;
|
||||
int dvb;
|
||||
} dev;
|
||||
|
||||
/* Sub-device specifications */
|
||||
/* Nothing needed yet */
|
||||
|
|
|
|||
|
|
@ -5,12 +5,10 @@ struct v4l2_subdev;
|
|||
|
||||
/*
|
||||
* struct mt9p031_platform_data - MT9P031 platform data
|
||||
* @reset: Chip reset GPIO (set to -1 if not used)
|
||||
* @ext_freq: Input clock frequency
|
||||
* @target_freq: Pixel clock frequency
|
||||
*/
|
||||
struct mt9p031_platform_data {
|
||||
int reset;
|
||||
int ext_freq;
|
||||
int target_freq;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ enum {
|
|||
};
|
||||
|
||||
/**
|
||||
* struct isp_parallel_platform_data - Parallel interface platform data
|
||||
* struct isp_parallel_cfg - Parallel interface configuration
|
||||
* @data_lane_shift: Data lane shifter
|
||||
* ISP_LANE_SHIFT_0 - CAMEXT[13:0] -> CAM[13:0]
|
||||
* ISP_LANE_SHIFT_2 - CAMEXT[13:2] -> CAM[11:0]
|
||||
|
|
@ -62,7 +62,7 @@ enum {
|
|||
* @data_pol: Data polarity
|
||||
* 0 - Normal, 1 - One's complement
|
||||
*/
|
||||
struct isp_parallel_platform_data {
|
||||
struct isp_parallel_cfg {
|
||||
unsigned int data_lane_shift:2;
|
||||
unsigned int clk_pol:1;
|
||||
unsigned int hs_pol:1;
|
||||
|
|
@ -105,7 +105,7 @@ struct isp_csiphy_lanes_cfg {
|
|||
};
|
||||
|
||||
/**
|
||||
* struct isp_ccp2_platform_data - CCP2 interface platform data
|
||||
* struct isp_ccp2_cfg - CCP2 interface configuration
|
||||
* @strobe_clk_pol: Strobe/clock polarity
|
||||
* 0 - Non Inverted, 1 - Inverted
|
||||
* @crc: Enable the cyclic redundancy check
|
||||
|
|
@ -117,7 +117,7 @@ struct isp_csiphy_lanes_cfg {
|
|||
* ISP_CCP2_PHY_DATA_STROBE - Data/strobe physical layer
|
||||
* @vpclk_div: Video port output clock control
|
||||
*/
|
||||
struct isp_ccp2_platform_data {
|
||||
struct isp_ccp2_cfg {
|
||||
unsigned int strobe_clk_pol:1;
|
||||
unsigned int crc:1;
|
||||
unsigned int ccp2_mode:1;
|
||||
|
|
@ -127,39 +127,31 @@ struct isp_ccp2_platform_data {
|
|||
};
|
||||
|
||||
/**
|
||||
* struct isp_csi2_platform_data - CSI2 interface platform data
|
||||
* struct isp_csi2_cfg - CSI2 interface configuration
|
||||
* @crc: Enable the cyclic redundancy check
|
||||
* @vpclk_div: Video port output clock control
|
||||
*/
|
||||
struct isp_csi2_platform_data {
|
||||
struct isp_csi2_cfg {
|
||||
unsigned crc:1;
|
||||
unsigned vpclk_div:2;
|
||||
struct isp_csiphy_lanes_cfg lanecfg;
|
||||
};
|
||||
|
||||
struct isp_subdev_i2c_board_info {
|
||||
struct i2c_board_info *board_info;
|
||||
int i2c_adapter_id;
|
||||
};
|
||||
|
||||
struct isp_v4l2_subdevs_group {
|
||||
struct isp_subdev_i2c_board_info *subdevs;
|
||||
struct isp_bus_cfg {
|
||||
enum isp_interface_type interface;
|
||||
union {
|
||||
struct isp_parallel_platform_data parallel;
|
||||
struct isp_ccp2_platform_data ccp2;
|
||||
struct isp_csi2_platform_data csi2;
|
||||
struct isp_parallel_cfg parallel;
|
||||
struct isp_ccp2_cfg ccp2;
|
||||
struct isp_csi2_cfg csi2;
|
||||
} bus; /* gcc < 4.6.0 chokes on anonymous union initializers */
|
||||
};
|
||||
|
||||
struct isp_platform_xclk {
|
||||
const char *dev_id;
|
||||
const char *con_id;
|
||||
struct isp_platform_subdev {
|
||||
struct i2c_board_info *board_info;
|
||||
int i2c_adapter_id;
|
||||
struct isp_bus_cfg *bus;
|
||||
};
|
||||
|
||||
struct isp_platform_data {
|
||||
struct isp_platform_xclk xclks[2];
|
||||
struct isp_v4l2_subdevs_group *subdevs;
|
||||
struct isp_platform_subdev *subdevs;
|
||||
void (*set_constraints)(struct isp_device *isp, bool enable);
|
||||
};
|
||||
|
||||
|
|
|
|||
34
include/media/ov2659.h
Normal file
34
include/media/ov2659.h
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Omnivision OV2659 CMOS Image Sensor driver
|
||||
*
|
||||
* Copyright (C) 2015 Texas Instruments, Inc.
|
||||
*
|
||||
* Benoit Parrot <bparrot@ti.com>
|
||||
* Lad, Prabhakar <prabhakar.csengg@gmail.com>
|
||||
*
|
||||
* This program is free software; you may redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef OV2659_H
|
||||
#define OV2659_H
|
||||
|
||||
/**
|
||||
* struct ov2659_platform_data - ov2659 driver platform data
|
||||
* @link_frequency: target pixel clock frequency
|
||||
*/
|
||||
struct ov2659_platform_data {
|
||||
s64 link_frequency;
|
||||
};
|
||||
|
||||
#endif /* OV2659_H */
|
||||
|
|
@ -178,8 +178,8 @@ struct saa7146_use_ops {
|
|||
};
|
||||
|
||||
/* from saa7146_fops.c */
|
||||
int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev, char *name, int type);
|
||||
int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev);
|
||||
int saa7146_register_device(struct video_device *vid, struct saa7146_dev *dev, char *name, int type);
|
||||
int saa7146_unregister_device(struct video_device *vid, struct saa7146_dev *dev);
|
||||
void saa7146_buffer_finish(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, int state);
|
||||
void saa7146_buffer_next(struct saa7146_dev *dev, struct saa7146_dmaqueue *q,int vbi);
|
||||
int saa7146_buffer_queue(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, struct saa7146_buf *buf);
|
||||
|
|
|
|||
|
|
@ -22,14 +22,15 @@
|
|||
struct module;
|
||||
struct device;
|
||||
|
||||
struct clk;
|
||||
struct v4l2_clk {
|
||||
struct list_head list;
|
||||
const struct v4l2_clk_ops *ops;
|
||||
const char *dev_id;
|
||||
const char *id;
|
||||
int enable;
|
||||
struct mutex lock; /* Protect the enable count */
|
||||
atomic_t use_count;
|
||||
struct clk *clk;
|
||||
void *priv;
|
||||
};
|
||||
|
||||
|
|
@ -43,7 +44,7 @@ struct v4l2_clk_ops {
|
|||
|
||||
struct v4l2_clk *v4l2_clk_register(const struct v4l2_clk_ops *ops,
|
||||
const char *dev_name,
|
||||
const char *name, void *priv);
|
||||
void *priv);
|
||||
void v4l2_clk_unregister(struct v4l2_clk *clk);
|
||||
struct v4l2_clk *v4l2_clk_get(struct device *dev, const char *id);
|
||||
void v4l2_clk_put(struct v4l2_clk *clk);
|
||||
|
|
@ -55,14 +56,13 @@ int v4l2_clk_set_rate(struct v4l2_clk *clk, unsigned long rate);
|
|||
struct module;
|
||||
|
||||
struct v4l2_clk *__v4l2_clk_register_fixed(const char *dev_id,
|
||||
const char *id, unsigned long rate, struct module *owner);
|
||||
unsigned long rate, struct module *owner);
|
||||
void v4l2_clk_unregister_fixed(struct v4l2_clk *clk);
|
||||
|
||||
static inline struct v4l2_clk *v4l2_clk_register_fixed(const char *dev_id,
|
||||
const char *id,
|
||||
unsigned long rate)
|
||||
{
|
||||
return __v4l2_clk_register_fixed(dev_id, id, rate, THIS_MODULE);
|
||||
return __v4l2_clk_register_fixed(dev_id, rate, THIS_MODULE);
|
||||
}
|
||||
|
||||
#define v4l2_clk_name_i2c(name, size, adap, client) snprintf(name, size, \
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ struct v4l2_file_operations {
|
|||
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
|
||||
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
|
||||
unsigned int (*poll) (struct file *, struct poll_table_struct *);
|
||||
long (*ioctl) (struct file *, unsigned int, unsigned long);
|
||||
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
|
||||
#ifdef CONFIG_COMPAT
|
||||
long (*compat_ioctl32) (struct file *, unsigned int, unsigned long);
|
||||
|
|
|
|||
|
|
@ -58,8 +58,6 @@ struct v4l2_device {
|
|||
struct v4l2_ctrl_handler *ctrl_handler;
|
||||
/* Device's priority state */
|
||||
struct v4l2_prio_state prio;
|
||||
/* BKL replacement mutex. Temporary solution only. */
|
||||
struct mutex ioctl_lock;
|
||||
/* Keep track of the references to this struct. */
|
||||
struct kref ref;
|
||||
/* Release function that is called when the ref count goes to 0. */
|
||||
|
|
|
|||
|
|
@ -23,12 +23,6 @@ struct v4l2_ioctl_ops {
|
|||
/* VIDIOC_QUERYCAP handler */
|
||||
int (*vidioc_querycap)(struct file *file, void *fh, struct v4l2_capability *cap);
|
||||
|
||||
/* Priority handling */
|
||||
int (*vidioc_g_priority) (struct file *file, void *fh,
|
||||
enum v4l2_priority *p);
|
||||
int (*vidioc_s_priority) (struct file *file, void *fh,
|
||||
enum v4l2_priority p);
|
||||
|
||||
/* VIDIOC_ENUM_FMT handlers */
|
||||
int (*vidioc_enum_fmt_vid_cap) (struct file *file, void *fh,
|
||||
struct v4l2_fmtdesc *f);
|
||||
|
|
|
|||
|
|
@ -29,12 +29,15 @@ struct device_node;
|
|||
* @data_lanes: an array of physical data lane indexes
|
||||
* @clock_lane: physical lane index of the clock lane
|
||||
* @num_data_lanes: number of data lanes
|
||||
* @lane_polarities: polarity of the lanes. The order is the same of
|
||||
* the physical lanes.
|
||||
*/
|
||||
struct v4l2_of_bus_mipi_csi2 {
|
||||
unsigned int flags;
|
||||
unsigned char data_lanes[4];
|
||||
unsigned char clock_lane;
|
||||
unsigned short num_data_lanes;
|
||||
bool lane_polarities[5];
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -66,9 +69,26 @@ struct v4l2_of_endpoint {
|
|||
struct list_head head;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v4l2_of_link - a link between two endpoints
|
||||
* @local_node: pointer to device_node of this endpoint
|
||||
* @local_port: identifier of the port this endpoint belongs to
|
||||
* @remote_node: pointer to device_node of the remote endpoint
|
||||
* @remote_port: identifier of the port the remote endpoint belongs to
|
||||
*/
|
||||
struct v4l2_of_link {
|
||||
struct device_node *local_node;
|
||||
unsigned int local_port;
|
||||
struct device_node *remote_node;
|
||||
unsigned int remote_port;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
int v4l2_of_parse_endpoint(const struct device_node *node,
|
||||
struct v4l2_of_endpoint *endpoint);
|
||||
int v4l2_of_parse_link(const struct device_node *node,
|
||||
struct v4l2_of_link *link);
|
||||
void v4l2_of_put_link(struct v4l2_of_link *link);
|
||||
#else /* CONFIG_OF */
|
||||
|
||||
static inline int v4l2_of_parse_endpoint(const struct device_node *node,
|
||||
|
|
@ -77,6 +97,16 @@ static inline int v4l2_of_parse_endpoint(const struct device_node *node,
|
|||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int v4l2_of_parse_link(const struct device_node *node,
|
||||
struct v4l2_of_link *link)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline void v4l2_of_put_link(struct v4l2_of_link *link)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
#endif /* _V4L2_OF_H */
|
||||
|
|
|
|||
|
|
@ -332,8 +332,6 @@ struct v4l2_subdev_video_ops {
|
|||
struct v4l2_subdev_frame_interval *interval);
|
||||
int (*s_frame_interval)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_frame_interval *interval);
|
||||
int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum *fsize);
|
||||
int (*enum_frameintervals)(struct v4l2_subdev *sd, struct v4l2_frmivalenum *fival);
|
||||
int (*s_dv_timings)(struct v4l2_subdev *sd,
|
||||
struct v4l2_dv_timings *timings);
|
||||
int (*g_dv_timings)(struct v4l2_subdev *sd,
|
||||
|
|
@ -482,6 +480,18 @@ struct v4l2_subdev_ir_ops {
|
|||
struct v4l2_subdev_ir_parameters *params);
|
||||
};
|
||||
|
||||
/*
|
||||
* Used for storing subdev pad information. This structure only needs
|
||||
* to be passed to the pad op if the 'which' field of the main argument
|
||||
* is set to V4L2_SUBDEV_FORMAT_TRY. For V4L2_SUBDEV_FORMAT_ACTIVE it is
|
||||
* safe to pass NULL.
|
||||
*/
|
||||
struct v4l2_subdev_pad_config {
|
||||
struct v4l2_mbus_framefmt try_fmt;
|
||||
struct v4l2_rect try_crop;
|
||||
struct v4l2_rect try_compose;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v4l2_subdev_pad_ops - v4l2-subdev pad level operations
|
||||
* @get_frame_desc: get the current low level media bus frame parameters.
|
||||
|
|
@ -489,21 +499,26 @@ struct v4l2_subdev_ir_ops {
|
|||
* may be adjusted by the subdev driver to device capabilities.
|
||||
*/
|
||||
struct v4l2_subdev_pad_ops {
|
||||
int (*enum_mbus_code)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
|
||||
int (*enum_mbus_code)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_mbus_code_enum *code);
|
||||
int (*enum_frame_size)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_fh *fh,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_frame_size_enum *fse);
|
||||
int (*enum_frame_interval)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_fh *fh,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_frame_interval_enum *fie);
|
||||
int (*get_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
|
||||
int (*get_fmt)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_format *format);
|
||||
int (*set_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
|
||||
int (*set_fmt)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_format *format);
|
||||
int (*get_selection)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
|
||||
int (*get_selection)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_selection *sel);
|
||||
int (*set_selection)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
|
||||
int (*set_selection)(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_pad_config *cfg,
|
||||
struct v4l2_subdev_selection *sel);
|
||||
int (*get_edid)(struct v4l2_subdev *sd, struct v4l2_edid *edid);
|
||||
int (*set_edid)(struct v4l2_subdev *sd, struct v4l2_edid *edid);
|
||||
|
|
@ -625,11 +640,7 @@ struct v4l2_subdev {
|
|||
struct v4l2_subdev_fh {
|
||||
struct v4l2_fh vfh;
|
||||
#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
|
||||
struct {
|
||||
struct v4l2_mbus_framefmt try_fmt;
|
||||
struct v4l2_rect try_crop;
|
||||
struct v4l2_rect try_compose;
|
||||
} *pad;
|
||||
struct v4l2_subdev_pad_config *pad;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
@ -639,17 +650,17 @@ struct v4l2_subdev_fh {
|
|||
#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
|
||||
#define __V4L2_SUBDEV_MK_GET_TRY(rtype, fun_name, field_name) \
|
||||
static inline struct rtype * \
|
||||
v4l2_subdev_get_try_##fun_name(struct v4l2_subdev_fh *fh, \
|
||||
unsigned int pad) \
|
||||
fun_name(struct v4l2_subdev *sd, \
|
||||
struct v4l2_subdev_pad_config *cfg, \
|
||||
unsigned int pad) \
|
||||
{ \
|
||||
BUG_ON(pad >= vdev_to_v4l2_subdev( \
|
||||
fh->vfh.vdev)->entity.num_pads); \
|
||||
return &fh->pad[pad].field_name; \
|
||||
BUG_ON(pad >= sd->entity.num_pads); \
|
||||
return &cfg[pad].field_name; \
|
||||
}
|
||||
|
||||
__V4L2_SUBDEV_MK_GET_TRY(v4l2_mbus_framefmt, format, try_fmt)
|
||||
__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, crop, try_crop)
|
||||
__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, compose, try_compose)
|
||||
__V4L2_SUBDEV_MK_GET_TRY(v4l2_mbus_framefmt, v4l2_subdev_get_try_format, try_fmt)
|
||||
__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, v4l2_subdev_get_try_crop, try_crop)
|
||||
__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, v4l2_subdev_get_try_compose, try_compose)
|
||||
#endif
|
||||
|
||||
extern const struct v4l2_file_operations v4l2_subdev_fops;
|
||||
|
|
|
|||
|
|
@ -133,17 +133,6 @@ enum vb2_io_modes {
|
|||
VB2_DMABUF = (1 << 4),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum vb2_fileio_flags - flags for selecting a mode of the file io emulator,
|
||||
* by default the 'streaming' style is used by the file io emulator
|
||||
* @VB2_FILEIO_READ_ONCE: report EOF after reading the first buffer
|
||||
* @VB2_FILEIO_WRITE_IMMEDIATELY: queue buffer after each write() call
|
||||
*/
|
||||
enum vb2_fileio_flags {
|
||||
VB2_FILEIO_READ_ONCE = (1 << 0),
|
||||
VB2_FILEIO_WRITE_IMMEDIATELY = (1 << 1),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum vb2_buffer_state - current video buffer state
|
||||
* @VB2_BUF_STATE_DEQUEUED: buffer under userspace control
|
||||
|
|
@ -346,7 +335,9 @@ struct v4l2_fh;
|
|||
*
|
||||
* @type: queue type (see V4L2_BUF_TYPE_* in linux/videodev2.h
|
||||
* @io_modes: supported io methods (see vb2_io_modes enum)
|
||||
* @io_flags: additional io flags (see vb2_fileio_flags enum)
|
||||
* @fileio_read_once: report EOF after reading the first buffer
|
||||
* @fileio_write_immediately: queue buffer after each write() call
|
||||
* @allow_zero_bytesused: allow bytesused == 0 to be passed to the driver
|
||||
* @lock: pointer to a mutex that protects the vb2_queue struct. The
|
||||
* driver can set this to a mutex to let the v4l2 core serialize
|
||||
* the queuing ioctls. If the driver wants to handle locking
|
||||
|
|
@ -396,7 +387,10 @@ struct v4l2_fh;
|
|||
struct vb2_queue {
|
||||
enum v4l2_buf_type type;
|
||||
unsigned int io_modes;
|
||||
unsigned int io_flags;
|
||||
unsigned fileio_read_once:1;
|
||||
unsigned fileio_write_immediately:1;
|
||||
unsigned allow_zero_bytesused:1;
|
||||
|
||||
struct mutex *lock;
|
||||
struct v4l2_fh *owner;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue