Commit 0ec28c37 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'media/v3.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull second set of media updates from Mauro Carvalho Chehab:

 - Move drivers for really old legacy hardware to staging.  Those are
   using obsolete media kAPIs and are for hardware that nobody uses for
   years.  Simply not worth porting them to the new kAPIs.  Of course,
   if anyone pops up to fix, we can move them back from there

 - While not too late, do some API fixups at the new colorspace API,
   added for v3.19

 - Some improvements for rcar_vin driver

 - Some fixups at cx88 and vivid drivers

 - Some Documentation fixups

* tag 'media/v3.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] bq/c-qcam, w9966, pms: move to staging in preparation for removal
  [media] tlg2300: move to staging in preparation for removal
  [media] vino/saa7191: move to staging in preparation for removal
  [media] MAINTAINERS: vivi -> vivid
  [media] cx88: remove leftover start_video_dma() call
  [media] cx88: add missing alloc_ctx support
  [media] v4l2-ioctl: WARN_ON if querycap didn't fill device_caps
  [media] vivid: fix CROP_BOUNDS typo for video output
  [media] DocBook media: update version number and document changes
  [media] vivid.txt: document new controls
  [media] DocBook media: add missing ycbcr_enc and quantization fields
  [media] v4l2-mediabus.h: use two __u16 instead of two __u32
  [media] rcar_vin: Fix interrupt enable in progressive
  [media] rcar_vin: Enable VSYNC field toggle mode
  [media] rcar_vin: Add scaling support
  [media] rcar_vin: Add DT support for r8a7793 and r8a7794 SoCs
  [media] rcar_vin: Add YUYV capture format support
parents 4c929fee 427ae153
...@@ -2579,6 +2579,18 @@ fields changed from _s32 to _u32. ...@@ -2579,6 +2579,18 @@ fields changed from _s32 to _u32.
</orderedlist> </orderedlist>
</section> </section>
<section>
<title>V4L2 in Linux 3.19</title>
<orderedlist>
<listitem>
<para>Rewrote Colorspace chapter, added new &v4l2-ycbcr-encoding;
and &v4l2-quantization; fields to &v4l2-pix-format;, &v4l2-pix-format-mplane;
and &v4l2-mbus-framefmt;.
</para>
</listitem>
</orderedlist>
</section>
<section id="other"> <section id="other">
<title>Relation of V4L2 to other Linux multimedia APIs</title> <title>Relation of V4L2 to other Linux multimedia APIs</title>
......
...@@ -138,9 +138,25 @@ applicable values.</para></entry> ...@@ -138,9 +138,25 @@ applicable values.</para></entry>
<row> <row>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>flags</structfield></entry> <entry><structfield>flags</structfield></entry>
<entry>Flags set by the application or driver, see <xref <entry>Flags set by the application or driver, see <xref
linkend="format-flags" />.</entry> linkend="format-flags" />.</entry>
</row> </row>
<row>
<entry>&v4l2-ycbcr-encoding;</entry>
<entry><structfield>ycbcr_enc</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row>
<row>
<entry>&v4l2-quantization;</entry>
<entry><structfield>quantization</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row>
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
...@@ -231,10 +247,26 @@ codes can be used.</entry> ...@@ -231,10 +247,26 @@ codes can be used.</entry>
<entry><structfield>flags</structfield></entry> <entry><structfield>flags</structfield></entry>
<entry>Flags set by the application or driver, see <xref <entry>Flags set by the application or driver, see <xref
linkend="format-flags" />.</entry> linkend="format-flags" />.</entry>
</row>
<row>
<entry>&v4l2-ycbcr-encoding;</entry>
<entry><structfield>ycbcr_enc</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row>
<row>
<entry>&v4l2-quantization;</entry>
<entry><structfield>quantization</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row> </row>
<row> <row>
<entry>__u8</entry> <entry>__u8</entry>
<entry><structfield>reserved[10]</structfield></entry> <entry><structfield>reserved[8]</structfield></entry>
<entry>Reserved for future extensions. Should be zeroed by the <entry>Reserved for future extensions. Should be zeroed by the
application.</entry> application.</entry>
</row> </row>
......
...@@ -33,9 +33,25 @@ ...@@ -33,9 +33,25 @@
<entry>Image colorspace, from &v4l2-colorspace;. See <entry>Image colorspace, from &v4l2-colorspace;. See
<xref linkend="colorspaces" /> for details.</entry> <xref linkend="colorspaces" /> for details.</entry>
</row> </row>
<row>
<entry>&v4l2-ycbcr-encoding;</entry>
<entry><structfield>ycbcr_enc</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row>
<row>
<entry>&v4l2-quantization;</entry>
<entry><structfield>quantization</structfield></entry>
<entry>This information supplements the
<structfield>colorspace</structfield> and must be set by the driver for
capture streams and by the application for output streams,
see <xref linkend="colorspaces" />.</entry>
</row>
<row> <row>
<entry>__u32</entry> <entry>__u32</entry>
<entry><structfield>reserved</structfield>[7]</entry> <entry><structfield>reserved</structfield>[6]</entry>
<entry>Reserved for future extensions. Applications and drivers must <entry>Reserved for future extensions. Applications and drivers must
set the array to zero.</entry> set the array to zero.</entry>
</row> </row>
......
...@@ -151,6 +151,15 @@ structs, ioctls) must be noted in more detail in the history chapter ...@@ -151,6 +151,15 @@ structs, ioctls) must be noted in more detail in the history chapter
(compat.xml), along with the possible impact on existing drivers and (compat.xml), along with the possible impact on existing drivers and
applications. --> applications. -->
<revision>
<revnumber>3.19</revnumber>
<date>2014-12-05</date>
<authorinitials>hv</authorinitials>
<revremark>Rewrote Colorspace chapter, added new &v4l2-ycbcr-encoding; and &v4l2-quantization; fields
to &v4l2-pix-format;, &v4l2-pix-format-mplane; and &v4l2-mbus-framefmt;.
</revremark>
</revision>
<revision> <revision>
<revnumber>3.17</revnumber> <revnumber>3.17</revnumber>
<date>2014-08-04</date> <date>2014-08-04</date>
...@@ -539,7 +548,7 @@ and discussions on the V4L mailing list.</revremark> ...@@ -539,7 +548,7 @@ and discussions on the V4L mailing list.</revremark>
</partinfo> </partinfo>
<title>Video for Linux Two API Specification</title> <title>Video for Linux Two API Specification</title>
<subtitle>Revision 3.17</subtitle> <subtitle>Revision 3.19</subtitle>
<chapter id="common"> <chapter id="common">
&sub-common; &sub-common;
......
...@@ -6,6 +6,8 @@ family of devices. The current blocks are always slaves and suppot one input ...@@ -6,6 +6,8 @@ family of devices. The current blocks are always slaves and suppot one input
channel which can be either RGB, YUYV or BT656. channel which can be either RGB, YUYV or BT656.
- compatible: Must be one of the following - compatible: Must be one of the following
- "renesas,vin-r8a7794" for the R8A7794 device
- "renesas,vin-r8a7793" for the R8A7793 device
- "renesas,vin-r8a7791" for the R8A7791 device - "renesas,vin-r8a7791" for the R8A7791 device
- "renesas,vin-r8a7790" for the R8A7790 device - "renesas,vin-r8a7790" for the R8A7790 device
- "renesas,vin-r8a7779" for the R8A7779 device - "renesas,vin-r8a7779" for the R8A7779 device
......
...@@ -640,6 +640,21 @@ Colorspace: selects which colorspace should be used when generating the image. ...@@ -640,6 +640,21 @@ Colorspace: selects which colorspace should be used when generating the image.
Changing the colorspace will result in the V4L2_EVENT_SOURCE_CHANGE Changing the colorspace will result in the V4L2_EVENT_SOURCE_CHANGE
to be sent since it emulates a detected colorspace change. to be sent since it emulates a detected colorspace change.
Y'CbCr Encoding: selects which Y'CbCr encoding should be used when generating
a Y'CbCr image. This only applies if the CSC Colorbar test pattern is
selected, and if the format is set to a Y'CbCr format as opposed to an
RGB format.
Changing the Y'CbCr encoding will result in the V4L2_EVENT_SOURCE_CHANGE
to be sent since it emulates a detected colorspace change.
Quantization: selects which quantization should be used for the RGB or Y'CbCr
encoding when generating the test pattern. This only applies if the CSC
Colorbar test pattern is selected.
Changing the quantization will result in the V4L2_EVENT_SOURCE_CHANGE
to be sent since it emulates a detected colorspace change.
Limited RGB Range (16-235): selects if the RGB range of the HDMI source should Limited RGB Range (16-235): selects if the RGB range of the HDMI source should
be limited or full range. This combines with the Digital Video 'Rx RGB be limited or full range. This combines with the Digital Video 'Rx RGB
Quantization Range' control and can be used to test what happens if Quantization Range' control and can be used to test what happens if
......
...@@ -10237,13 +10237,13 @@ L: netdev@vger.kernel.org ...@@ -10237,13 +10237,13 @@ L: netdev@vger.kernel.org
S: Maintained S: Maintained
F: drivers/net/ethernet/via/via-velocity.* F: drivers/net/ethernet/via/via-velocity.*
VIVI VIRTUAL VIDEO DRIVER VIVID VIRTUAL VIDEO DRIVER
M: Hans Verkuil <hverkuil@xs4all.nl> M: Hans Verkuil <hverkuil@xs4all.nl>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
T: git git://linuxtv.org/media_tree.git T: git git://linuxtv.org/media_tree.git
W: http://linuxtv.org W: http://linuxtv.org
S: Maintained S: Maintained
F: drivers/media/platform/vivi* F: drivers/media/platform/vivid/*
VLAN (802.1Q) VLAN (802.1Q)
M: Patrick McHardy <kaber@trash.net> M: Patrick McHardy <kaber@trash.net>
......
...@@ -160,7 +160,6 @@ source "drivers/media/usb/Kconfig" ...@@ -160,7 +160,6 @@ source "drivers/media/usb/Kconfig"
source "drivers/media/pci/Kconfig" source "drivers/media/pci/Kconfig"
source "drivers/media/platform/Kconfig" source "drivers/media/platform/Kconfig"
source "drivers/media/mmc/Kconfig" source "drivers/media/mmc/Kconfig"
source "drivers/media/parport/Kconfig"
source "drivers/media/radio/Kconfig" source "drivers/media/radio/Kconfig"
comment "Supported FireWire (IEEE 1394) Adapters" comment "Supported FireWire (IEEE 1394) Adapters"
......
...@@ -28,6 +28,6 @@ obj-y += rc/ ...@@ -28,6 +28,6 @@ obj-y += rc/
# Finally, merge the drivers that require the core # Finally, merge the drivers that require the core
# #
obj-y += common/ platform/ pci/ usb/ mmc/ firewire/ parport/ obj-y += common/ platform/ pci/ usb/ mmc/ firewire/
obj-$(CONFIG_VIDEO_DEV) += radio/ obj-$(CONFIG_VIDEO_DEV) += radio/
...@@ -284,15 +284,6 @@ config VIDEO_SAA711X ...@@ -284,15 +284,6 @@ config VIDEO_SAA711X
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called saa7115. module will be called saa7115.
config VIDEO_SAA7191
tristate "Philips SAA7191 video decoder"
depends on VIDEO_V4L2 && I2C
---help---
Support for the Philips SAA7191 video decoder.
To compile this driver as a module, choose M here: the
module will be called saa7191.
config VIDEO_TVP514X config VIDEO_TVP514X
tristate "Texas Instruments TVP514x video decoder" tristate "Texas Instruments TVP514x video decoder"
depends on VIDEO_V4L2 && I2C depends on VIDEO_V4L2 && I2C
......
...@@ -18,7 +18,6 @@ obj-$(CONFIG_VIDEO_SAA711X) += saa7115.o ...@@ -18,7 +18,6 @@ obj-$(CONFIG_VIDEO_SAA711X) += saa7115.o
obj-$(CONFIG_VIDEO_SAA717X) += saa717x.o obj-$(CONFIG_VIDEO_SAA717X) += saa717x.o
obj-$(CONFIG_VIDEO_SAA7127) += saa7127.o obj-$(CONFIG_VIDEO_SAA7127) += saa7127.o
obj-$(CONFIG_VIDEO_SAA7185) += saa7185.o obj-$(CONFIG_VIDEO_SAA7185) += saa7185.o
obj-$(CONFIG_VIDEO_SAA7191) += saa7191.o
obj-$(CONFIG_VIDEO_SAA6752HS) += saa6752hs.o obj-$(CONFIG_VIDEO_SAA6752HS) += saa6752hs.o
obj-$(CONFIG_VIDEO_ADV7170) += adv7170.o obj-$(CONFIG_VIDEO_ADV7170) += adv7170.o
obj-$(CONFIG_VIDEO_ADV7175) += adv7175.o obj-$(CONFIG_VIDEO_ADV7175) += adv7175.o
......
...@@ -647,6 +647,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt, ...@@ -647,6 +647,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt,
dev->ts_packet_size = 188 * 4; dev->ts_packet_size = 188 * 4;
dev->ts_packet_count = 32; dev->ts_packet_count = 32;
sizes[0] = dev->ts_packet_size * dev->ts_packet_count; sizes[0] = dev->ts_packet_size * dev->ts_packet_count;
alloc_ctxs[0] = dev->alloc_ctx;
return 0; return 0;
} }
...@@ -662,14 +663,11 @@ static void buffer_finish(struct vb2_buffer *vb) ...@@ -662,14 +663,11 @@ static void buffer_finish(struct vb2_buffer *vb)
{ {
struct cx8802_dev *dev = vb->vb2_queue->drv_priv; struct cx8802_dev *dev = vb->vb2_queue->drv_priv;
struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb); struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb);
struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
struct cx88_riscmem *risc = &buf->risc; struct cx88_riscmem *risc = &buf->risc;
if (risc->cpu) if (risc->cpu)
pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma); pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma);
memset(risc, 0, sizeof(*risc)); memset(risc, 0, sizeof(*risc));
dma_unmap_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
} }
static void buffer_queue(struct vb2_buffer *vb) static void buffer_queue(struct vb2_buffer *vb)
......
...@@ -92,6 +92,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt, ...@@ -92,6 +92,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt,
dev->ts_packet_size = 188 * 4; dev->ts_packet_size = 188 * 4;
dev->ts_packet_count = dvb_buf_tscnt; dev->ts_packet_count = dvb_buf_tscnt;
sizes[0] = dev->ts_packet_size * dev->ts_packet_count; sizes[0] = dev->ts_packet_size * dev->ts_packet_count;
alloc_ctxs[0] = dev->alloc_ctx;
*num_buffers = dvb_buf_tscnt; *num_buffers = dvb_buf_tscnt;
return 0; return 0;
} }
...@@ -108,14 +109,11 @@ static void buffer_finish(struct vb2_buffer *vb) ...@@ -108,14 +109,11 @@ static void buffer_finish(struct vb2_buffer *vb)
{ {
struct cx8802_dev *dev = vb->vb2_queue->drv_priv; struct cx8802_dev *dev = vb->vb2_queue->drv_priv;
struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb); struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb);
struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
struct cx88_riscmem *risc = &buf->risc; struct cx88_riscmem *risc = &buf->risc;
if (risc->cpu) if (risc->cpu)
pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma); pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma);
memset(risc, 0, sizeof(*risc)); memset(risc, 0, sizeof(*risc));
dma_unmap_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
} }
static void buffer_queue(struct vb2_buffer *vb) static void buffer_queue(struct vb2_buffer *vb)
......
...@@ -235,10 +235,6 @@ int cx8802_buf_prepare(struct vb2_queue *q, struct cx8802_dev *dev, ...@@ -235,10 +235,6 @@ int cx8802_buf_prepare(struct vb2_queue *q, struct cx8802_dev *dev,
return -EINVAL; return -EINVAL;
vb2_set_plane_payload(&buf->vb, 0, size); vb2_set_plane_payload(&buf->vb, 0, size);
rc = dma_map_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
if (!rc)
return -EIO;
rc = cx88_risc_databuffer(dev->pci, risc, sgt->sgl, rc = cx88_risc_databuffer(dev->pci, risc, sgt->sgl,
dev->ts_packet_size, dev->ts_packet_count, 0); dev->ts_packet_size, dev->ts_packet_count, 0);
if (rc) { if (rc) {
...@@ -733,6 +729,11 @@ static int cx8802_probe(struct pci_dev *pci_dev, ...@@ -733,6 +729,11 @@ static int cx8802_probe(struct pci_dev *pci_dev,
if (NULL == dev) if (NULL == dev)
goto fail_core; goto fail_core;
dev->pci = pci_dev; dev->pci = pci_dev;
dev->alloc_ctx = vb2_dma_sg_init_ctx(&pci_dev->dev);
if (IS_ERR(dev->alloc_ctx)) {
err = PTR_ERR(dev->alloc_ctx);
goto fail_core;
}
dev->core = core; dev->core = core;
/* Maintain a reference so cx88-video can query the 8802 device. */ /* Maintain a reference so cx88-video can query the 8802 device. */
...@@ -752,6 +753,7 @@ static int cx8802_probe(struct pci_dev *pci_dev, ...@@ -752,6 +753,7 @@ static int cx8802_probe(struct pci_dev *pci_dev,
return 0; return 0;
fail_free: fail_free:
vb2_dma_sg_cleanup_ctx(dev->alloc_ctx);
kfree(dev); kfree(dev);
fail_core: fail_core:
core->dvbdev = NULL; core->dvbdev = NULL;
...@@ -798,6 +800,7 @@ static void cx8802_remove(struct pci_dev *pci_dev) ...@@ -798,6 +800,7 @@ static void cx8802_remove(struct pci_dev *pci_dev)
/* common */ /* common */
cx8802_fini_common(dev); cx8802_fini_common(dev);
cx88_core_put(dev->core,dev->pci); cx88_core_put(dev->core,dev->pci);
vb2_dma_sg_cleanup_ctx(dev->alloc_ctx);
kfree(dev); kfree(dev);
} }
......
...@@ -120,6 +120,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt, ...@@ -120,6 +120,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt,
sizes[0] = VBI_LINE_NTSC_COUNT * VBI_LINE_LENGTH * 2; sizes[0] = VBI_LINE_NTSC_COUNT * VBI_LINE_LENGTH * 2;
else else
sizes[0] = VBI_LINE_PAL_COUNT * VBI_LINE_LENGTH * 2; sizes[0] = VBI_LINE_PAL_COUNT * VBI_LINE_LENGTH * 2;
alloc_ctxs[0] = dev->alloc_ctx;
return 0; return 0;
} }
...@@ -131,7 +132,6 @@ static int buffer_prepare(struct vb2_buffer *vb) ...@@ -131,7 +132,6 @@ static int buffer_prepare(struct vb2_buffer *vb)
struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0); struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
unsigned int lines; unsigned int lines;
unsigned int size; unsigned int size;
int rc;
if (dev->core->tvnorm & V4L2_STD_525_60) if (dev->core->tvnorm & V4L2_STD_525_60)
lines = VBI_LINE_NTSC_COUNT; lines = VBI_LINE_NTSC_COUNT;
...@@ -142,10 +142,6 @@ static int buffer_prepare(struct vb2_buffer *vb) ...@@ -142,10 +142,6 @@ static int buffer_prepare(struct vb2_buffer *vb)
return -EINVAL; return -EINVAL;
vb2_set_plane_payload(vb, 0, size); vb2_set_plane_payload(vb, 0, size);
rc = dma_map_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
if (!rc)
return -EIO;
cx88_risc_buffer(dev->pci, &buf->risc, sgt->sgl, cx88_risc_buffer(dev->pci, &buf->risc, sgt->sgl,
0, VBI_LINE_LENGTH * lines, 0, VBI_LINE_LENGTH * lines,
VBI_LINE_LENGTH, 0, VBI_LINE_LENGTH, 0,
...@@ -157,14 +153,11 @@ static void buffer_finish(struct vb2_buffer *vb) ...@@ -157,14 +153,11 @@ static void buffer_finish(struct vb2_buffer *vb)
{ {
struct cx8800_dev *dev = vb->vb2_queue->drv_priv; struct cx8800_dev *dev = vb->vb2_queue->drv_priv;
struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb); struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb);
struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
struct cx88_riscmem *risc = &buf->risc; struct cx88_riscmem *risc = &buf->risc;
if (risc->cpu) if (risc->cpu)
pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma); pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma);
memset(risc, 0, sizeof(*risc)); memset(risc, 0, sizeof(*risc));
dma_unmap_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
} }
static void buffer_queue(struct vb2_buffer *vb) static void buffer_queue(struct vb2_buffer *vb)
......
...@@ -440,6 +440,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt, ...@@ -440,6 +440,7 @@ static int queue_setup(struct vb2_queue *q, const struct v4l2_format *fmt,
*num_planes = 1; *num_planes = 1;
sizes[0] = (dev->fmt->depth * core->width * core->height) >> 3; sizes[0] = (dev->fmt->depth * core->width * core->height) >> 3;
alloc_ctxs[0] = dev->alloc_ctx;
return 0; return 0;
} }
...@@ -449,7 +450,6 @@ static int buffer_prepare(struct vb2_buffer *vb) ...@@ -449,7 +450,6 @@ static int buffer_prepare(struct vb2_buffer *vb)
struct cx88_core *core = dev->core; struct cx88_core *core = dev->core;
struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb); struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb);
struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0); struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
int rc;
buf->bpl = core->width * dev->fmt->depth >> 3; buf->bpl = core->width * dev->fmt->depth >> 3;
...@@ -457,10 +457,6 @@ static int buffer_prepare(struct vb2_buffer *vb) ...@@ -457,10 +457,6 @@ static int buffer_prepare(struct vb2_buffer *vb)
return -EINVAL; return -EINVAL;
vb2_set_plane_payload(vb, 0, core->height * buf->bpl); vb2_set_plane_payload(vb, 0, core->height * buf->bpl);
rc = dma_map_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
if (!rc)
return -EIO;
switch (core->field) { switch (core->field) {
case V4L2_FIELD_TOP: case V4L2_FIELD_TOP:
cx88_risc_buffer(dev->pci, &buf->risc, cx88_risc_buffer(dev->pci, &buf->risc,
...@@ -505,14 +501,11 @@ static void buffer_finish(struct vb2_buffer *vb) ...@@ -505,14 +501,11 @@ static void buffer_finish(struct vb2_buffer *vb)
{ {
struct cx8800_dev *dev = vb->vb2_queue->drv_priv; struct cx8800_dev *dev = vb->vb2_queue->drv_priv;
struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb); struct cx88_buffer *buf = container_of(vb, struct cx88_buffer, vb);
struct sg_table *sgt = vb2_dma_sg_plane_desc(vb, 0);
struct cx88_riscmem *risc = &buf->risc; struct cx88_riscmem *risc = &buf->risc;
if (risc->cpu) if (risc->cpu)
pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma); pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma);
memset(risc, 0, sizeof(*risc)); memset(risc, 0, sizeof(*risc));
dma_unmap_sg(&dev->pci->dev, sgt->sgl, sgt->nents, DMA_FROM_DEVICE);
} }
static void buffer_queue(struct vb2_buffer *vb) static void buffer_queue(struct vb2_buffer *vb)
...@@ -530,7 +523,6 @@ static void buffer_queue(struct vb2_buffer *vb) ...@@ -530,7 +523,6 @@ static void buffer_queue(struct vb2_buffer *vb)
if (list_empty(&q->active)) { if (list_empty(&q->active)) {
list_add_tail(&buf->list, &q->active); list_add_tail(&buf->list, &q->active);
start_video_dma(dev, q, buf);
buf->count = q->count++; buf->count = q->count++;
dprintk(2,"[%p/%d] buffer_queue - first active\n", dprintk(2,"[%p/%d] buffer_queue - first active\n",
buf, buf->vb.v4l2_buf.index); buf, buf->vb.v4l2_buf.index);
...@@ -1345,6 +1337,12 @@ static int cx8800_initdev(struct pci_dev *pci_dev, ...@@ -1345,6 +1337,12 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
err = -EIO; err = -EIO;
goto fail_core; goto fail_core;
} }
dev->alloc_ctx = vb2_dma_sg_init_ctx(&pci_dev->dev);
if (IS_ERR(dev->alloc_ctx)) {
err = PTR_ERR(dev->alloc_ctx);
goto fail_core;
}
/* initialize driver struct */ /* initialize driver struct */
spin_lock_init(&dev->slock); spin_lock_init(&dev->slock);
...@@ -1549,6 +1547,7 @@ static int cx8800_initdev(struct pci_dev *pci_dev, ...@@ -1549,6 +1547,7 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
free_irq(pci_dev->irq, dev); free_irq(pci_dev->irq, dev);
mutex_unlock(&core->lock); mutex_unlock(&core->lock);
fail_core: fail_core:
vb2_dma_sg_cleanup_ctx(dev->alloc_ctx);
core->v4ldev = NULL; core->v4ldev = NULL;
cx88_core_put(core,dev->pci); cx88_core_put(core,dev->pci);
fail_free: fail_free:
...@@ -1582,6 +1581,7 @@ static void cx8800_finidev(struct pci_dev *pci_dev) ...@@ -1582,6 +1581,7 @@ static void cx8800_finidev(struct pci_dev *pci_dev)
/* free memory */ /* free memory */
cx88_core_put(core,dev->pci); cx88_core_put(core,dev->pci);
vb2_dma_sg_cleanup_ctx(dev->alloc_ctx);
kfree(dev); kfree(dev);
} }
......
...@@ -485,6 +485,7 @@ struct cx8800_dev { ...@@ -485,6 +485,7 @@ struct cx8800_dev {
/* pci i/o */ /* pci i/o */
struct pci_dev *pci; struct pci_dev *pci;
unsigned char pci_rev,pci_lat; unsigned char pci_rev,pci_lat;
void *alloc_ctx;
const struct cx8800_fmt *fmt; const struct cx8800_fmt *fmt;
...@@ -548,6 +549,7 @@ struct cx8802_dev { ...@@ -548,6 +549,7 @@ struct cx8802_dev {
/* pci i/o */ /* pci i/o */
struct pci_dev *pci; struct pci_dev *pci;
unsigned char pci_rev,pci_lat; unsigned char pci_rev,pci_lat;
void *alloc_ctx;
/* dma queues */ /* dma queues */
struct cx88_dmaqueue mpegq; struct cx88_dmaqueue mpegq;
......
...@@ -65,14 +65,6 @@ config VIDEO_TIMBERDALE ...@@ -65,14 +65,6 @@ config VIDEO_TIMBERDALE
---help--- ---help---
Add support for the Video In peripherial of the timberdale FPGA. Add support for the Video In peripherial of the timberdale FPGA.
config VIDEO_VINO
tristate "SGI Vino Video For Linux"
depends on I2C && SGI_IP22 && VIDEO_V4L2
select VIDEO_SAA7191 if MEDIA_SUBDRV_AUTOSELECT
help
Say Y here to build in support for the Vino video input system found
on SGI Indy machines.
config VIDEO_M32R_AR config VIDEO_M32R_AR
tristate "AR devices" tristate "AR devices"
depends on VIDEO_V4L2 depends on VIDEO_V4L2
......
...@@ -2,9 +2,6 @@ ...@@ -2,9 +2,6 @@
# Makefile for the video capture/playback device drivers. # Makefile for the video capture/playback device drivers.
# #
obj-$(CONFIG_VIDEO_VINO) += indycam.o
obj-$(CONFIG_VIDEO_VINO) += vino.o
obj-$(CONFIG_VIDEO_TIMBERDALE) += timblogiw.o obj-$(CONFIG_VIDEO_TIMBERDALE) += timblogiw.o
obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o
......
...@@ -625,7 +625,7 @@ int vivid_vid_out_g_selection(struct file *file, void *priv, ...@@ -625,7 +625,7 @@ int vivid_vid_out_g_selection(struct file *file, void *priv,
sel->r = dev->fmt_out_rect; sel->r = dev->fmt_out_rect;
break; break;
case V4L2_SEL_TGT_CROP_BOUNDS: case V4L2_SEL_TGT_CROP_BOUNDS:
if (!dev->has_compose_out) if (!dev->has_crop_out)
return -EINVAL; return -EINVAL;
sel->r = vivid_max_rect; sel->r = vivid_max_rect;
break; break;
......
...@@ -24,7 +24,6 @@ if MEDIA_ANALOG_TV_SUPPORT ...@@ -24,7 +24,6 @@ if MEDIA_ANALOG_TV_SUPPORT
comment "Analog TV USB devices" comment "Analog TV USB devices"
source "drivers/media/usb/pvrusb2/Kconfig" source "drivers/media/usb/pvrusb2/Kconfig"
source "drivers/media/usb/hdpvr/Kconfig" source "drivers/media/usb/hdpvr/Kconfig"
source "drivers/media/usb/tlg2300/Kconfig"
source "drivers/media/usb/usbvision/Kconfig" source "drivers/media/usb/usbvision/Kconfig"
source "drivers/media/usb/stk1160/Kconfig" source "drivers/media/usb/stk1160/Kconfig"
source "drivers/media/usb/go7007/Kconfig" source "drivers/media/usb/go7007/Kconfig"
......
...@@ -16,7 +16,6 @@ obj-$(CONFIG_VIDEO_CPIA2) += cpia2/ ...@@ -16,7 +16,6 @@ obj-$(CONFIG_VIDEO_CPIA2) += cpia2/
obj-$(CONFIG_VIDEO_AU0828) += au0828/ obj-$(CONFIG_VIDEO_AU0828) += au0828/
obj-$(CONFIG_VIDEO_HDPVR) += hdpvr/ obj-$(CONFIG_VIDEO_HDPVR) += hdpvr/
obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2/ obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2/
obj-$(CONFIG_VIDEO_TLG2300) += tlg2300/
obj-$(CONFIG_VIDEO_USBVISION) += usbvision/ obj-$(CONFIG_VIDEO_USBVISION) += usbvision/
obj-$(CONFIG_VIDEO_STK1160) += stk1160/ obj-$(CONFIG_VIDEO_STK1160) += stk1160/
obj-$(CONFIG_VIDEO_CX231XX) += cx231xx/ obj-$(CONFIG_VIDEO_CX231XX) += cx231xx/
......
...@@ -1017,6 +1017,12 @@ static int v4l_querycap(const struct v4l2_ioctl_ops *ops, ...@@ -1017,6 +1017,12 @@ static int v4l_querycap(const struct v4l2_ioctl_ops *ops,
ret = ops->vidioc_querycap(file, fh, cap); ret = ops->vidioc_querycap(file, fh, cap);
cap->capabilities |= V4L2_CAP_EXT_PIX_FORMAT; cap->capabilities |= V4L2_CAP_EXT_PIX_FORMAT;
/*
* Drivers MUST fill in device_caps, so check for this and
* warn if it was forgotten.
*/
WARN_ON(!(cap->capabilities & V4L2_CAP_DEVICE_CAPS) ||
!cap->device_caps);
cap->device_caps |= V4L2_CAP_EXT_PIX_FORMAT; cap->device_caps |= V4L2_CAP_EXT_PIX_FORMAT;
return ret; return ret;
......
...@@ -27,12 +27,18 @@ source "drivers/staging/media/davinci_vpfe/Kconfig" ...@@ -27,12 +27,18 @@ source "drivers/staging/media/davinci_vpfe/Kconfig"
source "drivers/staging/media/dt3155v4l/Kconfig" source "drivers/staging/media/dt3155v4l/Kconfig"
source "drivers/staging/media/tlg2300/Kconfig"
source "drivers/staging/media/mn88472/Kconfig" source "drivers/staging/media/mn88472/Kconfig"
source "drivers/staging/media/mn88473/Kconfig" source "drivers/staging/media/mn88473/Kconfig"
source "drivers/staging/media/omap4iss/Kconfig" source "drivers/staging/media/omap4iss/Kconfig"
source "drivers/staging/media/parport/Kconfig"
source "drivers/staging/media/vino/Kconfig"
# Keep LIRC at the end, as it has sub-menus # Keep LIRC at the end, as it has sub-menus
source "drivers/staging/media/lirc/Kconfig" source "drivers/staging/media/lirc/Kconfig"
......
...@@ -6,4 +6,7 @@ obj-$(CONFIG_VIDEO_DM365_VPFE) += davinci_vpfe/ ...@@ -6,4 +6,7 @@ obj-$(CONFIG_VIDEO_DM365_VPFE) += davinci_vpfe/
obj-$(CONFIG_VIDEO_OMAP4) += omap4iss/ obj-$(CONFIG_VIDEO_OMAP4) += omap4iss/
obj-$(CONFIG_DVB_MN88472) += mn88472/ obj-$(CONFIG_DVB_MN88472) += mn88472/
obj-$(CONFIG_DVB_MN88473) += mn88473/ obj-$(CONFIG_DVB_MN88473) += mn88473/
obj-y += parport/
obj-$(CONFIG_VIDEO_TLG2300) += tlg2300/
obj-y += vino/
...@@ -7,18 +7,22 @@ menuconfig MEDIA_PARPORT_SUPPORT ...@@ -7,18 +7,22 @@ menuconfig MEDIA_PARPORT_SUPPORT
if MEDIA_PARPORT_SUPPORT if MEDIA_PARPORT_SUPPORT
config VIDEO_BWQCAM config VIDEO_BWQCAM
tristate "Quickcam BW Video For Linux" tristate "Quickcam BW Video For Linux (Deprecated)"
depends on PARPORT && VIDEO_V4L2 depends on PARPORT && VIDEO_V4L2
select VIDEOBUF2_VMALLOC select VIDEOBUF2_VMALLOC
help help
Say Y have if you the black and white version of the QuickCam Say Y have if you the black and white version of the QuickCam
camera. See the next option for the color version. camera. See the next option for the color version.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called bw-qcam. module will be called bw-qcam.
config VIDEO_CQCAM config VIDEO_CQCAM
tristate "QuickCam Colour Video For Linux" tristate "QuickCam Colour Video For Linux (Deprecated)"
depends on PARPORT && VIDEO_V4L2 depends on PARPORT && VIDEO_V4L2
help help
This is the video4linux driver for the colour version of the This is the video4linux driver for the colour version of the
...@@ -28,18 +32,26 @@ config VIDEO_CQCAM ...@@ -28,18 +32,26 @@ config VIDEO_CQCAM
as a module (c-qcam). as a module (c-qcam).
Read <file:Documentation/video4linux/CQcam.txt> for more information. Read <file:Documentation/video4linux/CQcam.txt> for more information.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
config VIDEO_PMS config VIDEO_PMS
tristate "Mediavision Pro Movie Studio Video For Linux" tristate "Mediavision Pro Movie Studio Video For Linux (Deprecated)"
depends on ISA && VIDEO_V4L2 depends on ISA && VIDEO_V4L2
help help
Say Y if you have the ISA Mediavision Pro Movie Studio Say Y if you have the ISA Mediavision Pro Movie Studio
capture card. capture card.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called pms. module will be called pms.
config VIDEO_W9966 config VIDEO_W9966
tristate "W9966CF Webcam (FlyCam Supra and others) Video For Linux" tristate "W9966CF Webcam (FlyCam Supra and others) Video For Linux (Deprecated)"
depends on PARPORT_1284 && PARPORT && VIDEO_V4L2 depends on PARPORT_1284 && PARPORT && VIDEO_V4L2
help help
Video4linux driver for Winbond's w9966 based Webcams. Video4linux driver for Winbond's w9966 based Webcams.
...@@ -50,4 +62,8 @@ config VIDEO_W9966 ...@@ -50,4 +62,8 @@ config VIDEO_W9966
Check out <file:Documentation/video4linux/w9966.txt> for more Check out <file:Documentation/video4linux/w9966.txt> for more
information. information.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
endif endif
config VIDEO_TLG2300 config VIDEO_TLG2300
tristate "Telegent TLG2300 USB video capture support" tristate "Telegent TLG2300 USB video capture support (Deprecated)"
depends on VIDEO_DEV && I2C && SND && DVB_CORE depends on VIDEO_DEV && I2C && SND && DVB_CORE
select VIDEO_TUNER select VIDEO_TUNER
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
...@@ -12,5 +12,9 @@ config VIDEO_TLG2300 ...@@ -12,5 +12,9 @@ config VIDEO_TLG2300
This is a video4linux driver for Telegent tlg2300 based TV cards. This is a video4linux driver for Telegent tlg2300 based TV cards.
The driver supports V4L2, DVB-T and radio. The driver supports V4L2, DVB-T and radio.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called poseidon module will be called poseidon
config VIDEO_VINO
tristate "SGI Vino Video For Linux (Deprecated)"
depends on I2C && SGI_IP22 && VIDEO_V4L2
select VIDEO_SAA7191 if MEDIA_SUBDRV_AUTOSELECT
help
Say Y here to build in support for the Vino video input system found
on SGI Indy machines.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
config VIDEO_SAA7191
tristate "Philips SAA7191 video decoder (Deprecated)"
depends on VIDEO_V4L2 && I2C
---help---
Support for the Philips SAA7191 video decoder.
This driver is deprecated and will be removed soon. If you have
hardware for this and you want to work on this driver, then contact
the linux-media mailinglist.
To compile this driver as a module, choose M here: the
module will be called saa7191.
obj-$(CONFIG_VIDEO_VINO) += indycam.o
obj-$(CONFIG_VIDEO_VINO) += vino.o
obj-$(CONFIG_VIDEO_SAA7191) += saa7191.o
...@@ -31,9 +31,9 @@ struct v4l2_mbus_framefmt { ...@@ -31,9 +31,9 @@ struct v4l2_mbus_framefmt {
__u32 code; __u32 code;
__u32 field; __u32 field;
__u32 colorspace; __u32 colorspace;
__u32 ycbcr_enc; __u16 ycbcr_enc;
__u32 quantization; __u16 quantization;
__u32 reserved[5]; __u32 reserved[6];
}; };
#ifndef __KERNEL__ #ifndef __KERNEL__
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment