mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-16 11:01:12 -05:00
Merge tag 'media/v6.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - Removal of some old unused sensor drivers: ad9389b, m5mols, mt9m032, mt9t001, noon010pc30, s5k6aa, sr030pc30 and vs6624 - New i.MX8 image sensor interface driver - Some new RC keymaps - lots of cleanups at atomisp driver to make it support standard features present on other webcam drivers - the cx18 and saa7146 now uses VB2 - lots of cleanups and driver improvements * tag 'media/v6.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (460 commits) media: ov5670: Fix probe on ACPI media: nxp: imx8-isi: Remove 300ms sleep after enabling channel media: nxp: imx8-isi: Replace udelay() with fsleep() media: nxp: imx8-isi: Drop partial support for i.MX8QM and i.MX8QXP media: nxp: Add i.MX8 ISI driver media: dt-bindings: media: Add i.MX8 ISI DT bindings media: atomisp: gmin_platform: Add Lenovo Ideapad Miix 310 gmin_vars media: atomisp: gmin_platform: Make DMI quirks take precedence over the _DSM table media: atomisp: Remove struct atomisp_sub_device index field media: atomisp: Drop support for streaming from 2 sensors at once media: atomisp: Remove atomisp_try_fmt() call from atomisp_set_fmt() media: atomisp: Remove unused ATOM_ISP_MAX_WIDTH_TMP and ATOM_ISP_MAX_HEIGHT_TMP media: atomisp: Remove snr_mbus_fmt local var from atomisp_try_fmt() media: atomisp: Remove custom V4L2_CID_FMT_AUTO control media: atomisp: Remove continuous mode related code from atomisp_set_fmt() media: atomisp: Remove duplicate atomisp_[start|stop]_streaming() prototypes media: atomisp: gc0310: Switch over to ACPI powermanagement media: atomisp: gc0310: Use devm_kzalloc() for data struct media: atomisp: gc0310: Add runtime-pm support media: atomisp: gc0310: Delay power-on till streaming is started ...
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
#include <media/v4l2-ioctl.h>
|
||||
#include <media/v4l2-fh.h>
|
||||
#include <media/drv-intf/saa7146.h>
|
||||
#include <media/videobuf-dma-sg.h>
|
||||
#include <media/videobuf2-dma-sg.h>
|
||||
|
||||
#define MAX_SAA7146_CAPTURE_BUFFERS 32 /* arbitrary */
|
||||
#define BUFFER_TIMEOUT (HZ/2) /* 0.5 seconds */
|
||||
@@ -57,10 +57,10 @@ struct saa7146_standard
|
||||
/* buffer for one video/vbi frame */
|
||||
struct saa7146_buf {
|
||||
/* common v4l buffer stuff -- must be first */
|
||||
struct videobuf_buffer vb;
|
||||
struct vb2_v4l2_buffer vb;
|
||||
struct list_head list;
|
||||
|
||||
/* saa7146 specific */
|
||||
struct v4l2_pix_format *fmt;
|
||||
int (*activate)(struct saa7146_dev *dev,
|
||||
struct saa7146_buf *buf,
|
||||
struct saa7146_buf *next);
|
||||
@@ -74,58 +74,23 @@ struct saa7146_dmaqueue {
|
||||
struct saa7146_buf *curr;
|
||||
struct list_head queue;
|
||||
struct timer_list timeout;
|
||||
struct vb2_queue q;
|
||||
};
|
||||
|
||||
struct saa7146_overlay {
|
||||
struct saa7146_fh *fh;
|
||||
struct v4l2_window win;
|
||||
struct v4l2_clip clips[16];
|
||||
int nclips;
|
||||
};
|
||||
|
||||
/* per open data */
|
||||
struct saa7146_fh {
|
||||
/* Must be the first field! */
|
||||
struct v4l2_fh fh;
|
||||
struct saa7146_dev *dev;
|
||||
|
||||
/* video capture */
|
||||
struct videobuf_queue video_q;
|
||||
|
||||
/* vbi capture */
|
||||
struct videobuf_queue vbi_q;
|
||||
|
||||
unsigned int resources; /* resource management for device open */
|
||||
};
|
||||
|
||||
#define STATUS_OVERLAY 0x01
|
||||
#define STATUS_CAPTURE 0x02
|
||||
|
||||
struct saa7146_vv
|
||||
{
|
||||
/* vbi capture */
|
||||
struct saa7146_dmaqueue vbi_dmaq;
|
||||
struct v4l2_vbi_format vbi_fmt;
|
||||
struct timer_list vbi_read_timeout;
|
||||
struct file *vbi_read_timeout_file;
|
||||
/* vbi workaround interrupt queue */
|
||||
wait_queue_head_t vbi_wq;
|
||||
int vbi_fieldcount;
|
||||
struct saa7146_fh *vbi_streaming;
|
||||
|
||||
int video_status;
|
||||
struct saa7146_fh *video_fh;
|
||||
|
||||
/* video overlay */
|
||||
struct saa7146_overlay ov;
|
||||
struct v4l2_framebuffer ov_fb;
|
||||
struct saa7146_format *ov_fmt;
|
||||
struct saa7146_fh *ov_suspend;
|
||||
|
||||
/* video capture */
|
||||
struct saa7146_dmaqueue video_dmaq;
|
||||
struct v4l2_pix_format video_fmt;
|
||||
enum v4l2_field last_field;
|
||||
u32 seqnr;
|
||||
|
||||
/* common: fixme? shouldn't this be in saa7146_fh?
|
||||
(this leads to a more complicated question: shall the driver
|
||||
@@ -140,9 +105,7 @@ struct saa7146_vv
|
||||
int current_hps_source;
|
||||
int current_hps_sync;
|
||||
|
||||
struct saa7146_dma d_clipping; /* pointer to clipping memory */
|
||||
|
||||
unsigned int resources; /* resource management for device */
|
||||
unsigned int resources; /* resource management for device */
|
||||
};
|
||||
|
||||
/* flags */
|
||||
@@ -172,10 +135,7 @@ struct saa7146_ext_vv
|
||||
|
||||
struct saa7146_use_ops {
|
||||
void (*init)(struct saa7146_dev *, struct saa7146_vv *);
|
||||
int(*open)(struct saa7146_dev *, struct file *);
|
||||
void (*release)(struct saa7146_dev *, struct file *);
|
||||
void (*irq_done)(struct saa7146_dev *, unsigned long status);
|
||||
ssize_t (*read)(struct file *, char __user *, size_t, loff_t *);
|
||||
};
|
||||
|
||||
/* from saa7146_fops.c */
|
||||
@@ -185,16 +145,11 @@ void saa7146_buffer_finish(struct saa7146_dev *dev, struct saa7146_dmaqueue *q,
|
||||
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);
|
||||
void saa7146_buffer_timeout(struct timer_list *t);
|
||||
void saa7146_dma_free(struct saa7146_dev* dev,struct videobuf_queue *q,
|
||||
struct saa7146_buf *buf);
|
||||
|
||||
int saa7146_vv_init(struct saa7146_dev* dev, struct saa7146_ext_vv *ext_vv);
|
||||
int saa7146_vv_release(struct saa7146_dev* dev);
|
||||
|
||||
/* from saa7146_hlp.c */
|
||||
int saa7146_enable_overlay(struct saa7146_fh *fh);
|
||||
void saa7146_disable_overlay(struct saa7146_fh *fh);
|
||||
|
||||
void saa7146_set_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struct saa7146_buf *next);
|
||||
void saa7146_write_out_dma(struct saa7146_dev* dev, int which, struct saa7146_video_dma* vdma) ;
|
||||
void saa7146_set_hps_source_and_sync(struct saa7146_dev *saa, int source, int sync);
|
||||
@@ -204,17 +159,17 @@ void saa7146_set_gpio(struct saa7146_dev *saa, u8 pin, u8 data);
|
||||
extern const struct v4l2_ioctl_ops saa7146_video_ioctl_ops;
|
||||
extern const struct v4l2_ioctl_ops saa7146_vbi_ioctl_ops;
|
||||
extern const struct saa7146_use_ops saa7146_video_uops;
|
||||
int saa7146_start_preview(struct saa7146_fh *fh);
|
||||
int saa7146_stop_preview(struct saa7146_fh *fh);
|
||||
extern const struct vb2_ops video_qops;
|
||||
long saa7146_video_do_ioctl(struct file *file, unsigned int cmd, void *arg);
|
||||
int saa7146_s_ctrl(struct v4l2_ctrl *ctrl);
|
||||
|
||||
/* from saa7146_vbi.c */
|
||||
extern const struct saa7146_use_ops saa7146_vbi_uops;
|
||||
extern const struct vb2_ops vbi_qops;
|
||||
|
||||
/* resource management functions */
|
||||
int saa7146_res_get(struct saa7146_fh *fh, unsigned int bit);
|
||||
void saa7146_res_free(struct saa7146_fh *fh, unsigned int bits);
|
||||
int saa7146_res_get(struct saa7146_dev *dev, unsigned int bit);
|
||||
void saa7146_res_free(struct saa7146_dev *dev, unsigned int bits);
|
||||
|
||||
#define RESOURCE_DMA1_HPS 0x1
|
||||
#define RESOURCE_DMA2_CLP 0x2
|
||||
|
||||
@@ -19,13 +19,11 @@
|
||||
#define _DVB_NET_H_
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/inetdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
#include <media/dvbdev.h>
|
||||
|
||||
struct net_device;
|
||||
|
||||
#define DVB_NET_DEVICES_MAX 10
|
||||
|
||||
#ifdef CONFIG_DVB_NET
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Analog Devices AD9389B/AD9889B video encoder driver header
|
||||
*
|
||||
* Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef AD9389B_H
|
||||
#define AD9389B_H
|
||||
|
||||
enum ad9389b_tmds_pll_gear {
|
||||
AD9389B_TMDS_PLL_GEAR_AUTOMATIC,
|
||||
AD9389B_TMDS_PLL_GEAR_SEMI_AUTOMATIC,
|
||||
};
|
||||
|
||||
/* Platform dependent definitions */
|
||||
struct ad9389b_platform_data {
|
||||
enum ad9389b_tmds_pll_gear tmds_pll_gear ;
|
||||
/* Differential Data/Clock Output Drive Strength (reg. 0xa2/0xa3) */
|
||||
u8 diff_data_drive_strength;
|
||||
u8 diff_clk_drive_strength;
|
||||
};
|
||||
|
||||
/* notify events */
|
||||
#define AD9389B_MONITOR_DETECT 0
|
||||
#define AD9389B_EDID_DETECT 1
|
||||
|
||||
struct ad9389b_monitor_detect {
|
||||
int present;
|
||||
};
|
||||
|
||||
struct ad9389b_edid_detect {
|
||||
int present;
|
||||
int segment;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,25 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Driver header for M-5MOLS 8M Pixel camera sensor with ISP
|
||||
*
|
||||
* Copyright (C) 2011 Samsung Electronics Co., Ltd.
|
||||
* Author: HeungJun Kim <riverful.kim@samsung.com>
|
||||
*
|
||||
* Copyright (C) 2009 Samsung Electronics Co., Ltd.
|
||||
* Author: Dongsoo Nathaniel Kim <dongsoo45.kim@samsung.com>
|
||||
*/
|
||||
|
||||
#ifndef MEDIA_M5MOLS_H
|
||||
#define MEDIA_M5MOLS_H
|
||||
|
||||
/**
|
||||
* struct m5mols_platform_data - platform data for M-5MOLS driver
|
||||
* @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 (*set_power)(struct device *dev, int on);
|
||||
};
|
||||
|
||||
#endif /* MEDIA_M5MOLS_H */
|
||||
@@ -1,22 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Driver for MT9M032 CMOS Image Sensor from Micron
|
||||
*
|
||||
* Copyright (C) 2010-2011 Lund Engineering
|
||||
* Contact: Gil Lund <gwlund@lundeng.com>
|
||||
* Author: Martin Hostettler <martin@neutronstar.dyndns.org>
|
||||
*/
|
||||
|
||||
#ifndef MT9M032_H
|
||||
#define MT9M032_H
|
||||
|
||||
#define MT9M032_NAME "mt9m032"
|
||||
#define MT9M032_I2C_ADDR (0xb8 >> 1)
|
||||
|
||||
struct mt9m032_platform_data {
|
||||
u32 ext_clock;
|
||||
u32 pix_clock;
|
||||
bool invert_pixclock;
|
||||
|
||||
};
|
||||
#endif /* MT9M032_H */
|
||||
@@ -1,10 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _MEDIA_MT9T001_H
|
||||
#define _MEDIA_MT9T001_H
|
||||
|
||||
struct mt9t001_platform_data {
|
||||
unsigned int clk_pol:1;
|
||||
unsigned int ext_clk;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,21 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Driver header for NOON010PC30L camera sensor chip.
|
||||
*
|
||||
* Copyright (c) 2010 Samsung Electronics, Co. Ltd
|
||||
* Contact: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
||||
*/
|
||||
|
||||
#ifndef NOON010PC30_H
|
||||
#define NOON010PC30_H
|
||||
|
||||
/**
|
||||
* struct noon010pc30_platform_data - platform data
|
||||
* @clk_rate: the clock frequency in Hz
|
||||
*/
|
||||
|
||||
struct noon010pc30_platform_data {
|
||||
unsigned long clk_rate;
|
||||
};
|
||||
|
||||
#endif /* NOON010PC30_H */
|
||||
@@ -1,48 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* S5K6AAFX camera sensor driver header
|
||||
*
|
||||
* Copyright (C) 2011 Samsung Electronics Co., Ltd.
|
||||
*/
|
||||
|
||||
#ifndef S5K6AA_H
|
||||
#define S5K6AA_H
|
||||
|
||||
#include <media/v4l2-mediabus.h>
|
||||
|
||||
/**
|
||||
* struct s5k6aa_gpio - data structure describing a GPIO
|
||||
* @gpio: GPIO number
|
||||
* @level: indicates active state of the @gpio
|
||||
*/
|
||||
struct s5k6aa_gpio {
|
||||
int gpio;
|
||||
int level;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct s5k6aa_platform_data - s5k6aa driver platform data
|
||||
* @set_power: an additional callback to the board code, called
|
||||
* after enabling the regulators and before switching
|
||||
* the sensor off
|
||||
* @mclk_frequency: sensor's master clock frequency in Hz
|
||||
* @gpio_reset: GPIO driving RESET pin
|
||||
* @gpio_stby: GPIO driving STBY pin
|
||||
* @bus_type: bus type
|
||||
* @nlanes: maximum number of MIPI-CSI lanes used
|
||||
* @horiz_flip: default horizontal image flip value, non zero to enable
|
||||
* @vert_flip: default vertical image flip value, non zero to enable
|
||||
*/
|
||||
|
||||
struct s5k6aa_platform_data {
|
||||
int (*set_power)(int enable);
|
||||
unsigned long mclk_frequency;
|
||||
struct s5k6aa_gpio gpio_reset;
|
||||
struct s5k6aa_gpio gpio_stby;
|
||||
enum v4l2_mbus_type bus_type;
|
||||
u8 nlanes;
|
||||
u8 horiz_flip;
|
||||
u8 vert_flip;
|
||||
};
|
||||
|
||||
#endif /* S5K6AA_H */
|
||||
@@ -1,17 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Driver header for SR030PC30 camera sensor
|
||||
*
|
||||
* Copyright (c) 2010 Samsung Electronics, Co. Ltd
|
||||
* Contact: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
||||
*/
|
||||
|
||||
#ifndef SR030PC30_H
|
||||
#define SR030PC30_H
|
||||
|
||||
struct sr030pc30_platform_data {
|
||||
unsigned long clk_rate; /* master clock frequency in Hz */
|
||||
int (*set_power)(struct device *dev, int on);
|
||||
};
|
||||
|
||||
#endif /* SR030PC30_H */
|
||||
@@ -364,7 +364,7 @@ void media_device_unregister_entity(struct media_entity *entity);
|
||||
* media_entity_notify callbacks are invoked.
|
||||
*/
|
||||
|
||||
int __must_check media_device_register_entity_notify(struct media_device *mdev,
|
||||
void media_device_register_entity_notify(struct media_device *mdev,
|
||||
struct media_entity_notify *nptr);
|
||||
|
||||
/**
|
||||
@@ -444,11 +444,10 @@ static inline int media_device_register_entity(struct media_device *mdev,
|
||||
static inline void media_device_unregister_entity(struct media_entity *entity)
|
||||
{
|
||||
}
|
||||
static inline int media_device_register_entity_notify(
|
||||
static inline void media_device_register_entity_notify(
|
||||
struct media_device *mdev,
|
||||
struct media_entity_notify *nptr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void media_device_unregister_entity_notify(
|
||||
struct media_device *mdev,
|
||||
|
||||
@@ -225,6 +225,7 @@ struct rc_map *rc_map_get(const char *name);
|
||||
#define RC_MAP_AVERTV_303 "rc-avertv-303"
|
||||
#define RC_MAP_AZUREWAVE_AD_TU700 "rc-azurewave-ad-tu700"
|
||||
#define RC_MAP_BEELINK_GS1 "rc-beelink-gs1"
|
||||
#define RC_MAP_BEELINK_MXIII "rc-beelink-mxiii"
|
||||
#define RC_MAP_BEHOLD "rc-behold"
|
||||
#define RC_MAP_BEHOLD_COLUMBUS "rc-behold-columbus"
|
||||
#define RC_MAP_BUDGET_CI_OLD "rc-budget-ci-old"
|
||||
@@ -241,6 +242,7 @@ struct rc_map *rc_map_get(const char *name);
|
||||
#define RC_MAP_DM1105_NEC "rc-dm1105-nec"
|
||||
#define RC_MAP_DNTV_LIVE_DVB_T "rc-dntv-live-dvb-t"
|
||||
#define RC_MAP_DNTV_LIVE_DVBT_PRO "rc-dntv-live-dvbt-pro"
|
||||
#define RC_MAP_DREAMBOX "rc-dreambox"
|
||||
#define RC_MAP_DTT200U "rc-dtt200u"
|
||||
#define RC_MAP_DVBSKY "rc-dvbsky"
|
||||
#define RC_MAP_DVICO_MCE "rc-dvico-mce"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* eeproms.
|
||||
*/
|
||||
|
||||
#include <linux/if_ether.h>
|
||||
#include <uapi/linux/if_ether.h>
|
||||
|
||||
/**
|
||||
* enum tveeprom_audio_processor - Specifies the type of audio processor
|
||||
|
||||
@@ -1343,7 +1343,7 @@ void v4l2_ctrl_request_complete(struct media_request *req,
|
||||
* @parent: The parent control handler ('priv' in media_request_object_find())
|
||||
*
|
||||
* This function finds the control handler in the request. It may return
|
||||
* NULL if not found. When done, you must call v4l2_ctrl_request_put_hdl()
|
||||
* NULL if not found. When done, you must call v4l2_ctrl_request_hdl_put()
|
||||
* with the returned handler pointer.
|
||||
*
|
||||
* If the request is not in state VALIDATING or QUEUED, then this function
|
||||
|
||||
@@ -87,17 +87,17 @@ int v4l_vb2q_enable_media_source(struct vb2_queue *q);
|
||||
|
||||
/**
|
||||
* v4l2_create_fwnode_links_to_pad - Create fwnode-based links from a
|
||||
* source subdev to a sink subdev pad.
|
||||
* source subdev to a sink pad.
|
||||
*
|
||||
* @src_sd: pointer to a source subdev
|
||||
* @sink: pointer to a subdev sink pad
|
||||
* @sink: pointer to a sink pad
|
||||
* @flags: the link flags
|
||||
*
|
||||
* This function searches for fwnode endpoint connections from a source
|
||||
* subdevice to a single sink pad, and if suitable connections are found,
|
||||
* translates them into media links to that pad. The function can be
|
||||
* called by the sink subdevice, in its v4l2-async notifier subdev bound
|
||||
* callback, to create links from a bound source subdevice.
|
||||
* called by the sink, in its v4l2-async notifier bound callback, to create
|
||||
* links from a bound source subdevice.
|
||||
*
|
||||
* The @flags argument specifies the link flags. The caller shall ensure that
|
||||
* the flags are valid regardless of the number of links that may be created.
|
||||
|
||||
@@ -1125,6 +1125,7 @@ struct v4l2_subdev_fh {
|
||||
struct module *owner;
|
||||
#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
|
||||
struct v4l2_subdev_state *state;
|
||||
u64 client_caps;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -1642,24 +1643,46 @@ u64 v4l2_subdev_state_xlate_streams(const struct v4l2_subdev_state *state,
|
||||
* enum v4l2_subdev_routing_restriction - Subdevice internal routing restrictions
|
||||
*
|
||||
* @V4L2_SUBDEV_ROUTING_NO_1_TO_N:
|
||||
* an input stream may not be routed to multiple output streams (stream
|
||||
* an input stream shall not be routed to multiple output streams (stream
|
||||
* duplication)
|
||||
* @V4L2_SUBDEV_ROUTING_NO_N_TO_1:
|
||||
* multiple input streams may not be routed to the same output stream
|
||||
* multiple input streams shall not be routed to the same output stream
|
||||
* (stream merging)
|
||||
* @V4L2_SUBDEV_ROUTING_NO_STREAM_MIX:
|
||||
* streams on the same pad may not be routed to streams on different pads
|
||||
* @V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX:
|
||||
* all streams from a sink pad must be routed to a single source pad
|
||||
* @V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX:
|
||||
* all streams on a source pad must originate from a single sink pad
|
||||
* @V4L2_SUBDEV_ROUTING_NO_SOURCE_MULTIPLEXING:
|
||||
* source pads shall not contain multiplexed streams
|
||||
* @V4L2_SUBDEV_ROUTING_NO_SINK_MULTIPLEXING:
|
||||
* sink pads shall not contain multiplexed streams
|
||||
* @V4L2_SUBDEV_ROUTING_ONLY_1_TO_1:
|
||||
* only non-overlapping 1-to-1 stream routing is allowed (a combination of
|
||||
* @V4L2_SUBDEV_ROUTING_NO_1_TO_N and @V4L2_SUBDEV_ROUTING_NO_N_TO_1)
|
||||
* @V4L2_SUBDEV_ROUTING_NO_STREAM_MIX:
|
||||
* all streams from a sink pad must be routed to a single source pad, and
|
||||
* that source pad shall not get routes from any other sink pad
|
||||
* (a combination of @V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX and
|
||||
* @V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX)
|
||||
* @V4L2_SUBDEV_ROUTING_NO_MULTIPLEXING:
|
||||
* no multiplexed streams allowed on either source or sink sides.
|
||||
*/
|
||||
enum v4l2_subdev_routing_restriction {
|
||||
V4L2_SUBDEV_ROUTING_NO_1_TO_N = BIT(0),
|
||||
V4L2_SUBDEV_ROUTING_NO_N_TO_1 = BIT(1),
|
||||
V4L2_SUBDEV_ROUTING_NO_STREAM_MIX = BIT(2),
|
||||
V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX = BIT(2),
|
||||
V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX = BIT(3),
|
||||
V4L2_SUBDEV_ROUTING_NO_SINK_MULTIPLEXING = BIT(4),
|
||||
V4L2_SUBDEV_ROUTING_NO_SOURCE_MULTIPLEXING = BIT(5),
|
||||
V4L2_SUBDEV_ROUTING_ONLY_1_TO_1 =
|
||||
V4L2_SUBDEV_ROUTING_NO_1_TO_N |
|
||||
V4L2_SUBDEV_ROUTING_NO_N_TO_1,
|
||||
V4L2_SUBDEV_ROUTING_NO_STREAM_MIX =
|
||||
V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX |
|
||||
V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX,
|
||||
V4L2_SUBDEV_ROUTING_NO_MULTIPLEXING =
|
||||
V4L2_SUBDEV_ROUTING_NO_SINK_MULTIPLEXING |
|
||||
V4L2_SUBDEV_ROUTING_NO_SOURCE_MULTIPLEXING,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -233,6 +233,24 @@ struct v4l2_subdev_routing {
|
||||
__u32 reserved[6];
|
||||
};
|
||||
|
||||
/*
|
||||
* The client is aware of streams. Setting this flag enables the use of 'stream'
|
||||
* fields (referring to the stream number) with various ioctls. If this is not
|
||||
* set (which is the default), the 'stream' fields will be forced to 0 by the
|
||||
* kernel.
|
||||
*/
|
||||
#define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1U << 0)
|
||||
|
||||
/**
|
||||
* struct v4l2_subdev_client_capability - Capabilities of the client accessing
|
||||
* the subdev
|
||||
*
|
||||
* @capabilities: A bitmask of V4L2_SUBDEV_CLIENT_CAP_* flags.
|
||||
*/
|
||||
struct v4l2_subdev_client_capability {
|
||||
__u64 capabilities;
|
||||
};
|
||||
|
||||
/* Backwards compatibility define --- to be removed */
|
||||
#define v4l2_subdev_edid v4l2_edid
|
||||
|
||||
@@ -250,6 +268,9 @@ struct v4l2_subdev_routing {
|
||||
#define VIDIOC_SUBDEV_S_SELECTION _IOWR('V', 62, struct v4l2_subdev_selection)
|
||||
#define VIDIOC_SUBDEV_G_ROUTING _IOWR('V', 38, struct v4l2_subdev_routing)
|
||||
#define VIDIOC_SUBDEV_S_ROUTING _IOWR('V', 39, struct v4l2_subdev_routing)
|
||||
#define VIDIOC_SUBDEV_G_CLIENT_CAP _IOR('V', 101, struct v4l2_subdev_client_capability)
|
||||
#define VIDIOC_SUBDEV_S_CLIENT_CAP _IOWR('V', 102, struct v4l2_subdev_client_capability)
|
||||
|
||||
/* The following ioctls are identical to the ioctls in videodev2.h */
|
||||
#define VIDIOC_SUBDEV_G_STD _IOR('V', 23, v4l2_std_id)
|
||||
#define VIDIOC_SUBDEV_S_STD _IOW('V', 24, v4l2_std_id)
|
||||
|
||||
@@ -580,12 +580,17 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_RGBA1010102 v4l2_fourcc('R', 'A', '3', '0') /* 32 RGBA-10-10-10-2 */
|
||||
#define V4L2_PIX_FMT_ARGB2101010 v4l2_fourcc('A', 'R', '3', '0') /* 32 ARGB-2-10-10-10 */
|
||||
|
||||
/* RGB formats (6 or 8 bytes per pixel) */
|
||||
#define V4L2_PIX_FMT_BGR48_12 v4l2_fourcc('B', '3', '1', '2') /* 48 BGR 12-bit per component */
|
||||
#define V4L2_PIX_FMT_ABGR64_12 v4l2_fourcc('B', '4', '1', '2') /* 64 BGRA 12-bit per component */
|
||||
|
||||
/* Grey formats */
|
||||
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y012 v4l2_fourcc('Y', '0', '1', '2') /* 12 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */
|
||||
@@ -620,6 +625,7 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A') /* 32 YUVA-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X') /* 32 YUVX-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
|
||||
#define V4L2_PIX_FMT_YUV48_12 v4l2_fourcc('Y', '3', '1', '2') /* 48 YUV 4:4:4 12-bit per component */
|
||||
|
||||
/*
|
||||
* YCbCr packed format. For each Y2xx format, xx bits of valid data occupy the MSBs
|
||||
@@ -637,12 +643,14 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
||||
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
||||
#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */
|
||||
#define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
|
||||
|
||||
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
||||
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
||||
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
||||
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||
#define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
|
||||
|
||||
/* three planes - Y Cb, Cr */
|
||||
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
||||
@@ -750,6 +758,9 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
|
||||
#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
|
||||
#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
|
||||
#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
|
||||
#define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
|
||||
#define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */
|
||||
|
||||
/* Vendor-specific formats */
|
||||
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
||||
@@ -1224,8 +1235,10 @@ struct v4l2_framebuffer {
|
||||
/* Flags for the 'capability' field. Read only */
|
||||
#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
|
||||
#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
|
||||
#ifndef __KERNEL__
|
||||
#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
|
||||
#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
|
||||
#endif
|
||||
#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
|
||||
#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
|
||||
#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
|
||||
|
||||
Reference in New Issue
Block a user