* [PATCH 0/6] add device_caps support to querycap
@ 2014-11-24 9:37 Hans Verkuil
2014-11-24 9:37 ` [PATCH 1/6] cx18: add device_caps support Hans Verkuil
` (5 more replies)
0 siblings, 6 replies; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media
This patch series adds missing device_caps support to the VIDIOC_QUERYCAP
implementations of drivers that are missing this.
After this series there are still 6 drivers left to do, but those need a
bit more thought.
Regards,
Hans
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/6] cx18: add device_caps support
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
@ 2014-11-24 9:37 ` Hans Verkuil
2014-11-24 9:37 ` [PATCH 2/6] staging/media: fix querycap Hans Verkuil
` (4 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil, Andy Walls
From: Hans Verkuil <hans.verkuil@cisco.com>
This was missing in this driver, so add this functionality.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Andy Walls <awalls@md.metrocast.net>
---
drivers/media/pci/cx18/cx18-cards.h | 3 ++-
drivers/media/pci/cx18/cx18-driver.h | 1 +
drivers/media/pci/cx18/cx18-ioctl.c | 7 ++++---
drivers/media/pci/cx18/cx18-streams.c | 9 +++++++++
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/drivers/media/pci/cx18/cx18-cards.h b/drivers/media/pci/cx18/cx18-cards.h
index add7391..f6b921f 100644
--- a/drivers/media/pci/cx18/cx18-cards.h
+++ b/drivers/media/pci/cx18/cx18-cards.h
@@ -57,7 +57,8 @@
/* V4L2 capability aliases */
#define CX18_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \
V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | \
- V4L2_CAP_VBI_CAPTURE | V4L2_CAP_SLICED_VBI_CAPTURE)
+ V4L2_CAP_STREAMING | V4L2_CAP_VBI_CAPTURE | \
+ V4L2_CAP_SLICED_VBI_CAPTURE)
struct cx18_card_video_input {
u8 video_type; /* video input type */
diff --git a/drivers/media/pci/cx18/cx18-driver.h b/drivers/media/pci/cx18/cx18-driver.h
index 57f4688..dcfd7a1 100644
--- a/drivers/media/pci/cx18/cx18-driver.h
+++ b/drivers/media/pci/cx18/cx18-driver.h
@@ -379,6 +379,7 @@ struct cx18_stream {
const char *name; /* name of the stream */
int type; /* stream type */
u32 handle; /* task handle */
+ u32 v4l2_dev_caps; /* device capabilities */
unsigned int mdl_base_idx;
u32 id;
diff --git a/drivers/media/pci/cx18/cx18-ioctl.c b/drivers/media/pci/cx18/cx18-ioctl.c
index 71963db..b8e4b68 100644
--- a/drivers/media/pci/cx18/cx18-ioctl.c
+++ b/drivers/media/pci/cx18/cx18-ioctl.c
@@ -393,15 +393,16 @@ static int cx18_querycap(struct file *file, void *fh,
struct v4l2_capability *vcap)
{
struct cx18_open_id *id = fh2id(fh);
+ struct cx18_stream *s = video_drvdata(file);
struct cx18 *cx = id->cx;
strlcpy(vcap->driver, CX18_DRIVER_NAME, sizeof(vcap->driver));
strlcpy(vcap->card, cx->card_name, sizeof(vcap->card));
snprintf(vcap->bus_info, sizeof(vcap->bus_info),
"PCI:%s", pci_name(cx->pci_dev));
- vcap->capabilities = cx->v4l2_cap; /* capabilities */
- if (id->type == CX18_ENC_STREAM_TYPE_YUV)
- vcap->capabilities |= V4L2_CAP_STREAMING;
+ vcap->capabilities = cx->v4l2_cap; /* capabilities */
+ vcap->device_caps = s->v4l2_dev_caps; /* device capabilities */
+ vcap->capabilities |= V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/pci/cx18/cx18-streams.c b/drivers/media/pci/cx18/cx18-streams.c
index f3541b5..369445f 100644
--- a/drivers/media/pci/cx18/cx18-streams.c
+++ b/drivers/media/pci/cx18/cx18-streams.c
@@ -58,11 +58,14 @@ static struct {
int vfl_type;
int num_offset;
int dma;
+ u32 caps;
} cx18_stream_info[] = {
{ /* CX18_ENC_STREAM_TYPE_MPG */
"encoder MPEG",
VFL_TYPE_GRABBER, 0,
PCI_DMA_FROMDEVICE,
+ V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
+ V4L2_CAP_AUDIO | V4L2_CAP_TUNER
},
{ /* CX18_ENC_STREAM_TYPE_TS */
"TS",
@@ -73,11 +76,15 @@ static struct {
"encoder YUV",
VFL_TYPE_GRABBER, CX18_V4L2_ENC_YUV_OFFSET,
PCI_DMA_FROMDEVICE,
+ V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
+ V4L2_CAP_STREAMING | V4L2_CAP_AUDIO | V4L2_CAP_TUNER
},
{ /* CX18_ENC_STREAM_TYPE_VBI */
"encoder VBI",
VFL_TYPE_VBI, 0,
PCI_DMA_FROMDEVICE,
+ V4L2_CAP_VBI_CAPTURE | V4L2_CAP_SLICED_VBI_CAPTURE |
+ V4L2_CAP_READWRITE | V4L2_CAP_TUNER
},
{ /* CX18_ENC_STREAM_TYPE_PCM */
"encoder PCM audio",
@@ -93,6 +100,7 @@ static struct {
"encoder radio",
VFL_TYPE_RADIO, 0,
PCI_DMA_NONE,
+ V4L2_CAP_RADIO | V4L2_CAP_TUNER
},
};
@@ -260,6 +268,7 @@ static void cx18_stream_init(struct cx18 *cx, int type)
s->handle = CX18_INVALID_TASK_HANDLE;
s->dma = cx18_stream_info[type].dma;
+ s->v4l2_dev_caps = cx18_stream_info[type].caps;
s->buffers = cx->stream_buffers[type];
s->buf_size = cx->stream_buf_size[type];
INIT_LIST_HEAD(&s->buf_pool);
--
2.1.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/6] staging/media: fix querycap
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
2014-11-24 9:37 ` [PATCH 1/6] cx18: add device_caps support Hans Verkuil
@ 2014-11-24 9:37 ` Hans Verkuil
2014-11-25 10:59 ` Prabhakar Lad
2014-11-24 9:37 ` [PATCH 3/6] media/usb,pci: " Hans Verkuil
` (3 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil, Lad, Prabhakar
From: Hans Verkuil <hans.verkuil@cisco.com>
Querycap shouldn't set the version field (the core does that for you),
but it should set the device_caps field.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
drivers/staging/media/bcm2048/radio-bcm2048.c | 5 +++--
drivers/staging/media/davinci_vpfe/vpfe_video.c | 8 ++++----
drivers/staging/media/dt3155v4l/dt3155v4l.c | 5 ++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/staging/media/bcm2048/radio-bcm2048.c b/drivers/staging/media/bcm2048/radio-bcm2048.c
index bdc6854..60a57b2 100644
--- a/drivers/staging/media/bcm2048/radio-bcm2048.c
+++ b/drivers/staging/media/bcm2048/radio-bcm2048.c
@@ -2327,9 +2327,10 @@ static int bcm2048_vidioc_querycap(struct file *file, void *priv,
strlcpy(capability->card, BCM2048_DRIVER_CARD,
sizeof(capability->card));
snprintf(capability->bus_info, 32, "I2C: 0x%X", bdev->client->addr);
- capability->version = BCM2048_DRIVER_VERSION;
- capability->capabilities = V4L2_CAP_TUNER | V4L2_CAP_RADIO |
+ capability->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO |
V4L2_CAP_HW_FREQ_SEEK;
+ capability->capabilities = capability->device_caps |
+ V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c b/drivers/staging/media/davinci_vpfe/vpfe_video.c
index 6f9171c..06d48d5 100644
--- a/drivers/staging/media/davinci_vpfe/vpfe_video.c
+++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c
@@ -600,11 +600,11 @@ static int vpfe_querycap(struct file *file, void *priv,
v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querycap\n");
if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
else
- cap->capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
- cap->device_caps = cap->capabilities;
- cap->version = VPFE_CAPTURE_VERSION_CODE;
+ cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
+ cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
+ V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
diff --git a/drivers/staging/media/dt3155v4l/dt3155v4l.c b/drivers/staging/media/dt3155v4l/dt3155v4l.c
index 4058022..293ffda 100644
--- a/drivers/staging/media/dt3155v4l/dt3155v4l.c
+++ b/drivers/staging/media/dt3155v4l/dt3155v4l.c
@@ -512,10 +512,9 @@ dt3155_ioc_querycap(struct file *filp, void *p, struct v4l2_capability *cap)
strcpy(cap->driver, DT3155_NAME);
strcpy(cap->card, DT3155_NAME " frame grabber");
sprintf(cap->bus_info, "PCI:%s", pci_name(pd->pdev));
- cap->version =
- KERNEL_VERSION(DT3155_VER_MAJ, DT3155_VER_MIN, DT3155_VER_EXT);
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
DT3155_CAPTURE_METHOD;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
--
2.1.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/6] media/usb,pci: fix querycap
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
2014-11-24 9:37 ` [PATCH 1/6] cx18: add device_caps support Hans Verkuil
2014-11-24 9:37 ` [PATCH 2/6] staging/media: fix querycap Hans Verkuil
@ 2014-11-24 9:37 ` Hans Verkuil
2014-11-24 9:37 ` [PATCH 4/6] media/radio: " Hans Verkuil
` (2 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
Querycap shouldn't set the version field (the core does that for you),
but it should set the device_caps field.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/meye/meye.c | 3 ---
drivers/media/pci/zoran/zoran_driver.c | 5 +++--
drivers/media/usb/usbvision/usbvision-video.c | 3 ++-
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/media/pci/meye/meye.c b/drivers/media/pci/meye/meye.c
index aeae547..9d9f90c 100644
--- a/drivers/media/pci/meye/meye.c
+++ b/drivers/media/pci/meye/meye.c
@@ -1031,9 +1031,6 @@ static int vidioc_querycap(struct file *file, void *fh,
strcpy(cap->card, "meye");
sprintf(cap->bus_info, "PCI:%s", pci_name(meye.mchip_dev));
- cap->version = (MEYE_DRIVER_MAJORVERSION << 8) +
- MEYE_DRIVER_MINORVERSION;
-
cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_STREAMING;
cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
diff --git a/drivers/media/pci/zoran/zoran_driver.c b/drivers/media/pci/zoran/zoran_driver.c
index 099d5fb..2b25d31 100644
--- a/drivers/media/pci/zoran/zoran_driver.c
+++ b/drivers/media/pci/zoran/zoran_driver.c
@@ -1528,8 +1528,9 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability
strncpy(cap->driver, "zoran", sizeof(cap->driver)-1);
snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
pci_name(zr->pci_dev));
- cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
- V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OVERLAY;
+ cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
+ V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OVERLAY;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/usb/usbvision/usbvision-video.c b/drivers/media/usb/usbvision/usbvision-video.c
index 9bfa041..693d5f4 100644
--- a/drivers/media/usb/usbvision/usbvision-video.c
+++ b/drivers/media/usb/usbvision/usbvision-video.c
@@ -509,11 +509,12 @@ static int vidioc_querycap(struct file *file, void *priv,
usbvision_device_data[usbvision->dev_model].model_string,
sizeof(vc->card));
usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
- vc->capabilities = V4L2_CAP_VIDEO_CAPTURE |
+ vc->device_caps = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_AUDIO |
V4L2_CAP_READWRITE |
V4L2_CAP_STREAMING |
(usbvision->have_tuner ? V4L2_CAP_TUNER : 0);
+ vc->capabilities = vc->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
--
2.1.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/6] media/radio: fix querycap
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
` (2 preceding siblings ...)
2014-11-24 9:37 ` [PATCH 3/6] media/usb,pci: " Hans Verkuil
@ 2014-11-24 9:37 ` Hans Verkuil
2014-11-24 9:37 ` [PATCH 5/6] media/platform: " Hans Verkuil
2014-11-24 9:37 ` [PATCH 6/6] " Hans Verkuil
5 siblings, 0 replies; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
Querycap should set the device_caps field.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/radio/radio-wl1273.c | 4 +++-
drivers/media/radio/wl128x/fmdrv_v4l2.c | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/media/radio/radio-wl1273.c b/drivers/media/radio/radio-wl1273.c
index 9cf6731..284f789 100644
--- a/drivers/media/radio/radio-wl1273.c
+++ b/drivers/media/radio/radio-wl1273.c
@@ -1279,10 +1279,12 @@ static int wl1273_fm_vidioc_querycap(struct file *file, void *priv,
strlcpy(capability->bus_info, radio->bus_type,
sizeof(capability->bus_info));
- capability->capabilities = V4L2_CAP_HW_FREQ_SEEK |
+ capability->device_caps = V4L2_CAP_HW_FREQ_SEEK |
V4L2_CAP_TUNER | V4L2_CAP_RADIO | V4L2_CAP_AUDIO |
V4L2_CAP_RDS_CAPTURE | V4L2_CAP_MODULATOR |
V4L2_CAP_RDS_OUTPUT;
+ capability->capabilities = capability->device_caps |
+ V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/radio/wl128x/fmdrv_v4l2.c b/drivers/media/radio/wl128x/fmdrv_v4l2.c
index b55012c..a5bd3f6 100644
--- a/drivers/media/radio/wl128x/fmdrv_v4l2.c
+++ b/drivers/media/radio/wl128x/fmdrv_v4l2.c
@@ -198,10 +198,12 @@ static int fm_v4l2_vidioc_querycap(struct file *file, void *priv,
strlcpy(capability->card, FM_DRV_CARD_SHORT_NAME,
sizeof(capability->card));
sprintf(capability->bus_info, "UART");
- capability->capabilities = V4L2_CAP_HW_FREQ_SEEK | V4L2_CAP_TUNER |
+ capability->device_caps = V4L2_CAP_HW_FREQ_SEEK | V4L2_CAP_TUNER |
V4L2_CAP_RADIO | V4L2_CAP_MODULATOR |
V4L2_CAP_AUDIO | V4L2_CAP_READWRITE |
V4L2_CAP_RDS_CAPTURE;
+ capability->capabilities = capability->device_caps |
+ V4L2_CAP_DEVICE_CAPS;
return 0;
}
--
2.1.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/6] media/platform: fix querycap
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
` (3 preceding siblings ...)
2014-11-24 9:37 ` [PATCH 4/6] media/radio: " Hans Verkuil
@ 2014-11-24 9:37 ` Hans Verkuil
2014-11-24 9:37 ` [PATCH 6/6] " Hans Verkuil
5 siblings, 0 replies; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media
Cc: Hans Verkuil, Scott Jiang, Gerhard Sittig, Jonathan Corbet,
Guennadi Liakhovetski
From: Hans Verkuil <hans.verkuil@cisco.com>
Querycap shouldn't set the version field (the core does that for you),
but it should set the device_caps field.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Scott Jiang <scott.jiang.linux@gmail.com>
Cc: Gerhard Sittig <gsi@denx.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
drivers/media/platform/blackfin/bfin_capture.c | 3 ++-
drivers/media/platform/fsl-viu.c | 3 ++-
drivers/media/platform/marvell-ccic/mcam-core.c | 4 ++--
drivers/media/platform/mx2_emmaprp.c | 9 ++-------
drivers/media/platform/omap/omap_vout.c | 3 ++-
drivers/media/platform/sh_vou.c | 3 ++-
drivers/media/platform/via-camera.c | 4 ++--
drivers/media/platform/vino.c | 6 ++----
8 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index b3345b3..431c33d 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -841,7 +841,8 @@ static int bcap_querycap(struct file *file, void *priv,
{
struct bcap_device *bcap_dev = video_drvdata(file);
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
strlcpy(cap->bus_info, "Blackfin Platform", sizeof(cap->bus_info));
strlcpy(cap->card, bcap_dev->cfg->card_name, sizeof(cap->card));
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index d5dc198..8afee3c 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -604,10 +604,11 @@ static int vidioc_querycap(struct file *file, void *priv,
{
strcpy(cap->driver, "viu");
strcpy(cap->card, "viu");
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_STREAMING |
V4L2_CAP_VIDEO_OVERLAY |
V4L2_CAP_READWRITE;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c
index f0eeb6c..5ef9579 100644
--- a/drivers/media/platform/marvell-ccic/mcam-core.c
+++ b/drivers/media/platform/marvell-ccic/mcam-core.c
@@ -1413,9 +1413,9 @@ static int mcam_vidioc_querycap(struct file *file, void *priv,
{
strcpy(cap->driver, "marvell_ccic");
strcpy(cap->card, "marvell_ccic");
- cap->version = 1;
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/mx2_emmaprp.c b/drivers/media/platform/mx2_emmaprp.c
index 4971ff2..f923d1b 100644
--- a/drivers/media/platform/mx2_emmaprp.c
+++ b/drivers/media/platform/mx2_emmaprp.c
@@ -402,13 +402,8 @@ static int vidioc_querycap(struct file *file, void *priv,
{
strncpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver) - 1);
strncpy(cap->card, MEM2MEM_NAME, sizeof(cap->card) - 1);
- /*
- * This is only a mem-to-mem video device. The capture and output
- * device capability flags are left only for backward compatibility
- * and are scheduled for removal.
- */
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
- V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
+ cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c
index 64ab6fb..d39e2b4 100644
--- a/drivers/media/platform/omap/omap_vout.c
+++ b/drivers/media/platform/omap/omap_vout.c
@@ -1054,8 +1054,9 @@ static int vidioc_querycap(struct file *file, void *fh,
strlcpy(cap->driver, VOUT_NAME, sizeof(cap->driver));
strlcpy(cap->card, vout->vfd->name, sizeof(cap->card));
cap->bus_info[0] = '\0';
- cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_OUTPUT |
+ cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_OUTPUT |
V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/sh_vou.c b/drivers/media/platform/sh_vou.c
index 0476696..154ef0b 100644
--- a/drivers/media/platform/sh_vou.c
+++ b/drivers/media/platform/sh_vou.c
@@ -396,7 +396,8 @@ static int sh_vou_querycap(struct file *file, void *priv,
dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
strlcpy(cap->card, "SuperH VOU", sizeof(cap->card));
- cap->capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
+ cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/via-camera.c b/drivers/media/platform/via-camera.c
index 2616483..86989d8 100644
--- a/drivers/media/platform/via-camera.c
+++ b/drivers/media/platform/via-camera.c
@@ -985,9 +985,9 @@ static int viacam_querycap(struct file *filp, void *priv,
{
strcpy(cap->driver, "via-camera");
strcpy(cap->card, "via-camera");
- cap->version = 1;
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/vino.c b/drivers/media/platform/vino.c
index 91d44ea1..2c85357 100644
--- a/drivers/media/platform/vino.c
+++ b/drivers/media/platform/vino.c
@@ -2932,10 +2932,8 @@ static int vino_querycap(struct file *file, void *__fh,
strcpy(cap->driver, vino_driver_name);
strcpy(cap->card, vino_driver_description);
strcpy(cap->bus_info, vino_bus_name);
- cap->capabilities =
- V4L2_CAP_VIDEO_CAPTURE |
- V4L2_CAP_STREAMING;
- // V4L2_CAP_OVERLAY, V4L2_CAP_READWRITE
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
--
2.1.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/6] media/platform: fix querycap
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
` (4 preceding siblings ...)
2014-11-24 9:37 ` [PATCH 5/6] media/platform: " Hans Verkuil
@ 2014-11-24 9:37 ` Hans Verkuil
2014-11-25 10:53 ` Kamil Debski
` (2 more replies)
5 siblings, 3 replies; 11+ messages in thread
From: Hans Verkuil @ 2014-11-24 9:37 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil, Lad, Prabhakar, Kamil Debski, Jacek Anaszewski
From: Hans Verkuil <hans.verkuil@cisco.com>
Querycap shouldn't set the version field (the core does that for you),
but it should set the device_caps field.
In addition, remove the CAPTURE and OUTPUT caps for M2M devices. These
were already slated for removal, so it's time to do so.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Cc: Kamil Debski <k.debski@samsung.com>
Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
---
drivers/media/platform/davinci/vpbe_display.c | 1 -
drivers/media/platform/davinci/vpfe_capture.c | 4 ++--
drivers/media/platform/s5p-g2d/g2d.c | 10 ++--------
drivers/media/platform/s5p-jpeg/jpeg-core.c | 9 ++-------
drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 6 ++----
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 6 ++----
6 files changed, 10 insertions(+), 26 deletions(-)
diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
index 78b9ffe..21a5a56 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -639,7 +639,6 @@ static int vpbe_display_querycap(struct file *file, void *priv,
struct vpbe_layer *layer = video_drvdata(file);
struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev;
- cap->version = VPBE_DISPLAY_VERSION_CODE;
cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
snprintf(cap->driver, sizeof(cap->driver), "%s",
diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
index 3d0e3ae..271c460 100644
--- a/drivers/media/platform/davinci/vpfe_capture.c
+++ b/drivers/media/platform/davinci/vpfe_capture.c
@@ -930,8 +930,8 @@ static int vpfe_querycap(struct file *file, void *priv,
v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querycap\n");
- cap->version = VPFE_CAPTURE_VERSION_CODE;
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+ cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c
index d79e214..51e4edc 100644
--- a/drivers/media/platform/s5p-g2d/g2d.c
+++ b/drivers/media/platform/s5p-g2d/g2d.c
@@ -297,14 +297,8 @@ static int vidioc_querycap(struct file *file, void *priv,
strncpy(cap->driver, G2D_NAME, sizeof(cap->driver) - 1);
strncpy(cap->card, G2D_NAME, sizeof(cap->card) - 1);
cap->bus_info[0] = 0;
- cap->version = KERNEL_VERSION(1, 0, 0);
- /*
- * This is only a mem-to-mem video device. The capture and output
- * device capability flags are left only for backward compatibility
- * and are scheduled for removal.
- */
- cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
- V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
+ cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c
index 6fcc7f0..d6f75b1 100644
--- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
+++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
@@ -1001,13 +1001,8 @@ static int s5p_jpeg_querycap(struct file *file, void *priv,
sizeof(cap->card));
}
cap->bus_info[0] = 0;
- /*
- * This is only a mem-to-mem video device. The capture and output
- * device capability flags are left only for backward compatibility
- * and are scheduled for removal.
- */
- cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M |
- V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT;
+ cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
index 74bcec8..c6c3452 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
@@ -269,15 +269,13 @@ static int vidioc_querycap(struct file *file, void *priv,
strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
cap->bus_info[0] = 0;
- cap->version = KERNEL_VERSION(1, 0, 0);
/*
* This is only a mem-to-mem video device. The capture and output
* device capability flags are left only for backward compatibility
* and are scheduled for removal.
*/
- cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING |
- V4L2_CAP_VIDEO_CAPTURE_MPLANE |
- V4L2_CAP_VIDEO_OUTPUT_MPLANE;
+ cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
index e7240cb..bd64f1d 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
@@ -947,15 +947,13 @@ static int vidioc_querycap(struct file *file, void *priv,
strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
cap->bus_info[0] = 0;
- cap->version = KERNEL_VERSION(1, 0, 0);
/*
* This is only a mem-to-mem video device. The capture and output
* device capability flags are left only for backward compatibility
* and are scheduled for removal.
*/
- cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING |
- V4L2_CAP_VIDEO_CAPTURE_MPLANE |
- V4L2_CAP_VIDEO_OUTPUT_MPLANE;
+ cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
+ cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
return 0;
}
--
2.1.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH 6/6] media/platform: fix querycap
2014-11-24 9:37 ` [PATCH 6/6] " Hans Verkuil
@ 2014-11-25 10:53 ` Kamil Debski
2014-11-25 10:58 ` Prabhakar Lad
2014-11-25 12:00 ` Jacek Anaszewski
2 siblings, 0 replies; 11+ messages in thread
From: Kamil Debski @ 2014-11-25 10:53 UTC (permalink / raw)
To: 'Hans Verkuil', linux-media
Cc: 'Hans Verkuil', 'Lad, Prabhakar',
Jacek Anaszewski
Hi Hans,
Thanks for this patch. Looks good.
Best regards,
Kamil
> From: Hans Verkuil [mailto:hverkuil@xs4all.nl]
> Sent: Monday, November 24, 2014 10:37 AM
> To: linux-media@vger.kernel.org
> Cc: Hans Verkuil; Lad, Prabhakar; Kamil Debski; Jacek Anaszewski
> Subject: [PATCH 6/6] media/platform: fix querycap
>
> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> Querycap shouldn't set the version field (the core does that for you),
> but it should set the device_caps field.
>
> In addition, remove the CAPTURE and OUTPUT caps for M2M devices. These
> were already slated for removal, so it's time to do so.
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> Cc: Kamil Debski <k.debski@samsung.com>
> Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
Acked-by: Kamil Debski <k.debski@samsung.com>
> ---
> drivers/media/platform/davinci/vpbe_display.c | 1 -
> drivers/media/platform/davinci/vpfe_capture.c | 4 ++--
> drivers/media/platform/s5p-g2d/g2d.c | 10 ++--------
> drivers/media/platform/s5p-jpeg/jpeg-core.c | 9 ++-------
> drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 6 ++----
> drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 6 ++----
> 6 files changed, 10 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/media/platform/davinci/vpbe_display.c
> b/drivers/media/platform/davinci/vpbe_display.c
> index 78b9ffe..21a5a56 100644
> --- a/drivers/media/platform/davinci/vpbe_display.c
> +++ b/drivers/media/platform/davinci/vpbe_display.c
> @@ -639,7 +639,6 @@ static int vpbe_display_querycap(struct file *file,
> void *priv,
> struct vpbe_layer *layer = video_drvdata(file);
> struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev;
>
> - cap->version = VPBE_DISPLAY_VERSION_CODE;
> cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
> cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> snprintf(cap->driver, sizeof(cap->driver), "%s", diff --git
> a/drivers/media/platform/davinci/vpfe_capture.c
> b/drivers/media/platform/davinci/vpfe_capture.c
> index 3d0e3ae..271c460 100644
> --- a/drivers/media/platform/davinci/vpfe_capture.c
> +++ b/drivers/media/platform/davinci/vpfe_capture.c
> @@ -930,8 +930,8 @@ static int vpfe_querycap(struct file *file, void
> *priv,
>
> v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querycap\n");
>
> - cap->version = VPFE_CAPTURE_VERSION_CODE;
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
> strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
> strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
> diff --git a/drivers/media/platform/s5p-g2d/g2d.c
> b/drivers/media/platform/s5p-g2d/g2d.c
> index d79e214..51e4edc 100644
> --- a/drivers/media/platform/s5p-g2d/g2d.c
> +++ b/drivers/media/platform/s5p-g2d/g2d.c
> @@ -297,14 +297,8 @@ static int vidioc_querycap(struct file *file, void
> *priv,
> strncpy(cap->driver, G2D_NAME, sizeof(cap->driver) - 1);
> strncpy(cap->card, G2D_NAME, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> - /*
> - * This is only a mem-to-mem video device. The capture and output
> - * device capability flags are left only for backward
> compatibility
> - * and are scheduled for removal.
> - */
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_VIDEO_OUTPUT |
> - V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c
> b/drivers/media/platform/s5p-jpeg/jpeg-core.c
> index 6fcc7f0..d6f75b1 100644
> --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
> +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
> @@ -1001,13 +1001,8 @@ static int s5p_jpeg_querycap(struct file *file,
> void *priv,
> sizeof(cap->card));
> }
> cap->bus_info[0] = 0;
> - /*
> - * This is only a mem-to-mem video device. The capture and output
> - * device capability flags are left only for backward
> compatibility
> - * and are scheduled for removal.
> - */
> - cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M |
> - V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT;
> + cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> index 74bcec8..c6c3452 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> @@ -269,15 +269,13 @@ static int vidioc_querycap(struct file *file,
> void *priv,
> strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) -
> 1);
> strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> /*
> * This is only a mem-to-mem video device. The capture and output
> * device capability flags are left only for backward
> compatibility
> * and are scheduled for removal.
> */
> - cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE |
> V4L2_CAP_STREAMING |
> - V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_VIDEO_OUTPUT_MPLANE;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index e7240cb..bd64f1d 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -947,15 +947,13 @@ static int vidioc_querycap(struct file *file,
> void *priv,
> strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) -
> 1);
> strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> /*
> * This is only a mem-to-mem video device. The capture and output
> * device capability flags are left only for backward
> compatibility
> * and are scheduled for removal.
> */
> - cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE |
> V4L2_CAP_STREAMING |
> - V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_VIDEO_OUTPUT_MPLANE;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> --
> 2.1.3
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 6/6] media/platform: fix querycap
2014-11-24 9:37 ` [PATCH 6/6] " Hans Verkuil
2014-11-25 10:53 ` Kamil Debski
@ 2014-11-25 10:58 ` Prabhakar Lad
2014-11-25 12:00 ` Jacek Anaszewski
2 siblings, 0 replies; 11+ messages in thread
From: Prabhakar Lad @ 2014-11-25 10:58 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, Hans Verkuil, Kamil Debski, Jacek Anaszewski
Hi Hans,
Thanks for the patch.
On Mon, Nov 24, 2014 at 9:37 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> Querycap shouldn't set the version field (the core does that for you),
> but it should set the device_caps field.
>
> In addition, remove the CAPTURE and OUTPUT caps for M2M devices. These
> were already slated for removal, so it's time to do so.
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> Cc: Kamil Debski <k.debski@samsung.com>
> Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
> ---
Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Regards,
--Prabhakar Lad
> drivers/media/platform/davinci/vpbe_display.c | 1 -
> drivers/media/platform/davinci/vpfe_capture.c | 4 ++--
> drivers/media/platform/s5p-g2d/g2d.c | 10 ++--------
> drivers/media/platform/s5p-jpeg/jpeg-core.c | 9 ++-------
> drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 6 ++----
> drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 6 ++----
> 6 files changed, 10 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
> index 78b9ffe..21a5a56 100644
> --- a/drivers/media/platform/davinci/vpbe_display.c
> +++ b/drivers/media/platform/davinci/vpbe_display.c
> @@ -639,7 +639,6 @@ static int vpbe_display_querycap(struct file *file, void *priv,
> struct vpbe_layer *layer = video_drvdata(file);
> struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev;
>
> - cap->version = VPBE_DISPLAY_VERSION_CODE;
> cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
> cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> snprintf(cap->driver, sizeof(cap->driver), "%s",
> diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
> index 3d0e3ae..271c460 100644
> --- a/drivers/media/platform/davinci/vpfe_capture.c
> +++ b/drivers/media/platform/davinci/vpfe_capture.c
> @@ -930,8 +930,8 @@ static int vpfe_querycap(struct file *file, void *priv,
>
> v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querycap\n");
>
> - cap->version = VPFE_CAPTURE_VERSION_CODE;
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
> strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
> strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
> diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c
> index d79e214..51e4edc 100644
> --- a/drivers/media/platform/s5p-g2d/g2d.c
> +++ b/drivers/media/platform/s5p-g2d/g2d.c
> @@ -297,14 +297,8 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, G2D_NAME, sizeof(cap->driver) - 1);
> strncpy(cap->card, G2D_NAME, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> - /*
> - * This is only a mem-to-mem video device. The capture and output
> - * device capability flags are left only for backward compatibility
> - * and are scheduled for removal.
> - */
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
> - V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c
> index 6fcc7f0..d6f75b1 100644
> --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
> +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
> @@ -1001,13 +1001,8 @@ static int s5p_jpeg_querycap(struct file *file, void *priv,
> sizeof(cap->card));
> }
> cap->bus_info[0] = 0;
> - /*
> - * This is only a mem-to-mem video device. The capture and output
> - * device capability flags are left only for backward compatibility
> - * and are scheduled for removal.
> - */
> - cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M |
> - V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT;
> + cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> index 74bcec8..c6c3452 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> @@ -269,15 +269,13 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
> strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> /*
> * This is only a mem-to-mem video device. The capture and output
> * device capability flags are left only for backward compatibility
> * and are scheduled for removal.
> */
> - cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING |
> - V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_VIDEO_OUTPUT_MPLANE;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index e7240cb..bd64f1d 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -947,15 +947,13 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
> strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> /*
> * This is only a mem-to-mem video device. The capture and output
> * device capability flags are left only for backward compatibility
> * and are scheduled for removal.
> */
> - cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING |
> - V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_VIDEO_OUTPUT_MPLANE;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> --
> 2.1.3
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/6] staging/media: fix querycap
2014-11-24 9:37 ` [PATCH 2/6] staging/media: fix querycap Hans Verkuil
@ 2014-11-25 10:59 ` Prabhakar Lad
0 siblings, 0 replies; 11+ messages in thread
From: Prabhakar Lad @ 2014-11-25 10:59 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, Hans Verkuil
Hi Hans,
Thanks for the patch.
On Mon, Nov 24, 2014 at 9:37 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> Querycap shouldn't set the version field (the core does that for you),
> but it should set the device_caps field.
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Regards,
--Prabhakar Lad
> ---
> drivers/staging/media/bcm2048/radio-bcm2048.c | 5 +++--
> drivers/staging/media/davinci_vpfe/vpfe_video.c | 8 ++++----
> drivers/staging/media/dt3155v4l/dt3155v4l.c | 5 ++---
> 3 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/staging/media/bcm2048/radio-bcm2048.c b/drivers/staging/media/bcm2048/radio-bcm2048.c
> index bdc6854..60a57b2 100644
> --- a/drivers/staging/media/bcm2048/radio-bcm2048.c
> +++ b/drivers/staging/media/bcm2048/radio-bcm2048.c
> @@ -2327,9 +2327,10 @@ static int bcm2048_vidioc_querycap(struct file *file, void *priv,
> strlcpy(capability->card, BCM2048_DRIVER_CARD,
> sizeof(capability->card));
> snprintf(capability->bus_info, 32, "I2C: 0x%X", bdev->client->addr);
> - capability->version = BCM2048_DRIVER_VERSION;
> - capability->capabilities = V4L2_CAP_TUNER | V4L2_CAP_RADIO |
> + capability->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO |
> V4L2_CAP_HW_FREQ_SEEK;
> + capability->capabilities = capability->device_caps |
> + V4L2_CAP_DEVICE_CAPS;
>
> return 0;
> }
> diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c b/drivers/staging/media/davinci_vpfe/vpfe_video.c
> index 6f9171c..06d48d5 100644
> --- a/drivers/staging/media/davinci_vpfe/vpfe_video.c
> +++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c
> @@ -600,11 +600,11 @@ static int vpfe_querycap(struct file *file, void *priv,
> v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querycap\n");
>
> if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> else
> - cap->capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
> - cap->device_caps = cap->capabilities;
> - cap->version = VPFE_CAPTURE_VERSION_CODE;
> + cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
> + cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
> + V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
> strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
> strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
> strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
> diff --git a/drivers/staging/media/dt3155v4l/dt3155v4l.c b/drivers/staging/media/dt3155v4l/dt3155v4l.c
> index 4058022..293ffda 100644
> --- a/drivers/staging/media/dt3155v4l/dt3155v4l.c
> +++ b/drivers/staging/media/dt3155v4l/dt3155v4l.c
> @@ -512,10 +512,9 @@ dt3155_ioc_querycap(struct file *filp, void *p, struct v4l2_capability *cap)
> strcpy(cap->driver, DT3155_NAME);
> strcpy(cap->card, DT3155_NAME " frame grabber");
> sprintf(cap->bus_info, "PCI:%s", pci_name(pd->pdev));
> - cap->version =
> - KERNEL_VERSION(DT3155_VER_MAJ, DT3155_VER_MIN, DT3155_VER_EXT);
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
> DT3155_CAPTURE_METHOD;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> --
> 2.1.3
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 6/6] media/platform: fix querycap
2014-11-24 9:37 ` [PATCH 6/6] " Hans Verkuil
2014-11-25 10:53 ` Kamil Debski
2014-11-25 10:58 ` Prabhakar Lad
@ 2014-11-25 12:00 ` Jacek Anaszewski
2 siblings, 0 replies; 11+ messages in thread
From: Jacek Anaszewski @ 2014-11-25 12:00 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, Hans Verkuil, Lad, Prabhakar, Kamil Debski
Hi Hans,
Thanks for the patch.
On 11/24/2014 10:37 AM, Hans Verkuil wrote:
> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> Querycap shouldn't set the version field (the core does that for you),
> but it should set the device_caps field.
>
> In addition, remove the CAPTURE and OUTPUT caps for M2M devices. These
> were already slated for removal, so it's time to do so.
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> Cc: Kamil Debski <k.debski@samsung.com>
> Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
Acked-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Best Regards,
Jacek Anaszewski
> ---
> drivers/media/platform/davinci/vpbe_display.c | 1 -
> drivers/media/platform/davinci/vpfe_capture.c | 4 ++--
> drivers/media/platform/s5p-g2d/g2d.c | 10 ++--------
> drivers/media/platform/s5p-jpeg/jpeg-core.c | 9 ++-------
> drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 6 ++----
> drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 6 ++----
> 6 files changed, 10 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
> index 78b9ffe..21a5a56 100644
> --- a/drivers/media/platform/davinci/vpbe_display.c
> +++ b/drivers/media/platform/davinci/vpbe_display.c
> @@ -639,7 +639,6 @@ static int vpbe_display_querycap(struct file *file, void *priv,
> struct vpbe_layer *layer = video_drvdata(file);
> struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev;
>
> - cap->version = VPBE_DISPLAY_VERSION_CODE;
> cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
> cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> snprintf(cap->driver, sizeof(cap->driver), "%s",
> diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
> index 3d0e3ae..271c460 100644
> --- a/drivers/media/platform/davinci/vpfe_capture.c
> +++ b/drivers/media/platform/davinci/vpfe_capture.c
> @@ -930,8 +930,8 @@ static int vpfe_querycap(struct file *file, void *priv,
>
> v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querycap\n");
>
> - cap->version = VPFE_CAPTURE_VERSION_CODE;
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
> strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
> strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
> diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c
> index d79e214..51e4edc 100644
> --- a/drivers/media/platform/s5p-g2d/g2d.c
> +++ b/drivers/media/platform/s5p-g2d/g2d.c
> @@ -297,14 +297,8 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, G2D_NAME, sizeof(cap->driver) - 1);
> strncpy(cap->card, G2D_NAME, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> - /*
> - * This is only a mem-to-mem video device. The capture and output
> - * device capability flags are left only for backward compatibility
> - * and are scheduled for removal.
> - */
> - cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
> - V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c
> index 6fcc7f0..d6f75b1 100644
> --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
> +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
> @@ -1001,13 +1001,8 @@ static int s5p_jpeg_querycap(struct file *file, void *priv,
> sizeof(cap->card));
> }
> cap->bus_info[0] = 0;
> - /*
> - * This is only a mem-to-mem video device. The capture and output
> - * device capability flags are left only for backward compatibility
> - * and are scheduled for removal.
> - */
> - cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M |
> - V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT;
> + cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> index 74bcec8..c6c3452 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> @@ -269,15 +269,13 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
> strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> /*
> * This is only a mem-to-mem video device. The capture and output
> * device capability flags are left only for backward compatibility
> * and are scheduled for removal.
> */
> - cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING |
> - V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_VIDEO_OUTPUT_MPLANE;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index e7240cb..bd64f1d 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -947,15 +947,13 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
> strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(1, 0, 0);
> /*
> * This is only a mem-to-mem video device. The capture and output
> * device capability flags are left only for backward compatibility
> * and are scheduled for removal.
> */
> - cap->capabilities = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING |
> - V4L2_CAP_VIDEO_CAPTURE_MPLANE |
> - V4L2_CAP_VIDEO_OUTPUT_MPLANE;
> + cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
> return 0;
> }
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-11-25 12:00 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-24 9:37 [PATCH 0/6] add device_caps support to querycap Hans Verkuil
2014-11-24 9:37 ` [PATCH 1/6] cx18: add device_caps support Hans Verkuil
2014-11-24 9:37 ` [PATCH 2/6] staging/media: fix querycap Hans Verkuil
2014-11-25 10:59 ` Prabhakar Lad
2014-11-24 9:37 ` [PATCH 3/6] media/usb,pci: " Hans Verkuil
2014-11-24 9:37 ` [PATCH 4/6] media/radio: " Hans Verkuil
2014-11-24 9:37 ` [PATCH 5/6] media/platform: " Hans Verkuil
2014-11-24 9:37 ` [PATCH 6/6] " Hans Verkuil
2014-11-25 10:53 ` Kamil Debski
2014-11-25 10:58 ` Prabhakar Lad
2014-11-25 12:00 ` Jacek Anaszewski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).