Merge tag 'media/v4.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - videobuf2 was moved to a media/common dir, as it is now used by the DVB subsystem too - Digital TV core memory mapped support interface - new sensor driver: ov7740 - several improvements at ddbridge driver - new V4L2 driver: IPU3 CIO2 CSI-2 receiver unit, found on some Intel SoCs - new tuner driver: tda18250 - finally got rid of all LIRC staging drivers - as we don't have old lirc drivers anymore, restruct the lirc device code - add support for UVC metadata - add a new staging driver for NVIDIA Tegra Video Decoder Engine - DVB kAPI headers moved to include/media - synchronize the kAPI and uAPI for the DVB subsystem, removing the gap for non-legacy APIs - reduce the kAPI gap for V4L2 - lots of other driver enhancements, cleanups, etc. * tag 'media/v4.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (407 commits) media: v4l2-compat-ioctl32.c: make ctrl_is_pointer work for subdevs media: v4l2-compat-ioctl32.c: refactor compat ioctl32 logic media: v4l2-compat-ioctl32.c: don't copy back the result for certain errors media: v4l2-compat-ioctl32.c: drop pr_info for unknown buffer type media: v4l2-compat-ioctl32.c: copy clip list in put_v4l2_window32 media: v4l2-compat-ioctl32.c: fix ctrl_is_pointer media: v4l2-compat-ioctl32.c: copy m.userptr in put_v4l2_plane32 media: v4l2-compat-ioctl32.c: avoid sizeof(type) media: v4l2-compat-ioctl32.c: move 'helper' functions to __get/put_v4l2_format32 media: v4l2-compat-ioctl32.c: fix the indentation media: v4l2-compat-ioctl32.c: add missing VIDIOC_PREPARE_BUF media: v4l2-ioctl.c: don't copy back the result for -ENOTTY media: v4l2-ioctl.c: use check_fmt for enum/g/s/try_fmt media: vivid: fix module load error when enabling fb and no_error_inj=1 media: dvb_demux: improve debug messages media: dvb_demux: Better handle discontinuity errors media: cxusb, dib0700: ignore XC2028_I2C_FLUSH media: ts2020: avoid integer overflows on 32 bit machines media: i2c: ov7740: use gpio/consumer.h instead of gpio.h media: entity: Add a nop variant of media_entity_cleanup ...
This commit is contained in:
@@ -21,31 +21,63 @@
|
||||
|
||||
#define VIDEO_MAJOR 81
|
||||
|
||||
#define VFL_TYPE_GRABBER 0
|
||||
#define VFL_TYPE_VBI 1
|
||||
#define VFL_TYPE_RADIO 2
|
||||
#define VFL_TYPE_SUBDEV 3
|
||||
#define VFL_TYPE_SDR 4
|
||||
#define VFL_TYPE_TOUCH 5
|
||||
#define VFL_TYPE_MAX 6
|
||||
/**
|
||||
* enum vfl_devnode_type - type of V4L2 device node
|
||||
*
|
||||
* @VFL_TYPE_GRABBER: for video input/output devices
|
||||
* @VFL_TYPE_VBI: for vertical blank data (i.e. closed captions, teletext)
|
||||
* @VFL_TYPE_RADIO: for radio tuners
|
||||
* @VFL_TYPE_SUBDEV: for V4L2 subdevices
|
||||
* @VFL_TYPE_SDR: for Software Defined Radio tuners
|
||||
* @VFL_TYPE_TOUCH: for touch sensors
|
||||
*/
|
||||
enum vfl_devnode_type {
|
||||
VFL_TYPE_GRABBER = 0,
|
||||
VFL_TYPE_VBI = 1,
|
||||
VFL_TYPE_RADIO = 2,
|
||||
VFL_TYPE_SUBDEV = 3,
|
||||
VFL_TYPE_SDR = 4,
|
||||
VFL_TYPE_TOUCH = 5,
|
||||
};
|
||||
#define VFL_TYPE_MAX VFL_TYPE_TOUCH
|
||||
|
||||
/* Is this a receiver, transmitter or mem-to-mem? */
|
||||
/* Ignored for VFL_TYPE_SUBDEV. */
|
||||
#define VFL_DIR_RX 0
|
||||
#define VFL_DIR_TX 1
|
||||
#define VFL_DIR_M2M 2
|
||||
/**
|
||||
* enum vfl_direction - Identifies if a &struct video_device corresponds
|
||||
* to a receiver, a transmitter or a mem-to-mem device.
|
||||
*
|
||||
* @VFL_DIR_RX: device is a receiver.
|
||||
* @VFL_DIR_TX: device is a transmitter.
|
||||
* @VFL_DIR_M2M: device is a memory to memory device.
|
||||
*
|
||||
* Note: Ignored if &enum vfl_devnode_type is %VFL_TYPE_SUBDEV.
|
||||
*/
|
||||
enum vfl_devnode_direction {
|
||||
VFL_DIR_RX,
|
||||
VFL_DIR_TX,
|
||||
VFL_DIR_M2M,
|
||||
};
|
||||
|
||||
struct v4l2_ioctl_callbacks;
|
||||
struct video_device;
|
||||
struct v4l2_device;
|
||||
struct v4l2_ctrl_handler;
|
||||
|
||||
/* Flag to mark the video_device struct as registered.
|
||||
Drivers can clear this flag if they want to block all future
|
||||
device access. It is cleared by video_unregister_device. */
|
||||
#define V4L2_FL_REGISTERED (0)
|
||||
/* file->private_data points to struct v4l2_fh */
|
||||
#define V4L2_FL_USES_V4L2_FH (1)
|
||||
/**
|
||||
* enum v4l2_video_device_flags - Flags used by &struct video_device
|
||||
*
|
||||
* @V4L2_FL_REGISTERED:
|
||||
* indicates that a &struct video_device is registered.
|
||||
* Drivers can clear this flag if they want to block all future
|
||||
* device access. It is cleared by video_unregister_device.
|
||||
* @V4L2_FL_USES_V4L2_FH:
|
||||
* indicates that file->private_data points to &struct v4l2_fh.
|
||||
* This flag is set by the core when v4l2_fh_init() is called.
|
||||
* All new drivers should use it.
|
||||
*/
|
||||
enum v4l2_video_device_flags {
|
||||
V4L2_FL_REGISTERED = 0,
|
||||
V4L2_FL_USES_V4L2_FH = 1,
|
||||
};
|
||||
|
||||
/* Priority helper functions */
|
||||
|
||||
@@ -166,7 +198,7 @@ struct v4l2_file_operations {
|
||||
|
||||
/*
|
||||
* Newer version of video_device, handled by videodev2.c
|
||||
* This version moves redundant code from video device code to
|
||||
* This version moves redundant code from video device code to
|
||||
* the common handler
|
||||
*/
|
||||
|
||||
@@ -189,11 +221,12 @@ struct v4l2_file_operations {
|
||||
* @prio: pointer to &struct v4l2_prio_state with device's Priority state.
|
||||
* If NULL, then v4l2_dev->prio will be used.
|
||||
* @name: video device name
|
||||
* @vfl_type: V4L device type
|
||||
* @vfl_type: V4L device type, as defined by &enum vfl_devnode_type
|
||||
* @vfl_dir: V4L receiver, transmitter or m2m
|
||||
* @minor: device node 'minor'. It is set to -1 if the registration failed
|
||||
* @num: number of the video device node
|
||||
* @flags: video device flags. Use bitops to set/clear/test flags
|
||||
* @flags: video device flags. Use bitops to set/clear/test flags.
|
||||
* Contains a set of &enum v4l2_video_device_flags.
|
||||
* @index: attribute to differentiate multiple indices on one physical device
|
||||
* @fh_lock: Lock for all v4l2_fhs
|
||||
* @fh_list: List of &struct v4l2_fh
|
||||
@@ -237,8 +270,8 @@ struct video_device
|
||||
|
||||
/* device info */
|
||||
char name[32];
|
||||
int vfl_type;
|
||||
int vfl_dir;
|
||||
enum vfl_devnode_type vfl_type;
|
||||
enum vfl_devnode_direction vfl_dir;
|
||||
int minor;
|
||||
u16 num;
|
||||
unsigned long flags;
|
||||
@@ -261,18 +294,30 @@ struct video_device
|
||||
struct mutex *lock;
|
||||
};
|
||||
|
||||
#define media_entity_to_video_device(__e) \
|
||||
container_of(__e, struct video_device, entity)
|
||||
/* dev to video-device */
|
||||
/**
|
||||
* media_entity_to_video_device - Returns a &struct video_device from
|
||||
* the &struct media_entity embedded on it.
|
||||
*
|
||||
* @entity: pointer to &struct media_entity
|
||||
*/
|
||||
#define media_entity_to_video_device(entity) \
|
||||
container_of(entity, struct video_device, entity)
|
||||
|
||||
/**
|
||||
* to_video_device - Returns a &struct video_device from the
|
||||
* &struct device embedded on it.
|
||||
*
|
||||
* @cd: pointer to &struct device
|
||||
*/
|
||||
#define to_video_device(cd) container_of(cd, struct video_device, dev)
|
||||
|
||||
/**
|
||||
* __video_register_device - register video4linux devices
|
||||
*
|
||||
* @vdev: struct video_device to register
|
||||
* @type: type of device to register
|
||||
* @type: type of device to register, as defined by &enum vfl_devnode_type
|
||||
* @nr: which device node number is desired:
|
||||
* (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)
|
||||
* (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)
|
||||
* @warn_if_nr_in_use: warn if the desired device node number
|
||||
* was already in use and another number was chosen instead.
|
||||
* @owner: module that owns the video device node
|
||||
@@ -289,43 +334,37 @@ struct video_device
|
||||
*
|
||||
* Returns 0 on success.
|
||||
*
|
||||
* Valid values for @type are:
|
||||
*
|
||||
* - %VFL_TYPE_GRABBER - A frame grabber
|
||||
* - %VFL_TYPE_VBI - Vertical blank data (undecoded)
|
||||
* - %VFL_TYPE_RADIO - A radio card
|
||||
* - %VFL_TYPE_SUBDEV - A subdevice
|
||||
* - %VFL_TYPE_SDR - Software Defined Radio
|
||||
* - %VFL_TYPE_TOUCH - A touch sensor
|
||||
*
|
||||
* .. note::
|
||||
*
|
||||
* This function is meant to be used only inside the V4L2 core.
|
||||
* Drivers should use video_register_device() or
|
||||
* video_register_device_no_warn().
|
||||
*/
|
||||
int __must_check __video_register_device(struct video_device *vdev, int type,
|
||||
int nr, int warn_if_nr_in_use, struct module *owner);
|
||||
int __must_check __video_register_device(struct video_device *vdev,
|
||||
enum vfl_devnode_type type,
|
||||
int nr, int warn_if_nr_in_use,
|
||||
struct module *owner);
|
||||
|
||||
/**
|
||||
* video_register_device - register video4linux devices
|
||||
*
|
||||
* @vdev: struct video_device to register
|
||||
* @type: type of device to register
|
||||
* @type: type of device to register, as defined by &enum vfl_devnode_type
|
||||
* @nr: which device node number is desired:
|
||||
* (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)
|
||||
* (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)
|
||||
*
|
||||
* Internally, it calls __video_register_device(). Please see its
|
||||
* documentation for more details.
|
||||
*
|
||||
* .. note::
|
||||
* if video_register_device fails, the release() callback of
|
||||
* if video_register_device fails, the release() callback of
|
||||
* &struct video_device structure is *not* called, so the caller
|
||||
* is responsible for freeing any data. Usually that means that
|
||||
* you video_device_release() should be called on failure.
|
||||
*/
|
||||
static inline int __must_check video_register_device(struct video_device *vdev,
|
||||
int type, int nr)
|
||||
enum vfl_devnode_type type,
|
||||
int nr)
|
||||
{
|
||||
return __video_register_device(vdev, type, nr, 1, vdev->fops->owner);
|
||||
}
|
||||
@@ -334,9 +373,9 @@ static inline int __must_check video_register_device(struct video_device *vdev,
|
||||
* video_register_device_no_warn - register video4linux devices
|
||||
*
|
||||
* @vdev: struct video_device to register
|
||||
* @type: type of device to register
|
||||
* @type: type of device to register, as defined by &enum vfl_devnode_type
|
||||
* @nr: which device node number is desired:
|
||||
* (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)
|
||||
* (0 == /dev/video0, 1 == /dev/video1, ..., -1 == first free)
|
||||
*
|
||||
* This function is identical to video_register_device() except that no
|
||||
* warning is issued if the desired device node number was already in use.
|
||||
@@ -345,13 +384,14 @@ static inline int __must_check video_register_device(struct video_device *vdev,
|
||||
* documentation for more details.
|
||||
*
|
||||
* .. note::
|
||||
* if video_register_device fails, the release() callback of
|
||||
* if video_register_device fails, the release() callback of
|
||||
* &struct video_device structure is *not* called, so the caller
|
||||
* is responsible for freeing any data. Usually that means that
|
||||
* you video_device_release() should be called on failure.
|
||||
*/
|
||||
static inline int __must_check video_register_device_no_warn(
|
||||
struct video_device *vdev, int type, int nr)
|
||||
static inline int __must_check
|
||||
video_register_device_no_warn(struct video_device *vdev,
|
||||
enum vfl_devnode_type type, int nr)
|
||||
{
|
||||
return __video_register_device(vdev, type, nr, 0, vdev->fops->owner);
|
||||
}
|
||||
@@ -383,7 +423,7 @@ void video_device_release(struct video_device *vdev);
|
||||
|
||||
/**
|
||||
* video_device_release_empty - helper function to implement the
|
||||
* video_device->release\(\) callback.
|
||||
* video_device->release\(\) callback.
|
||||
*
|
||||
* @vdev: pointer to &struct video_device
|
||||
*
|
||||
|
Reference in New Issue
Block a user