Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (247 commits) [media] gspca - sunplus: Fix some warnings and simplify code [media] gspca: Fix some warnings tied to 'no debug' [media] gspca: Unset debug by default [media] gspca - cpia1: Remove a bad conditional compilation instruction [media] gspca - main: Remove USB traces [media] gspca - main: Version change to 2.13 [media] gspca - stk014 / t613: Accept the index 0 in querymenu [media] gspca - kinect: Remove __devinitdata [media] gspca - cpia1: Fix some warnings [media] video/Kconfig: Fix mis-classified devices [media] support for medion dvb stick 1660:1921 [media] tm6000: fix uninitialized field, change prink to dprintk [media] cx231xx: Add support for Iconbit U100 [media] saa7134 add new TV cards [media] Use a more consistent value for RC repeat period [media] cx18: Move spinlock and vb_type initialisation into stream_init [media] tm6000: remove tm6010 sif audio start and stop [media] tm6000: remove unused exports [media] tm6000: add pts logging [media] tm6000: change from ioctl to unlocked_ioctl ...
This commit is contained in:
@@ -372,6 +372,7 @@ header-y += unistd.h
|
||||
header-y += usbdevice_fs.h
|
||||
header-y += utime.h
|
||||
header-y += utsname.h
|
||||
header-y += uvcvideo.h
|
||||
header-y += v4l2-mediabus.h
|
||||
header-y += v4l2-subdev.h
|
||||
header-y += veth.h
|
||||
|
||||
@@ -175,14 +175,20 @@ typedef enum fe_transmit_mode {
|
||||
TRANSMISSION_MODE_2K,
|
||||
TRANSMISSION_MODE_8K,
|
||||
TRANSMISSION_MODE_AUTO,
|
||||
TRANSMISSION_MODE_4K
|
||||
TRANSMISSION_MODE_4K,
|
||||
TRANSMISSION_MODE_1K,
|
||||
TRANSMISSION_MODE_16K,
|
||||
TRANSMISSION_MODE_32K,
|
||||
} fe_transmit_mode_t;
|
||||
|
||||
typedef enum fe_bandwidth {
|
||||
BANDWIDTH_8_MHZ,
|
||||
BANDWIDTH_7_MHZ,
|
||||
BANDWIDTH_6_MHZ,
|
||||
BANDWIDTH_AUTO
|
||||
BANDWIDTH_AUTO,
|
||||
BANDWIDTH_5_MHZ,
|
||||
BANDWIDTH_10_MHZ,
|
||||
BANDWIDTH_1_712_MHZ,
|
||||
} fe_bandwidth_t;
|
||||
|
||||
|
||||
@@ -191,7 +197,10 @@ typedef enum fe_guard_interval {
|
||||
GUARD_INTERVAL_1_16,
|
||||
GUARD_INTERVAL_1_8,
|
||||
GUARD_INTERVAL_1_4,
|
||||
GUARD_INTERVAL_AUTO
|
||||
GUARD_INTERVAL_AUTO,
|
||||
GUARD_INTERVAL_1_128,
|
||||
GUARD_INTERVAL_19_128,
|
||||
GUARD_INTERVAL_19_256,
|
||||
} fe_guard_interval_t;
|
||||
|
||||
|
||||
@@ -305,7 +314,9 @@ struct dvb_frontend_event {
|
||||
|
||||
#define DTV_ISDBS_TS_ID 42
|
||||
|
||||
#define DTV_MAX_COMMAND DTV_ISDBS_TS_ID
|
||||
#define DTV_DVBT2_PLP_ID 43
|
||||
|
||||
#define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID
|
||||
|
||||
typedef enum fe_pilot {
|
||||
PILOT_ON,
|
||||
@@ -337,6 +348,7 @@ typedef enum fe_delivery_system {
|
||||
SYS_DMBTH,
|
||||
SYS_CMMB,
|
||||
SYS_DAB,
|
||||
SYS_DVBT2,
|
||||
} fe_delivery_system_t;
|
||||
|
||||
struct dtv_cmds_h {
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
#define _DVBVERSION_H_
|
||||
|
||||
#define DVB_API_VERSION 5
|
||||
#define DVB_API_VERSION_MINOR 2
|
||||
#define DVB_API_VERSION_MINOR 3
|
||||
|
||||
#endif /*_DVBVERSION_H_*/
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
#ifndef __LINUX_UVCVIDEO_H_
|
||||
#define __LINUX_UVCVIDEO_H_
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Dynamic controls
|
||||
*/
|
||||
|
||||
/* Data types for UVC control data */
|
||||
#define UVC_CTRL_DATA_TYPE_RAW 0
|
||||
#define UVC_CTRL_DATA_TYPE_SIGNED 1
|
||||
#define UVC_CTRL_DATA_TYPE_UNSIGNED 2
|
||||
#define UVC_CTRL_DATA_TYPE_BOOLEAN 3
|
||||
#define UVC_CTRL_DATA_TYPE_ENUM 4
|
||||
#define UVC_CTRL_DATA_TYPE_BITMASK 5
|
||||
|
||||
/* Control flags */
|
||||
#define UVC_CTRL_FLAG_SET_CUR (1 << 0)
|
||||
#define UVC_CTRL_FLAG_GET_CUR (1 << 1)
|
||||
#define UVC_CTRL_FLAG_GET_MIN (1 << 2)
|
||||
#define UVC_CTRL_FLAG_GET_MAX (1 << 3)
|
||||
#define UVC_CTRL_FLAG_GET_RES (1 << 4)
|
||||
#define UVC_CTRL_FLAG_GET_DEF (1 << 5)
|
||||
/* Control should be saved at suspend and restored at resume. */
|
||||
#define UVC_CTRL_FLAG_RESTORE (1 << 6)
|
||||
/* Control can be updated by the camera. */
|
||||
#define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7)
|
||||
|
||||
#define UVC_CTRL_FLAG_GET_RANGE \
|
||||
(UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | \
|
||||
UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | \
|
||||
UVC_CTRL_FLAG_GET_DEF)
|
||||
|
||||
struct uvc_menu_info {
|
||||
__u32 value;
|
||||
__u8 name[32];
|
||||
};
|
||||
|
||||
struct uvc_xu_control_mapping {
|
||||
__u32 id;
|
||||
__u8 name[32];
|
||||
__u8 entity[16];
|
||||
__u8 selector;
|
||||
|
||||
__u8 size;
|
||||
__u8 offset;
|
||||
__u32 v4l2_type;
|
||||
__u32 data_type;
|
||||
|
||||
struct uvc_menu_info __user *menu_info;
|
||||
__u32 menu_count;
|
||||
|
||||
__u32 reserved[4];
|
||||
};
|
||||
|
||||
struct uvc_xu_control_query {
|
||||
__u8 unit;
|
||||
__u8 selector;
|
||||
__u8 query;
|
||||
__u16 size;
|
||||
__u8 __user *data;
|
||||
};
|
||||
|
||||
#define UVCIOC_CTRL_MAP _IOWR('u', 0x20, struct uvc_xu_control_mapping)
|
||||
#define UVCIOC_CTRL_QUERY _IOWR('u', 0x21, struct uvc_xu_control_query)
|
||||
|
||||
#endif
|
||||
@@ -89,6 +89,9 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010,
|
||||
V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011,
|
||||
V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012,
|
||||
|
||||
/* JPEG compressed formats - next is 0x4002 */
|
||||
V4L2_MBUS_FMT_JPEG_1X8 = 0x4001,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -311,6 +311,9 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
||||
|
||||
/* Grey bit-packed formats */
|
||||
#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */
|
||||
|
||||
/* Palette formats */
|
||||
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
||||
|
||||
@@ -333,6 +336,7 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */
|
||||
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
|
||||
#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
|
||||
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
|
||||
|
||||
/* two planes -- one Y, one Cr + Cb interleaved */
|
||||
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef _MEDIA_MT9V032_H
|
||||
#define _MEDIA_MT9V032_H
|
||||
|
||||
struct v4l2_subdev;
|
||||
|
||||
struct mt9v032_platform_data {
|
||||
unsigned int clk_pol:1;
|
||||
|
||||
void (*set_clock)(struct v4l2_subdev *subdev, unsigned int rate);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -40,10 +40,12 @@ enum rc_driver_type {
|
||||
* @driver_name: name of the hardware driver which registered this device
|
||||
* @map_name: name of the default keymap
|
||||
* @rc_map: current scan/key table
|
||||
* @lock: used to ensure we've filled in all protocol details before
|
||||
* anyone can call show_protocols or store_protocols
|
||||
* @devno: unique remote control device number
|
||||
* @raw: additional data for raw pulse/space devices
|
||||
* @input_dev: the input child device used to communicate events to userspace
|
||||
* @driver_type: specifies if protocol decoding is done in hardware or software
|
||||
* @driver_type: specifies if protocol decoding is done in hardware or software
|
||||
* @idle: used to keep track of RX state
|
||||
* @allowed_protos: bitmask with the supported RC_TYPE_* protocols
|
||||
* @scanmask: some hardware decoders are not capable of providing the full
|
||||
@@ -86,7 +88,8 @@ struct rc_dev {
|
||||
struct input_id input_id;
|
||||
char *driver_name;
|
||||
const char *map_name;
|
||||
struct rc_map rc_map;
|
||||
struct rc_map rc_map;
|
||||
struct mutex lock;
|
||||
unsigned long devno;
|
||||
struct ir_raw_event_ctrl *raw;
|
||||
struct input_dev *input_dev;
|
||||
|
||||
@@ -136,6 +136,7 @@ void rc_map_init(void);
|
||||
#define RC_MAP_TERRATEC_SLIM "rc-terratec-slim"
|
||||
#define RC_MAP_TERRATEC_SLIM_2 "rc-terratec-slim-2"
|
||||
#define RC_MAP_TEVII_NEC "rc-tevii-nec"
|
||||
#define RC_MAP_TIVO "rc-tivo"
|
||||
#define RC_MAP_TOTAL_MEDIA_IN_HAND "rc-total-media-in-hand"
|
||||
#define RC_MAP_TREKSTOR "rc-trekstor"
|
||||
#define RC_MAP_TT_1500 "rc-tt-1500"
|
||||
|
||||
@@ -80,6 +80,11 @@ struct soc_camera_host_ops {
|
||||
int (*cropcap)(struct soc_camera_device *, struct v4l2_cropcap *);
|
||||
int (*get_crop)(struct soc_camera_device *, struct v4l2_crop *);
|
||||
int (*set_crop)(struct soc_camera_device *, struct v4l2_crop *);
|
||||
/*
|
||||
* The difference to .set_crop() is, that .set_livecrop is not allowed
|
||||
* to change the output sizes
|
||||
*/
|
||||
int (*set_livecrop)(struct soc_camera_device *, struct v4l2_crop *);
|
||||
int (*set_fmt)(struct soc_camera_device *, struct v4l2_format *);
|
||||
int (*try_fmt)(struct soc_camera_device *, struct v4l2_format *);
|
||||
void (*init_videobuf)(struct videobuf_queue *,
|
||||
@@ -104,6 +109,12 @@ struct soc_camera_host_ops {
|
||||
#define SOCAM_SENSOR_INVERT_HSYNC (1 << 2)
|
||||
#define SOCAM_SENSOR_INVERT_VSYNC (1 << 3)
|
||||
#define SOCAM_SENSOR_INVERT_DATA (1 << 4)
|
||||
#define SOCAM_MIPI_1LANE (1 << 5)
|
||||
#define SOCAM_MIPI_2LANE (1 << 6)
|
||||
#define SOCAM_MIPI_3LANE (1 << 7)
|
||||
#define SOCAM_MIPI_4LANE (1 << 8)
|
||||
#define SOCAM_MIPI (SOCAM_MIPI_1LANE | SOCAM_MIPI_2LANE | \
|
||||
SOCAM_MIPI_3LANE | SOCAM_MIPI_4LANE)
|
||||
|
||||
struct i2c_board_info;
|
||||
struct regulator_bulk_data;
|
||||
@@ -268,6 +279,7 @@ static inline unsigned long soc_camera_bus_param_compatible(
|
||||
unsigned long camera_flags, unsigned long bus_flags)
|
||||
{
|
||||
unsigned long common_flags, hsync, vsync, pclk, data, buswidth, mode;
|
||||
unsigned long mipi;
|
||||
|
||||
common_flags = camera_flags & bus_flags;
|
||||
|
||||
@@ -277,8 +289,9 @@ static inline unsigned long soc_camera_bus_param_compatible(
|
||||
data = common_flags & (SOCAM_DATA_ACTIVE_HIGH | SOCAM_DATA_ACTIVE_LOW);
|
||||
mode = common_flags & (SOCAM_MASTER | SOCAM_SLAVE);
|
||||
buswidth = common_flags & SOCAM_DATAWIDTH_MASK;
|
||||
mipi = common_flags & SOCAM_MIPI;
|
||||
|
||||
return (!hsync || !vsync || !pclk || !data || !mode || !buswidth) ? 0 :
|
||||
return ((!hsync || !vsync || !pclk || !data || !mode || !buswidth) && !mipi) ? 0 :
|
||||
common_flags;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,4 +25,54 @@ struct soc_camera_platform_info {
|
||||
int (*set_capture)(struct soc_camera_platform_info *info, int enable);
|
||||
};
|
||||
|
||||
static inline void soc_camera_platform_release(struct platform_device **pdev)
|
||||
{
|
||||
*pdev = NULL;
|
||||
}
|
||||
|
||||
static inline int soc_camera_platform_add(const struct soc_camera_link *icl,
|
||||
struct device *dev,
|
||||
struct platform_device **pdev,
|
||||
struct soc_camera_link *plink,
|
||||
void (*release)(struct device *dev),
|
||||
int id)
|
||||
{
|
||||
struct soc_camera_platform_info *info = plink->priv;
|
||||
int ret;
|
||||
|
||||
if (icl != plink)
|
||||
return -ENODEV;
|
||||
|
||||
if (*pdev)
|
||||
return -EBUSY;
|
||||
|
||||
*pdev = platform_device_alloc("soc_camera_platform", id);
|
||||
if (!*pdev)
|
||||
return -ENOMEM;
|
||||
|
||||
info->dev = dev;
|
||||
|
||||
(*pdev)->dev.platform_data = info;
|
||||
(*pdev)->dev.release = release;
|
||||
|
||||
ret = platform_device_add(*pdev);
|
||||
if (ret < 0) {
|
||||
platform_device_put(*pdev);
|
||||
*pdev = NULL;
|
||||
info->dev = NULL;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void soc_camera_platform_del(const struct soc_camera_link *icl,
|
||||
struct platform_device *pdev,
|
||||
const struct soc_camera_link *plink)
|
||||
{
|
||||
if (icl != plink || !pdev)
|
||||
return;
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
}
|
||||
|
||||
#endif /* __SOC_CAMERA_H__ */
|
||||
|
||||
@@ -16,18 +16,24 @@
|
||||
|
||||
/**
|
||||
* enum soc_mbus_packing - data packing types on the media-bus
|
||||
* @SOC_MBUS_PACKING_NONE: no packing, bit-for-bit transfer to RAM
|
||||
* @SOC_MBUS_PACKING_NONE: no packing, bit-for-bit transfer to RAM, one
|
||||
* sample represents one pixel
|
||||
* @SOC_MBUS_PACKING_2X8_PADHI: 16 bits transferred in 2 8-bit samples, in the
|
||||
* possibly incomplete byte high bits are padding
|
||||
* @SOC_MBUS_PACKING_2X8_PADLO: as above, but low bits are padding
|
||||
* @SOC_MBUS_PACKING_EXTEND16: sample width (e.g., 10 bits) has to be extended
|
||||
* to 16 bits
|
||||
* @SOC_MBUS_PACKING_VARIABLE: compressed formats with variable packing
|
||||
* @SOC_MBUS_PACKING_1_5X8: used for packed YUV 4:2:0 formats, where 4
|
||||
* pixels occupy 6 bytes in RAM
|
||||
*/
|
||||
enum soc_mbus_packing {
|
||||
SOC_MBUS_PACKING_NONE,
|
||||
SOC_MBUS_PACKING_2X8_PADHI,
|
||||
SOC_MBUS_PACKING_2X8_PADLO,
|
||||
SOC_MBUS_PACKING_EXTEND16,
|
||||
SOC_MBUS_PACKING_VARIABLE,
|
||||
SOC_MBUS_PACKING_1_5X8,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -57,9 +63,24 @@ struct soc_mbus_pixelfmt {
|
||||
u8 bits_per_sample;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct soc_mbus_lookup - Lookup FOURCC IDs by mediabus codes for pass-through
|
||||
* @code: mediabus pixel-code
|
||||
* @fmt: pixel format description
|
||||
*/
|
||||
struct soc_mbus_lookup {
|
||||
enum v4l2_mbus_pixelcode code;
|
||||
struct soc_mbus_pixelfmt fmt;
|
||||
};
|
||||
|
||||
const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc(
|
||||
enum v4l2_mbus_pixelcode code,
|
||||
const struct soc_mbus_lookup *lookup,
|
||||
int n);
|
||||
const struct soc_mbus_pixelfmt *soc_mbus_get_fmtdesc(
|
||||
enum v4l2_mbus_pixelcode code);
|
||||
s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf);
|
||||
int soc_mbus_samples_per_pixel(const struct soc_mbus_pixelfmt *mf);
|
||||
int soc_mbus_samples_per_pixel(const struct soc_mbus_pixelfmt *mf,
|
||||
unsigned int *numerator, unsigned int *denominator);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -62,6 +62,8 @@ struct v4l2_file_operations {
|
||||
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);
|
||||
unsigned long (*get_unmapped_area) (struct file *, unsigned long,
|
||||
unsigned long, unsigned long, unsigned long);
|
||||
int (*mmap) (struct file *, struct vm_area_struct *);
|
||||
int (*open) (struct file *);
|
||||
int (*release) (struct file *);
|
||||
|
||||
Reference in New Issue
Block a user