mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (348 commits) [media] pctv452e: Remove bogus code [media] adv7175: Make use of media bus pixel codes [media] media: vb2: fix incorrect return value [media] em28xx: implement VIDIOC_ENUM_FRAMESIZES [media] cx23885: Stop the risc video fifo before reconfiguring it [media] cx23885: Avoid incorrect error handling and reporting [media] cx23885: Avoid stopping the risc engine during buffer timeout [media] cx23885: Removed a spurious function cx23885_set_scale() [media] cx23885: v4l2 api compliance, set the audioset field correctly [media] cx23885: hook the audio selection functions into the main driver [media] cx23885: add generic functions for dealing with audio input selection [media] cx23885: fixes related to maximum number of inputs and range checking [media] cx23885: Initial support for the MPX-885 mini-card [media] cx25840: Ensure AUDIO6 and AUDIO7 trigger line-in baseband use [media] cx23885: Enable audio line in support from the back panel [media] cx23885: Allow the audio mux config to be specified on a per input basis [media] cx25840: Enable support for non-tuner LR1/LR2 audio inputs [media] cx23885: Name an internal i2c part and declare a bitfield by name [media] cx23885: Ensure VBI buffers timeout quickly - bugfix for vbi hangs during streaming [media] cx23885: remove channel dump diagnostics when a vbi buffer times out ... Fix up trivial conflicts in drivers/misc/altera-stapl/altera.c (header file rename vs add)
This commit is contained in:
commit
1eb6337835
422 changed files with 27936 additions and 6631 deletions
|
|
@ -18,15 +18,13 @@
|
|||
|
||||
/**
|
||||
* struct m5mols_platform_data - platform data for M-5MOLS driver
|
||||
* @irq: GPIO getting the irq pin of M-5MOLS
|
||||
* @gpio_reset: GPIO driving the reset pin of M-5MOLS
|
||||
* @reset_polarity: active state for gpio_rst pin, 0 or 1
|
||||
* @reset_polarity: active state for gpio_reset pin, 0 or 1
|
||||
* @set_power: an additional callback to the board setup code
|
||||
* to be called after enabling and before disabling
|
||||
* the sensor's supply regulators
|
||||
*/
|
||||
struct m5mols_platform_data {
|
||||
int irq;
|
||||
int gpio_reset;
|
||||
u8 reset_polarity;
|
||||
int (*set_power)(struct device *dev, int on);
|
||||
|
|
|
|||
19
include/media/mt9p031.h
Normal file
19
include/media/mt9p031.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef MT9P031_H
|
||||
#define MT9P031_H
|
||||
|
||||
struct v4l2_subdev;
|
||||
|
||||
enum {
|
||||
MT9P031_COLOR_VERSION,
|
||||
MT9P031_MONOCHROME_VERSION,
|
||||
};
|
||||
|
||||
struct mt9p031_platform_data {
|
||||
int (*set_xclk)(struct v4l2_subdev *subdev, int hz);
|
||||
int (*reset)(struct v4l2_subdev *subdev, int active);
|
||||
int ext_freq; /* input frequency to the mt9p031 for PLL dividers */
|
||||
int target_freq; /* frequency target for the PLL */
|
||||
int version; /* MT9P031_COLOR_VERSION or MT9P031_MONOCHROME_VERSION */
|
||||
};
|
||||
|
||||
#endif
|
||||
8
include/media/mt9t001.h
Normal file
8
include/media/mt9t001.h
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef _MEDIA_MT9T001_H
|
||||
#define _MEDIA_MT9T001_H
|
||||
|
||||
struct mt9t001_platform_data {
|
||||
unsigned int clk_pol:1;
|
||||
};
|
||||
|
||||
#endif
|
||||
140
include/media/omap3isp.h
Normal file
140
include/media/omap3isp.h
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
/*
|
||||
* omap3isp.h
|
||||
*
|
||||
* TI OMAP3 ISP - Platform data
|
||||
*
|
||||
* Copyright (C) 2011 Nokia Corporation
|
||||
*
|
||||
* Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
* Sakari Ailus <sakari.ailus@iki.fi>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef __MEDIA_OMAP3ISP_H__
|
||||
#define __MEDIA_OMAP3ISP_H__
|
||||
|
||||
struct i2c_board_info;
|
||||
struct isp_device;
|
||||
|
||||
enum isp_interface_type {
|
||||
ISP_INTERFACE_PARALLEL,
|
||||
ISP_INTERFACE_CSI2A_PHY2,
|
||||
ISP_INTERFACE_CCP2B_PHY1,
|
||||
ISP_INTERFACE_CCP2B_PHY2,
|
||||
ISP_INTERFACE_CSI2C_PHY1,
|
||||
};
|
||||
|
||||
enum {
|
||||
ISP_BRIDGE_DISABLE = 0,
|
||||
ISP_BRIDGE_LITTLE_ENDIAN = 2,
|
||||
ISP_BRIDGE_BIG_ENDIAN = 3,
|
||||
};
|
||||
|
||||
enum {
|
||||
ISP_LANE_SHIFT_0 = 0,
|
||||
ISP_LANE_SHIFT_2 = 1,
|
||||
ISP_LANE_SHIFT_4 = 2,
|
||||
ISP_LANE_SHIFT_6 = 3,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isp_parallel_platform_data - Parallel interface platform data
|
||||
* @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]
|
||||
* ISP_LANE_SHIFT_4 - CAMEXT[13:4] -> CAM[9:0]
|
||||
* ISP_LANE_SHIFT_6 - CAMEXT[13:6] -> CAM[7:0]
|
||||
* @clk_pol: Pixel clock polarity
|
||||
* 0 - Non Inverted, 1 - Inverted
|
||||
* @hs_pol: Horizontal synchronization polarity
|
||||
* 0 - Active high, 1 - Active low
|
||||
* @vs_pol: Vertical synchronization polarity
|
||||
* 0 - Active high, 1 - Active low
|
||||
* @bridge: CCDC Bridge input control
|
||||
* ISP_BRIDGE_DISABLE - Disable
|
||||
* ISP_BRIDGE_LITTLE_ENDIAN - Little endian
|
||||
* ISP_BRIDGE_BIG_ENDIAN - Big endian
|
||||
*/
|
||||
struct isp_parallel_platform_data {
|
||||
unsigned int data_lane_shift:2;
|
||||
unsigned int clk_pol:1;
|
||||
unsigned int hs_pol:1;
|
||||
unsigned int vs_pol:1;
|
||||
unsigned int bridge:2;
|
||||
};
|
||||
|
||||
enum {
|
||||
ISP_CCP2_PHY_DATA_CLOCK = 0,
|
||||
ISP_CCP2_PHY_DATA_STROBE = 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
ISP_CCP2_MODE_MIPI = 0,
|
||||
ISP_CCP2_MODE_CCP2 = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isp_ccp2_platform_data - CCP2 interface platform data
|
||||
* @strobe_clk_pol: Strobe/clock polarity
|
||||
* 0 - Non Inverted, 1 - Inverted
|
||||
* @crc: Enable the cyclic redundancy check
|
||||
* @ccp2_mode: Enable CCP2 compatibility mode
|
||||
* ISP_CCP2_MODE_MIPI - MIPI-CSI1 mode
|
||||
* ISP_CCP2_MODE_CCP2 - CCP2 mode
|
||||
* @phy_layer: Physical layer selection
|
||||
* ISP_CCP2_PHY_DATA_CLOCK - Data/clock physical layer
|
||||
* ISP_CCP2_PHY_DATA_STROBE - Data/strobe physical layer
|
||||
* @vpclk_div: Video port output clock control
|
||||
*/
|
||||
struct isp_ccp2_platform_data {
|
||||
unsigned int strobe_clk_pol:1;
|
||||
unsigned int crc:1;
|
||||
unsigned int ccp2_mode:1;
|
||||
unsigned int phy_layer:1;
|
||||
unsigned int vpclk_div:2;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isp_csi2_platform_data - CSI2 interface platform data
|
||||
* @crc: Enable the cyclic redundancy check
|
||||
* @vpclk_div: Video port output clock control
|
||||
*/
|
||||
struct isp_csi2_platform_data {
|
||||
unsigned crc:1;
|
||||
unsigned vpclk_div:2;
|
||||
};
|
||||
|
||||
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;
|
||||
enum isp_interface_type interface;
|
||||
union {
|
||||
struct isp_parallel_platform_data parallel;
|
||||
struct isp_ccp2_platform_data ccp2;
|
||||
struct isp_csi2_platform_data csi2;
|
||||
} bus; /* gcc < 4.6.0 chokes on anonymous union initializers */
|
||||
};
|
||||
|
||||
struct isp_platform_data {
|
||||
struct isp_v4l2_subdevs_group *subdevs;
|
||||
void (*set_constraints)(struct isp_device *isp, bool enable);
|
||||
};
|
||||
|
||||
#endif /* __MEDIA_OMAP3ISP_H__ */
|
||||
|
|
@ -23,8 +23,11 @@
|
|||
#include <media/rc-map.h>
|
||||
|
||||
extern int rc_core_debug;
|
||||
#define IR_dprintk(level, fmt, arg...) if (rc_core_debug >= level) \
|
||||
printk(KERN_DEBUG "%s: " fmt , __func__, ## arg)
|
||||
#define IR_dprintk(level, fmt, ...) \
|
||||
do { \
|
||||
if (rc_core_debug >= level) \
|
||||
pr_debug("%s: " fmt, __func__, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
enum rc_driver_type {
|
||||
RC_DRIVER_SCANCODE = 0, /* Driver or hardware generates a scancode */
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ void rc_map_init(void);
|
|||
#define RC_MAP_APAC_VIEWCOMP "rc-apac-viewcomp"
|
||||
#define RC_MAP_ASUS_PC39 "rc-asus-pc39"
|
||||
#define RC_MAP_ATI_TV_WONDER_HD_600 "rc-ati-tv-wonder-hd-600"
|
||||
#define RC_MAP_ATI_X10 "rc-ati-x10"
|
||||
#define RC_MAP_AVERMEDIA_A16D "rc-avermedia-a16d"
|
||||
#define RC_MAP_AVERMEDIA_CARDBUS "rc-avermedia-cardbus"
|
||||
#define RC_MAP_AVERMEDIA_DVBT "rc-avermedia-dvbt"
|
||||
|
|
@ -106,6 +107,7 @@ void rc_map_init(void);
|
|||
#define RC_MAP_LIRC "rc-lirc"
|
||||
#define RC_MAP_LME2510 "rc-lme2510"
|
||||
#define RC_MAP_MANLI "rc-manli"
|
||||
#define RC_MAP_MEDION_X10 "rc-medion-x10"
|
||||
#define RC_MAP_MSI_DIGIVOX_II "rc-msi-digivox-ii"
|
||||
#define RC_MAP_MSI_DIGIVOX_III "rc-msi-digivox-iii"
|
||||
#define RC_MAP_MSI_TVANYWHERE_PLUS "rc-msi-tvanywhere-plus"
|
||||
|
|
@ -130,6 +132,7 @@ void rc_map_init(void);
|
|||
#define RC_MAP_RC5_TV "rc-rc5-tv"
|
||||
#define RC_MAP_RC6_MCE "rc-rc6-mce"
|
||||
#define RC_MAP_REAL_AUDIO_220_32_KEYS "rc-real-audio-220-32-keys"
|
||||
#define RC_MAP_SNAPSTREAM_FIREFLY "rc-snapstream-firefly"
|
||||
#define RC_MAP_STREAMZAP "rc-streamzap"
|
||||
#define RC_MAP_TBS_NEC "rc-tbs-nec"
|
||||
#define RC_MAP_TECHNISAT_USB2 "rc-technisat-usb2"
|
||||
|
|
|
|||
|
|
@ -19,11 +19,6 @@ enum cam_bus_type {
|
|||
FIMC_LCD_WB, /* FIFO link from LCD mixer */
|
||||
};
|
||||
|
||||
#define FIMC_CLK_INV_PCLK (1 << 0)
|
||||
#define FIMC_CLK_INV_VSYNC (1 << 1)
|
||||
#define FIMC_CLK_INV_HREF (1 << 2)
|
||||
#define FIMC_CLK_INV_HSYNC (1 << 3)
|
||||
|
||||
struct i2c_board_info;
|
||||
|
||||
/**
|
||||
|
|
@ -36,7 +31,8 @@ struct i2c_board_info;
|
|||
* @csi_data_align: MIPI-CSI interface data alignment in bits
|
||||
* @i2c_bus_num: i2c control bus id the sensor is attached to
|
||||
* @mux_id: FIMC camera interface multiplexer index (separate for MIPI and ITU)
|
||||
* @flags: flags defining bus signals polarity inversion (High by default)
|
||||
* @clk_id: index of the SoC peripheral clock for sensors
|
||||
* @flags: the parallel bus flags defining signals polarity (V4L2_MBUS_*)
|
||||
*/
|
||||
struct s5p_fimc_isp_info {
|
||||
struct i2c_board_info *board_info;
|
||||
|
|
@ -46,6 +42,7 @@ struct s5p_fimc_isp_info {
|
|||
u16 i2c_bus_num;
|
||||
u16 mux_id;
|
||||
u16 flags;
|
||||
u8 clk_id;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -58,4 +55,13 @@ struct s5p_platform_fimc {
|
|||
struct s5p_fimc_isp_info *isp_info;
|
||||
int num_clients;
|
||||
};
|
||||
|
||||
/*
|
||||
* v4l2_device notification id. This is only for internal use in the kernel.
|
||||
* Sensor subdevs should issue S5P_FIMC_TX_END_NOTIFY notification in single
|
||||
* frame capture mode when there is only one VSYNC pulse issued by the sensor
|
||||
* at begining of the frame transmission.
|
||||
*/
|
||||
#define S5P_FIMC_TX_END_NOTIFY _IO('e', 0)
|
||||
|
||||
#endif /* S5P_FIMC_H_ */
|
||||
|
|
|
|||
|
|
@ -25,24 +25,32 @@
|
|||
|
||||
extern unsigned int saa7146_debug;
|
||||
|
||||
//#define DEBUG_PROLOG printk("(0x%08x)(0x%08x) %s: %s(): ",(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,RPS_ADDR0))),(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,IER))),KBUILD_MODNAME,__func__)
|
||||
|
||||
#ifndef DEBUG_VARIABLE
|
||||
#define DEBUG_VARIABLE saa7146_debug
|
||||
#endif
|
||||
|
||||
#define DEBUG_PROLOG printk("%s: %s(): ",KBUILD_MODNAME, __func__)
|
||||
#define INFO(x) { printk("%s: ",KBUILD_MODNAME); printk x; }
|
||||
#define ERR(fmt, ...) pr_err("%s: " fmt, __func__, ##__VA_ARGS__)
|
||||
|
||||
#define ERR(x) { DEBUG_PROLOG; printk x; }
|
||||
#define _DBG(mask, fmt, ...) \
|
||||
do { \
|
||||
if (DEBUG_VARIABLE & mask) \
|
||||
pr_debug("%s(): " fmt, __func__, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define DEB_S(x) if (0!=(DEBUG_VARIABLE&0x01)) { DEBUG_PROLOG; printk x; } /* simple debug messages */
|
||||
#define DEB_D(x) if (0!=(DEBUG_VARIABLE&0x02)) { DEBUG_PROLOG; printk x; } /* more detailed debug messages */
|
||||
#define DEB_EE(x) if (0!=(DEBUG_VARIABLE&0x04)) { DEBUG_PROLOG; printk x; } /* print enter and exit of functions */
|
||||
#define DEB_I2C(x) if (0!=(DEBUG_VARIABLE&0x08)) { DEBUG_PROLOG; printk x; } /* i2c debug messages */
|
||||
#define DEB_VBI(x) if (0!=(DEBUG_VARIABLE&0x10)) { DEBUG_PROLOG; printk x; } /* vbi debug messages */
|
||||
#define DEB_INT(x) if (0!=(DEBUG_VARIABLE&0x20)) { DEBUG_PROLOG; printk x; } /* interrupt debug messages */
|
||||
#define DEB_CAP(x) if (0!=(DEBUG_VARIABLE&0x40)) { DEBUG_PROLOG; printk x; } /* capture debug messages */
|
||||
/* simple debug messages */
|
||||
#define DEB_S(fmt, ...) _DBG(0x01, fmt, ##__VA_ARGS__)
|
||||
/* more detailed debug messages */
|
||||
#define DEB_D(fmt, ...) _DBG(0x02, fmt, ##__VA_ARGS__)
|
||||
/* print enter and exit of functions */
|
||||
#define DEB_EE(fmt, ...) _DBG(0x04, fmt, ##__VA_ARGS__)
|
||||
/* i2c debug messages */
|
||||
#define DEB_I2C(fmt, ...) _DBG(0x08, fmt, ##__VA_ARGS__)
|
||||
/* vbi debug messages */
|
||||
#define DEB_VBI(fmt, ...) _DBG(0x10, fmt, ##__VA_ARGS__)
|
||||
/* interrupt debug messages */
|
||||
#define DEB_INT(fmt, ...) _DBG(0x20, fmt, ##__VA_ARGS__)
|
||||
/* capture debug messages */
|
||||
#define DEB_CAP(fmt, ...) _DBG(0x40, fmt, ##__VA_ARGS__)
|
||||
|
||||
#define SAA7146_ISR_CLEAR(x,y) \
|
||||
saa7146_write(x, ISR, (y));
|
||||
|
|
|
|||
|
|
@ -212,9 +212,6 @@ enum {
|
|||
/* module sn9c20x: just ident 10000 */
|
||||
V4L2_IDENT_SN9C20X = 10000,
|
||||
|
||||
/* Siliconfile sensors: reserved range 10100 - 10199 */
|
||||
V4L2_IDENT_NOON010PC30 = 10100,
|
||||
|
||||
/* module cx231xx and cx25840 */
|
||||
V4L2_IDENT_CX2310X_AV = 23099, /* Integrated A/V decoder; not in '100 */
|
||||
V4L2_IDENT_CX23100 = 23100,
|
||||
|
|
|
|||
|
|
@ -65,14 +65,12 @@ struct v4l2_ctrl_ops {
|
|||
* @is_private: If set, then this control is private to its handler and it
|
||||
* will not be added to any other handlers. Drivers can set
|
||||
* this flag.
|
||||
* @is_volatile: If set, then this control is volatile. This means that the
|
||||
* control's current value cannot be cached and needs to be
|
||||
* retrieved through the g_volatile_ctrl op. Drivers can set
|
||||
* this flag.
|
||||
* @is_auto: If set, then this control selects whether the other cluster
|
||||
* members are in 'automatic' mode or 'manual' mode. This is
|
||||
* used for autogain/gain type clusters. Drivers should never
|
||||
* set this flag directly.
|
||||
* @has_volatiles: If set, then one or more members of the cluster are volatile.
|
||||
* Drivers should never touch this flag.
|
||||
* @manual_mode_value: If the is_auto flag is set, then this is the value
|
||||
* of the auto control that determines if that control is in
|
||||
* manual mode. So if the value of the auto control equals this
|
||||
|
|
@ -118,8 +116,8 @@ struct v4l2_ctrl {
|
|||
|
||||
unsigned int is_new:1;
|
||||
unsigned int is_private:1;
|
||||
unsigned int is_volatile:1;
|
||||
unsigned int is_auto:1;
|
||||
unsigned int has_volatiles:1;
|
||||
unsigned int manual_mode_value:8;
|
||||
|
||||
const struct v4l2_ctrl_ops *ops;
|
||||
|
|
@ -208,9 +206,6 @@ struct v4l2_ctrl_handler {
|
|||
* must be NULL.
|
||||
* @is_private: If set, then this control is private to its handler and it
|
||||
* will not be added to any other handlers.
|
||||
* @is_volatile: If set, then this control is volatile. This means that the
|
||||
* control's current value cannot be cached and needs to be
|
||||
* retrieved through the g_volatile_ctrl op.
|
||||
*/
|
||||
struct v4l2_ctrl_config {
|
||||
const struct v4l2_ctrl_ops *ops;
|
||||
|
|
@ -225,7 +220,6 @@ struct v4l2_ctrl_config {
|
|||
u32 menu_skip_mask;
|
||||
const char * const *qmenu;
|
||||
unsigned int is_private:1;
|
||||
unsigned int is_volatile:1;
|
||||
};
|
||||
|
||||
/** v4l2_ctrl_fill() - Fill in the control fields based on the control ID.
|
||||
|
|
@ -389,8 +383,7 @@ void v4l2_ctrl_cluster(unsigned ncontrols, struct v4l2_ctrl **controls);
|
|||
* @manual_val: The value for the first control in the cluster that equals the
|
||||
* manual setting.
|
||||
* @set_volatile: If true, then all controls except the first auto control will
|
||||
* have is_volatile set to true. If false, then is_volatile will not
|
||||
* be touched.
|
||||
* be volatile.
|
||||
*
|
||||
* Use for control groups where one control selects some automatic feature and
|
||||
* the other controls are only active whenever the automatic feature is turned
|
||||
|
|
|
|||
|
|
@ -22,8 +22,12 @@
|
|||
*/
|
||||
#define V4L2_MBUS_MASTER (1 << 0)
|
||||
#define V4L2_MBUS_SLAVE (1 << 1)
|
||||
/* Which signal polarities it supports */
|
||||
/* Note: in BT.656 mode HSYNC and VSYNC are unused */
|
||||
/*
|
||||
* Signal polarity flags
|
||||
* Note: in BT.656 mode HSYNC, FIELD, and VSYNC are unused
|
||||
* V4L2_MBUS_[HV]SYNC* flags should be also used for specifying
|
||||
* configuration of hardware that uses [HV]REF signals
|
||||
*/
|
||||
#define V4L2_MBUS_HSYNC_ACTIVE_HIGH (1 << 2)
|
||||
#define V4L2_MBUS_HSYNC_ACTIVE_LOW (1 << 3)
|
||||
#define V4L2_MBUS_VSYNC_ACTIVE_HIGH (1 << 4)
|
||||
|
|
@ -32,6 +36,10 @@
|
|||
#define V4L2_MBUS_PCLK_SAMPLE_FALLING (1 << 7)
|
||||
#define V4L2_MBUS_DATA_ACTIVE_HIGH (1 << 8)
|
||||
#define V4L2_MBUS_DATA_ACTIVE_LOW (1 << 9)
|
||||
/* FIELD = 0/1 - Field1 (odd)/Field2 (even) */
|
||||
#define V4L2_MBUS_FIELD_EVEN_HIGH (1 << 10)
|
||||
/* FIELD = 1/0 - Field1 (odd)/Field2 (even) */
|
||||
#define V4L2_MBUS_FIELD_EVEN_LOW (1 << 11)
|
||||
|
||||
/* Serial flags */
|
||||
/* How many lanes the client can use */
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@ struct vb2_mem_ops {
|
|||
|
||||
struct vb2_plane {
|
||||
void *mem_priv;
|
||||
int mapped:1;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -147,7 +146,6 @@ struct vb2_queue;
|
|||
* @done_entry: entry on the list that stores all buffers ready to
|
||||
* be dequeued to userspace
|
||||
* @planes: private per-plane information; do not change
|
||||
* @num_planes_mapped: number of mapped planes; do not change
|
||||
*/
|
||||
struct vb2_buffer {
|
||||
struct v4l2_buffer v4l2_buf;
|
||||
|
|
@ -164,7 +162,6 @@ struct vb2_buffer {
|
|||
struct list_head done_entry;
|
||||
|
||||
struct vb2_plane planes[VIDEO_MAX_PLANES];
|
||||
unsigned int num_planes_mapped;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -199,19 +196,28 @@ struct vb2_buffer {
|
|||
* before userspace accesses the buffer; optional
|
||||
* @buf_cleanup: called once before the buffer is freed; drivers may
|
||||
* perform any additional cleanup; optional
|
||||
* @start_streaming: called once before entering 'streaming' state; enables
|
||||
* driver to receive buffers over buf_queue() callback
|
||||
* @start_streaming: called once to enter 'streaming' state; the driver may
|
||||
* receive buffers with @buf_queue callback before
|
||||
* @start_streaming is called; the driver gets the number
|
||||
* of already queued buffers in count parameter; driver
|
||||
* can return an error if hardware fails or not enough
|
||||
* buffers has been queued, in such case all buffers that
|
||||
* have been already given by the @buf_queue callback are
|
||||
* invalidated.
|
||||
* @stop_streaming: called when 'streaming' state must be disabled; driver
|
||||
* should stop any DMA transactions or wait until they
|
||||
* finish and give back all buffers it got from buf_queue()
|
||||
* callback; may use vb2_wait_for_all_buffers() function
|
||||
* @buf_queue: passes buffer vb to the driver; driver may start
|
||||
* hardware operation on this buffer; driver should give
|
||||
* the buffer back by calling vb2_buffer_done() function
|
||||
* the buffer back by calling vb2_buffer_done() function;
|
||||
* it is allways called after calling STREAMON ioctl;
|
||||
* might be called before start_streaming callback if user
|
||||
* pre-queued buffers before calling STREAMON
|
||||
*/
|
||||
struct vb2_ops {
|
||||
int (*queue_setup)(struct vb2_queue *q, unsigned int *num_buffers,
|
||||
unsigned int *num_planes, unsigned long sizes[],
|
||||
unsigned int *num_planes, unsigned int sizes[],
|
||||
void *alloc_ctxs[]);
|
||||
|
||||
void (*wait_prepare)(struct vb2_queue *q);
|
||||
|
|
@ -222,7 +228,7 @@ struct vb2_ops {
|
|||
int (*buf_finish)(struct vb2_buffer *vb);
|
||||
void (*buf_cleanup)(struct vb2_buffer *vb);
|
||||
|
||||
int (*start_streaming)(struct vb2_queue *q);
|
||||
int (*start_streaming)(struct vb2_queue *q, unsigned int count);
|
||||
int (*stop_streaming)(struct vb2_queue *q);
|
||||
|
||||
void (*buf_queue)(struct vb2_buffer *vb);
|
||||
|
|
@ -276,6 +282,7 @@ struct vb2_queue {
|
|||
wait_queue_head_t done_wq;
|
||||
|
||||
void *alloc_ctx[VIDEO_MAX_PLANES];
|
||||
unsigned int plane_sizes[VIDEO_MAX_PLANES];
|
||||
|
||||
unsigned int streaming:1;
|
||||
|
||||
|
|
|
|||
|
|
@ -17,11 +17,11 @@
|
|||
#include <linux/dma-mapping.h>
|
||||
|
||||
static inline dma_addr_t
|
||||
vb2_dma_contig_plane_paddr(struct vb2_buffer *vb, unsigned int plane_no)
|
||||
vb2_dma_contig_plane_dma_addr(struct vb2_buffer *vb, unsigned int plane_no)
|
||||
{
|
||||
dma_addr_t *paddr = vb2_plane_cookie(vb, plane_no);
|
||||
dma_addr_t *addr = vb2_plane_cookie(vb, plane_no);
|
||||
|
||||
return *paddr;
|
||||
return *addr;
|
||||
}
|
||||
|
||||
void *vb2_dma_contig_init_ctx(struct device *dev);
|
||||
|
|
|
|||
Loading…
Reference in a new issue